更新日時で差をつけろ

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

フォローとミュート

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

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

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

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

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

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

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

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

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

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

セキュリティ・キャンプ全国大会 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してみたりして楽しかったです。夕食で刺身のツマを食べようとしていたら店の人に持っていかれて残念がってたとき、隣に座っていたのはかの有名なバグハンターの方でした。夜の講話のときに「全国応募する人〜!」という質問があってほとんどの人が手を挙げているなか、「もうちょっと実力貯めてから行きたいな」と思って手を挙げなかったのを思い出します。数年で貯めた実力を発揮できるよう、そしてさらに伸ばせるよう手を動かしていきます〜〜〜

筑波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だった(画面の辺からスワイプするとそれっぽいのが出てきます)。客室乗務員のアナウンス中はちゃんと触れないようになっていた。


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

一人部屋に移った

たまにログインしてアクセス解析を見てみると特に何もないのに急にアクセスが増えることがあって面白い。

寮の部屋移動を済ませた。待ちに待った一人部屋である。今までは一つ上の先輩もしくは一つ下の後輩との二人部屋だった。 前の入居者がなかなか出て行かなかったので荷物を運び込むのが遅くなってしまった。前の入居者について文句を言いたいわけではなくて、その人はその人で来年度過ごす部屋に住んでいる人が…というのをくり返して卒業予定の5年生が早く出て行ってくれないと動けないので仕方ない話である。閉寮が早すぎるんじゃないかと思った。

荷物を運び込んで、前の二人部屋を掃除して、新しい部屋を掃除して(一応出る人が掃除することになっているとはいえ明らかにそれほどされていなかったのでやり直した)、レイアウトというほどでもないが適当に考えてモノを収納した。同級生の助けを借りても6時間弱かかった気がする。学校でもらってきたマット数十枚を掃除機で一枚一枚吸うのが大変だった。しかしながら、一人部屋の気楽さというのは移動が終わる前から始まっていた。何をどこに置くかは(だいたい)自由で一番納得いく形になるよう工夫することができて楽しい。あくまで物理的な存在という制約が課せられているのでちょうど良い難易度というか、考えの余地になる。

部屋自体は棚のサイズが2倍になった。一人当たりのコンセントの差込口が3倍の6つになった。代わりにタコ足をどこかに失くしてしまった。それでもパーキンソンの法則よろしく両方使い切ってしまうんだろうなあ。 窓を独占できるが、建物の反対側なので新幹線ではなくB寮が見える。部屋で縦に吊るしていたカナダ国旗は他にいい場所がなかったので大胆に窓側にぶら下げてみた。B寮からはこれが見えるのだろうか。見えたらどんな気持ちになるだろうか。上下逆さにしたら気づくだろうか。

ドアを閉めると自分の目に動くものは何も動いていなくて「ああ帰ってきたなあ」という感覚がとても強くなる。大阪に住んでいたときの自分の部屋がスライド式のドアで、寮もそれと同じなのがその感じを補強しているように思える(ドアを開ける方向は違う)。 目の前に他人がいるとどうしてもそっちに気持ちが向いてしまうのに対して、なんだか居場所がちゃんとそこにあるような安心感がある。

夜中に作業しないといけないことになっても相手の迷惑を考えなくていいし、好きな時間に寝て起きられる。考え事をするときに無意識に部屋の中を歩き回っても何も言われない。どうしても人に会いたくなければホワイトボードに「作業中なので入室は後にしてください」と書いて部屋の鍵を閉めてしまえる。わざわざ夜に散歩に出なくてよくなる。散歩は多分するけど。なんか言葉にするとどうでもいいようなことのように思われそう。

一方で一人部屋になっても変わらないこともある。夜中になっても物音・話し声はするし、むしろ向かいの部屋の人がスピーカーでEDMを流している上に隣は大部屋で不吉な予感しかしない。3階なので廊下にドアが設置されておらず声がよく通ってしまう。

昨年度二人部屋になったときは「人の目がある方が勉強とかできていいかな」と思っていたが全然そんなことなかった。この発見を裏付けるためにもそれなりにうまくやっていきたい。

