Войти

Показать полную графическую версию : bookmarks.adr в bookmarks.html


sov44
29-11-2016, 12:43
Нужен скрипт по преобразованию файла закладок Opera Presto (Opera 12) из bookmarks.adr в bookmarks.html. Если возможно, штатными средствами Windows с гибридом командной строки или с помощью сторонней утилиты sed.
В Opera Presto есть механизм ручного экспорта закладок как html, однако ищется вариант с экспортом в html в автоматическом режиме.

Iska
30-11-2016, 02:45
sov44, Вам однократно сие потребно или нужен программный код для какого-то проекта?

sov44
30-11-2016, 08:54
Iska, всё верно, это не большой тестовый проект OperaPresto_Pass_Converter (https://yadi.sk/d/OzPHDkvQzTqVQ) на sed для пользователей, желающих мигрировать с Opera Presto на Mozilla. С кодом sed мне помог YuS_2 http://www.cyberforum.ru/cmd-bat, за что ему большое спасибо. На сегодняшний день OperaPresto_Pass_Converter позволяет конвертировать логины и пароли из wand.dat в wand_mozilla.xml - шаблон расширения Password Exporter, который затем можно интегрировать в Mozilla Firefox, импорт\экспорт закладок приходится делать вручную. Хочется верить, что этот проект будет востребован, т.к ни конвертера логинов и паролей, ни конвертера закладок в сети не нашел, самому приходилось мигрировать через бумажку.

Iska
30-11-2016, 09:12
sov44, спасибо, ясно.

Ну, конвертер вроде как есть: The Bookmark Converter Homepage (http://www.magnusbrading.com/bmc/), но shareware. Также можно конвертировать старый профиль в новую Opera, там выгрузить их в html, затем импортировать.

sov44
30-11-2016, 09:30
Iska, попробовал The Bookmark Converter на Win7x32, не работает. Хотелось бы найти универсальное решение на скриптовом языке.

Iska
30-11-2016, 09:53
sov44, Вы же писали, что Вам же вроде как сделали, не? Кстати, стоит давать ссылку на конкретную тему/сообщение.

greg zakharov
30-11-2016, 10:19
Любопытно стало после:
...позволяет конвертировать логины и пароли из wand.dat...
wand.dat - файл с соленой криптографией, как-то начинал разработку его декодирования, но виду того, что Opera, ровно как PowerShell, использует относительно малый процент (имеется в виду постсоветское пространство), интерес к дальнейшей разработке отпал. В инете же кое-где можно все еще найти черновые варианты, например:
[Byte[]]$salt = 0x83, 0x7D, 0xFC, 0x0F, 0x8E, 0xB3, 0xE8, 0x69, 0x73, 0xAF, 0xFF
$path = [Environment]::GetFolderPath("ApplicationData") + "\Opera\Opera\wand.dat"

function Read-RawData([Byte[]]$key, [Byte[]]$enc) {
$md5 = New-Object Security.Cryptography.MD5CryptoServiceProvider

[Byte[]]$buff = New-Object "Byte[]" ($salt.Length + $key.Length)
[Array]::Copy($salt, $buff, $salt.Length)
[Array]::Copy($key, 0, $buff, $salt.Length, $key.Length)
[Byte[]]$hash1 = $md5.ComputeHash($buff)

[Byte[]]$buff = New-Object "Byte[]" ($hash1.Length + $salt.Length + $key.Length)
[Array]::Copy($hash1, $buff, $hash1.Length)
[Array]::Copy($salt, 0, $buff, $hash1.Length, $salt.Length)
[Array]::Copy($key, 0, $buff, ($hash1.Length + $salt.Length), $key.Length)
[Byte[]]$hash2 = $md5.ComputeHash($buff)

$des = New-Object Security.Cryptography.TripleDESCryptoServiceProvider
$des.Mode = [Security.Cryptography.CipherMode]::CBC
$des.Padding = [Security.Cryptography.PaddingMode]::None

[Byte[]]$trk = New-Object "Byte[]" 24
[Byte[]]$IV = New-Object "Byte[]" 8
[Array]::Copy($hash1, $trk, $hash1.Length)
[Array]::Copy($hash2, 0, $trk, $hash1.Length, 8)
[Array]::Copy($hash2, 8, $IV, 0, 8)

$des.Key = $trk
$des.IV = $IV
[Security.Cryptography.ICryptoTransform]$dec = $des.CreateDecryptor()

return [Text.Encoding]::Unicode.GetString($dec.TransformFinalBlock($enc, 0, $enc.Length))
}

try {
[Byte[]]$wand = [IO.File]::ReadAllBytes($path)
[Int32]$block = 0
[String[]]$raw = ""
$cat = [Enum]::GetValues([Globalization.UnicodeCategory])

for ($i = 0; $i -lt $wand.Length; $i++) {
if ($wand[$i] -eq 0x0 -and $wand[$i + 1] -eq 0x0 -and `
$wand[$i + 2] -eq 0x0 -and $wand[$i + 3] -eq 0x8) {
[Int32]$block = $wand[$i + 15]

[Byte[]]$key = New-Object "Byte[]" 8
[Byte[]]$enc = New-Object "Byte[]" $block
[Array]::Copy($wand, ($i + 4), $key, 0, $key.Length)
[Array]::Copy($wand, ($i + 16), $enc, 0, $enc.Length)

$raw += (Read-RawData $key $enc)
$i += 11 + $block
}
}

if ($raw.Length -ne 0) {
for ($i = 0; $i -lt $raw.Length; $i++) {
if ($raw[$i] -match "@") {
Write-Host $raw[$i].Split([Char]0x0)[0] -fo Green
Write-Host $(-join ($raw[$i + 1].ToCharArray() | % {
$chr = [Char]::GetUnicodeCategory($_)
if ($chr -ne $cat[0] -and $chr -ne $cat[($cat.Length - 1)]) {
$_
}
})) -fo Yellow
""
}
}
}
}
catch [IO.FileNotFoundException] {
$_.Exception.Message
}
Что же касается конвертирования закладок, насколько помню Opera вполне сама может конвертировать adr в html, и вроде бы какие-то параметры комстроки у нее были... в принципе, можно конвертнуть и с помощью PowerShell и иже с ним, но проект, если быть предельно объективным, не стоит того, чтобы тратить на него столько усилий, дабы убедиться в небольшом проценте пользователей FF и древней Opera. Как ни крути, но подавляющее большинство налегает на "хромоногие" браузеры.

sov44
30-11-2016, 10:22
Вам же вроде как сделали, не? »
Нет. Иначе стал-бы я создавать тему?

и вроде бы какие-то параметры комстроки у нее были... »
А вот это было-бы интересно.




© OSzone.net 2001-2012