|
|
@ -559,7 +559,7 @@ def _parse_safari_cookies_record(data, jar, logger):
|
|
|
|
p.skip_to(value_offset)
|
|
|
|
p.skip_to(value_offset)
|
|
|
|
value = p.read_cstring()
|
|
|
|
value = p.read_cstring()
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
logger.warning('failed to parse cookie because UTF-8 decoding failed')
|
|
|
|
logger.warning('failed to parse cookie because UTF-8 decoding failed', only_once=True)
|
|
|
|
return record_size
|
|
|
|
return record_size
|
|
|
|
|
|
|
|
|
|
|
|
p.skip_to(record_size, 'space at the end of the record')
|
|
|
|
p.skip_to(record_size, 'space at the end of the record')
|
|
|
@ -655,7 +655,7 @@ def _decrypt_aes_cbc(ciphertext, key, logger, initialization_vector=b' ' * 16):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
return intlist_to_bytes(plaintext[:-padding_length]).decode('utf-8')
|
|
|
|
return intlist_to_bytes(plaintext[:-padding_length]).decode('utf-8')
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
logger.warning('failed to decrypt cookie because UTF-8 decoding failed. Possibly the key is wrong?')
|
|
|
|
logger.warning('failed to decrypt cookie because UTF-8 decoding failed. Possibly the key is wrong?', only_once=True)
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -664,13 +664,13 @@ def _decrypt_aes_gcm(ciphertext, key, nonce, authentication_tag, logger):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
plaintext = cipher.decrypt_and_verify(ciphertext, authentication_tag)
|
|
|
|
plaintext = cipher.decrypt_and_verify(ciphertext, authentication_tag)
|
|
|
|
except ValueError:
|
|
|
|
except ValueError:
|
|
|
|
logger.warning('failed to decrypt cookie because the MAC check failed. Possibly the key is wrong?')
|
|
|
|
logger.warning('failed to decrypt cookie because the MAC check failed. Possibly the key is wrong?', only_once=True)
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
return plaintext.decode('utf-8')
|
|
|
|
return plaintext.decode('utf-8')
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
except UnicodeDecodeError:
|
|
|
|
logger.warning('failed to decrypt cookie because UTF-8 decoding failed. Possibly the key is wrong?')
|
|
|
|
logger.warning('failed to decrypt cookie because UTF-8 decoding failed. Possibly the key is wrong?', only_once=True)
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -698,7 +698,7 @@ def _decrypt_windows_dpapi(ciphertext, logger):
|
|
|
|
ctypes.byref(blob_out) # pDataOut
|
|
|
|
ctypes.byref(blob_out) # pDataOut
|
|
|
|
)
|
|
|
|
)
|
|
|
|
if not ret:
|
|
|
|
if not ret:
|
|
|
|
logger.warning('failed to decrypt with DPAPI')
|
|
|
|
logger.warning('failed to decrypt with DPAPI', only_once=True)
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
result = ctypes.string_at(blob_out.pbData, blob_out.cbData)
|
|
|
|
result = ctypes.string_at(blob_out.pbData, blob_out.cbData)
|
|
|
|