Board logo

标题: [代码合集] [已解决]批处理能不能根据16进制的地址来截取一个2M的文件 [打印本页]

作者: shchaoge    时间: 2012-11-7 00:37     标题: [已解决]批处理能不能根据16进制的地址来截取一个2M的文件

以前提的这个文件  高手们帮小弟搞定了  当我的文件大小是2M   用debug 就不可以了  大家帮忙啊
有个文件   我想截取16进制地址0010到1000之间的数值   这个有什么办法能做到  用第三方工具也可以

http://www.bathome.net/viewthread.php?from=notice&tid=19896
作者: tmplinshi    时间: 2012-11-7 09:18

本帖最后由 tmplinshi 于 2012-11-7 13:17 编辑
  1. xxd -s 0x010 test.txt | sed "/^0000010:/,/^0001000:/!d" | xxd -r
复制代码
xxd 下载地址: http://bathome.net/viewthread.php?tid=19976
sed 下载地址: http://bathome.net/thread-15605-1-4.html
作者: CrLf    时间: 2012-11-7 18:42

没试过能不能读写大文件,所以还是用笨办法:
  1. @echo off
  2. more +4 %0|debug t.com
  3. t.com<1.txt
  4. pause&exit
  5. a
  6. mov cl,10
  7. mov ah,8
  8. ;skip:
  9. int 21
  10. loop 104
  11. mov cx,ff0
  12. ;getch:
  13. mov ah,8
  14. int 21
  15. mov ah,2
  16. mov dl,al
  17. int 21
  18. mov ah,b
  19. int 21
  20. cmp al,0
  21. jz 11f
  22. loop 10b
  23. ;end:
  24. int 20
  25. rcx
  26. 121
  27. w
  28. q
复制代码

作者: tmplinshi    时间: 2012-11-10 03:34

  1. xdw -b +0x10-0x1000 1.txt
复制代码
xdw.exe 下载地址: http://bathome.net/thread-20039-1-1.html
作者: shchaoge    时间: 2012-11-10 22:30

各位老大  我试了3个办法都不行  我把文件发上去  您们帮我试试
作者: tmplinshi    时间: 2012-11-11 08:22

本帖最后由 tmplinshi 于 2012-11-13 12:52 编辑
各位老大  我试了3个办法都不行  我把文件发上去  您们帮我试试
shchaoge 发表于 2012-11-10 22:30



    能够截取。但因为有很多“非打印”字符,for 命令读取不了。可以用 sed 提取可打印字符:
  1. xdw -b +0x10-0x1000 nv_data.bin | sed "s/[^ -~]\+//g"
复制代码
或者用 strings:
  1. xdw -b +0x10-0x1000 nv_data.bin | strings
复制代码
strings.exe 下载地址: http://bathome.net/viewthread.php?tid=20102
作者: shchaoge    时间: 2012-11-14 23:53

老大们  还是不行  我电脑是XP  能用吗
作者: tmplinshi    时间: 2012-11-15 09:31

回复 7# shchaoge


    请贴一下你使用的代码和运行结果。
作者: shchaoge    时间: 2012-11-15 21:30

用这个代码:  xdw -b +0x10-0x1000 1.txt     结果批处理也就一闪而过
作者: shchaoge    时间: 2012-11-15 21:37

用这个代码:xdw -b +0x10-0x1000 nv_data.bin | strings  结果:
作者: tmplinshi    时间: 2012-11-16 07:59

本帖最后由 tmplinshi 于 2012-11-16 08:01 编辑

回复 10# shchaoge


    这不是你想要的结果吗?不是的话,你希望的结果是什么?

    如果你要输出结果到文件,改成这样就好了:
xdw -b +0x10-0x1000 nv_data.bin | strings >o.txt

作者: shchaoge    时间: 2012-11-16 22:06

我希望结果是  截取nv_data.bin文件0010到1000之间的数值
作者: tmplinshi    时间: 2012-11-17 07:36

我希望结果是  截取nv_data.bin文件0010到1000之间的数值
shchaoge 发表于 2012-11-16 22:06



可否以 nv_data.bin 这个文件为例给出具体的结果?我理解不了你说的“数值”是什么意思。
作者: shchaoge    时间: 2012-11-17 23:29

以5楼的文件nv_data.bin为例:0--100的数值就是CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBF85E2B91208EAD2A9E35F1CD6C5CC118F717E8952A07314ABA47CF3A0D5271001000000E0000000020074006C00000000000000000081300100000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020000009A74CF05202020205350363236305F4D4F44454D5F30332E313231392E30355F424C303120323031322D4D61792D32322032303A34333A3536200A202020205044425F4E4F545F415641494C41424C45200A00000000000000000000000000000000000000000000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC8B34B71CC6C8F4E2D22113745FD9B5BA


我想提取:10--A0的数值就是CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBF85E2B91208EAD2A9E35F1CD6C5CC118F717E8952A07314ABA47CF3A0D5271001000000E0000000020074006C00000000000000000081300100000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020000009A74CF05202020205350363236305F4D4F44454D5F30332E313231392E30355F424C303120323031322D4D61792D32322032303A34333A35
作者: tmplinshi    时间: 2012-11-18 00:23

本帖最后由 tmplinshi 于 2012-11-18 00:34 编辑

回复 14# shchaoge
  1. xdw -b +0x10-0x1000 nv_data.bin | xxd -p
复制代码

作者: shchaoge    时间: 2012-11-18 22:11

谢谢斑竹  基本达到我的要求  我用  xdw -b +0x10-0x1000 nv_data.bin | xxd -p >1.TXT  
文本上每行怎么只能显示60个字节  如果能不换行就好了  也就是都连在一起
作者: tmplinshi    时间: 2012-11-18 23:44

回复 16# shchaoge

修改了一下 xxd,把 -p 改成了不换行输出。
  1. xd -b +0x10-0x1000 nv_data.bin | xxd2 -u -p >1.TXT
复制代码

作者: shchaoge    时间: 2012-11-19 22:06

谢谢  完全搞定




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2