воскресенье, 24 июня 2012 г.

python pickle search (WoTReplay files)

провел небольшой анализ распакованных файлов реплеев.
В этих файлах содержаться сохраненные pickle данные их примерно(!) можно найти по сигнатуре 80 02
я решил  читать файл со смещением один байт и пробовать загрузить pickle данные, чтобы найти все сохраненные таким образом объекты.

import pickle
def unpickle(file):
    f = open(file,'rb')
    g = 0
    seg = f.tell()
    bb = f.read()
    while bb != b'' :
        seg += 1
        f.seek(seg+1)
        try:
            o = pickle.loads(bb)
            g += 1
            print g, hex(int(seg)-2)
            print o print "\n---------------------\n"
        except:
            pass
        bb = f.read()
unpickle("unpack.wotreplay")
Этот python скрипт будет искать все pickle данные в файле. про сигнатуру выше написано не совсем верно.

7 комментариев:

  1. http://world-of-tanks.livejournal.com/3902654.html

    =) Всё ж давно написано. Сдается мне, что распарсит и обсчитает оно из распакованного файлика всё так же как и из старых не пакованных реплеев.

    Разве что этот скрипт изначально не распарсивает _всю_ содержащуюся в реплее инфу. Но это уже другая тема.

    А за алгоритм и ключик, спасибо. =) Думаю пригодится.

    ОтветитьУдалить
    Ответы
    1. Речь идет совсем не о том чтобы разобрать текстовый JSON заголовок репелея, инфы по нему дофига.
      А вот реплея где МС1 ваншотом убивает мауса или иса7 я ещё не видел... пока не видел...

      Удалить
    2. А я где-то упоминал про JSON заголовок? ;)
      Тот скрипт парсит бинарный непакованный реплей, еси че =)

      Удалить
    3. Сори тогда толком не посмотрел, действительно тот скрипт парсит сырой старый реплей файл... авторам зачет. Ты случаем не один из авторов?

      Удалить
    4. Не. Я не автор скрипта. Авторы - команда wotreplays.ru

      Я автор http://world-of-tanks.livejournal.com/3076187.html
      =)

      Сейчас корпим с разработчиком WoTLogger'а над новой статой. Рандомно-клановой. =)

      Если твой интерес к ковырянию ресурсов WoT не ограничен созданием реплея с нагибом мышки МС'ом и есть желание и время применить имеющиеся навыки на что-то более полезное - могу скинуть тебе приглашение на закрытый форум dev.p4f.biz =) Мы там гнездимся совместно со ctocopok, vkv и прочими wotreplays'ами.

      Хотя последние типа уже бояре - и активность проявляют минимальную =)

      Удалить
    5. привет! я хочу вытащить координаты танков(трэки) из файла реплеев, в pickle частях я ее не нашел. есть идеи как ее достать?

      Удалить
    6. привет.
      Распакованный реплей файл весит 3-4Мб
      размер всех pickle объектов в файле около 100Кб
      остальное - это насколько я понял данные для движка BigWorld(http://www.bigworldtech.com/ru/) на котором вообщем-то танки и работают. Если чего получится напиши плиз. можно в личку.

      Удалить