Linux中的xxd命令详解

xxd 是一个 十六进制转储(hex dump)工具,通常用于将二进制文件转换为十六进制格式,或者反向转换(十六进制→二进制)。它是 vim 的一部分,但在大多数 Linux 系统(如 Ubuntu)中可以直接使用。


1. 安装 xxd

如果 xxd 未安装,可以通过以下方式安装:

sudo apt update
sudo apt install xxd   # 或安装 vim-common(包含 xxd)

2. 基本用法

(1) 查看文件的十六进制格式

xxd <文件名>

示例

echo "Hello" > test.txt
xxd test.txt

输出

00000000: 4865 6c6c 6f0a                           Hello.
  • 左边:字节偏移量(00000000 表示起始位置)。
  • 中间:十六进制数据(48 65 6c 6c 6f 0aH e l l o \n 的十六进制)。
  • 右边:ASCII 可打印字符(. 表示不可见字符)。

(2) 仅显示十六进制(不显示 ASCII)

xxd -p <文件名>

示例

xxd -p test.txt

输出

48656c6c6f0a

(3) 从十六进制还原为二进制

xxd -r <十六进制文件> <输出文件>

示例

echo "48656c6c6f0a" > hex.txt
xxd -r -p hex.txt > output.txt  # -p 表示纯十六进制模式
cat output.txt

输出

Hello
  • -r:反向模式(十六进制→二进制)。
  • -p:处理纯十六进制字符串(无偏移量或 ASCII 部分)。

3. 常见用途

(1) 发送十六进制数据(结合 nc

echo "48656c6c6f" | xxd -r -p | nc <IP> <端口>
  • 48656c6c6f = "Hello" 的十六进制。
  • xxd -r -p 将其转为二进制,然后 nc 发送。

(2) 查看二进制文件的十六进制

xxd /bin/ls | less  # 查看 ls 命令的二进制结构

(3) 修改二进制文件

  1. 生成十六进制文件:
    xxd original.bin > hex_edit.txt
    
  2. 用文本编辑器修改 hex_edit.txt
  3. 转换回二进制:
    xxd -r hex_edit.txt > modified.bin
    

4. 高级选项

选项说明
-g <字节数>每组显示的字节数(默认 2)
-l <长度>只处理前 N 个字节
-s <偏移量>从指定偏移量开始
-u使用大写十六进制字母
-c <列数>每行显示的字节数(默认 16)

示例(每行 8 字节,大写十六进制):

xxd -u -c 8 test.txt

5. 典型示例

(1) 查看 ELF 文件头

xxd /bin/ls | head -n 10

输出

00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0200 3e00 0100 0000 9850 0000 0000 0000  ..>......P......
...
  • 7f 45 4c 46 = \x7fELF(ELF 文件魔数)。

(2) 生成随机十六进制数据

head -c 16 /dev/urandom | xxd -p

输出

a1b2c3d4e5f67890

6. 总结

  • 查看十六进制xxd <文件>
  • 纯十六进制模式xxd -p <文件>
  • 十六进制→二进制xxd -r -p <十六进制文件> > <输出文件>
  • 网络调试echo "414243" | xxd -r -p | nc <IP> <端口>
  • 二进制分析xxd /bin/ls | less

xxd 是处理二进制和十六进制数据的利器,适用于逆向工程、网络调试、文件分析等场景! 🔍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值