更新日時で差をつけろ

もはや更新日時でしか差を付けられない

フォローとミュート

Twitterフォローしているユーザを全員ミュートするスクリプトを書いた。このスクリプトTwitterアカウントに適用するとフォローしているユーザが全員ミュートされ、タイムラインには自分のツイートだけが表示されるようになる。ツイートを読みたいユーザだけをミュート解除する「ホワイトリスト」方式でタイムラインを再構築できる。

Twitter APIの実行制限により、実行にはちょっと時間がかかるので注意。自分の環境では200ユーザをミュートすると制限に引っかかって15分待たせると制限が外れた。この15分という値は公式のドキュメントから引っ張ってきたもので、もしかするともう少し短くても大丈夫だったかもしれない。

わりと「ミュートするぐらいならフォローを外せばいいのでは?」「ブロックしちゃえよ」というツイートをよく見るので、それらに対する反論とまではいかなくても、これを作った理由について書いてみる。

まず、フォローに関する考え方がユーザによって大きく違うということが挙げられる。たとえば自分の場合、個人的な知り合いはフォローするのが原則で、その次にツイートがおもしろいかそうでないかというのがフォロー・アンフォローの重要な判断基準として来る。同じ学校でも学級・学科が違えば知り合いでもないし、そんなに興味の方向が一致するわけでもないので最近はフォローしないし返していない。ただ相互フォローという状態は長くもつことが多いため、入学の時期などは新入生に情報を流すためにもフォローを返していた。

しかし他のユーザは他の判断基準を持っている。以前学校の人のアカウントのフォローを解除したとき、後にその人が「どうしてsei0oにフォロー外されたんだろう」というツイートが、例の「○○さんがいいねしました」によって流れてきた。フォローを外した理由としては単純にツイートに興味が持てなかったからなのだが、その人にしてみればそれだけでフォローを外されるのは少なくともツイートする程度には意外だったということだろう。自分がオタクである以上興味の範囲も狭く、どうしようもなさそうとはいえ、あえてそういう驚きを与える必要もないので相手に知られないミュートを活用するようになった。

別の言い方をすると、フォロー機能を「発言に興味があります」と「〇〇さんですね、知っています・仲良くしましょう」という2つの意味にまたがって利用しているところが自分にはあって、他にもそういう使い方をしている人がそれなりにいそうだと感じている。もともと意図されていたのは「あ、この人おもしろそうなことやってるな」という前者の使い方で、対して実際には、会ったらTwitter交換して相互にフォロー、というような流れが勉強会などでしばしば起こる。これには後者のニュアンスがある(発言を見て判断しているわけではないから)。「個人的な知り合いはフォローするのが原則」と先に述べたのもこっちの意味合いが強い。特にフォロワーが多い場合など、純粋に前者の意味だけにフォロー機能を用いているユーザもいる。

次に、同じ内容を繰り返し見たくないと思っていたから。自分がフォローしている界隈だと、高専ネタとか「科学技術予算が足りないぞ〜」系、診断メーカー系も見飽きている。数日〜数週間で過ぎ去る炎上なども同様で、最近ならISUCONやホワイトボードの落書き、ちょっと古い話題なら京アニCoinhive事件・さくらんぼ計算が良い例。普段興味深いツイートをしている人がこういうのをリツイートしていると、なかなかやりづらい。そこでミュートをよく使っていた。ところがユーザのミュートは時限を決められず、手動で設定・解除しなければならないので億劫かつ間に合わない。そしてそのようなツイートを一度見てしまったという不快感は取り消すことができない。

口が悪い人やいつもよく喋る同級生についても、普段はミュートして気になったらアカウント名で検索して見に行くという方法を採っている。なんとなくこれを広げて「全員ミュートしたらどうなるかな?」と思ってスクリプトを書いた。結果はこれから使ってみないとわからない。

ちなみにリストは作るのも面倒かつアクセスするのも面倒なので使っていない。Twitterアカウントを他サービスの認証に利用していて、連絡もTwitterで取ることが多いため、Twitterをやめるというのも考えていない。

言葉にしてみるととなかなか微妙な話題で、うまく理由としての論理がまとまっていない気がする。まあいろんな使い方があるツールだと思うので、自由に使ってください。

散歩した

インターンが始まってから2回目の週末。早起きしたと思ったらまた寝て、また起きて、結局5種類の夢を見てしまった。それ以上あったかもしれない。夢の中でアクティブだったのとは引き換えに、朝食を取ってからは何もする気にならず…。唯一やらなきゃと思っていた作業へのモチベーションもフリーズしたパソコンの画面に吸い込まれてしまった。もしくはパソコンの調子が悪かったからますますやる気が起きなかったのか。いや、椅子のすぐ右にある単語帳に手を付けなかったということは多分パソコンは原因ではない。

部屋の中をうろついたりペットボトルのラベルを剥がしたりしていたら(ここは分別に厳しい明石市ではないというのに)、昼食の時間になってしまった。近くで外食する・築地など観光地に行って食べる・買ってきて部屋で食べるなど無数の選択肢が浮かんで混乱してきたのでとりあえず外に出てから考えることにした。築地は移転したはずなのにまだ市場はあるのかとかそんなことを考えながら着替えるとさらに時間がかかる。

スーパーとは逆方向の首都高の入り口の横の道を選んで歩き始めた。何か考えがあってそっちを歩いたような気はするが、何を考えていたかは全く思い出せない。直感に従って歩いていると広い4車線の道路が見えた。数日前に別のスーパーに行った時の道だと思い出した。格子状の道路はセーフティネットとなって冒険心を与えてくれる。なんとなくツアー客のふりをして団体に混ざって銀座特有の高級な店を横切り、飽きたので適当な枝道に入った。高架下を歩いて、立派な感じがする小学校を見つけて、ビアガーデンを横切って、もはや昼食のことなど何も考えずに進んでいた。

反対側にそれほど高くないビルが集まっているのを眺めながら広い公園を見つけた。外国人が多いのとお城のような石垣でうすうす気づいていたが、皇居(の外苑)だった。せっかくなので入ってみることにした。まず行ったのは二重橋という場所だそう。何が二重なのかわからなかった。他に皇居の庭も一般公開されていると知って一周してきた。手荷物検査をする警官の背中には「皇宮警察」とある。門と門の間を自転車で往復する警官が目立った。

売店で炭酸飲料を買った。考えてみると「売店」というのは変な言葉で、店はすべてモノを売るのは当然だろうと思った。かといて「店」とだけ書かれていれば「何を売るんだよ」こう記事に書いていたに違いない。

二の丸と本丸があって、名前からすれば本丸のほうが大きそうなのでそちらから先に入った。本丸は半分以上工事中で閉鎖されていて、実際に歩いた距離は二の丸の方が長かったと思う。外から見えていた城のようなものは富士見櫓というらしい。現在は富士山の代わりにビルが見える。ビル見櫓。まあまあゴロが良い。こういった建物も立て札とともに点在している。「皇居のお庭」とはいうものの、観光客向けに一つ一つの木に名前を示していたりエピソードを書いた立て札を置いている以上、皇族はここを見に来ることはまずなさそう。

庭といっても山道のように高木が生い茂っている。けれども自分は木を見る目がないし、先に書いたようなどうでもいいことを考えながら歩いているだけなので、自然を感じているつもりが気づけばコンクリートの地面を眺めていたということがしょっちゅうあった。そもそもなぜ来たのかわからなくなった。「なんとなく」で正解ではあるのだけれど、それでも価値や目的を見つけようとするのは、(自分が焦っているのか)物事に対して優先順位を設定する上で必要だから、というような理由付けがほとんど意識しないところで行われているからではないかと推測する。

相変わらず何かを考えながら歩いていると、すれ違った男の人に英語で話しかけられた。写真を取ってあげたり道を教えたりした。iPhoneの言語から判別するにスペイン語圏の人ではあるものの、割と聞き取りやすい英語だった。帰る時にも一度すれ違って挨拶した。偶然ではあったものの、この出来事を今日皇居に来た目的、もっと言えば外に出た目的に据えることでなんとなく納得して、安心感を得た。

