Skip to content

Instantly share code, notes, and snippets.

@damoxc
Created June 22, 2012 09:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save damoxc/2971524 to your computer and use it in GitHub Desktop.
Save damoxc/2971524 to your computer and use it in GitHub Desktop.
Naive BEAST vulnerability checker
import ssl
import socket
import argparse
PASS = '\033[92m'
FAIL = '\033[91m'
ENDC = '\033[0m'
parser = argparse.ArgumentParser()
parser.add_argument('hostname', type=str, action='store')
parser.add_argument('port', type=int, action='store', nargs='?', default=443)
args = parser.parse_args()
print '=' * 80
print 'SSL/TLS BEAST Vulnerability checker'
print '=' * 80 + '\n'
print 'Target: %s:%d' % (args.hostname, args.port)
s = socket.socket()
s.connect((args.hostname, args.port))
ss = ssl.wrap_socket(s)
cipher, sslver, bitlen = ss.cipher()
if 'RC4' in cipher:
msg = PASS + 'NOT vulnerable to BEAST attack' + ENDC
vuln = PASS + 'NO' + ENDC
else:
msg = FAIL + 'PRONE to BEAST attack.' + ENDC
vuln = FAIL + 'YES' + ENDC
print '\n## %s ##\n' % msg
print 'Protocol: %s' % sslver
print 'Preferred Cipher: %s' % cipher
print 'Vulnerable: %s' % vuln
@leoschmitz
Copy link

cool code. still useful after all these years.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment