Giới thiệu
Trong lab này, bạn sẽ tìm hiểu về lệnh od
(octal dump) trong Linux, được sử dụng để hiển thị nội dung của một file ở định dạng octal, decimal, hexadecimal hoặc các định dạng khác. Bạn sẽ bắt đầu bằng cách hiểu cách sử dụng cơ bản của lệnh od
, sau đó khám phá các tùy chọn khác nhau để tùy chỉnh định dạng đầu ra, và cuối cùng thực hiện một hexadecimal dump của các file. Lab này bao gồm các kỹ năng thiết yếu cho các thao tác cơ bản trên file và thư mục trong môi trường Linux.
Tìm hiểu Lệnh od
Trong bước này, bạn sẽ tìm hiểu về lệnh od
(octal dump) trong Linux. Lệnh od
được sử dụng để hiển thị nội dung của một file ở định dạng octal, decimal, hexadecimal hoặc các định dạng khác.
Để bắt đầu, hãy tạo một file mẫu với một số văn bản:
echo "Hello, Linux!" > sample.txt
Bây giờ, bạn có thể sử dụng lệnh od
để xem nội dung của file ở định dạng hexadecimal:
od -x sample.txt
Ví dụ đầu ra:
0000000 4865 6c6c 6f2c 2020 4c69 6e75 7821 0a00
0000020
Tùy chọn -x
cho od
biết hiển thị nội dung file ở định dạng hexadecimal. Mỗi dòng hiển thị offset (tính bằng byte) từ đầu file, theo sau là biểu diễn hexadecimal của dữ liệu.
Bạn cũng có thể sử dụng tùy chọn -t
để chỉ định định dạng đầu ra. Ví dụ: để hiển thị nội dung file ở định dạng decimal:
od -t d1 sample.txt
Ví dụ đầu ra:
0000000 72 101 108 108 111 44 32 108 105 110 117 120 33 10
0000020
Tham số d1
cho od
biết hiển thị dữ liệu ở định dạng decimal 1 byte.
Khám phá Các tùy chọn Lệnh od
Trong bước này, bạn sẽ khám phá các tùy chọn khác nhau có sẵn với lệnh od
để tùy chỉnh định dạng đầu ra.
Đầu tiên, hãy tạo một file mẫu khác với một số dữ liệu binary:
echo -e "\x01\x02\x03\x04\x05\x06\x07\x08" > binary.txt
Bây giờ, bạn có thể sử dụng lệnh od
với các tùy chọn khác nhau để hiển thị nội dung file ở nhiều định dạng khác nhau:
## Hiển thị ở định dạng octal
od -t o1 binary.txt
## Hiển thị ở định dạng hexadecimal
od -t x1 binary.txt
## Hiển thị ở định dạng ASCII
od -t c binary.txt
Ví dụ đầu ra:
0000000 001 002 003 004 005 006 007 010
0000010
0000000 01 02 03 04 05 06 07 08
0000010
0000000 001 002 003 004 005 006 007 010
0000010
Tùy chọn -t
cho phép bạn chỉ định định dạng đầu ra. Trong các ví dụ trên, o1
đại diện cho octal 1 byte, x1
đại diện cho hexadecimal 1 byte và c
đại diện cho định dạng ký tự (ASCII).
Bạn cũng có thể kết hợp nhiều định dạng đầu ra bằng tùy chọn -t
:
od -t x1 -t d1 -t c binary.txt
Ví dụ đầu ra:
0000000 01 02 03 04 05 06 07 08
0000010
Điều này sẽ hiển thị nội dung file ở định dạng hexadecimal, decimal và ký tự cạnh nhau.
Thực hiện Hexadecimal Dump của File
Trong bước cuối cùng này, bạn sẽ học cách sử dụng lệnh od
để thực hiện một hexadecimal dump của các file.
Hãy tạo một file mẫu lớn hơn với một số dữ liệu ngẫu nhiên:
dd if=/dev/urandom of=random.txt bs=1024 count=10
Điều này sẽ tạo một file có tên random.txt
với 10 kilobytes dữ liệu ngẫu nhiên.
Bây giờ, bạn có thể sử dụng lệnh od
để hiển thị hexadecimal dump của file:
od -x random.txt
Ví dụ đầu ra:
0000000 f6d1 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000020 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000040 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000060 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000100 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000120 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000140 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000160 b6f9 2d4a 1e0f 6a1b 2e6f 9d2e 4a4b 5b8f
0000200 6acd 0f1e 0f6a 1b2e b6f9 2d4a 1e0f 6a1b
0000220 2e6f 9d2e 4a4b 5b8f 6acd 0f1e 0f6a 1b2e
0000240
Đầu ra hiển thị biểu diễn hexadecimal của nội dung file, với mỗi dòng hiển thị offset (tính bằng byte) từ đầu file.
Bạn cũng có thể sử dụng tùy chọn -c
để hiển thị nội dung file ở định dạng ASCII cùng với hexadecimal dump:
od -tx1 -tc random.txt
Ví dụ đầu ra:
0000000 f6 d1 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e |......JK[..j...j..|
0000020 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f |..-J..j..o..JK[.|
0000040 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b |j....j....-J..j.|
0000060 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e |.o..JK[.j....j..|
0000100 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f |..-J..j..o..JK[.|
0000120 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b |j....j....-J..j.|
0000140 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e |.o..JK[.j....j..|
0000160 b6 f9 2d 4a 1e 0f 6a 1b 2e 6f 9d 2e 4a 4b 5b 8f |..-J..j..o..JK[.|
0000200 6a cd 0f 1e 0f 6a 1b 2e b6 f9 2d 4a 1e 0f 6a 1b |j....j....-J..j.|
0000220 2e 6f 9d 2e 4a 4b 5b 8f 6a cd 0f 1e 0f 6a 1b 2e |.o..JK[.j....j..|
0000240
Đầu ra này hiển thị các giá trị hexadecimal cùng với các ký tự ASCII tương ứng của chúng, giúp bạn dễ dàng diễn giải nội dung file hơn.
Tóm tắt
Trong lab này, bạn đã tìm hiểu về lệnh od
(octal dump) trong Linux, được sử dụng để hiển thị nội dung của một file ở nhiều định dạng khác nhau, bao gồm octal, decimal và hexadecimal. Bạn đã tạo các file mẫu với dữ liệu văn bản và binary, và khám phá các tùy chọn khác nhau có sẵn với lệnh od
để tùy chỉnh định dạng đầu ra. Bạn đã học cách sử dụng tùy chọn -t
để chỉ định định dạng đầu ra mong muốn, chẳng hạn như octal 1 byte, hexadecimal 1 byte và định dạng ký tự (ASCII). Ngoài ra, bạn đã khám phá cách kết hợp nhiều tùy chọn để tùy chỉnh thêm đầu ra.