রিমিনা থেকে সংরক্ষিত পাসওয়ার্ড কীভাবে আহরণ করবেন?


32

আমার কোনও সার্ভারের জন্য আমার পাসওয়ার্ড মনে নেই। আমার একটি ওয়ার্কিং সংযোগ সংরক্ষিত আছে এবং এটি থেকে পাসওয়ার্ড পেতে চাই।

রিমিনা প্রশ্ন থেকে:

প্রশ্ন: আমার পাসওয়ার্ডগুলি কীভাবে সংরক্ষণ করা হয়? তারা নিরাপদ?
উত্তর: এলোমেলোভাবে উত্পন্ন 256 বিটের কী সহ তারা 3DES ব্যবহার করে এনক্রিপ্ট করা আছে। আপনার কীটি সুরক্ষিত রাখা উচিত।

তাহলে আমি কীটি পাই এবং পাসওয়ার্ডগুলি কোথায় সংরক্ষণ করা হবে?

সম্পাদনা: ঠিক আছে যে তারা কেবলমাত্র .remmina এর অধীনে আপনার ব্যবহারকারীদের হোম ফোল্ডারে রয়েছেন। উভয় প্রাইভেট কী বেস 64 এ রয়েছে এবং ডিক্রিপ্ট করার সময় আমি পাসওয়ার্ডটি ঠিকমতো পেতে পারি না ......

উত্তর:


51

পাইথনের সাথে ডিক্রিপ্ট করার জন্য আমি @ মাইক্রোলোচেজ দ্বারা গো সমাধানটি ব্যবহার করতে সক্ষম হয়েছি:

import base64
from Crypto.Cipher import DES3

secret = base64.decodestring('<STRING FROM remmina.prefs>')
password = base64.decodestring('<STRING FROM XXXXXXX.remmina>')

print DES3.new(secret[:24], DES3.MODE_CBC, secret[24:]).decrypt(password)

3
যে কারণে আমাকে বাধ্য নিজেকে ঘৃণা আমি একটি এক মাছ ধরার নৌকা প্রয়োজন: /: 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। পরের বারের জন্য আমার এখানে থাকতে হবে।
17:46

দুর্দান্ত এক .. ঠিক আছে কাজ করে
user169015

4
রিমিনার সর্বশেষতম সংস্করণ এই ফাইলগুলির অবস্থান পরিবর্তন করেছে। প্রিফ ফাইলটি এখন এখানে রয়েছে: OME হোম / .কনফিগ / রিমিনা / এবং সংযোগ ফাইলটি যখন আপনি সংযোগটি ক্লিক করেন (উদাহরণস্বরূপ: l / .local / share / remmina / 4823893432523.remmina)
রিং

3
আপনাকে স্ব স্ব গত ধন্যবাদ, সামান্য আপডেট হওয়া ওয়ান-লাইনার যা ফাইলগুলির জন্য দুটি আর্গ নেয়। python -c "import base64,sys;from Crypto.Cipher import DES3;pc=open(sys.argv[1]).read();pci=pc.index('secret=');secret=pc[pci:pc.index('\n',pci)].split('=',1)[1];cc=open(sys.argv[2]).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)" /tmp/remmina/remmina.pref /tmp/remmina/00000000000.remmina
অ্যাডমাল্ড হয়েছে

@ অ্যাডমাল্ডড আপনার উত্তরটি পোস্ট করা উচিত!
মাইকেল

20

আমি একটি ফাইলটিতে চাবি পেয়েছি ~/.remmina/remmina.prefsএবং এনক্রিপ্ট করা পাসওয়ার্ডগুলি রয়েছে ~/.remmina/nnnnnnnnnnn.remmina

আমি একটি কোড লিখেছি (গোতে) যা ডিক্রিপশন এর জন্য ব্যবহার করা যেতে পারে:

//Decrypts obfuscated passwords by Remmina - The GTK+ Remote Desktop Client
//written by Michael Cochez
package main

import (
    "crypto/cipher"
    "crypto/des"
    "encoding/base64"
    "fmt"
    "log"
)

//set the variables here

var base64secret = "yoursecret"
var base64password = "theconnectionpassword"

//The secret is used for encrypting the passwords. This can typically be found from ~/.remmina/remmina.pref on the line containing 'secret='.
//"The encrypted password used for the connection. This can typically be found from /.remmina/dddddddddddd.remmina " on the line containing 'password='.
//Copy everything after the '=' sign. Also include final '=' signs if they happen to be there.

//returns a function which can be used for decrypting passwords
func makeRemminaDecrypter(base64secret string) func(string) string {
    //decode the secret
    secret, err := base64.StdEncoding.DecodeString(base64secret)
    if err != nil {
        log.Fatal("Base 64 decoding failed:", err)
    }
    if len(secret) != 32 {
        log.Fatal("the secret is not 32 bytes long")
    }
    //the key is the 24 first bits of the secret
    key := secret[:24]
    //3DES cipher
    block, err := des.NewTripleDESCipher(key)
    if err != nil {
        log.Fatal("Failed creating the 3Des cipher block", err)
    }
    //the rest of the secret is the iv
    iv := secret[24:]
    decrypter := cipher.NewCBCDecrypter(block, iv)

    return func(encodedEncryptedPassword string) string {
        encryptedPassword, err := base64.StdEncoding.DecodeString(encodedEncryptedPassword)
        if err != nil {
            log.Fatal("Base 64 decoding failed:", err)
        }
        //in place decryption
        decrypter.CryptBlocks(encryptedPassword, encryptedPassword)
        return string(encryptedPassword)
    }
}

func main() {

    if base64secret == "yoursecret" || base64password == "theconnectionpassword" {

        log.Fatal("both base64secret and base64password variables must be set")
    }

    decrypter := makeRemminaDecrypter(base64secret)

    fmt.Printf("Passwd : %v\n", decrypter(base64password))

}

কোডটি অনলাইনে চালানো যেতে পারে তবে তারপরে আপনি golang.org এ বিশ্বাস করছেন।


14

এগুলি জিনোম-কেরিং-এ সংরক্ষণ করা হয়।

ড্যাশ-> "কী" টাইপ করুন -> পাসওয়ার্ড এবং কীগুলি।

সিহর্সের নতুন সংস্করণগুলিতে (ওরফে "পাসওয়ার্ড এবং কীগুলি") কীগুলি দেখতে "ভিউ" -> "কোনও দেখান" নির্বাচন করতে হবে। "রিমিনা" অনুসন্ধান করুন।


1
ইতিমধ্যে চেষ্টা করেছি ..... এছাড়াও আমি lxde ব্যবহার করছি
linuxnewb

2
এটি কিছু ক্ষেত্রে সত্য। তালিকাভুক্ত পাসওয়ার্ডটি ~/.remmina/nnnnnnnnnnn.remminaঠিক থাকলে এটি চেষ্টা করুন .
Kupiakos

11

আমি একটি স্ক্রিপ্ট তৈরি করেছি যা আপনার পাসওয়ার্ড ফাইলগুলি স্বয়ংক্রিয়ভাবে ডিক্রিপ্ট করে। অতি সাম্প্রতিক সংস্করণটি https://github.com/peppelinux/remmina_password_exposer এ

#!/usr/bin/python
from Crypto.Cipher import DES3
import base64
import os
import re

from os.path import expanduser
home = expanduser("~")

# costanti :)
REMMINA_FOLDER = os.getenv('REMMINA_FOLDER', home+'/'+'.remmina/')
REMMINA_PREF   = 'remmina.pref'

REGEXP_ACCOUNTS = r'[0-9]{13}\.remmina(.swp)?'
REGEXP_PREF     = r'remmina.pref'

diz = {}

fs = open(REMMINA_FOLDER+REMMINA_PREF)
fso = fs.readlines()
fs.close()

for i in fso:
    if re.findall(r'secret=', i):
        r_secret = i[len(r'secret='):][:-1]
        print 'found secret', r_secret

for f in os.listdir(REMMINA_FOLDER):
    if re.findall(REGEXP_ACCOUNTS, f): 

        o = open( REMMINA_FOLDER+f, 'r')
        fo = o.readlines()
        o.close()

        for i in fo:
            if re.findall(r'password=', i):
                r_password = i[len(r'password='):][:-1]
            if re.findall(r'^name=', i):
                r_name = i.split('=')[1][:-1]
            if re.findall(r'username=', i):
                r_username = i.split('=')[1][:-1]
        #~ print fo
        #~ print 'found', f

        password = base64.decodestring(r_password)
        secret = base64.decodestring(r_secret)

        diz[r_name] = DES3.new(secret[:24], DES3.MODE_CBC, secret[24:]).decrypt(password)
        # print the username and password of the last decryption
        print r_name, r_username, diz[r_name]

2

আমি রিমিনা পাসওয়ার্ডগুলি ডিকোড করতে পার্ল স্ক্রিপ্ট তৈরি করেছি। এটি আপনার কীটি বের করে এবং আপনার সমস্ত সংরক্ষিত পাসওয়ার্ড (স্থানীয়ভাবে) ডিকোড করে।

https://github.com/lepe/scriptts/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

1

পাইথন স্ক্রিপ্ট ব্যবহার করে রিমিনার জন্য আমার বিপরীত এবং এনক্রিপ্ট পাসওয়ার্ডগুলি করা দরকার। কারও যদি এটির প্রয়োজন হয় তবে কোডটি এখানে রয়েছে:

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.