曲径通幽论坛

标题: 批量制作十六进制数 [打印本页]

作者: beyes    时间: 2012-10-5 08:47
标题: 批量制作十六进制数
需要用多个十六进制整数初始化 C 程序中的字符数组(shellcode),但是现在从某个编辑器中复制到的十六进制数并没有前缀 0x 以及每个字节后的逗号:
00 00 00 00 00 01 00 12 4c 6f 67 69 6e 53 65 72
76 69 63 65 2e 6c 6f 67 69 6e 00 02 2f 31 00 00
00 15 0a 00 00 00 01 02 00 0d 36 30 31 36 35 31
2c 30 30 31 34 31 33

使用 sed 的正则表达式处理如下:
cat tmp.txt |sed -r 's/[0-9][0-9]/0x&,/g' | sed 's/[0-9][a-f]/0x&,/g' |sed 's/[a-f][0-9]/0x&,/g' |sed 's/[a-f][a-f]/0x&,/g'
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x12, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x00, 0x02, 0x2f, 0x31, 0x00, 0x00,
0x00, 0x15, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x0d, 0x36, 0x30, 0x31, 0x36, 0x35, 0x31,
0x2c, 0x30, 0x30, 0x31, 0x34, 0x31, 0x33,
命令中的 & 符号表示匹配部分,-r 选项表示使用正则表达式。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2