ngrep

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:

wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
tar -zxf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
make && make install

ngrep的安装就是 configure/make/make install 三部曲。

注:configure时是遇到 please wipe out all unused pcap installations,添加以下选项:

./configure --with-pcap-includes=/usr/local/include/pcap

在安装后输入ngrep来验证下安装是否成功。

语法

ngrep <-LhNXViwqpevxlDtTRM> <-IO pcap_dump> <-n num> <-d dev> <-A num>
<-s snaplen> <-S limitlen> <-w normal|byline|single|none> <-c cols>
<-P char> <-F file> <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选项查询
-L # 查询网卡接口

实例

捕捉cloudian:18080端口的request和response,-W byline用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。-d lo是监听本地网卡:

ngrep -W byline -d lo port 18080

捕捉amazon:80端口的request和response。-d eth0是用来监听对外的网卡:

ngrep -W byline -d eth0 port 80

可以用-d any来捕捉所有的包:

ngrep '[a-zA-Z]' -t -W byline -d any tcp port 18080

捕获字符串.flv,比如要查看在Web Flash 视频中的.flv文件的下载地址:

ngrep -d3 -N -q \.flv
interface: \Device\TNT_40_1_{670F6B50-0A13-4BAB-9D9E-994A833F5BA9} (10.132.0.0/2
55.255.192.0)
match: \.flv

打开一个视频页面:

T(6) 10.132.34.23:24860 -> 61.142.208.154:80 [AP]
GET /f59.c31.56.com/flvdownload/12/19/ggyg7741@56.com_56flv_zhajm_119556973
97.flv HTTP/1.1..accept: */*..Referer: http://www.56.com/flashApp/v_player_
site.swf..x-flash-version: 9,0,45,0..UA-CPU: x86..Accept-Encoding: gzip, de
flate..User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET
CLR 2.0.50727; .NET CLR 3.0.04506.30)..host: f59.r.56.com..Connection: Keep
-Alive..Cookie: whistoryview=23423759-23635627-23423344-23171935-23058374-2
3081156-23207350-22395727-; geoip=............; wl_all_s=y....

OK。地址已经找到了,就是http://f59.c31.56.com/flvdownload/12/19/ggyg7741@56.com_56flv_zhajm_11955697397.flv

加个-W byline参数后,将解析包中的换行符:

T(6) 2007/11/25 15:56:12.192619 10.132.34.23:26365 -> 59.151.21.101:80 [AP]
GET /aa.flv HTTP/1.1.
Accept: */*.
Accept-Language: zh-cn.
UA-CPU: x86.
Accept-Encoding: gzip, deflate.
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.5072
7; .NET CLR 3.0.04506.30).
Host: www.google.cn.
Connection: Keep-Alive.
Cookie: PREF=id=a0b2932c336477e9:TB=4:NW=1:TM=1187877372:LM=1187956074:S=Y1Fzndp
rT3vFo7ac; SID=DQAAAHcAAABJCEXeOVLHu2rIfb5BfKP3GG9PbhJDEkXsLTV8y0f_lvSd2Y46Q0FPt
83CnEs9rxA1xBDM9mLR8-ckWeScyOQA8PyYnX5u5OjFvjfRbDg_FDZfwxhRzqS9KPZv26pjnsUxs0FDM
1xpJ5AgDn38pXtlCdkksJ0-cbiIWoA61oHWMg; NID=7=AvJxn5B6YOLLxoYz4LLzhIbNsQUQiulRS6U
JGxdBniQBmXm99y7L-NBNORN82N3unmZSGHFPfePVHnLK2MjYjglyXZhU9x7ETXNBnY3NurNijHDhJ7K
yi7E53UBOcv4V.

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/ngrep/

(0)
AuroraAurora站点维系者
上一篇 2024年 1月 10日 下午3:13
下一篇 2024年 1月 10日 下午3:13

相关推荐

  • zcat

    文章目录zcat补充说明语法选项参数 zcat 显示压缩包中文件的内容 补充说明 zcat命令 用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。 语法 zcat(选项)(参…

    入门教程 2024年 3月 11日
  • bzip2

    文章目录bzip2补充说明语法选项参数实例 bzip2 将文件压缩成bz2格式 补充说明 bzip2命令 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。 bzip2 采用 …

    入门教程 2023年 12月 6日
  • sar

    文章目录sar补充说明语法选项参数实例 sar 系统运行状态统计工具 补充说明 sar命令 是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sa…

    入门教程 2024年 3月 4日
  • nisdomainname

    文章目录nisdomainname补充说明语法选项 nisdomainname 显示主机NIS的域名 补充说明 nisdomainname命令 用于显示主机NIS的域名。 语法 n…

    入门教程 2024年 1月 10日
  • DataFrame(表数据)

    DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Seri…

    2023年 5月 16日
  • tailf

    文章目录tailf补充说明语法选项参数实例 tailf 在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出 补充说明 tailf命令几乎等同于tail -f,严格说来…

    入门教程 2024年 3月 11日
  • dpkg-deb

    文章目录dpkg-deb补充说明语法选项参数实例 dpkg-deb Debian Linux下的软件包管理工具 补充说明 dpkg-deb命令 是Debian Linux下的软件包…

    入门教程 2023年 12月 7日
  • sesearch

    文章目录sesearch补充说明语法选项实例 sesearch 查询SELinux策略的规则详情 补充说明 使用seinfo命令可以查询SELinux的策略提供多少相关规则,如果查…

    入门教程 2024年 3月 4日
  • history

    文章目录history概要主要用途选项参数返回值例子注意 history 显示或操作历史列表。 概要 history [-c] [-d offset] [n] history -a…

    入门教程 2023年 12月 15日
  • printf

    文章目录printf目录内建命令概要主要用途选项参数返回值例子注意外部命令概要主要用途选项参数例子返回值注意 printf 格式化并输出结果。 目录 bash内建命令 GNU co…

    入门教程 2024年 3月 1日

发表回复

登录后才能评论
Translate »