Sniffer i raw sockets

0

Chciałem napisać sniffera jednak z tego co znalazłem jest biblioteka winpcap,
ale żeby programu napisanego z nią działał trzeba mieć go zainstalowanego
dlatego przychodzę z pytaniem, jak można zrobić to bez tej biblioteki, może jakiś tutorial lub cokolwiek innego za każdą informacje będę wdzięczny

0

fajna strona tylko ze to pod linuxa jest, z skąd mógł bym ściągnąć te biblioteki typu sys/socket.h

0

Możesz pisać pod windowsem korzystając z tego sposobu:
http://beej.us/guide/bgnet/output/html/multipage/intro.html#windows
(ale nie wiem czy to działa!)
lub pewniejszy, ale ograniczający do kompilatora, sposób instalacji cygwina i kompilowania pod nim (albo jakieś IDE z niego korzystające, np. NetBeans).

Pozdrawiam.

0

znalazłem w sieci gotowy skrypt napisany z winsock tylko z funkcji WSAIoctl() wywala mi błąd 10022

tutaj są kody z błędami pochodzącymi z winsock: http://msdn.microsoft.com/en-us/library/aa450263.aspx

ale nic nie wywnioskowałem z tego

//
//  Id: lsniff_main.cpp 
// 
//  Author: Ciro  
//
//  Demonstrates how to put a socket in promiscuos mode
//
//  Usage: lsniff [ICMP|TCP]   
//
//  Refers to:  
//  http://www.ietf.org/rfc/rfc1700.txt?number=1700
//

#pragma warning( disable: 4996 )

#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma comment( lib, "ws2_32.lib" ) // linker must use this lib for sockets

// *** Prototypes
void translate_ip(DWORD _ip, char *_cip);
void decode_tcp(char *_packet);
void decode_icmp(char *_packet);
void get_this_machine_ip(char *_retIP);

// *** Defines and Typedefs

#define LS_HI_PART(x)  ((x>>4) & 0x0F)
#define LS_LO_PART(x)  ((x) & 0x0F)

#define LS_MAX_PACKET_SIZE 65535

#ifndef SIO_RCVALL
#  define SIO_RCVALL    _WSAIOW(IOC_VENDOR,1)
#endif

typedef struct _IP_HEADER_
{
   BYTE  ver_ihl;        // Version (4 bits) and Internet Header Length (4 bits)
   BYTE  type;           // Type of Service (8 bits)
   WORD  length;         // Total size of packet (header + data)(16 bits)
   WORD  packet_id;      // (16 bits)
   WORD  flags_foff;     // Flags (3 bits) and Fragment Offset (13 bits)
   BYTE  time_to_live;   // (8 bits)
   BYTE  protocol;       // (8 bits)
   WORD  hdr_chksum;     // Header check sum (16 bits)
   DWORD source_ip;      // Source Address (32 bits)
   DWORD destination_ip; // Destination Address (32 bits)
} IPHEADER;

typedef struct _TCP_HEADER_
{
   WORD  source_port;       // (16 bits)
   WORD  destination_port;  // (16 bits)
   DWORD seq_number;        // Sequence Number (32 bits)
   DWORD ack_number;        // Acknowledgment Number (32 bits)
   WORD  info_ctrl;         // Data Offset (4 bits), Reserved (6 bits), Control bits (6 bits)
   WORD  window;            // (16 bits)
   WORD  checksum;          // (16 bits)
   WORD  urgent_pointer;    // (16 bits)
} TCPHEADER;

typedef struct _ICMP_HEADER_
{
   BYTE type;               // (8 bits)  
   BYTE code;               // (8 bits)  
   WORD checksum;           // (16 bits)  
} ICMPHEADER;

