• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Tera Termの個人的な作業用リポジトリ


Commit MetaInfo

Revisãoc967494dc1350394139c0ae8661d8f1535637367 (tree)
Hora2022-09-06 23:12:10
AutorIWAMOTO Kouichi <sue@iwmt...>
CommiterIWAMOTO Kouichi

Mensagem de Log

Client Secretの記録形式をWiresharkが扱う形式に合わせた。

記録時にメモリーリークしていたのも修正した。

Mudança Sumário

Diff

--- a/ttssh2/ttxssh/ssh.c
+++ b/ttssh2/ttxssh/ssh.c
@@ -646,28 +646,32 @@ void push_bignum_memdump(char *name, char *desc, BIGNUM *bignum)
646646 free(buf); // free
647647 }
648648
649-log_kex_key(PTInstVar pvar, char *type, char *msg)
649+void log_kex_key(PTInstVar pvar, const BIGNUM *secret)
650650 {
651651 int fd, i;
652652 unsigned char buff[4], *cookie;
653+ char *hexstr;
653654
654655 if (pvar->settings.KexKeyLogging && pvar->settings.KexKeyLogFile[0] != 0) {
656+ hexstr = BN_bn2hex(secret);
657+ if (hexstr == NULL) {
658+ return;
659+ }
655660 fd = _open(pvar->settings.KexKeyLogFile,
656661 _O_RDWR | _O_APPEND | _O_CREAT | _O_TEXT,
657662 _S_IREAD | _S_IWRITE);
658663 if (fd >= 0) {
659664 cookie = pvar->crypt_state.client_cookie;
660- _write(fd, type, strlen(type));
661- _write(fd, " ", 1);
662665 for (i=0; i<16; i++) {
663666 _snprintf_s(buff, sizeof(buff), _TRUNCATE, "%02x", cookie[i]);
664667 _write(fd, buff, 2);
665668 }
666669 _write(fd, " ", 1);
667- _write(fd, msg, strlen(msg));
670+ _write(fd, hexstr, strlen(hexstr));
668671 _write(fd, "\n", 1);
669672 _close(fd);
670673 }
674+ OPENSSL_free(hexstr);
671675 }
672676 }
673677
@@ -5099,7 +5103,7 @@ static void SSH2_dh_kex_init(PTInstVar pvar)
50995103
51005104 // 秘密にすべき乱数(X)を生成
51015105 dh_gen_key(pvar, dh, pvar->we_need);
5102- log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(dh->priv_key));
5106+ log_kex_key(pvar, dh->priv_key);
51035107
51045108 msg = buffer_init();
51055109 if (msg == NULL) {
@@ -5331,7 +5335,7 @@ static BOOL handle_SSH2_dh_gex_group(PTInstVar pvar)
53315335 // 秘密にすべき乱数(X)を生成
53325336 dh_gen_key(pvar, dh, pvar->we_need);
53335337
5334- log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(dh->priv_key));
5338+ log_kex_key(pvar, dh->priv_key);
53355339
53365340 // 公開鍵をサーバへ送信
53375341 msg = buffer_init();
@@ -5410,7 +5414,7 @@ static void SSH2_ecdh_kex_init(PTInstVar pvar)
54105414 }
54115415 group = EC_KEY_get0_group(client_key);
54125416
5413- log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(EC_KEY_get0_private_key(client_key)));
5417+ log_kex_key(pvar, EC_KEY_get0_private_key(client_key));
54145418
54155419 msg = buffer_init();
54165420 if (msg == NULL) {