1119591_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1119591_ja-JP

1119591_ja-JP

DEFCON 27バッジ - はじめに <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

DEFCONとして知られる今年の年次ハッカーセキュリティ会議では、今年の電子バッジにいくつかのNXPデバイスを使用しました。このドキュメントでは、デバイスをプログラムし、コンポーネントを追加する方法について説明します。このバッジは、NXPのエンジニアリング支援を受けて Grand Idea Studioによって開発され、 このプレゼンテーションではバッジの開発について詳しく説明しています。私はNXPのシステムエンジニアで、Defconでバッジの再プログラミングを始めるのを手伝っていましたが、それを自分で行う方法の詳細をすべて提供するものを作りたいと思っていました。

完全な回路図とファームウェアのソースコードは、次のURLから入手できます http://www.grandideastudio.com/defcon-27-badge/  

バッジには、次の 2 つの NXP デバイスがあります。

  • KL27 - MKL27Z64VDA4 - 48Mhz ARM Cortex M0+ マイクロコントローラ (64KB フラッシュ付) (データシート および リファレンスマニュアル)
  • NXH2261UK- 無線通信用の近距離電磁誘導(NFMI)チップ。バッジの範囲は約6インチ(15cm)ですが、テクノロジーはもう少し機能する可能性があります。ハイエンドのヘッドフォンによく見られるのは、BLE波は頭で妨害されますが、これらの波はそうではありません。また、消費電力も少なくなります。

pastedImage_12.png

投稿画像

シリアルポートの使用:

役立つ情報を出力するシリアルインターフェースがあり、完全にレベルアップしたバッジを持っている場合は、いくつかの「秘密」を利用できます。また、printf デバッグのためにバッジをハックするための新しいコードを書いている場合にも非常に役立ちます。デフォルトでは、シリアルポートを介してボードをプログラムすることはできません。この特定のチップはそれをサポートしていませんが、他のチップの一部はサポートしています。もちろん、シリアルブートローダーを書くことは可能ですが、それは間違いなく初心者レベルではありません。

次の 2 つのハードウェアが必要です。

1) ヘッダーピン

3) シリアル - USB コンバータ

ヘッダーピン:

ヘッダーをPCBフットプリントにはんだ付けできます。石英のため、リード線はPCB上で平らである必要があります。A Harwin M20-8770442 はフットプリントに適合し、はんだ付け村で提供されたものであり、下の写真に写っているものです。また、独自のヘッダーを作成してみることもできます。

シリアルからUSBへのコンバーター:

今日、シリアルポートが付属しているコンピューターはほとんどないため、シリアルからUSBへのコンバータードングルが必要です。GND、Power、TX、RXの4つのピンがあります。

DEFCONバッジは1.8Vで動作しますが、チップ自体の定格は最大3.6Vであるため、 シリアルヘッダーの電源ピンを接続しない限り、*3.3Vドングルを使用できます*。GND、RX、TXを接続するだけです。プロダクション デザインでは、VCC を超える IO 電圧は望ましくありませんが、ハッキングの目的では機能し、私は複数のボードで問題なく一週間中使用してきました。

たくさんのオプションがあります。ここでは、特に注意したい場合は1.8Vのもの、またはすでに8ドルのコネクタが付属している3.3Vのものがあります。1.8Vまたは3.3Vで送信するものはすべて機能するため、すでに1つある可能性がありますが、電源ピンを接続しないでください。

 

ソフトウェア:

TeraTermPuttyなどのシリアルターミナルプログラムをインストールする必要があります。

1)3.3Vまたは1.8V USBコンバータードングルをコンピューターに接続すると、COMポートとして列挙されます。

2) ドングルの GND ラインをヘッダーの GND に接続します

3)ドングルの TXピンをヘッダーの RXピンに接続します

4)ドングルの RXピンをヘッダーの TXピンに接続します(RXからRXではなく、大学のロボット工学プロジェクト中に丸2日かけて髪をかきむしりました)

5)電源ピンを接続しないでください

5) 終了すると、次のようになります。

