RAW Sniffer

0

Dawno temu napisałem własny sniffer z raw sockets, wszystko działało idealnie na win xp ale teraz gdy zainstalowałem win 7 po uruchomieniu programu jako administrator i tak sniffer odbiera tylko wysyłane pakiety przez mój komputer, przychodzących niestety nie, i teraz chciał bym zapytać czy jest jakąś możliwość aby na win 7 mógł czytać te pakiety?

0

Nie rozumiem zabardzo twojego pytania, ale sprawdz czy firewall nie blokuje twojej aplikacji, albo połączenia. Ewentualnie możesz jeszcze spróbować zresetować Winsock przez Wiersz Poleceń jako Administrator.

0

ok to inaczej, mam win 7 i napisałem dwa sniffery jeden raw sockets a drugi z pomocą winpcap i ten z raw dostaje tylko pakiety wychodzące a przychodzących nie, ten sam sniffer na win XP dostaje je wszystkie, a sniffer z winpcap na obu systemach odbiera wszystkie pakiety, i nie wiem czemu raw socket nie otrzymuje tych przychodzących pakietów na win 7

0

doczytaj dokumentacje na MSDN, niestety nie wszytsko z RAW dziala ze wzgledow polityki bezpieczenstwa ... generalnie jest straszne zamieszanie nawet SP robia roznice .

0

Ja też mam snifer na raw (winsock) i tez mi nie dziala na win7
tylko że mi nic nie odbiera twój kod jest podobny:

//------------------------------------------------------------------------------
procedure TForm1.Seria;
var
RecvBuf : tpakiet;//bufor odbiorczy tpakiet
SizeRecvBuf : integer; //Size RecvBufora
dwBytesRet : cardinal;//ile bajtów przeczytano
lpvInBuffer : integer;
j, l : integer;
begin
for j:=0 to cmiod do FillChar(scan[j].pudp,cmwp, 0);
j:=0;
WSAIoctl(sock, SIO_RCVALL, @lpvInBuffer, sizeof(lpvInBuffer), nil, 0, dwBytesRet, nil, nil);
SizeRecvBuf:=sizeof(RecvBuf); FillChar(RecvBuf,SizeRecvBuf, 0);
while (aps^=1) do
begin
l:=recv(sock, RecvBuf, SizeRecvBuf, 0); //czytanie z gniazda
if (RecvBuf[21]=#161) then
begin
inc(j);
scan[j].kpl:=Now;
scan[j].pudp:=RecvBuf;
scan[j].lpudp:=l;
end;
end; //while aps^=1

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Top:=100;
Form1.Left:=400;
ise:=1; bp:=1;
PrzeczytajIni;
LibHandle := LoadLibrary('ws2_32.dll'); //dynamiczne ladowanie biblioteki i funkcji
WSAIoctl := GetProcAddress(LibHandle, 'WSAIoctl');
WSAStartup(MAKEWORD(2,1),wsd);
sock := socket(AF_INET, SOCK_RAW,IPPROTO_IP); //IPPROTO_IP , IPPROTO_RAW
sa.sin_family := AF_INET;
sa.sin_port := htons(6000);
sa.sin_addr.S_addr := inet_addr(PChar(IpIntf));
bind(sock, sa, sizeof(sa));

1 użytkowników online, w tym zalogowanych: 0, gości: 1