Translated ['todo/hardware-hacking/uart.md'] to jp

This commit is contained in:
Translator 2024-04-11 01:01:06 +00:00
parent 9a27b12bf9
commit 67396ed34c

View file

@ -8,9 +8,9 @@ HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details>
@ -18,9 +18,9 @@ HackTricksをサポートする他の方法
UARTはシリアルプロトコルであり、コンポーネント間でデータを1ビットずつ転送します。一方、並列通信プロトコルは複数のチャネルを通じてデータを同時に送信します。一般的なシリアルプロトコルにはRS-232、I2C、SPI、CAN、Ethernet、HDMI、PCI Express、USBなどがあります。
一般的に、UARTがアイドル状態にあるときは、ラインは高い論理1の値に保持されます。次に、データ転送の開始を示すために、送信機が開始ビットを受信機に送信します。この間、信号は低い論理0の値に保持されます。次に、送信機は実際のメッセージを含む5〜8ビットのデータビットを送信し、オプションのパリティビットと1または2ビットのストップビット論理1の値が続きます。エラーチェックに使用されるパリティビットは実際にはほとんど見られません。ストップビットまたはビットは送信の終わりを示します。
一般的に、UARTがアイドル状態にあるときは、ラインは高い論理1の値に保持されます。次に、データ転送の開始を示すために、送信機が開始ビットを受信機に送信します。この間、信号は低い論理0の値に保持されます。次に、送信機は実際のメッセージを含む5〜8ビットのデータビットを送信し、オプションのパリティビットと1または2のストップビット論理1の値が続きます。エラーチェックに使用されるパリティビットは実際にはほとんど見られません。ストップビットまたはビットは送信の終を示します。
最も一般的な構成を8N1と呼びます8ビットのデータ、パリティなし、1ビットのストップビット。たとえば、8N1 UART構成で文字C、またはASCIIで0x43を送信したい場合、次のビットを送信します0開始ビット0、1、0、0、0、0、1、1バイナリで0x43の値、および0ストップビット
最も一般的な構成を8N1と呼びます8つのデータビット、パリティなし、1つのストップビット。たとえば、8N1 UART構成で文字C、またはASCIIで0x43を送信したい場合、次のビットを送信します0開始ビット0、1、0、0、0、0、1、1バイナリで0x43の値、および0ストップビット
![](<../../.gitbook/assets/image (761).png>)
@ -32,22 +32,22 @@ UARTと通信するためのハードウェアツール
### UARTポートの識別
UARTには**TX**(送信)、**RX**(受信)、**Vcc**(電圧)、**GND**(グラウンド)の4つのポートがあります。PCBに**`TX`**と**`RX`**の文字が**書かれている**4つのポートを見つけることができるかもしれません。ただし、明確な表示がない場合は、**マルチメーター**または**ロジックアナライザー**を使用して自分で見つける必要があるかもしれません。
UARTには4つのポートがあります**TX**(送信)、**RX**(受信)、**Vcc**(電圧)、および**GND**グラウンド。PCBに**`TX`**と**`RX`**の文字が**書かれている**4つのポートを見つけることができるかもしれません。ただし、明確な表示がない場合は、**マルチメーター**または**ロジックアナライザー**を使用して自分で見つける必要があるかもしれません。
**マルチメーター**とデバイスの電源を切った状態で:
- **GND**ピンを特定するには、**連続性テスト**モードを使用し、バックリードをグラウンドに置き、赤いリードでテストして、マルチメーターから音が聞こえるまで確認します。複数のGNDピンがPCB上に見つかる場合があるため、UARTに属するピンを見つけたり見つけなかったりするかもしれません。
- **VCCポート**を特定するには、**DC電圧モード**を設定し、20Vの電圧に設定します。黒いプローブをグラウンドに、赤いプローブをピンに置きます。デバイスの電源を入れます。マルチメーターが3.3Vまたは5Vの電圧を測定した場合、Vccピンを見つけました。他の電圧が表示される場合は、他のポートで再試行してください。
- **TX** **ポート**を特定するには、**DC電圧モード**を20Vの電圧に設定し、黒いプローブをグラウンドに、赤いプローブをピンに置き、デバイスの電源を入れます。電源を入れると、一時的に電圧が変動し、その後Vccの値に安定する場合、おそらくTXポートを見つけたと思われます。これは、電源を入れると、いくつかのデバッグデータが送信されるためです。
- **RXポート**は他の3つに最も近いものであり、UARTピンの中で最も低い電圧変動と最も低い全体的な値を持っています。
- **GND**ピンを特定するには、**連続性テスト**モードを使用し、バックリードをグラウンドに置き、赤いリードでテストして、マルチメーターから音が聞こえるまで試してください。複数のGNDピンがPCB上に見つかる場合がありますので、UARTに属するピンを見つけたかどうかはわかりません。
- **VCCポート**を特定するには、**DC電圧モード**を設定し、電圧を20Vに設定します。黒いプローブをグラウンドに、赤いプローブをピンに置きます。デバイスの電源を入れます。マルチメーターが3.3Vまたは5Vの一定の電圧を測定した場合、Vccピンを見つけました。他の電圧が表示される場合は、他のポートで再試行してください。
- **TX** **ポート**を特定するには、**DC電圧モード**を20Vの電圧に設定し、黒いプローブをグラウンドに、赤いプローブをピンに置き、デバイスの電源を入れます。電源を入れると、一部のデバッグデータが送信されるため、数秒間電圧が変動し、その後Vcc値に安定する場合、おそらくTXポートを見つけました。これは、電源を入れると、一部のデバッグデータが送信されるためです。
- **RXポート**は他の3つに最も近いポートであり、UARTピンの中で最も低い電圧変動と最も低い全体値を持っています。
TXとRXポートを混同しても何も起こりませんが、GNDとVCCポートを混同すると回路を焼き切る可能性があります。
一部のターゲットデバイスでは、製造元によってUARTポートが無効にされている場合があります。その場合、基板内の接続を追跡し、いくつかのブレイクアウトポイントを見つけることが役立ちます。UARTの検出がないことと回路の切断を確認する強力なヒントは、デバイスの保証を確認することです。デバイスが保証付きで出荷された場合、製造元はいくつかのデバッグインターフェイスこの場合はUARTを残し、したがってUARTを切断し、デバッグ中に再接続する必要があります。これらのブレイクアウトピンは、はんだ付けまたはジャンパーワイヤーで接続できます。
一部のターゲットデバイスでは、製造元によってUARTポートが無効にされている場合があります。その場合、基板内の接続を追跡し、いくつかのブレイクアウトポイントを見つけることが役立ちます。UARTの検出がないことと回路の切断を確認する強力なヒントは、デバイスの保証を確認することです。デバイスが保証付きで出荷された場合、製造元はいくつかのデバッグインターフェースこの場合はUARTを残しており、デバッグ中にUARTを切断し、再度接続する必要があります。これらのブレイクアウトピンは、はんだ付けまたはジャンパーワイヤーで接続できます。
### UARTボーレートの特定
### UARTボーレートの識別
正しいボーレートを特定する最も簡単な方法は、**TXピンの出力を見てデータを読み取ろうとする**ことです。受信したデータが読み取れない場合は、データが読み取れるまで次の可能なボーレートに切り替えてください。これにはUSBシリアルアダプタやBus Pirateなどの多目的デバイスと、[baudrate.py](https://github.com/devttys0/baudrate/)などのヘルパースクリプトが必要です。最も一般的なボーレートは9600、38400、19200、57600、115200です。
正しいボーレートを特定する最も簡単な方法は、**TXピンの出力を見てデータを読み取ろうとする**ことです。受信したデータが読み取れない場合は、データが読み取れるまで次の可能なボーレートに切り替えてください。これにはUSBシリアルアダプタやBus Pirateなどの多目的デバイスと、[baudrate.py](https://github.com/devttys0/baudrate/)などのヘルパースクリプトが必要です。最も一般的なボーレートは9600、38400、19200、57600、115200です。
{% hint style="danger" %}
このプロトコルでは、1つのデバイスのTXを他のデバイスのRXに接続する必要があることに注意してください
@ -79,13 +79,13 @@ minicom -s
UARTシリアルからUSBアダプタが利用できない場合、Arduino UNO R3をクイックハックとして使用できます。通常、どこでも入手可能なArduino UNO R3を使用することで、多くの時間を節約できます。
Arduino UNO R3には、ボード自体にUSBからシリアルへのアダプタが内蔵されています。UART接続を取得するには、ボードからAtmel 328pマイクロコントローラチップを抜き取るだけです。このハックは、Atmel 328pがボードにはんだ付けされていないArduino UNO R3バリアントで機能しますSMDバージョンが使用されています。ArduinoのRXピンデジタルピン0をUARTインターフェースのTXピンに接続し、ArduinoのTXピンデジタルピン1をUARTインターフェースのRXピンに接続します。
Arduino UNO R3には、ボード自体にUSBからシリアルへのアダプタが内蔵されています。UART接続を取得するには、ボードからAtmel 328pマイクロコントローラチップを抜き取るだけです。このハックは、Atmel 328pがボードにはんだ付けされていないArduino UNO R3バリアントで機能しますSMDバージョンが使用されています。ArduinoのRXピンデジタルピン0をUARTインターフェースのTXピンに、ArduinoのTXピンデジタルピン1をUARTインターフェースのRXピンに接続します。
最後に、UARTインターフェースに応じてボーレートを設定し、Arduino IDEを使用してシリアルコンソールを取得することをお勧めします。
最後に、UARTインターフェースに応じてボーレートを設定し、Arduino IDEを使用することをお勧めします。
## Bus Pirate
このシナリオでは、プログラムのすべての出力をシリアルモニタに送信しているArduinoのUART通信をスニッフすることになります。
このシナリオでは、プログラムのすべての印刷物をシリアルモニタに送信しているArduinoのUART通信をスニッフすることになります。
```bash
# Check the modes
UART>m
@ -157,16 +157,42 @@ Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....
```
## UARTコンソールを使用してファームウェアをダンプする
UARTコンソールは、ランタイム環境で基礎ファームウェアを操作するための優れた方法を提供します。ただし、UARTコンソールアクセスが読み取り専用の場合、多くの制約が発生する可能性があります。多くの組み込みデバイスでは、ファームウェアはEEPROMに保存され、揮発性メモリを持つプロセッサで実行されます。したがって、ファームウェアは読み取り専用のまま保持されます。製造時の元のファームウェアはEEPROM自体にあり、新しいファイルは揮発性メモリのため失われる可能性があるためです。そのため、組み込みファームウェアを操作する際にファームウェアをダンプすることは貴重な取り組みです。
これを行うための多くの方法があり、SPIセクションではさまざまなデバイスからファームウェアを直接EEPROMから抽出する方法が説明されています。ただし、物理デバイスや外部インタラクションを使用してファームウェアをダンプする前に、まずUARTを使用してファームウェアをダンプすることが推奨されています。
UARTコンソールからファームウェアをダンプするには、まずブートローダにアクセスする必要があります。多くの人気ベンダーはLinuxをロードするために<u>uboot</u>Universal Bootloaderを使用しているため、<u>uboot</u>にアクセスすることが必要です。
<u>boot</u>ブートローダにアクセスするには、UARTポートをコンピュータに接続し、任意のシリアルコンソールツールを使用し、デバイスへの電源供給を切断します。セットアップが準備できたら、Enterキーを押して押し続けます。最後に、デバイスに電源を接続してブートさせます。
これにより、<u>uboot</u>のロードが中断され、メニューが表示されます。 <u>uboot</u>コマンドを理解し、ヘルプメニューを使用してそれらをリストすることが推奨されます。これはおそらく`help`コマンドになるでしょう。異なるベンダーが異なる構成を使用しているため、それぞれを個別に理解する必要があります。
通常、ファームウェアをダンプするコマンドは次のとおりです:
```
md
```
which stands for "memory dump". This will dump the memory (EEPROM Content) on the screen. It is recommended to log the Serial Console output before starting the proceedure to capture the memory dump.
Finally, just strip out all the unnecessary data from the log file and store the file as `filename.rom` and use binwalk to extract the contents:
```
binwalk -e <filename.rom>
```
これは、hexファイルで見つかったシグネチャに基づいて、EEPROMからの可能なコンテンツをリストします。
ただし、使用されている場合でも、<b>uboot</b>がアンロックされているとは限らないことに注意する必要があります。Enterキーが機能しない場合は、Spaceキーなどの異なるキーをチェックしてください。ブートローダーがロックされており中断されない場合、この方法は機能しません。デバイスのブート時にUARTコンソールの出力をチェックして、<b>uboot</b>が言及されているかどうかを確認してください。起動時に<b>uboot</b>が言及されるかもしれません。
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見してください
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**してください。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
</details>