📄 sendpacket.c
字号:
#include "sendpacket.h"//datas//经管/*unsigned char start_packet[0x40]="\x01\x80\xc2\x00\x00\x03\x00\x09\x6b\xc2\x74\x62\x88\x8e\x01\x01" "\x00\x2a\x20\x14\x01\x00\x04\x04\x00\x01\x0d\x22\xe3\x2f\x1c\x45" "\x12\x03\xba\x33\xd5\x77\x3c\x28\x13\x64\xde\x3f\xad\x57\xcb\x61" "\xcb\xde\x44\xad\xe9\xb3\x30\x32\x37\x3b\x69\xc8\xa5\xa5\xa5\xa5";*///信息,北校区西10#testunsigned char start_packet[0x40]="\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\x88\x8e\x01\x01" "\x00\x2a\x20\x14\x01\x00\x04\x04\x00\x01\x0d\x22\x91\x01\xe9\x27" "\x27\x6f\x0c\x5e\x32\x29\x2c\x0f\x2e\x1a\xc9\x48\xa9\x7d\x07\x4e" "\x54\xb2\x73\x19\xf6\xcc\xd4\xbb\xda\x50\x4e\xb5\xa5\xa5\xa5\xa5"; unsigned char name_packet[0x40]= "\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\x88\x8e\x01\x00" "\x00\x10\x02\x01\x00\x10\x01\x57\x46\x5a\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"; unsigned char password_packet[0x40]="\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\x88\x8e\x01\x00" "\x00\x21\x02\x02\x00\x21\x04\x10\x06\x9b\x40\xd2\x56\xf2\x67\xae" "\x2e\x86\xc0\x73\xa4\xef\x13\xbf\x57\x46\x5a\x30\x35\x32\x32\x33" "\x32\x33\x32\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5"; unsigned char echo_packet[0x40]= "\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\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"; unsigned char notify_packet[0x40]="\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\x88\x8e\x01\x0d" "\x00\x1c\x20\x14\x01\x01\x14\x06\xdb\xf5\xd6\x91\x10\x06\xff\xff" "\xff\x00\x0f\x06\xdb\xf5\xd6\x01\x11\x06\xdb\xf5\xc0\x0a\xa5\xa5" "\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5\xa5"; unsigned char logoff_packet[0x40]="\x01\x80\xc2\x00\x00\x03\x00\x11\x5b\x9e\xf3\x41\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"; void initAllPackets(char localMAC[6],char serverMAC[6]){/* unsigned char r[32]; int i = 0; time_t t; srandom(time(&t)); //生成32字节随机数 for(i = 0;i < 32;i++) r[i] = random()%253+1; memcpy(start_packet+0x1c,r,32);*/ memcpy(start_packet,serverMAC,6); memcpy(start_packet+0x06,localMAC,6); memcpy(name_packet,serverMAC,6); memcpy(name_packet+0x06,localMAC,6); memcpy(password_packet,serverMAC,6); memcpy(password_packet+0x06,localMAC,6); memcpy(echo_packet,serverMAC,6); memcpy(echo_packet+0x06,localMAC,6); memcpy(logoff_packet,serverMAC,6); memcpy(logoff_packet+0x06,localMAC,6); memcpy(notify_packet,serverMAC,6); memcpy(notify_packet+0x06,localMAC,6);} void printPacket(unsigned char packet[0x40]){ int i = 0; for(i = 0;i < 0x40; i++) printf("%02x",packet[i]); printf("\n");}void modifyNotify(char localIP[4],char netMask[4],char gateway[4],char dhcpserver[4]){ memcpy(notify_packet+0x18,localIP,4); memcpy(notify_packet+0x1e,netMask,4); memcpy(notify_packet+0x24,gateway,4); memcpy(notify_packet+0x2A,dhcpserver,4);}void modifyName(char name[],int namelen){ name_packet[0x11] = (unsigned char)namelen+5; name_packet[0x15] = name_packet[0x11]; memcpy(name_packet+0x17,name,namelen); password_packet[0x11] = (unsigned char)namelen+22; password_packet[0x15] = password_packet[0x11]; memcpy(password_packet+0x28,name,namelen);}void modifyPassword(char password[16]){ //printf("更新口令密文\n"); memcpy(password_packet+0x18,password,16);} //sendpacketsint sendStartPacket(libnet_t* l){ //fputs("send start packet\n",stdout); //printPacket(start_packet); return (libnet_write_link(l,start_packet,0x40)==0x40)?0:-1;}int sendNamePacket(libnet_t* l,unsigned char id){ //printf("send username with id = %x\n",id); name_packet[0x13] = id; //printPacket(name_packet); return (libnet_write_link(l,name_packet,0x40)==0x40)?0:-1;}int sendPasswordPacket(libnet_t* l,unsigned char id){ //printf("send password with id = %x\n",id); password_packet[0x13] = id; //printPacket(password_packet); return (libnet_write_link(l,password_packet,0x40)==0x40)?0:-1;}int sendLogoffPacket(libnet_t* l){ return (libnet_write_link(l,logoff_packet,0x40)==0x40)?0:-1;}int sendSessionEchoPacket(libnet_t* l){ fputs("send an echo packet\n",stdout); //printPacket(echo_packet); return (libnet_write_link(l,echo_packet,0x40)==0x40)?0:-1;}int sendNotifyPacket(libnet_t* l){ //fputs("send an notify packet\n",stdout); //printPacket(notify_packet); return (libnet_write_link(l,notify_packet,0x40)==0x40)?0:-1;}void printPasswordPacket(){ printPacket(password_packet);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -