From 9e26530f9e1216b392c870eed859646367fd7a7a Mon Sep 17 00:00:00 2001 From: root Date: Sat, 30 Jun 2018 12:56:57 +0800 Subject: [PATCH] wuliclient init --- README.md | 18 + wuliclient/.README.md.swp | Bin 0 -> 12288 bytes wuliclient/Makefile | 34 ++ wuliclient/src/.Makefile.swp | Bin 0 -> 12288 bytes wuliclient/src/.wuliclient.c.swp | Bin 0 -> 36864 bytes wuliclient/src/MD5.c | 161 ++++++ wuliclient/src/MD5.h | 48 ++ wuliclient/src/Makefile | 16 + wuliclient/src/wuliclient.c | 864 +++++++++++++++++++++++++++++++ 9 files changed, 1141 insertions(+) create mode 100644 README.md create mode 100644 wuliclient/.README.md.swp create mode 100644 wuliclient/Makefile create mode 100644 wuliclient/src/.Makefile.swp create mode 100644 wuliclient/src/.wuliclient.c.swp create mode 100644 wuliclient/src/MD5.c create mode 100644 wuliclient/src/MD5.h create mode 100644 wuliclient/src/Makefile create mode 100644 wuliclient/src/wuliclient.c diff --git a/README.md b/README.md new file mode 100644 index 0000000..93b3825 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +USED: + +1.Download the wuliclient directory to openwrt sdk packages directory. +[if you school H3C server ip is different from my ,you should modify it. + edit wuliclient.c and modify maroc of SER_ADRE SER_PORT and so on] + +2.back to sdk top directory + +3.running make + +4.the .ipk in ./bin/[platform]/packages/base/ + +5.cp ipk to your route and install it. + +6.running wuliclent with you "id passwd net_dev_id" +for example: +wuliclent 130105021035 1234 eth0 + diff --git a/wuliclient/.README.md.swp b/wuliclient/.README.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..3767d736a9a73b6afe582e39d90ccd4d870f211e GIT binary patch literal 12288 zcmeI&!A{#S7zc2(<0J$cFW`-{?b1|*aYM9+3D6{<>@cCqNkeOz*pcH?he;w@a!+K&YVZ2hVP@h) zG~`zqMY1W6jje9Q?OwazZmB{iV?9jOq{>W^nbZb#+CAu;bY(tRvNUc%00L~i7d3Yp zHN^Ip&wT4s4<-}z9s8$k?Oi_`qJsbgAOHaf zKmY;|fB*y_009Us1yN@QbJFsgCOG VCq7JHF{_p@7f(pmJL`7#*&7I_bt(V= literal 0 HcmV?d00001 diff --git a/wuliclient/Makefile b/wuliclient/Makefile new file mode 100644 index 0000000..c9dde8f --- /dev/null +++ b/wuliclient/Makefile @@ -0,0 +1,34 @@ +include $(TOPDIR)/rules.mk + + +PKG_NAME:=wuliclientBulidl +PKG_RELEASE:=1.0 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) +SECTION:=utils +CATEGORY:=Utilities +PKGARCH:=all +TITLE:= $(PKG_NAME) +MAINTAINER:=K.L +endef + +define Package/$(PKG_NAME)/description + wuliclient for Inode7.1 portal in zhibt +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ +endef + +define Package/$(PKG_NAME)/install + echo "Here is Package/install" + $(INSTALL_DIR) $(1)/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/bin/ +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/wuliclient/src/.Makefile.swp b/wuliclient/src/.Makefile.swp new file mode 100644 index 0000000000000000000000000000000000000000..e9cb0b01088884e2dbc14726d22d6bda4e28fb51 GIT binary patch literal 12288 zcmeI&&u$Vy90%~J7sJ6nsY%Zx?V*^=E&>82@lZi)Q&5wp_27XF!?a90yF>O5aMHU6 z<3o6|C!a#!!dK8Y@VAr(Fc`g>ekb`d%UUzy;cWIn?3nC=rLP0};u<3}X=_wQ8x@ zJyl9nyt=R^l#%PEO>25e6uljjMP^0uX=z1Rwwb2tWV= z5P$##An*r)TrLXu1JCiT?NH$@q~Vv1`M7p#c9-e(#nl`a%e!3I@#Q*hX*gs2N~H04{)|uP{CnThd0yU2 TjqUS+w$_bZL|^|wCC`2VMkchY literal 0 HcmV?d00001 diff --git a/wuliclient/src/.wuliclient.c.swp b/wuliclient/src/.wuliclient.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..b6930a496c74a0ba396dbd54f562076e62410d74 GIT binary patch literal 36864 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 +#include "MD5.h" + +unsigned char PADDING[] = { 0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; + +void MD5_Init(MD5_CTX *context) +{ + context->count[0] = 0; + context->count[1] = 0; + context->state[0] = 0x67452301; + context->state[1] = 0xEFCDAB89; + context->state[2] = 0x98BADCFE; + context->state[3] = 0x10325476; +} +void MD5_Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen) +{ + unsigned int i = 0, index = 0, partlen = 0; + index = (context->count[0] >> 3) & 0x3F; + partlen = 64 - index; + context->count[0] += inputlen << 3; + if (context->count[0] < (inputlen << 3)) + context->count[1]++; + context->count[1] += inputlen >> 29; + + if (inputlen >= partlen) + { + memcpy(&context->buffer[index], input, partlen); + MD5Transform(context->state, context->buffer); + for (i = partlen; i + 64 <= inputlen; i += 64) + MD5Transform(context->state, &input[i]); + index = 0; + } + else + { + i = 0; + } + memcpy(&context->buffer[index], &input[i], inputlen - i); +} +void MD5_Final(unsigned char digest[16], MD5_CTX *context) +{ + unsigned int index = 0, padlen = 0; + unsigned char bits[8]; + index = (context->count[0] >> 3) & 0x3F; + padlen = (index < 56) ? (56 - index) : (120 - index); + MD5Encode(bits, context->count, 8); + MD5_Update(context, PADDING, padlen); + MD5_Update(context, bits, 8); + MD5Encode(digest, context->state, 16); +} +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len) +{ + unsigned int i = 0, j = 0; + while (j < len) + { + output[j] = input[i] & 0xFF; + output[j + 1] = (input[i] >> 8) & 0xFF; + output[j + 2] = (input[i] >> 16) & 0xFF; + output[j + 3] = (input[i] >> 24) & 0xFF; + i++; + j += 4; + } +} +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len) +{ + unsigned int i = 0, j = 0; + while (j < len) + { + output[i] = (input[j]) | + (input[j + 1] << 8) | + (input[j + 2] << 16) | + (input[j + 3] << 24); + i++; + j += 4; + } +} +void MD5Transform(unsigned int state[4], unsigned char block[64]) +{ + unsigned int a = state[0]; + unsigned int b = state[1]; + unsigned int c = state[2]; + unsigned int d = state[3]; + unsigned int x[64]; + MD5Decode(x, block, 64); + FF(a, b, c, d, x[0], 7, 0xd76aa478); /* 1 */ + FF(d, a, b, c, x[1], 12, 0xe8c7b756); /* 2 */ + FF(c, d, a, b, x[2], 17, 0x242070db); /* 3 */ + FF(b, c, d, a, x[3], 22, 0xc1bdceee); /* 4 */ + FF(a, b, c, d, x[4], 7, 0xf57c0faf); /* 5 */ + FF(d, a, b, c, x[5], 12, 0x4787c62a); /* 6 */ + FF(c, d, a, b, x[6], 17, 0xa8304613); /* 7 */ + FF(b, c, d, a, x[7], 22, 0xfd469501); /* 8 */ + FF(a, b, c, d, x[8], 7, 0x698098d8); /* 9 */ + FF(d, a, b, c, x[9], 12, 0x8b44f7af); /* 10 */ + FF(c, d, a, b, x[10], 17, 0xffff5bb1); /* 11 */ + FF(b, c, d, a, x[11], 22, 0x895cd7be); /* 12 */ + FF(a, b, c, d, x[12], 7, 0x6b901122); /* 13 */ + FF(d, a, b, c, x[13], 12, 0xfd987193); /* 14 */ + FF(c, d, a, b, x[14], 17, 0xa679438e); /* 15 */ + FF(b, c, d, a, x[15], 22, 0x49b40821); /* 16 */ + + /* Round 2 */ + GG(a, b, c, d, x[1], 5, 0xf61e2562); /* 17 */ + GG(d, a, b, c, x[6], 9, 0xc040b340); /* 18 */ + GG(c, d, a, b, x[11], 14, 0x265e5a51); /* 19 */ + GG(b, c, d, a, x[0], 20, 0xe9b6c7aa); /* 20 */ + GG(a, b, c, d, x[5], 5, 0xd62f105d); /* 21 */ + GG(d, a, b, c, x[10], 9, 0x2441453); /* 22 */ + GG(c, d, a, b, x[15], 14, 0xd8a1e681); /* 23 */ + GG(b, c, d, a, x[4], 20, 0xe7d3fbc8); /* 24 */ + GG(a, b, c, d, x[9], 5, 0x21e1cde6); /* 25 */ + GG(d, a, b, c, x[14], 9, 0xc33707d6); /* 26 */ + GG(c, d, a, b, x[3], 14, 0xf4d50d87); /* 27 */ + GG(b, c, d, a, x[8], 20, 0x455a14ed); /* 28 */ + GG(a, b, c, d, x[13], 5, 0xa9e3e905); /* 29 */ + GG(d, a, b, c, x[2], 9, 0xfcefa3f8); /* 30 */ + GG(c, d, a, b, x[7], 14, 0x676f02d9); /* 31 */ + GG(b, c, d, a, x[12], 20, 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH(a, b, c, d, x[5], 4, 0xfffa3942); /* 33 */ + HH(d, a, b, c, x[8], 11, 0x8771f681); /* 34 */ + HH(c, d, a, b, x[11], 16, 0x6d9d6122); /* 35 */ + HH(b, c, d, a, x[14], 23, 0xfde5380c); /* 36 */ + HH(a, b, c, d, x[1], 4, 0xa4beea44); /* 37 */ + HH(d, a, b, c, x[4], 11, 0x4bdecfa9); /* 38 */ + HH(c, d, a, b, x[7], 16, 0xf6bb4b60); /* 39 */ + HH(b, c, d, a, x[10], 23, 0xbebfbc70); /* 40 */ + HH(a, b, c, d, x[13], 4, 0x289b7ec6); /* 41 */ + HH(d, a, b, c, x[0], 11, 0xeaa127fa); /* 42 */ + HH(c, d, a, b, x[3], 16, 0xd4ef3085); /* 43 */ + HH(b, c, d, a, x[6], 23, 0x4881d05); /* 44 */ + HH(a, b, c, d, x[9], 4, 0xd9d4d039); /* 45 */ + HH(d, a, b, c, x[12], 11, 0xe6db99e5); /* 46 */ + HH(c, d, a, b, x[15], 16, 0x1fa27cf8); /* 47 */ + HH(b, c, d, a, x[2], 23, 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II(a, b, c, d, x[0], 6, 0xf4292244); /* 49 */ + II(d, a, b, c, x[7], 10, 0x432aff97); /* 50 */ + II(c, d, a, b, x[14], 15, 0xab9423a7); /* 51 */ + II(b, c, d, a, x[5], 21, 0xfc93a039); /* 52 */ + II(a, b, c, d, x[12], 6, 0x655b59c3); /* 53 */ + II(d, a, b, c, x[3], 10, 0x8f0ccc92); /* 54 */ + II(c, d, a, b, x[10], 15, 0xffeff47d); /* 55 */ + II(b, c, d, a, x[1], 21, 0x85845dd1); /* 56 */ + II(a, b, c, d, x[8], 6, 0x6fa87e4f); /* 57 */ + II(d, a, b, c, x[15], 10, 0xfe2ce6e0); /* 58 */ + II(c, d, a, b, x[6], 15, 0xa3014314); /* 59 */ + II(b, c, d, a, x[13], 21, 0x4e0811a1); /* 60 */ + II(a, b, c, d, x[4], 6, 0xf7537e82); /* 61 */ + II(d, a, b, c, x[11], 10, 0xbd3af235); /* 62 */ + II(c, d, a, b, x[2], 15, 0x2ad7d2bb); /* 63 */ + II(b, c, d, a, x[9], 21, 0xeb86d391); /* 64 */ + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; +} diff --git a/wuliclient/src/MD5.h b/wuliclient/src/MD5.h new file mode 100644 index 0000000..a9e2c79 --- /dev/null +++ b/wuliclient/src/MD5.h @@ -0,0 +1,48 @@ +#ifndef MD5_H +#define MD5_H + +typedef struct +{ + unsigned int count[2]; + unsigned int state[4]; + unsigned char buffer[64]; +}MD5_CTX; + + +#define F(x,y,z) ((x & y) | (~x & z)) +#define G(x,y,z) ((x & z) | (y & ~z)) +#define H(x,y,z) (x^y^z) +#define I(x,y,z) (y ^ (x | ~z)) +#define ROTATE_LEFT(x,n) ((x << n) | (x >> (32-n))) +#define FF(a,b,c,d,x,s,ac) \ + { \ + a += F(b,c,d) + x + ac; \ + a = ROTATE_LEFT(a,s); \ + a += b; \ + } +#define GG(a,b,c,d,x,s,ac) \ + { \ + a += G(b,c,d) + x + ac; \ + a = ROTATE_LEFT(a,s); \ + a += b; \ + } +#define HH(a,b,c,d,x,s,ac) \ + { \ + a += H(b,c,d) + x + ac; \ + a = ROTATE_LEFT(a,s); \ + a += b; \ + } +#define II(a,b,c,d,x,s,ac) \ + { \ + a += I(b,c,d) + x + ac; \ + a = ROTATE_LEFT(a,s); \ + a += b; \ + } +void MD5_Init(MD5_CTX *context); +void MD5_Update(MD5_CTX *context, unsigned char *input, unsigned int inputlen); +void MD5_Final(unsigned char digest[16], MD5_CTX *context); +void MD5Transform(unsigned int state[4], unsigned char block[64]); +void MD5Encode(unsigned char *output, unsigned int *input, unsigned int len); +void MD5Decode(unsigned int *output, unsigned char *input, unsigned int len); + +#endif diff --git a/wuliclient/src/Makefile b/wuliclient/src/Makefile new file mode 100644 index 0000000..546b44b --- /dev/null +++ b/wuliclient/src/Makefile @@ -0,0 +1,16 @@ +# build helloworld executable when user executes "make" + + PKG_NAME:=wuliclientBulidl + +$(PKG_NAME): MD5.o wuliclient.o + $(CC) $(LDFLAGS) MD5.o wuliclient.o -o $(PKG_NAME) + +MD5.o: MD5.c + $(CC) $(CFLAGS) -c MD5.c + +wuliclient.o: wuliclient.c + $(CC) $(CFLAGS) -c wuliclient.c + +# remove object files and executable when user executes "make clean" +clean: + rm *.o $(PKG_NAME) diff --git a/wuliclient/src/wuliclient.c b/wuliclient/src/wuliclient.c new file mode 100644 index 0000000..01ead4a --- /dev/null +++ b/wuliclient/src/wuliclient.c @@ -0,0 +1,864 @@ +/************************************************************************************************/ +/* Copyring (C), by K.L & lcuops */ +/************************************************************************************************/ +/** +* @file wuliclient.c +* @brief HC3 inode 7.1 protal anthenticate client +* @author K.L +* @version 1.0 +* @data 2017-2-27 +*/ + +/************************************************************************************************/ +/* Include Files */ +/************************************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "MD5.h" +#include + + +/************************************************************************************************/ +/* Macros & Typedefs */ +/************************************************************************************************/ +// #define _DEBUG + +#define SER_ADRE "10.0.15.103" //服务器地址 +#define SER_PORT 50200 //服务器端口号 +#define CALL_PORT 50101 //一开始的数据发往的端口 +#define MAXDATASIZE 1024 //缓存区的最大字节 +#define CHECK_ONLINE 120 //联网检测时间 +#define RECV_TIMEOUT 5 //接收超时 + + +/************************************************************************************************/ +/* Structre Declarations */ +/************************************************************************************************/ +typedef struct tar_PACKET_HEAD_S +{ + unsigned char version; + unsigned char type; + unsigned char pap_chap; + unsigned char rsvd; + unsigned short int serialNo; + unsigned short int reqId; + unsigned int userIp; + unsigned short int userPort; + unsigned char errCode; + unsigned char attNum; + +}PACKET_HEAD_S; + +/************************************************************************************************/ +/* Global Variables */ +/************************************************************************************************/ +char g_userId[15]; +char g_passwd[15]; +char g_eth_name[10]; +char userid[8]; +char UserPortInDev[31]; +char g_recv_buf[MAXDATASIZE]; +char g_packeType; +char g_Timelimit_flag; +int g_host_ip; +short int g_randNum; +unsigned int g_loginTimeOut; +unsigned int g_offset = 0; +PACKET_HEAD_S g_packHead_s; +unsigned int ser_infor_len; +struct sockaddr_in ser_infor_s; +struct sockaddr_in ser_addr_s; + + + + +const char *share_key = "hello"; +const char *vertion = "CH-7.10-0313"; +const char *ser_name = "@huawei2.com"; +const char call_pack[]={0x02,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0xba,0xd3,0x4e,0x49,0x6e,0x69,0x2e,0xab,0xff,0xd8,0x9e,0xca,0x49,0x9b,0xba,0xcb, + 0x68,0x06,0x00,0x00,0x00,0x00,0x67,0x06,0x00,0x00,0x00,0x00,0x65,0x09,0x68,0x75, + 0x61,0x33,0x63,0x6f,0x6d,0x66,0x09,0x68,0x75,0x61,0x33,0x63,0x6f,0x6d,0x71,0x06, + 0x02,0xbd,0xc0,0x70}; + +const char heartData[]={0x7a,0x06,0x00,0x00,0x00,0x00,0x78,0x06,0x00,0x00,0x00,0x01,0x7d,0x03,0x63,0x60, + 0x03,0x01} ; + + +//tmp +const char E_vertion[]={0x01,0x1e,0x4d,0x47,0x73,0x4f,0x48,0x78,0x6f,0x45,0x50,0x79,0x74,0x79,0x52,0x78, + 0x78,0x68,0x4a,0x31,0x5a,0x79,0x49,0x73,0x52,0x64,0x59,0x30,0x73,0x3d}; + +const char E_vertion2[]={0x06,0x07,0x4f,0x7a,0x64,0x56,0x54,0x55,0x68,0x66,0x59,0x79,0x42,0x35,0x47,0x30, + 0x63,0x7a,0x64,0x51,0x30,0x75,0x4b,0x52,0x48,0x54,0x4f,0x55,0x30,0x3d}; + +const char E_password[]={0x9a,0x4f,0x87,0x04,0x0b,0x9b,0xdc,0x23}; + + + + + +/************************************************************************************************/ +/* Function Declarations */ +/************************************************************************************************/ +/* NONE */ + +void free_memory(char *addr) +{ + if(NULL != addr){ + free(addr); + } +} + +void MD5(unsigned char *dst_str , unsigned char *src_str ,int leng) +{ + MD5_CTX ctx; + MD5_Init(&ctx); + MD5_Update(&ctx,src_str,leng); + MD5_Final(dst_str,&ctx); +} + +int addMd5(char *data,int len) +{ + char *md5Data = NULL; + char md5Code[16] = {0x000}; + + + md5Data = (char*)malloc(sizeof(char)*(len+5)); + if(NULL == md5Data){ + printf("malloc error\n"); + return -1; + } + + memcpy(md5Data, data, g_offset); + memcpy(md5Data+g_offset, share_key , 5); //add share_key + MD5(md5Code, md5Data, (g_offset + 5)); + memcpy(data+16, md5Code, 16); + + free_memory(md5Data); + + return 0; + +} + + +void disp_hex(unsigned char *data, int len) +{ + int cnt; + for(cnt=0; cnt 1000){ // > 1 second + + do{ + sleep(g_loginTimeOut); + ret = startHeartbeatthread(); + if(ret){ + break; + } + } + while(1); + + } + + +} + + +int main(int argc, char *argv[]) +{ + if(argc != 4){ + printf("输入账号密码错误,请重新输入\n"); + printf("格式:wuliclient 账号 密码 网卡名\n"); + printf("(目前只支持密码为默认密码:1234)\n"); + return -1; + } + + if( strcmp(argv[2], "1234") ){ + printf("抱歉,目前密码只支持默认密码1234\n"); + return -1; + } + + printf("-----------------------------------------\n"); + printf("WULICLIENT OF ZHBIT\n"); + printf("定制号:%s\n",g_userId); + printf("【声明】\n"); + printf("本版本仅作为学习交流之用,请于24小时内删除\n"); + printf("创作者:K.L & lcuops\n"); + printf("---------欢迎反馈问题---------\n"); + printf("反馈/交流 Email: kuling321@qq.com\n"); + printf("-----------------------------------------\n"); + + + strcpy(g_userId, argv[1]); + strcpy(g_passwd, argv[2]); + strcpy(g_eth_name, argv[3]); + #ifdef _DEBUG + printf("userid:%s\n",g_userId); + printf("passwd:%s\n",g_passwd); + #endif + + + + do{ + + /* get random number for serialNo of this connet */ + srand(time(NULL)); + g_randNum = rand(); + #ifdef _DEBUG + printf("randNum: "); + disp_hex((char *)&g_randNum, 2); + printf("\n"); + #endif + + /* start authenticate */ + authenticate(); + sleep(3); + + }while(1); + + + return 0; +} +