最終的に大手町まで歩いて地下鉄で帰った。すでに夕方だった。一応築地の場外市場にも足を運んでみたものの、半分ほどはすでにシャッターが下りていた。海鮮がリーズナブルとかそんなことはないようだった。場内の市場が豊洲に移ってからかはわからない。昼食は適当に買って食べた。一日三回の食事にはちゃんとした目的があると知っているので気が楽ではある。

セキュリティ・キャンプ全国大会 2019 に参加した #seccamp

IPAが主催する セキュリティ・キャンプ全国大会 2019 の 集中開発コース リバースエンジニアリングゼミ (X-IV) に参加した。以下は参加記。ちょっと量が少ないけれど、一晩寝かせても特に何も思いつかなかったので公開してしまう。

来年度以降参加する人へ

  • ゼミのSlackと全体連絡のkintoneは両方見ておこう
  • 名刺はいつでも持ち歩こう
    • 財布や名札に十枚程度入れておくと便利
  • いろいろもらえるので、スーツケースには少し余裕を持たせておこう
    • OS自作入門換算で1.5冊

https://i.gyazo.com/db4e3b51d39f7b38556ed3c219736387.jpg ↑いろいろ


当日の朝、大阪から新幹線にスーツケースと頭痛を持ち込んで移動。中国から来たという人に熱海の場所を教えたりしていた。少し早く着いたので適当に時間を(あえて各停に乗るなどして)潰しつつ入場。荷物を預けてすぐにレストランで昼食を取った。いきなり名刺交換が始まっていた。それからは全体向けの講演を3つ聴いた。往路の疲れとオカムラの椅子の心地よさで途中少し眠くなってしまったが、アクエリアスに救われた。

LT大会

複数のLTが同時並行で行われたのでどれかを選ぶ必要があったが、優柔不断なので会場の中央からどのスクリーンも目に入るような位置で眺めていた。GPUをCPUにしていたり、reCAPTCHAにツッコミを入れたりしていて聞いていて楽しかった。

企業紹介

企業の方の仕事内容についてのプレゼンを見た。Incident Responseや社内環境の整備だけではなく、マルウェア解析といったリサーチ職を金融系の企業でも設けているのが意外だった。事前アンケートは答えましょう。

ところで就活はまだ先。コンピュータやセキュリティそのものは一応好きだ/興味があると言えるのに対して、それで食っていくとか向いているとかそういう話になるとまだ自信が持てないでいて、むしろこういうイベントに参加させてもらうたびにその自信が削れていく気がしてアレ。セキュリティ業界で働くのではなく、セキュリティの有用性を知ってもらうというのがキャンプの目的らしいので、受講生として歓迎されないわけではないものの。

https://i.gyazo.com/322291b82fab863db732835cbcea484d.jpg ↑いろいろ (2) あるところは企業紹介でTシャツもらったらしい

グループワーク

昨年までのやり方は知らないのだけれど、今年からやり方が変わったらしい。「キャンプが終わってから何がしたいか」という共通点でチームを作り、講師やチューターに話を伺いつつ「どうやるか」「まず何をするか」の部分を固めてまとめる、という内容だった。自分たちのチームは「技術商業誌を出そう」というテーマになった。(同人誌ではなく)商業誌、をあえてゴールにしているのも講師のアドバイスによるもの。聞くといろいろ情報を引き出せてやっぱりすげえなあ〜となる。いろいろな人がいて楽しい。

イベントが終わってから何かを続けていくのには仲間が必要というのはよく言われることで、しかしながら学校やオンラインではその仲間を見つけるのが一番難しいというのがあるある。今回のグループワークでは知識のアウトプットとして本を書くというテーマで他の受講生と集まることができたので、モチベーションを維持してなんとか形になるものを作りたいなあと思っている。

講義

事前課題では主にハードウェア面(SPIとかUARTとか)を扱う方法を学んでいたが、結局ずっとソフトウェア周りであれこれリバエンしていた。rootを取ったので root取っ太郎 になった(ゼロデイ見つけたとかそんな偉大なことをしたわけではない)。内容を詳しく書けないところからリバエンゼミらしさを感じ取ってほしい。見た目がわかりやすいので人が集まってきてワイワイしながらいろいろ教えてもらえたのでお得だった。他のゼミが隣のテーブルで講義していて、何をしているか見られるようになっているのがよかった。まだまだ気になる部分はあるので、寮に戻ってからいろいろやってみる。

講義が終わって風呂入ったらすぐに寝てしまった。もうちょっといろいろな人といろいろなことを話せればと思った。そういう点は相部屋のメリットかなあ(SecHack365と対比して)。積極性に問題があったかもしれないし、純粋に疲れてるのもあった。

最終発表

4分ぐらいで自分が何をしたか発表した。一番ネタっぽいプレゼンだったと思う。その証拠として本来ならばスライドをアップロード…したいとはいえそれもなかなかマズい感じなので1枚目だけ貼る。1枚目でも十分マズいかな。言い訳しておくと「root取っ太郎」は自分で名乗ってたわけではなくて、講師の黒林檎大先生が推してきたものです。

https://i.gyazo.com/9b79f24d59234070ad9e432a6171e6ab.png


インタビューを受けてほしいと依頼されたので部屋に向かうと、キャンプ前と後で変わったこと・感じたことを即席で考えてほしいと言われ、(ちょっと相談したけど)カメラの前で手短に喋った。その合間に(本業がマルウェア解析の)カメラマンの方と互いの経験とか思いについて話していたのだけれど、時間切れでその後続きを話せなかったのが少し残念。そういう途切れた状態のほうが印象に残るかもしれないが…。インタビューの動画は後日Youtubeにアップロードされるはず。修了証をゼミの代表で受け取った後にも感想を喋ることになった。前日のインタビューが考える準備になっていたとはいえ、やはりいきなりだったので何を喋ったか自分でもよく覚えていない。ツッコまないで。

他のいろいろな場所で会った人と再会できた。Life is Tech!とか明石高専祭とかミニキャンプとか。不思議なもんですね。あと案外お互い顔を覚えている。

寝る間もないとか、一発パンチを食らわされるような衝撃とか、そういったものは(残念ながら?)なかったが、GMの上野さんの閉会式での言葉を借りると「ボディーブローのようにじわじわと」自分に影響を与え続けるものにこのセキュリティ・キャンプはなる予感がしている。5日間ありがとうございました。

セキュリティ・キャンプ全国大会2019の選考に通った

セキュリティ・キャンプ全国大会2019の書類選考に通って集中開発コースのリバースエンジニアリングゼミに参加できることになったので例に倣って応募課題とそれに対する自分の解答を置いておきます。応募は2,3回目で2年前に応募して不合格になっていました。昨年はSecHack365などで夏の予定が埋まっていたので応募しませんでした。

応募用紙

問1: 今までにリバースエンジニアリング(分解や解析など)した経験を好きなだけ語って下さい。対象はソフトウェアやハードウェアに限定しません。

ICカードリーダ

秋葉原のジャンク街でSONYのRC-S310を300円で買いました。RC-S310は2001年発売なので私の同期です。公式のホームページに「NFCポートソフトウェア」なるものが転がっていて、現在公開されているRC-S310対応のプロダクトはこれだけでした。

当然Windowsでしか動作しないのでVirtualboxで動かしつつWiresharkでUSBの通信を見てみると、カードをかざしたり外したりするたびにずらずらパケットが流れるのが見えましたが、結局どれがどういう意味を持つパケットなのかわからずに終わってしまいました。FeliCa(NFC)規格とPaSoRi(カードリーダのブランド)のパケットがごっちゃになっているのかなあと予想しました。

libpasoriやlibpafeといったライブラリが開発されていましたが、いずれも動作しませんでした。中古のWindows機を手に入れたので、うまいこと解析して部室の鍵開けを使い道のないICOCAなどでできないだろうかと考えています(電通大MMAのKagisysのイメージです)。

MacのACアダプタ

5年弱使っていた純正のMagSafe1 ACアダプターが断線してしまったのでAmazonから安い非純正品を買いました。

