Lệnh hexdump trong Linux

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ó.

400+ câu lệnh phổ biến trong Linux