hexdump command in linux

Giới thiệu về lệnh hexdump trong Linux: Giải mã bí ẩn dữ liệu

Trong thế giới kỹ thuật số ngày nay, dữ liệu đóng vai trò then chốt. Chúng ta thường xuyên làm việc với các loại file khác nhau, từ văn bản đơn giản đến hình ảnh phức tạp và các chương trình thực thi. Đôi khi, việc hiểu cấu trúc bên trong của một file hoặc một luồng dữ liệu trở nên vô cùng quan trọng. Đó là lúc lệnh hexdump trong Linux phát huy tác dụng.

Lệnh hexdump là một công cụ dòng lệnh mạnh mẽ cho phép bạn xem nội dung của một file ở định dạng thập lục phân (hexadecimal) và ASCII. Điều này đặc biệt hữu ích khi bạn cần phân tích các file nhị phân, gỡ lỗi chương trình, hoặc đơn giản là muốn hiểu rõ hơn về cách dữ liệu được lưu trữ.

Bài viết này sẽ cung cấp cho bạn một cái nhìn toàn diện về lệnh hexdump, từ cú pháp cơ bản đến các tùy chọn nâng cao, cùng với các ví dụ thực tế để bạn có thể áp dụng vào công việc hàng ngày. Chúng ta sẽ cùng nhau khám phá sức mạnh của hexdump và cách nó có thể giúp bạn giải mã những bí ẩn ẩn sau dữ liệu.

Cú pháp cơ bản của lệnh hexdump

Cú pháp cơ bản của lệnh hexdump rất đơn giản:

hexdump [tùy_chọn] [file]
  • hexdump: Lệnh gọi chương trình.
  • [tùy_chọn]: Các tùy chọn điều chỉnh cách hexdump hoạt động (sẽ được giải thích chi tiết bên dưới).
  • [file]: Tên file bạn muốn xem nội dung. Nếu bạn không chỉ định file, hexdump sẽ đọc từ đầu vào tiêu chuẩn (stdin).

Ví dụ, để xem nội dung của file "example.txt", bạn có thể sử dụng lệnh:

hexdump example.txt

Các tùy chọn phổ biến của lệnh hexdump

Lệnh hexdump cung cấp rất nhiều tùy chọn để bạn có thể tùy chỉnh đầu ra theo nhu cầu. Dưới đây là một số tùy chọn phổ biến nhất:

  • -C (Canonical): Hiển thị đầu ra ở định dạng canonical, bao gồm địa chỉ offset, 16 byte dữ liệu ở dạng hex, và phiên bản ASCII tương ứng (nếu có). Đây là tùy chọn thường được sử dụng nhất vì tính dễ đọc và đầy đủ thông tin.
  • -b (One-byte octal display): Hiển thị mỗi byte dữ liệu dưới dạng số bát phân (octal).
  • -c (One-byte character display): Hiển thị mỗi byte dữ liệu dưới dạng ký tự ASCII. Các ký tự không in được sẽ được hiển thị dưới dạng ký tự đặc biệt.
  • -d (Two-byte decimal display): Hiển thị mỗi hai byte dữ liệu dưới dạng số thập phân không dấu.
  • -o (Two-byte octal display): Hiển thị mỗi hai byte dữ liệu dưới dạng số bát phân không dấu.
  • -x (Two-byte hexadecimal display): Hiển thị mỗi hai byte dữ liệu dưới dạng số thập lục phân.
  • -n length: Chỉ hiển thị length số byte đầu tiên của file.
  • -s skip: Bỏ qua skip số byte đầu tiên của file trước khi bắt đầu hiển thị.
  • -v (Verbose): Hiển thị tất cả dữ liệu, kể cả các dòng trùng lặp. Thông thường, hexdump sẽ bỏ qua các dòng trùng lặp để tiết kiệm không gian.

Ví dụ:

hexdump -C example.txt  # Hiển thị ở định dạng canonical
hexdump -n 16 example.txt # Chỉ hiển thị 16 byte đầu tiên
hexdump -s 1024 example.txt # Bỏ qua 1024 byte đầu tiên

Ví dụ thực tế sử dụng lệnh hexdump

Để minh họa rõ hơn cách sử dụng lệnh hexdump, chúng ta hãy xem xét một vài ví dụ thực tế:

1. Phân tích file ảnh JPEG

File ảnh JPEG chứa thông tin về kích thước, độ phân giải, và dữ liệu ảnh được nén. Bạn có thể sử dụng hexdump để xem cấu trúc cơ bản của file JPEG và tìm kiếm các marker quan trọng như Start of Image (SOI) và End of Image (EOI).

hexdump -C image.jpg | head -n 20

Lệnh trên sẽ hiển thị 20 dòng đầu tiên của file "image.jpg" ở định dạng canonical. Bạn có thể tìm kiếm các byte có giá trị FF D8 (SOI) và FF D9 (EOI) để xác định điểm bắt đầu và kết thúc của dữ liệu ảnh.

