免责声明:
本文及其所附软件仅供合法测试、研究与教育用途。作者不对因使用或误用本软件所引发的任何直接或间接损失、法律责任或其他后果承担任何责任。使用者在使用过程中必须严格遵守所在国家或地区的相关法律法规,确保其行为均属合法范围内。本文及软件均不构成任何形式的授权许可,使用者应在充分了解风险并自愿承担全部后果的前提下使用

警告:
请注意,本软件涉及对OJ账号的爆破操作,该行为在未经合法授权的情况下可能构成非法侵入、破坏计算机信息系统安全等犯罪行为。任何未经授权的使用、复制或传播行为均可能受到刑事及民事法律的严厉追究。使用者务必在操作前确认已获得合法授权,并对自身行为及由此产生的全部法律后果负责。建议在开展相关测试前咨询专业法律意见,确保操作合规、安全

其实也没那么严重啦~

“你是否为忘记密码(朋友:危)而焦虑?
你是否为找不到破解方法而烦恼?
没关系,OJ账号爆破软件来了!
让你轻松破解,解除密码困扰!
但提醒一句,快乐破解,合法为先!”

本篇着重介绍了OJ(专指形如此OJ)账号爆破工具.好吧我就是闲的手有点痒

我们都知道OJ这个东西是有个人的账号和密码的,但是有时候我们会忘掉我们的密码没法登录,于是便有了此工具(好朋友快乐机

局限性

首先强调,本工具只针对于弱密码用户进行爆破(类似撞库),请保证被爆破OJ的稳定性避免造成损失(一般开个玩玩就行了)

其次,本工具的爆破对象具有针对性,SYZOJ

您需要准备密码库,这里只能为你提供一个弱密码库

事件

下列所有内容均为真实事件改编
(不如说就是真实事件)

在我们机房有一个非常"活泼"的小男孩坐在我旁边,每次在OJ的比赛上做题都会去悄悄的登录别人的账号,因为这个OJ账号不限制登录设备,也就是说只要你啥也不搞没人发现你登录了别人的账号.在那时由于每一个人的初始密码都是123456 ,于是那这个小男孩就拷贝了别人的代码提交.
自称"寄生虫"

那我为什么会做这个工具那?

因为这个"寄生虫"太粘人(烦人)了,坐在我旁边经常骚扰我,抄袭完代码直接来嘲讽我,大言不惭地说我连xxx都做不出来,再摆出一副无法描述的表情,这里我就不放图了 (省的说我侵犯某人肖像权)

说实话旁边有一个这么jian的人还是很难受的.

然后那?那时候我正好对网络安全感兴趣,想到可以通过暴力枚举的方式来获取密码.

于是一个邪恶的想法就诞生了...

分析请求

回到家的我打开了OJ网站,退出了我的账号,进入登录界面,然后按下了F12 ,在UI界面尝试登录账号密码均为空的账号,找到了这个登录请求

[文章][日常]搞OJ的小玩意1[1]-1749345627495.png

[文章][日常]搞OJ的小玩意1[2]-1749345627495.png

可以看到这个POST 请求并没有直接发送原密码而是进行了加密,且服务器响应的值为错误的代码,通过测试我们明白了怎么判断密码是否正确.

但是最大的问题就是怎样破解它的加密密钥那?

我们可以找到这个请求的发起程序就在html文件里,那么不就好办了,很快我找到了这段js:

function login() {
    password = md5($("#password").val() + "syzoj2_xxx");
    $("#login").addClass("loading");
    $.ajax({
        url: "/api/login",
        type: 'POST',
        data: {
            "username": $("#username").val(),
            "password": password
        },
        async: true,
        success: function(data) {
            error_code = data.error_code;
            switch (error_code) {
                case 1001:
                    show_error("用户不存在");
                    break;
                case 1002:
                    show_error("密码错误");
                    break;
                case 1003:
                    show_error("您尚未设置密码,请通过下方「找回密码」来设置您的密码。");
                    break;
                case 1:
                    success(data.session_id);
                    return;
                default:
                    show_error("未知错误");
                    break;
            }
            $("#login").text("登录");
            $("#login").removeClass("loading");
        },
        error:  function(XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.responseText);
            show_error("未知错误");
            $("#login").text("登录");
        }
    });
}
$(document).ready(function() {
    $("#login").click(function() {
        login();
    });
});

