เชฌเชฟเชจเชตเซ‰เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชนเซ‹เชฎ เชฐเชพเช‰เชŸเชฐเชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เช•เชฐเซ‹. เชถเซเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹ เช›เซ‹?

เชฌเชฟเชจเชตเซ‰เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชนเซ‹เชฎ เชฐเชพเช‰เชŸเชฐเชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เช•เชฐเซ‹. เชถเซเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹ เช›เซ‹?

เชฅเซ‹เชกเชพ เชฆเชฟเชตเชธเซ‹ เชชเชนเซ‡เชฒเชพ, เชฎเซ‡เช‚ เชฌเชฟเชจเชตเซ‹เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐเชจเชพ เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚.

เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช–เชฐเซ€เชฆเซ€ เชŸเซ€เชชเซ€-เชฒเชฟเช‚เช• เช†เชฐเซเชšเชฐ C7 เชนเซ‹เชฎ เชฐเชพเช‰เชŸเชฐ. เชถเซเชฐเซ‡เชทเซเช  เชฐเชพเช‰เชŸเชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡.

เชฆเชฐ เชตเช–เชคเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชจเชตเซเช‚ เชฐเชพเช‰เชŸเชฐ เช–เชฐเซ€เชฆเซเช‚ เช›เซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเช‚ เช›เซเช‚ เช“เชชเชจ เชกเชฌเชฒเซเชฏเซเช†เชฐเชŸเซ€. เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡? เชเช• เชจเชฟเชฏเชฎ เชคเชฐเซ€เช•เซ‡, เช‰เชคเซเชชเชพเชฆเช•เซ‹ เชคเซ‡เชฎเชจเชพ เชฐเชพเช‰เชŸเชฐเซเชธเชจเซ‡ เชŸเซ‡เช•เซ‹ เช†เชชเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เช•เชพเชณเชœเซ€ เชฒเซ‡เชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชธเชฎเชฏ เชœเชคเชพเช‚ เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชœเซ‚เชจเซเช‚ เชฅเชˆ เชœเชพเชฏ เช›เซ‡, เชจเชฌเชณเชพเชˆเช“ เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชคเชฎเชจเซ‡ เชตเชฟเชšเชพเชฐ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชนเซเช‚ OpenWRT เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚, เชœเซ‡ เช“เชชเชจ-เชธเซ‹เชฐเซเชธ เชธเชฎเซเชฆเชพเชฏ เชฆเซเชตเชพเชฐเชพ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡.

OpenWRT เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชนเซเช‚ เชชเชฃ เชจเชตเซ€เชจเชคเชฎ เชซเชฐเซเชฎเชตเซ‡เชฐ เช›เชฌเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐเชฅเซ€ เชฎเชพเชฐเชพ เชจเชตเชพ เช†เชฐเซเชšเชฐ C7 เชนเซ‡เช เชณ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชซเช•เซเชค เช†เชจเช‚เชฆ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เชฌเชฟเชจเชตเซ‰เช• เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ‹.

เชฌเชฟเชจเชตเซ‹เช• เชถเซเช‚ เช›เซ‡?

เชฌเชฟเชจเชตเซ‹เช• เชตเชฟเชถเซเชฒเซ‡เชทเชฃ, เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เช…เชจเซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐ เชˆเชฎเซ‡เชœ เชเช•เซเชธเซเชŸเซเชฐเช•เซเชถเชจ เชฎเชพเชŸเซ‡เชจเซเช‚ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชŸเซ‚เชฒ เช›เซ‡.

เช•เซเชฐเซ‡เช— เชนเซ‡เชซเชจเชฐ เชฆเซเชตเชพเชฐเชพ 2010 เชฎเชพเช‚ เชฌเชจเชพเชตเซ‡เชฒ, binwalk เชซเชฐเซเชฎเชตเซ‡เชฐ เชˆเชฎเซ‡เชœเซ€เชธเชจเซ‡ เชธเซเช•เซ‡เชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเชพเชˆเชฒเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‡ เช›เซ‡, เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎ เชˆเชฎเซ‡เชœเซ€เชธ, เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช•เซ‹เชก, เช•เซ‹เชฎเซเชชเซเชฐเซ‡เชธเซเชก เช†เชฐเซเช•เชพเชˆเชตเซเชธ, เชฌเซเชŸเชฒเซ‹เชกเชฐ เช…เชจเซ‡ เช•เชฐเซเชจเชฒ, เชซเชพเช‡เชฒ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชœเซ‡เชฎ เช•เซ‡ JPEG เช…เชจเซ‡ PDF เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เชถเซ‹เชงเซ€ เชถเช•เซ‡ เช›เซ‡.

เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ binwalk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชจเชฌเชณเชพเชˆเช“ เชฎเชพเชŸเซ‡ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชซเชพเช‡เชฒเซ‹ เชถเซ‹เชงเซ‹, เชซเชพเช‡เชฒเซ‹ เชฌเชนเชพเชฐ เช•เชพเชขเซ‹ เช…เชจเซ‡ เชฌเซ‡เช•เชกเซ‹เชฐ เช…เชฅเชตเชพ เชกเชฟเชœเชฟเชŸเชฒ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเชพเชŸเซ‡ เชœเซเช“. เชคเชฎเซ‡ เชชเชฃ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ opcodes เชตเชฟเชตเชฟเชง CPU เชจเชพ เชธเชฎเซ‚เชน เชฎเชพเชŸเซ‡.

เชคเชฎเซ‡ เชšเซ‹เช•เซเช•เชธ เชชเชพเชธเชตเชฐเซเชก เชซเชพเช‡เชฒเซ‹ (passwd, เชถเซ‡เชกเซ‹, เชตเช—เซ‡เชฐเซ‡) เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เช‡เชฎเซ‡เชœ เช•เชพเชขเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เชนเซ‡เชถ เชคเซ‹เชกเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเซ‡ เชฌเซ‡ เช…เชฅเชตเชพ เชตเชงเซ เชซเชพเช‡เชฒเซ‹ เชตเชšเซเชšเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชชเชพเชฐเซเชธเชฟเช‚เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเซ‡ เชธเช‚เช•เซเชšเชฟเชค เชกเซ‡เชŸเชพ เช…เชฅเชตเชพ เชเชจเซเช•เซ‹เชกเซ‡เชก เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เช•เซ€เช“ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชชเชฐ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เชฌเชงเซเช‚ เชธเซเชฐเซ‹เชค เช•เซ‹เชกเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชตเช—เชฐ.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชคเชฎเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เชคเซ‡ เชฌเชงเซเช‚ เชคเซเชฏเชพเช‚ เช›เซ‡ :)

เชฌเชฟเชจเชตเซ‹เช• เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡?

เชฌเชฟเชจเชตเซ‹เช•เชจเซ€ เชฎเซเช–เซเชฏ เชตเชฟเชถเซ‡เชทเชคเชพ เชคเซ‡เชจเซเช‚ เชธเชฟเช—เซเชจเซ‡เชšเชฐ เชธเซเช•เซ‡เชจเชฟเช‚เช— เช›เซ‡. Binwalk เชตเชฟเชตเชฟเชง เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชซเชพเช‡เชฒ เชชเซเชฐเช•เชพเชฐเซ‹ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐ เช‡เชฎเซ‡เชœเชจเซ‡ เชธเซเช•เซ‡เชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชถเซเช‚ เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชœเชพเชฃเซ‹ เช›เซ‹ file?

file /bin/bash
/bin/bash: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=12f73d7a8e226c663034529c8dd20efec22dde54, stripped

เชŸเซ€เชฎ fileเชซเชพเช‡เชฒ เชนเซ‡เชกเชฐ เชœเซเช เช›เซ‡ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชชเซเชฐเช•เชพเชฐ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชนเซ€ (เชฎเซ‡เชœเชฟเช• เชจเช‚เชฌเชฐ) เชฎเชพเชŸเซ‡ เชœเซเช เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชซเชพเช‡เชฒ เชฌเชพเชˆเชŸเชจเชพ เช•เซเชฐเชฎเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A, เชคเซ‡ เชœเชพเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ PNG เชซเชพเช‡เชฒ เช›เซ‡. เชšเชพเชฒเซ เชตเชฟเช•เชฟเชชเซ€เชกเชฟเชฏเชพ เชธเชพเชฎเชพเชจเซเชฏ เชซเชพเช‡เชฒ เชธเชนเซ€เช“เชจเซ€ เชธเซ‚เชšเชฟ เช›เซ‡.

เชฌเชฟเชจเชตเซ‹เช• เช เชœ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชซเช•เซเชค เชซเชพเช‡เชฒเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชœ เชธเชนเซ€เช“ เชœเซ‹เชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชฌเชฟเชจเชตเซ‹เช• เช†เช–เซ€ เชซเชพเช‡เชฒเชจเซ‡ เชธเซเช•เซ‡เชจ เช•เชฐเชถเซ‡. เชตเชงเซเชฎเชพเช‚, binwalk เช‡เชฎเซ‡เชœเชฎเชพเช‚ เชฎเชณเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเซ€ เชถเช•เซ‡ เช›เซ‡.

เชธเชพเชงเชจเซ‹ file ะธ binwalk เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ libmagic เชซเชพเช‡เชฒ เชธเชนเซ€เช“ เช“เชณเช–เชตเชพ เชฎเชพเชŸเซ‡. เชชเชฃ binwalk เชธเช‚เช•เซเชšเชฟเชค/เชเชฟเชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹, เชซเชฐเซเชฎเชตเซ‡เชฐ เชนเซ‡เชกเชฐเซเชธ, เชฒเชฟเชจเช•เซเชธ เช•เชฐเซเชจเชฒ, เชฌเซเชŸเชฒเซ‹เชกเชฐเซเชธ, เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎเซเชธ เชตเช—เซ‡เชฐเซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เช•เชธเซเชŸเชฎ เชฎเซ‡เชœเชฟเช• เชธเชฟเช—เซเชจเซ‡เชšเชฐเซเชธเชจเซ€ เชธเซ‚เชšเชฟเชจเซ‡ เชตเชงเซเชฎเชพเช‚ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชฅเซ‹เชกเซ€ เชฎเชœเชพ เช•เชฐเซ€เช?

เชฌเชฟเชจเชตเซ‹เช• เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ

Linux, OSX, FreeBSD เช…เชจเซ‡ Windows เชธเชนเชฟเชค เชฌเชนเซเชตเชฟเชง เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชชเชฐ เชฌเชฟเชจเชตเซ‹เช• เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡.

binwalk เชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹ เช…เชจเซ‡ เช…เชจเซเชธเชฐเซ‹ เชธเซเชฅเชพเชชเชจ เชธเซ‚เชšเชจเซ‹ เช…เชฅเชตเชพ เชเชกเชชเซ€ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

เชฌเชฟเชจเชตเซ‹เช•เชฎเชพเช‚ เช˜เชฃเชพเช‚ เชตเชฟเชตเชฟเชง เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช›เซ‡:

$ binwalk

Binwalk v2.2.0
Craig Heffner, ReFirmLabs
https://github.com/ReFirmLabs/binwalk

Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...

Signature Scan Options:
    -B, --signature              Scan target file(s) for common file signatures
    -R, --raw=<str>              Scan target file(s) for the specified sequence of bytes
    -A, --opcodes                Scan target file(s) for common executable opcode signatures
    -m, --magic=<file>           Specify a custom magic file to use
    -b, --dumb                   Disable smart signature keywords
    -I, --invalid                Show results marked as invalid
    -x, --exclude=<str>          Exclude results that match <str>
    -y, --include=<str>          Only show results that match <str>

Extraction Options:
    -e, --extract                Automatically extract known file types
    -D, --dd=<type:ext:cmd>      Extract <type> signatures, give the files an extension of <ext>, and execute <cmd>
    -M, --matryoshka             Recursively scan extracted files
    -d, --depth=<int>            Limit matryoshka recursion depth (default: 8 levels deep)
    -C, --directory=<str>        Extract files/folders to a custom directory (default: current working directory)
    -j, --size=<int>             Limit the size of each extracted file
    -n, --count=<int>            Limit the number of extracted files
    -r, --rm                     Delete carved files after extraction
    -z, --carve                  Carve data from files, but don't execute extraction utilities
    -V, --subdirs                Extract into sub-directories named by the offset

Entropy Options:
    -E, --entropy                Calculate file entropy
    -F, --fast                   Use faster, but less detailed, entropy analysis
    -J, --save                   Save plot as a PNG
    -Q, --nlegend                Omit the legend from the entropy plot graph
    -N, --nplot                  Do not generate an entropy plot graph
    -H, --high=<float>           Set the rising edge entropy trigger threshold (default: 0.95)
    -L, --low=<float>            Set the falling edge entropy trigger threshold (default: 0.85)

