Hoi,

ik ben al enkele dagen mijn hoofd aan het breken over iets en zowel ik als mijn collega geraken er niet aan uit, ik hoop dat iemand hier redding kan brengen.

We willen uit de chrome cookies file, versie 80 of hoger, een waarde uitlezen uit de sqllite db.
Dat lukt, alleen is die waarde versleuteld.

De manier waarop dit gebeurd staat mooi beschreven op https://xenarmor.com/how-to-recover-...-google-chrome alleen gaat het hier over paswoorden maar de werkwijze is identiek voor de cookies encrypted data.

De waarde in die sqllite db is dus AES-256-GCM versleuteld, met een key die op zich ook versleuteld is en in het chrome bestand 'local state' zit.

Om de waarde op te halen moet ik dus eerst en vooral die local state 'os_crypt' ophalen, dit lukt, dit is een json bestand.

Die waarde moet ik dan base64 decoderen, vervolgens van die waarde de eerste 5 karakters verwijderen en vervolgens door CryptUnprotectData laten gaan.
Dat geeft me de sleutel waarmee de cookie waarde AES-256 versleuteld is en moet ik deze decrypteren.

Ik heb een voorbeeld gevonden in python die perfect doet wat ik nodig heb maar ik krijg het niet werkend in Delphi en ik ken helemaal niet veel van python.
Ook de tool 'ChromeCookiesView' van Nirsoft toont mooi de waarde die ik nodig heb.

In delphi kan ik nu enkel de eerste stap uitvoeren met hetzelfde resultaat als in python, vanaf de base64decode heb ik al iets anders, TBytes of een String en in Python lijkt het op een soort HexString.
Vervolgens neem ik de eerste 5 karakters weg en doe de Cryptunprotect maar die retourneert False en ik heb geen idee waarom.

Iemand hier ervaring mee?

Localstate os_crypt=
RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAAB4PpTCtodTQ4 nQLEGqadm7AAAAAAIAAAAAABBmAAAAAQAAIAAAAPhwZ7vhFrl1 jZ+NUwEXAMzeUi8jMR16yMde10Nq5aROAAAAAA6AAAAAAgAAIA AAAJl7QrqvaIkHJR1HvjDyBBh3SDZtJ6dksOLJrO0NBTDWMAAA AHU2A+ojxTYeKTBmCqYGynLMNZif2xRqrhNmiPwLGfPs6VkeFt fuS0StX2tOXrEQmkAAAAAdmTwrGXIdycrWkM8sc2Tll42s1Ucn x4j1+H13Qyuq78nSLSrmagsyAngs4knVf/roywQdsqEHTA8YmvzopwHO
In python resulteert de base64decode in
DPAPI\x01\x00\x00\x00\xd0\x8c\x9d\xdf\x01\x15\xd1\ x11\x8cz\x00\xc0O\xc2\x97\xeb\x01\x00\x00\x00x>\x9 4\xc2\xb6\x87SC\x89\xd0,A\xaai\xd9\xbb\x00\x00\x00 \x00\x02\x00\x00\x00\x00\x00\x10f\x00\x00\x00\x01\ x00\x00 \x00\x00\x00\xf8pg\xbb\xe1\x16\xb9u\x8d\x9f\x8dS\x 01\x17\x00\xcc\xdeR/#1\x1dz\xc8\xc7^\xd7Cj\xe5\xa4N\x00\x00\x00\x00\x0 e\x80\x00\x00\x00\x02\x00\x00 \x00\x00\x00\x99{B\xba\xafh\x89\x07%\x1dG\xbe0\xf2 \x04\x18wH6m'\xa7d\xb0\xe2\xc9\xac\xed\r\x050\xd60 \x00\x00\x00u6\x03\xea#\xc56\x1e)0f\n\xa6\x06\xcar \xcc5\x98\x9f\xdb\x14j\xae\x13f\x88\xfc\x0b\x19\xf 3\xec\xe9Y\x1e\x16\xd7\xeeKD\xad_kN^\xb1\x10\x9a@\ x00\x00\x00\x1d\x99<+\x19r\x1d\xc9\xca\xd6\x90\xcf ,sd\xe5\x97\x8d\xac\xd5G'\xc7\x88\xf5\xf8}wC+\xaa\ xef\xc9\xd2-*\xe6j\x0b2\x02x,\xe2I\xd5\x7f\xfa\xe8\xcb\x04\x1d \xb2\xa1\x07L\x0f\x18\x9a\xfc\xe8\xa7\x01\xce
Maar in Delphi
DPAPI'#1#0#0#0'Ð'#$008C#$009D'ß'#1#$15'Ñ'#$11#$008 C'z'#0'ÀOÂ'#$0097'ë'#1#0#0#0'x>'#$0094'¶'#$0087'S C'#$0089'Ð,AªiÙ»'#0#0#0#0#2#0#0#0#0#0#$10'f'#0#0#0 #1#0#0' '#0#0#0'øpg»á'#$16'¹u'#$008D#$009F#$008D'S'#1#$17# 0'ÌÞR/#1'#$1D'zÈÇ^×Cjå¤N'#0#0#0#0#$E#$0080#0#0#0#2#0#0' '#0#0#0#$0099'{Bº¯h'#$0089#7'%'#$1D'G¾0ò'#4#$18'wH 6m''§d°âɬí'#$D#5'0Ö0'#0#0#0'u6'#3'ê#Å6'#$1E')0f'# $A'¦'#6'ÊrÌ5'#$0098#$009F'Û'#$14'j®'#$13'f'#$0088' ü'#$B#$19'óìéY'#$1E#$16'×îKD'#$00AD'_kN^±'#$10#$00 9A'@'#0#0#0#$1D#$0099'<+'#$19'r'#$1D'ÉÊÖ'#$0090'Ï, sdå'#$0097#$008D'¬ÕG''Ç'#$0088'õø}wC+ªïÉÒ-*æj'#$B'2'#2'x,âIÕ'#$7F'úèË'#4#$1D'²¡'#7'L'#$F#$18 #$009A'üè§'#1'Î
Het zou best zijn als ik dezelfde string kan terugkrijgen als in python dan weet ik dat die stap alvast ok is.

Ik heb tal van voorbeelden gevonden over de CryptUnprotectData maar zonder succes, als iemand daar iets van weet, graag.

Alvast bedankt.