// *********************************************************************
//                               main
// *********************************************************************
int main( int _argc, char *_argv[] )
{
	struct   sockaddr_in sock_sniff;
	SOCKET   sniff_socket = -1;
   WSAData  sa_data;  
   WORD     ver;
   IPHEADER *ip_header = NULL;
   int      optval = 1;
   DWORD    dwLen = 0;
   char     packet[LS_MAX_PACKET_SIZE];
   int      iRet = 0;
   int      ip_header_size = 0;
   char     ipSrc[20], ipDest[20], thisIP[20];
   BOOL     bShowTCP = TRUE, bShowICMP = TRUE;
 
   // Check arguments
   if ( _argc > 1 )
   {
      if ( !_stricmp(_argv[1], "icmp") )
         bShowTCP = FALSE;
      else if ( !_stricmp(_argv[1], "tcp") )
         bShowICMP = FALSE;
      else
      {
         printf( "\nUsage lsniff [ICMP|TCP]\n" );
         exit(0);
      }
   }

   // Init Windows sockets version 2.2   
   ver = MAKEWORD(2,2);
   WSAStartup(ver, &sa_data);

   // Get a socket in RAW mode
	sniff_socket = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
	if ( sniff_socket == SOCKET_ERROR )
	{
      printf( "Error: socket = %ld\n", WSAGetLastError() );
		exit(-1);
	}

   // Bind it
   memset( thisIP, 0x00, sizeof(thisIP) );
   get_this_machine_ip(thisIP);

	sock_sniff.sin_family = AF_INET;
	sock_sniff.sin_port = htons(0);
   // If your machine has more than one IP you might put another one instead thisIP value
	sock_sniff.sin_addr.s_addr = inet_addr(thisIP);
	
	if ( bind( sniff_socket, (struct sockaddr *)&sock_sniff, sizeof(sock_sniff) ) == SOCKET_ERROR )
	{
      printf( "Error: bind = %ld\n", WSAGetLastError() );
		exit(-2);
	}

   // Set socket to promiscuous mode
   // setsockopt wont work ... dont even try it
   <font color="red">if ( WSAIoctl( sniff_socket,
                  SIO_RCVALL,
                  &optval,
                  sizeof(optval),
                  NULL,
                  0,
                  &dwLen,
                  NULL,
                  NULL ) == SOCKET_ERROR )

	{
      printf( "Error: WSAIoctl  = %ld\n", WSAGetLastError() );
		exit(-3);
	}</font>

   while ( TRUE )
   {
      (void) memset( packet, 0x00, sizeof(packet) );

      iRet = recv( sniff_socket, packet, LS_MAX_PACKET_SIZE, 0 );
      if ( iRet < sizeof(IPHEADER) )
         continue;

      ip_header = (IPHEADER *)packet;

      // I only want IPv4 not IPv6
      if ( LS_HI_PART(ip_header->ver_ihl) != 4 ) 
         continue;

      ip_header_size = LS_LO_PART(ip_header->ver_ihl);
      ip_header_size *= sizeof(DWORD); // size in 32 bits words

      // Checks the protocol IP is encapsulating
      memset( ipSrc, 0x00, sizeof(ipSrc) );
      memset( ipDest, 0x00, sizeof(ipDest) );
      translate_ip(ip_header->source_ip, ipSrc);
      translate_ip(ip_header->destination_ip, ipDest);

      // Read http://www.ietf.org/rfc/rfc1700.txt?number=1700
      switch( ip_header->protocol )
      {
         case 1: // ICMP
            if ( bShowICMP )
            {
               printf("\n -------------------- // -------------------- ");
               printf("\n IP Header:");
               printf("\n   Source      IP: %s", ipSrc);
               printf("\n   Destination IP: %s", ipDest);
               printf("\n      ICMP Header:");

               decode_icmp(&packet[ip_header_size]);
            }
            break;

         case 6: // TCP
            if ( bShowTCP )
            {
               printf("\n -------------------- // -------------------- ");
               printf("\n IP Header:");
               printf("\n   Source      IP: %s", ipSrc);
               printf("\n   Destination IP: %s", ipDest);
               printf("\n      TCP Header:");

               decode_tcp(&packet[ip_header_size]);
            }
            break;

         case 17: // UPD
            break;

         default:
            break;
      }
   
   } // end-while

   return 0;
}

void get_this_machine_ip(char *_retIP)
{
   char host_name[128];
   struct hostent *hs;
   struct in_addr in;

   memset( host_name, 0x00, sizeof(host_name) );
   gethostname(host_name,128);
   hs = gethostbyname(host_name);

   memcpy( &in, hs->h_addr, hs->h_length );
   strcpy( _retIP, inet_ntoa(in) );
}

void translate_ip(DWORD _ip, char *_cip)
{
   struct in_addr in;

	in.S_un.S_addr = _ip;
	strcpy( _cip, inet_ntoa(in) );
}

void decode_tcp(char *_packet)
{
   TCPHEADER *tcp_header = (TCPHEADER *)_packet;
   BYTE flags = ( ntohs(tcp_header->info_ctrl) & 0x003F ); 

   printf("\n         source port      : %ld", htons(tcp_header->source_port));
   printf("\n         destination port : %ld", htons(tcp_header->destination_port));
   printf("\n         control bits     : ");

   if ( flags & 0x01 ) // FIN
      printf( "FIN " );

   if ( flags & 0x02 ) // SYN
      printf( "SYN " );

   if ( flags & 0x04 ) // RST
      printf( "RST " );

   if ( flags & 0x08 ) // PSH
      printf( "PSH " );

   if ( flags & 0x10 ) // ACK
      printf( "ACK " );

   if ( flags & 0x20 ) // URG
      printf( "URG " );

   printf("\n         sequence number  : %lu", ntohl(tcp_header->seq_number));
}

void decode_icmp(char *_packet)
{
   ICMPHEADER *icmp_header = (ICMPHEADER *)_packet;

   printf("\n         type: %d", icmp_header->type );
   
   switch ( icmp_header->type )
   {
      case 0:
         printf( " (echo reply)" );
         break;

      case 8:
         printf( " (echo request)" );
         break;

      default:
         break;
   }

   printf("\n         code: %d", icmp_header->code );
   printf("\n         code: %ld", icmp_header->checksum );
}

0

Wniosek jest taki, ze nie zabieraj sie za cos o czym nie masz zadnego pojecia, a co to za blad zobacz na msdn.

0

A to nie jest przypadkiem jakiś stary kod? Od czasu XP SP2 raw sockety mają nałożone ograniczenia, bo ich jedynym zastosowaniem jest robienie różnych zuych i niedobrych rzeczy, pewnie stąd problemy.

0
Świętowit napisał(a)

A to nie jest przypadkiem jakiś stary kod? Od czasu XP SP2 raw sockety mają nałożone ograniczenia, bo ich jedynym zastosowaniem jest robienie różnych zuych i niedobrych rzeczy, pewnie stąd problemy.

Na XP SP3 pojdzie, a na nowszych nie wiem. Co do tych ograniczen to niestety Windows nie daje zbyt duzego pola do popisu ;/

0

Hm, fakt, ograniczenia są bardziej konkretne - http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx - nie potrzebowałem się raw socketami bawić nigdy, pamiętam tylko jaki wrzask był po wejściu sp2. W każdym razie autor wątku powinien to doczytać.

0

t0m_k-tmp sam podałem link z kodami tych błędów wiec go czytałem chyba zrozumiale, gdybym się znal to bym nie pisał bo po co, wiec takie gadanie w niczym nie pomaga

słyszałem o ograniczeniach ale to nie o to chodzi to musi być inny powód bo próbowałem na sp2 i 3 na obydwóch to samo, a skoro tobie na sp3 poszło to mi też powinno

denerwujące to jest, tyle czasu tego szukam i nic

0
varens napisał(a)

t0m_k-tmp sam podałem link z kodami tych błędów wiec go czytałem chyba zrozumiale, gdybym się znal to bym nie pisał bo po co, wiec takie gadanie w niczym nie pomaga
słyszałem o ograniczeniach ale to nie o to chodzi to musi być inny powód bo próbowałem na sp2 i 3 na obydwóch to samo, a skoro tobie na sp3 poszło to mi też powinno
denerwujące to jest, tyle czasu tego szukam i nic

Mi poszedl moj kod, a nie ten ;p Dzialanie i sposob jego otrzymania jest ten sam co w tym kodzie, czyli bindowanie gniazdka, ioctl(SIO_RCV_ALL) oraz odczyt z gniazda w petli i filtracja.
Jakbys przeczytal to czym Świętowit zarzucil to bys wiedzial, ze nie ma ogarniczenia w odczycie kazdego pakietu przychodzacego na nasz interfejs w domenie PF_INET.
Najpierw pytasz sie jak zrobic sniffer nie wykazujac, zadnej inicjatywy i tylko uswiadamiajac innych, ze nie masz zadnego pojecia o gniazdach. Takich osob co kompiluja gotowe exp..., sniffery itd, nie chcac wiedziec o co chodzi jest na peczki i ciut wiecej, wiec mysle, ze juz wystarczy.
Przeczytaj najpierw beej's guide network programming, a potem bierz sie za sniffery. Jak napiszesz jakis kodzik to chetnie Ci pomoge.

Zreszta zaraz Ci wrzuce gotowy dzialajacy kodzik, wiec sobie bedziesz mogl rozkminic ocb, jesli bedziesz chcial.

0

wkrecilem sie troche za bardzo w ten kod :D

Naglowki i zmienne:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
#include <windows.h>
#include "resource.h"

#define SIO_RCVALL      	_WSAIOW(IOC_VENDOR,1)
#define MY_COMM			0xDEAD

