免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 46974 | 回复: 65
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-29 16:10 |只看该作者 |倒序浏览
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这个文件中。


  1. # -*- coding: cp936 -*-
  2. import pcap ,struct

  3. pack=pcap.pcap()
  4. pack.setfilter('udp')
  5. key=''
  6. for recv_time,recv_data in pack:
  7.    recv_len=len(recv_data)
  8.    if recv_len == 102 and recv_data[42]== chr(02) and recv_data[101] == chr(03):
  9.       print struct.unpack('>I',recv_data[49:53])[0]
  10.       print '登陆了'
  11.    elif recv_len == 55:
  12.       print struct.unpack('>I',recv_data[49:53])[0]
  13.       print '登陆了'
复制代码


如果你在*nix下运行,请将# -*- coding: cp936 -*-更改为# -*- coding: utf-8 -*-
好了,你可以运行你的python程序了,试着登陆你的QQ。看你的QQ号码是否被抓下来了。
这里付上我的抓屏结果
  1. D:\socket-qq>;sniffer-QQ.py
  2. 278333853
  3. 12345
  4. 1234567890
  5. 1234567890
  6. 1234567890
  7. 278333853
  8. 1234567890
  9. 1234567890
  10. 278333853
  11. 278333853
复制代码


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

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

论坛徽章:
0
2 [报告]
发表于 2005-06-29 17:36 |只看该作者

使用python来嗅探局域网内的QQ号码。

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

论坛徽章:
0
3 [报告]
发表于 2005-06-29 18:15 |只看该作者

使用python来嗅探局域网内的QQ号码。

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

论坛徽章:
0
4 [报告]
发表于 2005-06-30 09:43 |只看该作者

使用python来嗅探局域网内的QQ号码。

安装了:

  1. libpcap-0.9.1-096.tar.gz
  2. pypcap-0.6.tar.gz        
  3. dpkt-1.1.tar.gz
复制代码

运行时是这样结果:

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

论坛徽章:
0
5 [报告]
发表于 2005-06-30 11:20 |只看该作者

使用python来嗅探局域网内的QQ号码。

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

论坛徽章:
0
6 [报告]
发表于 2005-07-01 00:37 |只看该作者

使用python来嗅探局域网内的QQ号码。

仅七行代码!python真是强大!
nyliubing 该用户已被删除
7 [报告]
发表于 2005-07-02 22:40 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2005-07-05 03:31 |只看该作者

使用python来嗅探局域网内的QQ号码。

这个真是强大啊

论坛徽章:
0
9 [报告]
发表于 2005-07-05 08:42 |只看该作者

使用python来嗅探局域网内的QQ号码。

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

论坛徽章:
0
10 [报告]
发表于 2005-07-05 13:36 |只看该作者

使用python来嗅探局域网内的QQ号码。

有啥强大的@
还不是有个强大的cap包在后面!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP