"""TLS cipher-suite and version name tables, generated from ``tshark -G values``.""" from __future__ import annotations CIPHER_SUITES: dict[int, str] = { 0: 'TLS_NULL_WITH_NULL_NULL', 1: 'TLS_RSA_WITH_NULL_MD5', 2: 'TLS_RSA_WITH_NULL_SHA', 3: 'TLS_RSA_EXPORT_WITH_RC4_40_MD5', 4: 'TLS_RSA_WITH_RC4_128_MD5', 5: 'TLS_RSA_WITH_RC4_128_SHA', 6: 'TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5', 7: 'TLS_RSA_WITH_IDEA_CBC_SHA', 8: 'TLS_RSA_EXPORT_WITH_DES40_CBC_SHA', 9: 'TLS_RSA_WITH_DES_CBC_SHA', 10: 'TLS_RSA_WITH_3DES_EDE_CBC_SHA', 11: 'TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA', 12: 'TLS_DH_DSS_WITH_DES_CBC_SHA', 13: 'TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA', 14: 'TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA', 15: 'TLS_DH_RSA_WITH_DES_CBC_SHA', 16: 'TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA', 17: 'TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA', 18: 'TLS_DHE_DSS_WITH_DES_CBC_SHA', 19: 'TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA', 20: 'TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA', 21: 'TLS_DHE_RSA_WITH_DES_CBC_SHA', 22: 'TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA', 23: 'TLS_DH_anon_EXPORT_WITH_RC4_40_MD5', 24: 'TLS_DH_anon_WITH_RC4_128_MD5', 25: 'TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA', 26: 'TLS_DH_anon_WITH_DES_CBC_SHA', 27: 'TLS_DH_anon_WITH_3DES_EDE_CBC_SHA', 28: 'SSL_FORTEZZA_KEA_WITH_NULL_SHA', 29: 'SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA', 30: 'TLS_KRB5_WITH_DES_CBC_SHA', 31: 'TLS_KRB5_WITH_3DES_EDE_CBC_SHA', 32: 'TLS_KRB5_WITH_RC4_128_SHA', 33: 'TLS_KRB5_WITH_IDEA_CBC_SHA', 34: 'TLS_KRB5_WITH_DES_CBC_MD5', 35: 'TLS_KRB5_WITH_3DES_EDE_CBC_MD5', 36: 'TLS_KRB5_WITH_RC4_128_MD5', 37: 'TLS_KRB5_WITH_IDEA_CBC_MD5', 38: 'TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA', 39: 'TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA', 40: 'TLS_KRB5_EXPORT_WITH_RC4_40_SHA', 41: 'TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5', 42: 'TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5', 43: 'TLS_KRB5_EXPORT_WITH_RC4_40_MD5', 44: 'TLS_PSK_WITH_NULL_SHA', 45: 'TLS_DHE_PSK_WITH_NULL_SHA', 46: 'TLS_RSA_PSK_WITH_NULL_SHA', 47: 'TLS_RSA_WITH_AES_128_CBC_SHA', 48: 'TLS_DH_DSS_WITH_AES_128_CBC_SHA', 49: 'TLS_DH_RSA_WITH_AES_128_CBC_SHA', 50: 'TLS_DHE_DSS_WITH_AES_128_CBC_SHA', 51: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA', 52: 'TLS_DH_anon_WITH_AES_128_CBC_SHA', 53: 'TLS_RSA_WITH_AES_256_CBC_SHA', 54: 'TLS_DH_DSS_WITH_AES_256_CBC_SHA', 55: 'TLS_DH_RSA_WITH_AES_256_CBC_SHA', 56: 'TLS_DHE_DSS_WITH_AES_256_CBC_SHA', 57: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA', 58: 'TLS_DH_anon_WITH_AES_256_CBC_SHA', 59: 'TLS_RSA_WITH_NULL_SHA256', 60: 'TLS_RSA_WITH_AES_128_CBC_SHA256', 61: 'TLS_RSA_WITH_AES_256_CBC_SHA256', 62: 'TLS_DH_DSS_WITH_AES_128_CBC_SHA256', 63: 'TLS_DH_RSA_WITH_AES_128_CBC_SHA256', 64: 'TLS_DHE_DSS_WITH_AES_128_CBC_SHA256', 65: 'TLS_RSA_WITH_CAMELLIA_128_CBC_SHA', 66: 'TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA', 67: 'TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA', 68: 'TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA', 69: 'TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA', 70: 'TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA', 96: 'TLS_RSA_EXPORT1024_WITH_RC4_56_MD5', 97: 'TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5', 98: 'TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA', 99: 'TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA', 100: 'TLS_RSA_EXPORT1024_WITH_RC4_56_SHA', 101: 'TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA', 102: 'TLS_DHE_DSS_WITH_RC4_128_SHA', 103: 'TLS_DHE_RSA_WITH_AES_128_CBC_SHA256', 104: 'TLS_DH_DSS_WITH_AES_256_CBC_SHA256', 105: 'TLS_DH_RSA_WITH_AES_256_CBC_SHA256', 106: 'TLS_DHE_DSS_WITH_AES_256_CBC_SHA256', 107: 'TLS_DHE_RSA_WITH_AES_256_CBC_SHA256', 108: 'TLS_DH_anon_WITH_AES_128_CBC_SHA256', 109: 'TLS_DH_anon_WITH_AES_256_CBC_SHA256', 128: 'TLS_GOSTR341094_WITH_28147_CNT_IMIT', 129: 'TLS_GOSTR341001_WITH_28147_CNT_IMIT', 130: 'TLS_GOSTR341094_WITH_NULL_GOSTR3411', 131: 'TLS_GOSTR341001_WITH_NULL_GOSTR3411', 132: 'TLS_RSA_WITH_CAMELLIA_256_CBC_SHA', 133: 'TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA', 134: 'TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA', 135: 'TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA', 136: 'TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA', 137: 'TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA', 138: 'TLS_PSK_WITH_RC4_128_SHA', 139: 'TLS_PSK_WITH_3DES_EDE_CBC_SHA', 140: 'TLS_PSK_WITH_AES_128_CBC_SHA', 141: 'TLS_PSK_WITH_AES_256_CBC_SHA', 142: 'TLS_DHE_PSK_WITH_RC4_128_SHA', 143: 'TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA', 144: 'TLS_DHE_PSK_WITH_AES_128_CBC_SHA', 145: 'TLS_DHE_PSK_WITH_AES_256_CBC_SHA', 146: 'TLS_RSA_PSK_WITH_RC4_128_SHA', 147: 'TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA', 148: 'TLS_RSA_PSK_WITH_AES_128_CBC_SHA', 149: 'TLS_RSA_PSK_WITH_AES_256_CBC_SHA', 150: 'TLS_RSA_WITH_SEED_CBC_SHA', 151: 'TLS_DH_DSS_WITH_SEED_CBC_SHA', 152: 'TLS_DH_RSA_WITH_SEED_CBC_SHA', 153: 'TLS_DHE_DSS_WITH_SEED_CBC_SHA', 154: 'TLS_DHE_RSA_WITH_SEED_CBC_SHA', 155: 'TLS_DH_anon_WITH_SEED_CBC_SHA', 156: 'TLS_RSA_WITH_AES_128_GCM_SHA256', 157: 'TLS_RSA_WITH_AES_256_GCM_SHA384', 158: 'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256', 159: 'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384', 160: 'TLS_DH_RSA_WITH_AES_128_GCM_SHA256', 161: 'TLS_DH_RSA_WITH_AES_256_GCM_SHA384', 162: 'TLS_DHE_DSS_WITH_AES_128_GCM_SHA256', 163: 'TLS_DHE_DSS_WITH_AES_256_GCM_SHA384', 164: 'TLS_DH_DSS_WITH_AES_128_GCM_SHA256', 165: 'TLS_DH_DSS_WITH_AES_256_GCM_SHA384', 166: 'TLS_DH_anon_WITH_AES_128_GCM_SHA256', 167: 'TLS_DH_anon_WITH_AES_256_GCM_SHA384', 168: 'TLS_PSK_WITH_AES_128_GCM_SHA256', 169: 'TLS_PSK_WITH_AES_256_GCM_SHA384', 170: 'TLS_DHE_PSK_WITH_AES_128_GCM_SHA256', 171: 'TLS_DHE_PSK_WITH_AES_256_GCM_SHA384', 172: 'TLS_RSA_PSK_WITH_AES_128_GCM_SHA256', 173: 'TLS_RSA_PSK_WITH_AES_256_GCM_SHA384', 174: 'TLS_PSK_WITH_AES_128_CBC_SHA256', 175: 'TLS_PSK_WITH_AES_256_CBC_SHA384', 176: 'TLS_PSK_WITH_NULL_SHA256', 177: 'TLS_PSK_WITH_NULL_SHA384', 178: 'TLS_DHE_PSK_WITH_AES_128_CBC_SHA256', 179: 'TLS_DHE_PSK_WITH_AES_256_CBC_SHA384', 180: 'TLS_DHE_PSK_WITH_NULL_SHA256', 181: 'TLS_DHE_PSK_WITH_NULL_SHA384', 182: 'TLS_RSA_PSK_WITH_AES_128_CBC_SHA256', 183: 'TLS_RSA_PSK_WITH_AES_256_CBC_SHA384', 184: 'TLS_RSA_PSK_WITH_NULL_SHA256', 185: 'TLS_RSA_PSK_WITH_NULL_SHA384', 186: 'TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256', 187: 'TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256', 188: 'TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256', 189: 'TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256', 190: 'TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256', 191: 'TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256', 192: 'TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256', 193: 'TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256', 194: 'TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256', 195: 'TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256', 196: 'TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256', 197: 'TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256', 198: 'TLS_SM4_GCM_SM3', 199: 'TLS_SM4_CCM_SM3', 255: 'TLS_EMPTY_RENEGOTIATION_INFO_SCSV', 2570: 'Reserved (GREASE)', 4865: 'TLS_AES_128_GCM_SHA256', 4866: 'TLS_AES_256_GCM_SHA384', 4867: 'TLS_CHACHA20_POLY1305_SHA256', 4868: 'TLS_AES_128_CCM_SHA256', 4869: 'TLS_AES_128_CCM_8_SHA256', 6682: 'Reserved (GREASE)', 10794: 'Reserved (GREASE)', 14906: 'Reserved (GREASE)', 19018: 'Reserved (GREASE)', 22016: 'TLS_FALLBACK_SCSV', 23130: 'Reserved (GREASE)', 27242: 'Reserved (GREASE)', 31354: 'Reserved (GREASE)', 35466: 'Reserved (GREASE)', 39578: 'Reserved (GREASE)', 43690: 'Reserved (GREASE)', 47802: 'Reserved (GREASE)', 49153: 'TLS_ECDH_ECDSA_WITH_NULL_SHA', 49154: 'TLS_ECDH_ECDSA_WITH_RC4_128_SHA', 49155: 'TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA', 49156: 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA', 49157: 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA', 49158: 'TLS_ECDHE_ECDSA_WITH_NULL_SHA', 49159: 'TLS_ECDHE_ECDSA_WITH_RC4_128_SHA', 49160: 'TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA', 49161: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA', 49162: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA', 49163: 'TLS_ECDH_RSA_WITH_NULL_SHA', 49164: 'TLS_ECDH_RSA_WITH_RC4_128_SHA', 49165: 'TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA', 49166: 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA', 49167: 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA', 49168: 'TLS_ECDHE_RSA_WITH_NULL_SHA', 49169: 'TLS_ECDHE_RSA_WITH_RC4_128_SHA', 49170: 'TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA', 49171: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA', 49172: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA', 49173: 'TLS_ECDH_anon_WITH_NULL_SHA', 49174: 'TLS_ECDH_anon_WITH_RC4_128_SHA', 49175: 'TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA', 49176: 'TLS_ECDH_anon_WITH_AES_128_CBC_SHA', 49177: 'TLS_ECDH_anon_WITH_AES_256_CBC_SHA', 49178: 'TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA', 49179: 'TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA', 49180: 'TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA', 49181: 'TLS_SRP_SHA_WITH_AES_128_CBC_SHA', 49182: 'TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA', 49183: 'TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA', 49184: 'TLS_SRP_SHA_WITH_AES_256_CBC_SHA', 49185: 'TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA', 49186: 'TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA', 49187: 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256', 49188: 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384', 49189: 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256', 49190: 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384', 49191: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256', 49192: 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384', 49193: 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256', 49194: 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384', 49195: 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256', 49196: 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384', 49197: 'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256', 49198: 'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384', 49199: 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256', 49200: 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384', 49201: 'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256', 49202: 'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384', 49203: 'TLS_ECDHE_PSK_WITH_RC4_128_SHA', 49204: 'TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA', 49205: 'TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA', 49206: 'TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA', 49207: 'TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256', 49208: 'TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384', 49209: 'TLS_ECDHE_PSK_WITH_NULL_SHA', 49210: 'TLS_ECDHE_PSK_WITH_NULL_SHA256', 49211: 'TLS_ECDHE_PSK_WITH_NULL_SHA384', 49212: 'TLS_RSA_WITH_ARIA_128_CBC_SHA256', 49213: 'TLS_RSA_WITH_ARIA_256_CBC_SHA384', 49214: 'TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256', 49215: 'TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384', 49216: 'TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256', 49217: 'TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384', 49218: 'TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256', 49219: 'TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384', 49220: 'TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256', 49221: 'TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384', 49222: 'TLS_DH_anon_WITH_ARIA_128_CBC_SHA256', 49223: 'TLS_DH_anon_WITH_ARIA_256_CBC_SHA384', 49224: 'TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256', 49225: 'TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384', 49226: 'TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256', 49227: 'TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384', 49228: 'TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256', 49229: 'TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384', 49230: 'TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256', 49231: 'TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384', 49232: 'TLS_RSA_WITH_ARIA_128_GCM_SHA256', 49233: 'TLS_RSA_WITH_ARIA_256_GCM_SHA384', 49234: 'TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256', 49235: 'TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384', 49236: 'TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256', 49237: 'TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384', 49238: 'TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256', 49239: 'TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384', 49240: 'TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256', 49241: 'TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384', 49242: 'TLS_DH_anon_WITH_ARIA_128_GCM_SHA256', 49243: 'TLS_DH_anon_WITH_ARIA_256_GCM_SHA384', 49244: 'TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256', 49245: 'TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384', 49246: 'TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256', 49247: 'TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384', 49248: 'TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256', 49249: 'TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384', 49250: 'TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256', 49251: 'TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384', 49252: 'TLS_PSK_WITH_ARIA_128_CBC_SHA256', 49253: 'TLS_PSK_WITH_ARIA_256_CBC_SHA384', 49254: 'TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256', 49255: 'TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384', 49256: 'TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256', 49257: 'TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384', 49258: 'TLS_PSK_WITH_ARIA_128_GCM_SHA256', 49259: 'TLS_PSK_WITH_ARIA_256_GCM_SHA384', 49260: 'TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256', 49261: 'TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384', 49262: 'TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256', 49263: 'TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384', 49264: 'TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256', 49265: 'TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384', 49266: 'TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256', 49267: 'TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384', 49268: 'TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256', 49269: 'TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384', 49270: 'TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256', 49271: 'TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384', 49272: 'TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256', 49273: 'TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384', 49274: 'TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256', 49275: 'TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384', 49276: 'TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256', 49277: 'TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384', 49278: 'TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256', 49279: 'TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384', 49280: 'TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256', 49281: 'TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384', 49282: 'TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256', 49283: 'TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384', 49284: 'TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256', 49285: 'TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384', 49286: 'TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256', 49287: 'TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384', 49288: 'TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256', 49289: 'TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384', 49290: 'TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256', 49291: 'TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384', 49292: 'TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256', 49293: 'TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384', 49294: 'TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256', 49295: 'TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384', 49296: 'TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256', 49297: 'TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384', 49298: 'TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256', 49299: 'TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384', 49300: 'TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256', 49301: 'TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384', 49302: 'TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256', 49303: 'TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384', 49304: 'TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256', 49305: 'TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384', 49306: 'TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256', 49307: 'TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384', 49308: 'TLS_RSA_WITH_AES_128_CCM', 49309: 'TLS_RSA_WITH_AES_256_CCM', 49310: 'TLS_DHE_RSA_WITH_AES_128_CCM', 49311: 'TLS_DHE_RSA_WITH_AES_256_CCM', 49312: 'TLS_RSA_WITH_AES_128_CCM_8', 49313: 'TLS_RSA_WITH_AES_256_CCM_8', 49314: 'TLS_DHE_RSA_WITH_AES_128_CCM_8', 49315: 'TLS_DHE_RSA_WITH_AES_256_CCM_8', 49316: 'TLS_PSK_WITH_AES_128_CCM', 49317: 'TLS_PSK_WITH_AES_256_CCM', 49318: 'TLS_DHE_PSK_WITH_AES_128_CCM', 49319: 'TLS_DHE_PSK_WITH_AES_256_CCM', 49320: 'TLS_PSK_WITH_AES_128_CCM_8', 49321: 'TLS_PSK_WITH_AES_256_CCM_8', 49322: 'TLS_PSK_DHE_WITH_AES_128_CCM_8', 49323: 'TLS_PSK_DHE_WITH_AES_256_CCM_8', 49324: 'TLS_ECDHE_ECDSA_WITH_AES_128_CCM', 49325: 'TLS_ECDHE_ECDSA_WITH_AES_256_CCM', 49326: 'TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8', 49327: 'TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8', 49328: 'TLS_ECCPWD_WITH_AES_128_GCM_SHA256', 49329: 'TLS_ECCPWD_WITH_AES_256_GCM_SHA384', 49330: 'TLS_ECCPWD_WITH_AES_128_CCM_SHA256', 49331: 'TLS_ECCPWD_WITH_AES_256_CCM_SHA384', 49332: 'TLS_SHA256_SHA256', 49333: 'TLS_SHA384_SHA384', 49407: 'TLS_ECJPAKE_WITH_AES_128_CCM_8', 49408: 'TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC', 49409: 'TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC', 49410: 'TLS_GOSTR341112_256_WITH_28147_CNT_IMIT', 49411: 'TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L', 49412: 'TLS_GOSTR341112_256_WITH_MAGMA_MGM_L', 49413: 'TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S', 49414: 'TLS_GOSTR341112_256_WITH_MAGMA_MGM_S', 51914: 'Reserved (GREASE)', 52243: 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256', 52244: 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256', 52245: 'TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256', 52392: 'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256', 52393: 'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256', 52394: 'TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256', 52395: 'TLS_PSK_WITH_CHACHA20_POLY1305_SHA256', 52396: 'TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256', 52397: 'TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256', 52398: 'TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256', 53249: 'TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256', 53250: 'TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384', 53251: 'TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256', 53253: 'TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256', 56026: 'Reserved (GREASE)', 57345: 'ECDHE_SM1_SM3', 57347: 'ECC_SM1_SM3', 57349: 'IBSDH_SM1_SM3', 57351: 'IBC_SM1_SM3', 57353: 'RSA_SM1_SM3', 57354: 'RSA_SM1_SHA1', 57361: 'ECDHE_SM4_CBC_SM3', 57363: 'ECC_SM4_CBC_SM3', 57365: 'IBSDH_SM4_CBC_SM3', 57367: 'IBC_SM4_CBC_SM3', 57369: 'RSA_SM4_CBC_SM3', 57370: 'RSA_SM4_CBC_SHA1', 57372: 'RSA_SM4_CBC_SHA256', 57425: 'ECDHE_SM4_GCM_SM3', 57427: 'ECC_SM4_GCM_SM3', 57429: 'IBSDH_SM4_GCM_SM3', 57431: 'IBC_SM4_GCM_SM3', 57433: 'RSA_SM4_GCM_SM3', 57434: 'RSA_SM4_GCM_SHA256', 58384: 'TLS_RSA_WITH_ESTREAM_SALSA20_SHA1', 58385: 'TLS_RSA_WITH_SALSA20_SHA1', 58386: 'TLS_ECDHE_RSA_WITH_ESTREAM_SALSA20_SHA1', 58387: 'TLS_ECDHE_RSA_WITH_SALSA20_SHA1', 58388: 'TLS_ECDHE_ECDSA_WITH_ESTREAM_SALSA20_SHA1', 58389: 'TLS_ECDHE_ECDSA_WITH_SALSA20_SHA1', 58390: 'TLS_PSK_WITH_ESTREAM_SALSA20_SHA1', 58391: 'TLS_PSK_WITH_SALSA20_SHA1', 58392: 'TLS_ECDHE_PSK_WITH_ESTREAM_SALSA20_SHA1', 58393: 'TLS_ECDHE_PSK_WITH_SALSA20_SHA1', 58394: 'TLS_RSA_PSK_WITH_ESTREAM_SALSA20_SHA1', 58395: 'TLS_RSA_PSK_WITH_SALSA20_SHA1', 58396: 'TLS_DHE_PSK_WITH_ESTREAM_SALSA20_SHA1', 58397: 'TLS_DHE_PSK_WITH_SALSA20_SHA1', 58398: 'TLS_DHE_RSA_WITH_ESTREAM_SALSA20_SHA1', 58399: 'TLS_DHE_RSA_WITH_SALSA20_SHA1', 60138: 'Reserved (GREASE)', 64250: 'Reserved (GREASE)', 65278: 'SSL_RSA_FIPS_WITH_DES_CBC_SHA', 65279: 'SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA', 65504: 'SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA', 65505: 'SSL_RSA_FIPS_WITH_DES_CBC_SHA', } TLS_VERSIONS: dict[int, str] = { 0x0002: "SSL 2.0", 0x0300: "SSL 3.0", 0x0301: "TLS 1.0", 0x0302: "TLS 1.1", 0x0303: "TLS 1.2", 0x0304: "TLS 1.3", } # GREASE values (RFC 8701) are random placeholders and never a real cipher or version. def is_grease(value: int) -> bool: return (value & 0x0F0F) == 0x0A0A and ((value >> 8) & 0xFF) == (value & 0xFF) def parse_int(raw) -> int | None: """Parse tshark numeric output given as decimal or 0x-prefixed hex.""" if raw is None: return None s = str(raw).strip() if not s: return None try: return int(s, 16) if s.lower().startswith("0x") else int(s) except ValueError: return None def cipher_name(raw) -> str | None: v = parse_int(raw) if v is None: return str(raw) if raw else None return CIPHER_SUITES.get(v, f"0x{v:04x}") def version_name(raw) -> str | None: v = parse_int(raw) if v is None: return str(raw) if raw else None if 0x7F00 <= v <= 0x7FFF: return "TLS 1.3 (draft)" return TLS_VERSIONS.get(v, f"0x{v:04x}") # Cipher-suite properties used by the TLS detector. def cipher_is_weak(name: str) -> str | None: """Return a reason when the suite is considered broken or obsolete, else None.""" n = (name or "").upper() if not n or n.startswith("0X"): return None if "_NULL_" in n or n.endswith("_NULL") or "WITH_NULL" in n: return "no encryption (NULL cipher)" if "ANON" in n: return "anonymous key exchange (no authentication)" if "EXPORT" in n: return "export-grade key length" if "RC4" in n: return "RC4 stream cipher" if "_DES_" in n or "DES40" in n or "DES_CBC" in n and "3DES" not in n: return "single DES" if "3DES" in n: return "3DES (Sweet32)" if "IDEA" in n or "SEED" in n or "ARIA" in n and "GCM" not in n: return "legacy block cipher" if n.endswith("_MD5") or "_MD5" in n: return "MD5 MAC" return None def cipher_is_legacy(name: str) -> str | None: """Return a reason when the suite lacks forward secrecy or an AEAD mode.""" n = (name or "").upper() if not n or n.startswith("0X") or n.startswith("TLS_AES_") or n.startswith("TLS_CHACHA20_"): return None if cipher_is_weak(n): return None reasons = [] if not ("ECDHE" in n or "DHE" in n): reasons.append("no forward secrecy (static key exchange)") if "CBC" in n or n.endswith("_SHA") or n.endswith("_SHA256") and "GCM" not in n and "CCM" not in n and "CHACHA" not in n: reasons.append("CBC / non-AEAD mode") return "; ".join(reasons) or None