Lệnh * nix sau đây trình bày một biểu diễn hex của một IP và cổng (127.0.0.1:80) vào lệnh hexdump.Endianness trong Unix hexdump
printf "\x7F\x00\x00\x01\x00\x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "\n"'
Cờ -e cho phép định dạng tùy ý phân tích đầu vào. Trong trường hợp này, chúng tôi đang phân tích cú pháp ba octet đầu tiên của IP thành các số thập phân không dấu theo sau là dấu chấm. Octet cuối cùng cũng được phân tích thành một số thập phân không dấu nhưng sau đó là dấu hai chấm. Cuối cùng - và đây là nơi mà vấn đề nằm - 2 byte cho cổng được phân tích cú pháp dưới dạng một dấu thập phân đơn lẻ, theo sau là một dòng mới.
Tùy thuộc vào độ cuối của hệ thống thực hiện lệnh này, kết quả sẽ khác nhau. Một hệ thống lớn cuối cùng sẽ hiển thị đúng cổng 80; trong khi hệ thống nhỏ gọn sẽ hiển thị cổng 20480.
Có cách nào để thao tác hexdump để nhận biết về độ tin cậy trong khi vẫn cho phép đặc tả định dạng tùy ý qua -e không?
Tôi cho rằng không thể chuẩn bị đầu vào bằng cách hoán đổi hai byte cuối nếu nền tảng là nhỏ, vì bạn đang đặt câu hỏi? –
Có vẻ như việc hoán đổi byte sẽ là cần thiết? – shrizza