しかし明日には寮が閉まり大阪に帰る。さらば一人部屋…

たのしい潮寮生活 2

高専 Advent Calendar 2018の6日目の記事です。

明石高専電気情報工学科2年のsei0oです。
高専への進学を検討している中学生や通学している同級生に寮がどんなところか知ってもらえればと思い書いたたのしい潮寮生活がそこそこ見られているようなので、調子にのって2つ目を出すことにしました。時間が空いているので、内容は結構変わっています。「潮寮」というのは明石高専学生寮の名前です。

2年生の視点で書きます。 2年生の視点で書きます。大事なことなので2回言いました。昨年からの差分を主に書きますので、上の記事から読むとわかりやすいと思います。 高専自体についてはあまり書きません。

公式も参照してください。みどころはやっぱり寮長からのメッセージかなあ。

去年は 住めば都 とか書いてたような気がしますが、最近やっぱりそうじゃないかもしれないと思えてきました。 なんとなくAdvent Calendarの昨日の記事を読むと、

明日6日目はsei0oさんの「たのしい潮寮生活 2」です。私は通生なので詳しくありませんが、寮生がゴミ回線と虚無な飯と点呼によって精神を病むのは全国共通なんですかね?うちがひどいだけ?

うーん。否定できない。

立地

まずはデータから。

  • 校内に設置されているので教室から歩いて3分
  • 1, 2, 3年男子寮のA寮(私はここに住んでいるので、ここを中心に書きます)
  • 3, 4, 5年, 専攻科のC寮
  • 女子寮のB寮
  • 国際交流センター
    • 留学生しかいない棟(たぶん)
  • 隣に老人ホームが建ったので窓からドクターイエロー見えなくなりました

部屋

昨年は203号室、今年度は209号室です。1・2年の2人部屋で、向かいは3年生の一人部屋。 相変わらずオタクです。本棚の本をひっくり返して背表紙が見えないようにすると脳のエネルギーが節約されて快適です。 二人部屋だとだいたい2年生が冷蔵庫を買って1年生と共同で使うので、前の同部屋の先輩と同じものを買いました。 Abitelax AR-100E

後方確認

結構気分で机周りのレイアウトは変えていて、机の上にいろいろ部品を載せて開発するときは灰色の机を90度回転して黒い机と合体してL字型のようにしていました。

改修

夏休みに、2F, 3Fのそれぞれ8部屋が改装されました。そこだけキレイ。 こんな感じで境界がくっきりしています。なぜかその両脇に設置された消火器はさながら国境警備隊のようです。見てわかる通り、手前が歴史のある地区、奥が改装された地区です。

ドアに高専プロコンのポスターを貼る高専生の鑑。

なんでもタイのなんとか王女なんとか高校から留学生を恒常的に受け入れるそうで、2・3階の1人部屋が「交流スペース」になったり、寮生ホールにユニットバスが設置されたりそこそこ大きな改修がありました。1人部屋にいた人はどうなるの?ということですが、かつての談話室が2人部屋に改装されてそこに新たな1年寮生と1人部屋の2年生が入っています(今年は1年生の入寮希望者が多くて入学と同時に入寮できない人がいました)。1人部屋を追い出された2年生は若干気の毒ですね(他人事)。

「交流スペース」を利用している人はほとんどいませんテスト前になると使う人が増えました。でも先輩が通ったら作業中でも挨拶しなくちゃいけないことになっています。

また、新しいシャワー室と洗面所ができました。まだきれい。

生活

今年の1年生が利口なのか、指導寮生(寮生役員会)が軟化したのか(たぶん両方)今年は入寮後に1ヶ月ほど大声挨拶があったあとは復活していません。ありがたい。

今年の2年寮生は多いので2人部屋に収まりきらず、1人部屋になる人も出ました。進級するときにじゃんけんで確か決めたような記憶があるのですが、話し合いでボケーッとしていたら私は2人部屋になりました。1人部屋になって監視の目がなくなると生活崩壊まっしぐらなので丁度良いです(言い訳)。

昨年は「同部屋の先輩」でしたが、今年は「同部屋の後輩」。都市システム工学科(C科)の1年生です。 プライバシーにうるさい時代なので詳しくは書きませんが、私は朝型であるのに対し彼は夜型(徹夜型)です。試験期間になると消灯がなくなり彼が徹夜で課題をするので、私は耳栓とアイマスクをして寝ていました。 あとはエアコン。私は28度で使って、暑いときは26度まで下げるのが普通だと思っていましたが、ある日部屋に入ると突き刺すようなひんやりとした感覚があったのでリモコンを見てみると「18度」。聞いてみたところ、部活の後は暑くて28度ではやっていけないらしいです。28度に戻しても気づかないうちに温度が変えられているので上着を羽織って凌いでいました。他の部屋に枕を持って疎開したことも何度か。 エアコンの温度を下げるにつれて私の就寝時間が早くなり、起床が遅くなるらしいです。試されてたのか…

今年だけの話とはいえ、工事も個人的には結構負担でした。土日でもお構いなくカンカンカンカン聞こえるので、部屋の中ではずっとイヤーマフか耳栓をしていました。試験前やプロコンなどでピリピリしているときは、工事でなくとも同部屋の喋り声・口笛だけでもイライラします(ごめんな…)。余計な衝突を避けるためにも 一人になる方法や五感を遮断する方法は作っておいたほうがよい です。自己管理大切。常に周りに人がいる状態は一人っ子にはつらい。 図書館にこもって作業するのもオススメです。学校の図書館と明石市の西部図書館が近くにあります。西部図書館には苫米地英人の本が置いてあったこと以外覚えていませんが、学校の図書館には「CPUのつくり方」みたいな専門書も結構置いてあって良いです(良い)。

これくらいかな。あっ、(男子の) 風呂 を忘れていましたね。半年以上前にレジオネラ菌が発生した影響で毎日18:00ごろから数回消毒液のようなものが浴槽の壁から出てくるのですが、これが臭い臭い。ときたま身体が痒くなることもありますがこれは多分気のせい。1,2年生は17:30からしか風呂を使えないので、18:00までの30分が鍵となります。20:00ぐらいに行けば臭いは薄まっているでしょうが、その時間帯はすでにお湯がヌルいんだよなぁ… 早く改善されることを祈るばかりです。

…嘘です。新設されたシャワー室しか使ってないのでもうどうでもいいです。元来シャワーだけというのは好きではありませんが、静けさと部屋からの近さを考えればシャワーの圧勝です。実際、同じ階の人の半数近くがシャワーのみで生活しています。

人間関係

少なくとも通学生に比べれば寮生は親密になります(多くの場合)。私はそうです。 いろいろチームで課外活動をするにあたっても、寮生なら直接部屋に突撃して進捗を強要できます。SlackとかDMで連絡してもスルーする人いるからねえ(自戒の意味を込めて)。

他の部屋の一年生には「209仲良いっすよねえ」と言われるのでそれなりにうまくできているんでしょう。「1年生、入寮直後は不安だろうなあ」と思ってたくさん私のほうから話しかけたのはあるとはいえ…。他の2年生から話を聞くと、「ほとんど話してない」「何考えてるかわからん」というのもあるので、相性ばかりはどうしようもないです。でもそんなときは他の部屋に篭もれば大丈夫です。 バーチャルCTF班などと題して夜に部屋に集まって情報工学研究部CTF班の活動をするなどというのは楽しいです。こうでもしないと人が来ない

まとめ

いろいろ書きましたが、なんとかするぞという意志を持てばなんとでもなります。 寮務や先輩、同級生に相談しつつ反抗的な態度を取らなければ十分快適に寮生活が送れます。

高専アドカレ、明日は@lz650sssさんが「高専生はもっと積極的に勉強会に行くべき」という記事を書かれるそうです。

そういえば12/16の大和セキュリティでキャンセルが出たので、久しぶりに勉強会に行けます。わーい。明石高専IT系勉強会も引き継ぐことになったので続けていきたいですねー。

全国高専プロコンに参加した #procon29

第29回全国高専プロコン に参加した。阿南高専が主管校。そこの学生さんたちがスタッフとしていろいろ大変だったらしい。

昨年は競技部門だったが、今年は明石高専・課題部門「スマートコンシェルジュ」としてブースに立った。5人チーム。 結論から書くと、受賞はなかった。学生間の相互投票では1位だったが、投票の母数はそんなに多くないはず。

もしかすると他のコンテストにこれを出すかもしれないので、プロダクトの詳細はぼやかして書く。ところで、チームメンバーが思いっきりプロダクトの実装をTwitter上で質問していたので少しヒヤヒヤした。何もなかったのでよかった。おそらく自分がちょっと過敏だっただけ。

予選まで

学内でプロコンの案内が出て、「あーまあ今年はいいかな」と思っていたところで昨年一緒にプロコンに出たM君に誘われた。アイデアはあるらしい。「うーん、それって面白いのか?」と思いつつ手伝うつもりで出ることにした。今思えばこの手伝うつもり、って心構えが無責任さの現れだよなーと思う。もうちょっとしっかり考えておけばよかった。実装は楽しかった。 学内予選があったが、候補が自分たちのチームだけだったのでそのまま予選資料に着手した。たしか実装はほとんどしていなかったと思う。スマートスピーカーを使ったプロダクトだったので、Amazon Echo, Google Homeの比較をしてみたり…という段階だったはず。放課後に研究室に集まって作業の割り振りとか設計の話してた。

予選資料提出の2週間前ぐらいに資料を作り始めた。M君が作ったのをベースに担当の先生のアドバイスを組み込んでいく感じで進めた。文章を考えたり図を作って入れたりするのが面倒だった。定期試験がすぐ後にあって結構焦っていたのを覚えている。急にPCの調子が悪くなって寮の貧弱無線LANに接続できなくなったので学校で作業したんだっけ。なんとかギリギリで提出して、「いやーもっと早くからやっておけばよかった」みたいな話をしていたら通ってた。驚いた。通過ランクはBなので予選では11~20位のどこかということになる。審査員のコメントは(自分は)無視した。

本選まで

この予選資料を基にして実装を進めることになった。つまり予選資料として提出するまでほとんど具体的に設計、というより実装する機能がまとまっていなかった。チームメンバー間の技術レベルに差があったので「一人でやったほうが早い」病に苦しめられた。分担してみるとそんなことなかったんだけれど。

自分は途中で留学したのもあって10月始まってからグオーっと開発した。ソースコード提出が終わってから本選までのコミット数が、予選通過後からソースコード提出前のそれより多い。寮の消灯を伸ばしてもらって開発することもあった。同部屋さんごめんなさいとも思ったが普段冷房で散々な目にあっているのでお互い様である。本当にヤバくて「プロコン行きたくない〜〜〜」とかむちゃくちゃなこと言ってた。ピリピリしてた。

そんなわけで(自分の)累計開発期間は1ヶ月と少し。

出発〜本選1日目

購入しておいたバスチケットを競技部門含めたみんなに配って前日入りした。車内でもLANが使えた。実装しようとPCを開いたら酔った。ホテルの無線LANはまさかの暗号化なしだった。階ごとにルーターが違う方法で設置されていて面白かった。会場にいくと東京高専のオタクが突如現れて怖かった。2人で自撮りした。夕食は中華そばの店に行った。腹が満たされて少し焦りが和らいだ。出た瞬間に雨降ってきてびしょ濡れになった。

結局徹夜した。実装の関所を越えたところだったのでサクサク進んで楽しかった。MONSTERのCUBA LIBREがすごく美味しかった。なんだこれ。

朝は食欲がなかったが体力を使う日だとわかっていたのでそれなりにしっかりホテルの朝食をとった。よくわからないアニメが流れていた。前日に運び込んでいないので、荷物を忘れていないか心配だった。

