Мне нужно использовать WinSCP API для программного получения отпечатков пальцев с удаленных протокольных устройств в нашей сети.Прямо сейчас это делается утомительно, открывая сеанс WinSCP с пользовательским интерфейсом Windows и транскрибируя отпечатки пальцев из всплывающего окна, отображаемого, когда он собирается кэшироваться.
Я вижу в документации, где я могу использовать Session.ScanFingerprin
t для этого, но, похоже, он возвращает строку ASCII:
ssh-rsa 1040 Rrt2/hXxs+i3Ugz1YeZUXIk/gjliFNyyA9WHBYCu0m8=
вместо ожидаемого шестнадцатеричного значения, которое я ожидал:
ssh-rsa 1040 ef:aa:a1:30:79:12:c7:f8:02:36:d0:ac:71:6b:5b:24
ScanFingerprint
требуется параметр algorithm
, который я предоставляю в виде строки "SHA-256"
;Я не смог найти ни одного примера, чтобы сказать, правильно ли это.
Вот код, который я использую:
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Scp,
HostName = "xxx.xxx.xxx.xxx", // IP address
UserName = "root",
Password = "root",
//SshHostKeyFingerprint = fingerprint
GiveUpSecurityAndAcceptAnySshHostKey=true
};
sessionOptions.AddRawSettings("AuthGSSAPI", "1");
sessionOptions.AddRawSettings("Cipher", "aes,blowfish,3des,chacha20,WARN,arcfour,des");
sessionOptions.AddRawSettings("KEX", "ecdh,dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,rsa,WARN");
Session session;
using (session = new Session())
{
//session.DisableVersionCheck = true;
try
{
Log("Opening session");
string fingerprint = null;
fingerprint = session.ScanFingerprint(sessionOptions,"SHA-256");
string t = fingerprint;
}
catch (Exception ex)
{
Log("WinSCP: " + ex.Message);
return;
}
}
Я предоставляю неверный параметр алгоритма или мне нужно переосмыслить полученную строку отпечатка пальца?