使い始めてから1年ほど経ったある冬の夜、部屋のベッドに座って壁にもたれつつ脚を伸ばし、そこに掛け布団を敷いた上にさらにMacBook Proを載せて使っていました。 そうするとすぐ寝落ちしてしまいました。1時間ほど経って目が覚めました。

Macを充電していたケーブルを取り払おうとアダプタに触ると…熱い!いままでとはひと味違う熱さと焦げ臭さを放っています。布団に長時間挟まれて熱がこもっていたようです。

Mac用ACアダプタは白い角丸ボディが特徴で、その非純正品もデザインを踏襲していました。しかし目の前にあるアダプタは変形して工業製品というより粘土工作のような形になっています。 つなぎ目の部分があらわになっていて、爪を入れて力を加えると中の電気部品が見えます。

その後数ヶ月ほどで完全に充電できなくなってしまったので、新しいアダプタ(やはり非純正品)を注文した後に変形したアダプタを分解してみました。 ケースのつなぎ目に(物理的な)鍵を差し込み「てこ」のようにしてこじ開けると、白い長方形の基盤にコンデンサやトランスが載っていました。2辺は金属板に挟まれています。よく見るとケース内部に焦げたような跡もあります。 基盤とケースもボンドのようなもので雑に固定されていたので、また鍵を隙間に差し込み外しました。 基盤の裏側には厚膜チップ抵抗(調べて名前を知った)が十数個ハンダづけされています。「新HD60P02A」と型番がプリントされています。

見るだけでも楽しいですが、せっかくなので部品を取り外すことにしました。 はんだごでではんだを熱して、液状になったのを向こうに弾き飛ばすという怪しい方法を使います。学校の実験で先生が「あんまり推奨される方法ではないけど...」と言いながらやっていたのを真似しました。はんだ吸い取り線は持っていません。

外側からケーブルとの接続部分、金属板、よくわからない素子、というように外していきました。小さい部品は大変でしたが一個一個外していくと基盤表面の印刷が見えてきました。金属板があった場所には「HS2」と書いてあったのでたぶん放熱用のヒートシンクではないかと思います。 大きなコンデンサやトランスも収穫できました。使いどころはありませんがそのまま取っておいて、いまの充電器が変形したら分解して比較するつもりです。

MacBook Pro (2012 Mid)

突然電源がつかなくなってしまいました。Macが動かなくなった際の常套手段であるPRAMやSMCのリセットを試しても変化がありません。 いろいろと調べるとバッテリーを付けて取り外すこと(放電)で直るかもしれないとわかったのでドライバーを借りてきて分解し、無事起動することができました。このMacは古いのでまだネジが公の場に姿を表しています。知り合いの薄いMacBookを見るとネジ穴もポートもないので、なんだかなあと思ってしまいます。この件以来Macの分解をよくするようになりました。

情報工学研究部の部長として、コンピュータの基礎的な部分を講義することがあります。そんなときもどこからともなくドライバーを取り出してMacの裏蓋を外し「これがSSDです」と見せると下級生もドン引きして印象に残るようです。 また、これは分解ではありませんが作業中にFキーとNキーのカバーが飛んでいきました。カバーの下のゴムが丸見えになって、メンブレンキーボードの仕組みがよくわかるようになりました。

CTFのrev, network, android rom

最近はあまりプレイできていないのですがCTFが好きです。その中でもpwn/Binary exploitation・reversingといったジャンルを好んで学んでいます。低レイヤに興味を持ったのも、NICT主催のSecHack365というハッカソンに参加したのも元をたどればCTFがきっかけで、そこではコンパイラ(LLVM)やエミュレータ(QEMU)の改造をしていました。成果発表会で使った[ポスター] (https://sechack365.nict.go.jp/achievement/2018/?2018-34) が公開されています。

Android, iOSアプリを解析する問題もあったので、mitmproxy, otool, Fridaなども使ったことがあります。ARMアセンブラは勉強中で、まだx86とPICのそれしか読めません。

ブログ

普通の電卓

昨年の夏頃に中華人民共和国・某省某所のとある工場長の方からTwitterのDMで連絡をいただき「電卓を作りたいんやけど手伝ってくれん?」と連絡があり、いろいろと自分なりに調べていました。 とりあえず既存のものにどういう部品が含まれているか見てみようということで安い電卓を仲間で集まって分解してみました。 外から見える部品には7セグのディスプレイ・光電池パネル・ボタン用に穴が開いたフレーム・多数のボタン。ボタンはシリコンで出来たシートの突起と噛み合っていて、ボタンを押すと突起の裏側にある黒い膜がPCB基盤の丸い部分に触れる仕組みになっています。

PCB基盤をひっくり返すと「CT060」という型番らしきものが刻印された緑色の面があります。7セグディスプレイがフラットケーブルで接続され、ボタン電池が基盤のホルダーのようなものに入っています。電卓を買ってきて光電池を充電しなくてもすぐ使えるのは基盤に直でボタン電池を取り付けているからだとわかりました。明るい緑色で少し光沢を持った線が多数伸びています。その線は基盤中央から少し上にある黒い円に入っていきます。この中に計算を処理するチップが入っているのではないかと推測しました。黒い円はエポキシ樹脂という熱硬化性をもつ素材です(おそらく)。 円形の黒いエポキシ樹脂を溶かして覆われたチップを取り出す方法も見つけました。「熱硬化性の素材は一度固めると特殊な溶剤なしには溶かすことができない」というオンライン辞書の記述は一度無視することにしました。

https://www.youtube.com/watch?v=OiPe6f4Oh8E では熱湯に基盤ごと入れて熱する方法が紹介されていました。一般的なエポキシ樹脂のガラス転移温度(Tg; この温度を越えるとやわらかくなるらしい)は75℃のものから250℃を超えるものまであるので、水を沸騰させて100℃にすれば電卓の樹脂も溶けるかもしれません。実際に試したところ、何の変化も得られませんでした。

次は https://www.wikihow.com/Remove-Epoxy で見つけたはんだごてで熱する方法を試してみました。普段使っているはんだごては30W, 480℃なので熱湯よりは期待できます。実際に熱したはんだごてを当てて数十秒待つと黒い樹脂の表面がぬるぬると溶けてこて先が滑る感覚がありました。これならいけそうだと思い1時間ほど当てて見ると、1mm四方取り除くことに成功し下の基盤が見えました。円は半径8mmほどで、面積はπ88=201mm四方です。201時間はんだごてを当て続けるのは定年退職後の暇つぶしにとっておきたいので、別の方法をあたることにしました。

とにかく高熱に当てればよいことがわかったので、部屋にあったオーブントースターで基盤を熱してみました(これもどこかのサイトに書いてあったことですが、リンクをなくしました)。しばらく放置しておくと「ポン!」と破裂音。基盤を取り出すと小さくて気づかなかったLEDが赤く光っています。ボタン電池を取り外さずに熱して、回路がショートしてしまったようです。電卓の筐体の外から見えない場所になぜこのLEDが存在するのかはわかりません。基盤は熱でプリントが膨らみところどころ気泡ができていました。PCB基盤の層構造を体感しました。

見つけたアプローチの中でまだ試せていないのがヒートガンで熱する方法です。これ以外に使用する場面がなさそうで購入をためらっています。

関数電卓

エポック樹脂が剥がせなかったので、他の電卓を探して分解することにしました。古い関数電卓なんかは樹脂で覆われていない場合もあるそうなので、メルカリの500円クーポンを使って490円の中古関数電卓を買いました。複素数の計算すらできないCASIOのfx-290です。届いてからさっそく分解してみると…そこには黒い光沢のエポック樹脂がありました。蓋をそっと閉じて、いまは机の引き出しの奥に眠っています。

BLEな電球

どこかの勉強会のスライドを見て触発され、IoTなハッキングがしたくなったのでAmazonで安いBluetooth対応の電球を買いました(「Matchdor」というブランドで今は見つからず)。 スマホと機器間のBluetooth通信を取ってくる方法としてAndroid端末でHCIスヌープログという機能がよく紹介されています。しかしiPhoneしか持っていなかったのでApple公式のデバッグ用プロファイルを導入するなどしてなんとかログを取ってきて読んでみましたが、これもGATTなどプロトコル周辺の関係がよくわからないまま放置されています。

家の古いルーター

802.11nにすら対応していない家のBUFFALO製無線LANルータ(型番はWHR-AMG54)につながりづらくなってきたので新しいルータを卒業式の帰りに買ってきました。

古いルータは特に使い道がなかったのでバラしてみました。どことなく年季が入っていてホコリだらけです。中に緑色のPCB基盤が入っていて、BroadcomとEtronTechという会社のチップが見えます。

基盤の印刷を見ていると端の方に「WHR4-AG54A REV:XC」という表示を見つけました。製品の型番と似ても似つかない名前なので検索してみると中国語のフォーラムが出てきました。JTAGのポートが装備されているようです。データを読み出す方法がわからなかったり調べてみるとbaudrateを特定するのに別途キットが必要だったりすると知って以降は触ることができていません(Bus Pirate・Shikraといったハック用のツールや、汎用的に使えるオシロスコープ・ロジアナもどれがよいのかわからなくて定期的にAliexpressを覗いては足踏みしています)。

問2: あなたが今一番リバースエンジニアリング(分解して仕組みが知りたい)したいものを紹介して下さい。

この前頼まれて実家のテレビでAmazon prime videoが利用できるようにFire TV Stickを購入・接続しました。 Fire TV Stickは無線LAN経由でインターネットに接続して動画をダウンロードし、それをHDMI経由でテレビの画面に流すものです。あの小さい筐体の中に何が入っているのか気になります。

パソコンでprime videoを視聴しようとするとContent Decryption Module (CDM)なるものをインストールされました。DRMのために使用されているようです。prime videoで利用されているのはWideVineという種類で、他にもPlayReadyというのが人気のCDMです。よってパソコンの代わりとして映像を受け取るFire TV Stickにもそういった復号モジュールが入っているのではないかと予想して、楽しそうだなと思いました。

これを操作するリモコンにはAmazon Alexaに対応した音声認識機能がついています。後述するように昨年Amazon Alexaスマートスピーカー(Echo)を使った開発をして知識が少しあるので、それとの違いにも気付けるかもしれません。スマートスピーカの分解も楽しそうです(https://vanderpot.com/Clinton_Cook_Paper.pdf )。https://www.amazon.co.jp/Fire-TV-Stick/dp/B01ETRGGYI#tech (技術仕様) によると、プロセッサはARMアーキテクチャのものを採用しているようです。詳しい型番は書かれていません。

問3: 以下の技術用語について解説してください。またどのようなところで使われているかも述べてください。

「UART」「JTAG」「SPI(Serial Peripheral Interface)」「I2C(I-squared-C)」

UART

Universal Asynchronous Receiver Transmitterという原語が示す通り、マイコン等と非同期通信をするための規格。データ転送速度はボーレートで示され、9600baudがよく用いられる。 一つのパケットに入るペイロードの長さは5〜9bitであり、その前後には送信の開始・終了を知らせるための特定のビットを付け加えるためデータ量は大きくなる。また誤り修正のためのパリティビットが付けられる場合もある。

端子は信号送出側のTXと受信側のRXのみであり、互いのTX端子を互いのRX端子に接続するので送信と受信は同時に行える。JTAGやSPIのように3つ以上で相互に通信するにはTX, RX端子をまた別途用意する必要がある。 たいていのマイコンではUARTやその同期通信バージョンであるUSARTが利用でき、センサ等と通信できるようになっている。また、外部からのデバッグや検査のために機器と通信できるように基盤にUARTポートを設ける場合も多く見られる。そういった機器の例としては家電製品やIPカメラが挙げられる。

JTAG

Joint Test Action Groupの略で、基盤の検査・デバッグに用いられる端子・検査方法(バウンダリスキャンテスト)の規格。半導体技術の進歩で基盤上の素子の密度が上がり、プローブを手で差して測定器(オシロスコープとか)を見て検査するやり方が難しくなったために作られた仕組み。端子にはTDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS(Test Mode Select)、オプションのTRST(Test Reset)がある。

もともとはバウンダリスキャンテストに用いられていた。バウンダリスキャンテストは基板上でICとICをつなぐ導線がショートしたりちぎれたりしていないか確かめるためのテストで、検査用のビット列を入力して、それに対応する出力を見ることで検査する。JTAGが普及する以前は導線を一部太くしてテスト用のランドを設けプローブで検査できるようにしていた(イン・サーキット検査)。代わりにJTAGではIC内部(入力・出力ピンと処理部分の間)にテスト用のセルを設けることで、ICの外の基盤の構成をよりシンプルにできるようになっている。また、単なるランドではなく回路としてのセル(プローブとランドを合わせたようなもの)を挿入することで、導線を横切るようにセル同士をつなげられる。さらにそれぞれのICでつなげたセルたちを(TAPコントローラのTDI/TDO端子を介して)デイジーチェーン接続することで機器全体の検査が少ない端子で行えるようになった。

ICごとに付けられるTAP(Test Access Point)コントローラはTMS端子からの入力によって「ステート」を切り替え、TDIから命令をIR(Instruction Register)に流し込むことで動作を切り替える。

DRにはBYPASSレジスタ, IDCODEレジスタ, バウンダリスキャンレジスタなどいくつか種類があり、IRの値に応じてどのDRを操作するか決定する。 IRに格納される命令は規格で定められているものもあれば、メーカが独自に拡張するものもある。

  • BYPASS命令はTDIから入力されたビットをBYPASSレジスタに入れてそのままTDOから出力する命令。1ビットのBYPASSレジスタに一度貯めることで1クロック出力を遅らせる効果があり、機器全体ではTAPコントローラの数だけクロックが遅れる。その遅れを観測することで機器内のTAPコントローラの数が合っているか確かめることができる。
  • SAMPLE命令とPRELOAD命令はバウンダリスキャンレジスタを通じてデバイスの入出力を取得し、同時にバウンダリスキャンレジスタにテストパターンを書き込むことができる。厳密にはこの2つは異なる命令だが、同じSAMPLE/PRELOAD命令として動作させることが推奨されている。
  • EXTEST命令はバウンダリスキャンレジスタの値をそれぞれのピンから出力する命令。また、その出力を入力として受け取る側でCapture, Shift, Update-DRステートに移行することで入力を取りだせ、テストパターンを比較することでバウンダリスキャンの結果を知ることができる。
  • 他にもINTEST, IDCODE, RUNBIST, CLAMP命令などがある。

ステートについて、

  • Shift-IRステートではTAPのIR(Instruction Register)にTDIから命令(メッセージ)を流し込むことができる。同様にShift-DRステートではDR(Data Register)にデータを流し込むことができる。
  • Capture-DRステートでは回路の情報を取得してDRに格納する。逆にUpdate-DRステートではDRの値を回路の別の場所に格納する。具体的にどのような情報を取得するかは命令に依存する。
  • Update-IRステートではIRに格納された命令を実行する。Capture-IRステートでは「ステータス」と呼ばれる値をIRに格納する。

JTAGでは先述したようにメーカ・モデルによってさまざまな拡張がなされている。拡張の一部を知るためにはメーカが提供するBSDLファイルを用いることができる。他にもARM製プロセッサに搭載されているCoresightというデバッグシステムや、JTAGの4本の導線を2本に減らして派生したSWDという規格があるようだが、JTAGとの関連はよくわからなかった。JTAG-ICE(In-Circuit Emulator)と呼ばれるデバッグ用の装置もあるが、単純にJTAGポートに接続してデバッグを行うこととの違いは不明である。

製品検査のために策定されたということもありUART同様さまざまな機器の基盤にデバッグ用のポートが設けられている。逆に、機器内で完結する通信(センサ-マイコン間など)については他のプロトコルがより用いられていると思われる。個人的には最も身近な例として先述した実家のルーターが挙げられる。この基盤のBSDLファイルは入手できなかった。

SPI

Serial Peripheral Interfaceの略で、機器に入っているICが他のICと通信するためのプロトコル。数Mbps程度で比較的高速に通信できる。 端子にはSCK(Serial Clock), MISO(Master In Slave Out), MOSI(Master Out Slave In), SS(Slave Select)がある。SCK(Serial Clock)があることからわかる通り、SPIはクロックで同期を取って通信する点が非同期通信のUARTと異なる。また、SPIでは接続されたICは1つのMasterと複数のSlaveに分けられる(Masterは多くの場合マイコン)。MISOはSlaveからMaster、MOSIはMasterからSlaveへの通信に利用する。SSは複数のSlaveのうちどれと通信するか選択するために用いるもので、通信したいSlaveとのSS出力だけを0にセットする(通信しない状態では常に1)。これらのためにUARTやI2Cよりも必要な接続線が多くなっている。

JTAGではTDIとTDOにデイジーチェーン接続を用いていたが、SPIのMasterとSlaveの接続はスター型をとることもできる。それぞれのSlaveと別々に通信したい場合はSSを分けMOSI, MISOをスター型に接続する。逆に複数のSlaveをまとめて一つと捉えたい場合はSSを一本にしてMOSI, MISOをそれぞれ前後に隣接するSlaveにデイジーチェーン接続することができる(MISO, MOSIのMaster側は必ずしもMasterそのものである必要はなく、Masterからの信号が間接的に渡されてくればよい)。この場合は1クロックずつずれてデータがSlave間で転送される。しかしながら、デイジーチェーン接続に対応していないデバイスも存在する。

またMaster側のSPIコントローラのレジスタを通じてCPOL(Clock Polarity)とCPHA(Clock Phase)を指定することで、アイドル時のクロック信号を1と0のどちらに固定するかやクロックの立ち上がり・立ち下がり時の処理を指定することができる。

Intelが拡張したeSPI(Enhanced SPI)という仕様も存在する。Alertという端子を追加して、SlaveからMasterにイベントを通知できるようになっている。

どちらかといえばセンサとマイコンマイコンとアクチュエータ間といった機器内の通信用に主に用いられている。

I2C

Inter-Integrated Circuitの略。SPI同様機器内の通信に用いられる。UARTと違って同期通信ではあるが、先頭と末尾に一定のパターンを加えてからメッセージ単位で送信する。 端子にはデータを送受信するためののSDAとクロックを供給するためのSCLがある。

UARTでは1対1の通信しか行えなかったが、I2Cではメッセージに宛先アドレスを含めることで多対多のネットワークを構築できるようになっている。SPIと同じくMaster・Slaveという区別を採用していて、通信はMasterから始める。Masterも複数接続できる。メッセージのRead/Writeビットを切り替えることで、MasterからデータをSlaveに投げるのか、それともSlaveからデータを送るよう要求するのか区別している。

メッセージには任意個のデータフレームを含めることができる。それぞれのデータフレームの長さは8ビットで固定である。データフレームを送信する前後で受け取り側は送信側にACK/NACKビットを返答する。ACK(Acknowledge)はTCPのそれと同じ意味で、データを正しく受け取った場合はACKとして1を、そうでない場合はNACKとして0を返す。

こちらは機器の基盤にポートが設けられている例は見つけられなかったが、温度センサなどでSPIを介して通信できるようになっているものは多数見受けられた。

参考文献

問4: 安全なファームウェアアップデートとは何ですか? もし、それができると攻撃者はどのような攻撃ができますか?事例などもご存知であれば合わせて紹介してください。

実はこの設問の意味が理解できていなくて(「それができると」のあたり)、全くトンチンカンなことを書いているかもしれませんが容赦ください。 安全なファームウェアアップデートを行うためには、ネットワークを経由してダウンロードしたファームウェアがベンダ正規のものであり、改ざんされていないか確認するため、アップデート時に署名を確認させるのが有効です。

バイス側の鍵は(使用するのであれば)専用のセキュリティチップ、TPM(Trusted Platform Module)やARMでいえばTrustZoneのような仕組みを活用して隔離した場所で管理すべきです。そのような鍵にはたとえばベンダの公開鍵そのものの正当性を確認するためのルート認証局の公開鍵や、共通鍵暗号を利用する場合はその共通鍵が考えられます。また鍵を別に用意してファームウェアそのものを暗号化するベンダもあります(Philips, Samsungのテレビなどがそうだったように思いますが、リンクを失くしました)。

これらの対策ができる場合でも、攻撃者はアップデートに関係しない部分からファームウェアを改ざんするなどして攻撃を加えることができます。基盤のデバッグポートを利用したりチップを取り外したりして、もしくはファームウェアそのものの脆弱性を突いて(スマートテレビのOSコマンドインジェクションがわかりやすい例)ファームウェアをダンプし、解析・改造して書き込み直すといった方法があります。

問5: 何か他にアピールしたいことがあれば、自由に書いてください。誤ったことを書いていても減点はしません。書いておきたいことはなんでも書いてください。

問1で述べたとおり、何かを分解するのはそれだけでも楽しいのですが、毎回その仕組みがよくわからないまま終わるので何か一つでもしっかり解析してみて流れ・コツを掴みたい、またseccampでしか学べない最新の技術に触れたいと思い応募しました。

昨年度の全国高専プログラミングコンテスト(高専プロコン)の課題部門に出場しました。私の学校のチームは「スマートコンシェルジュ」という民泊事業者と外国人宿泊者をスマートスピーカ(Amazon Alexa)を使いつなげるシステムを構築して出展しました。例えば家電の操作を宿泊者の母国語でできるようにしたり、近所の有名なスポットを教えてあげたりということができます。当日はブースを構えてデモを行う必要があったので、何らかの家電を見に来た人に声でライトの電源を操作してもらうことにしました。そのためにはコンセントからの電源入力を遮断・導通できるいわゆる「スマートプラグ」が必要になります。Amazonで普通に買っても良かったのですが、せっかくなのでいろいろと調べて自作しました。電源ケーブルの片側を切断したところにRaspberry Pi制御のリレーを差し込むという単純なものです。そうやって切ったり付けたりして何かを作るのはずっと好きですし、学校でもなぜか電気のことを学んでいるので(コンデンサ・共振・三相交流etc…)何かハードウェアにも活かせないだろうかと考えています。

以上です。よろしくお願いします。

前回応募時との比較

2年前の5月に応募して不合格だったときといろいろ比べてみました。スキル面でいえば、もともとWebとiOSメインだったのが、競プロやってAtCoder水色になったり(もう一年半近く参加してないけれど…)CTFの手で動かしていろいろ学んだり、それが転じてSecHack365に応募してコンパイラを改造したり、というレイヤが下がっていった感じです。結果的に知識を広く浅く身につけることになったと思います。選択問題のあるコースでは今のほうが選べる手札が多いはずです。何かに絞ってがんばろうというのは何度かやってみましたが飽きて続かなかったので諦めました。

SecHack365でお世話になったトレーナーさんにもキャンプ講師を務めている人が多いので、なんとなく書きやすかったような気はします。もっとも応募したゼミの講師はトレーナーではないので、本当になんとなくです。不思議ですね。

そして前回と違ってコース・ゼミ選択で迷う時間がほとんどなかったと思います。特に選択コースは幅が広いのでどれどれに行きたいな、ああこれとそれは被ってるなと考えてしまいがちです。Twitterでフォローしている人がゼミの講師をやるというのを知って空リプしたら是非応募してねとリプライが来たのでそこに決めてしまいました。もともとリバエンゼミは2年前のときも第1か第2候補でした。そのままストレートに用紙作成に移れたのはよかったかなあ。というか書いたり調べたりしている内にそれについてさらに興味が出てきました。

文体は変えました。前回ははじめから終わりまで真面目に書いていたように思います。今回もまあ誰が読むかわからないからきちんとした文章を書こうと思っていました。とはいえ設問の内容が「問題を解いてください」系ではなく「好きなだけ語ってください」系で、何かもう一つ書けることないかと繰り返し繰り返し探しているうちに内容そのものがよくわからないモノになってしまったのでブログのノリで書くことにしました(読んだ方はわかると思います)。

これも文章に関わる話ですが、熱意を伝えるとかそういうことは考えないようにしました。もしくは熱意≒文章量という近似式で捉えるようにしました。結局熱意ってなんだ、となって筆が進まなくなったからです。また、いろいろなタイプの人に会ったときに熱意を表現するのが上手な人とそうでない人といて、自分は後者じゃないかなあと思ったからです。もちろんその感覚が間違っている可能性も多いにあります。とりあえず書けることをわかりやすいように書きました。

アウトプットをしようというのはよくある話です。不合格になってから実際自分もCTFで解いた問題のwrite-upなどをブログやScrapboxにまとめるようにしていました。またこういった場で使うことを予想して部活での資料等もなるべくまとめて公開するようにしていました。普段から作業メモをScrapboxの一箇所にまとめるようにしていたのもかなり役立ちました(記事にしなくても箇条書きで残している思考過程やログ)。文章ベースのアウトプットは何かを「作るプログラミング」をしていない人にはなおさら必要な気がします(競プロとか)。また、自分で書いたプロダクトは未完成のもの小さいものが多くて説明を書くときにあまり自信を持てなかったのに対し、ブログの記事等は特に見返さないのでしょうもないものでもURL貼ってハイ終わりで済ませてしまえたのも用紙を仕上げるという観点からいえばよかったかもしれません。完成形のモノ作るのって大変ですよね…。設計や開発技法もそのうちどこかで勉強してみたいです。

どこかでseccampの選考は運ゲーだという話を見ました。自分より優秀なのに落ちてしまった人もいるかもしれません。選考に通ったら優秀、というのもなんだかプレッシャーを感じるのでなんだかなあと思います(いやプレッシャーも少しは感じたほうがいいのかもしれない)。このへんの議論もまた「優秀ってなんだ?」という話に流れるなどして上手い人に持ってかれそうなのでやめておきますが、確かに定員がもっと増えてくれればな〜とは思います。GCCアラブ諸国と一緒にやって石油王に賛助会員になってもらうとか…やっぱり難しいんですかね?


過去にはミニキャンプ(北陸)とジュニアキャンプ(高知)に参加していました。だいぶ前だと思います。ロボットカー動かしたりXSSしてみたりして楽しかったです。夕食で刺身のツマを食べようとしていたら店の人に持っていかれて残念がってたとき、隣に座っていたのはかの有名なバグハンターの方でした。夜の講話のときに「全国応募する人〜!」という質問があってほとんどの人が手を挙げているなか、「もうちょっと実力貯めてから行きたいな」と思って手を挙げなかったのを思い出します。数年で貯めた実力を発揮できるよう、そしてさらに伸ばせるよう手を動かしていきます〜〜〜

5/26

レポートを印刷しにコンビニに行った。

夏が近づいてきて、夜でも生暖かい空気に包まれている。十分に湿気ているので口で呼吸しても乾燥することがない。 深夜に外に出たのは久し振りだった。街灯にも常夜灯にも照らされない点在した暗い部分を危険に思ってしまったのか、それともレポートがキレイに印刷できるか気になっていたのか、どこか気が抜けない感じで歩いていた。

自然と背筋に力が入っていた。それか気持ちが関係なければ、長時間の作業で肩を痛めてなるべくまっすぐ前方を向こうとしていたからかもしれない。 学校の門を出ると緊張は少し和らいだ。門衛さんは見てみぬふりをしていた。車はそれほど走っておらず、紙コップに耳を当てたときのような柔らかいノイズが聞こえる。ただやはり街中で人とすれ違うと少し力んで足がわずかに速くなるのがわかる。目を合わせたくないようで、首が前を向いて目を回すことでしか周りを見られなくなる。

コンビニでの印刷はうまくいった。印刷中は数分時間があった。何を考えていたかは忘れた。見出しのフォントを細くしたことで印象が変わった。 やはり印刷が一番の気がかりだったのか、外に出ると落ち着いて夜の短い散歩を楽しめるようになっていた。印刷してしまったことで「あとは提出するしかない」という諦めをつけられたのかもしれない。暗闇にも通行人にも特に感じるものはなくなった。学内に入って人の目がなくなると(外でもほとんどなかったのだが)、背中の力も抜けてしまって眠くなってしまった。手に直接持ったレポートが滑り落ちそうになる。ちょっと横になってみようかなと思っている間に部屋に着いてしまった。

椅子に座ってレポートをよく見ると文字のギザギザが目立つ。また解像度の指定を忘れてしまった。

筑波GLP(香港)に参加した

筑波GLPに参加して一週間香港に滞在したのでその感想を覚えているうちに書いておく。…つもりだったが帰国してから1ヶ月以上経ってGWに整えた。

出発

羽田空港から出発。ずんだシェイクエクセラがおいしかった。SecHack365の山形回を思い出す。バスの運転手さんも外国人相手に大変そうだ。"have your seat"の発音がやたらと上手だった。数時間を飛行機で過ごす。テキサス時差はすでに解消されていたようで寝なかった。JALのいいところはJAL名人会だと思うんですよ。

香港の空港に着陸。とりあえず何か買おうと思ってセブンイレブンで豆乳と思われしものを買った。まずかった。500mlより一回り小さいペットボトル飲料は$11.5なので日本よりちょっと高いぐらい。

↑Tencentの広告がある。

他の人と合流してバスでホテルへ移動。高速道路には英文・中文両方の文字サイズに合わせた電光板が設置されている。窓の外からは空港とビルしか見えない。農地も工場も一軒家もない。香港のビルは1F(イギリス式なので本当はG/F)が店でそれより上がアパートになっているケースが多い。

↑汚いビルと綺麗なビルの差が大きい。日本のオフィス街のビルのように空の色を反射してビルが青色に光っていない。ほとんどがパステルカラーの壁面から小さな窓が顔を出しているのみ。海が近いからだろうか、ガラス張りのビルでも汚れて黄色くなっている。建築中のビルも多く見受けられたが、足場が鉄骨ではなく竹で組まれている。

バスを降りると目に湿気が入る感覚がする。すぐ慣れた。

生活

HKU(Hong Kong University : 香港大学)の学生以外には英語は通じないと思ったほうがいい。お店の人に英語でトイレの場所を聞いたら理解できなかったのか不愛想に返された。

昼食はだいたい大学に散在する食堂でとった。Chongqing(重慶) Rice Noodleはチープな味がした。自分が無理やり辛ラーメンを作ろうとしたらこうなりそう。U-Deliカレーうどんは普通に日本食だった。割安だった。ケバブは辛くて結構大きい。一般的なSUBWAY等のチェーン店も出ていた。コーヒーがデフォルトで甘い。かといってそのデフォルトに変更を加える語学力もない。

夕食はあまり摂っていなかった。たぶん疲れすぎていたんだと思う。最終日は有志で近くの店に夕食に行った。中華を食べた。「中国」料理とは書いてなかったけれど、「中華風味」と看板に書いてあったので中華であることは間違いない。

↑出前サービスのdeliverooのシールが貼ってあった。他の店にも貼ってあって普及しているのがよくわかる。

新しめのトイレにも和式便所があった。でもこれは「和」式なのだろうか。表記を見てくるのを忘れてしまった。そういえば空港で買ったお茶には「港」式と書いてあったなあ。

この香港ツアーとして設定された日以外にも学校が終わってから夕食のついでにスーパーマーケットに行ったり周辺を散歩したりした。スーパーでは日本語がよく見える(Wellcomeと後述するYATAに行った)。というかスーパーのほとんどが日本語が書かれた商品を取り扱っている。中には日本で知られてないものも日本で有名なフリをして進出している。スーパーの時給が600円ぐらい。物価は日本と変わらない(HKUの教授曰くいろんな経済階級がいるので物価にもバリエーション?があるらしい)。

Cyberportへの標識を見つけた。他の都市でいうITパークみたいなものだろうか。行ってみようかと思ったが日が傾いていたのでやめておいた。車道をテスラがちょくちょく走っている。

↑公園が高層ビルに囲まれて存在している。瞑想したり運動したり。

企業訪問

事前に訪問する企業について調べてレポートにまとめて提出していた。

@cosme

入居するビルの入り口でWestern Union中国支店の激しいネオンがお出迎え。現地法人の代表の方の話を聞いた。日本人。マーケティングの話かと思ったら「若い人へのメッセージ」のような内容だった。人生における点と点が繋がって星座になっていて、その星座がどんな形になるかは後からじゃないとわからないとおっしゃっていた。どこかで聞いたことがあったけれど、それだけ広く受け入れられている例えだとわかったのでよかった。

そのあと同じビルにある実店舗を見学。日本の商品がほとんどなので、現地の顧客にもわかるように広東語のPOPが数多く貼られている。化粧品の気の遠くなるような匂いは相変わらずだ。

おもしろ日本語の宝庫だった。こういうのが好きなので店中の棚の日本語を探っていた。あとから聞いた話だが、彼女にプレゼントする用のコスメを熱心に探していると勘違いされていたらしい。勘違いされたのはこっちなのに、なんだか申し訳なくなった。

YATA

次は西友が香港に進出してできたスーパーマーケット・百貨店のYATA。騒がしくて説明はよく聞こえなかった。日本の商品が普通に売っているが、モノによってはそんなに高くない。ラーメンの種類がやたらと豊富。蒙古タンメンは置いてなかった。

講義

↑これを撮ったためにオタクがバレた。

香港英語の洗礼を受ける。聞き取れないというほどではないのだけれど、アクセントが中国語っぽい。Globalization, China, Presentation, Creative Industriesについての授業がそれぞれ休憩込みで3時間ずつだったかな。いかつい感じなのかと思ったら全然そんなことなかった。まあ高校生向けのプログラムだしなあ。楽しかった。

学校は広いかつ山の斜面に建っていて高低差が激しい。上のほうからは市街地がよく見える。

イノベーション・起業のためのiDENDRONという施設があって、投資家と学生のマッチングをしているみたい。

他にも幼小中高(大?)一貫校を見学した。どの教室でもスクリーンを使っている。IT Clubはあったがそんなにガチっぽい感じではなかった。

↑教室の柱にあった落書き。「就考試!」定期試験が近いのだろうか。誰も見ないようなところばかりに目が行ってしまう。

観光

1日香港ツアーが用意されていた。ちょっとこの辺は記憶があいまい。順番が前後している。

ルームメイト共々絶起したので何も食べずに出発。バスには日本同様後ろの方に非常口がある。外からも開けられるようになっていて、「EMERGENCY EXIT」の下には「太平門」と書かれている。漢字と英単語のイメージが真逆の方角を向いている。

大きな川があって、そこの沿岸を歩いた。隙を見計らって近くの店でラーメンを食べてきた。早食いはグローバル社会の必須スキル。ブルースリーの彫像も見てきた。よくわからないオブジェがたくさんある。都市っぽい。大陸からの観光客が多い。

そこから香港貿易発展局(HKTDC)の建物や時計台を見てきた。ガイドの方が日本の有名人の名前を出しながら解説していた。そういう解説の手法だけ覚えていて、何を解説していたのかは忘れた。人民解放軍のヘリコプターが着陸するのを見ることができた。

黄大仙へ。有名なお寺らしい。すごく人が多かった。たくさんの人々が何かを拝んでいるのを見るとおもしろいなと思う。不思議な日本語の説明書きの通りにくじを引くと数字が出てきて、お店で数字に対応する札を買う。40円ぐらい。読めない。宗教的なスポットなので周辺には政治・宗教的な運動の人がビラを配っていた。

↑占いの店が並んでいる通りがあった。資格(!)を有する占い師しか店を出せないらしい。

↑長いエスカレーターに乗って市街地を上っていく。街並みがよく見える。昔は世界一の長さだったらしいけれどいまは分割されている。

イギリス統治時代に造られた裁判所と監獄がセットになった場所にも行った。建物自体は観光スポットとしては微妙だった。不思議な現代アートがたくさん置かれていた。店もそこそこ入っている。

エッグタルトなる人気のお菓子を食べた。昼食は飲茶+香港料理。夕食は日本人が多くて食器を扱う音がうるさい北京料理店だった。両方おいしかった。回るテーブルだった。

途中のお土産スポットなどで何度か自由時間を設けてくれていた。そういった場所はやはり観光客で賑わっているのだけれど、いったん地下に入れば閑散としていた。低い天井を支える両側の壁には店が並んでいて、営業しているものとそうでないのが半々ぐらいだった。蛍光灯がガラスを通って薄暗い店内を照らす。ショーケースに並んだルータや扇風機の箱の間から、雰囲気に似合わないスマートスピーカーやIoT機器がちらほらと顔を出す。日曜日だったので店を閉めていただけのようだ。うれしいような残念なような。

企業見学のときに乗った島と島をつなぐフェリーは10分弱。あれぐらいがちょうどいい長さだなあ。飽きない。働いている人の制服がよかった。大きなショッピングモールに入って昼食。WeChat Payが使えた。本屋は行きそびれた。SHIBUYA 109の支店があった。

また別の日にDialogue in the Darkという目が見えない人の世界を体験する場所に行った。光がないので何も見えない真っ黒な空間に杖を持って入ってグループ間とガイドとで助け合ってなんとか頑張る。フェリーに乗ったりものを買ったり食べ物触ったり。勉強になった。

↑初心者のフリをして煽ってくるタイプの大型車(もちろんこのマークは日本でしか採用されていない)。

日本人高校生との交流

まるで自分が日本人じゃないような書き方だが自分は生粋の日本人。高校生と交流することで2年間高専で過ごすということの重大さを思い知らされる結果となった。同じ日本人でも違う学校の人だったのがカナダ短期留学との違いだった。

  1. 帰国子女は英語が上手
  2. 小学校で見せられた「インターネット安全教室」のビデオの中でしか存在し得なかったはずの若い東京弁
  3. 普段のクラスと逆の男女比

T.K.O.(と書いてみたかっただけで、1と3のダメージはコーヒーがデフォルトで甘かったときとさほど変わらない)(2は慣れるまでつらかった)。

進学校生といっても案外そんなに勉強勉強してないな〜と思ったらホテルの部屋で微分してバスの中で世界史の資料集を開いていた。代わりに自分はLLVMメーリングリストを見ていた。学校の話ばっかりしている人がいた。受験近い人は大変だなあ。さすがにそういう話は馴染めないしどうでもよかった。東京の進学校の名前がわかるだけでも健闘したと思う。

班に分かれて期間中に議論して、最終日にプレゼンをすることになっていた。テーマを決めて、プレゼンの流れをどうのこうのという話を深夜1時ぐらいまでしていた。香港の映画についてのテーマだった。カンフー映画を部屋で集まって見た。そこまで暴力的じゃなかったのでよかった(いや結構暴力的だった気もするけれど脳が記憶を洗い流してくれたのかもしれない)。

女性4:男性1のチームだった。こういう国際なんとかという類のものは女性のほうが多いらしい。明石高専の同級生の知り合いがいた。彼は顔が広いなあ。

なんか自己主張が激しいなーと思った。良い意味ではいろいろと意見が出る。悪い意味では人の話に割り込んだり、行き詰まると口調がキツくなったりする。標準語で問いただされるのもなかなかコワいですね。こういう話し合いに慣れていないので面倒くさいな〜と思っちゃう。

こういうところからもグローバルな匂い(正確にはグローバル意識が高い学生たちの匂い)がする。議論を積極的にする風潮。経済系の雑誌で描かれているディベートクリティカルシンキングといったワードが飛び交う世界。それともたまたまそういう性格の人が集まっただけだろうか。まあこういうのに申し込む人やその家庭というフィルターは少なからずかかってるよなあ。SecHack365とはまた違った議論のやり方があって新鮮ではあった。

さらにこのプログラムは事後課題があって、あとからチームでいくつかあるテーマのうち一つについて500 wordsの英語でエッセイを書くことになっていた。メンバーの一人がその辺で拾ってきたキュレーションサイトを英語に翻訳して「これでいいじゃん」と言っていて出そうとしていた。他のメンバーはまあそれでもいいか、という反応をしている。頭の中の遵法意識がささやき始める(あと個人的なキュレーションサイト嫌いも発動した)。かつてレポートコピーで留年者を大量に出したマイコンの授業を思い出す(自分の学年ではレポートコピーはなかった)。

結局翻訳したそれを提出するのはやめさせた。グループで分担して書くのはどう考えても面倒だったので、自分でCPTPPについて調べて書いて出した。勉強になったのでよかった。自己満足に溺れていた。

みんなInstagramを使っている。Twitterなんか誰もやってない。アカウントを持っていてよかった。いや訳のわからないネタばかり投稿しているのでアカウントを交換した相手からしてみれば災難かもしれない。あとから見てみるとプライバシーを気にするわけでもなく参加者の集合写真を投稿している。そういう意識はどこで醸成されるんだろう。

帰国

空港の搭乗口に移動する途中本屋があったので寄った。オタク雑誌が置いてあったので寮のオタク向けのお土産にした。

CATHAY PACIFICの便に乗って帰った。機内の設備が先進的でよかった、新幹線みたい。座席に設置されているタブレットAndroidだった(画面の辺からスワイプするとそれっぽいのが出てきます)。客室乗務員のアナウンス中はちゃんと触れないようになっていた。


ここ数ヶ月は表情筋が痛むので笑ったら意識して戻すようにしていた。それが裏目に出てしまって怖いといわれてしまった。まさか成人する前に表情筋トレーニングが必要になるとは…

「視点をずらす思考術」「今を生きるための現代詩」を読んだ

書き始めてから途中で放置して、3週間ぐらい経ってから完成させて公開することになってしまった。まあこんなのいつ書いたっていいんだろうけれど流石に期間が空きすぎて内容を忘れる。

数週間ぶりに家に帰った。最近は家に帰ると近くの大きな図書館に行って本を借りてくるのが習慣のようになっている。技術書は学校の図書館で事足りるので、むしろ講談社の新書を借りることが多い。先週は図書館で「視点をずらす思考術」「今を生きるための現代詩」を借りてきた。SXSWに行く前に「『臨済伝』を読む」「ベッドルームで圏論を」を借りた。前者は結構おもしろかったのに対して、後者はほとんど読まなかった。うっかり返さないまま出発してしまい、延滞になっていたのでついでに返してきた。あと何かもう一冊借りた気がする。図書館の利用者ページからは貸出履歴が見られなかった。

本当はそれぞれの本について別々の記事にしようと思っていた。しかし、読み終わってみると二冊に対比できる部分・共通する部分がくっきりしているように感じたので両方書いてみる。

視点をずらす思考術

ハウツー本だろうかと思って借りた。そんなことはなかった。前半のいくつかの章はどこかで聞いたこと・見たことがあるメディア批判のような話が多く、しかも文体に妙にイライラさせられてしまった。読まずに返してしまおうかと思いつつ、イライラする理由もわからずに返してしまうことにどこか後ろめたさを感じたので惰性で最後まで読んだ。

後半はなんとなくすんなり入ってきた。読む前に期待していた「視点をずらす」が最後の章に少しだけあったかもしれない。結論の根拠となるそれぞれの事例のなかには新鮮なものもあった。禅寺での体験とか。「わからないことへの不安」「信仰によって生と死の価値が逆転する」これらはわかりやすい表現だと感じた。

思い出した。出発前にもう一冊借りたのは「世界の陰謀論を読み解く」だった。陰謀論も「わかりやすい」から人々に受け入れられたとか、そんな話があった。

今を生きるための現代詩

適当に選んだ本。新書はすべて同じ装丁なので背表紙を見たときの第一印象に縛られずに選ぶことができる。テーマごとに現代詩の作者と作品を紹介している本。筆者のエピソードもときどき混じる。「今を生きるための」というのはどういうことかわからなかった。それを意識せずに読んでいたからかもしれない。上の本とは逆に、最初からすんなりと受け入れられる文章だった。これが癖のないものなのか単純に自分の好みに合っていた文体なのかはわからない。

学校での現代詩の教え方についての批判があった。詩はなんでも音読して暗唱して、一義的な解釈と技法を頭に叩き込むものではないという主張(なんか抜けてるかも)。自分としては同意できた。これで詩は嫌いだった。ただ学校教育としては暗唱することそのものに何か目的があるのかもしれない。そういえば塾で「発声」という授業があって、いろいろ覚えて面倒だったなあ。

詩などの作品は作者の体験の先に創られることが多いが、これが読み手の立場になると自らの体験よりも(作者の体験と)詩が先行するということが起こる。「ああこのシーンは詩で見たぞ」みたいな。それでいいとのこと。自分はまだ経験したことがないかなあ。

ある文章が取り上げられていた。実はそれは詩集の目次で、筆者はそれを詩と捉えてしまったそうだ。でも自分も文章を見たときそう読んだ。行末に並んでいる等差数列はページ番号だった。勘違いって楽しいなあ。

効率を追求しすぎてはいないかという主張。追求してたら詩なんかまず書かないよな。最近自分はどうでもいいことばかりを考えてしまっている。少し前に知り合いと二人で歩いていたとき話の流れで「たとえば空を見て『電線ってなんで黒色しかないんだろうなあ』とか考えちゃうんですよ」と言った。これはあくまでとっさに口から飛び出た例で、言葉にした後に「あーたしかに言われてみればそうかも、考えてみると面白いかも」と自分自身で思った。それで相手の返答は「え、そりゃあ〇〇だからじゃないの?」〇〇の部分はよく覚えていない。ちょっと残念だった。例として挙げただけの回答を求めていない疑問に対してわざわざ返答されたからではなくて、あっさりと答えを提示されてしまったからだと思う。まあでもそれはこんなバカな疑問に対しては正しい返し方だし、自分も「あー、そうですかねー」と同意してその話題を終わらせた。1+1=2ぐらいの明確さを持って返してくれたので違いを感じた。自分よりは効率的な人。結局電線が黒色しかない理由はよくわからなかった。それかただ単純に自分の考えに同意がほしかっただけかもしれない。おそらく自分が誰かの疑問を正面から斬ってしまったことも何度もあるはず。

せっかく3週間後に書いているのでもう一つ例を挙げる。情報工学研究部の仮入部。「bをaで割ったあまりd」を求めたいとき、C言語ではふつう「d = b % a」と書く。しかしまだ%という演算子がわからない一年生の彼は「b == a * c + d, d < a」という形であまりを代入できないかと考えた。

当然これは動作しないが、具体的な動作ではなく制約を与えることで目的を達成するタイプのプログラミング言語は存在する(Prologとか)。なんだかわからないけれど新鮮に感じた。それで写真を撮っておいた。動かないコードなのに写真を撮って、動いたらそのままどこかに行ってしまう部長はどう捉えられただろう。

その上で、『視点をずらす思考術』で取り上げられた「わからないことへの不安」がこの本でも出現する。この不安をそのまま受け入れる、無理にわかろうとしない力はnegative capabilityという。精神科医が書いた『方法としての面接』という本では相手の言いたいこと・考えていることが「わかる」ことはつまり自分にとって馴染みがあるだけ、という説明があるらしい。馴染みがないことは「わからない」に振り分けられる。

詩の目次も黒い電線も「わからない」という能力があるからこそ考える対象になる。これを「まだわからないでいる」権利と筆者は表現している。ネタバレの話に近いようなそうでないような。

ずいぶんと分量が偏ってしまった。まあいいか。

ちなみに、「クリエイターになりたい!」も借りていた(クリエイターにはなりたいとはとくに思っていない)。過去の作曲家・歌手・文豪・画家を数種類のタイプに分けてその特徴を論ずる内容だった。これは最初の章しか読んでいないのでこの記事にも入れていない。例として挙げられる有名人の名前がジョージ・オーウェルを除いて全くわからなかったのに加え、本文中のカタカナの8割がその未知の有名人の名前だったために読む気をなくしてしまったのかもしれない。2番目の章で述べられていた(そして他の本でもよく述べられているであろう)、寝食を忘れて何かに没頭する「職人タイプ」にまったく共感できなかったのかもしれない。

…ここまで書きながらその本をパラパラめくってみると後ろのほうに納得する文言を見つけてしまった。もうちょっと読んでみたくなってしまった。困ったなあ。延長すれば返却期限はGWの終わりごろになる(GWは家に帰ってくる)が、面倒なのでその部分を含む章を読んでから返した。不思議なことに、章全体で読むとあまり共感できなかった。最初の章に比べればマシだった。ただあと数年経ってから読むべきだったような気がする。(まだ)わからない。