前提
以前看剧一直用射手播放器,那还是1几年的时候,后来射手播放器不更新了,就换成了QQ影音,当前今天重新去看了下,射手播放器最新版本居然也更新到了2020,而QQ影音的最新公开版本好像也是2020年的,不过QQ影音的官网倒是显示敬请期待,估计过段时间又要更新版本了。
今天的主角是QQ影音的最新公开版本(QQ影音4.6.3.1104),虽然官网已经没有显示连接了,但是我们还是可以通过互联网博物馆找到几个月前的网站,然后获取当时的软件下载地址:https://dldir1.qq.com/qqyy/pc/QQPlayerSetup4.6.3.1104.exe
抓现行
那我是怎么看到QQ影音在上传播放记录的呢,当时正好在抓HTTP包,我习惯于边干活边看电视或者听小说之类的,一般呢也就是听个响,最近刚好有部很火的电视剧,就下载下来看来,毕竟在线版本广告太长了。
抓包的时候发现有个地址,包含了video.qq.com,就随手点了下,发现里面包含了操作系统,MAC地址,视频长度之类的信息。
然后用搜索工具搜了下,在QQPlayerMainModule.dll这个模块中找到了如下地址:
https://access.video.qq.com/pc_client/report_data?vappid=52502274&vsecret=594bcabf1bb909fb268c18657a2969bfdb06f55b61570b27&callback=func
挂上调试工具,简单看了下,中间有读取RSA KEY的代码,定位到了使用的KEY所在的位置,然后鹅厂家的工程师不知道出于什么目的,居然在程序中把公钥和私钥都放了进去。一般涉及向服务器提交数据的,都会进行加密,有些使用对称加密,有些使用非对称,而这个RSA就是非对称了。如果使用非对称,则一般使用公钥在客户端或者浏览器加密,然后服务器收到数据后私钥解密。有兴趣可以自己去搜下RSA。
下面是公钥,数据回传前一般用来加密数据
—–BEGIN RSA PUBLIC KEY—–
MIIBCAKCAQEA76XbzoLX1ZCxJL1Rq8o3OZJb0OCboLJXFjoCcSUMil2Y4ftJ01Yn
GG2GlD7vyjC42doj8dWe1oHnhpXeBjTQ6Qrh0ibDI7AeC+6VTG4YOYPow/Ou1ckD
piu5gYjI4hFlAH/AWWQluo+e3NY+mO+Kb/DkhcxTat0mhO4fxPy4fgpb5RcJgRZk
6n8wiL6zTpcQAIigdXyx01A33klBiuHgS7hBguLvDcrtilFX2MY7YapE7dYGDBM2
HQVmravhc+ut7OECGg7zLGy3bfb9/ExwKArCyrHdwLXQAVSbFlYzCQoKVNomVfzp
W5+lDpjI6Ehfl7S9NR5m2/tysVykTY8r7wIBAw==
—–END RSA PUBLIC KEY—–
下面是公钥,数据回传后在服务器进行解密,大部分情况下私钥都是不公开的
—–BEGIN RSA PRIVATE KEY—–
MIIEowIBAAKCAQEA76XbzoLX1ZCxJL1Rq8o3OZJb0OCboLJXFjoCcSUMil2Y4ftJ
01YnGG2GlD7vyjC42doj8dWe1oHnhpXeBjTQ6Qrh0ibDI7AeC+6VTG4YOYPow/Ou
1ckDpiu5gYjI4hFlAH/AWWQluo+e3NY+mO+Kb/DkhcxTat0mhO4fxPy4fgpb5RcJ
gRZk6n8wiL6zTpcQAIigdXyx01A33klBiuHgS7hBguLvDcrtilFX2MY7YapE7dYG
DBM2HQVmravhc+ut7OECGg7zLGy3bfb9/ExwKArCyrHdwLXQAVSbFlYzCQoKVNom
VfzpW5+lDpjI6Ehfl7S9NR5m2/tysVykTY8r7wIBAwKCAQEAn8Pn3wHlOQsgwyjh
HTF6JmGSi0BnwHbkuXwBoMNdsZO7QVIxN47EuvOvDX9Khssl5pFtS+O/Oavvrw6U
BCM18LHr4W8swnVpXUm43Z660QKbLU0fOTCtGXJ7q7CF7AuYqv/VkO1ufF+/PeQp
u0pcSqCYWTLiRz4ZrfQVLf3QVAWdrUUSPLtsD1o+Z7nyolhcPablSceIEZsGXB42
kTqOumfNv0PrPvqRD8hceCXFFt1bCvvt17PPPRoDqUVh9B7YSzp51rakxm6k99Pp
RtEPEroa+fZM9xo3WE8uOtXvPFAd3JtRZYIirhlbtTDX3an43nLTFY9KgGmeDkvH
QzKgawKBgQD4T5uErHseyQizHuSGsP1QNDeENN9dzRuf85EbQFgyCYm7a9tFuA+B
DEx4M/sTfUM7xDY0YA9Ei9OR2EGZdlAGkJo/TvrY+nLYUXDeGCyQmbZB+SLdnNNs
BF7DPAMdeoHBaaGI2tFpb/aGzoencvPcucPe4LAvD51ReHfa/0r8nwKBgQD3EZPp
eYIkCm8fzkNAqhU1b9bEUfIH68wOYIrUcLHYKpLReCHId0OS5lhU8JKAQhsAmSXs
6HY6tYrPV4I1D21i628MCQIjCFPnqMhB+eZI8j1YWp2MsTsQ+H8SghIutBAcIE+j
YuhL5oMUsEfdqNWNkEShtBdIC7+0I3MeaXg+sQKBgQClimetyFIUhgXMv0MEdf41
eCUCzeo+iL0VTQtngDrMBlvSR+eD0ApWCDL6zVIM/izSgs7NlV+DB+JhOtZmTuAE
YGbU31Hl/EyQNks+ushgZnmBUMHpEzedWD8s0qy+UavWRmuwkeDw9U8Eia/E9009
0S0/QHV0tROLpaU8qjH9vwKBgQCktmKbplbCsZ9qiYIrHA4jn+SC4UwFR91e6wc4
SyE6xwyLpWva+i0MmZA4oGGq1ryrEMPzRaQnI7Hfj6wjX55B8koIBgFssDfvxdrW
ppmF9tOQPGkIdidgpaoMVrbJzWASwDUXl0WH7wINytqTxeOztYMWeA+FXSp4F6IU
RlApywKBgBN9dwBvhKRUw5R8+yQxEugGyh0D8w/VzgoLsmE4aiFk31nVARx2+kAf
h1unpb2qlX7Ts+TcmFDt2o0GFUBF+vlC4sNAC2EAJ+JXjfUQqyxiGBebLG2ZasVk
po3P3HVyomCkxg7eGonZTUiegpSQ/TSywTx8qcOSQ9wz2b7Tuj28
—–END RSA PRIVATE KEY—–
上面两个密钥先留着,等下要用。
你可以使用其他工具抓包,也可以像我一样用fiddler,用fiddler记得开启https解密,不然看不到提交的数据包,不会开的自己搜索下。
设置完成后就让fiddler一直开着,然后启动QQ影音,随便找个视频,点击播放,就可以抓到数据包了,下图红色的就是数据包。
可以看到,除了fid之外,其他数据都没有加密,那么fid如何解密呢,需要用到我们上面的RSA私钥。这里我用的是在线的计算网站: http://tool.chacuo.net/cryptrsaprikey,输入私钥以及加密后的fid,就能看到我们播放的视频文件名了。
那到底上传了那些数据呢?
fid:播放的视频文件名(加密了),sExt:视频文件名后缀,play_guid:guid识别码,到底识别啥没关注,估计自动生成的,mac_Address:机器的MAC地址,后面还有操作系统版本号,播放器版本号,最后一个duration是视频的长度,按毫秒计算的,折合231秒,也就是3分51秒,和我们的视频时长对得住。
收场
那么如果不想他上传咋办呢,最偷懒的办法就是把域名的access.video.qq.com 加入到主机的Host列表中,指向127.0.0.1,或者找Winhex或者Ultraedit之类的直接修改QQPlayerMainModule.dll,把qq.com换成bb.com之类的,但是如果修改QQPlayerMainModule.dll,注意要修改不要增删网址长度,不然可能会破坏数据,当然你如果会使用调试器另说。