Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Access and decrypt Chrome cookies on Windows

by Discipulus (Canon)
on Nov 30, 2022 at 12:20 UTC ( [id://11148457]=note: print w/replies, xml ) Need Help??


in reply to Re: Access and decrypt Chrome cookies on Windows
in thread Access and decrypt Chrome cookies on Windows

Thanks bliako,

your guess is not so bad :) infact with the line my $pDataOut = " "x1000; the program runs without any issue but if I print $new_value it is always 0 and so if I inspect the copied DB using DBeaver I find value column with all 0 and the expiration set to 99999999999999999

So the decryption didnt happened.

L*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

Replies are listed 'Best First'.
Re^3: Access and decrypt Chrome cookies on Windows
by bliako (Monsignor) on Nov 30, 2022 at 13:08 UTC

    Win32::API shows how to work with structures and perhaps this way one can eliminate some of those packs. So this is another angle (thankfully untested):

    Edit: I have just edited this 3 mins after, because I was using the CryptProtectData

    Win32::API::Struct->typedef( DATA_BLOB => qw{ DWORD cbData; BYTE *pbData; }) or die; Win32::API->Import('user32', <<EOP) or die; BOOL CryptUnprotectData( DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut ) EOP # if all went well you have imported CryptUnprotectData() my $datain = Win32::API::Struct->new('DATA_BLOB'); $datain->{'cbData'} = pack('LL', length($encryptedData)+1; $datain->{'pbData'} = unpack('L!', pack('P', $encryptedData)); my $dataout = Win32::API::Struct->new('DATA_BLOB'); # call the imported func my $result = CryptUnprotectData($datain, pack('L', 0), 0, pack('L', 0) +, pack('L4', 16, 0, 0, unpack('L!', pack('P', 0))), 0, $dataout); my $len = $dataout->{'cbData'}; my $dat = unpack('P'.$len, pack('L!', $dataout->{'pbData'})); print "result ($len bytes) : '$dat'\n";
      Hello again bliako,

      thanks for your effort sailing into perilous seas of Win32. I must admit I understand very little of what you are doing. More or less I suppose you are using Win32::API::Struct->typedef to cerate a new type of win32 struct, then you import the OS call via Win32::API->Import using the brand new struct for incoming data in the funciotn, right?

      If I put your code in the right place this should be the result:

      But.. I get

      Decrypting cookies... Unknown Win32::API::Struct 'DATA_BLOB' at chrome-cookies-gist.pl line +65. Unknown Win32::API::Struct 'DATA_BLOB' at chrome-cookies-gist.pl line +68. Undefined subroutine &main::CryptUnprotectData called at chrome-cookie +s-gist.pl line 70.

      I've read the documentation, but sincerely it looks like pittograms to me :) Thank you a lot anyway bliako!

      L*

      There are no rules, there are no thumbs..
      Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11148457]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-03-29 08:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found