ngrep
方便的数据包匹配和显示工具
补充说明
ngrep命令 是grep命令的网络版,他力求更多的grep特征,用于搜寻指定的数据包。正由于安装ngrep需用到libpcap库, 所以支持大量的操作系统和网络协议。能识别TCP、UDP和ICMP包,理解bpf的过滤机制。
安装
ngrep命令的下载地址:http://ngrep.sourceforge.net/,libpcap下载地址:http://www.tcpdump.org/。先用`yum install libpcap`完全安装libpcap,注意有时候用libpcap安装包安装的不完整会影响ngrep的使用。
如果yum无法安装就用以下步骤安装libpcap:
1 | <!-- more --> |
ngrep的安装就是 configure/make/make install 三部曲。
注:configure时是遇到 please wipe out all unused pcap installations,添加以下选项:
1 | ./configure --with-pcap-includes=/usr/local/include/pcap |
在安装后输入ngrep来验证下安装是否成功。
语法
1 | ngrep <-LhNXViwqpevxlDtTRM> <-IO pcap_dump> <-n num> <-d dev> <-A num> |
选项
1 | -e :显示空数据包 |
实例
捕捉cloudian:18080端口的request和response,-W byline
用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。-d lo
是监听本地网卡:
1 | ngrep -W byline -d lo port 18080 |
捕捉amazon:80端口的request和response。-d eth0是
用来监听对外的网卡:
1 | ngrep -W byline -d eth0 port 80 |
可以用-d any
来捕捉所有的包:
1 | ngrep '[a-zA-Z]' -t -W byline -d any tcp port 18080 |
捕获字符串.flv
,比如要查看在Web Flash 视频中的.flv文件的下载地址:
1 | ngrep -d3 -N -q \.flv |
打开一个视频页面:
1 | T(6) 10.132.34.23:24860 -> 61.142.208.154:80 [AP] |
OK。地址已经找到了,就是http://f59.c31.56.com/flvdownload/12/19/ggyg7741@56.com_56flv_zhajm_11955697397.flv
加个-W byline
参数后,将解析包中的换行符:
1 | T(6) 2007/11/25 15:56:12.192619 10.132.34.23:26365 -> 59.151.21.101:80 [AP] |