|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Доброе утро. Если кто-нибудь это делал в фоксе, откликнитесь, пожалуйста. Поставлена следующая задача. Сторонний производитель написал программу, которая с определенной периодичностью по сети обращается к базе данных, и выполняет определенную функцию. Делает она это круглосуточно. Недостаток в том, что прога работает нестабильно. Происходят зависания при потери связи с сервером, или, что еще хуже, визуально она работает, но не выполняет то что должна. А дорабатывать ее никто не будет. В подробности не залезаю. Я нюхал пакеты и определил несколько критериев, по которым можно определить начало глюков этой проги. Поставлена задача, сигнализировать об этом диспетчеру. В этом суть моих проблем. Есть ли какие-нить библиотеки, позволяющие слушать пакеты? Скиньте ссылочку. Заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 09:21 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Korolyov, В фоксе я новичек, как ты написал пропадает связь с сервером. визуально она и будет работать, может все зависит от сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 09:36 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Может с сервером, может с сетью. Может быть масса причин потери сессий. Доступ к серверу осуществляется через инет. Естественно и прога и сервер для меня черные ящики. Единственное что я могу сделать, проанализировать пакеты и перезагрузить прогу или переинициализировать ее (там есть кнопка). Суть задачи, сделать это своевременно ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 09:41 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
может быть кто-нить юзал PACKET.DLL оболочки WinPcap? Ткните носом в описание. Не могу найти ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 11:05 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Библиотека PACKET.DLL Библиотека packet.dll представляет собой динамически загружаемую библиотеку, с помощью которой приложение пользователя взаимодействует с драйвером захвата пакетов. Функции библиотеки предназначены для упрощения процесса взаимодействия с драйвером и обеспечивают выполнение таких операций, как получение дескрипторов сетевых адаптеров, прием и передачу пакетов по сети, установку буферов и фильтров драйвера и т.д. Существует две версии библиотеки – для Windows 95/98/ME и Windows NT/2000, полностью совместимыx друг с другом. Таким образом, используя packet.dll, можно работать на всех версиях Windows без внесения каких-либо изменений в исходный код программ. Эта возможность позволила создать единую версию Libpcap для всех версий Windows. Структуры данных В библиотеке packet.dll описаны и используются следующие структуры данных: 1. Структура PACKET описывает принимаемый или передаваемый пакет. Состоит из следующих полей: · OVERLAPPED OverLapped – структура, описанная в DDK Windows, используется для поддержки синхронных вызовов драйвера · PVOID Buffer – указатель на буфер, содержащий пакет; · UINT Length – размер буфера; · PVOID Next – указатель на следующий пакет; · UINT ulBytesReceived – размер части буфера, содержащей «верные» данные; · BOOLEAN bIoComplete – показывает, содержит ли буфер «верные» данные после асинхронного вызова. 2. Структура ADAPTER содержит описание сетевого адаптера: · HANDLE hFile – указатель на дескриптор драйвера адаптера; · TCHAR SymbolicLink – строка, содержащая имя сетевого адаптера, открытого в данный момент. 3. Структура PACKET_OID_DATA используется для взаимодействия с сетевым адаптером при помощи OID-запросов и установки операций: · ULONG Oid – числовой идентификатор, определяющий тип запроса/установки операции, выполняемой адаптером при помощи функции PacketRequest (см. далее); · ULONG Length – длина поля Data; · UCHAR Data – данные, передаваемые адаптеру или принимаемые от него. 4. Структура bpf_insn содержит одиночную машинную инструкцию интерпретатора BPF, и используется для передачи программы фильтра драйверу: · USHORT code – содержит тип инструкции и режимы адресации; · UCHAR jt, UCHAR jf – содержат смещение к следующей инструкции при необходимости условного перехода по результатам выполнения текущей инструкции «истина» (jt) или «ложь» (jf); · int k – зарезервировано. 5. Структура bpf_program является указателем на программу BPF-фильтра и используется функцией PacketSetBPF для установки фильтра в драйвере: · UINT bf_len – размер программы-фильтра; · struct bpf_insn *bpf_insns – указатель на первую инструкцию программы. 6. Структура bpf_hdr описывает заголовок, используемый драйвером при передаче принятого пакета приложению: · struct timeval: tv_sec – дата захвата в стандартном формате UNIX (число секунд, начиная с 1/1/1970); tv_usec – микросекунды захвата; · UINT bh_caplen – длина снимка (захваченной порции данных); · UINT bh_datalen – реальная длина захваченного пакета; · USHORT bh_hdrlen – размер структуры bpf_hdr. 7. Структура bpf_stat используется для получения статистической информации о текущей сессии: · UINT bs_recv – число пакетов, принятых адаптером с момента начала сессии; · UINT bs_drop – число потерянных пакетов с момента начала сессии. 8. Структура NetType используется функцией PacketGetNetType для получения информации о типе текущего адаптера: · UINT LinkType – тип текущего сетевого адаптера; · UINT LinkSpeed – скорость адаптера в битах в секунду. Первые две структуры используются только драйвером, тогда как остальные были заданы в библиотеке Libpcap. Эта группа структур используется для выполнения таких операций, как установка фильтра или интерпретация данных, поступающих от драйвера. На самом деле для взаимодействия с приложениями драйвер использует синтаксис, схожий с синтаксисом BPF, поэтому формат этих структур одинаков. ТО ЧТО нашел. Дальше кидать? или ссылку? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 11:11 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Нашел ссылку, информации море. Примеры на С. Хотелось бы образец использования wpcap в фоксе. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 15:05 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
KorolyovНашел ссылку, информации море. Примеры на С. Хотелось бы образец использования wpcap в фоксе. ))) Фокс не заточен на низкоуровневые операции, для этого Си есть или Паскаль, на этих языках такое гораздо проще писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 17:17 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Я это прекрасно понимаю. Но на С не пишу. Можно на java, но там с инсталляцией сложности. Виртуалмашину ставить нужно. Хотелось бы на моем родном фоксе ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 17:41 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Я вообще то ссылку на С++ не давал, ссылка на Фокс. Не нуно осуждать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 18:57 |
|
Снифферинг в VFP
|
|||
---|---|---|---|
#18+
Ни в коем случае не осуждаю. Информация действительно полезная. Но на фокс все же не очень похоже #include <windows.h> #include <stdio.h> #include <conio.h> #include <time.h> #include "..\..\Include\packet32.h" //подключаем заголовочный файл библиотеки packet.dll // задаем переменные #define SIMULTANEOU_READS 10 #define MAX_ETHERNET_FRAME_SIZE 1514 #define Max_Num_Adapter 10 //максимальное число адаптеров // Prototypes void PrintPackets(LPPACKET lpPacket); // печать пакетов char AdapterList[Max_Num_Adapter][1024];// список адаптеров – по 1024 байт на адаптер int main(int argc, char **argv) { char packetbuff[5000];// буфер для данных пакета // указатель на структуру ADAPTER LPADAPTER lpAdapter = 0; // указатель на структуру PACKET LPPACKET lpPacket; int i,npacks,Snaplen; DWORD dwErrorCode; DWORD dwVersion; DWORD dwWindowsMajorVersion; // строки формата unicode (winnt) WCHAR AdapterName[512]; // строка, содержащая список сетевых адаптеров WCHAR *temp,*temp1; // строки формата ascii (win95) char AdapterNamea[512]; // строка, содержащая список сетевых адаптеров char *tempa,*temp1a; int AdapterNum=0,Open;// номер адаптера ULONG AdapterLength; // длина float cpu_time; printf("Генератор сетевого трафика v 0.9999\nCopyright 1999 Loris Degioanni (loris@netgroup-serv.polito.it)"); printf("\nОтправляет группу пакетов в сеть."); if (argc == 1){ printf("\n\n Параметры: tg [-i адаптер] -n число_пакетов -s размер"); printf("\n размер в пределах от 60 до 1514\n\n"); return -1; } AdapterNamea[0]=0; // инициализация переменной // получение параметров командной строки for(i=1;i<argc;i+=2){ switch (argv[i] [1]) { case 'i': sscanf(argv[i+1],"%s",AdapterNamea); break; case 'n': sscanf(argv[i+1],"%d",&npacks); break; case 's': sscanf(argv[i+1],"%d",&Snaplen); break; } } ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2011, 09:35 |
|
|
start [/forum/topic.php?fid=41&msg=37327632&tid=1584291]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 393ms |
0 / 0 |