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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sids.c

?? 開源的防火墻代碼
?? C
字號:
/* Copyright (c) 2002-2005 Vladislav Goncharov.
*
* Redistribution and use in source forms, with and without modification,
* are permitted provided that this entire comment appears intact.
*
* Redistribution in binary form may occur without any restrictions.
*
* This software is provided ``AS IS'' without any warranties of any kind.
*/

// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil -*- (for GNU Emacs)
//
// $Id: sids.c,v 1.1 2005/03/15 15:44:26 vlad Exp $

/*
* Working with SID bitmasks
*/

#include <ntddk.h>
#include "sock.h"

#include "ipc.h"
#include "memtrack.h"
#include "sids.h"
#include "tdi_fw.h"

struct sid_nfo
{
	ULONG	sid_len;
	char	sid_data[];
};

static struct
{
	char		*buf;
	struct		sid_nfo *list[MAX_SIDS_COUNT];
	int			count;
	KSPIN_LOCK	guard;
} g_sids;

void	sids_init(void)
{
	KeInitializeSpinLock(&g_sids.guard);
}

NTSTATUS	set_sid_list(char *buf, ULONG size)
{
	KIRQL irql;
	NTSTATUS status;
	ULONG pos;
	int i;
	
	KeAcquireSpinLock(&g_sids.guard, &irql);
	
	// first, free information
	if (g_sids.buf != NULL)
		{
		free(g_sids.buf);
		g_sids.buf = NULL;
		}
	memset(g_sids.list, 0, sizeof(g_sids.list));
	g_sids.count = 0;
	
	if (size != 0)
		{
		// copy buffer
		g_sids.buf = (char *)malloc_np(size);
		if (g_sids.buf == NULL)
			{
			KdPrint(("[tdi_fw] set_sid_list: malloc_np!\n"));
			status = STATUS_INSUFFICIENT_RESOURCES;
			goto done;
			}
		memcpy(g_sids.buf, buf, size);
		
		// parse buffer and find struct sid_nfo
		for (pos = 0, i = 0; pos + sizeof(struct sid_nfo) < size && i < MAX_SIDS_COUNT; i++)
			{
			struct sid_nfo *nfo = (struct sid_nfo *)&g_sids.buf[pos];
			
			if (pos + sizeof(*nfo) + nfo->sid_len > size)
				break;
			
			g_sids.list[i] = nfo;
			
			pos += sizeof(*nfo) + nfo->sid_len;
			}
		
		g_sids.count = i;
		
		if (pos == size)
			status = STATUS_SUCCESS;
		else
			status = STATUS_INVALID_PARAMETER;
		}
	else
		status = STATUS_SUCCESS;
	
	done:
	KeReleaseSpinLock(&g_sids.guard, irql);
	return status;
}

#define SeLengthSid(sid)    (8 + 4 * ((unsigned char *)(sid))[1])

int	get_sid_id(struct _SID_AND_ATTRIBUTES *sid_a, ULONG sid_a_size)
{
	// doing linear search (optimize?)
	KIRQL irql;
	int i, result = 0;
	
	KdPrint(("[tdi_fw] get_sid_id: (sid_size = %u/%u)\n",
		SeLengthSid(sid_a->Sid), sid_a_size));
	
	KeAcquireSpinLock(&g_sids.guard, &irql);
	
	for (i = 1; i < g_sids.count; i++)
		{
		// comparing sids byte by byte (can't call RtlEqualSid() due to DISPATCH_LEVEL)
		
		KdPrint(("[tdi_fw] get_sid_id: sid #%d size %u\n", i, SeLengthSid((PSID)g_sids.list[i]->sid_data)));
		
		if (SeLengthSid(sid_a->Sid) == SeLengthSid((PSID)g_sids.list[i]->sid_data) &&
			memcmp(sid_a->Sid, (PSID)g_sids.list[i]->sid_data, SeLengthSid(sid_a->Sid)) == 0)
			{
			result = i;
			break;
			}
		}
	
	KeReleaseSpinLock(&g_sids.guard, irql);
	
	KdPrint(("[tdi_fw] get_sid_id: %d\n", result));
	return result;
}

#define CURRENT_THREAD	(HANDLE)-2
#define CURRENT_PROCESS	(HANDLE)-1

#define TOKEN_QUERY		0x0008

struct _SID_AND_ATTRIBUTES *	get_current_sid_a(ULONG *sid_a_size)		// must be called at PASSIVE_LEVEL!
{
	NTSTATUS status;
	HANDLE token;
	ULONG size;
	SID_AND_ATTRIBUTES *sid_a;
	
