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

📄 msproxy_clientprotocol.c

📁 sock protocol ,it is useful!
💻 C
📖 第 1 页 / 共 4 页
字号:
	if (len < sizeof(res->clientack))		return NULL;	memcpy(&res->clientack, mem, sizeof(res->clientack));	mem += sizeof(res->clientack);	len -= sizeof(res->clientack);	if (len < sizeof(res->pad5))		return NULL;	memcpy(res->pad5, mem, sizeof(res->pad5));	mem += sizeof(res->pad5);	len -= sizeof(res->pad5);	if (len < sizeof(res->sequence))		return NULL;	memcpy(&res->sequence, mem, sizeof(res->sequence));	mem += sizeof(res->sequence);	len -= sizeof(res->sequence);	if (len < sizeof(res->pad10))		return NULL;	memcpy(res->pad10, mem, sizeof(res->pad10));	mem += sizeof(res->pad10);	len -= sizeof(res->pad10);	if (len < sizeof(res->RWSP))		return NULL;	memcpy(res->RWSP, mem, sizeof(res->RWSP));	mem += sizeof(res->RWSP);	len -= sizeof(res->RWSP);	if (len < sizeof(res->pad15))		return NULL;	memcpy(res->pad15, mem, sizeof(res->pad15));	mem += sizeof(res->pad15);	len -= sizeof(res->pad15);	if (len < sizeof(res->command))		return NULL;	memcpy(&res->command, mem, sizeof(res->command));	mem += sizeof(res->command);	len -= sizeof(res->command);	switch (ntohs(res->command)) {		case MSPROXY_HELLO_ACK:			if (len < sizeof(res->packet._1.pad5))				return NULL;			memcpy(res->packet._1.pad5, mem, sizeof(res->packet._1.pad5));			mem += sizeof(res->packet._1.pad5);			len -= sizeof(res->packet._1.pad5);			if (len < sizeof(res->packet._1.magic20))				return NULL;			memcpy(&res->packet._1.magic20, mem, sizeof(res->packet._1.magic20));			mem += sizeof(res->packet._1.magic20);			len -= sizeof(res->packet._1.magic20);			if (len < sizeof(res->packet._1.pad10))				return NULL;			memcpy(&res->packet._1.pad10, mem, sizeof(res->packet._1.pad10));			mem += sizeof(res->packet._1.pad10);			len -= sizeof(res->packet._1.pad10);			if (len < sizeof(res->packet._1.magic30))				return NULL;			memcpy(&res->packet._1.magic30, mem, sizeof(res->packet._1.magic30));			mem += sizeof(res->packet._1.magic30);			len -= sizeof(res->packet._1.magic30);			if (len < sizeof(res->packet._1.pad15))				return NULL;			memcpy(res->packet._1.pad15, mem, sizeof(res->packet._1.pad15));			mem += sizeof(res->packet._1.pad15);			len -= sizeof(res->packet._1.pad15);			if (len < sizeof(res->packet._1.magic35))				return NULL;			memcpy(&res->packet._1.magic35, mem, sizeof(res->packet._1.magic35));			mem += sizeof(res->packet._1.magic35);			len -= sizeof(res->packet._1.magic35);			if (len < sizeof(res->packet._1.pad20))				return NULL;			memcpy(res->packet._1.pad20, mem, sizeof(res->packet._1.pad20));			mem += sizeof(res->packet._1.pad20);			len -= sizeof(res->packet._1.pad20);			if (len < sizeof(res->packet._1.magic50))				return NULL;			memcpy(&res->packet._1.magic50, mem, sizeof(res->packet._1.magic50));			mem += sizeof(res->packet._1.magic50);			len -= sizeof(res->packet._1.magic50);			if (len < sizeof(res->packet._1.pad30))				return NULL;			memcpy(res->packet._1.pad30, mem, sizeof(res->packet._1.pad30));			mem += sizeof(res->packet._1.pad30);			len -= sizeof(res->packet._1.pad30);			if (len < sizeof(res->packet._1.magic60))				return NULL;			memcpy(&res->packet._1.magic60, mem, sizeof(res->packet._1.magic60));			mem += sizeof(res->packet._1.magic60);			len -= sizeof(res->packet._1.magic60);			if (len < sizeof(res->packet._1.pad35))				return NULL;			memcpy(res->packet._1.pad35, mem, sizeof(res->packet._1.pad35));			mem += sizeof(res->packet._1.pad35);			len -= sizeof(res->packet._1.pad35);			if (len < sizeof(res->packet._1.magic65))				return NULL;			memcpy(&res->packet._1.magic65, mem, sizeof(res->packet._1.magic65));			mem += sizeof(res->packet._1.magic65);			len -= sizeof(res->packet._1.magic65);			if (len < sizeof(res->packet._1.pad40))				return NULL;			memcpy(res->packet._1.pad40, mem, sizeof(res->packet._1.pad40));			mem += sizeof(res->packet._1.pad40);			len -= sizeof(res->packet._1.pad40);			if (len < sizeof(res->packet._1.udpport))				return NULL;			memcpy(&res->packet._1.udpport, mem, sizeof(res->packet._1.udpport));			mem += sizeof(res->packet._1.udpport);			len -= sizeof(res->packet._1.udpport);			if (len < sizeof(res->packet._1.udpaddr))				return NULL;			memcpy(&res->packet._1.udpaddr, mem, sizeof(res->packet._1.udpaddr));			mem += sizeof(res->packet._1.udpaddr);			len -= sizeof(res->packet._1.udpaddr);			break;		case MSPROXY_USERINFO_ACK:			if (len < sizeof(res->packet._2.pad5))				return NULL;			memcpy(res->packet._2.pad5, mem, sizeof(res->packet._2.pad5));			mem += sizeof(res->packet._2.pad5);			len -= sizeof(res->packet._2.pad5);			if (len < sizeof(res->packet._2.magic5))				return NULL;			memcpy(&res->packet._2.magic5, mem, sizeof(res->packet._2.magic5));			mem += sizeof(res->packet._2.magic5);			len -= sizeof(res->packet._2.magic5);			break;		case MSPROXY_BIND_ACK:		case MSPROXY_SOMETHING_1_ACK:			if (len < sizeof(res->packet._3.pad1))				return NULL;			memcpy(res->packet._3.pad1, mem, sizeof(res->packet._3.pad1));			mem += sizeof(res->packet._3.pad1);			len -= sizeof(res->packet._3.pad1);			if (len < sizeof(res->packet._3.magic10))				return NULL;			memcpy(&res->packet._3.magic10, mem, sizeof(res->packet._3.magic10));			mem += sizeof(res->packet._3.magic10);			len -= sizeof(res->packet._3.magic10);			if (len < sizeof(res->packet._3.pad3))				return NULL;			memcpy(res->packet._3.pad3, mem, sizeof(res->packet._3.pad3));			mem += sizeof(res->packet._3.pad3);			len -= sizeof(res->packet._3.pad3);			if (len < sizeof(res->packet._3.boundport))				return NULL;			memcpy(&res->packet._3.boundport, mem,			sizeof(res->packet._3.boundport));			mem += sizeof(res->packet._3.boundport);			len -= sizeof(res->packet._3.boundport);			if (len < sizeof(res->packet._3.boundaddr))				return NULL;			memcpy(&res->packet._3.boundaddr, mem,			sizeof(res->packet._3.boundaddr));			mem += sizeof(res->packet._3.boundaddr);			len -= sizeof(res->packet._3.boundaddr);			if (len < sizeof(res->packet._3.pad10))				return NULL;			memcpy(res->packet._3.pad10, mem, sizeof(res->packet._3.pad10));			mem += sizeof(res->packet._3.pad10);			len -= sizeof(res->packet._3.pad10);			if (len < sizeof(res->packet._3.magic15))				return NULL;			memcpy(&res->packet._3.magic15, mem, sizeof(res->packet._3.magic15));			mem += sizeof(res->packet._3.magic15);			len -= sizeof(res->packet._3.magic15);			if (len < sizeof(res->packet._3.pad15))				return NULL;			memcpy(res->packet._3.pad15, mem, sizeof(res->packet._3.pad15));			mem += sizeof(res->packet._3.pad15);			len -= sizeof(res->packet._3.pad15);			if (len < sizeof(res->packet._3.NTLMSSP))				return NULL;			memcpy(res->packet._3.NTLMSSP, mem, sizeof(res->packet._3.NTLMSSP));			mem += sizeof(res->packet._3.NTLMSSP);			len -= sizeof(res->packet._3.NTLMSSP);			if (len < sizeof(res->packet._3.magic50))				return NULL;			memcpy(&res->packet._3.magic50, mem, sizeof(res->packet._3.magic50));			mem += sizeof(res->packet._3.magic50);			len -= sizeof(res->packet._3.magic50);			if (len < sizeof(res->packet._3.pad50))				return NULL;			memcpy(res->packet._3.pad50, mem, sizeof(res->packet._3.pad50));			mem += sizeof(res->packet._3.pad50);			len -= sizeof(res->packet._3.pad50);			if (len < sizeof(res->packet._3.magic55))				return NULL;			memcpy(&res->packet._3.magic55, mem, sizeof(res->packet._3.magic55));			mem += sizeof(res->packet._3.magic55);			len -= sizeof(res->packet._3.magic55);			if (len < sizeof(res->packet._3.magic60))				return NULL;			memcpy(&res->packet._3.magic60, mem, sizeof(res->packet._3.magic60));			mem += sizeof(res->packet._3.magic60);			len -= sizeof(res->packet._3.magic60);			if (len < sizeof(res->packet._3.magic65))				return NULL;			memcpy(&res->packet._3.magic65, mem, sizeof(res->packet._3.magic65));			mem += sizeof(res->packet._3.magic65);			len -= sizeof(res->packet._3.magic65);			if (len < sizeof(res->packet._3.pad60))				return NULL;			memcpy(res->packet._3.pad60, mem, sizeof(res->packet._3.pad60));			mem += sizeof(res->packet._3.pad60);			len -= sizeof(res->packet._3.pad60);			if (len < sizeof(res->packet._3.magic70))				return NULL;			memcpy(&res->packet._3.magic70, mem, sizeof(res->packet._3.magic70));			mem += sizeof(res->packet._3.magic70);			len -= sizeof(res->packet._3.magic70);			if (len < sizeof(res->packet._3.magic75))				return NULL;			memcpy(&res->packet._3.magic75, mem, sizeof(res->packet._3.magic75));			mem += sizeof(res->packet._3.magic75);			len -= sizeof(res->packet._3.magic75);			if (len < sizeof(res->packet._3.pad70))				return NULL;			memcpy(res->packet._3.pad70, mem, sizeof(res->packet._3.pad70));			mem += sizeof(res->packet._3.pad70);			len -= sizeof(res->packet._3.pad70);			if (len > sizeof(res->packet._3.ntdomain))				swarnx("hmm, ntdomain length is %d, our max is %d?",				len, sizeof(res->packet._3.ntdomain) - 1);			memcpy(res->packet._3.ntdomain, mem,			MIN(len, sizeof(res->packet._3.ntdomain) - 1));			res->packet._3.ntdomain[len] = NUL;			mem += len;			len -= len;			break;		case MSPROXY_SOMETHING_2_ACK:		case MSPROXY_SOMETHING_2_ACK2:		case MSPROXY_BIND2_ACK:			if (len < sizeof(res->packet._4.pad5))				return NULL;			memcpy(res->packet._4.pad5, mem, sizeof(res->packet._4.pad5));			mem += sizeof(res->packet._4.pad5);			len -= sizeof(res->packet._4.pad5);			break;		case MSPROXY_RESOLVE_ACK: {			if (len < sizeof(res->packet.resolve.addroffset))				return NULL;			memcpy(&res->packet.resolve.addroffset, mem,			sizeof(res->packet.resolve.addroffset));			mem += sizeof(res->packet.resolve.addroffset);			len -= sizeof(res->packet.resolve.addroffset);			if (len < sizeof(res->packet.resolve.pad5))				return NULL;			memcpy(res->packet.resolve.pad5, mem,			sizeof(res->packet.resolve.pad5));			mem += sizeof(res->packet.resolve.pad5);			len -= sizeof(res->packet.resolve.pad5);			mem += res->packet.resolve.addroffset;			if (len < sizeof(res->packet.resolve.hostaddr))				return NULL;			memcpy(&res->packet.resolve.hostaddr, mem,			sizeof(res->packet.resolve.hostaddr));			mem += sizeof(res->packet.resolve.hostaddr);			len -= sizeof(res->packet.resolve.hostaddr);			break;		}		case MSPROXY_CONNECT_ACK:		case MSPROXY_BINDINFO:			if (len < sizeof(res->packet._5.magic1))				return NULL;			memcpy(&res->packet._5.magic1, mem, sizeof(res->packet._5.magic1));			mem += sizeof(res->packet._5.magic1);			len -= sizeof(res->packet._5.magic1);			if (len < sizeof(res->packet._5.pad5))				return NULL;			memcpy(res->packet._5.pad5, mem, sizeof(res->packet._5.pad5));			mem += sizeof(res->packet._5.pad5);			len -= sizeof(res->packet._5.pad5);			if (len < sizeof(res->packet._5.clientport))				return NULL;			memcpy(&res->packet._5.clientport, mem,			sizeof(res->packet._5.clientport));			mem += sizeof(res->packet._5.clientport);			len -= sizeof(res->packet._5.clientport);			if (len < sizeof(res->packet._5.clientaddr))				return NULL;			memcpy(&res->packet._5.clientaddr, mem,			sizeof(res->packet._5.clientaddr));			mem += sizeof(res->packet._5.clientaddr);			len -= sizeof(res->packet._5.clientaddr);			if (len < sizeof(res->packet._5.magic10))				return NULL;			memcpy(&res->packet._5.magic10, mem, sizeof(res->packet._5.magic10));			mem += sizeof(res->packet._5.magic10);			len -= sizeof(res->packet._5.magic10);			if (len < sizeof(res->packet._5.magic15))				return NULL;			memcpy(&res->packet._5.magic15, mem, sizeof(res->packet._5.magic15));			mem += sizeof(res->packet._5.magic15);			len -= sizeof(res->packet._5.magic15);			if (len < sizeof(res->packet._5.serverport))				return NULL;			memcpy(&res->packet._5.serverport, mem,			sizeof(res->packet._5.serverport));			mem += sizeof(res->packet._5.serverport);			len -= sizeof(res->packet._5.serverport);			if (len < sizeof(res->packet._5.srcport))				return NULL;			memcpy(&res->packet._5.srcport, mem, sizeof(res->packet._5.srcport));			mem += sizeof(res->packet._5.srcport);			len -= sizeof(res->packet._5.srcport);			if (len < sizeof(res->packet._5.boundport))				return NULL;			memcpy(&res->packet._5.boundport, mem,			sizeof(res->packet._5.boundport));			mem += sizeof(res->packet._5.boundport);			len -= sizeof(res->packet._5.boundport);			if (len < sizeof(res->packet._5.boundaddr))				return NULL;			memcpy(&res->packet._5.boundaddr, mem,			sizeof(res->packet._5.boundaddr));			mem += sizeof(res->packet._5.boundaddr);			len -= sizeof(res->packet._5.boundaddr);			if (len < sizeof(res->packet._5.pad10))				return NULL;			memcpy(res->packet._5.pad10, mem, sizeof(res->packet._5.pad10));			mem += sizeof(res->packet._5.pad10);			len -= sizeof(res->packet._5.pad10);			break;		case MSPROXY_CONNECT_AUTHFAILED:		case MSPROXY_BIND_AUTHFAILED:			break;		default:			if (ntohs(res->command) >> 8 == MSPROXY_CONNREFUSED			||  ntohs(res->command) >> 12 == MSPROXY_CONNREFUSED)				;			else				slog(LOG_DEBUG, "%s: unknown command in msproxy reply: 0x%x",				function, ntohs(res->command));	}	return mem;}static char *request2mem(req, mem)	const struct msproxy_request_t *req;	char *mem;{	memcpy(mem, &req->clientid, sizeof(req->clientid));	mem += sizeof(req->clientid);	memcpy(mem, &req->magic25, sizeof(req->magic25));	mem += sizeof(req->magic25);	memcpy(mem, &req->serverid, sizeof(req->serverid));	mem += sizeof(req->serverid);	memcpy(mem, &req->serverack, sizeof(req->serverack));	mem += sizeof(req->serverack);	memcpy(mem, &req->pad10, sizeof(req->pad10));	mem += sizeof(req->pad10);	memcpy(mem, &req->sequence, sizeof(req->sequence));	mem += sizeof(req->sequence);	memcpy(mem, &req->pad11, sizeof(req->pad11));	mem += sizeof(req->pad11);	memcpy(mem, &req->RWSP, sizeof(req->RWSP));	mem += sizeof(req->RWSP);	memcpy(mem, &req->pad15, sizeof(req->pad15));	mem += sizeof(req->pad15);	memcpy(mem, &req->command, sizeof(req->command));	mem += sizeof(req->command);	switch (ntohs(req->command)) {		case MSPROXY_HELLO:			memcpy(mem, &req->packet._1.pad1, sizeof(req->packet._1.pad1));			mem += sizeof(req->packet._1.pad1);			memcpy(mem, &req->packet._1.magic3, sizeof(req->packet._1.magic3));			mem += sizeof(req->packet._1.magic3);			memcpy(mem, &req->packet._1.pad3, sizeof(req->packet._1.pad3));			mem += sizeof(req->packet._1.pad3);			memcpy(mem, &req->packet._1.magic5, sizeof(req->packet._1.magic5));			mem += sizeof(req->packet._1.magic5);			memcpy(mem, &req->packet._1.pad5, sizeof(req->packet._1.pad5));			mem += sizeof(req->packet._1.pad5);			memcpy(mem, &req->packet._1.magic10, sizeof(req->packet._1.magic10));			mem += sizeof(req->packet._1.magic10);			memcpy(mem, &req->packet._1.pad6, sizeof(req->packet._1.pad6));			mem += sizeof(req->packet._1.pad6);			memcpy(mem, &req->packet._1.magic15, sizeof(req->packet._1.magic15));			mem += sizeof(req->packet._1.magic15);			memcpy(mem, &req->packet._1.pad10, sizeof(req->packet._1.pad10));			mem += sizeof(req->packet._1.pad10);			memcpy(mem, &req->packet._1.magic20, sizeof(req->packet._1.magic20));			mem += sizeof(req->packet._1.magic20);			memcpy(mem, &req->packet._1.magic25, sizeof(req->packet._1.magic25));			mem += sizeof(req->packet._1.magic25);			memcpy(mem, &req->packet._1.magic30, sizeof(req->packet._1.magic30));			mem += sizeof(req->packet._1.magic30);			memcpy(mem, &req->packet._1.pad20, sizeof(req->packet._1.pad20));			mem += sizeof(req->packet._1.pad20);			memcpy(mem, &req->packet._1.magic35, sizeof(req->packet._1.magic35));			mem += sizeof(req->packet._1.magic35);			memcpy(mem, &req->packet._1.pad30, sizeof(req->packet._1.pad30));			mem += sizeof(req->packet._1.pad30);			memcpy(mem, &req->packet._1.magic40, sizeof(req->packet._1.magic40));

⌨️ 快捷键说明

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