2. Kiểm tra file thực thi (Executable)

File thực thi chứa mã máy và các thông tin liên quan để hệ điều hành có thể thực thi chương trình. Sử dụng hexdump giúp bạn kiểm tra header của file thực thi (ví dụ, file ELF trên Linux) để xác định loại file, kiến trúc, và các thông tin quan trọng khác.

hexdump -C program | head -n 20

Phân tích các byte đầu tiên của file thực thi có thể giúp bạn xác định xem đó có phải là file thực thi hợp lệ hay không.

3. Gỡ lỗi giao thức mạng

Khi làm việc với giao thức mạng, đôi khi bạn cần xem nội dung của các gói tin (packets) để gỡ lỗi. Bạn có thể sử dụng tcpdump để chụp các gói tin và sau đó sử dụng hexdump để xem nội dung của chúng.

tcpdump -i eth0 -w capture.pcap
hexdump -C capture.pcap | less

Lệnh trên sẽ chụp các gói tin trên interface "eth0" và lưu vào file "capture.pcap". Sau đó, bạn có thể sử dụng hexdump để xem nội dung của file "capture.pcap" và sử dụng less để duyệt qua kết quả.

4. So sánh hai file

Bạn có thể sử dụng hexdump kết hợp với các công cụ khác như diff để so sánh hai file ở cấp độ byte. Điều này hữu ích khi bạn cần tìm ra sự khác biệt giữa hai phiên bản của một file.

hexdump -C file1 > file1.hex
hexdump -C file2 > file2.hex
diff file1.hex file2.hex

Lệnh trên sẽ tạo ra hai file "file1.hex" và "file2.hex" chứa nội dung của "file1" và "file2" ở định dạng hexdump. Sau đó, bạn có thể sử dụng diff để so sánh hai file này và tìm ra sự khác biệt.

Bảng so sánh các tùy chọn phổ biến của lệnh hexdump

Tùy chọn Mô tả Ví dụ
-C Hiển thị ở định dạng canonical (hex + ASCII). hexdump -C file.txt
-b Hiển thị mỗi byte dưới dạng số bát phân. hexdump -b file.txt
-c Hiển thị mỗi byte dưới dạng ký tự ASCII. hexdump -c file.txt
-d Hiển thị mỗi hai byte dưới dạng số thập phân. hexdump -d file.txt
-x Hiển thị mỗi hai byte dưới dạng số thập lục phân. hexdump -x file.txt
-n length Chỉ hiển thị length byte đầu tiên. hexdump -n 100 file.txt
-s skip Bỏ qua skip byte đầu tiên. hexdump -s 512 file.txt

FAQ về lệnh hexdump

Câu hỏi: Làm thế nào để hiển thị chỉ một phần của file bằng hexdump?

Trả lời: Sử dụng tùy chọn -n để chỉ định số byte bạn muốn hiển thị và tùy chọn -s để bỏ qua một số byte nhất định trước khi bắt đầu hiển thị.

Câu hỏi: Tại sao một số dòng trong đầu ra của hexdump lại bị bỏ qua?

Trả lời: Theo mặc định, hexdump sẽ bỏ qua các dòng trùng lặp để tiết kiệm không gian. Nếu bạn muốn hiển thị tất cả các dòng, hãy sử dụng tùy chọn -v.

Câu hỏi: Làm thế nào để lưu đầu ra của hexdump vào một file?

Trả lời: Sử dụng toán tử chuyển hướng (>) để lưu đầu ra vào một file. Ví dụ: hexdump -C file.txt > output.txt.

Câu hỏi: Hexdump có thể được sử dụng để chỉnh sửa file không?

Trả lời: Không, hexdump chỉ được sử dụng để xem nội dung của file. Để chỉnh sửa file ở cấp độ byte, bạn cần sử dụng các công cụ khác như hexedit hoặc vim (với chế độ hex).

Kết luận

Lệnh hexdump là một công cụ vô giá cho bất kỳ ai làm việc với dữ liệu ở cấp độ thấp. Khả năng xem và phân tích nội dung của file ở định dạng thập lục phân và ASCII mở ra một thế giới mới để hiểu rõ hơn về cách dữ liệu được lưu trữ và xử lý.

Hy vọng rằng bài viết này đã cung cấp cho bạn một nền tảng vững chắc để bắt đầu sử dụng lệnh hexdump một cách hiệu quả. Hãy thử nghiệm với các tùy chọn khác nhau và áp dụng chúng vào các tình huống thực tế để khám phá toàn bộ tiềm năng của công cụ mạnh mẽ này. Chúc bạn thành công trên hành trình khám phá thế giới dữ liệu!

Last Updated : 22/08/2025