Расковырять базу в текстовый формат.

Тема в разделе "WASM.RESEARCH", создана пользователем slava2006, 24 окт 2005.

  1. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Имеется клиентская часть mmorpg, в которую непосредственно с сервера поступают данные.



    Очень хочется их накапливать и анализировать.

    (это данные по внутриигровому рынку)



    Судя по всему:

    1. Все они хранятся в промежуточных кеш-файлах.

    2. Существенная часть написана на питоне

    3. Возможно даже дебаг информация есть.

    4. Сам интерфейс писан под собственным фреймворком.



    Пробовал отладчики итп, но так как опыт именно в этой области нулевой, успеха достичь не удалось. (отладчик работает, проблем нет, банально не могу поймать нужное место :dntknw:).



    Кто-нибудь беде поможет ?



    Ложка дегтя - клиент занимает 500мб.

    их сайт:

    www[dot]eve-online[dot]com

    бесплатный двухнедельный триал:

    secure[dot]eve-online[dot]com/ft/?sk=TOMSHW





    Возможно, что удастся и просто по файлам понять, в чем загвоздка. Прилагаю парочку, изменено одно значение с 1,169 на 1,168 если не ошибаюсь.

    Тестовых примеров такого рода можно наделать сколько душе угодно, вопрос какие нужны ? Сам попробовал и так и сяк и наперекосяк... нет идей :dntknw:





    На всякий случай: будучи заказана подобная работа во что обойдется?

    [​IMG] 1089703360__0_0.zip
     
  2. gmlag

    gmlag New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    1
    не в ту степь копаешь

    имхо, гораздо проще перехватить поток сокетных пакетов и разбирать уже их - что-то вроде прокси

    таким же образом работают и "примочки" для других онлайновых игр - Ультиме, Линейке и пр.
     
  3. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Попробуем и так конечно, но есть у меня подозрение, что через сокеты я увижу тоже самое :) ибо какой смысл делать две функции ввода-вывода отдельно для сети и для файлов мне неведомо.



    Сам файл имеет вроде бы простую понятную структуру.

    Даже описание данных в нем присутствует видать.

    Вот только значения из него выковырнуть не удается :dntknw:
     
  4. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Чуть-чуть поснифал, ощущения неприятные :) тут я тоже не специалист, но с наскоку даже найти данных не удалось.
     
  5. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Выложи exe и dll если их немного. Если много, попробуй найти те, что пишут/читают файлы.
     
  6. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Там клиент на 500мб.

    Судя по всему используется питон и собственный фреймворк.

    Фреймворк 3.5мб и скомпилированных питон-скриптов 7.5мб...



    Похоже эта многоуровневость меня и "подрывает".
     
  7. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    PS. Все питон-скрипты собраны в 1 файл.
     
  8. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    slava2006



    Ну так выложи где-нибудь. Качать 500 метров картинок и озвучки как-то не тянет.
     
  9. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    dasm70@mail.ru

    пароль 111111

    лежит в инбоксе



    собственно экзешник, длл и сами скрипты скомпилированные.



    Как понять, что там где без отладки мне честно говоря неведомо, но мало-ли.

    Подозреваю, что все хранится гдето внутри MarketProxy объекта.
     
  10. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    И выгружается соответственно из него-же.

    (формат файлов бы понять... кеш-файлов)
     
  11. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Все еще актуально.

    Возникла идея, что это стандартный файл питона дл выгрузки структур на диск. Поэкспериментировал с питоном, результаты жалкие - файлы чтото не очень похожи, хотя некая связь просматривается.
     
  12. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Нашел функцию сериализации. Используется собственный формат. Попробую наваять чего-нибудь в ближайшие дни.
     
  13. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Вот скриптик, который успешно дампит твои два файла.

    Если есть возможность выполнять свои скрипты в игре, то можно использовать blue.marshal.Load(filename).

    Основной цикл парсера находится в blue.dll по адресу 10052CD0

    [​IMG] _803324643__dump_cache.py
     
  14. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Огромный спасибо.

    Чукча сегодня не вполне трезв поэтому дурак, и никак не может понять

    blue.DBRow[9efb70].__setstate__ ('\x1f\x7f\x1f\xb0\xad\x01\x00\xf7y@\xde\xff\x7f\x13\x1bO\x94\x08\x90\ x01\x01\xfcp\xa7k\x0e\xaa\xde\xf7\xc5\x01Z(\xc0\x93\x03\xf7\xab\x96\x9 8B\xd1\xc9\x01',)



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



    PS. Небольшое добровольное пожертвование по WMZ куда скинуть :) ? Интересно много времени было угрохано ?
     
  15. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    Тьфу... не во что, а чем :)
     
  16. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
  17. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    <дуп>
     
  18. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Если внимательно посмотреть на аргумент DBRowDescriptor:
    Код (Text):
    1. blue.DBRowDescriptor ((('price', 6), ('volRemaining', 5), ('typeID', 2),
    2. ('range', 2), ('orderID', 3), ('volEntered', 3),
    3. ('minVolume', 3), ('bid', 11), ('issued', 64),
    4. ('duration', 2), ('stationID', 3), ('regionID', 3),
    5. ('solarSystemID', 3), ('jumps', 3)),)


    то можно догадаться, что это набор имён полей и их типов.

    А аргумент DBRow.__setstate__() - это, очевидно, содержимое полей в формате, определяемом этим самым списком. К сожалению, эти классы реализованы в dll а не скриптах, поэтому расковырять их не так просто. Но, я думаю, скоро разберусь.
     
  19. slava2006

    slava2006 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2005
    Сообщения:
    16
    Адрес:
    Russia
    omg оно декомпилировалось.

    а эээ... как-нибудь все можно :) ? для общго развития.



    Есть ненулевая вероятность, что это просто pickle питоновских структур обычный. Я к сожалению в питоне как в балете :).

    Завтра на свежую голову попробую расследовать этот момент.
     
  20. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Там все и есть, что декомпилировались.

    А pickle формат там используется, но сверху ещё навороты.