前言
不少做开发的同学,经常要验证一些数据请求包、网络传输的正确性及内容分析,应该对网络抓包都不陌生。ngrep是Linux的一个网络抓包工具,跟tcpdump类似,可以用来侦听各端口的数据流入和流出。
由于安装ngrep需用到libpcap库, 所以支持大量的操作系统和网络协议。能识别TCP、UDP和ICMP包,理解bpf的过滤机制。
ngrep安装
# ngrep安装之前,首先在服务器安装libpacp
yum install libpcap libpcap-devel -y
# 由于依赖libpacp库,所以支持大量的操作系统和网络协议
yum install ngrep
安装之后输入ngrep -V验证是否验证成功,如下图展示,说明安装成功了!
语法
ngrep <-hNXViwqpevxlDtTRM> <-IO pcap_dump> <-n num> <-d dev> <-A num>
<-s snaplen> <-S limitlen> <-W normal|byline|single|none> <-c cols>
<-P char> <-F file> <-K count>
<match expression> <bpf filter>
参数说明
参数项 | 说明 |
---|---|
-e | 显示空数据包 |
-i | 忽略大小写 |
-v | 反转匹配 |
-R | don't do privilege revocation logic |
-x | 以16进制格式显示 |
-X | 以16进制格式匹配 |
-w | 整字匹配 |
-p | 不使用混杂模式 |
-l | make stdout line buffered |
-D | replay pcap_dumps with their recorded time intervals |
-t | 在每个匹配的包之前显示时间戳 |
-T | 显示上一个匹配的数据包之间的时间间隔 |
-M | 仅进行单行匹配 |
-I | 从文件中读取数据进行匹配 |
-O | 将匹配的数据保存到文件 |
-n | 仅捕获指定数目的数据包进行查看 |
-A | 匹配到数据包后dump随后的指定数目的数据包 |
-s | set the bpf caplen |
-S | set the limitlen on matched packets |
-W | 设置显示格式byline将解析包中的换行符 |
-c | 强制显示列的宽度 |
-P | set the non-printable display char to what is specified |
-F | 使用文件中定义的bpf(Berkeley Packet Filter) |
-N | 显示由IANA定义的子协议号 |
-d | 使用哪个网卡,可以用 |
-L | 查询网卡接口 |
示例
# 捕捉10.185.172.70机器IP的request和response,`-W byline`用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。`-d eth0` 用来监听网卡
ngrep -d eth0 -q '2771122141' -W byline src 10.185.172.70
# 捕捉80端口的request和response
ngrep -W byline -d eth0 port 80
# 可以用-d any来捕捉所有的包
ngrep '[a-zA-Z]' -t -W byline -d any tcp port 8088
拓展
环回接口处理IP数据报的过程
结语
以上是Linux网络抓包工具ngrep命令安装及使用介绍,希望能帮助到需要的同学,更多文章请关注本站其他内容,感谢!