読者です 読者をやめる 読者になる 読者になる

何もしてないのにSurface Bookが壊れて何もしてないのに治った話

この記事はCPS Lab Advent Calendar 2016の16日目の記事です.

www.adventar.org

15日目は遅刻のえるざっぷでした.17日目はけーぴー大先生がついさっき行った武蔵家よりもブックオフを奨めてくれるらしいです.

なんだかんだで11階では概ねiwi研民扱いの状態なので書くことにしました.本業は14階で研究をサボってtwitterをすることです.

今回はなんだかんだでまとめてなかったタイトルの話についてまとめておこうと思います.

 

起こったこと

Surface Bookの画面側(クリップボード)を取り外し,通常の操作で反転させて接続したところ,キーボードの認識・切断ができなくなった.

muscle wireのロックはかかっていてキーボードからは接続状態になっているが,クリップボードからは認識されておらず,取り外しのリクエストにもレスポンスできない状態である.

対処

結局なぜそうなってなぜ治ったのかは不明.

Surface Book のトラブルシューティングにある,「キーボードが取り外せない場合」に従って完全再起動などを何度か試すも効かず.

諦めて修理を申し込み,バッテリーがないため電源を切って再度起動したところ認識され取り外すことができた.

 

ことのあらまし

そう,あれはまだ俺がSurface Bookを購入して1週間も経たないある日のこと.いつものようにiwi研にいた俺からこんな発言が飛び出した.

iwi研で@haru2036 にドヤリングをしていたところ,悲惨にも寝違えてしまったのである.

しかしタイムスタンプ見て分かるようにこのとき既に残留30分前,サポートなどとうに終了している.俺はトラブルシューティングの完全シャットダウンなどが効かないことだけ確認すると,上手いこと言われながら帰路についた.しかし,このときはまだ真の問題に気付いていなかったのだ…!

 

帰りの電車内でもPC作業を継続するのが常であり,しかも翌日進捗発表だった俺は,この日も寝違えたことは残念に思いつつタッチパネルのみでLap Topしていた.しかし,事態は急変する.

もはや慌てていて意味不明だが,要するにどう転んでも充電不能であることに気付き,慌ててシャットダウンをしているのである.

Surface Bookは,クリップボードとキーボードの両方にバッテリーを搭載しており,接続時には両方,分割時にはクリップボードのみのバッテリーが使用される.そして,クリップボードの充電コネクタはキーボードとの接続コネクタを兼ねて接続部にあり,接続時にはクリップボードコネクタは隠れキーボードのコネクタから両方に充電がされる.

しかし,このときキーボードは物理的にはクリップボードコネクタを塞いでいるが,論理的には接続されておらず,従ってキーボードからの電源供給はなされない.電源供給ソースにならないキーボードだけ充電しても意味はなく,完全に詰んでいるというワケだ.

 

思いつく手段がなくなり,いろいろ試すバッテリーも時間の問題となり,そのまま何もできずに朝を迎える.朝一で日本MSのサポートに連絡し,交換対応となった.

その後,進捗発表の場において思わぬ方向へと急展開を迎える.

なんと,間違えて電源ボタンに触れてしまい電源がついた拍子に,キーボードの接続が認識されたのである.そのまま解除を行い,表向きに接続し充電して事なきを得た.

もちろん,その日の進捗発表の1ページ目は,

であった.

TDU CTF 2014 Satellite in ConoHa に参加してきた

Nomuken氏の主催するTDU CTFに参加してきた。connpass.com

CTFに参加するのは前回に続いて2度目(前々回を含めるなら3回目)で、外部の人もいるところに行くのは初めてである。
会場のConoHa、すごく綺麗なオフィスだった。

結果から言うと、1670点で4位だった。まあ実際にはプロの方々が以下のかっこいいフラグを入れていたようなのでもうちょい下ですが、まああまり経験ない身としては健闘したんじゃないかと。

TDU{I_Am_Beginner} -5000pt
TDU{I_Am_Not_Beginner} -1000pt 
TDU{I_Am_Not_Pro} -500pt 
TDU{I_Am_Pro} -100pt

