<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]使用工具ngrep抓取http请求包（因为我们需要探知的是php://input，所以我们这里只抓取http Request数据包）。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Mon, 19 Jan 2015 07:54:50 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：深入剖析PHP输入流 php://input ，文章Url：http://www.nowamagic.net/academy/detail/12220520 ，提到ngrep抓包，以前都是tcpdump，这个小工具有点意思，于是查了下，试着安装下Ngrep试一试。<br/><br/>一、使用说明：<br/>如果要分析网络数据包，我们有Wireshark，它有着上千种设定、过滤器以及配置选项。它还有一个命令行版本Tshark。如果只是针对简单的任务，我觉得Wireshark就太重量级了，所以除非我需要更强大的功能，一般情况下就用ngrep来处理了。Ngrep可以让你像类似grep处理文件的方式来处理网络封包。<br/><br/>针对Web流量，你几乎总是想要加上-W byline选项，这会保留换行符，而-q选项可以抑制某些非匹配数据包而产生的输出。下面是一个抓取所有包含有GET或POST请求数据包的例子：<br/><br/>ngrep –q –W byline “^(GET&#124;POST) .*” <br/>你也可以传入附加的报文过滤选项，比如限制匹配的报文只针对某个特定的主机，IP或端口。这里我们把所有流经Google的流量做一个过滤，只针对80端口且报文中包含“search”。<br/><br/>ngrep –q –W byline “search” host www.google.com and port 80 <br/><br/>摘处：<br/>http://www.csdn.net/article/2012-11-15/2811906-practical-command-line-tools<br/><br/>二、Solaris安装ngrep：<br/>使用ngrep监控网络接口<br/>　　ngrep 是grep(在文本中搜索字符串的工具)的网络版，他力求更多的grep特征，用于搜寻指定的数据包。正由于安装ngrep需用到libpcap库， 所以支持大量的操作系统和网络协议。它当前认可 IPv4/6, TCP, UDP, ICMPv4/6, IGMP和原始交叉以太网， PPP, SLIP, FDDI, 令牌网和空端口，并以与更为普遍的分组过滤工具相同的方式了解BPF过滤逻辑，例如tcpdump和snoop。<br/>　　FreeBSD下载和安装：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/ngrep-1.45-sol10-x86-local.gz <br/>　　#gunzip ngrep-1.45-sol10-x86-local.gz <br/>　　#pkgadd ngrep-1.45-sol10-x86-local<br/><br/>ngrep的安装就是configure/make/make install 三部曲。<br/>configure时是遇到please wipe out all unused pcap installations<br/>./configure --with-pcap-includes=/usr/local/include/pcap<br/>在安装后输入ngrep来验证下安装是否成功。<br/>　　首先看看ngrep的参数，这里只介绍主要选项。<br/>　　-q 静默模式，如果没有此开关，未匹配的数据包都以“#”显示<br/>　　-e 显示空数据包<br/>　　-i 忽略大小写<br/>　　-v 反转匹配<br/>　　-x 以16进制格式显示<br/>　　-X 以16进制格式匹配<br/>　　-w 整字匹配<br/>　　-p 不使用混杂模式<br/>　　-t 在每个匹配的包之前显示时间戳<br/>　　-T 显示上一个匹配的数据包之间的时间间隔<br/>　　-M 仅进行单行匹配<br/>　　-I 从文件中读取数据进行匹配<br/>　　-O 将匹配的数据保存到文件<br/>　　-n 仅捕获指定数目的数据包进行查看<br/>　　-A 匹配到数据包后Dump随后的指定数目的数据包<br/>　　-W 设置显示格式byline将解析包中的换行符<br/>　　-c 强制显示列的宽度<br/>　　-F 使用文件中定义的bpf(Berkeley Packet Filter)<br/>　　-N 显示由IANA定义的子协议号<br/>　　-d 使用哪个网卡，可以用-L选项查询<br/>　　-L 查询网卡接口<br/>　　图 6 是没有参数的ngerp的输出界面。<br/>　　ngrep命令输出<br/>　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图6 ngrep命令输出<br/>　　下面我们看两个复杂一些的例子，使用命令：<br/>ngrep -qd pcn0 ‘IT专家网’ tcp port 80<br/>　　这个命令让ngrep 为TCP报文监控pcn0的80接口，并且只包括“IT专家网”字符串。 这样就可以获得所有该子网中使用访问IT专家网的相关信息。<br/>　　另外一个命令：<br/>ngrep -qd pcn0 ‘USER&#124;PASS’ tcp port 21<br/>　　这个命令让ngrep 为TCP报文监控pcn0的21接口，并且只包括“user和pass”字符串。我们知道21端口是用来进行FTP连接的端口。 这样就可以获得用于FTP连接的用户名称和密码。<br/><br/>来自：http://security.ctocio.com.cn/tips/30/8196030_4.shtml<br/><br/><br/><br/>三、linux下的ngrep 安装使用:<br/>1&nbsp;&nbsp;安装libpcap<br/>下载地址&nbsp;&nbsp; http://www.tcpdump.org/#latest-release<br/>解压&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/> tar -zxvf libpcap-1.4.0.tar.gz<br/>进入目录<br/>cd&nbsp;&nbsp;libpcap-1.4.0<br/>./configure<br/>make<br/>make install<br/> <br/> yum install libpcap-devel.x86_64<br/> <br/>2&nbsp;&nbsp;安装ngrep<br/>下载地址<br/>git clone git://git.code.sf.net/p/ngrep/code ngrep-code<br/>Http的：<br/>http://pkgs.fedoraproject.org/repo/pkgs/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42.zip/a58321bda277a741dc94020a4484bcb6/<br/><br/>进入目录<br/>cd ngrep-code<br/>./configure --with-pcap-includes=/usr/local/include/pcap<br/>make<br/>make install<br/><br/>摘自：http://blog.csdn.net/zljjava/article/details/38046595<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>四、rpm安装：<br/>CentOS:<br/>先用yum install libpcap完全安装libpcap，注意有时候用libpcap安装包安装的不完整会影响ngrep的使用。<br/>如果yum无法安装就用以下步骤安装libpcap<br/>wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz<br/>tar -zxf libpcap-1.3.0.tar.gz<br/>cd libpcap-1.3.0<br/>./configure<br/>make &amp;&amp; make install<br/><br/>ngrep的安装就是configure/make/make install 三部曲。<br/>configure时是遇到please wipe out all unused pcap installations<br/>./configure --with-pcap-includes=/usr/local/include/pcap<br/>在安装后输入ngrep来验证下安装是否成功。<br/><br/>我也遇到了：<br/>Configuring Network Grep (ngrep) ...<br/>checking for a complete set of pcap headers... <br/>more than one set found in:<br/>/usr/local/include<br/>/usr/local/include/pcap<br/>please wipe out all unused pcap installations<br/>[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make<br/><br/>配置时加上路径参数：<br/>./configure --with-pcap-includes=/usr/local/include/pcap<br/>编译：<br/>[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make<br/>make&nbsp;&nbsp;-C regex-0.12 regex.o<br/>make[1]: Entering directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12&#039;<br/>gcc -g&nbsp;&nbsp;-DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1&nbsp;&nbsp;-I. -I. -c regex.c<br/>make[1]: Leaving directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12&#039;<br/>gcc&nbsp;&nbsp;-DHAVE_CONFIG_H -DLINUX&nbsp;&nbsp;-D_BSD_SOURCE=1 -D__FAVOR_BSD=1&nbsp;&nbsp;-Iregex-0.12 -I/usr/local/include/pcap&nbsp;&nbsp;-I.&nbsp;&nbsp;-g -c ngrep.c<br/>gcc&nbsp;&nbsp;-s -o ngrep ngrep.o&nbsp;&nbsp;regex-0.12/regex.o -L/usr/local/include/lib -lpcap&nbsp;&nbsp;<br/>安装：<br/>[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make install<br/>./install-sh -c -m 0755 ngrep&nbsp;&nbsp;//usr/local/bin/ngrep<br/>./install-sh -c -m 0644 ngrep.8 //usr/local/share/man/man8/ngrep.8<br/><br/>安装参考：http://blog.sina.com.cn/s/blog_4d14fb2b01012tqo.html<br/><br/>五、使用方法：<br/>我经常使用的：<br/>ngrep -W byline -d eth0 port 80<br/>捕捉cloudian：18080端口的request和response。-W byline用来解析包中的换行符，否则包里的所有数据都是连续的，可读性差。-d lo是监听本地网卡<br/>ngrep -W byline -d eth0 port 80<br/>捕捉amazon：80端口的request和response。-d eth0 是用来监听对外的网卡<br/> <br/>可以用-d any来捕捉所有的包，这个很管用。<br/>ngrep &#039;[a-zA-Z]&#039; -t -W byline -d any tcp port 80<br/><br/><br/>实践如下：<br/><textarea name="code" class="php" rows="15" cols="100">
ngrep -W byline -d eth0 port 80
T 192.168.109.108:80 -&gt; 10.70.32.53:57035 [AP]
HTTP/1.1 200 OK.
Server: nginx.
Date: Mon, 19 Jan 2015 09:19:57 GMT.
Content-Type: application/xml;charset=utf-8.
Transfer-Encoding: chunked.
Connection: close.
Vary: Accept-Encoding.
Set-Cookie: KOSSID=rs6g95kev1ie0a0mdcoinkun70; path=/; HttpOnly.
Cache-Control: no-cache.
Pragma: no-cache.
.
5e.
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;root&gt;
.&lt;status&gt;fail&lt;/status&gt;
.&lt;msg&gt;FALSE&lt;/msg&gt;
&lt;/root&gt;.
</textarea><br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
 ngrep &#039;[a-zA-Z]&#039; -t -W byline -d any tcp port 80
##
T 2015/01/19 17:21:57.735124 10.70.32.53:42300 -&gt; 192.168.109.108:80 [AP]
nodeid=BJ&amp;num=2&amp;format=xml
##
T 2015/01/19 17:21:57.751822 192.168.109.108:80 -&gt; 10.70.32.53:42300 [AP]
HTTP/1.1 200 OK.
Server: nginx.
Date: Mon, 19 Jan 2015 09:21:57 GMT.
Content-Type: application/xml;charset=utf-8.
Transfer-Encoding: chunked.
Connection: close.
Vary: Accept-Encoding.
Set-Cookie: KOSSID=428jk4n6uhnp606efjfau2afd4; path=/; HttpOnly.
Cache-Control: no-cache.
Pragma: no-cache.
.
5e.
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;root&gt;
.&lt;status&gt;fail&lt;/status&gt;
.&lt;msg&gt;FALSE&lt;/msg&gt;
&lt;/root&gt;.
0.
</textarea>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]使用工具ngrep抓取http请求包（因为我们需要探知的是php://input，所以我们这里只抓取http Request数据包）。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>