起因

不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪。老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程)。然后尝试了以下思路:

UI自动化

利用UISpy查看飞秋聊天窗口,悲催的发现找不到发送闪屏振动的按钮。

模拟鼠标事件

准备使用mouse_event发送鼠标事件来模拟闪屏振动的按下。但是一想,每次闪屏振动按钮所在的位置不一样,要是移动窗口或者改变窗口布局,都得重新设置坐标,麻烦,遂弃之。

伪造网络报文

以前就知道WinPcap和Wireshark,恰好前段时间又在博客园看到[c#]记一次实验室局域网的ARP欺骗 - Yosef Gao - 博客园,了解到C#下也有了相关的解析和发送工具。果断开始这个方案。

飞秋报文数据猜想

飞秋网络传输

我是知道飞秋聊天是用UDP,端口默认为2425。不知道也没关系,打开飞秋->设置->网络设置,然后你就会发现,飞秋已经明白的告诉我们了。

闪屏振动

首先打开的WireShark,设置过滤条件为udp.port==2425,然后向测试机发送一个闪屏振动试试看。

发现有两条消息,其中一条是本机发给对方的,另一条是对方发给本机的。

再发送几次闪屏振动,我们就可以大致猜出飞秋闪屏振动报文的规律,发送的报文格式为1_lbt6_0#128#(发送方MAC地址,16位)#0#0#0#4001#9:(猜测应该是序号, 具体不清楚):(发送方用户名):(发送方主机名)209:,收到的报文为1_lbt6_0#128#(发送方MAC地址,16位)#0#0#0#4001#9:(猜测应该是序号, 具体不清楚):(发送方用户名):(发送方主机名)210:。将发送的闪屏振动报文用WinPcap模拟数据包,居然在测试机上收到了闪屏振动(原先还以为猜测的序号字段会有影响)。

信息

向测试机发送一条信息后,发现有几条消息。

经过比较报文长度和来源之后,猜测其他几条较短的来自本机的报文为发送正在输入,停止输入等消息,而较长的为发送的信息。经过验证之后,也确实如此。而飞秋的信息报文应该是加过密的,无法直接从中猜出内容。

表情

表情与信息基本类似,但是表情貌似是经过压缩的。

文件

一般文件都会通过TCP传输,经过验证。发现果然如此,飞秋要发送的文件列表是通过UDP进行传输,而具体文件内容是通过TCP传输。

在UDP传输中,本方发送两条报文,对方发送两条报文。基本本方发送的第二条报文可以看到文件名。

在TCP报文中,除了TCP连接建立的三次握手和连接断开的四次握手以外,在其余的本机发送的报文中,可以清楚的看到报文的内容。

这是文本文件:

这是二进制文件:

二进制文件在UltraEdit查看:

说明

因为主要兴趣在研究闪屏振动,对其余功能只是简单查看了一下,并未深入研究。

代码实现

软件界面

最开始做成模拟闪屏振动但不需要填写任何报文信息,但是登录用户名无法通过网络取得,再加上也可以通过在发送报文字符串中填写其他从WireShark中复制过来的报文字符串来模拟其他报文(比如信息和表情),就做成了这种形式。

注意事项

要使用PacketDotNet.dll和SharpPcap.dll,需要安装WinPcap(我是直接安装了WireShark,里面含有WinPcap)。

下载链接

博客园:FeiqCheater

趣事

  1. 最开始时未加睡眠时间,一个while(true)发送闪屏振动报文,直接把设计师的飞秋给玩死了,多次重启无效,丫还以为是自己电脑出问题了。现在才明白DOS(拒绝服务攻击)的可怕。
  2. 可以伪装成其他人发送闪屏振动报文。 我就经常伪装成他人给设计师发闪屏,也伪装成设计师给他人发闪屏。
  3. 把自己的飞秋退出后,对方在收到飞秋的报文后,仍然有响应。
  4. 后来设计师学聪明了,经旁人指点,在飞秋中关闭了闪屏。

最新情况

进展

  1. 在网上可以查到一部分关于飞秋消息格式的消息,比如将飞秋攻击进行到底 - 龙月 - 博客园(粗看了一下,飞秋版本不一样),同时传说也可以直接发送飞鸽传书未加密的报文,但我并未经过验证。如果确实如此的话,则可以模拟伪造飞秋消息。
  2. 我想到可以在本机上模拟飞秋发出刷新好友列表的消息,然后再解析收到的包,这样就可以分析出好友列表,包括每个好友的用户名,IP地址,MAC地址等信息。这样模拟闪屏振动就可以不用输入任何信息了。

挑战

  1. 另一个笔记本给我弟了,单台电脑不好模拟。
  2. 貌似WinPcap不能拦截目标非本机的报文,也就是伪造的消息只能由本机伪装成其他人发出去一次,而不能伪造成他人和目标方进行交谈。(以前我利用改IP、改名称、改MAC的方式伪装成领导捉弄过其他同事,说公司准备给他加工资,让他傻乐)。
  3. 貌似WinPcap接收到包之后也不能将包丢弃。
  4. 懒癌犯了,不想去做这些事了,这才是最主要的原因。

利用WinPcap模拟网络包伪造飞秋闪屏报文的更多相关文章

  1. wireshake抓包,飞秋发送信息,python

    http://wenku.baidu.com/link?url=Xze_JY8T15pqI9mBLRpTxWF2d6MP-32xb6UwuE6tsUmitRDheJe-Ju87WlDEDBGuI5MF ...

  2. DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器

    DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...

  3. 漏洞大爆光:QQ漏洞、飞秋漏洞、360浏览器劫持…

    随着互联网应用的高速发展,信息安全已深入到诸多领域,前段时间发生的"Struts 2"漏洞及"心脏出血"漏洞影响了二亿中国网民的信息安全.原因是程序猿缺少细致的 ...

  4. win7系统下的飞秋发送文件失败问题

    飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...

  5. winpcap抓包原理

    winpcap抓包原理 WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤.WinPcap 是 BPF 模型和 Libpcap 函数库在 ...

  6. [转] Android利用tcpdump抓包

    原文链接:http://mysuperbaby.iteye.com/blog/902201 Android利用tcpdump抓包 博客分类: Android AndroidAccessGoHTML  ...

  7. Swing做的非阻塞式仿飞秋聊天程序

    采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...

  8. 针对局域网IM飞秋(feiq)的开发总结

    先上代码了,通过java代码群发feiq消息: package com.triman.constant; import java.io.IOException; import java.io.Unsu ...

  9. 在LaTeX中利用preview宏包和tikz宏包生成单图pdf

    有时候我们利用tikz宏包画出的图片后,只想生成一个单图pdf,而且pdf的页面大小与图片相同,以便于以后再次用latex插入. 可以与preview宏包进行搭配,页面大小由图像大小决定,可以通过改变 ...

随机推荐

  1. D/A转换器

    电荷:带正负电的基本粒子.电的本质是使正负电荷分开,使电荷发生移动,实质是电子的转移,并不是创造电荷.电压:单位正电荷受电场力作用从A点移动到B点所做的功.电压方向从高电位指向低点位.电压是推动电荷定 ...

  2. Linux编辑器vim键盘详解

    下面的这张图,一看就明白了,从此,学习变的不再艰难! 补注:图中没有关于查找和替换的,应该用下面的.自上而下的查找操作                  /word小写的n和N自下而上的查找操作    ...

  3. [Windows Phone] APP上架,遇到错误2001的解决方案。(Error:2001)

    [Windows Phone] APP上架,遇到错误2001的解决方案.(Error:2001) 问题情景 最近在开始玩Windows Phone的开发,开发的过程中虽然有点小挫折,但是参考网络许多前 ...

  4. Microsoft Dynamics CRM 前瑞开发

    做CRM开发最大的感受就是其前瑞开发过程中,调试起来比较麻烦,需要做一些断点还要配制一些浏览器设置,对新手来说比较困难.还有就是对REST调试,经常为了调试一个正确的结果而花费大量的时间.现在推荐一个 ...

  5. 推导大O阶方法

    用大写O()来体现算法时间复杂度的记法,我们称之为大O阶记法. O(1)叫做常数阶:O(n)叫做线性阶:O(n^2)叫做平方阶.  1.用常数1取代运行时间中的所有加法常数. 2.在修改后的运行次数函 ...

  6. 内置对象Clob对从数据库表中取的字符大对象CLOB类型的列值进行读取操作

    package readclobDemo.bao; import java.io.IOException; import java.io.Reader; import java.sql.Clob; i ...

  7. javascript 的默认对象

    一.日期对象 格式 :   日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用)                                      2.英文-参数格式 ...

  8. H5文件操作API

    引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...

  9. 推送(PUSH)

    一.本地推送 1.建立本地推送 UILocalNotification *notification = [[UILocalNotification alloc] init]; //推送的内容 noti ...

  10. 数据库性能优化之SQL语句优化

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等是体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...