Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Анализатор трафика


Рекомендуемые сообщения

Здравствуйте, пишу я программу для получения статистических данных по взаимодействию компютеров между собой, тоесть к примеру необходимо узнать какие компютеры с какими взаимодействуют, сколько между собой данных передают ..., но это всё не очень сложно, сложность пока заключается в том чтобы получить пакет из сети. Тоесть я установил необходимый драйвер, winpcap, подключил необходимые хидеры и либы.

У меня в программе уже есть определение сетевыех карт. перевод карты в реждим чтени всех пакетов и получение длины пакета, но самого пакета нету, я делаю таким образом

#include "h/pcap.h"struct lan_ad			   // структура для хранения адаптеров{char *adapter;		 //описание адаптераchar *name;			//имя адаптераbpf_u_int32 mask,Net;};pcap_t *fp;  char *data;char error[PCAP_ERRBUF_SIZE];int len;struct lan_ad net[5];void packetHandler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) //обработка принятых пакетов{head=header->len;}__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) //при загрузке формы получаем имена и информацию про адаптеры{pcap_if_t *alldevs,*d;int inum=0,i;i=pcap_findalldevs(&alldevs,error);ComboBox1->Clear();for(d=alldevs;d;d=d->next)					 // выводим информацию на экран	{	net[inum].name=d->name;	net[inum].adapter=d->description;	pcap_lookupnet(d->name,&net[inum].Net,&net[inum].mask,error);	ComboBox1->Items->Add(net[inum].adapter);	inum++;	}len=inum;}void __fastcall TForm1::Button1Click(TObject *Sender) //получаем пакеты{char *filter=NULL;struct bpf_program fcode;fp=pcap_open_live(net[ComboBox1->ItemIndex].name,0,1,20,error);pcap_loop(fp,1,packetHandler,NULL);}

в функцие packetHandler третий параметр это ссылка на пакет. Для того чтобы получитьп акетт его необходимо конвертирвоать в структуру, а есть ли какойто способ получить просто пакет потоком в виде:

00 18 f3 5b f4 b9 00 e0  4e 09 c3 d4 08 00 45 0000 28 d2 c1 40 00 80 06  cd dc ac 0a 01 0f ac 0a01 0e 1f 90 06 aa f7 ca  f6 92 e6 42 ce 47 50 10fb b4 90 cb 00 00 00 00  00 00 00 00

как можно получить это с помощью вышеописанной функции или каким либо другим способом, используя только компоненты winpcap

P.S. Для разработки использую CodeGear Rad Studio 2007 c++

Изменено пользователем Delphi
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...