Binary Diffing Options:
    -W, --hexdump                Perform a hexdump / diff of a file or files
    -G, --green                  Only show lines containing bytes that are the same among all files
    -i, --red                    Only show lines containing bytes that are different among all files
    -U, --blue                   Only show lines containing bytes that are different among some files
    -u, --similar                Only display lines that are the same between all files
    -w, --terse                  Diff all files, but only display a hex dump of the first file

Raw Compression Options:
    -X, --deflate                Scan for raw deflate compression streams
    -Z, --lzma                   Scan for raw LZMA compression streams
    -P, --partial                Perform a superficial, but faster, scan
    -S, --stop                   Stop after the first result

General Options:
    -l, --length=<int>           Number of bytes to scan
    -o, --offset=<int>           Start scan at this file offset
    -O, --base=<int>             Add a base address to all printed offsets
    -K, --block=<int>            Set file block size
    -g, --swap=<int>             Reverse every n bytes before scanning
    -f, --log=<file>             Log results to file
    -c, --csv                    Log results to file in CSV format
    -t, --term                   Format output to fit the terminal window
    -q, --quiet                  Suppress output to stdout
    -v, --verbose                Enable verbose output
    -h, --help                   Show help output
    -a, --finclude=<str>         Only scan files whose names match this regex
    -p, --fexclude=<str>         Do not scan files whose names match this regex
    -s, --status=<int>           Enable the status server on the specified port

เช›เชฌเซ€ เชธเซเช•เซ‡เชจเชฟเช‚เช—

เชšเชพเชฒเซ‹ เช‡เชฎเซ‡เชœเชจเซ€ เช…เช‚เชฆเชฐ เชซเชพเช‡เชฒ เชธเชฟเช—เซเชจเซ‡เชšเชฐ เชถเซ‹เชงเซ€เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช (เชธเชพเช‡เชŸเชฎเชพเช‚เชฅเซ€ เช‡เชฎเซ‡เชœ เชŸเซ€เชชเซ€-เชฒเชฟเช‚เช•).

--signature เชชเชฐเชฟเชฎเชพเชฃ เชธเชพเชฅเซ‡ binwalk เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช:

$ binwalk --signature --term archer-c7.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
------------------------------------------------------------------------------------------
21876         0x5574          U-Boot version string, "U-Boot 1.1.4-g4480d5f9-dirty (May
                              20 2019 - 18:45:16)"
21940         0x55B4          CRC32 polynomial table, big endian
23232         0x5AC0          uImage header, header size: 64 bytes, header CRC:
                              0x386C2BD5, created: 2019-05-20 10:45:17, image size:
                              41162 bytes, Data Address: 0x80010000, Entry Point:
                              0x80010000, data CRC: 0xC9CD1E38, OS: Linux, CPU: MIPS,
                              image type: Firmware Image, compression type: lzma, image
                              name: "u-boot image"
23296         0x5B00          LZMA compressed data, properties: 0x5D, dictionary size:
                              8388608 bytes, uncompressed size: 97476 bytes
64968         0xFDC8          XML document, version: "1.0"
78448         0x13270         uImage header, header size: 64 bytes, header CRC:
                              0x78A267FF, created: 2019-07-26 07:46:14, image size:
                              1088500 bytes, Data Address: 0x80060000, Entry Point:
                              0x80060000, data CRC: 0xBB9D4F94, OS: Linux, CPU: MIPS,
                              image type: Multi-File Image, compression type: lzma,
                              image name: "MIPS OpenWrt Linux-3.3.8"
78520         0x132B8         LZMA compressed data, properties: 0x6D, dictionary size:
                              8388608 bytes, uncompressed size: 3164228 bytes
1167013       0x11CEA5        Squashfs filesystem, little endian, version 4.0,
                              compression:xz, size: 14388306 bytes, 2541 inodes,
                              blocksize: 65536 bytes, created: 2019-07-26 07:51:38
15555328      0xED5B00        gzip compressed data, from Unix, last modified: 2019-07-26
                              07:51:41

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช† เช›เชฌเซ€ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡.

เช›เชฌเซ€ เชตเชพเชชเชฐเซ‡ เช›เซ‡ เชธเชฌเชฎเชฐเซ€เชจ เชฌเซเชŸเชฒเซ‹เชกเชฐ เชคเชฐเซ€เช•เซ‡ (เช‡เชฎเซ‡เชœ เชนเซ‡เชกเชฐ เชชเชฐ 0x5AC0 เช…เชจเซ‡ เชชเชฐ เชธเช‚เช•เซเชšเชฟเชค เชฌเซเชŸเชฒเซ‹เชกเชฐ เช‡เชฎเซ‡เชœ 0x5B00). 0x13270 เชชเชฐเชจเชพ uImage เชนเซ‡เชกเชฐเชจเชพ เช†เชงเชพเชฐเซ‡, เช†เชชเชฃเซ‡ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ MIPS เช›เซ‡ เช…เชจเซ‡ Linux เช•เชฐเซเชจเชฒ เช†เชตเซƒเชคเซเชคเชฟ 3.3.8 เช›เซ‡. เช…เชจเซ‡ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชฎเชณเซ‡เชฒเซ€ เชคเชธเชตเซ€เชฐเชจเชพ เช†เชงเชพเชฐเซ‡ 0x11CEA5, เช†เชชเชฃเซ‡ เชคเซ‡ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช rootfs เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เช›เซ‡ squashfs.

เชšเชพเชฒเซ‹ เชนเชตเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซเชŸเชฒเซ‹เชกเชฐ (U-Boot) เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€เช dd:

$ dd if=archer-c7.bin of=u-boot.bin.lzma bs=1 skip=23296 count=41162
41162+0 records in
41162+0 records out
41162 bytes (41 kB, 40 KiB) copied, 0,0939608 s, 438 kB/s

LZMA เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‡เชฎเซ‡เชœ เชธเช‚เช•เซเชšเชฟเชค เชนเซ‹เชตเชพเชฅเซ€, เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เชกเชฟเช•เชฎเซเชชเซเชฐเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

$ unlzma u-boot.bin.lzma

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ U-Bot เช‡เชฎเซ‡เชœ เช›เซ‡:

$ ls -l u-boot.bin
-rw-rw-r-- 1 sprado sprado 97476 Fev  5 08:48 u-boot.bin

เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เชถเซ‹เชงเชตเชพ เชตเชฟเชถเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ bootargs?

$ strings u-boot.bin | grep bootargs
bootargs
bootargs=console=ttyS0,115200 board=AP152 rootfstype=squashfs init=/etc/preinit mtdparts=spi0.0:128k(factory-uboot),192k(u-boot),64k(ART),1536k(uImage),14464k@0x1e0000(rootfs) mem=128M

เชฏเซ-เชฌเซ‚เชŸ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชตเซ‡เชฐเซ€เชเชฌเชฒ bootargs Linux เช•เชฐเซเชจเชฒเชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเชธเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡. เช…เชจเซ‡ เช‰เชชเชฐเชฅเซ€, เช…เชฎเชจเซ‡ เช‰เชชเช•เชฐเชฃเชจเซ€ เชซเซเชฒเซ‡เชถ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชงเซ เชธเชพเชฐเซ€ เชธเชฎเชœ เช›เซ‡.

Linux เช•เชฐเซเชจเชฒ เชˆเชฎเซ‡เชœ เช•เชพเชขเชตเชพ เชตเชฟเชถเซ‡ เชถเซเช‚?

$ dd if=archer-c7.bin of=uImage bs=1 skip=78448 count=1088572
1088572+0 records in
1088572+0 records out
1088572 bytes (1,1 MB, 1,0 MiB) copied, 1,68628 s, 646 kB/s

เช…เชฎเซ‡ เชคเชชเชพเชธ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช›เชฌเซ€ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ file:

$ file uImage
uImage: u-boot legacy uImage, MIPS OpenWrt Linux-3.3.8, Linux/MIPS, Multi-File Image (lzma), 1088500 bytes, Fri Jul 26 07:46:14 2019, Load Address: 0x80060000, Entry Point: 0x80060000, Header CRC: 0x78A267FF, Data CRC: 0xBB9D4F94

uImage เชซเชพเช‡เชฒ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชนเซ‡เชกเชฐ เชธเชพเชฅเซ‡เชจเซ€ Linux เช•เชฐเซเชจเชฒ เช‡เชฎเซ‡เชœ เช›เซ‡. เช…เช‚เชคเชฟเชฎ Linux เช•เชฐเซเชจเชฒ เชˆเชฎเซ‡เชœ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เช† เชนเซ‡เชกเชฐเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€เช:

$ dd if=uImage of=Image.lzma bs=1 skip=72
1088500+0 records in
1088500+0 records out
1088500 bytes (1,1 MB, 1,0 MiB) copied, 1,65603 s, 657 kB/s

