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

关于隐藏QQ源于网络前几天在说说中发现引人注目的一条广告。

Screenshot_2023_0729_110123.png说是什么手机号验证码登录就会出现隐藏QQ,秉承着好奇心害不死人的原则试了一下,我把两个手机号试了一下,发现了一个隐藏QQ号,就是:85xxxxxx39这个

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

登录试试?试试就试试:)(doge6) 哦哟!不得了了!腾讯QQ还留了one hand,还要有验证!

Screenshot_2023_0731_125420.png很显然包括通过资料辅助验证这四种验证方式都行不通

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

Screenshot_2023_0731_125809.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号

$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.txt

file_put_contents('qq.txt', $result);

echo "可能的QQ号已保存到qq.txt文件中。";

?>随便上传到一个PHP文件里(例如go.php),第一种:用域名访问该文件(域名/go.php)第二种:SSH终端中运行go.php,两种方式都可以生成,然后服务器里的qq.txt文件里就包涵100万个QQ号了

找正确QQ头像的原图我们先从QQ上截屏,这个截屏因为比较模糊,所以我们要找它的原图。

Screenshot_2023_0731_140108.png这里没有什么高级的图片变高清或者什么修复的软件和代码。我用的是最朴实无华的百度识图,然后找相识,这个方法仅仅适用于头像是网图的。我这个还是不错找到了

IMG_20230731_140334.jpgQQ.jpeg快速获取其它QQ头像这里有一个获取QQ头像的链接,高清大图

代码语言:PHP复制http://q.qlogo.cn/headimg_dl?dst_uin=QQ账号&spec=640&img_type=jpg然后我们可以通过PHP代码写出一个可以根据qq.txt文件里的QQ号批量下载QQ头像的代码。

代码语言: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可能是因为运行时间和内存的原因,我加上了相应限制:

代码语言:PHP复制set_time_limit(0);

ini_set('memory_limit', '2048M');感觉100万张图片全部下载下来很多而且占用空间,所以加了一个每执行完一批就就删除对应的图片。做了一些优化可以让服务器负担更小,比如对循环进行优化,减少不必要的重复计算和使用缓存来减少重复的计算或读取操作,提高性能。最终完整的代码就新鲜出炉咯

代码语言:PHP复制//感知哈希算法对比图片相似度

set_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();

?>你需要做的!在服务器上创建go.php,写入“列出100万个QQ号”的代码后运行,然后会自动创建qq.txt而且里面包涵所以可能的QQ号在服务器上创建img文件夹,所有下载的头像将会上传到img文件里里在服务器上创建img/true文件夹把正确的头像放在img/true里并命名为

QQ.jpeg在服务器上创建trueqq.txt,这是用于储存正确率三90%的QQ号新建一个run.php,将“感知哈希算法对比图片相似度”的代码写入,最后运行

run.php并得出结果。最后结果结果我是没成功,报错502 Bad Gateway,通常是由服务器端出现问题导致的。因为没钱买高配置的服务器所以报错:^(流泪)

帮助各位大佬,我是小菜。如果有什么代码错误和需要修改的地方,请提出来我好学习学习。

唠叨就是这个QQ号也是别人的,如果强行给人家拿了。别人应该也会心疼的,如果实在想要可以加爆破得到的QQ,看看有没有人使用:)(xiaoku) 。这个代码写的不怎么好,可能有问题,毕竟服务器的原因没有完成。

原文链接:林墨白的博客

Back to top: