Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: CL | DM;

Вниз

Помогите разобраться с WinPcap   Найти похожие ветки 

 
GM_   (2002-06-18 09:20) [0]

При установке фильтра с помощью PacketSetBpf для каждого покета я получаю lpPacket->ulBytesReceived равное нулю
(без установки фильтра всё работает как положено)
Я пытаюсь поставить фильтр таким образом:
(обработку ошибок вырезал для краткости)
struct bpf_program fp;
struct NetType nt;
lpAdapter =PacketOpenAdapter(AdapterList[Number]);
PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS);
PacketSetBuff(lpAdapter,512000);
PacketSetReadTimeout(lpAdapter,1000);
fstr="tcp";
PacketGetNetType(lpAdapter,&nt); // эти 4е строчки
PacketGetNetInfo(AdapterList[Number],&ip,&netmask); // для установки
pcap_compile_nopcap(1514,nt.LinkType,&fp,fstr,1,netmask);// фильтра
PacketSetBpf(lpAdapter,&fp); // пакетов
lpPacket = PacketAllocatePacket();
PacketInitPacket(lpPacket,(char*)buffer,256000);
while(1)
{
PacketReceivePacket(lpAdapter,lpPacket,TRUE)
printf("%d\n",lpPacket->ulBytesReceived)
}

Если например закоментировать PacketSetBpf то я получаю много лишних пакетов, но lpPacket->ulBytesReceived равен размеру полученого пакета (как и должно быть)
Подскажите кто-нибудь в чём проблема


 
МИФИст ©   (2002-06-18 12:21) [1]

Попробуй fstr = "ip proto tcp";


 
МИФИст ©   (2002-06-18 16:24) [2]

Ты пробовал запускать свою прогу без прав Администратора? У меня не видит адаптеров. Интересно как это обойти.


 
GM_   (2002-06-18 23:16) [3]

сама строка фильтра не имеет значения, можно и так
она на любой мой фильтр ничего не получает
я понял почему ulBytesReceived - 0, функция по таймауту возвращается
но проблема всё равно осталась, если я не ставлю таймаут, то функция просто не возвращает управление, хотя пакеты, попадающие под фильтр по сети идут
З.Ы. без прав все работает отлично (если не ставить фильтр :) )


 
МИФИст ©   (2002-06-19 00:05) [4]

А ты не хочеш сам фильтр сделать? Просматривай приходящие заголовки нужные сохраняй, на остальные забивай. У тебя сетевуха или модем?


 
GM_   (2002-06-19 00:26) [5]

самому фильтр - ооочень тормозно работать будет...


 
МИФИст ©   (2002-06-19 19:40) [6]

Кстати, мне сейчас тоже нужно фильтр использовать =)
Ты не делал генератор пакетов?
Интересно, что за глюк захожу без прав Админа и не видно адаптеров. =(


 
GM_   (2002-06-20 22:52) [7]

To МИФИст
генератор пакетов делал
прогу с фильтром периписал используя wpcap.dll, работает нормально
с packet.dll я вероятно какиенить парам-ры неправитьно указал (плохо что не знаю какие)
про права админа: попробуй последнюю версию winpcap скачать


 
МИФИст ©   (2002-06-21 22:07) [8]

У меня версия 2.3, а у тебя?

Как ты посылаешь сформированные пакеты?
Я так, но что глючит: Violation и синий экран.

function SendPacket(Pack: PChar; PackSize: Integer): Boolean;
begin
Result:=False;
NewPacket:=PacketAllocatePacket;
PacketInitPacket(NewPacket,@Pack,PackSize);
if PacketSendPacket(FPCAP.Adapter,NewPacket,True) then
Result:=True;
PacketFreePacket(NewPacket);
end;


 
GM_   (2002-06-21 22:37) [9]

у меня тоже 2.3
if((lpPacket = PacketAllocatePacket())==NULL){//делаю инициализацию 1 раз в начале программы
printf("Failed to allocate the packet structure\n");
exit(-1);}
if (!PacketSendPacket(((struct pcap *)fp)->adapter,lpPacket,true)){//делай в программе много раз
printf("Error SendPacket\n");
exit(-1);}
PacketFreePacket(lpPacket);//делаю один раз в конце программы


 
GM_   (2002-06-21 22:39) [10]

и забыл ещё
PacketInitPacket(lpPacket,packetbuff,Snaplen)
каждые раз перед PacketSendPacket


 
МИФИст ©   (2002-06-21 23:38) [11]

Что то я не вижу разницы, а почему же у меня не работает? И что за глюк с Админом, причём под 98 всё пашет в локалке, а под 2000 нужно заходить админом.



Страницы: 1 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-3442
Vogus
2002-08-20 12:24
2002.09.02
MDI формы и объекты управления


4-3667
FRecon
2002-06-30 01:43
2002.09.02
SendMessage


4-3677
Max2000
2002-06-28 13:55
2002.09.02
Мастера!!! Подскажите как это сделать на API? Без TCanvas?


6-3545
Lina
2002-06-24 15:42
2002.09.02
Может кто-нибудь работал с функцией NetShareAdd ?


14-3589
dial@uupops.net
2002-08-06 20:01
2002.09.02
Что такое hInstance