У меня есть файл резервной копии Sonicwall TZ210, но я потерял пароль администратора.
Файл резервной копии .exp, есть ли способ расшифровать его с помощью Windows PC?
У меня есть файл резервной копии Sonicwall TZ210, но я потерял пароль администратора.
Файл резервной копии .exp, есть ли способ расшифровать его с помощью Windows PC?
Это не полное решение, а начало. В 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/). Здесь нет более легкого пути.
Сценарий 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
Атрибуция: эта тема вдохновила вышеупомянутый скрипт, который был написан, чтобы потенциально облегчить идентификацию различий в сохраняемых файлах