28 lines
903 B
Python
28 lines
903 B
Python
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import ssl
|
|
import hashlib
|
|
|
|
parser = argparse.ArgumentParser(description='Compute SSL/TLS fingerprints.')
|
|
parser.add_argument('--host', required=True)
|
|
parser.add_argument('--port', default=8883)
|
|
|
|
args = parser.parse_args()
|
|
print(args.host)
|
|
|
|
cert_pem = ssl.get_server_certificate((args.host, args.port))
|
|
cert_der = ssl.PEM_cert_to_DER_cert(cert_pem)
|
|
|
|
md5 = hashlib.md5(cert_der).hexdigest()
|
|
sha1 = hashlib.sha1(cert_der).hexdigest()
|
|
sha256 = hashlib.sha256(cert_der).hexdigest()
|
|
print("MD5: " + md5)
|
|
print("SHA1: " + sha1)
|
|
print("SHA256: " + sha256)
|
|
|
|
print("\nSHA1 as array initializer:")
|
|
print("const uint8_t fingerprint[] = {0x" + ", 0x".join([sha1[i:i+2] for i in range(0, len(sha1), 2)]) + "};")
|
|
|
|
print("\nSHA1 as function call:")
|
|
print("mqttClient.addServerFingerprint((const uint8_t[]){0x" + ", 0x".join([sha1[i:i+2] for i in range(0, len(sha1), 2)]) + "});")
|