47 votes

Comment extraire le mot de passe sauvegardé de Remmina ?

Je ne me souviens plus du mot de passe d'un de mes serveurs. J'ai sauvegardé une connexion qui fonctionne et je veux en extraire le mot de passe.

Extrait de la FAQ de Remmina :

Q : Comment mes mots de passe sont-ils stockés ? Sont-ils sécurisés ?
R : Ils sont cryptés à l'aide de 3DES avec une clé de 256 bits générée de manière aléatoire. Vous devez conserver votre clé en lieu sûr.

Où puis-je obtenir la clé et où les mots de passe sont-ils stockés ?

EDIT : J'ai trouvé qu'elles se trouvaient dans le dossier personnel de l'utilisateur sous .remmina. les deux clés privées sont en base64 et je n'arrive pas à obtenir le bon mot de passe lors du décryptage de .......

2voto

Robᵩ Points 50501

J'ai créé un script perl script pour décoder les mots de passe remmina. Il extrait votre clé et décode tous vos mots de passe sauvegardés (localement).

https://github.com/lepe/scripts/blob/master/decode_remmina.pl (vérifier la version mise à jour)

#!/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";
}

Vous devrez installer ces paquets (par exemple, en utilisant la fonction cpan <PACKAGE> ) : Crypt::CBC , Crypt::DES_EDE3 , MIME::Base64 , File::Slurp

Exemple de sortie :

(Nom, hôte, utilisateur, mot de passe : séparés par des tabulations)

Server1 192.168.1.25    administrator   jM822Azss2fake
Server2 192.168.1.88:2899   admin   JaxHaxFakez90

1voto

PhilippN Points 11

Je devais faire l'inverse et crypter les mots de passe pour Remmina en utilisant un script de Python. Au cas où quelqu'un en aurait besoin, voici le code :

import base64    
from Crypto.Cipher import DES3

REMMINAPREF_SECRET_B64=b'G5XKhImmX+3MaRAWU920B31AtQLDcWEq+Geq4L+7sES='

def encryptRemminaPass(plain):
    plain = plain.encode('utf-8')
    secret = base64.b64decode(REMMINAPREF_SECRET_B64)
    key = secret[:24]
    iv = secret[24:]
    plain = plain + b"\0" * (8 - len(plain) % 8)
    cipher = DES3.new(key, DES3.MODE_CBC, iv)
    result = cipher.encrypt(plain)
    result = base64.b64encode(result)
    result = result.decode('utf-8')
    return result

1voto

Denis Ivanov Points 11

Vous pouvez utiliser l'interface graphique "seahorse" pour gnome-keyring pour voir et copier les mots de passe depuis Remmina. Facile et rapide.

0voto

Rahul Abbineni Points 1

Voici le code pour passer de la clé au mot de passe

est en place : ~/.config/remmina/remmina.pref Le hachage du mot de passe est dans : ~/.local/share/remmina/ pref : ~/.local/share/remmina/*.remmina

Pour l'exécuter, enregistrez le fichier .py en remplaçant les champs 'key' et 'passw' et exécutez python3 *.py

#!/usr/bin/env python3

import base64    
from Crypto.Cipher import DES3

REMMINAPREF_SECRET_B64=b'KEY FROM REMMINA PREFS'

print ("Place Secret up and pasword below")

passw = "ENCRYPTED PASSSWORD"
passw = base64.b64decode(passw)
secret = base64.b64decode(REMMINAPREF_SECRET_B64)
key = secret[:24]
iv = secret[24:]
cipher = DES3.new(key, DES3.MODE_CBC, iv)
result = cipher.decrypt(passw)
result = result.decode('utf-8')
print (result)

0voto

Bob Spryn Points 6886

VERSION BASH

Récupère le secret de remmina.pref, qui se trouve dans ~/.config/remmina

s=`sed -n 's/^secret=//p' remmina.pref|base64 -d|hexdump -ve '/1 "%02x"'`

Décrypter :

echo CRYPTEDPW|openssl des3 -d -a -nopad -K ${s:0:48} -iv ${s:48}|tr -d "\0"

Encrypt (alternative à remmina --encrypt-password ) :

pw="PASSWORD"
pad=`printf "%*s" $[8-${#pw}%8] ""`
printf "$pw${pad// /\\0}"|openssl des3 -a -nopad -K ${s:0:48} -iv ${s:48}

Notez que le remplissage de la chaîne pendant le cryptage/décryptage est différent entre remmina et openssl. C'est pourquoi -nopad et le rembourrage manuel sont nécessaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X