504 lines
22 KiB
Python
504 lines
22 KiB
Python
"""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
|