Fix session count, concurrency, improve summary
This commit is contained in:
parent
c311c4626b
commit
eba08d3b8b
4 changed files with 103 additions and 38 deletions
68
crawler.py
68
crawler.py
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue