Python论坛  - 讨论区

标题:[python-chinese] 使用python来嗅探局域网内的QQ号码

2005年06月29日 星期三 16:20

梅劲松  stephen.cn at gmail.com
Wed Jun 29 16:20:35 HKT 2005

本贴地址在
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号码了。


-- 
梅劲松

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月29日 星期三 16:39

Frank gavin at sz.net.cn
Wed Jun 29 16:39:28 HKT 2005

牛!:)



----- 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
> 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月29日 星期三 16:56

alang yin alang.yl at gmail.com
Wed Jun 29 16:56:08 HKT 2005

可惜呀。在安装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下面怎么更改呀?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号