// SendIpPack.cpp: implementation of the SendIpPack class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "note.h"
#include "SendIpPack.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//#import Ws2_32.lib
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSendIpPack::CSendIpPack()
{
memset(&m_p,0,sizeof(LP_INTER));
// m_bFirst=TRUE;
}
CSendIpPack::~CSendIpPack()
{
}
UINT CSendIpPack::SendIP(DWORD m_sleep,int m_speed)
{
// LP_Thread *m_p_=(LP_Thread*)m_p;
// LP_INTER m_p;
// memcpy(m_p_, (LP_Thread*)m_p, sizeof(LP_Thread));
char strMessage[OICQ_MSG_LEN] =
{
0x02,0x01,0x07,0x00,0x78,0x00,0x00,0x31,0x30,0x30,0x30,0x31,0x1f,0x30,0x1f,
0x30,0x30,0x1f,0x32,0x30,0x30,0x30,0x2d,0x30,0x31,0x2d,0x30,0x31,0x1f,0x30,
0x30,0x3a,0x30,0x30,0x3a,0x30,0x30,0x1f,0x68,0x65,0x6c,0x6c,0x6f,0x21,0x03
};
WSADATA wsd;
SOCKET s;
BOOL bOpt;
struct sockaddr_in remote;
IP_HDR ipHdr;
UDP_HDR udpHdr;
int ret;
//DWORD i;
unsigned short iTotalSize,
iUdpSize,
iUdpChecksumSize,
iIPVersion,
iIPSize,
cksum = 0;
char buf[OICQ_MAX_PACKET],
*ptr = NULL;
//char *flop="";
// unsigned short int port_=0;
u_short port_=0;
//AfxMessageBox("Spoof OICQ Msg Sender - by Janker@371.net\n\n%d");
port_=m_p.in_destport;
// port_=port_<<8;
srand((unsigned)time(NULL));
strMessage[5]=rand();
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"WSAStartup() failed: %d\n", GetLastError());
AfxMessageBox("WSAStartup() failed: %d\n");
return -1;
}
s = WSASocket(AF_INET, SOCK_RAW, IPPROTO_UDP, NULL, 0,0);
if (s == INVALID_SOCKET)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"WSASocket() failed: %d\n", WSAGetLastError());
AfxMessageBox("WSASocket() failed: %d\n");
return -1;
}
bOpt = TRUE;
ret = setsockopt(s, IPPROTO_IP,IP_HDRINCL, (char *)&bOpt, sizeof(bOpt)); //IP_HDRINCL
if (ret == SOCKET_ERROR)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"setsockopt(IP_HDRINCL) failed: %d\n", WSAGetLastError());
AfxMessageBox("setsockopt(IP_HDRINCL) failed: %d\n");
return -1;
}
iTotalSize = sizeof(ipHdr) + sizeof(udpHdr) + OICQ_MSG_LEN;
iIPVersion = 4;
iIPSize = sizeof(ipHdr) / sizeof(unsigned long);
ipHdr.ip_verlen = (iIPVersion<<4) | iIPSize;//
ipHdr.ip_tos = 0;
ipHdr.ip_totallength = htons(iTotalSize);
ipHdr.ip_id = 0;
ipHdr.ip_offset = 0;
ipHdr.ip_ttl = 128;
ipHdr.ip_protocol =m_p.in_protocol;
ipHdr.ip_checksum = 0 ;
ipHdr.ip_srcaddr = inet_addr(GetLocalIpAddr());
ipHdr.ip_destaddr = inet_addr(m_p.in_destaddr); //argv[1]"192.168.0.4"
iUdpSize = sizeof(udpHdr) + OICQ_MSG_LEN;
//test_ip_port++;
udpHdr.src_portno = htons(DST_PORT);//);// htons(SRC_PORT);
udpHdr.dst_portno = htons(port_);//m_p.in_destport
udpHdr.udp_length = htons(iUdpSize) ;
udpHdr.udp_checksum = 0 ;
iUdpChecksumSize = 0;
ptr = buf;
ZeroMemory(buf, OICQ_MAX_PACKET);
memcpy(ptr, &ipHdr.ip_srcaddr, sizeof(ipHdr.ip_srcaddr));
ptr += sizeof(ipHdr.ip_srcaddr);
iUdpChecksumSize += sizeof(ipHdr.ip_srcaddr);
memcpy(ptr, &ipHdr.ip_destaddr, sizeof(ipHdr.ip_destaddr));
ptr += sizeof(ipHdr.ip_destaddr);
iUdpChecksumSize += sizeof(ipHdr.ip_destaddr);
ptr++;
iUdpChecksumSize += 1;
memcpy(ptr, &ipHdr.ip_protocol, sizeof(ipHdr.ip_protocol));
ptr += sizeof(ipHdr.ip_protocol);
iUdpChecksumSize += sizeof(ipHdr.ip_protocol);
memcpy(ptr, &udpHdr.udp_length, sizeof(udpHdr.udp_length));
ptr += sizeof(udpHdr.udp_length);
iUdpChecksumSize += sizeof(udpHdr.udp_length);
memcpy(ptr, &udpHdr, sizeof(udpHdr));
ptr += sizeof(udpHdr);
iUdpChecksumSize += sizeof(udpHdr);
/*
for(i = 0; i *ptr = strMessage[i];
iUdpChecksumSize += OICQ_MSG_LEN;
*/
cksum = CheckSum((USHORT *)buf, iUdpChecksumSize);
udpHdr.udp_checksum = cksum;
ZeroMemory(buf, OICQ_MAX_PACKET);
ptr = buf;
memcpy(ptr, &ipHdr, sizeof(ipHdr)); ptr += sizeof(ipHdr);
memcpy(ptr, &udpHdr, sizeof(udpHdr)); ptr += sizeof(udpHdr);
memcpy(ptr, strMessage, OICQ_MSG_LEN);
remote.sin_family = AF_INET;
remote.sin_port = htons(m_p.in_destport);//DST_PORT
remote.sin_addr.s_addr = inet_addr(m_p.in_destaddr);//argv[1]
// CString ss("");
// ss.Format("The PACK is %d",sizeof(buf));
// AfxMessageBox(ss);
for(int i1=0;i1<m_speed;i1++)
{
Sleep(m_sleep);
ret = sendto(s, buf, iTotalSize, 0, (SOCKADDR *)&remote, sizeof(remote));
if (ret == SOCKET_ERROR)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"sendto() failed: %d\n", WSAGetLastError());
AfxMessageBox("sendto() failed: %d\n");
return -1;
}
}
// else
// {//AfxMessageBox("Send O.K.!");
// printf("Send O.K.!");
// }
closesocket(s) ;
WSACleanup() ;
return 0;
}
UINT CSendIpPack::SendIP(int m_speed)
{
// LP_Thread *m_p_=(LP_Thread*)m_p;
// LP_INTER m_p;
// memcpy(m_p_, (LP_Thread*)m_p, sizeof(LP_Thread));
BOOL m_bFirst;
char strMessage[OICQ_MSG_LEN] =
{
0x02,0x01,0x07,0x00,0x78,0x00,0x00,0x31,0x30,0x30,0x30,0x31,0x1f,0x30,0x1f,
0x30,0x30,0x1f,0x32,0x30,0x30,0x30,0x2d,0x30,0x31,0x2d,0x30,0x31,0x1f,0x30,
0x30,0x3a,0x30,0x30,0x3a,0x30,0x30,0x1f,0x68,0x65,0x6c,0x6c,0x6f,0x21,0x03
};
WSADATA wsd;
SOCKET s;
BOOL bOpt;
struct sockaddr_in remote;
IP_HDR ipHdr;
UDP_HDR udpHdr;
int ret;
//DWORD i;
unsigned short iTotalSize,
iUdpSize,
iUdpChecksumSize,
iIPVersion,
iIPSize,
cksum = 0;
char buf[OICQ_MAX_PACKET],
*ptr = NULL;
//char *flop="";
// unsigned short int port_=0;
u_short port_=0;
//AfxMessageBox("Spoof OICQ Msg Sender - by Janker@371.net\n\n%d");
port_=m_p.in_destport;
// port_=port_<<8;
srand((unsigned)time(NULL));
strMessage[5]=rand();
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"WSAStartup() failed: %d\n", GetLastError());
AfxMessageBox("WSAStartup() failed: %d\n");
return -1;
}
s = WSASocket(AF_INET, SOCK_RAW, IPPROTO_UDP, NULL, 0,0);
if (s == INVALID_SOCKET)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"WSASocket() failed: %d\n", WSAGetLastError());
AfxMessageBox("WSASocket() failed: %d\n");
return -1;
}
bOpt = TRUE;
ret = setsockopt(s, IPPROTO_IP,IP_HDRINCL, (char *)&bOpt, sizeof(bOpt)); //IP_HDRINCL
if (ret == SOCKET_ERROR)
{
//memset(flop,0,sizeof(flop));
//sprintf(flop,"setsockopt(IP_HDRINCL) failed: %d\n", WSAGetLastError());
AfxMessageBox("setsockopt(IP_HDRINCL) failed: %d\n");
return -1;
}
iTotalSize = sizeof(ipHdr) + sizeof(udpHdr) + OICQ_MSG_LEN;
iIPVersion = 4;
iIPSize = sizeof(ipHdr) / sizeof(unsigned long);
ipHdr.ip_verlen = (iIPVersion<<4) | iIPSize;//
ipHdr.ip_tos = 0;
ipHdr.ip_totallength = htons(iTotalSize);
ipHdr.ip_id = 0;
ipHdr.ip_offset = 0;
ipHdr.ip_ttl = 128;
ipHdr.ip_protocol =m_p.in_protocol;
ipHdr.ip_checksum = 0 ;
ipHdr.ip_srcaddr = inet_addr(GetLocalIpAddr());
ipHdr.ip_destaddr = inet_addr(m_p.in_destaddr); //argv[1]"192.168.0.4"
iUdpSize = sizeof(udpHdr) + OICQ_MSG_LEN;
//test_ip_port++;
udpHdr.src_portno = htons(DST_PORT);//);// htons(SRC_PORT);
udpHdr.dst_portno = htons(port_);//m_p.in_destport
udpHdr.udp_length = htons(iUdpSize) ;
udpHdr.udp_checksum = 0 ;
iUdpChecksumSize = 0;
ptr = buf;
ZeroMemory(buf, OICQ_MAX_PACKET);
memcpy(ptr, &ipHdr.ip_srcaddr, sizeof(ipHdr.ip_srcaddr));
ptr += sizeof(ipHdr.ip_srcaddr);
iUdpChecksumSize += sizeof(ipHdr.ip_srcaddr);
memcpy(ptr, &ipHdr.ip_dest
构造并发送IP/UDP/ICMP数据包的程序
5星 · 超过95%的资源 需积分: 35 154 浏览量
2012-02-20
17:25:35
上传
评论 5
收藏 305KB ZIP 举报
huayuhululu
- 粉丝: 2
- 资源: 4
最新资源
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
- SpringBoot整合mongodb学习MongoTemplate和MongoRepository两种方式CRUD使用.zip
- SpringBoot整合MongoDB实现对数据库的CRUD小demo.zip
- Python操作MongoDB数据库的基本一些操作 .zip
- NOSQL数据库监控工具,目前实现了对Redis、MongoDB的监控功能 .zip
- mongoDB数据库的增删改查,以及所需要的配置.zip
- mongodb数据库idea测试.zip
- koa 分别 连接 mysql、mongodb数据库操作.zip
- 基于pytorch实现的人体部件分割源码+模型.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
前往页