当前位置:   article > 正文

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

gbbq解码

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


 解密及完全解析通da信股本变迁gbbq权息文件。

前些天,被一位陌生人耍猴了,很不开心,求安慰。这个人,姑且称为讨厌的家伙吧,找我分析通da信gbbq文件的解密算法,报价后满口同意,并提了一堆要求,让我加班加点给他搞定,却在帮他搞定后喊穷乱压价,这个讨厌的家伙真的很是无耻。

言归正传,之前分析过通da信TCP长连接数据的算法:

通da信TCP长连接数据算法分析

它的数据是压缩未加密的。

通da信的资源很丰富,大量的第三方软件依赖它来实现,而在通da信安装目录下的的\T0002\hq_cache目录内,存在gbbq和gbbq.map两个文件,它包含了中国证券市场有史以来所有的股本和权息信息,非常的完整。

另外,通da信有很多不同的券商定制版本,例如招商证券的智远一户通等,皮不一样,本质相同。

gbbq是加密的,而gbbq.map文件则是未加密的很多数字,协议分析与还原公众号将介绍前者解密的方法,并对解密后的数据格式进行解析,然后对后者的含义进行解释,让大家有个开心的体验,掌握第一手的数据,是快人一步的前提。

另外,后续还将对同花顺等软件进行分析,实现一些小功能,有兴趣的可以找我聊聊(微信号ProtoSec)。

01

gbbq文件解密

使用二进制编辑器(例如UE)打开gbbq文件,会看到好多的二进制数据,当然是需要解密的:

仔细观察,头四个字节应该是长度相关的数据,为记录的条数,每条记录29字节,可以去算一算,文件大小对得上,根据分析,算法为3DES,每条记录的前24字节加密,而后5字节没有加密。直接上解密的核心代码,C的:

  1.   unsigned char *pKeyNow=key;
  2. unsigned char *pDataNow=*pdata+4;
  3. int count=*(int*)*pdata;
  4. while (count && pDataNow<*pdata+insz)
  5. {
  6. for (int i = 0; i < 3; i++)
  7. {
  8. unsigned int eax = *((unsigned int*)(pKeyNow + 0x44));
  9. unsigned int ebx=*((unsigned int*)(pDataNow));
  10. unsigned int num = eax^ebx;
  11. unsigned int numold = *((unsigned int*)(pDataNow + 0x4));
  12. for (int j = 0x40; j > 0; j = j - 4)
  13. {
  14. ebx = (num & 0xff0000) >> 16;
  15. eax = *((unsigned int*)(pKeyNow + ebx * 4 + 0x448));
  16. ebx = num >> 24;
  17. eax += *((unsigned int*)(pKeyNow + ebx * 4 + 0x48));
  18. ebx = (num & 0xff00) >> 8;
  19. eax ^= *((unsigned int*)(pKeyNow + ebx * 4 + 0x848));
  20. ebx = num & 0xff;
  21. eax += *((unsigned int*)(pKeyNow + ebx * 4 + 0xC48));
  22. eax ^= *((unsigned int*)(pKeyNow + j));
  23. ebx = num;
  24. num = numold^eax;
  25. numold = ebx;
  26. }
  27. numold ^= *((unsigned int*)pKeyNow);
  28. unsigned int *pInt = (unsigned int*)pDataNow;
  29. *pInt = numold;
  30. pInt = (unsigned int*)(pDataNow+4);
  31. *pInt = num;
  32. pDataNow = pDataNow + 8;
  33. }
  34. pDataNow = pDataNow + 5;
  35. count--;
  36. }

这里的key是已经初始化好的密钥结构体数据块,具体的过程就是几次异或循环。

解密后,得到明文的数据文件:

诶,还是有乱码,怎么回事呢,其实,这是因为数据本来就是二进制的,需要对数据格式进行解析,继续看后面。

02


gbbq文件数据格式解析

股本变迁gbbq权息文件解密后得到的文件是二进制格式,去除文件前四个字节后,每29字节为一条记录,每条记录里面的数据字段如下:

其中,m为市场类型,占1字节,0为深市,1为沪市。股票代码为字符串,占7字节,其中最后一字节为0。日期为整数,占4字节,为年月日的格式,如图中8DA72F01转下字节序,即为19900301,t为数据类别,占1字节,不同的t值表示不同的数据类型,t值取值区间为1~14,根据t的值不同,之后的四个数据含义不同,数据1、数据2、数据3、数据4这四个数据均是float型数据,各占四字节。

