Кодирование LZ4 и бинарное декодированиеJavascript

Форум по Javascript
Ответить
Anonymous
 Кодирование LZ4 и бинарное декодирование

Сообщение Anonymous »

Почему это декодирование восстановления Firefox не удается? < /p>

Код: Выделить всё

const profilesPath = path.join(os.homedir(), 'AppData', 'Roaming', 'Mozilla', 'Firefox', 'Profiles');
const defaultProfile = fs.readdirSync(profilesPath).find(profile => profile.includes('.Default'));
const recoveryFile = path.join(profilesPath, defaultProfile, 'sessionstore-backups', 'recovery.jsonlz4');

const rawData = fs.readFileSync(recoveryFile);
const uncompressedSize = rawData.readUInt32LE(8);
const lz4Data = rawData.subarray(12);
const decompressed = Buffer.alloc(uncompressedSize);
lz4.decodeBlock(lz4Data, decompressed);

const jdata = JSON.parse(decompressed.toString('utf8'));
const selectedTab = jdata.windows[0].tabs[jdata.windows[0].selected - 1];
const currentUrl = selectedTab.entries[selectedTab.entries.length - 1].url;

res.json({ activeTabUrl: currentUrl });
< /code>
То же самое с бинарным декодированием данных Google Chrome < /p>
const chromeSessionsPath = path.join(os.homedir(), 'AppData', 'Local', 'Google', 'Chrome', 'User Data', 'Default', 'Sessions');

if (!fs.existsSync(chromeSessionsPath)) {
return res.status(404).json({
error: 'Chrome Sessions directory not found'
});
}

const sessionFiles = fs.readdirSync(chromeSessionsPath);
const tabsFiles = sessionFiles.filter(file => file.startsWith('Tabs_'))
.map(file => ({
name: file,
path: path.join(chromeSessionsPath, file),
mtime: fs.statSync(path.join(chromeSessionsPath, file)).mtime
}))
.sort((a, b) => b.mtime - a.mtime);

if (tabsFiles.length === 0) {
return res.status(404).json({
error: 'No Chrome tabs files found'
});
}

const sessionData = fs.readFileSync(tabsFiles[0].path);

const dataString = sessionData.toString('utf8', 0, Math.min(sessionData.length, 10000));
const urlMatches = dataString.match(/https?:\/\/[^\s\x00-\x1f\x7f-\x9f"{}|\\^`\[\]]+/g);

if (urlMatches && urlMatches.length > 0) {
const currentUrl = urlMatches[urlMatches.length - 1];
res.json({
activeTabUrl: currentUrl
});
} else {
res.status(404).json({
error: 'No URLs found in Chrome session'
});
}
Я хотел создать комбинированный активный URL и просмотра истории для всех моих браузеров, но восстановление данных из этих файлов является громоздким.

Подробнее здесь: https://stackoverflow.com/questions/797 ... y-decoding
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»