mirror of https://github.com/jumpserver/jumpserver
perf: update change db lib
parent
132848c054
commit
41bccbf9c0
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
import re
|
||||||
|
import sqlite3
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def is_weak_password(password):
|
||||||
|
if len(password) < 8:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 判断是否只有一种字符类型
|
||||||
|
if password.isdigit() or password.isalpha():
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 判断是否只包含数字或字母
|
||||||
|
if password.islower() or password.isupper():
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 判断是否包含常见弱密码
|
||||||
|
common_passwords = ["123456", "password", "12345678", "qwerty", "abc123"]
|
||||||
|
if password.lower() in common_passwords:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 正则表达式判断字符多样性(数字、字母、特殊字符)
|
||||||
|
if (
|
||||||
|
not re.search(r"[A-Za-z]", password)
|
||||||
|
or not re.search(r"[0-9]", password)
|
||||||
|
or not re.search(r"[\W_]", password)
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def parse_it(fname):
|
||||||
|
count = 0
|
||||||
|
lines = []
|
||||||
|
with open(fname, 'rb') as f:
|
||||||
|
for line in f:
|
||||||
|
try:
|
||||||
|
line = line.decode().strip()
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if len(line) > 32:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if is_weak_password(line):
|
||||||
|
continue
|
||||||
|
|
||||||
|
lines.append(line)
|
||||||
|
count += 0
|
||||||
|
print(line)
|
||||||
|
return lines
|
||||||
|
|
||||||
|
|
||||||
|
def insert_to_db(lines):
|
||||||
|
conn = sqlite3.connect('./leak_passwords.db')
|
||||||
|
cursor = conn.cursor()
|
||||||
|
create_table_sql = '''
|
||||||
|
CREATE TABLE IF NOT EXISTS passwords (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
password CHAR(32)
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
create_index_sql = 'CREATE INDEX IF NOT EXISTS idx_password ON passwords(password)'
|
||||||
|
cursor.execute(create_table_sql)
|
||||||
|
cursor.execute(create_index_sql)
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
cursor.execute('INSERT INTO passwords (password) VALUES (?)', [line])
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
filename = sys.argv[1]
|
||||||
|
lines = parse_it(filename)
|
||||||
|
insert_to_db(lines)
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:36a6ac3b65401dbf67cb31ec090e4bad900fc162d092359d9b0a61c177156bad
|
oid sha256:a2805a0264fc07ae597704841ab060edef8bf74654f525bc778cb9195d8cad0e
|
||||||
size 16384
|
size 2547712
|
||||||
|
|
Loading…
Reference in New Issue