pastedImage_65.png

6)シリアルターミナルプログラムで、ドングルが次のように列挙されているCOMポートに接続します。

pastedImage_59.png

7)シリアルポート設定メニュー(TeraTermではSetup->メニューバーの[Serial Port]にあります)を見つけ、ボーレートを115200に設定します。その他の設定を変更する必要はありません(8データビット、パリティなし、1ストップビット)。

pastedImage_60.png

8)ターミナルで、Enterキーを押します。>プロンプトが表示されるはずです

9)ターミナルで、キーボードの「?」キーを押してEnterキーを押すと、メニューが表示されます。

    投稿画像 

10)押したキーはターミナルに表示されませんが、Enterキーを押すだけでコマンドが実行されることに注意してください

11)Ctrl + xを押してインタラクティブモードを終了し、ラジオの電源を入れ直します。

12)インタラクティブモードではない間、端末は、近くに持ち込んだバッジの送信パケットを表示します。

バッジの再プログラミング:

ハードウェア:

次の 2 つのハードウェアが必要です。

1) Programmer/debugger

2)プログラミングケーブル

プログラムデバッガ:

KL27チップにはARM M0+コアが搭載されているため、ほとんどのARM Cortex Mデバッグプログラマを使用できます。LPC-Link2はわずか20ドルで、NXPまたはほとんどのディストリビューター(MouserやDIgikeyなど)から直接購入できるため、LPC-Link2をお勧めします。「OM13054」を検索します。ただし、ARMプログラマーをすでにお持ちの場合は、J-Link、PEMicroなどを使用することもできます。

ケーブル:

DEFCONバッジには、 Tag Connect TC2050-IDC-NL-050-ALLのフットプリントがあります。このケーブルは製造プログラミング用であり、日常的なデバッグ用ではないため、コードをステップ実行する場合は、クォーツの前面をポップオフして、プログラマをボードに接続したままにするための リテーナークリップ も用意する必要があります。

単にボードを再プログラムしたい場合は、3つの長いガイドクリップを切り取り、ケーブルをPCBに押し付けながら、毎回~5秒間手をしっかりと保持します。

あるいは、すでにJTAG / SWDケーブルがあり、はんだ付けのスキルがある場合は、細いゲージのワイヤーを使用して、自分のコンバーターをボードにハックアップできます /u/videlen 真のハッカーはんだ付け しました 。ただし、 /u/int23h 指摘したように、シングル ワイヤ デバッグ (SWD) を使用しているため、SWDIO と SWDCLK の 2 つのピンを実際にはんだ付けするだけで済みます。ただし、nRESE...

ソフトウェア

必要なソフトウェアは 3 つあります。

1) コンパイラ

2) KL27用MCUXpresso SDK

3) バッジのソースコード

コンパイラ:

  • 推奨オプション: MCUXpresso IDE の最新バージョン - Windows、Mac、Linux で利用可能
  • 2番目のオプション:DEFCONメディアサーバーから Windows用の古いバージョンのMCUXpresso IDEをダウンロードします
  • 3番目のオプション:最新のSDKを使用する場合は、ARM-GCC、IAR、またはKeilツールチェーンも簡単に使用できます。

MCUXpresso SDK:

バッジソース:

MCUXpresso IDEの使用開始:

1)MCUXpressoIDEを開きます。使用するワークスペースディレクトリを求められたら、ファームウェアソースをダウンロードした場所とは異なる場所にある新しい空のディレクトリを選択(または作成)します。

    pastedImage_44.png

2) SDK .zipをドラッグ アンド ドロップします。ファイル システムから MCUXpresso IDE の [インストールされている SDK] ウィンドウにファイルします。このようにして、コンパイラは KL27 デバイスとフラッシュ アルゴリズムについて学習します。

pastedImage_41.png

3) バッジ ファームウェア フォルダをファイル エクスプローラ ウィンドウから MCUXpresso IDE の [プロジェクト エクスプローラ] ウィンドウにドラッグ アンド ドロップします。

pastedImage_38.png

