?? 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','\x0a','\x01','\x83','\x26', '\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]; memcpy( broadPackage, StandardAddr, 6 ); memcpy( broadPackage+6, m_localMAC, 6 ); //填充MAC地址 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[34]={ '\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,0x34)==0x34)?0:-1;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -