どうも,にゃんぱすー.日本陰キャ協会 会員のざきまつです.
本記事は,日本陰キャ協会 Advent Calendar 2022の10日目の記事になります.
日本陰キャ協会のカレンダー - Qiita Advent Calendar 2022
クリスマスが近づいてきました.街は完全にクリスマスムード,綺麗なイルミネーションとか美味しいものがあふれ始めています.
ただ,そういうところにリア充がはびこるので,気晴らしに爆弾処理したいと思います.
処理失敗しても,周りにいるリア充が爆散するだけなのでどちらにせよハッピーですね(なわけ).
クリスマス,皆さんどう過ごしますか?
家族と?恋人と?友達と?ペットと?いいですね.
僕は最近別れたので,研究とともに過ごす予定です.
はじめに
だいぶ前にTsukuCTF2022に参加したのですが,時間が足りずHardwareが解けませんでした.ロボット競技で回路班に所属していた身としては,とても悔しいお気持ち.(しかも,作問者がチームメイトだった)
ただ,回路についてあまり知識がない&回路を読めないという,回路班としてはあってはならない状態なので,勉強がてら解いていきたいと思います.
ついでに,リア充も爆破できれば爆破したいと思います.
あ,いやこれが本来の目的ではないですよ?ちゃんと回路の勉強しながら解くのが目的です.
問題(DefuseBomb)
つくしくんは疑似時限爆弾解除競技の訓練として、3つの時限爆弾に関するそれぞれのデータ(DefBom1,DefBom2は回路図、DefBom3は基板製造データ)をもとに、3つそれぞれの爆弾解除を行う。各時限爆弾はタイマー(limit_timer)がON状態になったとき、爆弾(bomb)に電流が流れて爆発する。
切断可能な線はデータ内で示されており、DefBom1では1から6の番号が振られたハサミ、DefBom2 では1から5の番号が振られたハサミ, DefBom3 では1から5の番号が振られた矢印である。示された切断可能な線のうち、1つの線を切れば limit_timer が ON 状態になっても爆発せず解除に成功する。しかし、残りの線は切っても limit_timer が ON 状態になる、もしくは切断した瞬間に爆発する。フラグ形式はTsukuCTF22{ここにDefbom1からDefbom3において切断した番号を順に書く}といった形です。例として、切断した線の番号が DefBom1 では"3"、DefBom2"では"1"、DefBom3 では"5"であった場合フラグ形式はTsukuCTF22{315}となります。
ほうほうほう,つまりリア充を爆発四散させたいわけですね(違う).
しかたない,僕が全世界のリア充を救ってみせましょう.
救った暁には,5000兆円の送金をお待ちしています.
では、それぞれの基板について見ていきます.
DefBomb1
以下の回路図は,Defbomb1の回路図になります.
U1のTC74HC08AP,U2のTC74HC02APは汎用ロジックICです.08APはANDゲート,02APはNORゲートとなっています.
それぞれのデータシートを見ると,仕様詳細を知ることができます.
東芝CMOSデジタル集積回路 シリコン モノリシック TC74HC08AP データシート
東芝CMOSデジタル集積回路 シリコン モノリシック TC74HC02AP データシート
ただ,仕様書を見ながらやるのも大変なので,draw.ioを使って論理回路を書きおこします.
爆弾であるU2の直前がNORゲートになっています.このNORゲートの入力・出力の関係を以下の表にまとめています.
U3 2番の入力 | U3 3番の入力 | U3 1番の出力 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
0 | 1 | 0 |
1 | 1 | 0 |
これより,U3の2番と3番に入る入力が両方0で無ければ,U2は起動しません.
さて,どこをカットしましょう...個人的にはU2直前のところで無理やり切断して終わりがいいんですけどね.
実は2, 3, 5番のハサミで切断しても,U3の3番は必ず0になります.
切断するハサミ | U3 5番 | U3 6番 | U3 4番 | U1 2番 | U1 1番 | U1 3番 |
---|---|---|---|---|---|---|
5 | 0 | 1 | 0 | 0 | 0 | 0 |
3 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 | 0 | 0 |
下側を切断しても何も変わりません,ならば上側ですね.
切断するハサミ | U3 9番 | U3 8番 | U3 10番 | U1 12番 | U1 13番 | U1 11番 |
---|---|---|---|---|---|---|
4 | 0 | 0 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 0 | 0 | 0 | 0 |
以上の表から,4番のハサミで切断すればU2は発火せず,スイッチを押してもリア充は爆発しません.
どうして僕はリア充を救っているのでしょうか,甚だ疑問ですね.あ,5000兆円のためか.
よかったですね,ひとまずクリスマスは安心してデートできる未来が見えてきましたよ,皆さん.
DefBomb2
回路図から,この問題ではNチャネルMOSFETを使用していることがわかります.
MOSFETとは,電圧によって電流の通電を制御する,半導体の特性を利用したトランジスタです.
詳しくは,以下のページを見ていただくといいです.とても勉強になります.
MOSFETとは | 半導体製品 | 新電元工業株式会社- Shindengen
MOSFETの構造と動作原理 | 半導体製品 | 新電元工業株式会社- Shindengen
動作速度が速いのは,とてもうれしいですね.
さて,この問題についてですが,紙に書いて考えました.
1番から順番に切って,それぞれの電圧関係を確認...してたら日が暮れてました.
なので,U1に対して電流が流れなくするための条件について考えていきます.
まず,U1がある大きな抵抗値を持っている&Q7が通電できる場合,U1には電流が流れずにQ7に流れていきます.
つまり,Q7は通電できる必要があります.そうすると,必然的にQ8も通電できる必要が出てきます.
Q8が通電不可の場合はQ7も通電不可となり,リア充も僕らもみんな吹き飛びます.
となると,Q8の1番-3番で電位差を発生させるために5番のハサミでカットしてはいけないことがわかります.
あるいは,カットした瞬間に導線と溶接or圧着する必要があります.めんどくさそう.
さて,Q8の1番-3番で電位差を発生させるにはどうしたらいいでしょう.え?どうしようもない?
今のままだと,R11の抵抗器のせいでQ8の1番に向けて電流が流れず,Q3とQ4に対して流れてしまいます.
これは,導線と抵抗器が並列に繋がっている場合に,電流は導線側に流れるためです.
つまり,Q3とQ4に電流が流れないようにする必要があります.
はいここで4番のハサミに着目.
4番のハサミで切ると,R2とR3,Q3の1番とQ4の1番がGNDになり,電位差がなくなるため電流が流れなくなります.多分.
また,未来が明るくなりました.皆さん,安心デートまであと一歩です.
僕の未来も照らしてください.
DefBomb3
最後,DefBomb3について見ていきます.
DefBomb3は,間違えてファイル消したと思って相当焦りました(ファイルがもう配布されていない).
ファイル内を覗くと,大量の拡張子ファイルが入っています.
今回は,回路設計などでおなじみの「KiCad」を使って開きました.
ここで,DefBomb3ではTC74HC00APが使われていることがわかります.00APは,NANDゲートの様です.
東芝CMOSデジタル集積回路 シリコン モノリシック TC74HC00AP データシート
わかりづらいので,draw.ioを使って論理回路図を描きます.
この図から,U2 6番の出力が0であるには,4番と5番がそれぞれ1である必要があります.
ここで,1, 4, 5番のハサミどれを切断しても5番の入力は1になるし,切断しなくても1になることが図からわかります.
実は,9番がGNDのため,5番の入力が0になることは絶対にありません.
「いやいやいや,どゆこと?」と思った人は,電気回路or論理回路orメカトロニクスの教科書でNANDについて確認してください.
多分,言ってる意味が一発でわかります.
なので,2, 3番のどちらかを切断すればいいです.
3番のハサミで切断すると4番の入力が0になっちゃうので,2番のハサミで切断すればよいことがわかりますね.
おわりに
これで,クリスマスに安心してデートできることが確約されました.
ササっと解除して終わりましょう,博多駅のクリスマスマーケットでホットチョコ飲みたいですし.
いやぁ,外で作業するとめちゃくちゃ凍えるんですよね.
末端冷え性にはつらい作業ですわyブェクショォォォイ
パチンッ(ハサミがずれて1番を切る音)