เช›เชฌเซ€ เชธเช‚เช•เซเชšเชฟเชค เช›เซ‡, เชคเซ‡เชฅเซ€ เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช…เชจเชชเซ…เช• เช•เชฐเซ€เช:

$ unlzma Image.lzma

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ Linux เช•เชฐเซเชจเชฒ เช‡เชฎเซ‡เชœ เช›เซ‡:

$ ls -la Image
-rw-rw-r-- 1 sprado sprado 3164228 Fev  5 10:51 Image

เช•เชฐเซเชจเชฒ เชˆเชฎเซ‡เชœ เชธเชพเชฅเซ‡ เช†เชชเชฃเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ€เช? เช…เชฎเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช‡เชฎเซ‡เชœเชฎเชพเช‚ เชธเซเชŸเซเชฐเชฟเช‚เช— เชธเชฐเซเชš เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช…เชจเซ‡ Linux เช•เชฐเซเชจเชฒเชจเซเช‚ เชตเชฐเซเชเชจ เชถเซ‹เชงเซ€ เชถเช•เซ€เช เช›เซ€เช เช…เชจเซ‡ เช•เชฐเซเชจเชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชคเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเชฟเชถเซ‡ เชœเชพเชฃเซ€ เชถเช•เซ€เช เช›เซ€เช:

$ strings Image | grep "Linux version"
Linux version 3.3.8 (leo@leo-MS-7529) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Mon May 20 18:53:02 CST 2019

เชซเชฐเซเชฎเชตเซ‡เชฐ เช—เชฏเชพ เชตเชฐเซเชทเซ‡ (2019) เชฐเชฟเชฒเซ€เช เชฅเชฏเซเช‚ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชœเซ‡เชฎ เช•เซ‡ เชนเซเช‚ เช† เชฒเซ‡เช– เชฒเช–เซเช‚ เช›เซเช‚ เชคเซ‡ 3.3.8 เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชฏเซ‡เชฒ Linux เช•เชฐเซเชจเชฒ (2012) เชจเชพ เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ 4.6 เชฅเซ€ เชชเชฃ GCC (2012) เชจเชพ เช–เซ‚เชฌ เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃ เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชฟเชค เช›เซ‡. !
(เช…เช‚เชฆเชพเชœเซ‡ เช…เชจเซเชตเชพเชฆ. เชถเซเช‚ เชคเชฎเซ‡ เชนเชœเซ เชชเชฃ เช“เชซเชฟเชธ เช…เชจเซ‡ เช˜เชฐเซ‡ เชคเชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹ เช›เซ‹?)

เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ --opcodes เช…เชฎเซ‡ เชฎเชถเซ€เชจเชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชœเซ‹เชตเชพ เช…เชจเซ‡ เช‡เชฎเซ‡เชœเชจเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เชฌเชฟเชจเชตเซ‹เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

$ binwalk --opcodes Image
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
2400          0x960           MIPS instructions, function epilogue
2572          0xA0C           MIPS instructions, function epilogue
2828          0xB0C           MIPS instructions, function epilogue

เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชตเชฟเชถเซ‡ เชถเซเช‚? เช‡เชฎเซ‡เชœเชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เช•เชพเชขเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชšเชพเชฒเซ‹ เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช binwalk --extract:

$ binwalk --extract --quiet archer-c7.bin

เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ‚เชŸ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เชธเชฌเชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡:

$ cd _archer-c7.bin.extracted/squashfs-root/

$ ls
bin  dev  etc  lib  mnt  overlay  proc  rom  root  sbin  sys  tmp  usr  var  www

$ cat etc/banner
     MM           NM                    MMMMMMM          M       M
   $MMMMM        MMMMM                MMMMMMMMMMM      MMM     MMM
  MMMMMMMM     MM MMMMM.              MMMMM:MMMMMM:   MMMM   MMMMM
