亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? login.c

?? 校園網(wǎng)撥號(hào)端軟件
?? C
字號(hào):
/*	libdrcom - Library for communicating with DrCOM 2133 Broadband Access Server	Copyright (C) 2005 William Poetra Yoga Hadisoeseno <williampoetra@yahoo.com>	This program is free software; you can redistribute it and/or modify	it under the terms of the GNU General Public License as published by	the Free Software Foundation; either version 2 of the License, or	(at your option) any later version.	This program is distributed in the hope that it will be useful,	but WITHOUT ANY WARRANTY; without even the implied warranty of	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the	GNU General Public License for more details.	You should have received a copy of the GNU General Public License	along with this program; if not, write to the Free Software	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA	02111-1307	USA*/#include <stdio.h>#include <string.h>#include <errno.h>#include <stdlib.h>#include <pthread.h>#include "md5.h"#include "drcomd.h"#include "daemon_server.h"#include "client_daemon.h"#include "log.h"static void _build_login_packet(struct drcom_login_packet *login_packet, 			struct drcom_info *info, struct drcom_host *host, 			struct drcom_challenge *challenge){	char s[25];	unsigned char t[22], d[16];	int i, passwd_len;	/* header */	login_packet->host_header.pkt_type = PKT_LOGIN;	login_packet->host_header.zero = 0;	login_packet->host_header.len = strlen(info->username) + 			sizeof(struct drcom_host_header);	memset(t, 0, 22);	memcpy(t, &login_packet->host_header.pkt_type, 2);	memcpy(t + 2, &challenge->challenge, 4);	passwd_len = strlen(info->password);	strncpy((char *) (t + 6), info->password, 16);	MD5((unsigned char *) t, passwd_len + 6, d);	memcpy(login_packet->host_header.checksum, d, 16);	/* username */	memset(login_packet->username, 0, 36);	strncpy(login_packet->username, info->username, 36);	/* unknown, maybe just a signature? */	login_packet->unknown0 = 0x18;	/* mac */	login_packet->mac_code = 1;	memcpy(login_packet->mac_xor, info->mac, 6);	for (i = 0; i < 6; ++i)		login_packet->mac_xor[i] ^= login_packet->host_header.checksum[i];	/* ok, first checksum */	/* l already calculated */	/* l = strlen(info->password); */	s[0] = 0x01;	memcpy(s + 1, info->password, passwd_len);	memcpy(s + 1 + passwd_len, &challenge->challenge, 4);	memset(s + 1 + passwd_len + 4, 0, 4);	MD5((unsigned char *) s, 1 + passwd_len + 4 + 4, d);	memcpy(login_packet->checksum1, d, 16);	/* nic */	login_packet->num_nic = 1;	memcpy(login_packet->nic, info->nic, 16);	/* second checksum */	login_packet->checksum2_half[0] = 0x14;	login_packet->checksum2_half[1] = 0x00;	login_packet->checksum2_half[2] = 0x07;	login_packet->checksum2_half[3] = 0x0b;	MD5((unsigned char *) login_packet, 0x65, d);	memcpy(login_packet->checksum2_half, d, 8);	/* we've got a dog */	login_packet->dog = 1;	/* host info */	memset(login_packet->zero1, 0, 4);	memcpy(&login_packet->host_info, host, sizeof(struct drcom_host));	memset(login_packet->zero2, 0, 96);	/* wtf? */	login_packet->unknown1 = 0x01;	login_packet->unknown2 = 0x00;	login_packet->unknown3[0] = 0x01;	login_packet->unknown3[1] = 0x08;	/* maybe we should use something random instead? *//*	memset(login_packet->unknown4, 0, 8);*/	login_packet->unknown4[0] = 0x00;	login_packet->unknown4[1] = 0xf0;	login_packet->unknown4[2] = 0x66;	login_packet->unknown4[3] = 0x33;	login_packet->unknown4[4] = 0x72;	login_packet->unknown4[5] = 0x5b;	login_packet->unknown4[6] = 0xc4;	login_packet->unknown4[7] = 0x01;/*	memcpy(login_packet->unknown4, d + 8, 8);*/	return;}static inline void _build_authentication(struct drcom_auth *auth, struct drcom_acknowledgement *acknowledgement){	memcpy(auth, &acknowledgement->auth_info, sizeof(struct drcom_auth));}static void _build_keepalive(struct drcom_host_msg *keepalive, struct drcom_login_packet *login_packet, struct drcom_acknowledgement *acknowledgement){	keepalive->msgtype = 0xff;	memset(keepalive->msg, 0, 19);	memcpy(keepalive->msg, login_packet->host_header.checksum, 16);	memcpy(&keepalive->auth_info, &acknowledgement->auth_info, sizeof(struct drcom_auth));	return;}static void add_except_address(struct drcom_handle *h, unsigned char *pkt, int pkt_size){	struct drcom_acknowledgement *ack = (struct drcom_acknowledgement *)pkt;	struct except_tuple *tuple = ack->tuple;		while ((unsigned char *)tuple + sizeof(struct except_tuple) <= pkt + pkt_size) {		if (tuple->addr == 0)			return;		if (tuple->zero0 == 0x00000001)			return;		add_except(h->conf, tuple->addr, tuple->mask);/*		loginfo("add except:%u.%u.%u.%u/%u.%u.%u.%u\n", NIPQUAD(tuple->addr), NIPQUAD(tuple->mask));*/		tuple++;	}}static int drcom_login(int s2, struct drcom_handle *h, int timeout){	struct drcom_socks *socks = (struct drcom_socks *) h->socks;	struct drcom_info *info = (struct drcom_info *) h->info;	struct drcom_host *host = (struct drcom_host *) h->host;	struct drcom_host_msg *response = (struct drcom_host_msg *) h->response;	struct drcom_host_msg *keepalive = (struct drcom_host_msg *) h->keepalive;	struct drcom_auth *auth = (struct drcom_auth *) h->auth;	struct drcom_challenge *challenge;	struct drcom_login_packet login_packet;	struct drcom_acknowledgement *acknowledgement;	int retry=0;	unsigned char *pkt;	int pkt_size;	int ret;	(void)timeout;try_it_again_1:	retry++;	if(retry>3)		return -1;	if(_send_dialog_packet(socks, NULL, PKT_REQUEST)<0){		report_daemon_msg(s2, "_send_dialog_packet(PKT_REQUEST) failed\n");		return -1;	}	ret = _recv_dialog_packet(socks, &pkt, &pkt_size);	if (ret < 0 || pkt_size < sizeof(struct drcom_challenge)) {		if (pkt)			free(pkt);		report_daemon_msg(s2, "_recv_dialog_packet(PKT_CHALLENGE) failed\n");		goto try_it_again_1;	}		challenge = (struct drcom_challenge *)pkt;	if (challenge->serv_header.pkt_type != PKT_CHALLENGE) {		free(pkt);		report_daemon_msg(s2, "_recv_dialog_packet(PKT_CHALLENGE) returned non-challenge pkt\n");		goto try_it_again_1;	}	/* Now the _real_ ip address of the server is known */	info->servip = socks->servaddr_in.sin_addr.s_addr;	_build_login_packet(&login_packet, info, host, challenge);	free(pkt);	retry=0;try_it_again_2:	retry++;	if(retry>3)		return -1;	if(_send_dialog_packet(socks, &login_packet, PKT_LOGIN)<0){		report_daemon_msg(s2, "_send_dialog_packet(PKT_LOGIN) failed\n");		return -1;	}	ret = _recv_dialog_packet(socks, &pkt, &pkt_size);	report_daemon_msg(s2, "received server ACK(pkt_size=%d)\n", pkt_size);	if (ret < 0) {		if (pkt)			free(pkt);		report_daemon_msg(s2, "_recv_dialog_packet(PKT_ACK_SUCCESS) failed\n");		goto try_it_again_2;	}	acknowledgement = (struct drcom_acknowledgement *)pkt;	if (acknowledgement->serv_header.pkt_type != PKT_ACK_SUCCESS) {		free(pkt);		report_daemon_msg(s2, "Server acknowledged failure\n");		return -1;	}	add_except_address(h, pkt, pkt_size);	_build_authentication(auth, acknowledgement);	_build_keepalive(keepalive, &login_packet, acknowledgement);	memcpy(response, keepalive, sizeof(*keepalive));	report_daemon_msg(s2, "Login Succeeded\n");	report_daemon_msg(s2, "You have used %u Minutes, and %uK bytes\n", 		acknowledgement->time_usage, acknowledgement->vol_usage);	free(pkt);	return 0;}static void recv_initial_server_msg(struct drcom_handle *h){	(void)h;}void do_command_login(int s2, struct drcom_handle *h){	struct drcomcd_login cd_login;	int r;	r = safe_recv(s2, &cd_login, sizeof(struct drcomcd_login));	if (r != sizeof(struct drcomcd_login)) {		logerr("daemon: recv: %s", strerror(errno));		return;	}	if(status != STATUS_IDLE){		report_daemon_msg(s2, "Error, Already logged in\n");		report_final_result(s2, h, DRCOMCD_FAILURE);		return;	}	status = STATUS_BUSY;	r = server_sock_init(h);	if(r!=0){		status = STATUS_IDLE;		report_daemon_msg(s2, "Cannot create socket to server\n");		report_final_result(s2, h, DRCOMCD_FAILURE);		return;	}	r = drcom_login(s2, h, cd_login.timeout);	if(r != 0){		status = STATUS_IDLE;		server_sock_destroy(h);		report_daemon_msg(s2, "Login failed\n");		report_final_result(s2, h, DRCOMCD_FAILURE);		return;	}	status = STATUS_LOGGED_IN;	recv_initial_server_msg(h);	module_start_auth(h);	pthread_create(&th_watchport,NULL,daemon_watchport, h);	pthread_create(&th_keepalive,NULL,daemon_keepalive, h);	report_final_result(s2, h, DRCOMCD_SUCCESS);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产福利| 国产亲近乱来精品视频 | 成人手机电影网| 美女看a上一区| 丝瓜av网站精品一区二区| 亚洲最快最全在线视频| 亚洲精品中文字幕乱码三区| 18涩涩午夜精品.www| 一区二区中文视频| 一区二区欧美精品| 麻豆久久一区二区| 欧美福利视频一区| 99久久国产综合精品女不卡| 日本视频一区二区| 秋霞成人午夜伦在线观看| 日韩国产精品91| 美女网站色91| 国产精品资源站在线| 成熟亚洲日本毛茸茸凸凹| 不卡高清视频专区| 91黄色免费版| 91传媒视频在线播放| 色哟哟国产精品| 欧美高清视频一二三区| 欧美一区二区三区免费观看视频| 欧美电影精品一区二区| 久久精品综合网| 亚洲免费av网站| 午夜久久久久久| 一区二区三区四区高清精品免费观看 | 欧美午夜不卡在线观看免费| 色成年激情久久综合| 欧美精品日韩综合在线| 国产午夜亚洲精品羞羞网站| 国产精品国产成人国产三级| 婷婷开心激情综合| 国产成人自拍网| 欧美视频第二页| 国产日韩三级在线| 婷婷久久综合九色国产成人| 国产盗摄精品一区二区三区在线| 色88888久久久久久影院野外| 欧美不卡在线视频| 一区二区三区在线观看视频| 亚洲国产精品久久艾草纯爱| 久久久久97国产精华液好用吗| 久久久av毛片精品| 亚洲色欲色欲www| 理论片日本一区| 日本韩国欧美在线| 久久精品视频免费| 欧美aaaaaa午夜精品| 一本久久a久久精品亚洲| 久久新电视剧免费观看| 亚洲图片欧美综合| 99re热这里只有精品视频| 欧美草草影院在线视频| 午夜一区二区三区视频| 不卡av免费在线观看| 中文字幕永久在线不卡| 国产一区二区三区在线观看精品 | 最近中文字幕一区二区三区| 日本三级韩国三级欧美三级| 亚洲欧美中日韩| 五月婷婷综合在线| 99精品欧美一区二区三区小说 | 国产成人鲁色资源国产91色综 | 欧美经典一区二区| 美女视频黄a大片欧美| 欧美三级午夜理伦三级中视频| 中文字幕电影一区| 国产成人在线电影| 久久亚洲欧美国产精品乐播 | 26uuu精品一区二区三区四区在线| 一区二区三区不卡在线观看 | 亚洲成人先锋电影| 欧洲色大大久久| 亚洲一二三专区| 欧美日韩视频不卡| 一个色在线综合| av电影天堂一区二区在线观看| 日韩高清不卡一区| youjizz久久| 国产精品国产三级国产专播品爱网 | 美女免费视频一区二区| 91精品国产一区二区| 日韩电影在线看| 精品欧美一区二区三区精品久久| 日av在线不卡| 久久久久久久久久久99999| 国产乱码一区二区三区| 亚洲免费观看在线视频| 91视频你懂的| 亚洲综合色网站| 91精品久久久久久久91蜜桃| 久久精品国产999大香线蕉| 精品国产免费一区二区三区香蕉| 久久99蜜桃精品| 欧美极品aⅴ影院| 精品处破学生在线二十三| 欧美在线视频全部完| 欧美日韩国产一级| 欧美a级一区二区| 久久久久久久网| 99精品视频一区二区三区| 亚洲一区在线观看免费观看电影高清 | 久久国产精品第一页| 国产欧美一区二区精品仙草咪| 成人精品国产一区二区4080| 亚洲一区二区三区视频在线播放| 欧美高清精品3d| 成人aa视频在线观看| 视频一区二区三区入口| 久久精品视频在线免费观看| 欧美中文字幕一二三区视频| 久久精品国产999大香线蕉| 亚洲视频中文字幕| 欧美一区二区三区四区五区| 成人av高清在线| 制服丝袜在线91| 欧美在线观看视频在线| 国内外成人在线视频| 亚洲少妇30p| 欧美成人在线直播| 欧美色欧美亚洲另类二区| 精品一二线国产| 亚洲国产乱码最新视频| 久久精品视频免费观看| 欧美一区二区三区免费| 色哟哟精品一区| 成人性生交大片免费看中文| 秋霞午夜鲁丝一区二区老狼| 蜜桃一区二区三区四区| 亚洲国产一区在线观看| 国产精品国产三级国产普通话蜜臀| 欧美精品乱码久久久久久| 99久免费精品视频在线观看| 精一区二区三区| 婷婷一区二区三区| 亚洲伊人色欲综合网| 亚洲色图在线看| 欧美激情在线一区二区三区| 欧美成人a∨高清免费观看| 欧美片在线播放| 欧美亚洲一区二区在线| 91蜜桃免费观看视频| 99精品国产99久久久久久白柏| 国产一区二区在线看| 狠狠色狠狠色综合日日91app| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成人在线网站| 亚洲视频免费在线| 精品国产91久久久久久久妲己 | 极品少妇一区二区| 欧美日韩国产乱码电影| 色噜噜狠狠一区二区三区果冻| 成人免费视频视频在线观看免费| 久久99精品久久久| 精品制服美女久久| 国内精品伊人久久久久av影院 | 国产日韩精品视频一区| 精品久久久久久久人人人人传媒| 制服丝袜中文字幕亚洲| 日韩精品一区二区三区视频在线观看 | 国产成a人亚洲| 国产精品午夜在线观看| 亚洲成人av福利| 五月综合激情日本mⅴ| 偷偷要91色婷婷| 精品制服美女丁香| 国产福利精品一区二区| 99国产精品国产精品久久| 91丝袜美腿高跟国产极品老师 | 国产精品乱码人人做人人爱| 中文字幕精品一区二区精品绿巨人| 国产女同性恋一区二区| 亚洲欧美自拍偷拍色图| 亚洲成人综合在线| 男女激情视频一区| 国产精品1024| 91九色最新地址| 欧美sm极限捆绑bd| 中文字幕乱码亚洲精品一区| 亚洲成人动漫在线观看| 黄色资源网久久资源365| 国产99久久久国产精品潘金| 老司机免费视频一区二区 | 蜜臀av一区二区三区| 久草中文综合在线| 99精品在线观看视频| 欧美午夜精品一区二区蜜桃| 欧美不卡一二三| 亚洲欧美偷拍三级| 激情小说欧美图片| 91网址在线看| 2022国产精品视频| 亚洲自拍与偷拍| 成人午夜精品在线| 欧美狂野另类xxxxoooo| 国产精品久久久久一区|