1
別のボックスでRealVNCパスワードをリモートで変更できるC#アプリケーションを作成しようとしています。エンコード/デコードRealVNCパスワード
現在、どのように変更されているボックスからパスワードを引き出し、16進数の文字列として保存し、別のボックスに送信してからパスワードを変更することができますが、パスワードを変更するか、即座にランダム化します。
レジストリに配置する正しいバイナリの作成に問題があります。
私はVNCキーを知っている:
byte[] Key = { 23, 82, 107, 6, 35, 78, 88, 7 };
だから、次のコードを使用して暗号化するためのパスワードとして「1234」を上記のキーを使用して渡す:
public static byte[] EncryptTextToMemory(string Data, byte[] Key)
{
try
{
MemoryStream mStream = new MemoryStream()
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
desProvider.Mode = CipherMode.ECB;
desProvider.Key = Key;
CryptoStream cStream = new CryptoStream(mStream,
desProvider.CreateEncryptor(),
CryptoStreamMode.Write);
byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data);
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();
byte[] ret = mStream.ToArray();
cStream.Close();
mStream.Close();
return ret;
}
catch (CryptographicException ex)
{
MessageBox.Show("A Cryptographic error occurred: " + ex.Message);
return null;
}
返されたバイト配列を通過した後BitConverter.ToString
に設定すると、RealVNC自体ですでに1234に設定されているパスワードのレジストリに格納されているのと同じ16進値を取得すると予想されますが、そうではありません。ここで
運がいいですか?私は、vncpwdumpのsrcコードを見て、明らかに何かが使用される前にキーに対して行われています。私はopensslを使って暗号化を再現しようとしていましたが、今のところそれは無駄でした。 – olivervbk
DESは暗号化にパスワードの逆順を使用しているようだ... [link](http://www.vidarholen.net/contents/junk/vnc.html) それをテストしていない。 – olivervbk