2005年06月29日 星期三 16:20
本贴地址在 http://bbs.chinaunix.net/forum/viewtopic.php?t=569668&show;_type= 大家可以发起讨论。 原文贴到这里: 作者:梅劲松 本文档和程序为MIT授权 说到嗅探必须要讲到所支持的环境,并非只能对本机或者HUB环境才能使用。对于交换机,你可以指定一个口为嗅探口,从这个口能拿到所有端口的数据。如果这个交换是核心交换,那么你所能取到数据将更多。(三层交换一般都可以指定嗅探口) 1、如果你已经是个python爱好者你机器一定有了python的运行环境,如果你没有可以到www.python.org去下载一个。我使用的还是python 2.3。 2、这段程序需要pcap模块支持,你可以到http://monkey.org/~dugsong/pypcap/去下载一个,它有unix和win两个版本,请注意,win下他需要winpcap支持,如果你没有这个,请再下载winpcap。同样,如果你是在unix下使用,请下载libpcap。 3、安装pcap没有太多说的,win下是个exe,直接运行。unix下直接make就可以了。 4、打开你的记事本,将以下代码保存在sniffer-QQ.py这个文件中。 代码: import pcap ,struct pack=pcap.pcap() pack.setfilter('udp') for recv_time,recv_data in pack: recv_len=len(recv_data) if recv_len==55 and recv_data[42]==chr(02) and recv_data[54]==chr(03): print struct.unpack('>I',recv_data[recv_len-6:recv_len-2])[0] 好了,你可以运行你的python程序了,试着登陆你的QQ。看你的QQ号码是否被抓下来了。 这里付上我的抓屏结果 代码: D:\socket-qq>sniffer-QQ.py 278333853 12345 1234567890 1234567890 1234567890 278333853 1234567890 1234567890 278333853 278333853 利用的什么原理呢。 QQ使用udp协议来和服务器进行通讯,当数据包在传输的时候。udp报文被抓了下来。而登陆包是以0x02开头0x03为结尾的,我们先判断是否为正确的登陆包,当然,登陆包的长度都为55个字节。我们取出结构中特定的位置,就是你的QQ号码了。 -- 梅劲松
2005年06月29日 星期三 16:39
牛!:) ----- Original Message ----- From: "梅劲松" <stephen.cn at gmail.com> To: <python-chinese at lists.python.cn> Sent: Wednesday, June 29, 2005 4:20 PM Subject: [python-chinese] 使用python来嗅探局域网内的QQ号码。 > 本贴地址在 > http://bbs.chinaunix.net/forum/viewtopic.php?t=569668&show;_type= > 大家可以发起讨论。 > 原文贴到这里: > > 作者:梅劲松 > 本文档和程序为MIT授权 > > 说到嗅探必须要讲到所支持的环境,并非只能对本机或者HUB环境才能使用。对于交换机,你可以指定一个口为嗅探口,从这个口能拿到所有端口的数据。如果这个交换是核心交换,那么你所能取到数据将更多。(三层交换一般都可以指定嗅探口) > 1、如果你已经是个python爱好者你机器一定有了python的运行环境,如果你没有可以到www.python.org去下载一个。我使用的还是python > 2.3。 > 2、这段程序需要pcap模块支持,你可以到http://monkey.org/~dugsong/pypcap/去下载一个,它有unix和win两个版本,请注意,win下他需要winpcap支持,如果你没有这个,请再下载winpcap。同样,如果你是在unix下使用,请下载libpcap。 > 3、安装pcap没有太多说的,win下是个exe,直接运行。unix下直接make就可以了。 > 4、打开你的记事本,将以下代码保存在sniffer-QQ.py这个文件中。 > > 代码: > import pcap ,struct > pack=pcap.pcap() > pack.setfilter('udp') > for recv_time,recv_data in pack: > recv_len=len(recv_data) > if recv_len==55 and recv_data[42]==chr(02) and recv_data[54]==chr(03): > print struct.unpack('>I',recv_data[recv_len-6:recv_len-2])[0] > > > > 好了,你可以运行你的python程序了,试着登陆你的QQ。看你的QQ号码是否被抓下来了。 > 这里付上我的抓屏结果 > 代码: > D:\socket-qq>sniffer-QQ.py > 278333853 > 12345 > 1234567890 > 1234567890 > 1234567890 > 278333853 > 1234567890 > 1234567890 > 278333853 > 278333853 > > > 利用的什么原理呢。 > QQ使用udp协议来和服务器进行通讯,当数据包在传输的时候。udp报文被抓了下来。而登陆包是以0x02开头0x03为结尾的,我们先判断是否为正确的登陆包,当然,登陆包的长度都为55个字节。我们取出结构中特定的位置,就是你的QQ号码了。 > > > -- > 梅劲松 > -------------------------------------------------------------------------------- > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese >
2005年06月29日 星期三 16:56
可惜呀。在安装pypcap时出错。 running install running build running build_ext error: The .NET Framework SDK needs to be installed before building extensions for Python. 它在编译时出了错。我的机子选装的VC6,后装的.net,后来.net被卸载了。 默认的build工具在win下面怎么更改呀?
Zeuux © 2025
京ICP备05028076号