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

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


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

Здравствуйте, пишу я программу для получения статистических данных по взаимодействию компютеров между собой, тоесть к примеру необходимо узнать какие компютеры с какими взаимодействуют, сколько между собой данных передают ..., но это всё не очень сложно, сложность пока заключается в том чтобы получить пакет из сети. Тоесть я установил необходимый драйвер, 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
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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