如何使用binwalk提取文件系統(tǒng)

小樊
133
2024-09-12 07:36:55

Binwalk 是一個(gè)用于分析、提取和逆向工程固件文件的工具

  1. 安裝 Binwalk: 在 Ubuntu 或 Debian 系統(tǒng)上,可以使用以下命令安裝 Binwalk:

    sudo apt-get update
    sudo apt-get install binwalk
    

    對(duì)于其他操作系統(tǒng),請(qǐng)參考 Binwalk 的官方文檔(https://github.com/ReFirmLabs/binwalk)。

  2. 分析固件文件: 首先,使用 Binwalk 分析固件文件以查找文件系統(tǒng)和其他有趣的信息。運(yùn)行以下命令:

    binwalk <firmware_file>
    

    <firmware_file> 替換為你要分析的固件文件名。

  3. 提取文件系統(tǒng): 根據(jù) Binwalk 的輸出結(jié)果,找到文件系統(tǒng)的偏移量。例如,如果 Binwalk 輸出了以下內(nèi)容:

    DECIMAL       HEXADECIMAL     DESCRIPTION
    --------------------------------------------------------------------------------
    0             0x0             LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, uncompressed size: 798416 bytes
    1468032       0x170000        Squashfs filesystem, little endian, version 4.0, compression: xz, size: 1468032 bytes, 317 inodes, blocksize: 131072 bytes, created: 2021-01-01 00:00:00
    

    從上面的輸出中,我們可以看到 Squashfs 文件系統(tǒng)的偏移量為 0x170000。

  4. 使用 dd 命令提取文件系統(tǒng): 現(xiàn)在我們知道了文件系統(tǒng)的偏移量,可以使用 dd 命令將其提取到單獨(dú)的文件中。運(yùn)行以下命令:

    dd if=<firmware_file> of=<output_file> bs=1 skip=<offset>
    

    <firmware_file> 替換為你要分析的固件文件名,<output_file> 替換為你想要保存提取的文件系統(tǒng)的文件名,<offset> 替換為文件系統(tǒng)的偏移量(不要忘記將偏移量轉(zhuǎn)換為十進(jìn)制)。例如:

    dd if=firmware.bin of=filesystem.squashfs bs=1 skip=1468032
    
  5. 解壓文件系統(tǒng): 最后,使用 unsquashfs(如果你已經(jīng)安裝了 squashfs-tools 包)或其他適當(dāng)?shù)墓ぞ呓鈮禾崛〉奈募到y(tǒng)文件。運(yùn)行以下命令:

    sudo apt-get install squashfs-tools
    unsquashfs<output_file>
    

    將<output_file>` 替換為你在上一步中保存的文件系統(tǒng)文件名。這將在當(dāng)前目錄下創(chuàng)建一個(gè)名為 “squashfs-root” 的文件夾,其中包含文件系統(tǒng)的內(nèi)容。

現(xiàn)在你已經(jīng)成功地使用 Binwalk 提取了文件系統(tǒng),并可以對(duì)其進(jìn)行進(jìn)一步的分析和研究。

0