检索经由布隆过滤器 (Bloom Filter) 构建的网易邮箱账户信息索引。 可以用于检验您输入的用户名与密码对是否存在于收集到的社工数据当中。
Bloom Filter 索引误正率 (False Positive) 约为 ..., 容量约 ... 条。
技术说明
发现 v2 上 Andy1999 提到网易的裤子,好久不写东西了,想想也无聊,那就玩玩呗。 看了看国内的网络下载 Mega 的资料实在是心累,就去戳了戳某不愿意透露姓名的T大, 一番谈笑风生之后就把数据清洗的事情愉快地甩了个锅 (笑) 最后开发几乎用掉一周时间 (中间被 CMake 坑、被 OpenSSL 坑、被 nghttp2 坑、被自己坑), 老人家行动力也是下降了呢。(前言结束)
解压之后初步分析这裤子也是东拼西凑出来的:用彩虹表碰出来的、钓鱼来的、没密码的、机器人注册的、假的。 不止是 126.com 和 163.com 的邮箱,腾讯搜狐的邮箱也都有出现 (大致喵了一眼),看上去很多数据都有些年头了。 grep 了一下并不能找到自己的邮箱和密码什么的也就放心了,也希望大家不要在国内奇奇怪怪的地方提交自己的账户信息。
邮箱查询 服务已经有了, 那就来做个邮箱+密码查询吧,毕竟有可能邮箱在库里可是密码早就已经改掉了, 只是用邮箱查询的话还是不知道是不是应该修改现在使用的密码。 如果曾经有修改过密码,也可以试着把邮箱和之前的密码也丢进来玩。
整理数据之后使用 Bloom Filter 索引, Bloom Filter 索引的原理还是很简单的——用 k 个哈希函数对输入进行运算,获得 k 个值记为 h,建立一个长度为 m 位的内存, 对于第 x 个哈希值,将内存中 (hx MOD m) 的位置置为 1。 生成的索引文件中并不会出现任何用户的信息,想要从索引中还原出用户信息也是相当困难的。 (况且这个索引存在误正率,虽然理论上不知道可不可行,我反正觉得这么处理是很安全了)
这边使用 JavaScript 实现了服务器的哈希函数,也避免了用户提交的用户名和密码被传输给服务器, 服务器只要根据提交的 k 个 64 位元无符号整数查询内存中对应的位置,如果这些位置都为 1, 用户输入的账户信息就很有可能出现在社工库中;如果 k 个位置中任何一个位置为 0 则输入的邮箱和密码并未出现在库中。 (查看网页源代码)
Bloom Filter 索引查询有一定的误正率 (False Positive) 也就是体检的时候所说的「假阳性率」。 可能您输入的用户名与密码并不在库中,但是得到了「存在」的错误结果。 但您输入的数据一旦被判定为「不存在」是可以确定您输入的数据不存在于库中。
最后,本项目源代码托管在 GitHub。 欢迎参与到本项目的使用和开发。
更新日志
20160412u01
- 重建索引使查询对邮箱大小写不敏感
- 正确处理包含 Unicode 字符的查询
- 增加「更新日志」
- 更新准确的记录数
20160412
- 检索服务上线