python - 安装模块的 pip 命令不起作用
问题描述
我已经使用 pip 命令安装 win32crypt,但是当我执行代码时,我得到了这个错误
Message=No module named 'win32crypt'
Source=C:\Users\sheaf\source\repos\Password Puller\Password Puller\Password_Puller.py StackTrace:文件“C:\Users\sheaf\source\repos\Password Puller\Password Puller\Password_Puller.py”,第 5 行, 在(当前帧)导入 win32crypt
我已经在 Python 3.7 32 位、3.7 64 位和 3.9 64 位上尝试过,但它们都不起作用。下面是我试图执行的代码。
import os
import json
import base64
import sqlite3
import win32crypt
from Cryptodome.Cipher import AES
import shutil
from datetime import timezone, datetime, timedelta
def chrome_date_and_time(chrome_data):
# Chrome_data format is 'year-month-date
# hr:mins:seconds.milliseconds
# This will return datetime.datetime Object
return datetime(1601, 1, 1) + timedelta(microseconds=chrome_data)
def fetching_encryption_key():
# Local_computer_directory_path will look
# like this below
# C: => Users => <Your_Name> => AppData =>
# Local => Google => Chrome => User Data =>
# Local State
local_computer_directory_path = os.path.join(
os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome",
"User Data", "Local State")
with open(local_computer_directory_path, "r", encoding="utf-8") as f:
local_state_data = f.read()
local_state_data = json.loads(local_state_data)
# decoding the encryption key using base64
encryption_key = base64.b64decode(
local_state_data["os_crypt"]["encrypted_key"])
# remove Windows Data Protection API (DPAPI) str
encryption_key = encryption_key[5:]
# return decrypted key
return win32crypt.CryptUnprotectData(encryption_key, None, None, None, 0)[1]
def password_decryption(password, encryption_key):
try:
iv = password[3:15]
password = password[15:]
# generate cipher
cipher = AES.new(encryption_key, AES.MODE_GCM, iv)
# decrypt password
return cipher.decrypt(password)[:-16].decode()
except:
try:
return str(win32crypt.CryptUnprotectData(password, None, None, None, 0)[1])
except:
return "No Passwords"
def main():
key = fetching_encryption_key()
db_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local",
"Google", "Chrome", "User Data", "default", "Login Data")
filename = "ChromePasswords.db"
shutil.copyfile(db_path, filename)
# connecting to the database
db = sqlite3.connect(filename)
cursor = db.cursor()
# 'logins' table has the data
cursor.execute(
"select origin_url, action_url, username_value, password_value, date_created, date_last_used from logins "
"order by date_last_used")
# iterate over all rows
for row in cursor.fetchall():
main_url = row[0]
login_page_url = row[1]
user_name = row[2]
decrypted_password = password_decryption(row[3], key)
date_of_creation = row[4]
last_usuage = row[5]
if user_name or decrypted_password:
print(f"Main URL: {main_url}")
print(f"Login URL: {login_page_url}")
print(f"User name: {user_name}")
print(f"Decrypted Password: {decrypted_password}")
else:
continue
if date_of_creation != 86400000000 and date_of_creation:
print(f"Creation date: {str(chrome_date_and_time(date_of_creation))}")
if last_usuage != 86400000000 and last_usuage:
print(f"Last Used: {str(chrome_date_and_time(last_usuage))}")
print("=" * 100)
cursor.close()
db.close()
try:
# trying to remove the copied db file as
# well from local computer
os.remove(filename)
except:
pass
if __name__ == "__main__":
main()
解决方案
推荐阅读
- google-apps-script - 我被迫填写表格两次以执行 2 个功能。建议一键执行 2 个功能?
- mikro-orm - 显示数据透视列
- powerquery - PowerQuery 运行很慢
- bash - 执行 bash 脚本,该脚本将在 Apache 重新启动后继续执行
- reactjs - React 应用程序部署与 firebase 完成,但我没有得到托管 url?我现在为成功部署做什么
- javascript - 为什么anime.js 在动画CSS 属性时会跳过某些延迟?
- amazon-web-services - 使用 API 网关的自定义域的 route53 返回禁止
- html - 即使高度为 100%,高度也不会增长到最大高度
- django - DRF MultiPartParser 将值作为列表返回
- firebase - Google Maps Flutter:如何从 Firebase RTDB 放置多个标记