เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฐเจพเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ‰เจฒเจŸเจพ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจ•เจฐเฉ‹เฅค เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?

เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฐเจพเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ‰เจฒเจŸเจพ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจ•เจฐเฉ‹เฅค เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?

เจ•เฉเจ เจฆเจฟเจจ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐ เจฆเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจ‰เจฒเจŸเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเฅค

เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ–เจฐเฉ€เจฆเจฟเจ† TP-เจฒเจฟเฉฐเจ• เจ†เจฐเจšเจฐ C7 เจนเฉ‹เจฎ เจฐเจพเจŠเจŸเจฐ. เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจฐเจพเจŠเจŸเจฐ เจจเจนเฉ€เจ‚, เจชเจฐ เจฎเฉ‡เจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเจพเจ‚ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจนเฉˆเฅค

เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจจเจตเจพเจ‚ เจฐเจพเจŠเจŸเจฐ เจ–เจฐเฉ€เจฆเจฆเจพ เจนเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ“เจชเจจเจกเจฌเจฒเจฏเฉ‚เจ†เจฐเจŸเฉ€. เจ•เจพเจนเจฆเฉ‡ เจฒเจˆ? เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡, เจจเจฟเจฐเจฎเจพเจคเจพ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจชเจฐเจตเจพเจน เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจ…เจคเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจชเฉเจฐเจพเจฃเจพ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจตเจฟเจšเจพเจฐ เจฎเจฟเจฒเจฆเจพ เจนเฉˆ. เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ OpenWRT เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจคเจฐเจœเฉ€เจน เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚, เจœเฉ‹ เจ“เจชเจจ-เจธเฉ‹เจฐเจธ เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจฆเฉเจ†เจฐเจพ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆเฅค

OpenWRT เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจตเฉ€ เจจเจตเฉ€เจจเจคเจฎ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ…เจงเจฟเจ•เจพเจฐเจค เจตเฉˆเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจฎเฉ‡เจฐเฉ‡ เจจเจตเฉ‡เจ‚ เจ†เจฐเจšเจฐ เจธเฉ€ 7 เจฆเฉ‡ เจคเจนเจฟเจค เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ. เจธเจฟเจฐเจซเจผ เจฎเจจเฉ‹เจฐเฉฐเจœเจจ เจฒเจˆ เจ…เจคเฉ‡ เจฌเจฟเจจเจตเจพเจ• เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเฉ‹เฅค

เจฌเจฟเจจเจตเจพเจ• เจ•เฉ€ เจนเฉˆ?

เจฌเจฟเจจเจตเจพเจ• เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, เจฐเจฟเจตเจฐเจธ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจ…เจคเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐ เจ•เฉฑเจขเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจŸเฉ‚เจฒ เจนเฉˆเฅค

Craig Heffner เจฆเฉเจ†เจฐเจพ 2010 เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ†, binwalk เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฒเฉฑเจญ เจธเจ•เจฆเจพ เจนเฉˆ, เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจšเจฟเฉฑเจคเจฐเจพเจ‚, เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจ•เฉ‹เจก, เจ•เฉฐเจชเจฐเฉˆเฉฑเจธเจก เจ†เจฐเจ•เจพเจˆเจตเจœเจผ, เจฌเฉ‚เจŸเจฒเฉ‹เจกเจฐ เจ…เจคเฉ‡ เจ•เจฐเจจเจฒ, เจซเจพเจˆเจฒ เจซเจพเจฐเจฎเฉˆเจŸ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ JPEG เจ…เจคเฉ‡ PDF, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจ•เฉเจ เจฒเฉฑเจญ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจฐเจฟเจตเจฐเจธ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ เจ•เจฐเจจ เจฒเจˆ เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฒเจˆ เจฌเจพเจˆเจจเจฐเฉ€ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเฉ‹, เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจฌเฉˆเจ•เจกเฉ‹เจฐ เจœเจพเจ‚ เจกเจฟเจœเฉ€เจŸเจฒ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฆเฉ‡เจ–เฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจตเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹ opcodes เจตเฉฑเจ–-เจตเฉฑเจ– CPUs เจฆเฉ‡ เจเฉเฉฐเจก เจฒเจˆเฅค