MMMM= MMMMMM  MMM   MMMM       MMMMM   MMMM  MMMMMM   MMMM  MMMMM'
MMMM=  MMMMM MMMM    MM       MMMMM    MMMM    MMMM   MMMMNMMMMM
MMMM=   MMMM  MMMMM          MMMMM     MMMM    MMMM   MMMMMMMM
MMMM=   MMMM   MMMMMM       MMMMM      MMMM    MMMM   MMMMMMMMM
MMMM=   MMMM     MMMMM,    NMMMMMMMM   MMMM    MMMM   MMMMMMMMMMM
MMMM=   MMMM      MMMMMM   MMMMMMMM    MMMM    MMMM   MMMM  MMMMMM
MMMM=   MMMM   MM    MMMM    MMMM      MMMM    MMMM   MMMM    MMMM
MMMM$ ,MMMMM  MMMMM  MMMM    MMM       MMMM   MMMMM   MMMM    MMMM
  MMMMMMM:      MMMMMMM     M         MMMMMMMMMMMM  MMMMMMM MMMMMMM
    MMMMMM       MMMMN     M           MMMMMMMMM      MMMM    MMMM
     MMMM          M                    MMMMMMM        M       M
       M
 ---------------------------------------------------------------
   For those about to rock... (%C, %R)
 ---------------------------------------------------------------

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช˜เชฃเซ€ เชœเซเชฆเซ€ เชœเซเชฆเซ€ เชตเชธเซเชคเซเช“ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช.

เช…เชฎเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹, เชชเชพเชธเชตเชฐเซเชก เชนเซ‡เชถ, เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเชฟเช• เช•เซ€ เช…เชจเซ‡ เชกเชฟเชœเชฟเชŸเชฒ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ€เช เช›เซ€เช. เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชซเชพเชˆเชฒเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชฎเซเชถเซเช•เซ‡เชฒเซ€เชจเชฟเชตเชพเชฐเชฃ เช…เชจเซ‡ เชจเชฌเชณเชพเชˆเช“.

เชจเซ€ เชฎเชฆเชฆ เชธเชพเชฅเซ‡ เช“เชน ะธ เช•เซเชฐเซ‹เชŸ เช…เชฎเซ‡ เชˆเชฎเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชชเชฃ เชšเชฒเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช (เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช)

$ ls
bin  dev  etc  lib  mnt  overlay  proc  rom  root  sbin  sys  tmp  usr  var  www

$ cp /usr/bin/qemu-mips-static .

$ sudo chroot . ./qemu-mips-static bin/busybox
BusyBox v1.19.4 (2019-05-20 18:13:49 CST) multi-call binary.
Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: busybox --list[-full]
   or: function [arguments]...

    BusyBox is a multi-call binary that combines many common Unix
    utilities into a single executable.  Most people will create a
    link to busybox for each function they wish to use and BusyBox
    will act like whatever it was invoked as.

