Skip to content

Instantly share code, notes, and snippets.

@Lucho00Cuba
Created June 28, 2023 16:28
Show Gist options
  • Save Lucho00Cuba/b87a7e95ed75ec3c7e71d6a4864d7bf1 to your computer and use it in GitHub Desktop.
Save Lucho00Cuba/b87a7e95ed75ec3c7e71d6a4864d7bf1 to your computer and use it in GitHub Desktop.
Dump Data SSL
#!/usr/bin/env python3
import ssl
import OpenSSL
from OpenSSL import crypto
hostname = 'HOSTNAME'
port = PORT
print(f"Hostname: {hostname}")
print(f"Port: {port}")
cert = ssl.get_server_certificate((hostname, port))
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
#print 'Expired: {}'.format(x509.has_expired())
#print 'Signature Algorithm: {}\n'.format(x509.get_signature_algorithm())
print(f"Expired: {x509.has_expired()}")
print(f"Signature Algorithm: {x509.get_signature_algorithm().decode('utf-8')}")
for item in x509.get_subject().get_components():
#print 'Subject {}: {}'.format(item[0], item[1])
print(f"Subject {item[0].decode('utf-8')}: {item[1].decode('utf-8')}")
#print 'Subject Hash: {}\n'.format(x509.get_subject().hash())
print(f"Subject Hash: {x509.get_subject().hash()}")
for item in x509.get_issuer().get_components():
#print 'Issuer {}: {}'.format(item[0], item[1])
print(f"Issuer {item[0].decode('utf-8')}: {item[1].decode('utf-8')}")
#print 'Issuer Hash: {}\n'.format(x509.get_issuer().hash())
print(f"Issuer Hash: {x509.get_issuer().hash()}")
for i in range(x509.get_extension_count()):
#print 'Extension {}: {}'.format(x509.get_extension(i).get_short_name(), x509.get_extension(i).__str__())
try:
print(f"Extension {x509.get_extension(i).get_short_name().decode('utf-8')}: {x509.get_extension(i).__str__()}")
except:
pass
#print '\nPublic Key Bits: {}'.format(x509.get_pubkey().bits())
#print 'Public Key Type: {}'.format(x509.get_pubkey().type())
#print 'Public Key only public: {}'.format(x509.get_pubkey()._only_public)
#print 'Public Key initialized: {}'.format(x509.get_pubkey()._initialized)
print(f"\nPublic Key Bits: {x509.get_pubkey().bits()}")
print(f"Public Key Type: {x509.get_pubkey().type()}")
print(f"Public Key only public: {x509.get_pubkey()._only_public}")
print(f"Public Key initialized: {x509.get_pubkey()._initialized}")
print(f"Public Key: \n{crypto.dump_publickey(crypto.FILETYPE_PEM,x509.get_pubkey()).decode('utf-8')}")
aa = x509.get_serial_number()
bb = hex(aa).rstrip('L').lstrip('0x')
#print 'Serial Number: {}'.format(x509.get_serial_number())
#print 'Serial Number Hex: {}'.format(':'.join(s.encode('hex').upper() for s in bb.decode('hex')))
#print 'Serial Number Length: {}\n'.format(x509.get_serial_number().bit_length())
print(f"Serial Number: {x509.get_serial_number()}")
#print(f"Serial Number Hex: {':'.join(s.encode('hex').upper() for s in bb.decode('hex'))}")
print(f"Serial Number Length: {x509.get_serial_number().bit_length()}")
#print 'MD5: {}'.format(x509.digest('md5'))
#print 'SHA1: {}'.format(x509.digest('sha1'))
#print 'SHA224: {}'.format(x509.digest('sha224'))
#print 'SHA256: {}'.format(x509.digest('sha256'))
#print 'SHA384: {}'.format(x509.digest('sha384'))
#print 'SHA512: {}\n'.format(x509.digest('sha512'))
print(f"MD5: {x509.digest('md5').decode('utf-8')}")
print(f"SHA1: {x509.digest('sha1').decode('utf-8')}")
print(f"SHA224: {x509.digest('sha224').decode('utf-8')}")
print(f"SHA256: {x509.digest('sha256').decode('utf-8')}")
print(f"SHA384: {x509.digest('sha384').decode('utf-8')}")
print(f"SHA512: {x509.digest('sha512').decode('utf-8')}")
#print 'Valid from: {}'.format(x509.get_notBefore())
#print 'Valid until: {}'.format(x509.get_notAfter())
print(f"Valid from: {x509.get_notBefore().decode('utf-8')}")
print(f"Valid until: {x509.get_notAfter().decode('utf-8')}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment