Linux下制作bin文件,并对其进行截取、合并、修改

4 篇文章 0 订阅

在某些情况下,可能会用到全为某个值的 bin 文件,可使用 dd 命令配合 /dev/zero 这个特殊的文件设备,来生成全为 0x00 的 bin 文件。然后再使用 tr 命令,替换0x00 为 特定的值,即可生成全是某个值的bin文件。

命令说明:

  1. Linux dd 命令
  2. Linux tr命令

1.生成全是0的bin文件

制作全是0的bin文件,文件大小为(bs * count):

# 生成512byte全为0的bin文件:
dd if=/dev/zero of=all_0x00.bin bs=1 count=512

# 生成5K全为0的bin文件:
dd if=/dev/zero of=all_0x00.bin bs=1K count=5

# 生成5M全为0的bin文件:
dd if=/dev/zero of=all_0x00.bin bs=1M count=5

2.生成全是FF的bin文件

使用 tr 命令,替换0x00 为 0xFF,命令如下所示:

#生成512byte的全FF的bin文件
dd if=/dev/zero  bs=1 count=512 | tr "\000" "\377" > all_0xff.bin

#生成5K的全FF的bin文件
dd if=/dev/zero  bs=1K count=5 | tr "\000" "\377" > all_0xff.bin

#生成5M的全FF的bin文件
dd if=/dev/zero  bs=1M count=5 | tr "\000" "\377" > all_0xff.bin

其中 \000,\377 为八进制数,即分别为0x00,0xFF。这里使用tr命令将0x00替换为0xff。

3.合并bin文件

cat all_0x00.bin all_0xff.bin > all.bin

4.截取bin文件

从bin文件的(bs * skip)位置,截取(bs * count)长度的bin文件:

# 从输入文件头部偏移(1 * 0)开始,截取(1 * 512)成单独文件
dd if=all.bin bs=1 count=512 skip=0 of=0x00_0xff.bin

# 从输入文件头部偏移(1 * 32)byte开始,截取(1 * 512)成单独文件
dd if=all.bin bs=1 count=512 skip=32 of=0x00_0xff.bin

# 从输入文件头部偏移(1K * 2)byte开始,截取(1K * 512)成单独文件
dd if=all.bin bs=1K count=512 skip=2 of=0x00_0xff.bin

# 从输入文件头部偏移(1M * 2)byte开始,截取(1M * 3)成单独文件
dd if=all.bin bs=1M count=3 skip=2 of=0x00_0xff.bin

5.向bin文件的指定位置写入内容

向bin文件的(bs * seek)位置写入指定的十六进制数,文件大小保持不变:

# 将0x11 0x22写入bin文件的开头,bin文件大小不变
echo -e -n "\x11\x22" | dd bs=1 seek=0 conv=notrunc of=all_0xff.bin

# 将0x33 0x44写入bin文件的(1 * 256 = 256)位置,bin文件大小不变
echo -e -n "\x33\x44" | dd bs=1 seek=256 conv=notrunc of=all_0xff.bin

# 将0x55 0x66写入bin文件的(1K * 1 = 0x400)位置,bin文件大小不变
echo -e -n "\x55\x66" | dd bs=1K seek=1 conv=notrunc of=all_0xff.bin

6.参考博文

命令生成自定义 bin 文件

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值