1

У меня есть файл резервной копии Sonicwall TZ210, но я потерял пароль администратора.

Файл резервной копии .exp, есть ли способ расшифровать его с помощью Windows PC?

2 ответа2

2

Это не полное решение, а начало. В Linux вы можете использовать это для декодирования дампа:

base64 -d your-backup.exp | sed 's/&/\n/g'

Или используйте этот Perl Script:

#!/usr/bin/perl
use strict;
use MIME::Base64;

local($/) = undef; # slurp

my $decoded = decode_base64(<STDIN>);
$decoded =~ s/&/\n/gms;
print $decoded;

Вы найдете строку пароля и, возможно, сможете перебором его с Джоном Потрошителем (http://www.openwall.com/john/). Здесь нет более легкого пути.

0

Сценарий PowerShell может декодировать файл в читаемый текст в системе Windows, но, как отмечено в другом ответе, это не относится к расшифровке пароля:

Function SonicWall_Exp2Txt ($Exp)
{
  $Txt = $Exp -ireplace ".exp$", ".txt"
  # Create temporary file names.
  $Tmp = "." + $(get-date -uformat %s) + "."
  $TmpTxt = $Txt -replace ".txt$", $($Tmp + ".txt")
  $TmpExp = $TmpTxt -replace ".txt$", ".exp"
  # Show input/output file names while processing.
  Write-Host $("`n" + $Exp + "`n--> " + $Txt)
  # Remove two "&" characters at the end of an .exp file before decoding it.
  ( Get-Content $Exp ) -replace ".{2}$" |
    Out-File -Encoding default -FilePath $TmpExp
  # certutil.exe -decode /?
  # Usage:
  #   CertUtil [Options] -decode InFile OutFile
  #   Decode Base64-encoded file
  # Note:
  #   certutil.exe aborts if OutFile already exists.
  & certutil.exe -decode $TmpExp $TmpTxt
  # Reformat the decoded file with line breaks to make it more readable.  It
  # is also possible to recode the output file with Out-File -Encoding set
  # to unicode, utf7, utf8, utf32, ascii, bigendianunicode, default, or oem.
  ( Get-Content $TmpTxt ) -replace '\&', "`n" |
    Out-File -Encoding utf8 -FilePath $Txt
  # Remove the temporary files.
  Remove-Item $TmpExp
  Remove-Item $TmpTxt
}

# Get-ChildItem returns a scalar if one .exp file exists or an array if more
# than one .exp file is present.  Force $Files to an array value to avoid
# error if only one file exists as scalars do not have a Count method.
#
$Files = @( Get-ChildItem "." -Filter "*.exp" )
For ($Loop=0; $Loop -lt $Files.Count; $Loop++)
{
  SonicWall_Exp2Txt $Files[$Loop].FullName
}

Пример вызова, когда скрипт сохраняется как exp2txt.ps1:

powershell.exe -NoLogo -ExecutionPolicy bypass -Command exp2txt.ps1 <NUL

Атрибуция: эта тема вдохновила вышеупомянутый скрипт, который был написан, чтобы потенциально облегчить идентификацию различий в сохраняемых файлах

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .