remmina 비밀번호를 해독하기 위해 perl 스크립트를 작성했습니다. 키를 추출하고 저장된 모든 비밀번호를 로컬로 디코딩합니다.
https://github.com/lepe/scripts/blob/master/decode_remmina.pl (업데이트 된 버전 확인)
#!/usr/bin/perl
use strict;
use warnings;
use Crypt::CBC; #Crypt::DES_EDE3
use MIME::Base64;
use File::Slurp;
my $remmina_dir = $ENV{"HOME"} . "/.remmina";
my $remmina_cfg = $remmina_dir . "/remmina.pref";
my $content = read_file($remmina_cfg);
if($content) {
my ($secret) = $content =~ /^secret=(.*)/m;
if($secret) {
my $secret_bin = decode_base64($secret);
my ($key, $iv) = ( $secret_bin =~ /.{0,24}/gs );
my @files = <$remmina_dir/*.remmina>;
my $des = Crypt::CBC->new(
-cipher=>'DES_EDE3',
-key=>$key,
-iv=>$iv,
-header=>'none',
-literal_key=>1,
-padding=>'null'
);
if(@files > 0) {
foreach my $file (@files) {
my $config = read_file($file);
my ($password) = $config =~ /^password=(.*)/m;
my ($name) = $config =~ /^name=(.*)/m;
my ($host) = $config =~ /^server=(.*)/m;
my ($user) = $config =~ /^username=(.*)/m;
my $pass_bin = decode_base64($password);
my $pass_plain = $des->decrypt( $pass_bin );
if($pass_plain) {
print "$name $host $user $pass_plain\n";
}
}
} else {
print "Unable to find *.remmina files \n";
}
} else {
print "No secret key found...\n";
}
} else {
print "Unable to read content from remmina.pref\n";
}
당신은 (사용 예를 들어,이 패키지를 설치해야합니다 cpan <PACKAGE>
) : Crypt::CBC
, Crypt::DES_EDE3
, MIME::Base64
,File::Slurp
샘플 출력 :
(이름, 호스트, 사용자, 비밀번호 : 탭으로 구분)
Server1 192.168.1.25 administrator jM822Azss2fake
Server2 192.168.1.88:2899 admin JaxHaxFakez90
python -c "import base64,sys;from Crypto.Cipher import DES3;pc=open('/home/admalledd/.remmina/remmina.pref').read();pci=pc.index('secret=');secret=pc[pci:pc.index('\n',pci)].split('=',1)[1];cc=open(sys.argv[1]).read();cci=cc.index('password');password=cc[cci:cc.index('\n',cci)].split('=',1)[1];secret,password=base64.decodestring(secret),base64.decodestring(password); print DES3.new(secret[:24], DES3.MODE_CBC, secret[24:]).decrypt(password)" .remmina/1474332312568.remmina
. 다음에 여기에 남겨 두어야 할 수도 있습니다.