4)クイックスタートパネルで、[ビルド]をクリックします

pastedImage_35.png

5)[コンソール]タブに、正常にコンパイルされたというメッセージが表示されます

pastedImage_37.png

7) クイックスタートパネルで、[デバッグ] をクリックします。 プログラミングにLPC Link2を使用していない場合は、最初にこれをクリックするときにShiftキーを押したままにする必要があります。これにより、デバッガーが再スキャンされます 最新の MCUXpresso IDE を使用している場合は、起動構成を更新する必要があることを示すダイアログ ボックスが表示されます。「はい」をクリックします。

pastedImage_36.png

  pastedImage_33.png

7) デバッグプローブを確認するダイアログボックスが表示されます。

pastedImage_32.png

8)プログラミングケーブルをボードに接続し、を押して接続を良好にします。位置合わせピンがPCBの位置合わせ穴と一致していること、およびピン1(赤いストライプ)が下の写真と一致していることを確認してください。バッジがリセットされているときにビープ音が鳴る場合があります。

9)次に、ダイアログボックスで[OK]をクリックしてプログラミングを開始します。プログラミングが終了するまで(約5秒間)、プローブをそのままにしてください。

pastedImage_2.png

10)正常にプログラムされ、再起動時にボードのビープ音が聞こえるはずです。

pastedImage_3.png

プログラミングのトラブルシューティング/ヒント:

LPC Link2を使用していない場合は、Shiftキーを押しながらDebugボタンを押すと、新しいプローブが再検索されます。また、デバッグ設定とプローブが JTAG モードではなく SWD モードを使用していることを確認してください。

プログラミングケーブルがパッドと並んでいない場合、このエラーが表示されます。プローブの位置を再調整して、再試行してください。また、プログラミング中にMCUをオンにする必要があるため、バッテリーからの電力が必要です。

pastedImage_34.png

上部にあるGUIフラッシュプログラマーを押すと、デバッグビューが読み込まれないため、ダウンロードが速くなります。コードをステップ実行せずにデバイスをフラッシュするだけの場合に便利です。

pastedImage_5.png

最後に、ゲームの状態変数の一部は非揮発性の内部フラッシュに格納され、ファームウェアを再プログラムするときに自動的に消去されない可能性があります。これは、プログラマーがフラッシュメモリの領域が使用されていることを認識していないため、時間を節約するためにわざわざ消去しない可能性があります。フラッシュの完全消去を強制して、すべてのゲーム変数を消去するには、一括消去オプションを設定します。デバッグ設定が含まれているdc27_badge LinkServer Debug.launchファイルをダブルクリックし、GUI Flash Tool->Programに移動してプログラムを設定します(最初に一括消去します)。

pastedImage_20.png

ARM-GCC の使用を開始するには、次のようにします。

これを簡単にするには、まずNXPのWebサイトから最新のSDKをダウンロードする必要があります。

環境をセットアップしてHello Worldでテストする方法については、 MCUXpresso SDKユーザーガイド のセクション6の指示に従ってください。その後、そのプロジェクトを使用して、バッジのソースコードをにコピーできます。誰かがバッジ専用のMakefileをまとめることができると確信しています。

この一連のブログ記事を参照してください Linuxでarm-gccを使用してSDKを使用(コンパイル/デバッグ)する方法について。

バッジが機能しません:

