[Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Как можно пакеты, видимые после декодирования Пандорой дамп файла, сохранить текстом?
Добавлено через 10 часов 44 минуты
Судя по тишине в ответ, такой возможности нет Что ж, наверное остается только выдирать дамп памяти процесса Панды и уже его сохранять. А дальше извлекать расшифрованные пакеты из него...
Ведь иногда может понадобиться обрабатывать большое число пойманных пакетов. По этому, если кто-то пишет подобные проги - включайте возможность сохранения инфы...
Последний раз редактировалось Vampire2015; 22.09.2015 в 15:23.
Причина: Добавлено сообщение
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Интересно спросить - а зачем это надо?
Сколько не работаю с пандорой - сохранение в файл ни разу не требовалось. Декларацию написал, сохранил, проверил на нескольих пакетах - потом пишешь код.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]-cофт и прочее для комфортной игры в PW.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
а зачем это надо?
Пробежался по серваку, наловил тучу пакетов Пандорой. После хочу все нужные собрать и обработать)
Сам отлавливать без Панды еще не дорос В общем пока копирую их извращенным способом путем автоматизации нажатий клавиш (копи-пастом в блокнот из Пандоры) Вот сейчас, думаю написать обработчик дампа памяти, ибо слишком долго копировать "вручную"
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Написал парсинг памяти процесса Пандоры. Однако это неудачный способ вытащить раскодированные пакеты - не все они сразу находятся в памяти...
Остается или расшифровывать лог пакетов - DataLog.d или в ahk писать скрипт поштучного копирования (однако с контролем каждого шага, чтоб повысить скорость, избежав сбои. А это тож надо повозиться)
Третий вариант - декомпилить Пандору и попытаться добавить сохранение...
Пандора в принципе толково написана, учитывая, что почти не обновлялась. Баги встречаются несущественные (напр PacketTree может перекрывать recognizedTree и переключаясь на следующий пакет всякий раз нужно скроллить окошко, чтобы увидеть названия и тип полей...)
На мелкие недочеты можно не обращать внимание, но невозможность сохранять раскодированные пакеты, делает прогу функционально урезанной.
Последний раз редактировалось Vampire2015; 24.09.2015 в 16:42.
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
Написал парсинг памяти процесса Пандоры.
Ничего более гениального не слышал ))
Цитата:
Третий вариант - декомпилить Пандору и попытаться добавить сохранение...
этот решение не намного лучше предыдущего. пандора накрыта аппфускатором, даже если вы сможете сделать дамп, то получите кучу непонятной для вас информации, на которую вы убьете еще кучу времени
Цитата:
Остается или расшифровывать лог пакетов - DataLog.d
Это как по мне Лучший вариант, все пакеты там аккуратно сложены по порядку, все что от вас требуется это взять SmKey и CMKey и дальше расшифровывать их по порядку. На этот парсер убить час времени для написания.
Цитата:
Пробежался по серваку, наловил тучу пакетов Пандорой. После хочу все нужные собрать и обработать)
Не понял в чем разница, заносить их текст или смотреть в пандоре, причем уже очень много пакетов декларировано и зачем заного разбирать эти массивы байт
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Может быть я упустил чего, но пандора умела сохранять дампы снятого трафика в специальные файлы, которые потом же и умела открывать.
Что мешает как вам нужно побегать по серверу, пособирать пакеты, а потом просто обработать именно те, что вам нужны применяя фильтры?
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Быстрое снятие и загрузка скриншотов на хостинг.
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
Бред какой-то. Свой снифер напиши - там делать нехер.
Слишком уж громкое заявление, тебе не кажется?
________________ Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115
[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот [Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
Слишком уж громкое заявление, тебе не кажется?
Ну по сути там и вправду все просто. На прослушку поставить и через Proxifier передавай в программу пакеты. Тупо для вывода пакетов, ничего другого
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
пандора умела сохранять дампы снятого трафика в специальные файлы, которые потом же и умела открывать.
Да, умеет. Но открыв пакеты, пользователю может понадобится эти данные обработать. И не вручную! Т.е. после того, как Она открыла-декодировала, необходима возможность их сохранить.
Цитата:
На прослушку поставить и через Proxifier передавай в программу пакеты. Тупо для вывода пакетов, ничего другого
Да, идея толковая, и в принципе, хорошо расписана, хотя реализовать ее не каждому легко и просто. (Конкретно мне бы пришлось серьезно и долго повозиться.)
И все же - прогу лучше писать так, чтоб ею как можно чаще пользовались. Была неотъемлемым инструментом. Чтоб была не демо-версией, где можно только вручную полазать, да посмотреть...
И еще, желательно, чтоб у пользователей не возникало желания писать ее самому :P (Учитывая, что и не каждому это просто)
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
И все же - прогу лучше писать так, чтоб ею как можно чаще пользовались. Была неотъемлемым инструментом.
я до сих пор если честно не понял, чем вас не устроила Пандора, она так же ловит пакеты, но зачем их сохранять в текстовом виде, если они зашифрованы, да и их размер порой очень большой, так что пока я не могу уловить ход ваших мыслей
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
так что пока я не могу уловить ход ваших мыслей
Без проблем) Мне не сложно еще раз объяснить
я нубас и точно не знаю как Панда функционирует, а именно как перенаправляются потоки проксифером и самой Пандорой. Но результатом ее работы является дамп файл, в который она, почти в реал-тайме, сохраняет весь стрим пакетов.
Итак, все пакеты от сервера к клиенту и обратно, хранятся в файле. Затем открывается этот файл и Панда его расшифровывает, ибо они хранятся в исходном зашифрованном виде. Декодировав, Она их наглядно отображает. Виден каждый пакет, оп-код и данные, которые можно просматривать.
Необходима возможность сохранять это в файл. Все пакеты или (желательно) с возможностью выбора по коду. Далее этот файл уже может передаваться другой проге, которая сможет обрабатывать сохраненные пакеты.
И еще раз - Пандора сохраняет пакеты в дамп. Затем расшифровывает и отображает, но без возможности эти расшифрованные пакеты сохранить.
К примеру, что нужно мне - сохранить в файл все пакеты по определенному оп-коду.
______________
1)Можно было бы пытаться самому раскодировать файл дампа, в котором Пандора сохраняет зашифрованный стрим. Но эт надо знать структуру хранения.
2)Вами было предложено самому отлавливать пакеты от Проксифера. Т.е. реализовать свой вариант Пандоры. Но это я бы не потянул, ибо не знаю точно как Она функционирует.
Сейчас приходится делать так: открываю пандорой дамп-файл, сортирую по типу пакетов. Затем ahk скриптом копи-пасчу нужного типа пакеты (их hex содержимое) в текстовый файл. А далее уже могу его обрабатывать.
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
специально для вас убил свое время и с помощью обычного HexEditor разобрал структуру записи пандоры в файлы дампа
разделение идет 2 частями: между сессиями и между пакетами в этих сессиях.
небольшие примеры
Код:
4e 84 cb 16 01 00 00 00 01 00 00 00 00 14 0f 03 3b b0 09 41 f2 48 71 03 00 00 00 00 88 9e c4 3d 34 00 00 00
04 00 00 00 00 ce 25 5b 3e 01 01 00 00 00 00 00 00 00 b0 09 41 f2 48 71 03 01 00 00 00 92 b9 c8 3d 34 00 00 00
02 00 00 00 00 eb db ce 3d 1c 00 00 00
Что это за части:
1) Самое начала дампа с дополнительными данными о сессии и пакете
2) Конец одной сессии и начало записи новой
3) Данные о входящих/исходящих пакетах
Разберем по частям первый блок:
4e 84 cb 16 01 00 00 00 - ReadBytes(8) // данные не меняются ни в одном из дампов
01 - Тип пакета (1 - Begin, 4 - End) начинает новую сессию
00 00 00 00 - Номер новой начатой сессии (отсчет с нуля)
14 0f 03 3b - ReadBytes(4) // Время начала записи
b0 09 41 f2 - IP сервера, каждый байт отвечает за часть адреса *.*.*.* (176.9.65.242) Это в моем случае
48 71 - Port (29000)
03 - Тип пакета ( 3 - S2C, 2-C2S, 1 - Begin, 4 - End) В этом случае 3, то есть от сервера к клиенту поступил пакет
00 00 00 00 - Номер сессии или блока пакетов (отсчет с нуля)
88 9e c4 3d - Время прибытия пакета
34 00 00 00 - Размер пакета
Дальше следует сам пакет 0x01 ServerInfo
И так самое начало мы разобрали, если в виде кода то вот так:
Код:
ReadBytes(8);
Type = ReadByte();
SessionId = ReadInt32();
Unknown = ReadBytes(4);
IP = ReadBytes(4);
Port = ReadUInt16();
Type = ReadByte();
SessionId = ReadInt32();
Time = ReadTime32();
Length = ReadInt32();
Packet = ReadBytes(Length);
Перейдем ко 2 блоку(Он возникает уже после того, как сессия завершится):
04 - Type (Как и писал выше 4 - End, то есть указывает, что сессия завершена)
00 00 00 00 - Номер завершенной сессии
ce 25 5b 3e - Время завершения
01 - Тип означающий начало новой сессии
01 00 00 00 - Номер новой сессии, как видишь теперь 1
00 00 00 00 - Неверно записанное время(видимо не удалось считать)
b0 09 41 f2 - IP
48 71 - Port
03 - Тип пакет (Входящий)
01 00 00 00 - Номер сессии
92 b9 c8 3d - Время поступления пакета
34 00 00 00 - Длина пакета
Думаю код писать под него не надо, ибо он почти идентичен первому.
И так последний блок(Он разделяет сами пакеты в сессии)
02 - Тип пакета(2 - от клиента к серверу, то есть исходящий)
01 00 00 00 - Номер сессии
eb db ce 3d - Время отправки
1c 00 00 00 - Размер
Ну и код, хоть он такой же как и прочие
Код:
Type = ReadByte();
SessionId = ReadInt32();
Time = ReadTime32();
Length = ReadInt32();
Packet = ReadBytes(Length);
Вообщем вот, думаю я решил вашу проблему, теперь написать парсер 20 минут делов
Может и в дальнейшем еще кому пригодится
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Re: [Pandoras Box] Есть ли способ сохранять распознанные пакеты в текстовом виде?
Цитата:
специально для вас убил свое время и с помощью обычного HexEditor разобрал структуру записи пандоры в файлы дампа
Ну да) там ничего сложного не было.
Вот почти оригинальная структура и парсер:
Описание структуры файла:
Код:
using System.Collections.Generic;
using System.IO;
namespace PandorasBox.Core
{
public abstract class Fragment
{
public byte FragmentId { get; set; }
public uint ConnId { get; set; }
public float Time { get; set; }
public abstract void Write(BinaryWriter writer);
public abstract void Read(BinaryReader reader);
}
public class FragmentData : Fragment
{
public bool IsC2S { get; set; }
public byte[] Data { get; set; }
public FragmentData()
{
}
public FragmentData(bool isC2S)
{
IsC2S = isC2S;
FragmentId = IsC2S ? (byte)0x2 : (byte)0x3;
}
public FragmentData(bool isC2S, byte[] data)
{
FragmentId = isC2S ? (byte)0x2 : (byte)0x3;
Data = data;
}
public override void Write(BinaryWriter writer)
{
writer.Write(FragmentId);
writer.Write(ConnId);
writer.Write(Time);
writer.Write((uint)Data.Length);
writer.Write(Data);
}
public override void Read(BinaryReader reader)
{
ConnId = reader.ReadUInt32();
Time = reader.ReadSingle();
var dataLength = reader.ReadUInt32();
Data = reader.ReadBytes((int)dataLength);
}
}
public class FragmentConnection : Fragment
{
public float SessionTime { get; set; }
public long SessionSize { get; set; }
public uint Ip { get; set; }
public ushort Port { get; set; }
public FragmentConnection()
{
FragmentId = 0x1;
}
public FragmentConnection(uint ip, ushort port) : this()
{
Ip = ip;
Port = port;
}
public override void Write(BinaryWriter writer)
{
writer.Write(FragmentId);
writer.Write(ConnId);
writer.Write(Time);
writer.Write(Ip);
writer.Write(Port);
}
public override void Read(BinaryReader reader)
{
ConnId = reader.ReadUInt32();
Time = reader.ReadSingle();
Ip = reader.ReadUInt32();
Port = reader.ReadUInt16();
}
}
public class FragmentDisconnect : Fragment
{
public FragmentDisconnect()
{
FragmentId = 0x4;
}
public FragmentDisconnect(uint conId)
{
ConnId = conId;
FragmentId = 0x4;
}
public override void Write(BinaryWriter writer)
{
writer.Write(FragmentId);
writer.Write(ConnId);
writer.Write(Time);
}
public override void Read(BinaryReader reader)
{
ConnId = reader.ReadUInt32();
Time = reader.ReadSingle();
}
}
public class DumpFile : List<Fragment>
{
}
}
Чтение файла:
Код:
using System;
using System.IO;
namespace PandorasBox.Core
{
public static class DumpReader
{
public static DumpFile ReadDump(string filePath)
{
if (!File.Exists(filePath)) return null;
var result = new DumpFile();
using (var reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
{
if (reader.ReadUInt32() != 0x16CB844E) throw new InvalidOperationException("Invalid file format.");
if (reader.ReadUInt32() != 1) throw new InvalidOperationException("Invalid file version.");
while (true)
{
if (reader.BaseStream.Length == reader.BaseStream.Position) break;
Fragment fragment;
var fragmentId = reader.ReadByte();
switch (fragmentId)
{
case 0x1:
fragment = new FragmentConnection();
break;
case 0x2:
fragment = new FragmentData(true);
break;
case 0x3:
fragment = new FragmentData(false);
break;
case 0x4:
fragment = new FragmentDisconnect();
break;
default:
throw new InvalidOperationException("Unknown data fragment.");
}
fragment.Read(reader);
result.Add(fragment);
}
reader.Close();
return result;
}
}
}
}
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Быстрое снятие и загрузка скриншотов на хостинг.