Форум: "Сети";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c