Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   bookmarks.adr в bookmarks.html (http://forum.oszone.net/showthread.php?t=321250)

sov44 29-11-2016 12:43 2691438

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

Iska 30-11-2016 02:45 2691617

sov44, Вам однократно сие потребно или нужен программный код для какого-то проекта?

sov44 30-11-2016 08:54 2691668

Iska, всё верно, это не большой тестовый проект OperaPresto_Pass_Converter на 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 2691672

sov44, спасибо, ясно.

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

sov44 30-11-2016 09:30 2691678

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

Iska 30-11-2016 09:53 2691683

sov44, Вы же писали, что Вам же вроде как сделали, не? Кстати, стоит давать ссылку на конкретную тему/сообщение.

greg zakharov 30-11-2016 10:19 2691689

Любопытно стало после:
Цитата:

Цитата sov44
...позволяет конвертировать логины и пароли из 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 2691691

Цитата:

Цитата Iska
Вам же вроде как сделали, не? »

Нет. Иначе стал-бы я создавать тему?


Цитата:

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

А вот это было-бы интересно.


Время: 18:13.

Время: 18:13.
© OSzone.net 2001-