ねぎろぐ

ちくわ大明神

SECCON2016のVigenere暗号をGoogleスプレッドシートのHLOOKUPとMODで解く

タイトルまんまです。

今回のSECCONは3問しか解けず、うち2問(VoIP/Memory Analysis)はツールを正しく使うだけで解けてしまいました。
f:id:greenshallot:20161211225719p:plain

そのあたりのWriteupは他の人と大差ないと思うので、手を動かしたVigenereのWriteupだけ書いておきます。

解き方

問題文にヒントとしてWikipediaへのリンクがあり、そのとおりに解きました。
ヴィジュネル暗号 - Wikipedia

  • こんな表を作って先頭からi番目のiを求めます。
    f:id:greenshallot:20161211224953p:plain

  • ざっくりとCiをHLOOKUPで算出しておきます。
    f:id:greenshallot:20161211231902p:plain

  • 分かっているpの一部からPiを求めます。
    f:id:greenshallot:20161211232229p:plain

  • MOD関数でKiを求め、HLOOKUPで文字に直すことにより、kの一部が"VIGENER?????"であるとわかります。 f:id:greenshallot:20161211230921p:plain

  • おまけでEもつくので"VIGENERE????"と判明し、これで12文字のうち8文字が判明します。
    f:id:greenshallot:20161211233010p:plain

  • 判明した分のFlagをMOD関数で計算します。Pi=MOD(Ci-Ki+28,28)
    あとはHLOOKUPで文字に戻します。

  • これでFlagが SECCON{A????BCDEDEFG????KLMNOPQR????VWXYYZ} までわかります。

  • Flagの文字からA-Zのアルファベットが全て含まれているものと類推し、不明な4文字中2文字の"CO"まで推測した時点で"CODE"と確定し、"VIGENERECODE"でPを求めFlagゲットとなりました。
    f:id:greenshallot:20161211234216p:plain

  • Flag = SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

  • 実際に使ったスプレッドシートはこんな感じです。
    SECCON2016_Vigenere解 - Google スプレッドシート

SurfacePro3をクラウドからリカバリする

#ssmjp参加者 Advent Calendar 2016 - Adventar 11日目です。

www.adventar.org

ssmjpの勉強会にはいつもお邪魔させていただいてお世話になってます!
まだ発表側になったことがないのですが、ちょうどWindowsリカバリするタイミングでアドベントカレンダーが作成されたので、記録がてら登録しておきます。
リカバリもきっと運用に入るので大丈夫かなーと。
(LTネタにしようかと思いましたが、特にオチもなかったので・・・)

今回のネタは普段メインで利用しているSurfacePro3のリカバリです。

SurfacePro3のリカバリ領域について

Surfaceにはリカバリ用回復パーティションが備わっており、ディスクの管理でその存在が確認できます。 f:id:greenshallot:20161211135104p:plain

回復パーティションだけで約6.5GBも消費していますね。
リカバリ時にしか使わないので、普段は回復ドライブを作成し、このパーティションを削除して利用しています。

ただ、急にリカバリが必要になったときに回復ドライブの入ったUSBが見つからず困ることがあります。
そんなときは、公式サイトでリカバリイメージがダウンロードできる*1ので、ダウンロードして再作成する方法が用意されています。
ですが、わざわざリカバリ用のUSBを作成せずともクラウドから新規インストールする方法が用意されています。

実際にクラウドからのリカバリを試してみました。

クラウドからのリカバリ作業手順

必要なのはインターネット回線のみです。
無線LANか有線LANで繋いだ状態で作業します。

  • 起動オプションを表示する

OSが起動する場合は
設定->更新とセキュリティ->回復->PCの起動をカスタマイズする
から起動オプションに入ることができます。
もしくはShiftキーを押しながら再起動でもいけます。 f:id:greenshallot:20161211150731p:plain

  • PCが起動しない場合は音量ボタンの下げる方を押しながら電源を入れることで起動オプションが表示されるらしいのですが、ダメな場合は諦めてUSBを作成しましょう・・・

  • オプションの選択でトラブルシューティングを選びます。 f:id:greenshallot:20161211163716j:plain

  • クラウドから回復するボタンがあるので押しましょう。 f:id:greenshallot:20161211163835j:plain

  • 途中で回復キーの入力を求められますが、データを保持する必要がなければスキップで構いません。 f:id:greenshallot:20161211164148j:plain

  • あとはネットワークを選び、接続し f:id:greenshallot:20161211172012j:plain

  • データが消えることに同意して f:id:greenshallot:20161211172149j:plain

  • 再インストールを押して再起動するのを待つだけ!
    (有線LANで試した際は35分程度で完了しました。) f:id:greenshallot:20161211172407j:plain

リカバリ後のOSバージョンは初期ビルド、せっかくクラウドからイメージを取得しているので、最新ビルドまで一気にあがると嬉しいんですけどね。

ホスト名: DESKTOP-OO3C642
OS 名: Microsoft Windows 10 Pro
OS バージョン: 10.0.10240 N/A ビルド 10240
OS 製造元: Microsoft Corporation
OS 構成: スタンドアロン ワークステーション
OS ビルドの種類: Multiprocessor Free

ちなみに、このクラウドからの回復機能はSurfacePro3がリリースされた当初のWindows8.1モデルには存在しませんでした。*2
いつの間に追加されたんだろうか・・・

おわりに

記事にする必要があるのか分からないくらい簡単でしたが、あまり知られてないようでしたので書いてみました。
機能としてはMacmacOS インターネット復元とほぼ同じです。
support.apple.com

昔と違って大抵のデータはNASクラウドストレージに保存するようになり、OSと使うソフトの再インストールのみでクリーンな環境に戻せるようになっていますので、手軽にリカバリできるのは大変ありがたいことです。

ただ、このリカバリ方法が使える機種をMicrosoft製品以外で見たことがないので、これから普及することに期待しています。
Surfaceシリーズは復旧手段が豊富なので、ディスク容量が足りない方は心置きなく回復パーティションを削除しましょう。

以上となります。今後続くかはわかりませんが。
ではでは。

*1:https://www.microsoft.com/surface/ja-jp/support/warranty-service-and-recovery/downloadablerecoveryimage

*2:僕のSurfaceWIndows8.1のモデルでしたが、一度修理した際にWindows10に上がって返ってきました。