加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix hexdump中的字节序

发布时间:2020-12-16 01:19:50 所属栏目:安全 来源:网络整理
导读:以下* nix命令将一个IP和端口(127.0.0.1:80)的十六进制表示形式管道到hexdump命令中. printf "x7Fx00x00x01x00x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "n"' -e标志允许任意格式解析输入.在这种情况下,我们将IP的前三个八位字节解析为无符号
以下* nix命令将一个IP和端口(127.0.0.1:80)的十六进制表示形式管道到hexdump命令中.
printf "x7Fx00x00x01x00x50" | hexdump -e '3/1 "%u." /1 "%u:" 1/2 "%u" "n"'

-e标志允许任意格式解析输入.在这种情况下,我们将IP的前三个八位字节解析为无符号小数,后跟一个点.最后的八位字节也被解析为无符号小数,但后跟冒号.最后 – 这就是问题所在 – 端口的2个字节被解析为单个无符号小数,后跟换行符.

根据执行此命令的系统的字节顺序,结果会有所不同.一个大端系统将正确显示端口80;而小端系统将显示端口20480.

有没有办法操纵hexdump来了解字节顺序,同时仍允许通过-e进行任意格式规范?

我不知道它可以用hexdump完成,但它很容易
在perl中:
$printf 'x00x50' | perl -nE 'say unpack "S>"'
80
$printf 'x00x50' | perl -nE 'say unpack "S<"'
20480

您可以调整它以获得您想要的格式. (‘说’需要perl 5.10.使用print for perl< 5.10) (澄清那些希望投票的人,因为我没有“回答问题”.我建议OP替换perl的hexdump.如果必须,请进行投票.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读