Part.met file
From AMule Project FAQ
Simple and uncomplete parsing script:
#!/usr/bin/python
import sys;
import struct;
def printTag(fichero):
(type,)=struct.unpack('B',fichero.read(1));
(lenname,)=struct.unpack('H',fichero.read(2));
name="";
if (lenname == 1):
name = "0x%02X" % (struct.unpack('B',fichero.read(1)));
elif (lenname == 2):
name = "0x%02X%02X" % (struct.unpack('2B',fichero.read(2)));
else:
name = fichero.read(lenname+0);
print "%u\"%s\";" % (lenname,name),
if (type == 0x00):
print "0x00 ????: ",name,
elif (type == 0x01):
print "0x01 HASH"
elif (type == 0x02):
print "0x02 String:",
(strlen,) = struct.unpack('H',fichero.read(2));
str = fichero.read(strlen);
print "%u\"%s\"" % (strlen,str);
elif (type == 0x03):
print "0x03 DWORD: %u" % struct.unpack('I',fichero.read(4))[0]
elif (type == 0x04):
print "0x04 FLOAT"
elif (type == 0x05):
print "0x05 BOOL"
elif (type == 0x06):
print "0x06 BOOLARRAY"
elif (type == 0x07):
print "0x07 BLOOB"
else:
print "0x%02X !!!!" % type
fichero = open(sys.argv[1],"r");
(leido,) = struct.unpack('B',fichero.read(1));
print "Header: %02X" % (leido)
(leido,) = struct.unpack('I',fichero.read(4));
print "Fecha: %d" % leido
leido = fichero.read(16)
print "Hash: ",
#for i in range(16):
sys.stdout.write("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\n" % (struct.unpack('16B',leido)));
(leido,) = struct.unpack('H',fichero.read(2));
print "Hash parciales: %u" % leido
for i in range(leido):
print "\t[%u]:" % i,
print "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X" % (struct.unpack('16B',fichero.read(16)));
(leido,) = struct.unpack('I',fichero.read(4));
print "Etiquetas: %u" % leido
for i in range(leido):
print "\t[%u]:" % i,
printTag(fichero)