[ttssh2-commit] [10249] Client Secretの記録形式をWiresharkが扱う形式に合わせた。

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 9月 7日 (水) 02:08:14 JST


Revision: 10249
          https://osdn.net/projects/ttssh2/scm/svn/commits/10249
Author:   doda
Date:     2022-09-07 02:08:13 +0900 (Wed, 07 Sep 2022)
Log Message:
-----------
Client Secretの記録形式をWiresharkが扱う形式に合わせた。

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

Modified Paths:
--------------
    trunk/ttssh2/ttxssh/ssh.c

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ssh.c	2022-09-06 17:08:03 UTC (rev 10248)
+++ trunk/ttssh2/ttxssh/ssh.c	2022-09-06 17:08:13 UTC (rev 10249)
@@ -646,28 +646,32 @@
 	free(buf); // free
 }
 
-log_kex_key(PTInstVar pvar, char *type, char *msg)
+void log_kex_key(PTInstVar pvar, const BIGNUM *secret)
 {
 	int fd, i;
 	unsigned char buff[4], *cookie;
+	char *hexstr;
 
 	if (pvar->settings.KexKeyLogging && pvar->settings.KexKeyLogFile[0] != 0) {
+		hexstr = BN_bn2hex(secret);
+		if (hexstr == NULL) {
+			return;
+		}
 		fd = _open(pvar->settings.KexKeyLogFile,
 			_O_RDWR | _O_APPEND | _O_CREAT | _O_TEXT,
 			_S_IREAD | _S_IWRITE);
 		if (fd >= 0) {
 			cookie = pvar->crypt_state.client_cookie;
-			_write(fd, type, strlen(type));
-			_write(fd, " ", 1);
 			for (i=0; i<16; i++) {
 				_snprintf_s(buff, sizeof(buff), _TRUNCATE, "%02x", cookie[i]);
 				_write(fd, buff, 2);
 			}
 			_write(fd, " ", 1);
-			_write(fd, msg, strlen(msg));
+			_write(fd, hexstr, strlen(hexstr));
 			_write(fd, "\n", 1);
 			_close(fd);
 		}
+		OPENSSL_free(hexstr);
 	}
 }
 
@@ -5099,7 +5103,7 @@
 
 	// \x94閧\x82ɂ\xB7\x82ׂ\xAB\x97\x90\x90\x94(X)\x82𐶐\xAC
 	dh_gen_key(pvar, dh, pvar->we_need);
-	log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(dh->priv_key));
+	log_kex_key(pvar, dh->priv_key);
 
 	msg = buffer_init();
 	if (msg == NULL) {
@@ -5331,7 +5335,7 @@
 	// \x94閧\x82ɂ\xB7\x82ׂ\xAB\x97\x90\x90\x94(X)\x82𐶐\xAC
 	dh_gen_key(pvar, dh, pvar->we_need);
 
-	log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(dh->priv_key));
+	log_kex_key(pvar, dh->priv_key);
 
 	// \x8C\xF6\x8AJ\x8C\xAE\x82\xF0\x83T\x81[\x83o\x82֑\x97\x90M
 	msg = buffer_init();
@@ -5410,7 +5414,7 @@
 	}
 	group = EC_KEY_get0_group(client_key);
 
-	log_kex_key(pvar, "CLIENT_SECRET", BN_bn2hex(EC_KEY_get0_private_key(client_key)));
+	log_kex_key(pvar, EC_KEY_get0_private_key(client_key));
 
 	msg = buffer_init();
 	if (msg == NULL) {


ttssh2-commit メーリングリストの案内
Back to archive index