<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.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://www.jackxiang.com/post//</link>
<title><![CDATA[【转帖】使用python来嗅探局域网内的QQ号码。2007年4月17日更新 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 07 Nov 2007 03:57:50 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	2007年4月16日更新<br/><br/>增加了一个令牌的判断,可以抓新版本的QQ和老版本的QQ包了.<br/><br/>2007年4月16日更新<br/><br/>因为朋友们说这个程序已经无法捕捉到最新的QQ登陆包了,所以修改了一下.因为时间关系,我没有修改本文的其他部分,仅仅修改了代码.<br/><br/>作者：梅劲松<br/>本文档和程序为MIT授权<br/><br/>说到嗅探必须要讲到所支持的环境，并非只能对本机或者HUB环境才能使用。对于交换机，你可以指定一个口为嗅探口，从这个口能拿到所有端口的数据。如果这个交换是核心交换，那么你所能取到数据将更多。（三层交换一般都可以指定嗅探口）<br/>1、如果你已经是个python爱好者你机器一定有了python的运行环境，如果你没有可以到www.python.org去下载一个。我使用的还是python 2.3。<br/>2、这段程序需要pcap模块支持，你可以到http://monkey.org/~dugsong/pypcap/去下载一个，它有unix和win两个版本，请注意，win下他需要winpcap支持，如果你没有这个，请再下载winpcap。同样，如果你是在unix下使用，请下载libpcap。<br/>3、安装pcap没有太多说的，win下是个exe，直接运行。unix下直接make就可以了。<br/>4、打开你的记事本，将以下代码保存在sniffer-QQ.py这个文件中。<br/><br/><div class="code"><br/># -*- coding: cp936 -*-<br/>import pcap ,struct<br/><br/>pack=pcap.pcap() <br/>pack.setfilter(&#039;udp&#039;)<br/>key=&#039;&#039;<br/>for recv_time,recv_data in pack: <br/> &nbsp; recv_len=len(recv_data)<br/> &nbsp; if recv_len == 102 and recv_data&#91;42&#93;== chr(02) and recv_data&#91;101&#93; == chr(03):<br/> &nbsp; &nbsp; &nbsp;print struct.unpack(&#039;&gt;I&#039;,recv_data&#91;49:53&#93;)&#91;0&#93;<br/> &nbsp; &nbsp; &nbsp;print &#039;登陆了&#039;<br/> &nbsp; elif recv_len == 55:<br/> &nbsp; &nbsp; &nbsp;print struct.unpack(&#039;&gt;I&#039;,recv_data&#91;49:53&#93;)&#91;0&#93;<br/> &nbsp; &nbsp; &nbsp;print &#039;登陆了&#039;<br/></div><br/><br/>如果你在*nix下运行,请将# -*- coding: cp936 -*-更改为# -*- coding: utf-8 -*-<br/>好了，你可以运行你的python程序了，试着登陆你的QQ。看你的QQ号码是否被抓下来了。<br/>这里付上我的抓屏结果<br/><div class="code">D:&#92;socket-qq&gt;;sniffer-QQ.py<br/>278333853<br/>12345<br/>1234567890<br/>1234567890<br/>1234567890<br/>278333853<br/>1234567890<br/>1234567890<br/>278333853<br/>278333853</div><br/><br/>利用的什么原理呢。<br/>QQ使用udp协议来和服务器进行通讯，当数据包在传输的时候。udp报文被抓了下来。而登陆包是以0x02开头0x03为结尾的，我们先判断是否为正确的登陆包，当然，登陆包的长度都为102个字节。我们取出结构中特定的位置，就是你的QQ号码了。<br/>如果还有什么疑问，请大家跟贴。<br/><br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 【转帖】使用python来嗅探局域网内的QQ号码。2007年4月17日更新 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>