手机验证码登录QQ,出现隐藏QQ?实战爆破一下

源于网络

关于隐藏QQ前几天在说说中发现引人注目的一条广告。f202ff37d1c6c345fa6e5287d452fb19.png说是什么手机号验证码登录就会出现隐藏QQ,秉承着好奇心害不死人的原则试了一下,我把两个手机号试了一下,发现了一个隐藏QQ号,就是:85xxxxxx39这个7cf9f5473714ab91cc76a4f1910fb7be.png
为什么会有呢?

好问题!据说由于中国人口很大,然后手机号会被重复使用的。我这个才注册没多久的(冤种)腾讯QQ大王卡就是别人用过的手机号(居然二手货,害!),这个隐藏QQ就是别人注册后没解绑或者没绑定手机号默认是注册手机号

登录试试?

试试就试试:)(doge6) 哦哟!不得了!腾讯QQ还留了one hand,还要有验证!cd36e6d4cca422c7a3fb2ce1d304b4f7.png很显然包括通过资料辅助验证这四种验证方式都行不通

找回密码,再登录

找回密码可以用手机号号找回,这样我们就可以找回隐藏QQ的密码了!但是事与愿违,很可惜这也需要进一步的验证!5f9af119dab220efc59a01d9033d5367.png

开始爆破

选择爆破方式

如果爆破密码很显然这是一个错误的选择,我选择爆破QQ号码。这样即可以在验证码登录后填写QQ号进行验证,也可以进行用QQ号找回密码然后再用手机验证码验证。#### 怎样爆破?众所周知一般的QQ号都是8到10位数。因为85xxxxxx39中的x有6个,所以我断定这个QQ一定有10位,虽然很low的断定但是情有可原,毕竟也是弄着玩。问:10位QQ号中有6位数字不知道,有多少种可能。我毫不犹豫的打开了百度口算出来了,有100万种可能。如果我一个一个搜然后比对头像的话需要很久,就算我一秒一个也需要12天,感觉不多但是前提是得不吃不喝一秒一个,这个手工搜索不现实。我的垃圾思路:想出来用头像比对的方式来爆破QQ号→代码运行出100万个可能的QQ号→弄到正确QQ头像的原图→通过对每个QQ头像链接进行比对→最后代码来执行比对任务

如何得到100万个QQ

这里使用的是PHP代码执行的,自己使用要适当修改。
PHP//列出100万个QQ号<?php$prefix = '85';//前两位$suffix = '39';//后两位$total = 1000000; // 总共的可能数量如果是9位QQ的话那就是100000$result = "";// 生成可能的中间六位数字for ($i = 0; $i < $total; $i++) { $middle = str_pad($i, 6, '0', STR_PAD_LEFT); // 使用0填充到6位数 $qq = $prefix.$middle.$suffix; $result .= $qq."\n";}// 将列出结果一行一个QQ号保存到qq.txtfile_put_contents('qq.txt', $result);echo "可能的QQ号已保存到qq.txt文件中。";?>随便上传到一个PHP文件里(例如go.php),第一种:用域名访问该文件(域名/go.php)第二种:SSH终端中运行go.php,两种方式都可以生成,然后服务器里的qq.txt文件里就包涵100万个QQ号了#### 找正确QQ头像的原图我们先从QQ上截屏,这个截屏因为比较模糊,所以我们要找它的原图。d61c3cfa6b3991610722cfa6cf980a21.png这里没有什么高级的图片变高清或者什么修复的软件和代码。我用的是最朴实无华的百度识图,然后找相识,这个方法仅仅适用于头像是网图的。我这个还是不错找到了a5a5f37ef7c35efead28f1a4070a7500.jpg043ebf2c8f8426d44de114f8c9022982.jpg

快速获取其它QQ头像

这里有一个获取QQ头像的链接,高清大图PHPhttp://q.qlogo.cn/headimg_dl?dst_uin=QQ账号&spec=640&img_type=jpg然后我们可以通过PHP代码写出一个可以根据qq.txt文件里的QQ号批量下载QQ头像的代码。PHP//批量下载图片<?php// 检查qq.txt文件是否存在if (!file_exists('qq.txt')) { echo "qq.txt文件不存在"; exit;}// 创建img文件夹if (!file_exists('img')) { mkdir('img');}// 读取qq.txt文件$qqList = file('qq.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);// 遍历每个QQ号foreach ($qqList as $qq) { $qq = trim($qq); // 去除空格和换行符 $url = "http://q.qlogo.cn/headimg_dl?dst_uin={$qq}&spec=640&img_type=jpg"; $imgPath = "img/{$qq}.jpg"; // 图片保存路径及文件名 // 下载图片并保存 file_put_contents($imgPath, file_get_contents($url));}echo "图片下载完成!";我们有100万个QQ号,如果一次性全部下载完的话有些废服务器,所以这个代码不好用,优解看下一步。

该如何进行对比?

这个问题问得好!我也不知道,但是我有百度,查到了一个:“感知哈希算法之图片相似度对比”我简简单单的抄袭借鉴了一下,加上批量下载图片。我们可以知道,如果一次性下载完100万张QQ头像服务器是承受不住的,但是我们可以分批处理下载图片。把代码运行一小会儿后出现了错误:ERR_ADDRESS_UNREACHABLE可能是因为运行时间和内存的原因,我加上了相应限制:PHPset_time_limit(0);ini_set('memory_limit', '2048M');感觉100万张图片全部下载下来很多而且占用空间,所以加了一个每执行完一批就就删除对应的图片。做了一些优化可以让服务器负担更小,比如对循环进行优化,减少不必要的重复计算和使用缓存来减少重复的计算或读取操作,提高性能。最终完整的代码就新鲜出炉咯PHP//感知哈希算法对比图片相似度<?phpset_time_limit(0);ini_set('memory_limit', '2048M');//根据实际情况修改数字class img_compare{ // 比较相似度 public function compare($img1, $img2) { $hash1 = $this->gethash($img1); $hash2 = $this->gethash($img2); if (strlen($hash1) !== strlen($hash2)) return false; $count = 0; $len = strlen($hash1); for ($i = 0; $i < $len; $i++) { if ($hash1[$i] == $hash2[$i]) { $count++; } } // 返回相似度 return $count; } // 将图片文件返回为图像标识符 public function getimg($url) { $name = pathinfo($url, PATHINFO_EXTENSION); $img = call_user_func('imagecreatefrom' . ($name == 'jpeg' ? 'jpeg' : $name), $url); return $img; } // 获得图片指纹 public function gethash($url) { $array = array(); $total = 0; $new_img = imagecreatetruecolor(8, 8); list($ex_w, $ex_h) = getimagesize($url); $ex_img = $this->getimg($url); imagecopyresampled($new_img, $ex_img, 0, 0, 0, 0, 8, 8, $ex_w, $ex_h); imagedestroy($ex_img); for ($i = 0; $i < 8; $i++) { for ($j = 0; $j < 8; $j++) { $gray = (imagecolorat($new_img, $j, $i) >> 8) & 0xFF; $array[$i][$j] = $gray; $total += $gray; } } imagedestroy($new_img); $average = intval($total / (8 * 8 * 2)); $hash = ''; for ($i = 0; $i < 8; $i++) { for ($j = 0; $j < 8; $j++) { $hash .= ($array[$i][$j] >= $average) ? '1' : '0'; } } return $hash; }}$file_path = 'qq.txt';$qq_numbers = file($file_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);// 分批处理参数$batch_size = 10;$total_qq = count($qq_numbers);$num_batches = ceil($total_qq / $batch_size);// 定义匹配数组$matched_qq = [];$img = new img_compare();// 启用输出缓冲区控制ob_start();// 循环遍历分批处理for ($i = 0; $i < $num_batches; $i++) { $start = $i * $batch_size; $end = min(($i + 1) * $batch_size, $total_qq); // 当前批次的QQ号码 $batch_qq = array_slice($qq_numbers, $start, $end - $start); // 处理当前批次的QQ号码 foreach ($batch_qq as $qq) { // 构建替换后的链接 $replace_url = str_replace("QQ", $qq, "https://q1.qlogo.cn/g?b=qq&nk=QQ&s=640"); // 下载图片 $local_image_path = 'img/' . $qq . '.jpeg'; file_put_contents($local_image_path, file_get_contents($replace_url)); // 计算图片相似度 $similarity = $img->compare($local_image_path, 'img/true/QQ.jpeg'); // 输出链接对比结果到内容输出框 echo "QQ号码:" . $qq . ",相似度:" . $similarity . "%\n"; // 判断相似度是否大于等于90% if ($similarity >= 90) { // 添加到匹配数组 $matched_qq[] = $qq; } } // 写入当前批次匹配的号码到trueqq.txt文件 if (!empty($matched_qq)) { file_put_contents('trueqq.txt', implode(PHP_EOL, $matched_qq) . PHP_EOL, FILE_APPEND); echo "已匹配的号码已保存到trueqq.txt文件\n"; $matched_qq = []; // 清空匹配数组 } // 删除下载的图片 foreach ($batch_qq as $qq) { $local_image_path = 'img/' . $qq . '.jpeg'; if (file_exists($local_image_path)) { unlink($local_image_path); } }}// 输出已匹配的号码if (!empty($matched_qq)) { echo "已匹配的号码:\n"; foreach ($matched_qq as $qq) { echo $qq . "\n"; }}// 清空输出缓冲区并关闭ob_end_flush();?>

你需要做的!
  1. 在服务器上创建go.php,写入“列出100万个QQ号”的代码后运行,然后会自动创建qq.txt而且里面包涵所以可能的QQ号
  2. 在服务器上创建img文件夹,所有下载的头像将会上传到img文件里里
  3. 在服务器上创建img/true文件夹把正确的头像放在img/true里并命名QQ.jpeg
  4. 在服务器上创建trueqq.txt,这是用于储存正确率三90%的QQ号5. 新建一个run.php,将“感知哈希算法对比图片相似度”的代码写入,最后运行run.php并得出结果。

最后

结果结果我是没成功,报错502 Bad Gateway,通常是由服务器端出现问题导致的。因为没钱买高配置的服务器所以报错:^(流泪) #### 帮助各位大佬,我是小菜。如果有什么代码错误和需要修改的地方,请提出来我好学习学习。#### 唠叨就是这个QQ号也是别人的,如果强行给人家拿了。别人应该也会心疼的,如果实在想要可以加爆破得到的QQ,看看有没有人使用:)(xiaoku) 。这个代码写的不怎么好,可能有问题,毕竟服务器的原因没有完成。

2024年1月3日补充

我运行代码的时候一直用的浏览器访问php文件来运行的,所以导致502 Bad Gateway,后来想我发现是可以直接在SSH终端里,使用命令运行php,而且可以长时间运行代码,但是我没有时间来继续实践下去了(主要是那个隐藏QQ号被我解绑

原文链接在这里

原文链接🔗
林墨白的博客:https://blog.lmb520.cn/

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值