我有兴趣查看位于C:\Users\%user%\AppData\Local\Google\Chrome\User Data\Default\Cache
的chrome缓存文件中的数据
与CacheView相同:How can I read Chrome Cache files?
我查看了数据库历史记录和 Cookies 。使用以下SQLite命令:
历史:Urls
select id,url,title,visit_count,typed_count,time(last_visit_time / 1000000 + (strftime('%s', '1601-01-01')), 'unixepoch') AS Date,hidden from urls
历史记录:下载
SELECT downloads.id, downloads_url_chains.url, downloads.received_bytes, downloads.total_bytes,
downloads.state, downloads.target_path, time(downloads.start_time / 1000000 + (strftime('%s', '1601-01-01')), 'unixepoch') AS Date, time(downloads.end_time / 1000000 + (strftime('%s', '1601-01-01')), 'unixepoch') AS Date,
downloads.opened, downloads.danger_type, downloads.interrupt_reason, downloads.etag,
time(downloads.last_modified / 1000000 + (strftime('%s', '1601-01-01')), 'unixepoch') AS Date, downloads_url_chains.chain_index
FROM downloads, downloads_url_chains WHERE downloads_url_chains.id = downloads.id
历史记录:Downloads_Url_Cache
SELECT downloads_url_chains.id, downloads_url_chains.url, downloads_url_chains.chain_index FROM downloads_url_chains
饼干
SELECT host_key,name,encrypted_value,value FROM cookies WHERE value = ''
其中不包含一般缓存的数据(png,mp4等)的文件类型,大小或url来源的基础元数据。
应用目的 预期生成的应用程序将从缓存中获取当前文件数。当然,自我更新是作为后台线程。
因此,我已经花了8个小时以上的时间来学习这个主题,其中包括通过binaryReader和UTF-8解码的前10个字符的初始标头处理类。大错。研究使用某些Regex扩展到HttpHeader处理。
问题:开发人员如何通过c-sharp访问缓存的文件(即png)?
在没有开发人员参与的情况下进行进一步的研究,使我无法理解HEX内存指针的路线。使用StreamReader流式传输文件时,请放入一些Regex。它必须比这容易吗?
更多参考资料: Chrome_Disk_Cache_Format和How to read IE and Chrome Cache content programmatically (C#)?
更新:一些伪装
由于编码和填充失败。
GetEncoding(); // Returns ASCII
// freezes System.Text.Encoding.ASCII.GetString(buf);
// symbol no System.Text.Encoding.UTF8.GetString(buf);
// encoding no string finalLines = Convert.ToBase64String(thisData, Base64FormattingOptions.InsertLineBreaks);
// symbol no string datas = System.Text.Encoding.Default.GetString(thisData);
string cur = "";
this.Invoke((MethodInvoker)delegate ()
{
richTextBox1.Text = Convert.ToBase64String(File.ReadAllBytes(path));
cur = richTextBox1.Text;
richTextBox1.Enabled = true;
});
// INVAL MAGIC byte[] decompressed = Decompress(thisData); // it's not gzip compressed as a file
// string[] data = File.ReadAllLines(path);
Regex encRex = new Regex("^([^;]+);(?:\\s*([^=]+)=((?<q>\"?)[^\"]*\\k<q>);?)*$", RegexOptions.IgnoreCase);