HackTheBox Writeup：Debugging Interface

# はじめに
本記事はHackTheBoxのWriteupです。

ChallengesのDebugging Interface、DifficultiesはVery Easyです。

このChallengeでは、Hardwareのプロトコルを解析するための方法について学ぶことができます。

## Debugging Interface
はじめにファイルをダウンロードします。

### 表層解析
ダウンロードした`Debugging Interface.zip`ファイルを調査するにあたって、zipファイルを展開します。

unzipコマンドでファイルを展開すると、見慣れない拡張子を持つ`debugging_interface_signal.sal`ファイルが確認できます。

```console
Archive:  Debugging Interface.zip
[Debugging Interface.zip] debugging_interface_signal.sal password: 
  inflating: debugging_interface_signal.sal 
```

`debugging_interface_signal.sal`ファイルに対して、fileコマンドを実行した結果は以下の通りです。

```console
debugging_interface_signal.sal: Zip archive data, at least v2.0 to extract, compression method=deflate
```

fileコマンドの実行結果を踏まえて、binwalkコマンドを実行して中身を確認します。

`$ binwalk -e debugging_interface_signal.sal`

```console
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, name: digital-0.bin
5390          0x150E          Zip archive data, at least v2.0 to extract, name: meta.json
9675          0x25CB          End of Zip archive, footer length: 22
```

展開された`_debugging_interface_signal.sal.extracted/`ディレクトリ配下を確認すると以下のファイルが抽出できました。それぞれ確認します。

```console
åè¨ 64
-rw-r--r-- 1 kali kali  9697  4æ  9 20:11 0.zip
-rw-r--r-- 1 kali kali 22090  3æ 23  2021 digital-0.bin
-rw-r--r-- 1 kali kali 27810  3æ 23  2021 meta.json
```

`digital-0.bin`ファイルは、バイナリファイルになるため、stringsコマンドで中身を確認すると以下の様な文字列が複数確認できます。

```console
<SALEAE>
ffffff
~L@Y
L@LALALAL@LALAY
LAL@LAL@Y
LALALAL@LALAeDeDLAL@LALALAL@eEL@LALALA@
	LAY
LAL@LA~HLAL@LALAY
L@LAeDLALAeDL@LBL@LAY
LALAY
```

`meta.json`ファイルは、jsonファイルになるため、jqコマンドを組み合わせて実行すると以下の様なデータが確認できました。

```json
{
  "version": 12,
  "data": {
    "renderViewState": {
      "leftEdgeTimeSec": 2.220446049250313E-16,
      "timeSecPerPixel": 0.001978117224489796,
      "analogChannelViewStates": [
        {
          "index": 0,
          "type": "Analog",
          "stripchart": {
            "viewportCenterValue": 2.5,
            "scalePerPixel": 0.0625
          }
        },
        {
          "index": 1,
          "type": "Analog",
          "stripchart": {
            "viewportCenterValue": 2.5,
            "scalePerPixel": 0.0625
          }
        },
        {
          "index": 2,
          "type": "Analog",
          "stripchart": {
            "viewportCenterValue": 2.5,
            "scalePerPixel": 0.0625
          }
        },
```

### SALEAE
Googleで`digital-0.bin`ファイルから確認できた`<SALEAE>`の単語を検索します。

![スクリーンショット 2024-04-09 20.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/6caa8c50-38b9-a9ec-8f06-92854f9e71ca.png)

検索結果を踏まえて、一番上に表示されている[Saleae Logic Analyzers](https://www.saleae.com/)のサイトにアクセスします。

![スクリーンショット 2024-04-09 20.20.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/6dfc015e-1626-af7b-b5bb-7c7b47152ae6.png)

このサイトに載っているLogic 2というアプリケーションは、SPI、I2C、シリアルなどのプロトコルをデコードするためのソフトウェアであることが分かりました。ダウンロードページからダウンロードして、インストールします。

![スクリーンショット 2024-04-09 20.53.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/539750b5-f61c-40b5-2623-6527f1bc7989.png)

Logic 2のアプリケーションを起動後、`debugging_interface_signal.sal`ファイルを選択して開きます。

![スクリーンショット 2024-04-09 21.12.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/0b0155de-1396-ee56-156e-f056886091e3.png)

以下の様な画面が表示されます。

![スクリーンショット 2024-04-09 21.13.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/de8c213d-a3a0-75da-f188-440ff9074b00.png)

画面上部のグラフを拡大して表示すると、ビットレートが確認できます。また、グラフの上にマウスを乗せると、マイクロ秒の単位として32.02µsの数字が表示されます。

![スクリーンショット 2024-04-09 21.21.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/a92ca203-841a-728e-be64-613b8eda96de.png)

Challengeの説明から非同期シリアルであることが分かるため、AnalyzersはAsync Serialを選択して、以下の様にinput ChannelとBit Rate（1000000/32.02 = 31230）をそれぞれ設定します。

![スクリーンショット 2024-04-09 21.14.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/e2c31815-dcf3-1efe-7804-d439e9135977.png)

画面右下にDataが表示されます。

![スクリーンショット 2024-04-09 21.24.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/669ca690-4bec-f559-611b-abbfe8e22ac2.png)

平文で読むためには、Terminalボタンを押します。最後のデータを確認すると、フラグが見つかりました。

![スクリーンショット 2024-04-09 21.25.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/555b95e2-ef04-ded5-f849-180aafc1c7d1.png)

# おわりに
新しい発見があった面白いChallengeでした。