好家伙,这竟然直接放出源码还没混淆,可以找到使用的还是已经不安全的MD5加密算法,甚至把盐值(salt)直接放出来了.补充一下:

MD5(Message Digest Algorithm 5) 是一种 不可逆哈希算法,用于将输入数据转换为 固定长度的 128 位(32 字符)哈希值。然而,由于 MD5 已被广泛破解,单独使用 MD5 进行密码存储是极其不安全的。黑客可以提前计算出 常见密码 的 MD5 哈希值,并存入一个 彩虹表,然后通过比对数据库中的哈希值来快速破解密码。因此,为了增强安全性,人们引入了 “加盐(Salt)” 机制。在哈希计算前,人为添加的一段额外随机数据,通常是一个 随机字符串,与原始数据(如密码)拼接在一起后再进行哈希处理。

这里很明显盐值就是"syzoj2_xxx",知道了这些,密码就可以随意地破解了.

返回
返回
弱密码表
弱密码表
获取
获取
爆破程序
爆破程序
MD5加密
MD5加密
弱密码(明文)
弱密码(明文)
登录请求
登录请求
加密后的密文
加密后的密文
登录失败
登录失败
成功
成功
服务器
服务器
返回密码
返回密码
Text is not SVG - cannot display

为了增加效率我还加了多线程(调了半天代码和我都炸了qaq)

如何使用

💡【小贴士】
√ 测试时可先注册123456等测试账号,密码设为password试试

输入示例:

例如我要爆破用户123456 ,这里密码文件.txt必须和工具在同一目录

[文章][日常]搞OJ的小玩意1[3]-1749345629334.png

最后可能因为多线程原因引发一点错误,不过不影响正常使用

最后密码库数据规模一定要大!!!

可以注册一个测试用户爆破试试,但是密码一定要是密码库有的.

爆破成功信息会生成并储存在一个success_results.txt 文件里

如果报毒

请放心使用,本工具没有任何病毒,也绝不会植入任何木马病毒,如果你不信任可以随时删除,但是你要是使用被杀毒软件拦截了应该就用不了了

我自己测试没有报毒,有问题可以找我(前提我有空

工具下载

下载 RO-PR0PP v2.4

或者在GitHub上下载

https://github.com/RuibinNingh/RO-PR0PP

关于开源

我不怎么想开源的

1.工具过于简单

2.使用场景单一

3.我写的挺烂的...

不过如果支持的人数多,我会考虑

更新日志

v2.4 智能加速与稳定升级

https://github.com/RuibinNingh/RO-PR0PP/releases/tag/v2.4
  • 智能停止:支持随时终止任务,提高操作灵活性。

  • 性能优化:新增实时速度监控,更精准的数据统计。

  • 稳定性提升:优化异常处理,防止资源占用过高。

  • 用户体验:更清晰的成功提示与尝试次数显示。

  • 自动退出:任务完成后自动终止,提高效率。

v2.3 HTTPS协议错误修复

https://github.com/RuibinNingh/RO-PR0PP/releases/tag/v2.3
  • 修复错误:修复 HTTPS 网站可能使用 HTTP 协议的问题,确保请求协议正确匹配。

  • 新增功能:输入网站后自动检测协议并匹配,提升访问的准确性和安全性。

  • 优化:优化若干细节,提升系统稳定性和运行效率。

v2.2 HTTPS错误修复

https://github.com/RuibinNingh/RO-PR0PP/releases/tag/v2.2
  • 修复错误:修复 packages\urllib3\connectionpool.py:1099 处的 InsecureRequestWarning,现已添加证书验证,避免未经验证的 HTTPS 请求。

  • 优化:优化若干细节,提升系统稳定性和运行效率。