Search code examples
linuxlinux-kernelembedded-linuxrouterfirmware

Find linux kernel version of a router firmware from the filesystem


I've downloaded the file DAP2690-firmware-v101-rc019.bin (link) which is a firmware update to some D-Link router.

I've extracted it using binwalk -e DAP2690-firmware-v101-rc019.bin (Binwalk v1.2b) and now I have the root filesystem in the folder squashfs-root.

I'd like to know the linux kernel version of this firmware only from the extracted files (preferably only from the folder squashfs-root).

How can I do this?


Solution

  • Along side the squashfs-root folder there was a A0 file.

    binwalk A0 revealed:

     DECIMAL    HEX         DESCRIPTION
        -------------------------------------------------------------------------------------------------------------------
        0           0x0         ELF 64-bit MSB MIPS32 rel2 executable, MIPS, version 1 (SYSV)
        2969600     0x2D5000    Linux kernel version "2.6.16.26-Cavium-Octeon (william@J10) (gcc version 4.1.1 (Cavium@J10) (gcc version 4.1.1 (Cavium Networks Development Build)) "
        2991185     0x2DA451    LZMA compressed data, properties: 0x40, dictionary size: 2097152 bytes, uncompressed size: 2097216 bytes
        3329399     0x32CD77    LZMA compressed data, properties: 0x40, dictionary size: 16777216 bytes, uncompressed size: 1073741824 bytes
        3429479     0x345467    LZMA compressed data, properties: 0x40, dictionary size: 33554432 bytes, uncompressed size: 131072 bytes
        3429503     0x34547F    LZMA compressed data, properties: 0x40, dictionary size: 33554432 bytes, uncompressed size: 131072 bytes
        3429527     0x345497    LZMA compressed data, properties: 0x40, dictionary size: 33554432 bytes, uncompressed size: 131072 bytes
        3504750     0x357A6E    LZMA compressed data, properties: 0x5B, dictionary size: 16777216 bytes, uncompressed size: 88 bytes
        3915776     0x3BC000    gzip compressed data, from Unix, last modified: Thu Mar 11 16:11:03 2010, max compression