首页 > 学技术 > 技术网文 > Python > 正文

[原创] 使用python来嗅探局域网内的QQ号码。2007年4月17日更新


来源 chinaunix.net 酷勤网整理

2007年4月16日更新

增加了一个令牌的判断,可以抓新版本的QQ和老版本的QQ包了.

2007年4月16日更新

因为朋友们说这个程序已经无法捕捉到最新的QQ登陆包了,所以修改了一下.因为时间关系,我没有修改本文的其他部分,仅仅修改了代码.

作者:梅劲松
本文档和程序为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这个文件中。


# -*- coding: cp936 -*-
import pcap ,struct

pack=pcap.pcap() 
pack.setfilter('udp')
key=''
for recv_time,recv_data in pack: 
   recv_len=len(recv_data)
   if recv_len == 102 and recv_data[42]== chr(02) and recv_data[101] == chr(03):
      print struct.unpack('>I',recv_data[49:53])[0]
      print '登陆了'
   elif recv_len == 55:
      print struct.unpack('>I',recv_data[49:53])[0]
      print '登陆了'


如果你在*nix下运行,请将# -*- coding: cp936 -*-更改为# -*- coding: utf-8 -*-
好了,你可以运行你的python程序了,试着登陆你的QQ。看你的QQ号码是否被抓下来了。
这里付上我的抓屏结果
D:\socket-qq>;sniffer-QQ.py

278333853
12345
1234567890
1234567890
1234567890
278333853
1234567890
1234567890
278333853
278333853


利用的什么原理呢。
QQ使用udp协议来和服务器进行通讯,当数据包在传输的时候。udp报文被抓了下来。而登陆包是以0x02开头0x03为结尾的,我们先判断是否为正确的登陆包,当然,登陆包的长度都为102个字节。我们取出结构中特定的位置,就是你的QQ号码了。
如果还有什么疑问,请大家跟贴。

[ 本帖最后由 xichen 于 2007-4-17 17:00 编辑 ]



 西门子 回复于:2005-06-29 17:36:37

俺装的是python2。4   下载了windows的pcap包,不支持安装!


 xichen 回复于:2005-06-29 18:15:59

不支持安装什么呢?能不能把你操作系统,软件的详细信息贴出来,报的错误也贴出来.


 jetrix 回复于:2005-06-30 09:43:31

安装了:

libpcap-0.9.1-096.tar.gz
pypcap-0.6.tar.gz        
dpkt-1.1.tar.gz

运行时是这样结果:

/tmp/stmp/sniffer-qq >; python sniffer-qq.py
Traceback (most recent call last):
  File "sniffer-qq.py", line 2, in ?
    pack=pcap.pcap()
  File "/misc/projects/pypcap/pcap.pyx", line 165, in pcap.pcap.__init__
OSError: couldn't lookup device



 xichen 回复于:2005-06-30 11:20:31

我到bsd下安装一个,我回把详细经过贴出来。


 Hex 回复于:2005-07-01 00:37:27

仅七行代码!python真是强大!


 nyliubing 回复于:2005-07-02 22:40:05

应该加精


 yskin 回复于:2005-07-05 03:31:12

这个真是强大啊


 tramp568 回复于:2005-07-05 08:42:53

不错呀。
就这么句就搞定。
想学呀


 dalianit10 回复于:2005-07-05 13:36:41

有啥强大的@
还不是有个强大的cap包在后面!


 nfqx 回复于:2005-07-05 15:26:58

那个pypcap文档太简单了,有大侠能给点详细的资料吗?


 xichen 回复于:2005-07-06 09:41:25

我这里没有更详细的资料了,不过熟悉winpcap的朋友,可以直接使用c来扩展到python的一个模块。
如果不想安装winpcap,可以直接使用NDIS来扩展。可以无需驱动支持2000以上的操作系统。


 xichen 回复于:2005-07-11 09:16:36

我今天有空在freebsd下测试了我的程序,结果没有发现任何异常。
1、freebsd 5.3 已经自带libpcap,所以我没有安装。
2、我下载pypcap-0.6后,解压缩,经过./setup.py config 然后
./setup.py build 再./setup.py install安装后。程序能正常运行。

如果各位还有什么疑问,请继续提出。


 linjian257 回复于:2005-07-30 13:52:44

我抓下来怎么是这样子的啊?problem in E:\PYTHON23\Tools\Scripts\snifferQQ.py - SyntaxError: invalid syntax (snifferQQ.py, line 1) 请问大侠是怎么回事啊?


 xichen 回复于:2005-07-30 17:28:03

应该是你拷贝粘贴的时候发生了错误。


 linjian257 回复于:2005-07-31 10:44:24

哦,我知道了,这东东很好用啊,我想这个编程如果在扩大化一点的话,可能联密码都可以抓取哦,大家一起动动脑筋看看


 xichen 回复于:2005-07-31 15:35:52

已经可以抓取密码,并破解出来了.但是我觉得公布这样的程序对互联网的发展并不是良性的帮助.


 yovn 回复于:2005-08-01 10:16:41

强大的应该是winpcap


 bleem1998 回复于:2005-08-01 11:27:35

这些东东都不好使了
只能抓本机的
能抓别人机器上的吗
除非你在网关上抓
呵呵


 linjian257 回复于:2005-08-02 18:58:08

xichen  你真厉害啊,能教教我吗?关于pyton的,我的QQ是99019803,能面聊吗?我好崇拜啊。


 xichen 回复于:2005-08-03 09:35:35

不用崇拜吧,有什么问题贴出来大家一起讨论。


 linjian257 回复于:2005-08-03 18:36:36

就是关于《已经可以抓取密码,并破解出来了》你的这句话的啊,所以不能面聊,只能私聊啊


 metaphy 回复于:2005-08-04 14:32:51

pcap 不支持Python2.4

安装时错误提示:
Python version 2.3 required, which war not found in the registry


 linjian257 回复于:2005-08-06 22:24:19

xichen你的QQ是多少啊?能告诉我吗?


 xichen 回复于:2005-08-06 22:58:31

278333853


 注册信息有误 回复于:2005-08-15 18:06:02

我知道我的网关是多少,那我不就可以连所有人的QQ密码都搞出来?

哈哈,
我也学学吧,
我只学过Base语言,能学吗?


 xichen 回复于:2005-08-15 18:42:48

当然可以学.


 hisky 回复于:2005-08-19 13:00:47

一运行就死那了,不知道为何


 xichen 回复于:2005-08-19 13:46:42

可能你的系统有问题,我想能运行的占大多数。


 xiangding 回复于:2005-08-23 15:27:54

好东东


 77776666 回复于:2006-11-15 09:18:09

Traceback (most recent call last):

  File "C:\Python25\tem\net_qq.py", line 7, in <module>
    print struct.unpack('>;I',recv_data[recv_len-6:recv_len-2])[0]
  File "C:\Python25\lib\struct.py", line 86, in unpack
    o = _compile(fmt)
  File "C:\Python25\lib\struct.py", line 39, in _compile
    s = Struct(fmt)
error: bad char in struct format


[ 本帖最后由 77776666 于 2006-11-15 09:20 编辑 ]


 tianyaamy 回复于:2006-11-22 12:24:15

我的WIN XP上没有错,但是就是没有抓到本机登陆的QQ号码呢?


 alexru 回复于:2006-11-22 22:49:52

有趣,顶一个


 西门子 回复于:2006-11-24 15:28:04

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

E:\Python24>qq.py
Traceback (most recent call last):
  File "E:\Python24\qq.py", line 4, in ?
    for recv_time , recv_data in pack:
  File "pcap.pyx", line 344, in pcap.pcap.__next__
KeyboardInterrupt



运行n 遍, 我在本机用qq 上上下下 n +1回了,程序一直没有print    我只能 KeyboardInterrupt


 lgm8081 回复于:2006-12-14 18:28:23

D:\Tools\QQSniff>sniffer-QQ.py
Traceback (most recent call last):
  File "D:\Tools\QQSniff\sniffer-QQ.py", line 1, in ?
    import pcap ,struct
ImportError: No module named pcap


在Python shell里也确实看不到这个module
咋回事呢?


 lgm8081 回复于:2006-12-15 09:21:10

等待帮助。。。。。。


 lgm8081 回复于:2006-12-15 12:23:55

up


 饭饭 回复于:2006-12-16 04:58:37

引用:原帖由 lgm8081 于 2006-12-14 18:28 发表
D:\Tools\QQSniff>sniffer-QQ.py
Traceback (most recent call last):
  File "D:\Tools\QQSniff\sniffer-QQ.py", line 1, in ?
    import pcap ,struct
ImportError: No module named pcap

 ... 



需要安装libpcap模块 
这里
http://monkey.org/~dugsong/pypcap/

说说我的安装过程:
apt-get install libcap0.8 libcap0.8-dev

然后安装了那个包,出错, 呵呵  .. ~
提示:
error: invalid Python installation: unable to open /usr/lib/python2.3/config/Makefile (No such file or directory)

后来Search一下,看到了这个
Re: Error installing supybot on Debian
jamessan 于 09:48 July 17, 2005
As we say in the INSTALL file, you may need to install the python-dev package. Try that and your problems should go away.

接着apt-get install python2.3-dev

  ....

debian:~/tmp/pypcap-1.1$ sudo python2.3 ./setup.py install
running install
running build
running build_ext
running install_lib
copying build/lib.linux-i686-2.3/pcap.so -> /usr/lib/python2.3/site-packages

运行程序没问题,但不能抓QQ号码阿 .
用的lumaqq登陆的 ,
程序还死掉了 .不能退出 , 昏死

[ 本帖最后由 饭饭 于 2006-12-16 05:16 编辑 ]


 lgm8081 回复于:2006-12-18 09:21:05

我用的Win2000,装过了WinPcap的,咋回事呢????????


 lgm8081 回复于:2006-12-18 11:30:39

引用:原帖由 lgm8081 于 2006-12-18 09:21 发表
我用的Win2000,装过了WinPcap的,咋回事呢???????? 


up


 xichen 回复于:2006-12-19 18:16:54

新的登陆包已经修改过结构了.这个适用老的QQ版本.


 cscscheng 回复于:2006-12-20 17:01:38

呵呵就算老版本,如果以太网上封装了pppoe的话我想也应该抓不到的...


 xichen 回复于:2006-12-21 14:38:57

恩,还是可以抓的..


 door.xiao 回复于:2006-12-22 10:01:35

提示:ImportError: No module named pcap

环境:WindowsXP SP2 安装的是WinPcap 4.0 beta3


 xichen 回复于:2007-04-16 22:58:20

2007年4月16日更新

因为朋友们说这个程序已经无法捕捉到最新的QQ登陆包了,所以修改了一下.因为时间关系,我没有修改本文的其他部分,仅仅修改了代码.


 rubee 回复于:2007-04-17 11:49:39

爽啊,这是我前进的动力!


 nmweizi 回复于:2007-04-20 15:13:27

捕获数据是没有问题。但QQ登陆包的判断还是有问题,我用的是2006b2版本。我发现len=94的可以发现QQ号,但不知道是不是登陆包。


 jin_80 回复于:2007-04-28 11:05:30

为什么我运行此程序后,只有光标在闷.一点输出都没有




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=569668
转载请注明作者名及原文出处



收藏本页到: