今月初めに開催された DEFCON で、Blue Team Village の Cisco Talos ブースにお越しいただいた皆様に感謝いたします。ブースでは、Snort ルール チャレンジとリバース CTF を開催したほか、採用担当者がキャリアに関するご質問に応じました。このバッジは、そこで配布したものです。
残念なことに、短時間で作成したため、ボードに 2 件の不具合がありました。この記事では、それを修正する方法をご紹介します。不具合を修正すると、このボードは Digispark の完全なクローンになります。例として用意したのは USB キーボードの偽装スケッチですが、その他にもさまざまなプロジェクトにご使用いただけます。また、オープン ジャンパにリード線を取り付けて、ATtiny85 からすべてのピンにフル アクセスし、独自のプロジェクトを進めることもできます。
電源は、USB ポート(USB デバイスとして使用する場合)、USB 充電器、またはボード上部の J2 から直接供給できます。中央のピンは GND、右側のピンは 5 V の電圧調整、左側のピンは 5 V ~ 20 V の電圧に対応しています。DEFCON では、利便性を考えて、9 V のバッテリを使用しました。
1 つ目の不具合は非常に分かりやすいものです。誤った回路図が使用されため、ボードの右下にあるダイオード D1 で、カソードの方向を示す線が誤った末端に引かれています。
2 つ目の不具合を直すには、やや工夫が必要でした。しかし、それほど難しくはありません。むしろ非常に楽しい作業になります。こちらの不具合は、USB ポートの回路図が逆さになっていたことが原因でした。そのため、配線を微調整して、すべての部品を適切な位置に取り付ける必要があります。結果として、個性のあるバッジになると思います。
必要な工具
- 小型のマイナス ドライバ
- 小さいこて先を使用したはんだごて
- はんだ
- 小型のニッパー
- 小型のラジオ ペンチがあると便利
- マルチメータ、または少なくともテスター(2 点間で導通が確認されるとビープ音が鳴る)
- 拡大鏡は作業の確認に役立つ
- Arduino IDE をチップのプログラミングに使用する
部品リスト
- Digispark ブートローダがインストールされた ATtiny85 USB 経由のプログラミングにブートローダが必要
- 8 ピン DIP チップ ホルダ
- 電圧レギュレータ 5 V
- スルーホール ミニ USB コネクタ
- 定電圧ダイオード6 V(2 個)
- ショットキー ダイオード(1 個)
- 抵抗 75 オーム(もしくは回路図で示すように 100 オームまたは5 オーム)(2 個)
- 抵抗5k オーム(1 個)
- 抵抗 330 オーム(2 個)
- LED(2 個)
- コンデンサ1 uF(1 個)
- コンデンサ7 uF(1 個)
ご参考までに、これがボードの回路図です。この回路図では、USB 5 V ピンから 5 V レールへのダイオードが逆さになっています。カソードを示す線は、USB ポートではなく 5 V レールに向かって上向きにする必要があります。その点を除けば、非常に素晴らしい回路図であり、クリエイティブ コモンズ ライセンスの下でリリースされています。
ボードの準備
ボードを簡単に作成できるように USB ポートの再配線を行うには、ボード上の 1 つの配線を切断する必要があります。ドリルで穴を開けても構いませんが、マイナス ドライバで、導体(配線/ワイヤ)を削るだけで十分です。
他の配線を傷つけないように注意してください。テスターがあれば、作業を問題なく完了していることを毎回確認しましょう(またはマルチメータを「抵抗」に設定し、無限抵抗(開回路とも呼ぶ)を確認します)。
切断する配線は、(ボードの背面から見ると)USB ジャックの一番後ろにあるコネクタから始まっています。切断する箇所は、接続用の穴を過ぎた、T 字配線の手前の部分です。言葉による説明よりも、実際に見ていただく方が分かりやすいと思います。次の写真を参照してください。マルチメータを見ると、切断作業の後に、USB コネクタのピンと、該当の接続点との間で、導通がなくなったことが分かります。
USB コネクタの準備
ありがたいことに、USB 接続のひとつが使用されていません。このため、ジャックを変更して未使用のピンを取り除くことができます。そうすれば、ボードにブリッジを作成して、もともと接続されるはずだった位置に、使用するピンを配置できます。
未使用のピンを取り除くには、USB コネクタを裏返して、ピンを上向きにし、「接続口」が左側になるように置きます。削除するのは、左上にあるピンです。
小型のマイナス ドライバを使用し、コネクタの後ろ(写真では右側)に向かって、ピンを折り曲げます。その後、ラジオ ペンチを使用して、完全に折れるまで、ピンを小刻みに動かします。そのようにすることで、作業がうまくいきました。
USB コネクタのはんだ付け
注意:ここではコネクタをブリッジしなければなりません。また、必要なものをキットにすべて取り付けるために、部品のリード線の一部を使用します。
- USB コネクタをボード前面の穴に差し込み、ボードを裏返します。電圧レギュレータ(金属のフィンが付いた黒色の部品)を使用すると、はんだ付けを行っている間、ボードを水平に保つことができます。
- 左側にある 2 つの位置決めの穴をはんだ付けし、ピンをはんだ付けする際に、コネクタが動かないようにします。
- コンデンサ(濃いオレンジ色または茶色)の片方の脚を左の穴に差し込み、その穴にピンも差し込みます。写真をご覧ください。コンデンサの細いリード線をうまく活用して、左側の 2 つのコネクタをブリッジしています。
- USB コネクタの 4 つのピンすべてをはんだ付けします。使用していない穴は、はんだ付けしないでください。ピンと穴は、非常に小さいため、こて先をすぐにきれいにしましょう。また、はんだをあまり使用せず、ブリッジ接続も控えることをお勧めします。
- 穴にはんだ付けした脚を半分ほど残して切ります。コンデンサをボードにはんだ付けする際には、長い脚は必要ありません。USB ポートの固定していないコネクタに届くほどの長さがあれば十分です。
- 他の部分に接触しないように注意しながら、カットした脚を曲げて、開いているコネクタに渡します。その後、適切な位置にはんだ付けします。ドライバを使用すると、さらに強く、かつ正確に、ボードに対してブリッジを曲げることができます。
「正常な部品」のはんだ付け
これで、3 つのダイオードを除くすべての部品をはんだ付けできます。黒色の線が入った赤色のガラスのような部品と、銀色の線が入った黒い部品がダイオードです。組み立てる際の注意:一部の部品は単方向型であることにご注意ください。
- LED は単方向型です。長い脚を、正方形の接触面がある穴に差し込みます。注意:2 つの LED には、反対側に正方形の接触面があります。
- 黄色のコンデンサは単方向型です。長い脚を、ボードの下部にある「+」に差し込みます。濃いオレンジ(または茶色)のコンデンサは双方向型です。コンデンサは並列接続されるため、C1 と C2 のどちらに取り付けても構いません。
- 電圧レギュレータの近くにある R4 と R5 は、330 オームです。このキット内の、オレンジ色、オレンジ色、茶色のカラー コードを使用した太い抵抗です。金色のカラー コードは、抵抗の誤差、つまり「品質」を示しており、この回路では重要ではありません。
- R3 と R1 は、USB コネクタの下にある上から 2 つの抵抗です。75 オームで、紫色、緑色、黒色のカラー コードが使用されています。これらの抵抗がキットに含まれていない場合、(75 オームの抵抗はどれもラスベガスの Fry’s で購入しました)、キットで動作する一般的なサイズとして、100 オームも使用できます。
- 右側の一番下にある抵抗 R2 は、5k オームで、カラー コードは、茶色、緑色、赤色です。
- キットの大きな青色の抵抗は使用しません。5 オームのはずです。いえ、66.5「k」オームでした。
- チップ コネクタにはノッチがあります。これが、右にあるシルクスクリーンの線の終わりに合わせて並んでいます。これは、チップのピン 1 を示すために使用されます。はんだ付けしているときに、チップをソケットに取り付けないでください。また、はんだ付けの後は、リード線の端を忘れずにカットします。
- 電圧レギュレータ(金属のフィンが付いた黒色の部品)の冷却フィンの向きを示す線が、ボードの左側にあります。この部品を取り付けているときに気が付きましたが、はんだ付けの際に右に傾けると、少し余分なスペースができて、左側に曲げやすくなり、作業を終えたときに平らになります。
工夫を凝らしてはんだ付けする
次に、5 V と GND の回路を逆向きにする必要があります。次のステップ 1 と 2 を読む前に、回路がどのようになるかを見ておくと、それらのステップを理解しやすくなります。ステップ 2 を終えると、次の写真のようになります。
- いずれかの定電圧ダイオード(黒色の線が入っており、赤色が透けて見えるガラスのような小さな部品)を使用します。黒色の線は、回路基板に印刷してある線に一致します。少し工夫を凝らして、奇抜な方法で取り付けます。
- 定電圧ダイオードを、左のダイオード スロット(U3)に差し込みます。このとき、黒色の線がボード側になるようにして、まっすぐに立てます。
- まっすぐに立てた状態で、はんだ付けします。
- ボードの背面でリード線をカットする際には、切り取った線を保存します。この後すぐに必要になるからです。
- この時点では、ダイオードをこの向きのままにしておきます。
- 別の定電圧ダイオードを使用します。通常の取り付けのように黒色の線がある方の脚を曲げますが、もう一方の脚はまっすぐにしておきます。
- U2 の上部のコネクタに差し込みます(つまり線が一致します)が、はんだ付けする前に、それを左に傾けて U3 のシルクスクリーンに交差させます。
- ボードの他の部品と、配線と穴の相対的なサイズを考えて、曲げた後にスペースを作ると、このダイオードを上からはんだ付けしやすくなると思います。ボードの背面にある余分な線を切り落とします。必要に応じて背面からはんだ付けし、確実に取り付けます。
- U3 の下の穴を迂回してチップ ホルダの上部に配線できるように、固定していない U2 の脚を曲げます。ラジオ ペンチを使用すると簡単です。この脚は、U3 の下部の脚にはんだ付けするので、そのワイヤとの距離の確保は気にしなくても構いません。
各定電圧ダイオードを取り付ける
- U3(左側の定電圧ダイオード)に戻り、固定してないワイヤを前方に曲げて、ダイオードの下部の穴に通し、適切にはんだ付けします。ラジオ ペンチを使用すると、折曲げと差し込みを簡単に行えると思います。ダイオードが半分に折れないように、緩く曲げてください。部品が壊れるリスクを伴うほどきつく配線する必要はありません。
- U2 の下部の脚を、U3 の曲がった脚にはんだ付けしてください。U3 が、前述のステップどおりに、ボードにはんだ付けされていることを確認するようにします。
- GND に定電圧ダイオードを取り付ける
- U3 からカットした脚を D1 の上のコネクタにはんだ付けし、ボードから突き出るように立てます。それを曲げて、固定していない U2 の脚につなぎます(この脚は、U3 の下部のワイヤを迂回しています)。
- 脚を上に曲げて、U2 の長い脚に合うようにはんだ付けしてつなぎます。これで、D1 の上部と両方のダイオードを、U3 の下部でつなぐことができました。
- ショットキー(銀色の線が入った黒色の部品)ダイオードのはんだ付け
- このダイオードのシルクスクリーンは逆向きになっていますが、使用していた回路図で部品が逆さまになっていたことが原因です。つまり、ボード上のマーキングは無視しても構いません。このダイオードの長い脚を使用して、回路を修正するための長い配線を行います。新しいワイヤは使用しません。この修正が終わると、銀色の線がある方の脚が D1 の下部に、もう片方の脚が U2 の下部に、適切に接続されます。配線は自由に整えることができますが、ワイヤ同士が接触しないことを確認してください。ダイオード自体を絶縁体として扱い、それを、チップ キャリアを迂回している U2 のコネクタに対して使用するか、絶縁テープを使用することもできます。
- チップの取り付け
- チップには、表面にピン 1 を示す小さいドットがあります。これを、チップ キャリアのくぼみがある側に合わせます(ボードの右側)。
完成した回路は、次の写真のようになります。
ボードのプログラミング
ボードのプログラミングについては、次の YouTube チュートリアルをご覧ください。前述のとおり、このボードは ATtiny85 チップを使用する Digispark のクローンです。問題が発生したら、これらについてオンラインで検索すると、必要な情報を入手できるはずです。
このビデオで「Digispark ボード」と呼ばれているものは、「Talos DEFCON 27 Blue Team Village バッジ」と同じものであるとお考えください。
- Arduino IDE を開き、Digispark ボード マネージャをロードします(ビデオの 1:48)。
- ドライバをロードします(ビデオの 3:54)。おそらく、Talos のボードと私たちがインストールしたブートローダを使えば、このステップは簡単かもしれません。ビデオでは、トラブルが発生したときに利用可能な情報とリンクを教えてくれます。
- Arduino IDE をロードします(ビデオの 7:24)。ビデオで説明されている点滅用のスケッチを書いてみたい場合は、ぜひそうしてください。あるいは、点滅はビデオで確認するだけにして、次のステップに移っても構いません。
- このスケッチをコピーして貼り付けます。
これで、プログラムをアップロードできます。必要に応じてバッジのプラグを取り外します。また、IDE で求められた場合、プラグを取り付けるようにしてください(取り付けについてはビデオの 9:07 で説明されています)。
これでバッジのプログラミングが終わりました。今後、Arduino IDE や他のコンピュータを制御するためのドライバは不要です。プラグを差し込んだら、5 秒間待ってください。その間に、ボードは自身を Arduino として識別して接続を解除し、キーボードとして再接続します。その後、ボードの動作を観察してください。LED1 は、スケッチでプログラミングされたとおり、状態を示すランプです。ランプは、タイピングが開始されるとオンになり、すべてのコマンドが完了するとオフになります。
バッジに異なるコマンドを送信させる場合は、関数 type() を呼び出す行を変更して、別の内容をタイピングするように指示します。ただし、これらのチップのメモリは非常に小さく、残念ながら Digispark ライブラリが多くの容量を占有しています。そのため、大量のテキストを入力することはできません。それでも、十分な容量だと思います。インストールされたコードのサイズを縮小する
と、より多くのプログラムをチップに読み込ませることができます。
バッジに関するその他の注意事項
- メス型リード コネクタを J1 と J2 にはんだ付けすると、必要なのが数行のデータと少量のメモリのみであれば、指定した操作を ATtiny85 で実行可能です。リード線に直接はんだ付けすることもできますが、メス型のリード線を取り付けることで、再利用可能な回路を作ることができます。USB データ転送ケーブルに接続しているときにデータ ピンを駆動することはお勧めできません。
- J2 は外部電源用なので、USB に接続されていなくても、ボードを動作させることができます。中央のコネクタはアースです。右側のコネクタは 5 V 専用です。左側のコネクタは、5 V ~ 20 V DC で動作可能です。
- USB 充電ケーブルを使用して回路に給電することもできますが、前述のように、キーボードなど、USB データを特に操作しないスケッチを実行している場合は、コンピュータの USB データ ポートに接続することは推奨されません。
- 上記のように USB を介して、または、このビデオの説明のように Arduino UNO などを ISP に使用して、プログラミングすることができます。
- ブートローダを変更する場合(または、キット内のブートローダがインストールされていない在庫品の ATtiny85 を入手した場合)の手順については、こちらのビデオを参照してください。
今後も、新たなバッジを作成しようと考えています。次回は、不具合が発生しないことを願っております。Hacker Summer Camp はお楽しみいただけましたでしょうか。チャレンジやバッジなどの興味深いイベントを来年も開催できることを楽しみにしています。
本稿は 2019年8月21日に Talos Group のブログに投稿された「Talos DEFCON badge build instructions and use」の抄訳です。