remmina如何查看window密码

可以使用python2解密一下密码

pip install crypto
pip install pycrypto

装好后,直接执行下面的代码即可
去/home/你的用户名/.remmina/remmina.pref文件里的第二行secret=1Ch+Osgssdsaadawewjlf
去/home/你的用户名/.remmina/122545454.remmina 里找password=xxxxx

import base64
from Crypto.Cipher import DES3

secret = base64.decodestring('1Ch+Osgssdsaadawewjlf')
password = base64.decodestring('xxxxx')

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

golang版本

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))

}

from:https://askubuntu.com/questions/290824/how-to-extract-saved-password-from-remmina

仅有 1 条评论
  1. harrison

    更新

    import base64
    from Crypto.Cipher import DES3

    secret = base64.decodebytes(b'wU9obUp37jeZOQ7Heut2b0NkrTGKTv/33W2sDQgA+8k=')
    password = base64.decodebytes(b'PElVVcaiKweT0716WHv72Q==')

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

添加新评论