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

📄 main.c

📁 linux下实现拨号上网的源码
💻 C
字号:
#include  <stdio.h>#include <unistd.h>#include  <sys/socket.h>#include  <sys/types.h>#include  <netinet/in.h>#include  <math.h>#include  <time.h>#include  <string.h>#include  "md5.h"  //md5加密函数void  randomize () ;void jiami(unsigned char *text,  char *str) ;//常量定义  char  S_IP[16] = "60.178.69.2" ; //服务器IP  char  C_IP[16] = "10.254.118.80";  //客户端IP  char  USER[16] = "034100548";  //用户名  char  PASS[16] = "956540";   //密码  char  SIGN[17] = "0123456789abcde7"  ;//签名unsigned char  digest[16];  //16位随机数及其MD5,定义在外,方便使用。char Random[17] ;int  main(){	//初始化网络栈//   WSADATA wsaData; //  WSAStartup(MAKEWORD(2,2), &wsaData);      //cout<<"服务器:"<<S_IP<<endl;   //cout<<"电信IP:"<<C_IP<<endl;   //cout<<"用户名:"<<USER<<endl;   //cout<<"密  码:"<<PASS<<endl;           int i ;    int  s;              //套接字句柄   struct  sockaddr_in addr;      //地址	char genbuf[1024] ;   //general buf for sending and recving  data     unsigned char user[33],pass[33],ip[33],sign[33];  //存放加密过的用户名和密码及ip,sign.          char serial_number[17],key[17] ;    srand(time(NULL));    randomize();  //生成随机数及MD5;    jiami((unsigned char *)USER,( char *)user);  //异或加密	jiami((unsigned char *)C_IP,( char *)ip);	jiami((unsigned char *)SIGN,( char *)sign);	jiami((unsigned char *)PASS,( char *)pass);   	i = 217 + strlen(C_IP);//计算HTML表单的长度    	//构造 HTTP 数据包	sprintf(genbuf,"POST /cgi-bin/client_login HTTP/1.1\r\n"    "Accept: image/gif, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*\r\n"    "Accept-Language: zh-cn\r\n"    "Content-Type: application/x-www-form-urlencoded\r\n"    "Accept-Encoding: gzip, deflate\r\n"    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5))\r\n"    "Host: %s:81\r\n"             "Content-Length: %d\r\n"        "Connection: Keep-Alive\r\n"    "Cache-Control: no-cache\r\n\r\n"    "wlanacname=&wlanuserip=%s&user=%s&domain=&pass=%s&random=%s&sign=%s&command=0&ghj=%s\r\n\0"	,S_IP	,i	,C_IP	,user	,pass	,Random	,sign	,ip);	addr.sin_family = AF_INET;    addr.sin_addr.s_addr = inet_addr(S_IP);    addr.sin_port = htons(81);		s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    	connect(s,(struct sockaddr *)&addr,sizeof(addr));		send(s,genbuf,strlen(genbuf),0);   	i = recv(s,genbuf,1024,0);	        close(s);    	if(i)	{		*(genbuf+i) = '\0';//	cout<<genbuf<<endl;     printf("%s\n",genbuf);	}   //提取 serial_number    char *ptr,*ptr2;    ptr = strstr(genbuf,"ok;")+3;    ptr = strstr(ptr,";");	ptr++;    ptr = strstr(ptr,";")+1;    ptr2 = ptr;	ptr = strstr(ptr,";");    *ptr = '\0';    strcpy(serial_number,ptr2);//	cout<<serial_number<<endl;     printf("%s\n",serial_number);//====以上是登录部分//====以下是登录完成后每隔30秒,发送一个数据包,以KEEP ALIVE 	 addr.sin_port = htons(888);  	 s = socket(AF_INET,0,IPPROTO_UDP);	          for(i=1;;i++)	 {	     sleep(30);     	 randomize();         jiami((unsigned char *)C_IP,( char *)ip);         jiami((unsigned char *)SIGN,( char *)sign);		 sprintf(key,"0;%d;\0\0",i);		// cout<<key<<endl;                 printf("%s",key);         jiami((unsigned char *)key, ( char *)pass);				 sprintf(genbuf,"%s;%s;%s;%s;%s;ghj;\0",			      pass,ip,serial_number,Random,sign);	//	cout<<genbuf<<endl;        sendto(s,genbuf,strlen(genbuf)+1,0,(struct sockaddr *)&addr,sizeof(addr));	//	cout<<genbuf<<endl;	     }    //蚊换

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -