У меня есть словарь браузеров, и я хочу программно получить файлы cookie, сохраненные в папке default/network/cookies. Однако некоторые файлы cookie не совпадают, закодированы в формате Base64 и возвращают файлы cookie только одного браузера.
У меня есть словарь браузеров, и я хочу программно получить файлы cookie, сохраненные в папке default/network/cookies. Однако некоторые файлы cookie не совпадают, закодированы в формате Base64 и возвращают файлы cookie только одного браузера. [code]def main(): keys = get_keys() all_data = {}
for name, base_path in BROWSERS.items(): cookie_db = os.path.join(base_path, "Default", "Network", "Cookies") if not os.path.isfile(cookie_db): continue
if browser_entries: all_data[name] = browser_entries
with open("cookieslmao.txt", "w", encoding="utf-8") as f: for browser, entries in all_data.items(): f.write(f"=======\n") for entry in entries: url = entry.get("url", "") name = entry.get("name", "") cookie = entry.get("cookie", "") f.write(f"url: {url}\n") f.write(f"name: {name}\n") f.write(f"cookie (encoded in base64): {cookie}\n") f.write(f"=======\n")
print(f"extraction complete! saved to cookieslmao.txt")
def decrypt(encrypted_value: bytes, key: bytes) -> str: if encrypted_value.startswith(b'v10') or encrypted_value.startswith(b'v11'): iv = encrypted_value[3:15] ciphertext = encrypted_value[15:-16] tag = encrypted_value[-16:]
except Exception as e: print(f"Decryption error: {e}") return ""
def get_keys(): keys = {} for name, path in BROWSERS.items(): local_state = os.path.join(path, "Local State") if not os.path.isfile(local_state): keys[name] = None continue try: with open(local_state, "r", encoding="utf-8") as f: data = json.load(f) enc_key_b64 = data["os_crypt"]["encrypted_key"] enc_key = base64.b64decode(enc_key_b64)[5:] # remove dpapi prefix key = win32crypt.CryptUnprotectData(enc_key, None, None, None, 0)[1] keys[name] = key except Exception as e: print(f"Failed to get key for {name}: {e}") keys[name] = None return keys [/code] Например, файл cookie .roblosecurity не соответствует. Значение (декодированное из base64): [code]_CAEaAhAB.752BA64CF67026985827F0 [/code] Но браузер сообщает об этом как: [code]_CAEaAhADIhsKBGR1aWQSEzM5 [/code] Они дополнительно кодируются/шифруются?