	*sid_a_size = 0;
	
	// open thread token
	status = ZwOpenThreadToken(CURRENT_THREAD, TOKEN_QUERY, FALSE, &token);
	if (status == STATUS_NO_TOKEN)
		{
		// open process token
		status = ZwOpenProcessToken(CURRENT_PROCESS, TOKEN_QUERY, &token);
		}
	if (status != STATUS_SUCCESS)
		{
		KdPrint(("[tdi_fw] get_current_sid_a: ZwOpen{Thread|Process}Token: 0x%x!\n"));
		return NULL;
		}
	
	size = sizeof(*sid_a) + 100;		// default size
	
	sid_a = (SID_AND_ATTRIBUTES *)malloc_np(size);
	if (sid_a == NULL)
		{
		KdPrint(("[tdi_fw] get_current_sid_a: malloc_np!\n"));
		goto done;
		}
	
	status = ZwQueryInformationToken(token, TokenUser, sid_a, size, &size);
	if (status == STATUS_BUFFER_TOO_SMALL)
		{
		free(sid_a);
		
		sid_a = (SID_AND_ATTRIBUTES *)malloc_np(size);
		if (sid_a == NULL)
			{
			KdPrint(("[tdi_fw] get_current_sid_a: malloc_np!\n"));
			goto done;
			}
		
		status = ZwQueryInformationToken(token, TokenUser, sid_a, size, &size);
		}
	if (status != STATUS_SUCCESS)
		{
		KdPrint(("[tdi_fw] get_current_sid_a: ZwQueryInformationToken: 0x%x!\n"));
		
		free(sid_a);
		sid_a = NULL;
		goto done;
		}
	
	// got sid & attributes!
	
	*sid_a_size = size;
	
	done:
	ZwClose(token);
	return sid_a;
}

struct _SID_AND_ATTRIBUTES *	copy_sid_a(SID_AND_ATTRIBUTES *sid_a, ULONG sid_a_size)
{
	SID_AND_ATTRIBUTES *result;
	
	if (sid_a == NULL)
		return NULL;
	
	result = (SID_AND_ATTRIBUTES *)malloc_np(sid_a_size);
	if (result == NULL)
		return NULL;
	
	memcpy(result, sid_a, sid_a_size);
	
