Fix session count, concurrency, improve summary

This commit is contained in:
Pascal Engélibert 2026-04-08 16:43:21 +02:00
commit eba08d3b8b
4 changed files with 103 additions and 38 deletions

View file

@ -120,6 +120,7 @@ if __name__ == "__main__":
"1.3": 0,
}
}
combinations = {}
f = open(sys.argv[2], "r")
c = json.load(f)
for domain in c:
@ -141,51 +142,69 @@ if __name__ == "__main__":
pass
#print("Not found:", line, r)
cert = ""
if "cert_sig" not in domain_stats:
summary["cert"]["none"] += 1
cert = "none"
elif domain_stats["cert_sig"] == "ecdsa_secp256r1_sha256":
summary["cert"]["secp256r1"] += 1
cert = "secp256r1"
elif domain_stats["cert_sig"] == "ecdsa_secp384r1_sha384":
summary["cert"]["secp384r1"] += 1
cert = "secp384r1"
elif domain_stats["cert_sig"] == "ecdsa_secp521r1_sha512":
summary["cert"]["secp521r1"] += 1
cert = "secp521r1"
elif "rsa" in domain_stats["cert_sig"]:
summary["cert"]["rsa{}".format(domain_stats["cert_pk_size"])] += 1
cert = "rsa{}".format(domain_stats["cert_pk_size"])
if cert != "":
summary["cert"][cert] += 1
cipher = ""
if "cipher" not in domain_stats:
summary["cipher"]["none"] += 1
cipher = "none"
elif "AES_128" in domain_stats["cipher"] or "AES128" in domain_stats["cipher"]:
summary["cipher"]["aes128"] += 1
cipher = "aes128"
elif "AES_256" in domain_stats["cipher"] or "AES256" in domain_stats["cipher"]:
summary["cipher"]["aes256"] += 1
cipher = "aes256"
elif "CHACHA20" in domain_stats["cipher"]:
summary["cipher"]["chacha20"] += 1
cipher = "chacha20"
if cipher != "":
summary["cipher"][cipher] += 1
kx = ""
if "kx" not in domain_stats:
summary["kx"]["none"] += 1
kx = "none"
elif domain_stats["kx"] == "X25519MLKEM768":
summary["kx"]["x25519mlkem768"] += 1
kx = "x25519mlkem768"
elif domain_stats["kx"] == "X25519, 253 bits":
summary["kx"]["x25519"] += 1
kx = "x25519"
elif domain_stats["kx"] == "DH, 2048 bits":
summary["kx"]["rsa2048"] += 1
kx = "rsa2048"
elif domain_stats["kx"] == "DH, 3072 bits":
summary["kx"]["rsa3072"] += 1
kx = "rsa3072"
elif domain_stats["kx"] == "DH, 4096 bits":
summary["kx"]["rsa4096"] += 1
kx = "rsa4096"
elif domain_stats["kx"] == "ECDH, prime256v1, 256 bits":
summary["kx"]["secp256r1"] += 1
kx = "secp256r1"
elif domain_stats["kx"] == "ECDH, secp384r1, 384 bits":
summary["kx"]["secp384r1"] += 1
kx = "secp384r1"
elif domain_stats["kx"] == "ECDH, secp521r1, 521 bits":
summary["kx"]["secp521r1"] += 1
kx = "secp521r1"
if kx != "":
summary["kx"][kx] += 1
protocol = ""
if "protocol" not in domain_stats:
summary["version"]["none"] += 1
protocol = "none"
elif domain_stats["protocol"] == "TLSv1.3":
summary["version"]["1.3"] += 1
protocol = "1.3"
elif domain_stats["protocol"] == "TLSv1.2":
summary["version"]["1.2"] += 1
protocol = "1.2"
if protocol != "":
summary["version"][protocol] += 1
combination = (protocol, cert, kx, cipher)
if combination in combinations:
combinations[combination] += 1
else:
combinations[combination] = 1
#if "kx" in domain_stats and domain_stats["kx"] == "ECDH":
# print(c[domain])
@ -195,10 +214,15 @@ if __name__ == "__main__":
print(f"{cat}:")
for item in stats[cat]:
print(" {}:\t{}".format(item, stats[cat][item]))
elif "-s" in sys.argv: # summary
if "-s" in sys.argv: # summary
for cat in summary:
print(f"{cat}:")
for item in summary[cat]:
print(" {}:\t{}".format(item, summary[cat][item]))
if "-c" in sys.argv: # combinations
combinations_list = [c for c in combinations]
combinations_list.sort(key=lambda c: combinations[c])
for c in combinations_list:
print("{}\t{}".format(c, combinations[c]))
else:
print(stats)