Giới thiệu
Trong lab này, chúng ta sẽ khám phá lệnh hexdump
của Linux, một công cụ mạnh mẽ để xem và thao tác dữ liệu nhị phân. Lệnh hexdump
cho phép bạn hiển thị nội dung của một tệp hoặc bất kỳ dữ liệu nhị phân nào khác ở định dạng thập lục phân dễ đọc. Chúng ta sẽ bắt đầu bằng cách giới thiệu cách sử dụng cơ bản của lệnh hexdump
, sau đó đi sâu hơn vào việc tùy chỉnh đầu ra cho phù hợp với nhu cầu của bạn. Lab này được thiết kế để cung cấp các ví dụ thực tế và giúp bạn hiểu rõ hơn về cách làm việc với dữ liệu nhị phân trong môi trường Linux.
Giới thiệu về lệnh hexdump
Trong bước này, chúng ta sẽ khám phá lệnh hexdump
, một công cụ mạnh mẽ trong Linux để xem và thao tác dữ liệu nhị phân. Lệnh hexdump
cho phép bạn hiển thị nội dung của một tệp hoặc bất kỳ dữ liệu nhị phân nào khác ở định dạng thập lục phân dễ đọc.
Hãy bắt đầu bằng cách chạy lệnh hexdump
cơ bản trên một tệp:
hexdump ~/project/example.txt
Ví dụ đầu ra:
00000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a |Hello, world!.|
0000000e
Đầu ra hiển thị biểu diễn thập lục phân của nội dung tệp, với các ký tự ASCII tương ứng được hiển thị ở phía bên phải.
Lệnh hexdump
cung cấp một số tùy chọn để tùy chỉnh định dạng đầu ra. Ví dụ: bạn có thể sử dụng tùy chọn -C
(canonical) để hiển thị đầu ra ở định dạng dễ đọc hơn:
hexdump -C ~/project/example.txt
Ví dụ đầu ra:
00000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a |Hello, world!.|
0000000e
Ở định dạng này, các giá trị thập lục phân được hiển thị theo nhóm 2 byte và các ký tự ASCII tương ứng được hiển thị ở phía bên phải.
Bạn cũng có thể sử dụng lệnh hexdump
để xem nội dung của một thiết bị hoặc bất kỳ nguồn dữ liệu nhị phân nào khác. Ví dụ: để xem 10 byte đầu tiên của thiết bị /dev/urandom
(một nguồn dữ liệu ngẫu nhiên), bạn có thể chạy:
hexdump -n 10 /dev/urandom
Ví dụ đầu ra:
a5 e9 f6 c0 f3 b1 8e 7a 4a 3d
Trong bước tiếp theo, chúng ta sẽ khám phá cách sử dụng nâng cao hơn của lệnh hexdump
và tìm hiểu cách tùy chỉnh thêm đầu ra.
Xem Dữ liệu Nhị phân với hexdump
Trong bước này, chúng ta sẽ tìm hiểu cách sử dụng lệnh hexdump
để xem và phân tích dữ liệu nhị phân chi tiết hơn.
Đầu tiên, hãy tạo một tệp nhị phân để làm việc:
dd if=/dev/urandom of=~/project/binary_file.bin bs=1024 count=1
Lệnh này tạo ra một tệp nhị phân 1KB chứa đầy dữ liệu ngẫu nhiên.
Bây giờ, hãy sử dụng hexdump
để xem nội dung của tệp nhị phân:
hexdump -C ~/project/binary_file.bin
Ví dụ đầu ra:
00000000 b5 7f 04 3c 91 82 f7 06 dc 2b 8e 8e 5e 2e 6e 1b |...<.....+..^.n.|
00000010 7a 9a 8e 4e 3a 5e 8e 2d 9b 3e 7d 0a 0d 5d 2e 8f |z..N:^.-.:}..]..|
00000020 6d 17 a5 8a 1d 6f 9f 3d 44 f2 8e 3f 9a 8f 3a 5b |m....o.=D..?..:[|
00000030 e1 73 2f 7e 5f 8f 04 a3 1e 4a 9e 8c 8f 9a 8e 4e |.s/~_....J.....N|
Tùy chọn -C
hiển thị đầu ra ở định dạng canonical, hiển thị các giá trị thập lục phân theo nhóm 2 byte và các ký tự ASCII tương ứng ở phía bên phải.
Bạn cũng có thể sử dụng lệnh hexdump
để xem các phần cụ thể của tệp nhị phân. Ví dụ: để chỉ xem 16 byte đầu tiên, bạn có thể sử dụng tùy chọn -n
(number of bytes):
hexdump -C -n 16 ~/project/binary_file.bin
Ví dụ đầu ra:
00000000 b5 7f 04 3c 91 82 f7 06 dc 2b 8e 8e 5e 2e 6e 1b |...<.....+..^.n.|
Ngoài ra, bạn có thể sử dụng lệnh hexdump
để xem tệp ở các định dạng khác nhau, chẳng hạn như định dạng canonical (-C
), hiển thị canonical cho dữ liệu ký tự đơn byte (-c
) hoặc định dạng số nguyên 32-bit (-x
).
Trong bước tiếp theo, chúng ta sẽ khám phá cách tùy chỉnh thêm đầu ra hexdump
để phù hợp với nhu cầu cụ thể của bạn.
Tùy chỉnh đầu ra hexdump
Trong bước cuối cùng này, chúng ta sẽ khám phá cách tùy chỉnh đầu ra của lệnh hexdump
để phù hợp với nhu cầu cụ thể của bạn.
Lệnh hexdump
cung cấp một số tùy chọn để kiểm soát định dạng của đầu ra. Hãy bắt đầu bằng cách sử dụng tùy chọn -v
(verbose) để hiển thị thông tin bổ sung:
hexdump -v -C ~/project/binary_file.bin
Ví dụ đầu ra:
00000000 b5 7f 04 3c 91 82 f7 06 dc 2b 8e 8e 5e 2e 6e 1b |...<.....+..^.n.|
00000010 7a 9a 8e 4e 3a 5e 8e 2d 9b 3e 7d 0a 0d 5d 2e 8f |z..N:^.-.:}..]..|
00000020 6d 17 a5 8a 1d 6f 9f 3d 44 f2 8e 3f 9a 8f 3a 5b |m....o.=D..?..:[|
00000030 e1 73 2f 7e 5f 8f 04 a3 1e 4a 9e 8c 8f 9a 8e 4e |.s/~_....J.....N|
Tùy chọn -v
hiển thị offset của tệp (vị trí của dữ liệu trong tệp) ở cột ngoài cùng bên trái.
Bạn cũng có thể sử dụng tùy chọn -x
để hiển thị đầu ra ở định dạng thập lục phân 32-bit:
hexdump -x ~/project/binary_file.bin
Ví dụ đầu ra:
00000000 3c7f04b5 06f78291 8e2b0cdc 1b6e2e5e
00000010 8e3a9a7a 0a7d3e9b 8f2e5d0d 8a17a56d
00000020 3d9f6f1d 3f8ef244 5b3a8f9a 8c9e4a1e
00000030 8f04a37f 4e8e9a8f 73e1
Ở định dạng này, dữ liệu được hiển thị ở các giá trị thập lục phân 32-bit, có thể hữu ích để phân tích dữ liệu nhị phân ở mức thấp hơn.
Cuối cùng, hãy thử tùy chọn -d
để hiển thị đầu ra ở định dạng thập phân 16-bit:
hexdump -d ~/project/binary_file.bin
Ví dụ đầu ra:
00000000 48879 32403 62353 56076 56462 24670 31259 14623
00000016 31610 15677 13010 21869 8207 37243 17694 14350
00000032 15995 17215 17787 17498 28509 17742
Tùy chọn -d
hiển thị dữ liệu ở các giá trị thập phân 16-bit, có thể hữu ích để diễn giải dữ liệu nhị phân dưới dạng các giá trị số.
Bằng cách sử dụng các tùy chọn tùy chỉnh này, bạn có thể điều chỉnh đầu ra hexdump
cho phù hợp với nhu cầu cụ thể của mình và hiểu sâu hơn về dữ liệu nhị phân mà bạn đang làm việc.
Tóm tắt
Trong lab này, chúng ta đã khám phá lệnh hexdump
của Linux, một công cụ mạnh mẽ để xem và thao tác dữ liệu nhị phân. Chúng ta đã học cách sử dụng lệnh hexdump
cơ bản để hiển thị nội dung của một tệp ở định dạng thập lục phân dễ đọc và cách tùy chỉnh đầu ra bằng các tùy chọn khác nhau như tùy chọn -C
(canonical). Chúng ta cũng đã khám phá cách sử dụng hexdump
để xem nội dung của các thiết bị và các nguồn dữ liệu nhị phân khác. Cuối cùng, chúng ta đã thực hành xem và phân tích dữ liệu nhị phân chi tiết hơn bằng cách tạo một tệp nhị phân và sử dụng hexdump
để kiểm tra nội dung của nó.