利用python在Oracle数据库中生成密码字典库

思路:

1.生成全字符的单密码有94个,两个密码有94*94,三个密码有94*94*94个

2.连接到oracle数据库,将生成的密码字典插入oracle表

3 验证字典是否成功插入

第一步

def threefor():
    data=[]
    for key1 in word:
        for key2 in word:
            for key3 in word:
                data.append({wordkey: key1 + key2 + key3})
    return data

第二步连接到数据库:这个是db_config_dba

import cx_Oracle
username=""
password=""
host=""
port=
instance=""
tns = cx_Oracle.makedsn(host,port,instance)
con=cx_Oracle.connect(username,password,tns, mode=cx_Oracle.SYSDBA, encoding="UTF-8" ,nencoding="UTF-8")

第三步插入表,以下是全部python 语句

import datetime
import gc
import db_config_dba    #步骤二的python文件
import time

def threefor():
    data=[]
    for key1 in word:
        for key2 in word:
            for key3 in word:
                data.append({wordkey: key1 + key2 + key3})
    return data

if __name__ == "__main__":

    lowercase = abcdefghijklmnopqrstuvwxyz
    uppercase = ABCDEFGHIJKLMNOPQRSTUVWXYZ
    digits = 0123456789
    special = """!"#$%&‘( )*+,-./:;<=>?@[]^_`{|}~"""
    word = lowercase + uppercase + digits + special
    gc.collect()
    print(\n)
    print(fword content is:     {word})
    print(fTotal number is:     {len(word)})
    print(\n)
    starttime = datetime.datetime.now()
    print(Start generate password: )
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))

    #create oracle db connection
    DB = db_config_dba.con
    cursor = DB.cursor()

    #delete librarykey in target oracle db database
    sql=drop table librarykey purge
    cursor.execute(sql)

    #create librarykey table in target db database
    sql=create table librarykey ( wordkey varchar(20),CONSTRAINT work_key primary key (wordkey))
    cursor.execute(sql)

    #generate insert sql for table librarykey
    sql = insert into librarykey (wordkey) values (:wordkey)
    cursor.executemany(sql, threefor())
    DB.commit()

    #查询数据库的记录数
    sql = select count(*) from  librarykey
    cursor.execute(sql)
    for row in cursor:
        print(row[0])

    endtime = datetime.datetime.now()
    print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
    print(fThe time cost: {endtime - starttime})

    print(\n)
    #verfication the key number‘s as the sql result is tuple, so we should use row[0]
    if row[0] == len(word)*len(word)*len(word):
        print(ftotal password number should be : {len(word)*len(word)*len(word)})
    else:
        print("not all the password is generate,pls try again")

    cursor.close()
    DB.close()
    gc.collect()

结果:

word content is:     abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&‘( )*+,-./:;<=>?@[]^_`{|}~
Total number is:     94


Start generate password: 
2020-05-29 23:10:28
830584
2020-05-29 23:10:36
The time cost: 0:00:07.987566


total password number should be : 830584

Process finished with exit code 0

利用python在Oracle数据库中生成密码字典库

上一篇:在Maven项目中使用apache的commons-dbutils


下一篇:MySQL提权之udf提权(无webshell的情况)