会場に向かうバスでも「帰りたい〜〜もう無理や〜」と気分だったが、いざブースに立ってみれば幸か不幸か案外マシな反応が得られるものである。一安心した。メンバーのプレゼンもうまくいったらしい。手書きで機械学習アピールをしだすの面白かった。する意味はなかったんじゃないかと思うが。

スマートスピーカーは物理的なインターフェースを少なくするために無線LAN経由で設定を行うが、会場ではいろいろなAPが立てられていて実機を動作させられなかった。仮に設定できていたとしても、会場の騒音ではうまく音声認識ができたとは思えない。あらかじめ予想はしていたがどういう騒音対策をとればよいかわからず何もできなかった。結局当日はAlexa Skill Kitが提供しているスマートスピーカーのシミュレータ上でデモを行った。

あと会場の電気を使っていいよと言われるまでルータで有線LANを構築できなかったのでRaspberry Pi等の設定も遅れた。こうしたトラブルに見舞われて最初の1時間強は展示できなかった。

Twitterで知り合った他の高専の人にも会った。名刺をたくさん交換した。ぐるーっとブースを回ってみたが自ブースが気が気でなくてじっくりとは見ていない。

終わるころには話し疲れて「帰りたい〜〜」って言ってた。学生交流会はいつも通りすごかった。Twitter大事。夕食はカレー。

本選2日目

急遽作ったポスターを貼った。事前にポスター作ってないチームって今思ってもクレイジー。靴下を持っていくのを忘れて靴を直接履いていたら靴擦れしたので途中からブースの外では裸足だった。痛かった。

デモ審査とマニュアル審査があった。まあまあうまくいったが、一部完成度の低さが露見する場面があってつらかった。

冒頭で述べた通りチームの受賞はなかった。詫間強いなー。阿波踊りが思っていた以上に長かった。なんかすごかった。でもやっぱり依然として早く帰りたかった。

その後

バスまで時間を潰す必要があったが、徳島駅前のどこかで作業しようと場所を探したが手持ちのMacのバッテリー残量が3%だったので適当に100均あたりをうろうろした。 バスで隣に座ったメンバーが悔しいと言っていた。そうだねえと言おうとしたが、まあこの作業量なら当然の結果だよなという思いもあったので何も言わなかった。

徳島の街並みはちょっと古いのがよかった。

同日にロボコンの地区大会(?)もあった。明石Aチームが全国進出した。すごい。 翌日になってロボコンの話のあとに「そういえば、」のノリでプロコンの話題を振られるのも、それに対して「ダメだったよー」と返すのもこたえた。


個人でまとめていた反省点は箇条書きでも3700文字ぐらいになっていた。たとえば、技術レベルの差があるのは割り切って、予算あるんだし本でも読んでもらえばよかったんじゃないかなあと思っている(そうすれば当人が暇になることも無力感を覚えることもなかったかもしれない)。何かメンバーが困っている時に直接口で説明すると疲れるし、部屋に来られても集中できないのでまずはSlackで話してもらうようお願いしておいたのはよかった。

Trelloを使ってタスク管理をしてみたが常用していたのは自分だけだった。そういうツールが必要になるレベルにすら全体の作業量が達していなかったのかもしれない。すぐ忘れる性格なので個人的には助かった。

昨年の記事を読み直すかぎり結構つらそうな書き方をしているが(たぶん自戒の意味を込めてきつく書いたような気がする)、それに比べて今年は諦めがついたというか「ないものはない」という考えで落ち着いているように思える。メンバーも高専祭実行委員会・インターン・FE/AP試験で忙しかったし。(ただの言い訳じゃないかという人もいるかもしれないけれど知ったこっちゃないです。学びがあったのでそれで僕は今年はそれでいいと思ってます。)SecHack365でトレーナーの方に教えていただいたこともこの辺に影響を与えていそう。

来年はもうちょっと計画的に進めていきたい。出るかわからないとはいえ。 プロコンに参加した人も運営の人もお疲れ様でした。