first commit
This commit is contained in:
57
ssl_test_final.py
Normal file
57
ssl_test_final.py
Normal file
@ -0,0 +1,57 @@
|
||||
import ssl
|
||||
import socket
|
||||
|
||||
weak_protocols = {
|
||||
"SSLv3": ssl.PROTOCOL_TLS_CLIENT,
|
||||
"TLSv1.0": ssl.PROTOCOL_TLSv1,
|
||||
"TLSv1.1": ssl.PROTOCOL_TLSv1_1,
|
||||
}
|
||||
|
||||
weak_ciphers = ['RC4', 'DES', '3DES', 'EXPORT', 'NULL', 'MD5']
|
||||
|
||||
def test_protocols(hostname, port=443):
|
||||
print(f"Testowanie protokolow na {hostname}:{port}")
|
||||
for name, proto in weak_protocols.items():
|
||||
try:
|
||||
context = ssl.SSLContext(proto)
|
||||
context.check_hostname = False
|
||||
context.verify_mode = ssl.CERT_NONE
|
||||
|
||||
with socket.create_connection((hostname, port), timeout=5) as sock:
|
||||
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
|
||||
used_version = ssock.version()
|
||||
used_cipher = ssock.cipher()
|
||||
print(f"Obsluguje {name}: uzyto {used_version}, szyfr: {used_cipher[0]}")
|
||||
except ssl.SSLError as e:
|
||||
print(f"{name} odrzucony: {e}")
|
||||
except Exception as e:
|
||||
print(f"Blad podczas testowania {name}: {e}")
|
||||
print()
|
||||
|
||||
def test_ciphers(hostname, port=443):
|
||||
print(f"Testowanie slabych szyfrow na {hostname}:{port}")
|
||||
context = ssl.create_default_context()
|
||||
context.set_ciphers('ALL')
|
||||
context.check_hostname = False
|
||||
context.verify_mode = ssl.CERT_NONE
|
||||
|
||||
try:
|
||||
with socket.create_connection((hostname, port), timeout=5) as sock:
|
||||
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
|
||||
cipher = ssock.cipher()[0]
|
||||
if any(weak in cipher.upper() for weak in weak_ciphers):
|
||||
print(f"Wykryto slaby szyfr: {cipher}")
|
||||
else:
|
||||
print(f"Uzyty szyfr nie jest na liscie slabych: {cipher}")
|
||||
except Exception as e:
|
||||
print(f"Blad: nie udalo sie nawiazac polaczenia: {e}")
|
||||
print()
|
||||
|
||||
def main():
|
||||
host = input("Podaj nazwe hosta: ").strip()
|
||||
test_protocols(host)
|
||||
test_ciphers(host)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Reference in New Issue
Block a user