vim+xxd=强大的十六进制编辑器

简介: http://hi.baidu.com/hilojack/item/9cf0c307f7c03a133b53ee7avim是黑客文化中强大的编辑器。利用它调用外部十六进制文件显示命令xxd就可以顺利的编辑二进制文件了。
http://hi.baidu.com/hilojack/item/9cf0c307f7c03a133b53ee7a

vim是黑客文化中强大的编辑器。利用它调用外部十六进制文件显示命令xxd就可以顺利的编辑二进制文件了。
其中,%在vimComandLine时代表当前文件的路径,xxd是以十六进制显示一个文件,xxd -r>是将十六进制还原为二进制。
下面举一个例子,备份我们的MBR。
sudo dd if=/dev/sda of=~/mbr.backup bs=512 count=1
题外话:其中含有分区表,这时我们可以利用这个命令恢复我们的MBr:
sudo dd if=~/mbr.backup of=/dev/sda bs=512 count=1
sudo dd if=~/mbr.backup of=/dev/sda bs=1 count=66 seek=446(恢复分区表)
好了,这个就是我们的MBR文件,是二进制的。

首先以二进制的方式打开它:
vim mbr.backup -b
再在vim 命令模式下输入:
:%!xxd            #参数%指当前所编辑的文件 
此时MBR文件会以十六进制显示,现在就可以编辑它了。。

========================================================

 

0000090: be88 7de8 1c01 be05 7cf6 c280 7448 b441  ..}.....|...tH.A

00000a0: bbaa 55cd 135a 5272 3d81 fb55 aa75 3783  ..U..ZRr=..U.u7.

00000b0: e101 7432 31c0 8944 0440 8844 ff89 4402  ..t21..D.@.D..D.

00000c0: c704 1000 668b 1e5c 7c66 895c 0866 8b1e  ....f..\|f.\.f..

00000d0: 607c 6689 5c0c c744 0600 70b4 42cd 1372  `|f.\..D..p.B..r

00000e0: 05bb 0070 eb76 b408 cd13 730d f6c2 800f  ...p.v....s.....

00000f0: 84d0 00be 937d e982 0066 0fb6 c688 64ff  .....}...f....d.

0000100: 4066 8944 040f b6d1 c1e2 0288 e888 f440  @f.D...........@

0000110: 8944 080f b6c2 c0e8 0266 8904 66a1 607c  .D.......f..f.`|

0000120: 6609 c075 4e66 a15c 7c66 31d2 66f7 3488  f..uNf.\|f1.f.4.

0000130: d131 d266 f774 043b 4408 7d37 fec1 88c5  .1.f.t.;D.}7....

0000140: 30c0 c1e8 0208 c188 d05a 88c6 bb00 708e  0........Z....p.

0000150: c331 dbb8 0102 cd13 721e 8cc3 601e b900  .1......r...`...

0000160: 018e db31 f6bf 0080 8ec6 fcf3 a51f 61ff  ...1..........a.

0000170: 265a 7cbe 8e7d eb03 be9d 7de8 3400 bea2  &Z|..}....}.4...

0000180: 7de8 2e00 cd18 ebfe 4752 5542 2000 4765  }.......GRUB .Ge

0000190: 6f6d 0048 6172 6420 4469 736b 0052 6561  om.Hard Disk.Rea

00001a0: 6400 2045 7272 6f72 0d0a 00bb 0100 b40e  d. Error........

00001b0: cd10 ac3c 0075 f4c3 e3b9 76fb 0000 8001  ...

00001c0: 0100 07fe ffff 3f00 0000 499d d801 00fe  ......?...I.....

00001d0: ffff 0ffe ffff c59d d801 eb4c 6a23 0000  ...........Lj#..

00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.


================================================================
编辑完了以后,我们需要还原为二进制文件:
:%!xxd -r                                    #参数-r是指将当前的十六进制转换为二进制


好了,保存退出:
:wq

==========================================

VIM显示十六进制出错 出处:http://www.cnblogs.com/lidp/archive/2009/06/26/1697873.html

 在linux下用vim打开jpg文件,使用%!xxd进行16进制显示时,文件头显示为"3f3f 
3f3f 0011 0804"文件尾端显示为 "3f3f 
0a";而同样的操作在windows下,就显示为"ffd8 ffc0 0011 0804"和 "ffd9 
0a",这才是正确的jpeg文件头和文件尾标志。
很蹊跷 !
初时,我以为是jpeg在windows和linux下是不同的文件头,后来把jpg后缀去掉,就一个纯文件,现象依旧。考虑可能不是操作系统的差异了。
重新使用ghex打开jpeg数据查看,发现显示正常,为"ffd8 ffc0 0011 
0804"和 "ffd9 0a",正确。
估计应该是vim的问题了。
3f的ascii码是?,那表示vim对文件头、尾没有正常解析,是不是和vim解析文件时用的编码格式有关系呢?
打开.vimrc配置项,屏蔽掉下面这句话:
set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom
再用vim打开jpeg文件,显示"ffd8 ffc0 0011 0804"和 "ffd9 0a", 
显示正确。
原来,为了支持识别和显示中文,我规定了vim的fileencodings, 
当vim打开文件时,会使用规定的编码格式对数据进行解析,可惜jpeg的文件头FFD8、尾FFD9 
不是任何一个中文的编码,vim找不到对应的中文字,就显示为??,即:3f3f。
至此,困惑全部打开。
 
相关文章
一款非常棒的十六进制编辑器 —— 010 Editor
一款非常棒的十六进制编辑器 —— 010 Editor
|
安全 数据安全/隐私保护
|
存储 Linux 编译器
vim编辑器和gcc/g++编辑器的使用讲解
vim编辑器和gcc/g++编辑器的使用讲解
293 2
|
Linux 编译器 开发工具
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
294 1
|
Linux Shell 开发工具
【linux】Linux编辑器-vim
【linux】Linux编辑器-vim
184 0
|
开发工具
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
vi编辑器,现在vi\vim是文本文件进行编辑的最佳选择,Vim是vi的加强的版本,兼容vi的所有指令,vim编辑器有三种工作模式,一开始进入的是命令模式,命令模式i是插入的意思,两下y+p复制内容
|
开发工具
Vim 编辑器:高效文本编辑的瑞士军刀
**Vim 概览:** Vim 是一个功能丰富的文本编辑器,以其高度可定制性著称。文章介绍了 Vim 的高效使用技巧,包括快捷打开文件、命令行模式下的常用命令、查找与替换、删除和复制文本。还讨论了配置 `.vimrc` 文件以自定义设置,如改变 leader 键、设置缩进和高亮,并展示了安装插件如 vim-airline 和 vim-snazzy 的方法。通过这些技巧,用户能提升 Vim 使用效率。
251 5
|
Ubuntu 搜索推荐 Linux
Linux的Vim编辑器详解
Linux的Vim编辑器详解
|
弹性计算 Unix Linux
Linux:文本编辑器 - vim
Linux:文本编辑器 - vim
141 1
|
Linux 开发工具 数据安全/隐私保护
【linux】如何优雅的使用vim编辑器
【linux】如何优雅的使用vim编辑器