เจคเฉเจธเฉ€เจ‚ เจ–เจพเจธ เจชเจพเจธเจตเจฐเจก เจซเจพเจˆเจฒเจพเจ‚ (เจชเจพเจธเจกเจฌเจฒเจฏเฉ‚เจกเฉ€, เจธเจผเฉˆเจกเฉ‹, เจ†เจฆเจฟ) เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจนเฉˆเจธเจผเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‹เฉœเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจฆเฉ‹ เจœเจพเจ‚ เจฆเฉ‹ เจคเฉ‹เจ‚ เจตเฉฑเจง เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฌเจพเจˆเจจเจฐเฉ€ เจชเจพเจฐเจธเจฟเฉฐเจ— เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจธเฉฐเจ•เฉเจšเจฟเจค เจกเฉ‡เจŸเจพ เจœเจพเจ‚ เจเจจเจ•เฉ‹เจกเจก เจเจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจกเฉ‡เจŸเจพ 'เจคเฉ‡ เจเจจเจŸเฉเจฐเฉ‹เจชเฉ€ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจธเจญ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚เฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจ‰เจฅเฉ‡ เจนเฉˆ :)

เจฌเจฟเจจเจตเจพเจ• เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ?

เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจ‡เจธเจฆเฉ€ เจธเจฟเจ—เจจเฉ‡เจšเจฐ เจธเจ•เฉˆเจจเจฟเฉฐเจ— เจนเฉˆเฅค เจฌเจฟเจจเจตเจพเจ• เจตเฉฑเจ–-เจตเฉฑเจ– เจฌเจฟเจฒเจŸ-เจ‡เจจ เจซเจพเจˆเจฒ เจ•เจฟเจธเจฎเจพเจ‚ เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ 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 เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เฉฐเจชเจฐเฉˆเฉฑเจธเจก/เจœเจผเจฟเจชเจก เจซเจพเจˆเจฒเจพเจ‚, เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจนเฉˆเจกเจฐ, เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ, เจฌเฉ‚เจŸเจฒเฉ‹เจกเจฐ, เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจ…เจคเฉ‡ เจนเฉ‹เจฐเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฒเจˆ เจ•เจธเจŸเจฎ เจฎเฉˆเจœเจฟเจ• เจนเจธเจคเจพเจ–เจฐเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจ“ เจ•เฉเจ เจฎเจœเจผเฉ‡ เจ•เจฐเฉ€เจ?

เจฌเจฟเจจเจตเจพเจ• เจธเจฅเจพเจชเจจเจพ

เจฌเจฟเจจเจตเจพเจ• เจฒเฉ€เจจเจ•เจธ, OSX, FreeBSD เจ…เจคเฉ‡ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฎเฉ‡เจค เจ•เจˆ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚ 'เจคเฉ‡ เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆเฅค

เจฌเจฟเจจเจตเจพเจ• เจฆเฉ‡ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจชเจพเจฒเจฃเจพ เจ•เจฐเฉ‹ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจœ เจคเฉ‡เจœเจผ เจ—เจพเจˆเจก, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉˆเฅค

เจฌเจฟเจจเจตเจพเจ• เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจฎเจพเจชเจฆเฉฐเจก เจนเจจ:

$ 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

เจšเจฟเฉฑเจคเจฐ เจธเจ•เฉˆเจจเจฟเฉฐเจ—

เจ†เจ‰ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจซเจพเจˆเจฒ เจฆเจธเจคเจ–เจคเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจ•เฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ (เจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจšเจฟเฉฑเจคเจฐ TP-เจฒเจฟเฉฐเจ•).

--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 เจนเฉˆ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเจพ เจตเจฐเจœเจจ 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

เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฏเฉ‚-เจฌเฉ‚เจŸ เจšเจฟเฉฑเจคเจฐ เจนเฉˆ:

$ 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 เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจชเจพเจธ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‰เจชเจฐเฉ‹เจ•เจค เจคเฉ‹เจ‚, เจธเจพเจจเฉ‚เฉฐ เจกเจฟเจตเจพเจˆเจธ เจฆเฉ€ เจซเจฒเฉˆเจธเจผ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจฌเจฟเจนเจคเจฐ เจธเจฎเจ เจนเฉˆ.

เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เจฟเจตเฉ‡เจ‚?

$ 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 เจซเจพเจˆเจฒ เจซเจพเจฐเจฎเฉˆเจŸ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจธเจฟเจฐเจฒเฉ‡เจ– เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจšเจฟเฉฑเจคเจฐ เจนเฉˆเฅค เจ†เจ‰ เจ…เฉฐเจคเจฎ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เจธ เจธเจฟเจฐเจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจนเจŸเจพ เจฆเฉ‡เจˆเจ:

$ 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

เจนเฉเจฃ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจšเจฟเฉฑเจคเจฐ เจนเฉˆ:

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

เจ…เจธเฉ€เจ‚ เจ•เจฐเจจเจฒ เจšเจฟเฉฑเจคเจฐ เจจเจพเจฒ เจ•เฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚? เจ…เจธเฉ€เจ‚, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจคเจฐ เจ–เฉ‹เจœ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ•เจฐเจจเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจพเจฐเฉ‡ เจธเจฟเฉฑเจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

$ 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 เจตเจฟเฉฑเจš เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ (2012) เจฆเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ 4.6 เจคเฉ‹เจ‚ GCC (2012) เจฆเฉ‡ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจจเจพเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค !
(เจฒเจ—เจญเจ— เจ…เจจเฉเจตเจพเจฆ. เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจฆเจซเจผเจคเจฐ เจ…เจคเฉ‡ เจ˜เจฐ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?)

เจตเจฟเจ•เจฒเจช เจฆเฉ‡ เจจเจพเจฒ --opcodes เจ…เจธเฉ€เจ‚ เจฎเจธเจผเฉ€เจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฃ เจ…เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆ binwalk เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

$ 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)
 ---------------------------------------------------------------

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ…เจธเฉ€เจ‚ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒเจพเจ‚, เจชเจพเจธเจตเจฐเจก เจนเฉˆเจธเจผ, เจ•เฉเจฐเจฟเจชเจŸเฉ‹เจ—เฉเจฐเจพเจซเจฟเจ• เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจกเจฟเจœเฉ€เจŸเจฒ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจฒเจˆ เจฌเจพเจˆเจจเจฐเฉ€ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจธเจฎเฉฑเจธเจฟเจ† เจจเจฟเจชเจŸเจพเจฐเจพ เจ…เจคเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚เฅค

เจฆเฉ€ เจธเจนเจพเจ‡เจคเจพ เจจเจพเจฒ เจตเจพเจน ะธ chroot เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจตเฉ€ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ (เจ‡เจฎเฉ‚เจฒเฉ‡เจŸ):

$ 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 เจŸเฉ‚เจฒเจšเฉ‡เจจ, เจ•เจฐเจจเจฒ, เจฌเจฟเจœเจผเฉ€เจฌเจพเจ•เจธ, เจ†เจฆเจฟ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ 2012 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐ เจœเจพเจฐเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ!

เจนเฉเจฃ เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจธเจฎเจ เจ—เจ เจนเฉ‹ เจ•เจฟ เจฎเฉˆเจ‚ เจนเจฎเฉ‡เจธเจผเจพ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐเจพเจ‚ 'เจคเฉ‡ OpenWRT เจจเฉ‚เฉฐ เจ•เจฟเจ‰เจ‚ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจฆเจพ เจนเจพเจ‚?

เจ‡เจน เจธเจญ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉˆ

เจฌเจฟเจจเจตเจพเจ• เจเจจเจŸเฉเจฐเฉ‹เจชเฉ€ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เฉฑเจšเจพ เจเจ‚เจŸเจฐเฉ‹เจชเฉ€ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจฟเฉฐเจŸ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจเจ‚เจŸเจฐเฉŒเจชเฉ€ เจ—เฉเจฐเจพเจซเจผ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจœเจฆเฉ‹เจ‚ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฌเจพเจˆเจŸ เจฌเฉ‡เจคเจฐเจคเฉ€เจฌ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจคเจพเจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจเจ‚เจŸเจฐเฉ‹เจชเฉ€ เจฆเฉ‡เจ–เฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจ‡เจน เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจจเจ•เฉเจฐเจฟเจชเจŸเจก, เจธเฉฐเจ•เฉเจšเจฟเจค, เจœเจพเจ‚ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจซเจพเจˆเจฒ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค เจนเจพเจฐเจกเจ•เฉ‹เจฐ เจเจจเจ•เฉเจฐเจฟเจชเจธเจผเจจ เจ•เฉเฉฐเจœเฉ€? เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚.

เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ˜เจฐเฉ‡เจฒเฉ‚ เจฐเจพเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ‰เจฒเจŸเจพ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจ•เจฐเฉ‹เฅค เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฐเจพเจŠเจŸเจฐ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?

เจ…เจธเฉ€เจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ --raw เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจœเจพเจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ•เจธเจŸเจฎ เจ•เฉฑเจšเจพ เจฌเจพเจˆเจŸ เจ•เฉเจฐเจฎ เจฒเฉฑเจญเจฃ เจฒเจˆ --hexdump เจฆเฉ‹ เจœเจพเจ‚ เจฆเฉ‹ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ‡เจจเจชเฉเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจนเฉˆเจ•เจธ เจกเฉฐเจช เจ•เจฐเจจ เจฒเจˆเฅค

เจ•เจธเจŸเจฎ เจฆเจธเจคเจ–เจค เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ 'เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจธเจŸเจฎ เจฆเจธเจคเจ–เจค เจซเจพเจˆเจฒ เจฐเจพเจนเฉ€เจ‚ binwalk เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ --magic, เจœเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจœเฉ‹เฉœ เจ•เฉ‡ $ HOME / .config / binwalk / magic.

เจคเฉเจธเฉ€เจ‚ binwalk เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‡เฉฑเจฅเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจงเจฟเจ•เจพเจฐเจค เจฆเจธเจคเจพเจตเฉ‡เจœเจผ.

เจฌเจฟเจจเจตเจพเจ• เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ

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

import binwalk
binwalk.scan()

Python API เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจคเฉเจธเฉ€เจ‚ เจตเฉ€ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจชเจพเจˆเจฅเจจ เจชเจฒเฉฑเจ—เจ‡เจจ เจฌเจฟเจจเจตเจพเจ• เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจซเฉˆเจฒเจพเจ‰เจฃ เจฒเจˆเฅค

เจตเฉ€ เจนเฉˆ IDA เจชเจฒเฉฑเจ—เจ‡เจจ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‰เจก เจธเฉฐเจธเจ•เจฐเจฃ เจฌเจฟเจจเจตเจพเจ• เจชเฉเจฐเฉ‹.

เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฐเจŸเจฐเจจเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจ…เจคเฉ‡ เจฌเจฟเจจเจตเจพเจ• เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡? เจฎเฉˆเจ‚ เจตเจพเจ…เจฆเจพ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฌเจนเฉเจค เจฎเจœเจผเฉ‡เจฆเจพเจฐ เจนเฉ‹เจตเฉ‹เจ—เฉ‡ :)

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