рдХреЗрд╣реА рджрд┐рди рдЕрдШрд┐, рдореИрд▓реЗ рдмрд┐рдирд╡рд╛рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдореЗрд░реЛ рд░рд╛рдЙрдЯрд░рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░рд▓рд╛рдИ рд░рд┐рднрд░реНрд╕ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред
рдореИрд▓реЗ рдЖрдлреИрд▓рд╛рдИ рдХрд┐рдиреЗ
рд╣рд░реЗрдХ рдкрдЯрдХ рдо рдирдпрд╛рдБ рд░рд╛рдЙрдЯрд░ рдХрд┐рдиреНрдЫреБ, рдо рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдЫреБ
OpenWRT рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реЗрд░, рдо рдкрдирд┐
рдмрд┐рдирд╡рд╛рдХ рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ?
рдХреНрд░реЗрдЧ рд╣реЗрдлрдирд░ рджреНрд╡рд╛рд░рд╛ 2010 рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ, рдмрд┐рдирд╡рд╛рдХрд▓реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдЫрд╡рд┐рд╣рд░реВ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрди рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди, рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЫрд╡рд┐рд╣рд░реВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдХреЛрдб, рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░рд┐рдПрдХреЛ рдЕрднрд┐рд▓реЗрдЦрд╣рд░реВ, рдмреБрдЯрд▓реЛрдбрд░рд╣рд░реВ рд░ рдХрд░реНрдиреЗрд▓рд╣рд░реВ, рдлрд╛рдЗрд▓ рдврд╛рдБрдЪрд╛рд╣рд░реВ рдЬрд╕реНрддреИ 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 рддреНрдпрд╣рд┐ рддрд░рд┐рдХрд╛рд▓реЗ рдХрд╛рдо рдЧрд░реНрджрдЫред рддрд░ рдлрд╛рдЗрд▓рдХреЛ рд╕реБрд░реБрдорд╛ рдорд╛рддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд╣рд░реВ рдЦреЛрдЬреНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, binwalk рд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдлрд╛рдЗрд▓ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрдиреЗрдЫред рдердк рд░реВрдкрдорд╛, binwalk рд▓реЗ рдЫрд╡рд┐рдорд╛ рдлреЗрд▓рд╛ рдкрд░реЗрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдирд┐рдХрд╛рд▓реНрди рд╕рдХреНрдЫред
рдЙрдкрдХрд░рдгрд╣рд░реВ file
╨╕ binwalk
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН libmagic
рдлрд╛рдЗрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрдиред рддрд░ binwalk
рдердк рд░реВрдкрдорд╛ рдХрдореНрдкреНрд░реЗрд╕реНрдб/рдЬрд┐рдк рдЧрд░рд┐рдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ, рдлрд░реНрдорд╡реЗрдпрд░ рд╣реЗрдбрд░рд╣рд░реВ, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рд╣рд░реВ, рдмреБрдЯрд▓реЛрдбрд░рд╣рд░реВ, рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд░ рдпрд╕реНрддреИ рдЕрдиреНрдп рдЦреЛрдЬреА рдЧрд░реНрди рдЕрдиреБрдХреВрд▓рди рдЬрд╛рджреБрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред
рдПрдХрдЫрд┐рди рд░рдорд╛рдЗрд▓реЛ рдЧрд░реМрдВ ?
Binwalk рд╕реНрдерд╛рдкрдирд╛
Binwalk рд▓рд╛рдИ рд▓рд┐рдирдХреНрд╕, OSX, FreeBSD рд░ Windows рд╕рд╣рд┐рдд рдзреЗрд░реИ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдорд╛ рд╕рдорд░реНрдерд┐рдд рдЫред
binwalk рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рддрдкрд╛рдИрдВ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
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 --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
рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ U-Boot рдЫрд╡рд┐ рдЫ:
$ 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
U-рдмреБрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ 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) рдХреЛ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, GCC (4.6) рдХреЛ рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдг 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)
---------------------------------------------------------------
рдЕрдм рд╣рд╛рдореА рдзреЗрд░реИ рдлрд░рдХ рдХреБрд░рд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
рд╣рд╛рдореА рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ, рдкрд╛рд╕рд╡рд░реНрдб рд╣реНрдпрд╛рд╕рд╣рд░реВ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдХреБрдЮреНрдЬреАрд╣рд░реВ рд░ рдбрд┐рдЬрд┐рдЯрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЦреЛрдЬреНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ
рд╕рд╣рдпреЛрдЧрдХреЛ рд╕рд╛рде
$ 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 рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдЫреБ?
рддреНрдпрддрд┐ рдорд╛рддреНрд░ рд╣реЛрдЗрди
Binwalk рд▓реЗ рдПрдиреНрдЯреНрд░реЛрдкреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрдирд┐ рдЧрд░реНрди рд╕рдХреНрдЫ, рдХрдЪреНрдЪрд╛ рдПрдиреНрдЯреНрд░реЛрдкреА рдбрд╛рдЯрд╛ рдЫрд╛рдкреНрди рд╕рдХреНрдЫ, рд░ рдПрдиреНрдЯреНрд░реЛрдкреА рдЧреНрд░рд╛рдлрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЫрд╡рд┐рдорд╛ рдмрд╛рдЗрдЯрд╣рд░реВ рдЕрдирд┐рдпрдорд┐рдд рд╣реБрдБрджрд╛ рдареВрд▓реЛ рдПрдиреНрдЯреНрд░реЛрдкреА рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реБрди рд╕рдХреНрдЫ рдХрд┐ рдЫрд╡рд┐рдорд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб, рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░рд┐рдПрдХреЛ рд╡рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рдлрд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫред рд╣рд╛рд░реНрдбрдХреЛрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдЮреНрдЬреА? рдХрд┐рди рдЫреИрдиред
рд╣рд╛рдореА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ --raw
рдЫрд╡рд┐ рд╡рд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдЕрдиреБрдХреВрд▓рди рдХрдЪреНрдЪрд╛ рдмрд╛рдЗрдЯ рдЕрдиреБрдХреНрд░рдо рдлреЗрд▓рд╛ рдкрд╛рд░реНрди --hexdump
рджреБрдИ рд╡рд╛ рдмрдвреА рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓рд╣рд░реВ рддреБрд▓рдирд╛ рдЧрд░реА рд╣реЗрдХреНрд╕ рдбрдореНрдк рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиред
--magic
, рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдердкреЗрд░ $ HOME / .config / binwalk / magic
.
рддрдкрд╛рдИрд▓реЗ binwalk рдмрд╛рд░реЗ рдердк рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
binwalk рд╡рд┐рд╕реНрддрд╛рд░
рддреНрдпрд╣рд╛рдБ
import binwalk
binwalk.scan()
рдкрд╛рдЗрдерди рдПрдкреАрдЖрдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдЗрдБ рдкрдирд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдкрдирд┐ рдЫ
рддреНрдпрд╕реЛрднрдП рддрдкрд╛рдЗрдБ рдХрд┐рди рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рдлрд░реНрдорд╡реЗрдпрд░ рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реБрдиреНрди рд░ рдмрд┐рдирд╡рд╛рдХ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реБрдиреНрди? рдо рддрд┐рдореАрд▓рд╛рдИ рдзреЗрд░реИ рд░рдорд╛рдЗрд▓реЛ рд╣реБрдиреЗрдЫ рд╡рд╛рдЪрд╛ рдЧрд░реНрдЫреБ :)
рд╕реНрд░реЛрдд: www.habr.com