Currently defined functions:
    [, [[, addgroup, adduser, arping, ash, awk, basename, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, crontab, cut, date, dd, delgroup, deluser, dirname, dmesg, echo, egrep, env, expr, false,
    fgrep, find, free, fsync, grep, gunzip, gzip, halt, head, hexdump, hostid, id, ifconfig, init, insmod, kill, killall, klogd, ln, lock, logger, ls, lsmod, mac_addr, md5sum, mkdir, mkfifo, mknod, mktemp,
    mount, mv, nice, passwd, pgrep, pidof, ping, ping6, pivot_root, poweroff, printf, ps, pwd, readlink, reboot, reset, rm, rmdir, rmmod, route, sed, seq, sh, sleep, sort, start-stop-daemon, strings,
    switch_root, sync, sysctl, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, watchdog, wc, wget, which, xargs, yes, zcat

เชธเชฐเชธ! เชชเชฐเช‚เชคเซ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชงเซ‹ เช•เซ‡ BusyBox เชธเช‚เชธเซเช•เชฐเชฃ 1.19.4 เช›เซ‡. เช† BusyBox เชจเซเช‚ เช–เซ‚เชฌ เชœเซ‚เชจเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เช›เซ‡, เชเชชเซเชฐเชฟเชฒ 2012 เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค.

เชคเซ‡เชฅเซ€ TP-Link 2019 เชฅเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ (GCC เชŸเซ‚เชฒเชšเซ‡เชจ, เช•เชฐเซเชจเชฒ, BusyBox, เชตเช—เซ‡เชฐเซ‡) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ 2012 เชฎเชพเช‚ เชซเชฐเซเชฎเชตเซ‡เชฐ เช‡เชฎเซ‡เชœ เชฐเชฟเชฒเซ€เช เช•เชฐเซ‡ เช›เซ‡!

เชนเชตเซ‡ เชคเชฎเซ‡ เชธเชฎเชœเซ‹ เช›เซ‹ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชนเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐ เชชเชฐ OpenWRT เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเช‚ เช›เซเช‚?

เชเชŸเชฒเซเช‚ เชœ เชจเชนเซ€เช‚

เชฌเชฟเชจเชตเซ‹เช• เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช•เชพเชšเซ‹ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เชกเซ‡เชŸเชพ เชชเซเชฐเชฟเชจเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เช—เซเชฐเชพเชซ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชˆเชฎเซ‡เชœเชฎเชพเช‚ เชฌเชพเชˆเชŸ เชฐเซ‡เชจเซเชกเชฎ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‹เชŸเซ€ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เช›เชฌเซ€เชฎเชพเช‚ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก, เชธเช‚เช•เซเชšเชฟเชค เช…เชฅเชตเชพ เช…เชธเซเชชเชทเซเชŸ เชซเชพเช‡เชฒ เช›เซ‡. เชนเชพเชฐเซเชกเช•เซ‹เชฐ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เช•เซ€? เช•เซ‡เชฎ เชจเชนเชฟ.

เชฌเชฟเชจเชตเซ‰เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชนเซ‹เชฎ เชฐเชพเช‰เชŸเชฐเชจเซ‡ เชฐเชฟเชตเชฐเซเชธ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชฟเช‚เช— เช•เชฐเซ‹. เชถเซเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฐเชพเช‰เชŸเชฐ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹ เช›เซ‹?

เช†เชชเชฃเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช --raw เช›เชฌเซ€ เช…เชฅเชตเชพ เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เช•เชธเซเชŸเชฎ เชฐเซ‹ เชฌเชพเช‡เชŸ เช•เซเชฐเชฎ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ --hexdump เชฌเซ‡ เช…เชฅเชตเชพ เชตเชงเซ เช‡เชจเชชเซเชŸ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเซ€เชจเซ‡ เชนเซ‡เช•เซเชธ เชกเชฎเซเชช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เช•เชธเซเชŸเชฎ เชนเชธเซเชคเชพเช•เซเชทเชฐเซ‹ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏ เชชเชฐ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡เชฒ เชตเซˆเชตเชฟเชงเซเชฏเชชเซ‚เชฐเซเชฃ เชนเชธเซเชคเชพเช•เซเชทเชฐ เชซเชพเช‡เชฒ เชฎเชพเชฐเชซเชคเซ‡ binwalk เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ --magic, เช…เชฅเชตเชพ เชคเซ‡เชฎเชจเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ $ HOME / .config / binwalk / magic.

เชคเชฎเซ‡ binwalk เชตเชฟเชถเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช…เชนเซ€เช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ.

เชฌเชฟเชจเชตเซ‹เช• เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ

เชคเซเชฏเชพเช‚ เช›เซ‡ API binwalk, Python เชฎเซ‹เชกเซเชฏเซเชฒ เชคเชฐเซ€เช•เซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซเช•เชพเชฏเซ‡เชฒ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‹เชˆเชชเชฃ Python เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซ‡เชŸเชฟเช•เชฒเซ€ binwalk เชธเซเช•เซ‡เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ binwalk เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชจเซ€ เชฎเชพเชคเซเชฐ เชฌเซ‡ เชฒเซ€เชŸเซ€เช“ เชธเชพเชฅเซ‡ เชฒเช—เชญเช— เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡!

import binwalk
binwalk.scan()

Python API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเซ‡ เชชเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชชเชพเชฏเชฅเซ‹เชจ เชชเซเชฒเช—เชˆเชจเซเชธ เชฌเชฟเชจเชตเซ‹เช•เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เช…เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชชเชฃ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡ IDA เชชเซเชฒเช—เช‡เชจ เช…เชจเซ‡ เช•เซเชฒเชพเช‰เชก เชตเชฐเซเชเชจ เชฌเชฟเชจเชตเซ‹เช• เชชเซเชฐเซ‹.

เชคเซ‹ เชถเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐเชฅเซ€ เชซเชฐเซเชฎเชตเซ‡เชฐ เชˆเชฎเซ‡เชœ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€เชจเซ‡ เชฌเชฟเชจเชตเซ‹เช•เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เชจ เช•เชฐเซ‹? เชนเซเช‚ เชตเชšเชจ เช†เชชเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเชจเซ‡ เช–เซ‚เชฌ เชฎเชœเชพ เช†เชตเชถเซ‡ :)

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