Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
Доброе утро. Если кто-нибудь это делал в фоксе, откликнитесь, пожалуйста.

Поставлена следующая задача. Сторонний производитель написал программу, которая с определенной периодичностью по сети обращается к базе данных, и выполняет определенную функцию. Делает она это круглосуточно. Недостаток в том, что прога работает нестабильно. Происходят зависания при потери связи с сервером, или, что еще хуже, визуально она работает, но не выполняет то что должна. А дорабатывать ее никто не будет. В подробности не залезаю. Я нюхал пакеты и определил несколько критериев, по которым можно определить начало глюков этой проги. Поставлена задача, сигнализировать об этом диспетчеру.

В этом суть моих проблем. Есть ли какие-нить библиотеки, позволяющие слушать пакеты? Скиньте ссылочку.

Заранее благодарен
28 июн 11, 09:21    [10884747]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
toreto
Member

Откуда:
Сообщений: 15
Korolyov,

В фоксе я новичек, как ты написал пропадает связь с сервером. визуально она и будет работать, может все зависит от сервера?
28 июн 11, 09:36    [10884801]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
Может с сервером, может с сетью. Может быть масса причин потери сессий. Доступ к серверу осуществляется через инет. Естественно и прога и сервер для меня черные ящики. Единственное что я могу сделать, проанализировать пакеты и перезагрузить прогу или переинициализировать ее (там есть кнопка). Суть задачи, сделать это своевременно )))
28 июн 11, 09:41    [10884817]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
может быть кто-нить юзал PACKET.DLL оболочки WinPcap? Ткните носом в описание. Не могу найти
28 июн 11, 11:05    [10885271]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
toreto
Member

Откуда:
Сообщений: 15
Библиотека 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 июн 11, 11:11    [10885330]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
ссылку, спасибо
28 июн 11, 11:45    [10885615]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
Нашел ссылку, информации море. Примеры на С. Хотелось бы образец использования wpcap в фоксе. )))
28 июн 11, 15:05    [10887094]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
toreto
Member

Откуда:
Сообщений: 15
http://www.cherepovets-city.ru/insecure/reading/papers/packet_dll.htm
28 июн 11, 17:16    [10888268]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Dima T
Member

Откуда:
Сообщений: 15302
Korolyov
Нашел ссылку, информации море. Примеры на С. Хотелось бы образец использования wpcap в фоксе. )))

Фокс не заточен на низкоуровневые операции, для этого Си есть или Паскаль, на этих языках такое гораздо проще писать.
28 июн 11, 17:17    [10888279]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
Я это прекрасно понимаю. Но на С не пишу. Можно на java, но там с инсталляцией сложности. Виртуалмашину ставить нужно. Хотелось бы на моем родном фоксе )))
28 июн 11, 17:41    [10888456]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
toreto
Member

Откуда:
Сообщений: 15
Я вообще то ссылку на С++ не давал, ссылка на Фокс. Не нуно осуждать
28 июн 11, 18:57    [10888859]     Ответить | Цитировать Сообщить модератору
 Re: Снифферинг в VFP  [new]
Korolyov
Member

Откуда:
Сообщений: 70
Ни в коем случае не осуждаю. Информация действительно полезная. Но на фокс все же не очень похоже

#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 июн 11, 09:35    [10890673]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить