通过Google浏览器Cookie文件获取cookie信息,80以上版本有效
public class ReadCookie
{
/// <summary>
/// </summary>
/// <param name="hostName"></param>
/// <returns></returns>
public static SeleCookie ReadCookies(string hostName,string cookiePath,string domain)
{
//测试用
cookiePath = @"C: \Users\xxx\AppData\Local\Google\Chrome\User Data\Local State";
domain = "%xxx.com";
SeleCookie cc = new SeleCookie();
if (hostName == null) throw new System.ArgumentNullException("hostName"); var dbPath = System.Environment.GetFolderPath(System.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); // race condition, but i'll risk it var connectionString = "Data Source=" + dbPath + ";pooling=false"; using (var conn = new System.Data.SQLite.SQLiteConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
conn.Close();
cmd.CommandText = $"select * from cookies where host_key like '{domain}'";
#region 查看cookie表
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd.CommandText, conn);
DataSet ds = new DataSet();
da.Fill(ds, "cookiestable");
#endregion var prm = cmd.CreateParameter();
prm.ParameterName = "hostName";
prm.Value = hostName;
cmd.Parameters.Add(prm); conn.Open();
using (var reader = cmd.ExecuteReader())
{
string encKey = File.ReadAllText(cookiePath);
encKey = JObject.Parse(encKey)["os_crypt"]["encrypted_key"].ToString();
var decodedKey = System.Security.Cryptography.ProtectedData.Unprotect(Convert.FromBase64String(encKey).Skip(5).ToArray(), null, System.Security.Cryptography.DataProtectionScope.LocalMachine);
try
{
var propInfo = typeof(SeleCookie).GetProperties().Where(x => x.IsDefined(typeof(CustomAttribute), false) && x.Name == reader[2].ToString() && !x.Name.Equals("Item"));
while (reader.Read())
{
byte[] encryptedData = (byte[])reader[12];
var _cookie = _decryptWithKey(encryptedData, decodedKey, 3);
foreach (var prop in propInfo)
{
prop.SetValue(cc, _cookie ?? string.Empty);
}
} }
finally
{
conn.Close();
} }
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
return cc;
} }
private static string _decryptWithKey(byte[] message, byte[] key, int nonSecretPayloadLength)
{
const int KEY_BIT_SIZE = 256;
const int MAC_BIT_SIZE = 128;
const int NONCE_BIT_SIZE = 96; if (key == null || key.Length != KEY_BIT_SIZE / 8)
throw new ArgumentException(String.Format("Key needs to be {0} bit!", KEY_BIT_SIZE), "key");
if (message == null || message.Length == 0)
throw new ArgumentException("Message required!", "message"); using (var cipherStream = new MemoryStream(message))
using (var cipherReader = new BinaryReader(cipherStream))
{
var nonSecretPayload = cipherReader.ReadBytes(nonSecretPayloadLength);
var nonce = cipherReader.ReadBytes(NONCE_BIT_SIZE / 8);
var cipher = new GcmBlockCipher(new AesEngine());
var parameters = new AeadParameters(new KeyParameter(key), MAC_BIT_SIZE, nonce);
cipher.Init(false, parameters);
var cipherText = cipherReader.ReadBytes(message.Length);
var plainText = new byte[cipher.GetOutputSize(cipherText.Length)];
try
{
var len = cipher.ProcessBytes(cipherText, 0, cipherText.Length, plainText, 0);
cipher.DoFinal(plainText, len);
}
catch (InvalidCipherTextException)
{
return null;
}
return Encoding.Default.GetString(plainText);
}
} }
需要引用类库:
System.Security.Cryptography.ProtectedData
BouncyCastle
System.Data.SQLite.Core
Newtonsoft.Json
通过Google浏览器Cookie文件获取cookie信息,80以上版本有效的更多相关文章
- Springboot使用Cookie,生成cookie,获取cookie信息(注解与非注解方式)
先 创建一个控制类吧, 其实我没有分层啊,随便做个例子: MyGetCookieController: @RestControllerpublic class MyGetCookieControlle ...
- Python Cookie HTTP获取cookie并处理
Cookie模块同样是Python标准库中的一员,它定义了一些类来解析和创建HTTP 的 cookie头部信息. 一.创建和设置Cookie >>> import Cookie #导 ...
- 设置cookie,获取cookie,删除cookie,修改cookie
怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解 在操作cookie之前,先来看一下cookie长什么样. 可以看到,cookie是一个个键值对(“键=值”的形式)加上 ...
- jquery 设置cookie、删除cookie、获取cookie
1.引入jquery.js <script src="//cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> ...
- php curl 生成的cookie 文件含义 cookie 属性含义
最近用了curl 感觉还是很方便的,看了下curl生成的 cookie 文件 格式 , 对其中一些值的含义不是很明白,去找了些cookie的资料看了下,做下备忘 PHP curl 生成 的 cooki ...
- jquery cookie用法(获取cookie值,删除cookie)
1.引入文件 2.具体操作 $.cookie('the_cookie'); // 读取 cookie $.cookie('the_cookie', 'the_value'); // 存储 cookie ...
- JS 判断浏览器类型,获取位置信息,让手机震动
判断是否是安卓 var isAndroid = /Android/i.test(navigator.userAgent); 判断是否是IOS系统 var isIOS = /iPhone|iPad|iP ...
- Python通过解压ofd文件获取发票信息
实际上ofd.docx.xlsx等文件就是一个压缩文件,是可以被解压处理的.所以我们把一个ofd格式的发票文件解压后就可以看到它的目录,如下: 再用谷歌或者IE打开里面的xml属性的文件,就可以看到发 ...
- JAVAWEB使用保存cookie、删除cookie、获取cookie工具类
package com.test; import org.apache.commons.lang.StringUtils; import org.springframework.util.Assert ...
- js 放置 cookie、获取 cookie、删除 cookie
这块TM的删不掉 代码如下: // 自定义 js cookies var mycookie = { // 放置 set : function(name,value){ var Days = 1; // ...
随机推荐
- 误删除系统超级用户(superuser)权限的恢复方式
在使用KingbaseES数据库的时候,系统默认存在一个跟系统初始化用户同名的Superuser(默认是system用户,可更改). 这个Superuser的存在其实对于权限的管控是很有用的,但是如果 ...
- C++代码实现OnComponentHit事件粒子消失蓝图--斯坦福
蓝图节点 OnComponentBeginOverlap,OnComponentHit等等之类如何迁移到C++中 方法 这些蓝图节点实际上就是一个UE4已经定义好的事件,在蓝图中使用模块的连接来实现事 ...
- arch 安装xfce
参照 https://www.cnblogs.com/3V4NZ/p/15330275.html 1.安装linux显示服务器 pacman -S xorg Xorg是一个开源的X Window系统的 ...
- Python爬取国家统计局2009至2020统计用区划和城乡划分代码(省市区/县三级)并存入mysql数据库
国家统计局->统计标准网址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 获取资源请关注公众号 [靠谱杨阅读人生]回复[城乡分类]获取 流程 ...
- 小师妹学JavaIO之:File copy和File filter
目录 简介 使用java拷贝文件 使用File filter 总结 简介 一个linux命令的事情,小师妹非要让我教她怎么用java来实现,哎,摊上个这么杠精的小师妹,我也是深感无力,做一个师兄真的好 ...
- OpenHarmony父子组件双项同步使用:@Link装饰器
子组件中被@Link装饰的变量与其父组件中对应的数据源建立双向数据绑定. 说明: 从API version 9开始,该装饰器支持在ArkTS卡片中使用. 概述 @Link装饰的变量与其父组件中的数 ...
- 一个库帮你快速实现EF Core数据仓储模式
前言 EF Core是我们.NET日常开发中比较常用的ORM框架,今天大姚要分享的内容是如何使用EF Core Generic Repository通用仓储库来快速实现EF Core数据仓储模式. E ...
- C++调用Python-2:调用Python函数,返回数字
# mytest.py def hello(): print("this is test python print hello world") return 123 #includ ...
- C#使用PaddleOCR进行图片文字识别✨
PaddlePaddle介绍 PaddlePaddle(飞桨)是百度开发的深度学习平台,旨在为开发者提供全面.灵活的工具集,用于构建.训练和部署各种深度学习模型.它具有开放源代码.高度灵活性.可扩展性 ...
- 使用Helm部署Wikijs
使用 Helm 部署 Wiki.js ️ 参考文档: Wiki.js 官方文档 - 安装 - Kubernetes Wiki.js 使用 Helm 安装 Wiki.js 官方文档 - 安装 - 侧加载 ...