也论腾讯拿你的历史记录做了点啥

也论腾讯拿你的历史记录做了点啥

Lion Yang & Epics of Anticensorship
已得作者首肯,特此转载。
群友们献祭了 100w 条浏览历史 + 中文维基百科全部二字词条跑出的结果

拿到历史记录之后干了什么?应该是读取了淘宝、天猫和京东的搜索记录,并且通过统一接口上传了特定的搜索关键词吧。

根据有关灵媒的说法,内部算法具体 URL 检查步骤如下:

  1. 确保 URL 是 UTF-16LE 编码的宽字符串
  2. 把整条 URL 转换成大写
  3. 寻找长度为 size 的,MD5(4个整数)哈希为 A B C D的子字符串。

MD5 是一种将任意长度内容转换为四个整数的单向函数。由于它找的是一小段字符串的 MD5,所以我们没法恢复出它想要找的真正原文是什么。


总共有四对这样的 (size, A, B, C, D),分别是:

23, 0x1C6389BA, 0xF2FA5666, 0xF2A2E0D3, 0xC892E7BA 
34, 0xB829484C, 0x520F7CC3, 0x94EC8A73, 0xD808E79
30, 0xDDA1029, 0x9E67F3BB, 0xB18ACC45, 0x597CF438
21, 0x2564591C, 0x5B11347B, 0x846A0F72, 0xEF704A8


我们只能暴力破解 23 个字符、34 个字符……,天文数字的计算耗时,非常困难。


?吗

不困难,因为 QQ/TIM 要找的东西肯定有机会出现在用户的历史记录里

把自己多年丰富的历史记录全部翻出来主动喂给这个算法就好。

23, 0x1C6389BA, 0xF2FA5666, 0xF2A2E0D3, 0xC892E7BA
=> ://S.TAOBAO.COM/SEARCH?
34, 0xB829484C, 0x520F7CC3, 0x94EC8A73, 0xD808E79
=> LIST.TMALL.COM/SEARCH_PRODUCT.HTM?
30, 0xDDA1029, 0x9E67F3BB, 0xB18ACC45, 0x597CF438
=> (未知)
21, 0x2564591C, 0x5B11347B, 0x846A0F72, 0xEF704A8
=> SEARCH.JD.COM/SEARCH?

只找到了其中的三个,它在寻找 淘宝、天猫、京东 的历史搜索记录


接下来根据一位幽灵的托梦,我了解到它会截取 URL 后面的 q=... 和 keyword=... 两种搜索参数,它包含了在网页上输入的搜索内容。

针对搜索的内容,它又故技重施,(目前只有)有以下的六条内容匹配。

# group 1
18, 0x8C2F8C3B, 0x9CA6DB69, 0x663C9537, 0xA0B64B58
7, 0x966DC59E, 0x592F2331, 0x6D2BF021, 0xA1D96C3C

# group 2
18, 0x7FACF63C, 0xBEC2FCB0, 0xBE8836F6, 0x167CC273
18, 0x46B6D8D7, 0x8AA82723, 0xBE19FA24, 0x670E160C

# group 3
18, 0xE235F85E, 0x5C924D20, 0xA61B84AC, 0x4BC792DD
18, 0x79088BEC, 0xF29CC9E8, 0xBF920D9, 0x455AE9ED

在我的浏览记录里,恰好找到了第二和第四条的内容为

7, 0x966DC59E, 0x592F2331, 0x6D2BF021, 0xA1D96C3C
VINTAGE

18, 0x46B6D8D7, 0x8AA82723, 0xBE19FA24, 0x670E160C
%E8%9E%8D%E8%B5%84

%E8%9E%8D%E8%B5%84 这18个字是“融资”的 URL 里的编码。

结合这个发现,联想到 18 = 3*6,再结合 一个汉字等于3个字节 的事实。不难理解,剩下的四个 size 为 18 的未知字符很有可能都同样是汉字双字词

汉字虽多,但是实际上通用规范汉字表常用字集只有 3500 字,两个字就遍历两层即可,百万级别的循环对于电脑来说还是轻松简单的。另外还有有趣的朋友们(编者注:即 Epic of Anticensorship 小编和某匿名群友)提供的汉字双字词表,遍历起来就更快了。


# group 1
18, 0x8C2F8C3B, 0x9CA6DB69, 0x663C9537, 0xA0B64B58  # 古着
7, 0x966DC59E, 0x592F2331, 0x6D2BF021, 0xA1D96C3C   # VINTAGE

# group 2
18, 0x7FACF63C, 0xBEC2FCB0, 0xBE8836F6, 0x167CC273  # 融券
18, 0x46B6D8D7, 0x8AA82723, 0xBE19FA24, 0x670E160C  # 融资

# group 3
18, 0xE235F85E, 0x5C924D20, 0xA61B84AC, 0x4BC792DD  # 炒股
18, 0x79088BEC, 0xF29CC9E8, 0xBF920D9, 0x455AE9ED   # 股票

这就是 QQ/TIM 关心的全部关键词。然后或许可能我觉得会带着 skey=0x800915e 这个编号把搜索到的 group 组号 传上去服务器里。可以确定的是,它没有上传完整 URL,更没有上传所有浏览记录。

根据一位不知名妖怪所说:这份程序实现的成熟度很低,很可能只是一个初步的、实验性的或者说试探性的代码,以上清单也是固定在程序里的,不能下发任务控制 QQ 扫描其他的关键词。腾讯公司顶多就知道你是个会到天猫淘宝京东搜索炒股教程、融资技巧、和买二手衣服(?)的用户罢了。

什么叫用户画像啊?(战术后仰)

如是我闻。


最后一个已经被发现