下面列出不同数据类别t的含义以及对应的四个数据的含义:

  1. protosec数据类别t
  2. 1 除权除息
  3. 数据1 分红
  4. 数据2 配股价
  5. 数据3 送转股
  6. 数据4 配股
  7. 2 送配股上市
  8. 数据1 前流通盘
  9. 数据2 前总股本
  10. 数据3 后流通盘
  11. 数据4 后总股本
  12. 3 非流通股上市
  13. 数据1 前流通盘
  14. 数据2 前总股本
  15. 数据3 后流通盘
  16. 数据4 后总股本
  17. 4 未知股本变动 公众号协议分析与还原
  18. 数据1 0
  19. 数据2 0
  20. 数据3 0
  21. 数据4 0
  22. 5 股本变化
  23. 数据1 前流通盘
  24. 数据2 前总股本
  25. 数据3 后流通盘
  26. 数据4 后总股本
  27. 6 增发新股
  28. 数据1 0
  29. 数据2 增发价
  30. 数据3 增发数量
  31. 数据4 0
  32. 7 股份回购
  33. 数据1 前流通盘
  34. 数据2 前总股本
  35. 数据3 后流通盘
  36. 数据4 后总股本
  37. 8 增发新股上市
  38. 数据1 前流通盘
  39. 数据2 前总股本
  40. 数据3 后流通盘
  41. 数据4 后总股本
  42. 9 转配股上市
  43. 数据1 前流通盘
  44. 数据2 前总股本
  45. 数据3 后流通盘
  46. 数据4 后总股本
  47. 10 可转债上市 protosec
  48. 数据1 前流通盘
  49. 数据2 前总股本
  50. 数据3 后流通盘
  51. 数据4 后总股本
  52. 11 扩缩股
  53. 数据1 0
  54. 数据2 0
  55. 数据3 比例
  56. 数据4 0
  57. 12 非流通股缩股
  58. 数据1 0
  59. 数据2 0
  60. 数据3 比例
  61. 数据4 0
  62. 13 送认购权证
  63. 数据1 行权价
  64. 数据2 0
  65. 数据3 份数
  66. 数据4 0
  67. 14 送认沽权证
  68. 数据1 行权价
  69. 数据2 0
  70. 数据3 份数
  71. 数据4 0

最终解析出的数据整理后如下:

如果没整理,则是这种形式:

条数,市场,股票代码,日期,数据类别,数据1,数据2,数据3,数据4

0,0,000001,19900301,1,0.0,3.559999942779541,0.0,1.0

1,0,000001,19910403,5,0.0,0.0,2650.0,4850.01708984375

2,0,000001,19910502,1,3.0,0.0,4.0,0.0

3,0,000001,19910502,2,2650.0,4850.01708984375,3949.072265625,8975.1640625

4,0,000001,19910817,1,0.0,0.0,10.0,0.0

5,0,000001,19920323,1,2.0,0.0,5.0,0.0

6,0,000001,19930524,1,3.0,16.0,8.5,1.0

7,0,000001,19930524,2,3949.072265625,8975.1640625,18812.984375,26941.7890625

8,0,000001,19930630,2,18812.984375,26941.7890625,18004.330078125,26125.369140625

9,0,000001,19940709,2,18004.330078125,26125.369140625,19804.76953125,28737.91015625

还是前面整理的好,如果想要解析好了的数据样例,找我获取吧,wx:protosec。

当然,需要注意一下,里面的b股的价格相关数据,是人民币价格,如果要转成美元价格,需要根据当时的汇率转换下。

03


gbbq.map文件数据解析

前面介绍了gbbq文件的解密和解析,这里继续介绍下gbbq.map,它是明文的,没有加密,全部是数字,截取一段内容是这样:

  1. 0000017703
  2. 0000027760
  3. 0000047695
  4. 0000056936
  5. 0000067760
  6. 0000077412
  7. 0000087546
  8. 0000097756
  9. 0000107542
  10. 0000117497
  11. 0000127775
  12. 0000147497
  13. 0000167487
  14. 0000176808
  15. 0000197542
  16. 0000206544
  17. 0000217548
  18. 0000237503
  19. 0000257497
  20. 0000267699

它的含义很简单,每行一个股票的描述,前6字节为股票代码,后4字节为更新批次,表示gbbq里面该股票的数据最近一次是更新是哪一次,大家可以不纠结它。

04


结束

到这里,对通da信gbbq相关文件的解析就结束了,大家如果对此有什么问题,撩我,不要耍我。再透露下,后面可能会搞搞同花顺的小工具,为大家服务,至于啥时候搞,谁知道呢,祝大家发财。

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/171045
推荐阅读
相关标签
  

闽ICP备14008679号