	result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);
	
	return result;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲蜜桃精久久久久久久| 欧美日韩在线播放三区四区| 精品一区二区免费在线观看| 极品尤物av久久免费看| 欧美成人精品高清在线播放| 国产精品久久久久久久蜜臀| 亚洲成人激情社区| 韩国女主播成人在线观看| 91极品视觉盛宴| 久久精品人人爽人人爽| 亚洲资源在线观看| 国产一区在线不卡| 欧美日韩免费电影| 日本一区二区在线不卡| 青青青伊人色综合久久| k8久久久一区二区三区| 欧美一区二区三区在线观看 | 久久成人久久爱| 色香蕉成人二区免费| 久久久久久亚洲综合影院红桃 | 不卡一卡二卡三乱码免费网站| 欧美日本乱大交xxxxx| 蜜臀av性久久久久蜜臀av麻豆| 欧美亚洲国产bt| |精品福利一区二区三区| 国产一区中文字幕| 一区二区在线观看视频在线观看| 成人开心网精品视频| 亚洲精品一线二线三线无人区| 日韩电影免费在线看| 欧美色图一区二区三区| 久久国产视频网| 最新国产の精品合集bt伙计| 粉嫩嫩av羞羞动漫久久久| 久久亚区不卡日本| 国产精品一区二区男女羞羞无遮挡| 日韩视频一区二区三区| 蜜臀久久99精品久久久久宅男 | 国内精品不卡在线| 亚洲一区二区三区视频在线播放| www国产亚洲精品久久麻豆| 91看片淫黄大片一级在线观看| 亚洲三级免费电影| 欧美大片一区二区| 经典三级在线一区| 一区二区三区精品在线| 欧美精品 日韩| 久久99精品久久久久| 亚洲天堂免费看| 久久亚洲一区二区三区明星换脸| 欧美日韩一级大片网址| 99久久99久久精品国产片果冻| 自拍偷拍亚洲综合| 久久亚洲精品国产精品紫薇| 欧美三级三级三级爽爽爽| 成人精品一区二区三区中文字幕| 日韩国产欧美三级| 亚洲在线观看免费| 亚洲人成亚洲人成在线观看图片| 久久综合九色综合97婷婷| 777xxx欧美| 福利一区二区在线观看| 美女视频网站久久| 日韩国产一二三区| 亚洲va天堂va国产va久| 亚洲精品日韩专区silk| 亚洲色图制服丝袜| 亚洲欧洲精品一区二区三区不卡| 久久久久久麻豆| 久久久久久久性| 国产欧美日韩在线看| 久久亚洲一级片| 久久久久久久久久看片| 久久综合久久99| 久久亚洲精精品中文字幕早川悠里| 日韩欧美资源站| 日韩欧美国产一区二区三区| 欧美一区二区三区成人| 日韩欧美一级片| 精品国产三级电影在线观看| 精品国产免费人成电影在线观看四季| 欧美一区二区美女| 欧美va在线播放| 久久久精品免费网站| 久久精品一二三| 中文字幕一区二区三中文字幕| 中文字幕欧美三区| 欧美一级一级性生活免费录像| 欧美人妇做爰xxxⅹ性高电影| 欧美三级日韩在线| 欧美一区二区三区的| 日韩欧美在线观看一区二区三区| 日韩精品在线看片z| 亚洲精品在线免费观看视频| 欧美国产一区二区| 亚洲免费毛片网站| 亚洲444eee在线观看| 蜜桃免费网站一区二区三区| 国内精品在线播放| 97精品视频在线观看自产线路二| 日本高清不卡一区| 欧美精品国产精品| 久久久久久电影| 一区二区三区久久久| 蜜桃久久久久久| av爱爱亚洲一区| 666欧美在线视频| 国产日本亚洲高清| 一个色综合av| 国产一区二区在线电影| 99国产精品久久久久久久久久 | 日韩一区二区中文字幕| 久久久欧美精品sm网站| 亚洲视频网在线直播| 青青草国产精品97视觉盛宴| 国产一区二区成人久久免费影院| 91麻豆国产福利在线观看| 91精品视频网| 亚洲欧洲av在线| 奇米777欧美一区二区| 成人国产精品免费| 7777精品伊人久久久大香线蕉超级流畅| 久久久精品国产免大香伊| 亚洲国产成人porn| 亚洲成人av中文| 国产麻豆精品在线| 欧美嫩在线观看| 国产精品国产三级国产aⅴ原创 | av福利精品导航| 欧美一二三四区在线| 最新久久zyz资源站| 久久精品国产澳门| 欧美亚洲动漫精品| 国产精品久久久久久久久动漫| 日本在线不卡一区| 91美女精品福利| 欧美激情一区二区三区不卡| 免费人成在线不卡| 在线亚洲精品福利网址导航| 色婷婷av一区| 国产亚洲成av人在线观看导航| 亚洲国产成人av网| 色综合久久综合网欧美综合网| 26uuu欧美日本| 青青草成人在线观看| 欧美性受极品xxxx喷水| 亚洲天堂2014| 99视频热这里只有精品免费| 久久久一区二区三区捆绑**| 乱一区二区av| 欧美一级爆毛片| 蜜桃精品视频在线观看| 欧美性欧美巨大黑白大战| 亚洲三级免费观看| 色综合久久九月婷婷色综合| 国产精品三级久久久久三级| 亚洲图片欧美视频| 色综合久久88色综合天天6| 国产精品国产三级国产aⅴ中文 | 欧美日韩不卡在线| 亚洲精品国久久99热| 波多野结衣精品在线| 久久精品亚洲一区二区三区浴池 | 丁香亚洲综合激情啪啪综合| 精品国产一区久久| 韩国一区二区视频| 久久综合九色综合97_久久久| 九色|91porny| 久久综合色综合88| 国产成人精品免费| 欧美日韩亚洲丝袜制服| 亚洲国产一区二区三区青草影视| 日本精品视频一区二区| 亚洲视频免费看| 欧美亚男人的天堂| 午夜精品久久久久久久99水蜜桃 | 337p粉嫩大胆噜噜噜噜噜91av| 老司机精品视频线观看86| 日韩一区二区免费高清| 久久国产精品99精品国产| 精品国产伦一区二区三区观看体验| 国产麻豆成人传媒免费观看| 国产片一区二区| www.亚洲精品| 一区二区三区不卡视频| 欧美伦理影视网| 国产精品一区在线观看乱码| 中文字幕制服丝袜成人av | 成人福利视频网站| 亚洲精品老司机| 欧美一区二区在线免费观看| 久久国产精品色婷婷| 国产日韩欧美在线一区| 91老师片黄在线观看| 亚州成人在线电影| 久久免费电影网| 日本韩国欧美一区二区三区| 日韩不卡一区二区三区| 国产亚洲欧美色| 欧美日韩免费一区二区三区|