*************
之前根据TX放出来的MARS 已经研究出来了
STN部分,包含秘钥协商,登陆校验啥的,
但是MARS并没有公开CDN的模块,所以消息发送只能发文本消息,但是emoji没有用
CDN所以emoji,也可以用。
可是如果我想发图的话,或者发音频,就得使用CDN了,目前来看,CDN也可以走HTTP
分别使用/uploadv3上传,/dwonload下载。
流程大概是先计算出一个filekey,这个key如何算,暂时还没弄清楚。
然后生成一个aeskey,这个可能是个随机key,毕竟每次都不一样。
如果是发图,会生成略缩图,和中等的压缩图,原图,三张图片。
然后进行打包,打包应该使用RSA算法,公钥是置于客户端的。
之后有个authkey,这个key是登录的时候返回回来的,暂时还没弄清这个key用来干嘛。
图片的话每64K分割,进行一次AES加密,然后打包,用http上传给服务器
之后服务器会返回一个fileid。
利用这个fileid,就可以拼凑一条普通消息,走cgi发送出去了。
对方收到以后,根据这个fileid去cdn获取图片资源。
现在的问题是:filekey是咋生成的,肯定不是随便生的,我试了MD5 和crc32 好像并不太对。
整个的http post 文件上传的服务器是怎么样选择的。
包头的信息以明文的形式组包,大概是这么个样子
00000003 序列号
766572 ver (ASCII)
00000001
31
00000009
77656978696e6e756d weixinnum
0000000a
3235393033353234303
000000003
736571 seq
00000001
35
0000000d
636c69656e7476657273696f6e clientversion
0000000a
31363434353630393237
0000000c
636c69656e746f7374797065 clienttype
00000009
57696e646f77732037 windows
00000007
617574686b6579 authkey
00000045
3043020101043c303a020101020101020473e5a41002033d14ba02041e8ffa3a02042370fb3a02033d11fe02042bccf73a02042ef516d202045b4db5100204106ef4ac0400
有没有一起来讨论讨论的,这个可以讨论吧,仅供学习研究,这个CDN的通讯流程,如有侵权,删。
2018年5月25日17:57:30
最新分析发现,其实不是走的http,而是走的TCP,但是却用的443 80 8080 端口,然后TCP的数据凑了个http的头
比如这样 POST /%s HTTP/1.0\r\nContent-Length: %u\r\n\r\n
后面是KV结构数据打包而成的
起先是觉得是定长long 接数据大概是这样子
string req;
DWORD dwVer = htonl(key.size());
req = req + string((const char *)&dwVer, 4);
req = req + key;
dwVer = htonl(value.size());
req = req + string((const char *)&dwVer, 4);
req = req + value;
return req;
cdn的 服务器ip 和authkey 通过 getcdn 去获取
目前通过socket 可以利用客户端生成的数据,可以直接上传下载。
但是自己单独的图片生成的数据好像不行
好像是kv的打包不对,有人说不是定长的long,是proto压缩
暂时还没搞清楚,其他的key的含义,已经影响也没有十分清楚,如果有大兄弟搞明白了,希望告知下。
2018年5月28日15:13:11
已经搞懂成功了 关贴
没有隐藏的关卡 ,注意参数 设置对就行了。
然后uploadmsgimg 发送过去 就好了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-3-28 20:29
被kanxue编辑
,原因: 勿放群信息