![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Распаковка пакетов. [D5, D7, WinXP]
-=Demon=- © (2004-04-29 14:20:00)Ранее в приводимом здесь коде снифера бы ло рассмотрен тоько перехват. Но не подскажите мастера как распаковывать пришедшие данные я их распаковываю следующим образом
procedure WWW.FIcmp;
var
Tip,cod:integer;
Icmpheader:Picmp;
begin
Icmpheader:= PICMP(integer(@Buffer[IPHdrLen*4]));
sCod:=inttostr(Icmpheader.icmp_type);
sTip:=inttostr(Icmpheader.icmp_code);
SICMPID:=inttostr(Icmpheader.icmp_id);
snomer:=inttostr(Icmpheader.icmp_seq);
end;
procedure WWW.FTCP;
Var
SrcPortt,DstPortt:integer;
begin
SrcPortt:=TCPHeader((@Buffer[IPHdrLen*4])^).SrcPort;
SSrcPort :=Inttostr((SrcPortt AND $00FF shl 8) OR (SrcPortt AND $FF00 shr 8));
DstPortt:=TCPHeader((@Buffer[IPHdrLen*4])^).DstPort;
SDstPort :=Inttostr((DstPortt AND $00FF shl 8) OR (DstPortt AND $FF00 shr 8));
end;
procedure WWW.FUDP;
Var
SrcPortt,DstPortt:integer;
begin
SrcPortt:=TCPHeader((@Buffer[IPHdrLen*4])^).SrcPort;
SSrcPort :=Inttostr((SrcPortt AND $00FF shl 8) OR (SrcPortt AND $FF00 shr 8));
DstPortt:=TCPHeader((@Buffer[IPHdrLen*4])^).DstPort;
SDstPort :=Inttostr((DstPortt AND $00FF shl 8) OR (DstPortt AND $FF00 shr 8));
end;
.............
res:=recv(Sock, Buffer, SizeOf(Buffer), 0);
if res >= SizeOf(IPHeader) then
begin
Version:=inttostr((IPHeader((@Buffer)^).VerLen AND $F0) shr 4);
IPHdrLen :=IPHeader((@Buffer)^).VerLen AND $0F;
StTl:=Inttostr(IPHeader((@Buffer)^).TTL);
SIPHdrLen:=Inttostr(Res);
//Synchronize(Message7);
//Synchronize(Message9);
if IPHdrLen >= 5 then
begin
{----------------------------}
SrcIP :=IPHeader((@Buffer)^).IPSrc;
SIpSrt:=inet_ntoa(TInAddr(SrcIP));
//Synchronize(Message5);
DstIP :=IPHeader((@Buffer)^).IPDst;
SIpDst:=inet_ntoa(TInAddr(DstIP));
//Synchronize(Message6);
{Ïðîòîêîëû}
case IPHeader((@Buffer)^).Proto of
IPPROTO_ICMP: begin Protokol:='ICMP'; ICMP; end;
IPPROTO_TCP: begin Protokol:='TCP'; FTCP; end;
IPPROTO_UDP: begin Protokol:='UDP'; FUDP; end;
end;
Но а как дальше вытащить информацию. К примеру HTML код.
Заранее благодарен.
-=Demon=- (2004-04-30 01:06:00) [21]Мне не нужны форматы HTTP, FTP. Меня интересует как мне дальше достать информацию?
Piter (2004-04-29 18:53:00) [22]Читай описания форматов, HTTP, FTP ну и т.д.
Очень хороший снифер Ethereal - знает туеву хучу форматов