write-upって書いたことないんだけどとりあえず書けるだけ書いてみる。

Easy SQLi test

普通のSQLiっぽかったんだが、最初は「' OR 1=1;--」でやってたらシングルクォーテーションがエスケープされててダブルクォーテーションじゃないといけないということが気がつかなくて時間がかかった。
ちなみに後から知ったのだが、発行されるSQL文の後ろに「LIMIT 5」が含まれているので後ろをコメントアウトしないと一つ目のフラグが出てこないらしい。
その後はUNIONでsqlite_masterだかと結合して表示、flagTable(だっけ?)にある2つめのフラグをsubmit。
それ以降は忘れた。

String Compare

とりあえずStringsに噛ませたら、「MinamiKotori」「TDU{%s_is_very_cutie}」といういかにもな文字列が並んでいたので、とりあえず組み合わせてみたら通った。

PhoneApps


まあ実際親方というかWindows Phoneな感じはしていた。

とりあえずアーカイブなのでzipとして開ける。すると画像とxmlとdllが出てくる。
そこで、やはりWindows Phoneで.Netだろうとあたりをつけて、PivotApp1.dllをILSpy(事前の告知メールで用意しておくとよいソフトとして挙げられていた)で開く。
とりあえずViewに直接書いてある可能性から調べる。
mainpage.xamlを見ると、次のような部分が見つかる。
f:id:twinkfrag:20150331183230p:plain

直接フラグは書いてなさそうだが、「Find a flag!」付近にPathタグが見つかる。
これを、適当なWPFアプリケーションに貼り付けて描画させることでフラグが得られる。
f:id:twinkfrag:20150331183158p:plain

起きているか

みたいな問題名のやつ。question.pcapが渡されるがWireSharkで見ても分からないやつ。
最初分からなかったが後半になってバイナリ問題だからとStringsで見直したら

TDU{TDUCTF}  //this is not a flg
TDU{HANYABUSHI} it's a not valid
TDU{HANYABUSHI} it's a not valid
TDU{ICHIIYUI} // it's a not flag
TDU
TDU{ICHIIYUI} // it's a not flag
TDU
TDU{NONOHARA} // it's a not flag
{PC
TDU{NONOHARA} // it's a not flag
{PC
TDU{HINATA} // this is not a flg
AP_
TDU{HINATA} // this is not a flg
AP_
TDU{AIKAWA} // this is not a flg
BLO
TDU{AIKAWA} // this is not a flg
BLO
TDU{OKANOKEI}//this is not a flg
CK_
TDU{OKANOKEI}//this is not a flg
CK_
TDU{OKAASAN} //this is not a flg
PAD
TDU{OKAASAN} //this is not a flg
PAD
TDU{YUYUSHIKI} // it's not a flg
DIN
TDU{YUYUSHIKI} // it's not a flg
DIN
I LOVE YUYUSHIKI! YUYUSHIKI!
I LOVE YUYUSHIKI! YUYUSHIKI!
KIMIHA TOTEMO ERAI! YOKU YONDA!

こんな感じに出てきたので、ばらけてるフラグを組み合わせて出した。
前述のStringsが3文字以上のみの文字列を認識することは知っていたので最後の2文字だけ補って、
TDU{PCAP_BLOCK_PADDING}
を得る。

Evidence

RawImageというファイルが渡された。
万能解凍ツールである7zipさんに噛ませると1ディレクトリに2ファイルだけがあったがフラグは見当たらなかった。
そこでFTK Imagerに噛ませると、削除済みファイルとして!oc.pdfというファイルが出てきてフラグを得る。

我が同胞に告ぐ

vim is so awesome


追記:2015/04/02
なんか勘違いしてたやつがあったので消しました


他にも思い出したら追記する。

感想

なんか気付いたら結構得点できていて後でびっくりした。
もうそろそろ初心者名乗れなくなってしまった感あるので次回は経験者的な枠かなという感じではある。
だんだんCTFが楽しくなってきたので今度はもっと他のCTFにも参加してみようと思う。