linux c语言 把一个文件用二进制方式打开,给一个二进制数串向文件中匹配

linux c语言 把一个文件用二进制方式打开,给一个二进制数串向文件中匹配,第1张

二进制是按照字节匹配还是按照位匹配?

即是不是有可能从某个字节中间匹配?

比如

10100100 11001100

给定的如果是 00100110

如果按字节匹配就是没有匹配的,如果按位就可以匹配上。

这个直接影响代码,先得确定下。

linux 去除文件中的二进制符号:^M。

Linux文件中出现^M字符一般是因为这个文件曾经是在Windows系统中编辑保存的,在Windows中编辑保存的文本文件的回车符是CR和LF两个符号。

而Linux文件中的回车符只是一个LF符号,所以当Windows的文本文件放到Linux后,回车的位置会多出来一个^M的符号(Linux的文本文件在Windows上打开,在回车的位置上变成了一个方块并且回车不会换行)。

特点:

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。

它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该 *** 作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。

其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。 

一、在Linux下查看二进制文件的软件:

xxd (2进制)

hexdump (16进制)

二、编辑:

1、biew

2、hexedit

3、vim

Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读

取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,

其它的就跟原来那个一模一样。

要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:

vim -b datafile

这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'

设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。

二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运

行出问题。用 "R" 命令进入替换模式。

文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:

:set display=uhex

另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 字符上时,

该命令的输出看起来就像这样:

27, Hex 1b, Octal 033

文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:

:set nowrap

字 节 位 置

要发现你在文件中的当前字节位置,请用这个命令:

g CTRL-G

其输出十分冗长:

Col 9-16 of 9-16Line 277 of 330Word 1806 of 2058Byte 10580 of 12206

最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'

选项导致换行符字节不同的影响。

要移到文件中某个指定的字节,请用 "Go" 命令。例如,要移到字节 2345:

2345go

使 用 XXD

一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim

里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。

首先以二进制方式编辑这个文件:

vim -b datafile

现在用 xxd 把这个文件转换成十六进制:

:%!xxd

文本看起来像这样:

0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9....tt.+NI

0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0

0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7'1.".....i.59.

现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。

修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。

最后,用下面的命令把它转换回来:

:%!xxd -r

只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8974315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存