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

📄 sendpacket.c

📁 linux中的港湾客户段源程序
💻 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 + -