[偶会用到]如何在C语言中巧用正则表达式,如:Linux下抓包过滤掉图片头。

jackxiang 2014-2-7 18:13 | |
背景:如:Linux下pcap抓包过滤掉图片头,pcap 的过滤器也能过滤,但小工具没有必要,用正则足已,BPF 过滤代码从逻辑上看很类似于汇编语言,但它实际上是机器语言,匹配下这样的的串如不是不显示不定入:Content-Type: image/x-icon 这样的,可以匹配到像session及get变量/post变量等都可以用正则,为此,特备案记录。
附录:
pcap 的过滤器是以已声明的谓词语法为基础的。过滤器是一个 ASCII 字符串,它包含了一个过滤 表达式。pcap_compile()把这个表达式编译成内核级的包过滤器。 这个表达式会选择那些数据包将会被堆存。摘自: http://wenku.baidu.com/link?url=Q-pBW07zxVTcuZFDljeezTVy2B6MMgpwncTtM8v-yd4CmV69FNXq2gBr2w-g4FDv3Jf720Ks4-LMXqh7qAhI7vIkO71w2X_GwLlnw4F2hd7
简单的C代码如下:

regexp.c

编译上面的C代码如下,make.sh
gcc regexp.c -o regexp

对代码进行实践,匹配到正则的情况如下:


实践来源:http://tech.ccidnet.com/art/302/20040319/97027_1.html
多次摘抄的,一样的代码其给转意或变成别的了都编译不过,出现乱码,上面这个可以编译通过,不容易啊。

于是,试着仿照写一个,改动调试了解如下:



编译:
gcc regexp4pcap.c -o regexp4pcap

执行:
[root@test c_rege_codes]# ./regexp4pcap
pattern=GET.*\.js
lbuf=abc
GET /themes/zh/js/xy.js?ver=2.006 HTTP/1.0 def123
0001: abc
GET /themes/zh/js/xy.js?ver=2.006 HTTP/1.0 def123
  $0='GET /themes/zh/js/xy.js'

注意:这里的.js里的点得转意,否则匹配不到哟:http://bbs.csdn.net/topics/340040294
\\s忘记了转义

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6998/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2014-2-8 15:43
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]