program Project2;
{$APPTYPE CONSOLE}
uses
Windows,WinSock;
Function GetLocalIP : String;
Var WSAData: TWSAData;
P: PHostEnt;
Name: array[0..$FF] of Char;
Begin
WSAStartup($0101, WSAData);
GetHostName(Name, $FF);
P := GetHostByName(Name);
Result := inet_ntoa(PInAddr(P.h_addr_list^)^);
WSACleanup;
End;
procedure DoSnifer;
var
S:TSocket;
Adr:TSockAddr;
W:WSAData;
flag,count:integer;
a:array[0..262144] of byte;
f:Cardinal;
nw:Cardinal;
begin
WSAStartup(MakeWord(2,2),W);
S:=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
ZeroMemory(@Adr,sizeof(Adr));
Adr.sin_family:=AF_INET;
Adr.sin_addr.S_addr:=inet_addr(pchar(GetLocalIP));
bind(S,Adr,sizeof(Adr));
flag:=1;
ioctlsocket(S,$98000001,flag);
f := CreateFile('Log.txt',GENERIC_ALL,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
While true do
begin
count:=recv(S,A,sizeof(A),0);
if count > 0 then
WriteFile(f,a,count,nw,0);
end;
CloseHandle(f);
closesocket(S);
WSACleanup;
end;
var
id:cardinal;
thr:Cardinal;
begin
thr := BeginThread(nil,0,Addr(DoSnifer),nil,0,id);
Writeln('Press Enter To Exit');
readln;
end.