点击上方蓝字[协议分析与还原]关注我们


 分析通da信TCP长连接内部分数据的算法。

作为一款老牌的炒股软件,通da信里面的数据是相当的丰富,免费的也很丰富,准确性也很好,例如,这种股票之间关联的信息。

通da信一路走来,功能在不停地丰富,具备各个平台的客户端,当然,用的人和机构也很多,这是好事,产品在传承,技术也在继续,例如其客户端的TCP长连接,应该是从PC时代就存在的,在移动终端上也一直在使用,彰显着它的还算可以的技术实力,毕竟,这是一个HTTP接口遍地走的时代,熟悉TCP多线程开发的人也不好找的。

虽然技术不错,但不知具体原因,通da信一直保持TCP连接的未加密模式,大概是技术的迭代需要牵涉到太多的模块,不好搞吧。当然,对爬虫来说,虽然未加密,但TCP连接里面的数据的爬取还是难的哟。

通达信的TCP长连接流量没加密但是,放眼望去,里面的数据也有很多不是明文,不够直观,今天,我们来看看通达信TCP长连接里面数据的情况,对里面的部分数据进行解码,对不懂的人来说,就相当于解密了。

01

报文分析

按照标准流程,分析解密协议要先找到报文流,找到数据流的识别的方法,不过这里没有,大家有兴趣的话自行去找,很好找的。下面直接进行长连接流量的分析。

首先,我们来看下通达信的长连接的大概情况,里面有明文,也有不可见的乱码,明文大概是一些命令和参数,当然还有股票代码:

乱码太多了,从里面找到了一段数据,是wireshark抓的一个完整的TCP包,是一个完整的数据块,以hex转储模式看下原始数据:

粗略的分析下,前面的32字节大概是相当于块头,我们先不管,后面的很长的数据,应该就是传输的内容了,经过一番分析,过程就略掉了,其实直接看数据就能看到,以十六进制的789c开始的数据,大概率是压缩数据,这个拼的是经验,经验不足就去分析代码吧,直接解压试试,结果如下:

不好意思,这是写好的工具的解密结果。

数据是deflate压缩的,解压即可,用python的zlib库很好实现,汉字编码是GBK的,注意下,否则解出来看到就是乱码了,如果反向进行压缩,压缩级别compresslevel选6。

来看看完整复刻编解码版的代码:

def deflate(data, compresslevel=9):compress = zlib.compressobj(compresslevel,        zlib.DEFLATED,        -zlib.MAX_WBITS,    zlib.DEF_MEM_LEVEL,   0                    )deflated = compress.compress(data)deflated += compress.flush()return deflateddef inflate(data):decompress = zlib.decompressobj(-zlib.MAX_WBITS  )inflated = decompress.decompress(data)inflated += decompress.flush()return inflateddef dectongdaxin(decoded_data):orig= inflate(decoded_data[2:])return origdef enctongdaxin(data):orig= deflate(data,6)crc=0crc = zlib.adler32(data) & 0xffffffffreturn bytes.fromhex('789C')+orig+crc.to_bytes(4, byteorder="big")

很简单的,有兴趣可以自己尝试解密玩玩。

02

结束

长连接数据的解密方法就介绍到这里了,大家有任何对应用流量解密方面的问题可以找我交流,有什么稀奇的东西,也可以给我瞅瞅,交个朋友。最近解了不少游戏和应用,好枯燥噢。

别忘点“在看”、“赞”和“分享”

新的规则,及时收推文要先给公号星标

别忘了星标一下,不然就错过了

长按进行关注,时刻进行交流。

