起因

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

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. iphone 使用 soap 服务 介绍

    iphone 使用 soap 服务 介绍 目前比较常用的有几个办法: 1. WSDL to Objective C自动根据wsdl文件生成ios可以直接调用的Objective-C (Cocoa) 代 ...

  2. Mvc项目架构分享之项目扩展

    Mvc项目架构分享之项目扩展 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 5.项目 ...

  3. 文件快速搜索工具-Everything的使用(转)

    首先它是一款基于名称实时定位文件和目录的搜索工具,有以下几个优点: 快速文件索引 快速文件搜索 较低资源占用 轻松分享文件索引 实时跟踪文件更新 通过使用everything小工具,可以提高我们的工作 ...

  4. android Android-PullToRefresh 下拉刷新

    1.github下载地址 原作者:  https://github.com/chrisbanes/Android-PullToRefresh 我自己的:  https://github.com/zyj ...

  5. OC知识梳理-NSArray与NSMutableArray相关知识

    知识普及: 1.数组中的元素在系统中都会有其默认对应的下标,下标是一个整形的数字,默认从0开始. 例:NSArray *arr3 = @["345","234" ...

  6. 认识Runtime1

    认识Runtime1 什么是id? id在objc.h中的定义如下: typedef struct objc_object *id; 那么什么是objc_object呢? objc_object在ob ...

  7. 【转】IOS设备旋转的内部处理流程以及一些【优化建议】

    加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSInteger, UIDeviceOrienta ...

  8. C语言的判断语句

    // // main.c // homeWork1222 //// #include <stdio.h> int main(int argc, const char * argv[]) { ...

  9. redis-集群(cluster)扫盲篇(一)

    什么是redis的集群 按我个人的理解,redis集群就是实现多个redis节点之间进行数据的共享. 集群有什么好处: 将数据自动split到多个节点进行存储. 当集群中的一部分节点失效或者无法进行通 ...

  10. MongoDB 存储引擎Wiredtiger原理剖析

    今天开始看MongoDB 3.2的文档,发现了这么两句话 Support for Multiple Storage Engines MongoDB supports multiple storage ...