typedef struct {
	BYTE dst_mac[6];
	BYTE src_mac[6];
	WORD type;
	BYTE data[4096];
} ETH;

BOOL run;
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in ssin;
DWORD code, flag, ret;
ETH *ethFrame;

BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL createSocket();
void closeSocket();

Funkcja tworzaca tego socketa i bindujaca:

BOOL createSocket()
{
	if(run == TRUE)
	{
		run = FALSE;
		return TRUE;
	}

	if(WSAStartup(MAKEWORD(2,2), &wsaData))
	{
		return FALSE;
	}

	sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, 0, 0, 0);
	if(sock == INVALID_SOCKET)
	{
		return FALSE;
	}

	memset(&ssin, '\0', sizeof(struct sockaddr_in));
	ssin.sin_family = AF_INET;
	ssin.sin_port = htons(0);
	ssin.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

	if(bind(sock, (struct sockaddr*)&ssin, sizeof(struct sockaddr)))
	{
		return FALSE;
	}

	code = SIO_RCVALL;
	flag = 1;

	run = TRUE;

	return TRUE;
}

Dobra teraz, przelaczenie na pelne nasluchiwanie:

if(WSAIoctl(sock, code, &flag, sizeof(flag), NULL, 0, &ret, NULL, NULL) == SOCKET_ERROR)
{
     // error
}

No i watek nasluchujacy:

while(run == TRUE)
{
	if(recv(sock, (BYTE*)ethFrame, sizeof(ethFrame), 0))
	{
		;
	}
}

Chodzi tylko o te funkcje do socket'ow, wywolujesz je po kolei gdzie tam sobie chcesz i w petli czytasz z gniazda oraz wypisujesz info i tyle.

0

ok dzięki zaraz spróbuje to jakoś sklecić, pierwsza rzecz jaka zrobiłem była znalezienie gotowca, jednak wystąpiły mi błędy wiec chce się dowiedzieć czym są spowodowane dlatego napisałem, jak będzie wszystko działać to wtedy zabiorę dokładnie się na pisanie, bo co mi z kodu który i tak działać nie będzie

//EDIT
dalej nie działa cały czas błąd 10022 w WSAIoctl() to musi być coś innego :/

0

Sproboj dac albo tak:

#define SIO_RCVALL 0x98000001

albo po prostu tak

ioctlsocket(socket, SIO_RCVALL, &flag);
0

Sprawdz to.

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>

#define SIO_RCVALL	_WSAIOW(IOC_VENDOR,1)

int main(void)
{
	WSADATA wsaData;
	SOCKET sock;
	struct sockaddr_in sin;
	int flag = 1;
	DWORD ret;

	if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
	{
		printf("error start: %d\n", WSAGetLastError());
		return -1;
	}

	sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
	if(sock == INVALID_SOCKET)
	{
		printf("error socket: %d\n", WSAGetLastError());
		return -1;
	}

	memset(&sin, 0x00, sizeof(struct sockaddr_in));
	sin.sin_family = AF_INET;
	sin.sin_port = 0;
	sin.sin_addr.s_addr = inet_addr(TWOJ_ADRES_IP);

	if(bind(sock, (struct sockaddr*)&sin, sizeof(struct sockaddr)) == SOCKET_ERROR)
	{
		printf("error bind: %d\n", WSAGetLastError());
		return -1;
	}

	if(WSAIoctl(sock, SIO_RCVALL, &flag, sizeof(flag), NULL, 0, &ret, NULL, NULL) == SOCKET_ERROR)
	{
		printf("error ioctl: %d\n", WSAGetLastError());
		return -1;
	}

	// ok !

	WSACleanup();

	return 0;
}
0

niestety tak jak zwykle "error ioctl: 10022", ale to denerwujące zwłaszcza ze szukam po necie i albo źle to robię albo nic o tym NIE MA :/

0

Nie masz teraz prawa miec takiego bledu, poniewaz:

WSAEINVAL
10022

Invalid argument.

    Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket—for instance, calling accept on a socket that is not listening.

oraz

The dwIoControlCode parameter is not a valid command, or a specified input parameter is not acceptable, or the command is not applicable to the type of socket specified. This error is also returned if the cbInBuffer parameter is less than the sizeof(UCHAR) or the lpvInBuffer parameter points to value that is not a RCVALL_VALUE  enumeration value. This error can also be returned if the network interface associated with the socket cannot be found. This could occur if the network interface associated with the socket is deleted or removed (a remove PCMCIA or USB network device, for example). 

Czyli przypuszczalne problemy:

  1. drugi parametr - zla komenda (SIO_RCVALL jest dobre)
  2. czwarty parametr - rozmiar mniejszy niz sizeof(UCHAR), a masz tam sizeof(int), wiec jest OK
  3. trzeci parametr wskazuje na zla wartosc, a JEDYNKA nie jest zla wartoscia

Idzmy dalej, przeczytalem gdzies, ze nie powinno sie dawac INADDR_ANY w sin.sin_addr.s_addr, wiec dlatego wrzucilem Ci powyzszy kod, zebys sobie sam IP wpisal swoje WEWNETRZNE, bo nie chcialo mi sie bawic w gethostname i gethostbyname.
Roznica jaka jeszcze znalazlem to te DWORD flag co bylo wczesniej, a DWORD jest unsigned int, wiec pomyslalem, ze moze dac int, bo gdzies tak widzialem zrobione i bylo OK, czyli tu tez jest wporzadku.
Gniazdo typu RAW mozesz pod Windowsem zbindowac tylko wtedy jesli dziala w domenie AF_INET lub AF_INET6 oraz korzysta z IPPROTO_IP lub IPPROTO_IP6. Tu tez jest ok.
Port jest podany na 0, wiec dajemy znac, ze nas to nie obchodzi, a nie ma znaczenia czy zero bedzie zerem normalnym, czy zerem w sieciowej kolejnosci hosta. Wniosek - wszystko wporzadku.

Moga trzy dwie przyczyny tego, ze u Ciebie nie dziala:

  1. Nie umiesz kodu skopiowac :D
  2. Podajesz niewlasciwe IP, co jest malo prawdopodobne, poniewaz gniazdo by Ci sie nie zbindowalo
  3. Uruchamiasz z user'a, a nie z admina co jest tez nierealne, poniewaz gniazdo by Ci sie nie utworzylo.

Wniosek jest taki, ze zostaje tylko pierwsza ewentualnosc.

0

zmieniłem flag i nie występuje błąd tylko przy liczbie 0 i 2, w opisie funkcji pisze ze te parametry nie są używane wiec może to jest dobrze?;]

dałem na 0 i działa, wypisuje mi pakiety na tym gotowcu który ci zapodałem na początku ;]

0
varens napisał(a)

zmieniłem flag i nie występuje błąd tylko przy liczbie 0 i 2, w opisie funkcji pisze ze te parametry nie są używane wiec może to jest dobrze?;]
dałem na 0 i działa xD

Odczytuje Ci pakiety, czy tylko ioctl nie zwraca bledu ? ;p

0

tak pokazuje tylko teraz muszę jeszcze znaleźć sobie jakiś dokładniejszy tutorial związany z winsock zęby to wszystko rozkminić od podstaw

0
varens napisał(a)

wypisuje mi pakiety na tym gotowcu który ci zapodałem na początku ;]

To bardzo fajnie, zwlaszcza ze jest identyczny(jesli chodzi o zrobienie socketa,bindowanie,ioctl) jak ten kod co wyzej Ci dalem i ma optval ustawione tez na 1, bo 1 znaczy wlacz opcje, a 0 wylacz :D
Tamten kod rozni sie tylko tym od mojego, ze w moim samemu recznie dajesz adres IP, wiec po prostu od poczatku nie umiales skopiowac dobrego kodu, a w tym wpisac swojego IP...

0

IPHEADER *ip_header = NULL;
int optval = 0;
DWORD dwLen = 0;

tam też zmieniłem na 0 a w twoim dobrze wpisałem Ip, wiec niegadaj, a skoro 0 to jest wyłącz to dlaczego na 2 też mi działa?
tak w ogóle niewiem dlaczego tutaj http://msdn.microsoft.com/en-us/library/dd877219%28VS.85%29.aspx
pisze ze te zmienne nie są używane skoro przez to mi nie działało

0
varens napisał(a)

IPHEADER *ip_header = NULL;
int optval = 0;
DWORD dwLen = 0;

tam też zmieniłem na 0 a w twoim dobrze wpisałem Ip, wiec niegadaj, a skoro 0 to jest wyłącz to dlaczego na 2 też mi działa?

2 to jest jeszcze cos innego, doczytaj a potem sie sprzeczaj...

varens napisał(a)

tak w ogóle niewiem dlaczego tutaj http://msdn.microsoft.com/en-us/library/dd877219%28VS.85%29.aspx
pisze ze te zmienne nie są używane skoro przez to mi nie działało

Bo to jest do opcji SIO_ADDRESS_LIST_QUERY, a nie do SIO_RCV_ALL...

0

to już sie zamotałem tak jak mowie musze znaleŹć jakis dobry tutorial pod to bo wszystko dziala, znalazlem jeszcze inny gotowiec tez mienilem na 0 i mam pełny log z pakietów


***********************UDP Packet*************************

IP Header
   |-IP Version        : 4
   |-IP Header Length  : 5 DWORDS or 20 Bytes
   |-Type Of Service   : 0
   |-IP Total Length   : 203  Bytes(Size of Packet)
   |-Identification    : 19091
   |-Reserved ZERO Field   : 0
   |-Dont Fragment Field   : 1
   |-More Fragment Field   : 0
   |-TTL      : 246
   |-Protocol : 17
   |-Checksum : 20213
   |-Source IP        : 194.204.152.34
   |-Destination IP   : 192.168.207.1

UDP Header
   |-Source Port      : 53
   |-Destination Port : 57257
   |-UDP Length       : 183
   |-UDP Checksum     : 20259

IP Header
    45 00 00 CB 4A 93 40 00 F6 11 4E F5 C2 CC 98 22         E...J.@...N...."
    C0 A8 CF 01                                             ....
UDP Header
    00 35 DF A9 00 B7 4F 23                                 .5....O#
Data Payload
    14 A5 81 80 00 01 00 08 00 00 00 00 03 77 77 77         ...€.........www
    06 67 6F 6F 67 6C 65 02 70 6C 00 00 01 00 01 C0         .google.pl......
    0C 00 05 00 01 00 00 CD 93 00 10 03 77 77 77 06         ............www.
    67 6F 6F 67 6C 65 03 63 6F 6D 00 C0 2B 00 05 00         google.com..+...
    01 00 08 B6 92 00 08 03 77 77 77 01 6C C0 2F C0         ........www.l./.
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 68 C0         G.......W..J}+h.
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 6A C0         G.......W..J}+j.
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 67 C0         G.......W..J}+g.
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 63 C0         G.......W..J}+c.
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 93 C0         G.......W..J}+..
    47 00 01 00 01 00 00 00 57 00 04 4A 7D 2B 69            G.......W..J}+i

###########################################################

***********************TCP Packet*************************

IP Header
   |-IP Version        : 4
   |-IP Header Length  : 5 DWORDS or 20 Bytes
   |-Type Of Service   : 0
   |-IP Total Length   : 48  Bytes(Size of Packet)
   |-Identification    : 43263
   |-Reserved ZERO Field   : 0
   |-Dont Fragment Field   : 0
   |-More Fragment Field   : 0
   |-TTL      : 50
   |-Protocol : 6
   |-Checksum : 55865
   |-Source IP        : 74.125.43.104
   |-Destination IP   : 192.168.207.1

TCP Header
   |-Source Port      : 80
   |-Destination Port : 3242
   |-Sequence Number    : 1758658607
   |-Acknowledge Number : 687544608
   |-Header Length      : 7 DWORDS or 28 BYTES
   |-CWR Flag : 0
   |-ECN Flag : 0
   |-Urgent Flag          : 0
   |-Acknowledgement Flag : 1
   |-Push Flag            : 0
   |-Reset Flag           : 0
   |-Synchronise Flag     : 1
   |-Finish Flag          : 0
   |-Window         : 5720
   |-Checksum       : 44846
   |-Urgent Pointer : 0

                        DATA Dump                         
IP Header
    45 00 00 30 A8 FF 00 00 32 06 DA 39 4A 7D 2B 68         E..0....2..9J}+h
    C0 A8 CF 01                                             ....
TCP Header
    00 50 0C AA 68 D3 00 2F 28 FB 19 20 70 12 16 58         .P..h../(.. p..X
    AF 2E 00 00 02 04 05 96 01 01 04 02                     ............
Data Payload
0
varens napisał(a)

to już sie zamotałem tak jak mowie musze znaleŹć jakis dobry tutorial pod to bo wszystko dziala, znalazlem jeszcze inny gotowiec tez mienilem na 0 i mam pełny log z pakietów

Nie, nie masz pelnego logu i dopoki nie doczytasz nie bedziesz mial, poniewaz nie bede Cie dalej uswiadamial, bo to nie ma sensu. Dlatego, ze od czasu wrzucenia tego gotowca co znalazles nawet nie przeczytales do czego jest flaga SIO_RCVALL.

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