通da信TCP长连接数据算法分析相关推荐

  1. 通da信股本变迁gbbq权息文件解密

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 解密及完全解析通da信股本变迁gbbq权息文件." 前些天,被一位陌生人耍猴了,很不开心,求安慰.这个人,姑且称为讨厌的家伙吧,找 ...

  2. 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...

    在服务器建立服务端,与多个 tcp 连接保持长连接,服务端会根据客户端发送的 token 验证确定是否保持长连接建立"session"缓存, 在某个状态开启时(我称为存储状态),要 ...

  3. 【TCP长连接】使用TCP长连接提升服务性能

    1.概述 在<性能优化篇-理论基础>中,我们知道了提升服务性能的两个思路,分别是提升服务并发能力和降低请求的响应时间(RT).一个请求的响应时间包括两部分,等待时间和执行时间.在<性 ...

  4. TCP长连接,心跳机制介绍

    TCP长连接,心跳机制介绍 长连接 为何要长连接 心跳 心跳为何设置在服务器端 心跳维持长连接 TCP keep-alive的三个参数 参数的具体意义 心跳的使用场景 长连接 TCP经过三次握手建立连 ...

  5. TCP长连接下,在应用层面,定制自己的负载均衡

    TCP长连接下,流量负载均衡的做法 1 背景 2 存在的问题 2.1 连接被均分,流量无法被均分 2.2 长短信问题 2.3 IP鉴权问题 2.4 限速问题 3 定制自己的服务器负载均衡 3.1 解决 ...

  6. python使用socket实现协议TCP长连接框架

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 使用python实现协议中常见的TCP长连接框架." 分析多了协议就会发现,很多的应用,特别是游戏类和IM类应用,它们的协议会使用 ...

  7. TCP长连接与短链接

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...

  8. TCP长连接和短连接

    2019独角兽企业重金招聘Python工程师标准>>> 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操 ...

  9. java mina长连接短连接_MINA实现TCP长连接(四)——断开重连

    前言 今天涉及以下内容: mina官网及实现客户端需要的jar包 客户端实现重连接涉及到的几个类 重连接在Activity中的使用 效果图和项目结构图 重连接涉及到的类源码 先来波效果图 image. ...

最新文章

  1. 嘿嘿 刚刚进来 记录下
  2. “国产操作系统最大难题在于解决「生产关系」” | 人物志
  3. C#线程学习的一点体会和总结
  4. GitHub 发布了一款重量级产品,可直接运行代码!
  5. 以获客为目标 ,首席增长官从0到1实现用户增长
  6. 为员工长工资。从最低工资调起每人长10%,请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。
  7. qt: 获取sql数据表的所有的字段;
  8. etc下没有mysql目录下_解决Linux安装mysql 在/etc下没有my.cnf的问题
  9. java bootstrapcache_使用ehcache持久化数据到磁盘 并且在应用服务器重启后不丢失数据...
  10. 启动数据库时提示ORA-03113: 通信通道的文件结尾解决方法
  11. 7个大一C语言必学的程序 / C语言经典代码大全
  12. bxl类型封装转换为AD库封装
  13. 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
  14. 威金杀虫剂作者农夫和威金病毒制造者的聊天记录
  15. 详解神奇的卡尔曼滤波(Kalman filter)算法
  16. 视频教程-常见小票打印机打印故障及解决方法汇总视频教程-Windows
  17. 【音效素材】网络热门音效大合集,短视频必备(都是经典音效,质量不错)
  18. 钟表维修管理系统技术解析(八) 保修记录、新增、修改、报废
  19. python上方菜单栏不见了如何恢复_word菜单栏不见了,如何恢复
  20. reaxff反应力场计算

热门文章

  1. “接口”的定义及其与“抽象类”的区别
  2. v9php 碎片信息,phpcms v9碎片管理及调用技巧分享
  3. ES6 常用的特性整理
  4. [微信小程序]时间戳转日期
  5. iOS从通讯录中选择联系人
  6. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...
  7. review what i studied `date` - 2017-4-12
  8. jetty9请求form表单太小限制
  9. MySql 查询表字段数
  10. System.Web.Caching.Cache类 缓存 各种缓存依赖