最初に試すことは、バッテリーをそっとこじ開けて(バターナイフなどで)バッジの電源を入れ直し、元に戻すことです。いくつかのことが起こる可能性があります。

  • 何も起こらない場合は、バッテリーが切れている可能性があります。バッテリーを交換してみてください。
  • それでも何も起こらない場合は、バッテリーホルダーが緩んでいる可能性があります。マルチメータを使用して、シリアルヘッダーのGNDとVCCの間の電圧を測定すると、1.8Vを読み取る必要があります。そうでない場合は、バッテリーホルダーを確認してください。
  • ビープ音が鳴り、6つのLEDがすべて点灯し、4つのLED(両側に2つずつ)が数回同期して点滅する場合は、NFMIデバイスとの通信に問題があったことを意味します。これは、チップの1つのはんだ接合部が緩んでいるか、I2Cプルアップ抵抗(ピン配列画像のSCLとSDA)が原因である可能性があります。機器がある場合はリフローを行うこともできますが、修理できない場合があります。また、これらの SCL/SDA ピンで I2C 通信が見られるかどうかも確認できます。
  • 通常の起動ビープ音が鳴り、ライトが点滅し、その後起動ビープ音に戻るなど、永遠に、何かがMCUをリセットし続ける原因となっています。ショートまたはESDによる損傷の可能性があります。はんだ付けを確認してください。ボードをシリアル端子に接続し、ブートプロセスでどこまで進むかを確認して、原因を絞り込むのに役立ちます。
  • フラグが正しく保存されないことがあります。通常、電源の入れ直しは機能し、バッジを再点滅させてみることもできます。
  • バッジが NFMI の他のバッジに反応しない場合は、次の 2 つのいずれかが原因である可能性があります。
    • 銅線アンテナが緩んでいる/壊れている/欠落している。これはよく起こりました。はんだ付けし直します。行方不明の場合は、SunlordのMTNF6040FS3R7JTFY01ですが、現時点ではオンラインでは入手できません。データシートはこちら 参照してください この投稿 可能な代替案の詳細については、こちらをご覧ください。
    • 投稿画像
    • 以前にインタラクティブモードにあった場合、再度パケットを受信するには、Ctrl+Xで明示的に終了する必要があります。


さらなるハッキング:

コードの基本的なハッキングについては、ゲームのフラグを変更して、完全にロック解除されたバッジを与えるように操作してみてください。そこから、他の人がやったように、自分だけのカメレオンバッジを作ってみることができます(https://github.com/japd06/defcon27_badge そして https://github.com/nkaminski/DC27-badge-CFW と https://github.com/NickEngmann/Jackp0t あなたがアイデアが欲しいなら、とりわけ)。または、ピエゾで自分だけの曲を作りましょう。または、端末上のASCIIアート。

バッジのより高度なハッキングのために、PTE22およびPTE23、シリアルヘッダーのTXおよびRXピンを、代わりにADC入力ピンとしてプログラムできます。または、PWMまたは入力キャプチャ用のタイマー入力または出力。

pastedImage_26.png

また、はんだ付けがうまくいけば、抵抗点にはんだ付けすることでI2Cデバイスを追加することもできます。t.

pastedImage_4.png 

最後に、組み込み開発を探求するためのより柔軟なプラットフォームが必要な場合は、バッジと同じチップを搭載したFRDM-KL27Z devキットを20ドルで手に入れることができます。直接購入することも、すべての主要なディストリビューターをオンラインで購入することもできます。プログラマとシリアルインターフェースはボードに組み込まれているため、USBケーブルを使用するだけですべてのプログラミングを行うことができます。KL27 SDKには、チップのすべての機能の使用方法を示す多数のサンプルプログラムも含まれており、いくつかの入門ビデオがあります (ただし、主にこの投稿ですでに説明した内容です)。NFMIチップは搭載されていませんが、USBサポートとArduinoハードウェアフットプリントを備えているため、追加のボードで簡単に拡張できます。サンプルプログラムは、クイックスタートパネルウィンドウから[SDKサンプルのインポート]に移動すると見つかります

バッジについて他に質問がある場合は、回答を投稿してください!

日時:DEFCON27バッジ - はじめに <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

MCUXpresso IDE 11にはシリアル端末機能が含まれているため、PuTTYまたはTeratermをダウンロードする必要さえありませんSmiley Happy

デフォルトのレイアウトでは、インストールされているSDK、コンソールなどとグループ化されています。

pastedImage_2.png

端末アイコン(下の黄色で強調表示)をクリックし、[シリアル端末]を選択します。

pastedImage_3.png

et voila!

标记 (1)
无评分
版本历史
最后更新:
‎01-05-2026 05:33 AM
更新人: