📄 sendpacket.c
字号:
/*这个部分是联创认证的特色所在,不论数据包的格式还是加密算法,与其他公司的标准都有很大不同这也是编写此软件的难点所在,幸好我有很好的汇编语言基础,对破解技术有所了解。哈哈,我可不是什么 linux高手,接触Linux只还不到一年,使用linux才一个学期,可不是,现在还为debian安装中文输入法而犯愁:(24-09-2005 10:51*/#include "sendpacket.h"//#include "global.h"#include "md5.h"/*void show(unsigned char *p,int n){ int i = 0; for(i = 0;i<n;i++) { printf("%-2x ",*p); ++p; if((i+1)%16==0) printf("\n"); }}*/unsigned char StandardAddr[] = {'\x01','\x80','\xC2','\x00','\x00','\x03'}; int SendFindServerPacket(libnet_t *l){ unsigned char broadPackage[0x40] = { //港湾广播包,用于寻找服务器 '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x88','\x8e','\x01','\x01', '\x00','\x0e','\x20','\x14','\x01','\x00','\x04','\x04','\x00','\x01','\x07','\x06','\x00','\x00','\x00','\x00', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5'}; extern unsigned char m_localMAC[6]; extern unsigned char m_ip[4]; memcpy( broadPackage, StandardAddr, 6 ); memcpy( broadPackage+6, m_localMAC, 6 ); //填充MAC地址 memcpy( broadPackage+0x1c,m_ip,4); fputs(">> Searching for server...\n",stdout); //show(broadPackage,64); return (libnet_write_link(l,broadPackage, 0x40)==0x40)?0:-1;}int SendNamePacket(libnet_t *l, const u_char *pkt_data){ static unsigned char ackPackage[0x40] = { //港湾应答包,用户名 '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x88','\x8e','\x01','\x00', '\x00','\x0e','\x02','\x01','\x00','\x00','\x01','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5'}; extern char *m_name; extern unsigned char m_localMAC[6]; int nameLen; nameLen=strlen(m_name); memcpy(ackPackage,StandardAddr,6); //仍将组播的MAC地址填入组织回复的包 memcpy(ackPackage+6,m_localMAC,6); //将本机MAC地址填入组织回复的包 ackPackage[0x12]=0x02; //code,2代表应答 ackPackage[0x13]=pkt_data[0x13]; //ID = 1 *(short *)(ackPackage+0x10) = htons((short)(5+nameLen));//len *(short *)(ackPackage+0x14) = *(short *)(ackPackage+0x10);//len memcpy(ackPackage+0x17,m_name,nameLen); //填入用户名 fputs(">> Sending user name...\n",stdout); //show(ackPackage,64); return (libnet_write_link(l,ackPackage, 0x40)==0x40)?0:-1;}int SendPasswordPacket(libnet_t *l,const u_char *pkt_data){ static unsigned char ackPackage[0x40] = { //港湾应答包,MD5 '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x88','\x8e','\x01','\x00', '\x00','\x0e','\x00','\x00','\x0e','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5'}; extern char *m_password; extern unsigned char m_localMAC[6]; int passwordLen; passwordLen=strlen(m_password); memcpy(ackPackage,StandardAddr,6); memcpy(ackPackage+6,m_localMAC,6); //将本机MAC地址填入组织回复的包 ackPackage[0x12] = 0x02; //code,2代表应答 ackPackage[0x13] = 0x01; //pkt_data[\x13]; //id ackPackage[0x16] = 0x04; //type,即应答方式,HERE should alway be 4 *(short *)(ackPackage+0x10) = htons((short)(6+passwordLen)); //len *(short *)(ackPackage+0x14) = *(short *)( ackPackage+0x10 ); ackPackage[0x17] = 0x08; memcpy(ackPackage+0x18,m_password,passwordLen); fputs(">> Sending password... \n",stdout); //show(ackPackage,64); return (libnet_write_link(l,ackPackage, 0x40)==0x40)?0:-1;}int SendEchoPacket(libnet_t *l){ extern unsigned char m_localMAC[6]; unsigned char MidPacket[0x40]={ '\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x88','\x8e','\x01','\x0b', '\x00','\x00','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5', '\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5','\xa5'}; memcpy(MidPacket,StandardAddr,6); memcpy(MidPacket+6,m_localMAC,6);/* memcpy(MidPacket+0x0c,"0x888e",2); memcpy(MidPacket+0x0e,"0x01",1); memcpy(MidPacket+0x0f,"0x0b",1); memcpy(MidPacket+0xa0,"0x0000",2);*/ return (libnet_write_link(l,MidPacket,0x40)==0x40)?0:-1;}int SendEndCertPacket(libnet_t *l){ extern unsigned char m_destMAC[6]; extern unsigned char m_localMAC[6]; static unsigned char ExitPacket[0x40]={ '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x88', '\x8e', '\x01', '\x02', '\x00', '\x00', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5', '\xa5'}; memcpy( ExitPacket, m_destMAC, 6 ); memcpy( ExitPacket+6,m_localMAC, 6 ); fputs(">> Logouting... \n",stdout); return (libnet_write_link(l,ExitPacket,0x40)==0x40)?0:-1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -