TsukuCTFのHardwareを解いて，リア充を吹き飛ばす．

![yoshi.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/a9867acb-92a3-ff63-d229-1cd72d39db94.jpeg)


どうも，にゃんぱすー．日本陰キャ協会 会員の[ざきまつ](https://twitter.com/santana_hammer)です．

本記事は，日本陰キャ協会 Advent Calendar 2022の10日目の記事になります．
[日本陰キャ協会のカレンダー - Qiita Advent Calendar 2022](https://qiita.com/advent-calendar/2022/thar1k_y0u_kirara)

クリスマスが近づいてきました．街は完全にクリスマスムード，綺麗なイルミネーションとか美味しいものがあふれ始めています．
ただ，そういうところにリア充がはびこるので，気晴らしに**爆弾処理したい**と思います．
処理失敗しても，周りにいるリア充が爆散するだけなのでどちらにせよハッピーですね（なわけ）．

クリスマス，皆さんどう過ごしますか？
家族と？恋人と？友達と？ペットと？いいですね．
僕は最近別れたので，研究とともに過ごす予定です．

# はじめに
だいぶ前に[TsukuCTF2022に参加した](https://qiita.com/Trigger-FK/items/1965d85e4fbbfca5f573 "TsukuCTF2022 Writeup")のですが，時間が足りずHardwareが解けませんでした．ロボット競技で回路班に所属していた身としては，とても悔しいお気持ち．（しかも，作問者がチームメイトだった）
ただ，回路についてあまり知識がない＆回路を読めないという，**回路班としてはあってはならない状態**なので，勉強がてら解いていきたいと思います．

ついでに，リア充も爆破できれば爆破したいと思います．
あ，いやこれが本来の目的ではないですよ？ちゃんと回路の勉強しながら解くのが目的です．

# 問題（DefuseBomb）
> つくしくんは疑似時限爆弾解除競技の訓練として、３つの時限爆弾に関するそれぞれのデータ(DefBom1,DefBom2は回路図、DefBom3は基板製造データ)をもとに、３つそれぞれの爆弾解除を行う。各時限爆弾はタイマー(limit_timer)がON状態になったとき、爆弾(bomb)に電流が流れて爆発する。
> 切断可能な線はデータ内で示されており、DefBom1では１から６の番号が振られたハサミ、DefBom2 では１から５の番号が振られたハサミ, DefBom3 では１から５の番号が振られた矢印である。示された切断可能な線のうち、１つの線を切れば limit_timer が ON 状態になっても爆発せず解除に成功する。しかし、残りの線は切っても limit_timer が ON 状態になる、もしくは切断した瞬間に爆発する。
>
> フラグ形式はTsukuCTF22{ここにDefbom1からDefbom3において切断した番号を順に書く}といった形です。例として、切断した線の番号が DefBom1 では"3"、DefBom2"では"1"、DefBom3 では"5"であった場合フラグ形式はTsukuCTF22{315}となります。

ほうほうほう，つまりリア充を爆発四散させたいわけですね（違う）．
しかたない，僕が全世界のリア充を救ってみせましょう．
救った暁には，5000兆円の送金をお待ちしています．

では、それぞれの基板について見ていきます．

### DefBomb1
以下の回路図は，Defbomb1の回路図になります．
![DefBom1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/3cc00cf2-4c80-e96f-12f3-03f719b30eb0.jpeg)
U1のTC74HC08AP，U2のTC74HC02APは汎用ロジックICです．08APは**ANDゲート**，02APは**NORゲート**となっています．
それぞれのデータシートを見ると，仕様詳細を知ることができます．

[東芝CMOSデジタル集積回路  シリコン  モノリシック　TC74HC08AP　データシート](https://toshiba.semicon-storage.com/info/TC74HC08AP_datasheet_ja_20140301.pdf?did=7496&prodName=TC74HC08AP "TOSHIBA TC74HC08AP/AF")
[東芝CMOSデジタル集積回路  シリコン  モノリシック　TC74HC02AP　データシート](https://toshiba.semicon-storage.com/info/TC74HC02AP_datasheet_ja_20140301.pdf?did=6965&prodName=TC74HC02AP "TOSHIBA TC74HC02AP/AF")

ただ，仕様書を見ながらやるのも大変なので，draw.ioを使って論理回路を書きおこします．
![bomb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/2f36a1c2-ca93-b442-65e4-f42c00e6a978.png)
爆弾である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
次に，Defbomb2の回路図を見ていきます．
![DefBom2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/a8afaeaa-0656-7191-7353-c062af92d14d.jpeg)

回路図から，この問題では**NチャネルMOSFET**を使用していることがわかります．
MOSFETとは，電圧によって電流の通電を制御する，半導体の特性を利用したトランジスタです．
詳しくは，以下のページを見ていただくといいです．とても勉強になります．

[MOSFETとは | 半導体製品 | 新電元工業株式会社- Shindengen](https://www.shindengen.co.jp/products/semi/column/basic/mosfet/mosfet.html)
[MOSFETの構造と動作原理 | 半導体製品 | 新電元工業株式会社- Shindengen](https://www.shindengen.co.jp/products/semi/column/basic/mosfet/mosfet_1.html)

動作速度が速いのは，とてもうれしいですね．

さて，この問題についてですが，紙に書いて考えました．

![think_bomb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/9cdab717-6084-4e3b-9ad7-46e36be239c9.jpeg)

1番から順番に切って，それぞれの電圧関係を確認...してたら日が暮れてました．
なので，U1に対して電流が流れなくするための条件について考えていきます．

まず，U1がある大きな抵抗値を持っている＆Q7が通電できる場合，U1には電流が流れずにQ7に流れていきます．
つまり，Q7は通電できる必要があります．そうすると，**必然的にQ8も通電できる必要が出てきます**．
Q8が通電不可の場合はQ7も通電不可となり，リア充も僕らもみんな吹き飛びます．

となると，Q8の1番-3番で電位差を発生させるために**5番のハサミでカットしてはいけないことがわかります**．
あるいは，カットした瞬間に導線と溶接or圧着する必要があります．めんどくさそう．

さて，Q8の1番-3番で電位差を発生させるにはどうしたらいいでしょう．え？どうしようもない？
![bomb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/f0cc0353-123d-6933-76ad-cdd1bf9b8256.jpeg)
![stay.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/4eee71a6-1395-39d1-26e5-292ad7117bfe.jpeg)


今のままだと，R11の抵抗器のせいでQ8の1番に向けて電流が流れず，Q3とQ4に対して流れてしまいます．
これは，導線と抵抗器が並列に繋がっている場合に，電流は導線側に流れるためです．

つまり，Q3とQ4に電流が流れないようにする必要があります．
はいここで4番のハサミに着目．
**4番のハサミで切ると，R2とR3,Q3の1番とQ4の1番がGNDになり，電位差がなくなるため電流が流れなくなります．多分．**

また，未来が明るくなりました．皆さん，安心デートまであと一歩です．
僕の未来も照らしてください．

### DefBomb3
最後，DefBomb3について見ていきます．
DefBomb3は，間違えてファイル消したと思って相当焦りました（ファイルがもう配布されていない）．

ファイル内を覗くと，大量の拡張子ファイルが入っています．
今回は，回路設計などでおなじみの「KiCad」を使って開きました．

![Bomb3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/c5983ff7-25ac-0efd-700a-e334772bf993.png)

ここで，DefBomb3ではTC74HC00APが使われていることがわかります．00APは，**NANDゲート**の様です．

[東芝CMOSデジタル集積回路  シリコン  モノリシック　TC74HC00AP　データシート](https://toshiba.semicon-storage.com/info/docget.jsp?did=6907&prodName=TC74HC00AP)

わかりづらいので，draw.ioを使って論理回路図を描きます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/13b69dd8-d379-a44c-d5aa-0158ddfd3ecc.png)

この図から，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番を切る音）

![Demon_Core.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688041/b7711243-7fcf-f0a0-abde-4f5ce34ee7c4.jpeg)