2008年3月31日星期一

导出windows环境变量

环境变量是给系统或用户应用程序设置的一些变量。导出注册表下的所有项"HKEY_CURRENT_USER\Environment",这下面就是记录的当前用户的所有环境变量。

标签:


2008年3月29日星期六

China's battle to police the web(from bbs news)

Web users in China are able to view the BBC News website for the first time in years. So how does the so-called great firewall of China work?

The Chinese government oversees what people do online. It is not clear why China's net population, the world's largest, is suddenly able to view the BBC News website after years of being blocked. Nor is it clear how long the access will continue. But what is certain is that China's authorities have dynamic control of what their citizens can and cannot access.

Most countries that block or filter the internet do so on a site-by-site basis. For example, Pakistan blocked YouTube recently by telling Internet Service Providers (ISPs) in the country to redirect traffic whenever someone typed in the address for the popular video sharing site.
By deliberately rewriting the net address books inside Pakistan, authorities were able to redirect traffic.
But this is a blunt method of filtering and relies on authorities to actively track websites it wants to ban. China does not block content or web pages in this way. Instead the technology deployed by the Chinese government, called Golden Shield, scans data flowing across its section of the net for banned words or web addresses.
There are five gateways which connect China to the internet and the filtering happens as data is passed through those ports. When the filtering system spots a banned term it sends instructions to the source server and destination PC to stop the flow of data.
Amnesty International has accused net giant Cisco and Sun Microsystems of actively assisting with the development of censorship and surveillance systems in the country.
Both firms have rejected the accusation and have said the equipment they sell to China is no different from products sold in other countries.
The dynamic nature of filtering in China gives the government more control over content and means the authorities can react to news events.
Oppressive regimes
It has been called "just-in-time filtering" and is being employed more widely around the world in oppressive regimes.
It allows authorities to block access to information around key events like elections, demonstrations etc.
Security researchers believe this form of filtering was employed on YouTube in China during the recent unrest in Tibet.
In January last year, President Hu Jintao reportedly ordered officials to regulate the internet better and "purify the online environment" ensuring that online information is "healthy" and "ethically inspiring".

BBC website 'unblocked'
This was followed by a new wave of censoring certain websites, blogs and online articles.
But there have been well-documented ways to by-pass China's firewall.
One method involves connecting to a friendly computer outside China and using it as a proxy, to access websites that are banned.
China cannot block every computer outside its borders so this method has proved popular with citizens wanting unfettered access to the net.
The problem has been in informing users in China of the IP address, the unique number of every device online, of the machines willing to act as proxy servers.
E-mail has been one method to alert people; however China is believed to have 30,000 people who routinely scan e-mails for this kind of information.
Organisations in the US and elsewhere have been working on technology to make this process of finding friendly computers more easily.
The University of Toronto's Citizen Lab has developed software called psiphon which acts as a tunnel through the firewall.
Psiphon works through social networks. A net user in an uncensored country can download the program to their computer, which transforms it into an access point.
They can then give contacts in censored countries a unique web address, login and password, which enables the restricted users to browse the web freely through an encrypted connection to the proxy server.
Its creators say the system provides strong protection against "electronic eavesdropping" because censors or ISPs can see only that end users are connected to another computer and not view the sites that are being visited.
China Wide Web?
But even without specialised software, some China net users are able to crack the firewall.
A report released last year by US researchers showed that the firewall was more porous than previously thought.
It found that the firewall often failed to block what the Chinese government finds objectionable, and was least effective when lots of Chinese web users were online.
But even when no technology is used to filter or ban, China's net citizens are not getting unfettered access to the web.
Western companies like Google and Microsoft have been criticised for launching services which effectively self-censor.
A search request on Google in China will not bring back the same results as it would in the US, with many websites removed from the list of returned items.
Microsoft's blog service in China does not allow people to use words such as democracy, freedom and human rights.
Many observers now feel that China is not really connected to the web at all.
Instead, net users in the country experience a China Wide Web and not the World Wide Web.

标签:


windows xp 下 .inf 文件

目录:windows\inf\

INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候,INF文件将会自动调用。而在其他场合下,则需要在INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。

解剖INF文件的结构 INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等。INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的。
规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。
规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。
规则三:INF文件对大小写不敏感。
规则四:“;”号后面的内容为注释。
规则五:如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写为多行。

明白了INF文件的规则后,让我们一起来解剖INF文件的结构。
1.Version节 每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature="$CHICAGO$"”这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含“signature="$Windows NT$"”这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。 另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,通常是网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)。
2.Manufacturer节 该节中的条目主要是描述INF文件可以识别的所有硬件设备,其中包含有设备的生产厂家,以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”,这个大家都不会陌生吧,是显卡的生产商。
3.SourceDisksNames节 该节主要指明安装文件所在的介质。如:“1="ATi Drivers Release CD"”表明所有驱动程序都在零售版的CD盘上。 作者: 218.19.164.* 2005-4-23 19:14 回复此发言 -------------------------------------------------------------------------------- 2 inf
4.SourceDiskFiles节 驱动程序文件列表及被安装的位置,该节必须结合[SourceDisksNames]节才能知道具体的位置。如“atinbtxx.sys=1”,则你必须到[DestinationDirs]节去查看“1”具体代表那个位置。
5.DestinationDirs节 INF文件会指示安装程序在安装的过程中,将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。 6.DefaultInstall节和Install节 在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下,首先执行[DefaultInstall]节,该节指定了要复制或删除的文件,注册表的更新,INF文件的更新等等信息,同时又包含指向其他节的指针。
7.String节 这一节中定义了字符串变量 ,当某些字符串频繁地出现在INF文件中,为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF文件中。

标签:


2008年3月28日星期五

使用 __declspec(dllexport) 从 DLL 导出

Microsoft 在 Visual C++ 的 16 位编译器版本中引入了 __export,使编译器得以自动生成导出名并将它们放到一个 .lib 文件中。然后,此 .lib 文件就可以像静态 .lib 那样用于与 DLL 链接。
在更新的编译器版本中,可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 会将导出指令添加到对象文件中,因此您不需要使用 .def 文件。
当试图导出 C++ 修饰函数名时,这种便利最明显。由于对名称修饰没有标准规范,因此导出函数的名称在不同的编译器版本中可能有所变化。如果使用 __declspec(dllexport),仅当解决任何命名约定更改时才必须重新编译 DLL 和依赖 .exe 文件。
许多导出指令(如序号、NONAME 和 PRIVATE)只能在 .def 文件中创建,并且必须使用 .def 文件来指定这些属性。不过,在 .def 文件的基础上另外使用 __declspec(dllexport) 不会导致生成错误。
若要导出函数,__declspec(dllexport) 关键字必须出现在调用约定关键字的左边(如果指定了关键字)。例如:
__declspec(dllexport) void __cdecl Function1(void);
若要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左边,如下所示:
class __declspec(dllexport) CExampleExport : public CObject
{ ... class definition ... };
生成 DLL 时,通常创建一个包含正在导出的函数原型和/或类的头文件,并将 __declspec(dllexport) 添加到头文件中的声明中。若要提高代码的可读性,请为 __declspec(dllexport) 定义一个宏并对正在导出的每个符号使用该宏:
#define DllExport __declspec( dllexport )
__declspec(dllexport) 将函数名存储在 DLL 的导出表中。

标签:


有关callback函数

Callback Function什么是回调函数?
回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准WindowsAPI的调用方式,即__stdcall,当然,DLL编制者可以自己定义调用方式,但客户程序也必须遵守相同的规定。在__stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负责把参数从堆栈中弹出。

理解回调函数!
程序在调用一个函数(function)时(通常指api),相当于程序(program)呼叫(Call)了一个函数(function)关系表示如下:
call(调用)
program --------------------→ dll

程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时,那么这个自己的函数称回调函数。需要回调函数的 DLL 函数往往是一些必须重复执行某些操作的函数.关系表示如下:
call(调用)
program --------------------→ dll
↑ ¦
¦_______________________________¦
callback(回调)
当你调用的函数在传递返回值给回调函数时,你就可以利用回调函数来处理或完成一定的操作。至于如何定义自己的回调函数,跟具体使用的API函数有关,很多不同类别的回调函数有各种各样的参数,有关这些参数的描述一般在帮助中有说明回调函数的参数和返回值等.其实简单说回调函数就是你所写的函数满足一定条件后,被DLL调用!

也有这样的说法(比较容易理解): 回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。
为此,你需要做三件事:
1. 声明;
2. 定义;
3. 设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用。

标签:


2008年3月27日星期四

有关虚拟内存的设置

虚拟内存是以名为Pagefile.sys的交换文件保存在硬盘的系统分区中。

一般设置方法
物理内存小,虚拟内存可以设置的大一点,为物理内存1.5、2倍,视实际使用情况而定。
物理内存大,虚拟内存可以设置的小一点,为物理内存0.5、1倍,视实际使用情况而定。

精确设置方法:
①先将虚拟内存自定义的“初始大小”、“最大值”设为两个相同的数值,比如500MB;
②然后依次打开“控制面板→管理工具→性能”,在出现的“性能”对话框中,展开左侧栏目中的“性能日志和警报”,选中其下的“计数器日志”,在右侧栏目中空白处点击右键,选择右键菜单中的“新建日志设置”选项;
③在弹出的对话框“名称”一栏中填入任意名称,比如“虚拟内存测试”。在出现窗口中点击“添加计数器”按钮进入下一个窗口;
④在该窗口中打开“性能对象”的下拉列表,选择其中的“Paging File”,勾选“从列表中选择计数器”,并在下方的栏目中选择“%Usage Peak”;勾选“从列表中选择范例”,在下方的栏目中选择“_Total”,再依次点击“添加→关闭”结束。在“日志文件”选项卡中选,为方便查阅将日志文件类型设置为文本文件。
⑤在右侧栏目中可以发现多了一个“虚拟内存测试”项目,如果该项目为红色则说明还没有启动,点击该项,选择右键菜单中的“启动”选项即可 接下来运行自己常用的一些应用程序,运行一段时间后,进入日志文件所在的系统分区下默认目录“PerfLogs”,找到“虚拟内存测试_000001.csv”并用记事本程序打开它,在该内容中,我们查看每一栏中倒数第二项数值,这个数值是虚拟内存的使用比率,找到这项数值的最大值,比如图中的“46”,用46%乘以500MB(前面所设定的虚拟内存数值),得出数值为230MB。 用该数值可以将初始大小设为230MB,而最大值可以根据磁盘空间大小自由设定,一般建议将它设置为最小值的2到3倍。

如果你不是很有经验的电脑用户,又或者没有特殊的使用要求,在Windows XP中选择“系统管理的大小”的方法来自动处理虚拟内存,一般情况下应该会比选择“自定义大小”的方法来得安全和稳定。不过,有一点大家必须注意,由于虚拟内存的“页面文件”(pagefile.sys)会随着电脑使用过程进行收缩和扩展,为使系统管理虚拟内存能够进行得顺利和更具弹性,我们必须保证分页文件所在的硬盘拥有足够的可用空间。


虚拟内存的优化

1. 启用磁盘写入缓存 在“我的电脑”上单击鼠标右键选择“属性->硬件”,打开设备管理器找到当前正在使用的硬盘,单击鼠标右键选择属性。在硬盘属性的的“策略”页中,打开“启用磁盘上的写入缓存”。 这个选项将会激活硬盘的写入缓存,从而提高硬盘的读写速度。不过要注意一点,这个功能打开后,如果计算机突然断电可能会导致无法挽回的数据丢失。因此最好在有UPS的情况下再打开这个功能。当然,如果你平常使用计算机时不要进行什么重要的数据处理工作,没有UPS也无所谓,这个功能不会对系统造成太大的损失。

2. 打开Ultra DMA在设备管理其中选择IDE ATA/ATAPI控制器中的“基本/次要IDE控制器”,单击鼠标右键选择“属性”,打开“高级设置”页。这里最重要的设置项目就是“传输模式”,一般应当选择“DMA(若可用)”。

3. 配置恢复选项 Windows XP 运行过程中碰到致命错误时会将内存的快照保存为一个文件,以便进行系统调试时使用,对于大多数普通用户而言,这个文件是没有什么用处的,反而会影响虚拟内存的性能。所以应当将其关闭。 在“我的电脑”上单击鼠标右键,选择“属性->高级”,在“性能”下面单击“设置”按钮,在“性能选项”中选择“高级”页。这里有一个“内存使用”选项,如果将其设置为“系统缓存”,Windows XP 将使用约4MB的物理内存作为读写硬盘的缓存,这样就可以大大提高物理内存和虚拟内存之间的数据交换速度。默认情况下,这个选项是关闭的,如果计算机的物理内存比较充足,比如256M或者更多,最好打开这个选项。但是如果物理内存比较紧张,还是应当保留默认的选项。

标签:


2008年3月24日星期一

ANI漏洞

该漏洞的利用程序通常伪装成一个图片,只要点击了带有恶意代码图片的网站或邮件就会被感染上恶意程序,无论是IE6或IE7或者是FireFox\Opera等非IE浏览器.无论是Windows NT\2000\XP\2003\Vista操作系统,都有被感染的可能!! 其他网络应用软件如QQ、MSN、各种邮件软件、RSS软件等也可能受到该漏洞的影响.
由于该漏洞的多个版本的利用程序使用了很多技巧,因此会绕过绝大多数杀毒软件、防漏洞软件以及主动防御软件使其失效!! 这样对用户机器产生极大危害!! 一旦没有补丁的机器打开了包含恶意代码的网站或邮件,病毒或恶意程序就会立即悄悄在后台运行,在没有任何反应的情况下使用户的机器中上盗号木马、恶意广告软件、蠕虫病毒等等.. 受影响系统 ===============================================
Microsoft Windows Vista 所有版本
Microsoft Windows XP 所有版本
Microsoft Windows Server 2003 SP1
Microsoft Windows Server 2003
Microsoft Windows 2000 所有版本 ===============================================

Microsoft Windows在处理畸形的动画图标文件(.ani)时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制用户机器 Microsoft Windows在处理畸形文件(.ani)时没有正确地验证ANI头中所指定的大小,导致栈溢出漏洞如果用户受骗使用IE访问了恶意站点或打开了恶意的邮件消息的话,就会触发这个溢出,导致执行任意代码。 请注意Windows资源管理器也会处理一些文件扩展名的ANI文件,如.ani、.cur、.ico等。

标签:


计算机病毒种类(zz)

可识别的病毒类型有五种:

文件传染源病毒:文件传染源病毒感染程序文件。这些病毒通常感染可执行代码,例如 .com 和 .exe 文件。当受感染的程序从软盘、硬盘或网络上运行时,可以感染其他文件。这些病毒中有许多是内存驻留型病毒。内存受到感染之后,运行的任何未感染的可执行文件都会受到感染。已知的文件传染源病毒示例包括 Jerusalem 和 Cascade。

引导扇区病毒:引导扇区病毒感染磁盘的系统区域,即软盘和硬盘的引导记录。所有软盘和硬盘(包括仅包含数据的磁盘)的引导记录中都包含一个小程序,该程序在计算机启动时运行。引导扇区病毒将自身附加到磁盘的这一部分,并在用户试图从受感染的磁盘启动时激活。这些病毒本质上通常都是内存驻留型病毒。其中大部分是针对 DOS 编写的,但所有 PC 机(无论使用什么操作系统)都是此类病毒的潜在目标。只要试图用受感染的软盘启动计算机就会被感染。此后,由于病毒存在于内存中,因此访问软盘时,所有未写保护的软盘都会受到感染。引导扇区病毒示例有Form、Disk Killer、Michelangelo 和Stoned。

主引导记录病毒:主引导记录病毒是内存驻留型病毒,它感染磁盘的方式与引导扇区病毒相同。这两种病毒类型的区别在于病毒代码的位置。主引导记录感染源通常将主引导记录的合法副本保存在另一个位置。受到引导扇区病毒或主引导扇区病毒感染的 Windows NT 计算机将不能启动。这是由于 Windows NT 操作系统访问其引导信息的方式与 Windows 95/98 不同。如果 Windows NT 系统用 FAT 分区格式化,通常可以通过启动到 DOS 系统,并使用防病毒软件来杀除病毒。如果引导分区是 NTFS,则必须使用三张 Windows NT 安装盘才能恢复系统。主引导记录感染源示例有 NYB、AntiExe 和 Unashamed。

复合型病毒:复合型病毒同时感染引导记录和程序文件,非常难以修复。如果清除了引导区,但未清除文件,则引导区将再次被感染。同样,只清除受感染的文件也不能完全杀除该病毒。如果未杀除引导区的病毒,则清除过的文件将被再次感染。复合型病毒示例包括 One_Half、Emperor、Anthrax 和 Tequilla。

宏病毒:这种类型的病毒感染数据文件。它们最常见,修复它们占用的公司财力和时间也最多。随着 Microsoft Office 97 中 Visual Basic 的出现,编写的宏病毒不仅可以感染数据文件,还可以感染其他文件。宏病毒可以感染 Microsoft Office Word、Excel、PowerPoint 和 Access 文件。现在,这类新威胁也出现在其他程序中。所有这些病毒都使用其他程序的内部程序设计语言,创建该语言的原意是使用户能够在该程序内部自动执行某些任务。这些病毒很容易创建,现在传播着的就有几千种。宏病毒示例包括 W97M.Melissa、WM.NiceDay 和 W97M.Groov。

标签:


恶意软件(maliciouis software)区别

恶意软件主要包括病毒、蠕虫和木马三种。它们都是认为编制出的恶意程序,都会对用户造成危害,但是不尽相同,有着各自的特点。

病毒:根据《中华人民共和国计算机信息系统安全保护条例》,病毒的明确定义是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
病毒必须满足两个条件:
1、它必须能自行执行。它通常将自己的代码置于另一个程序的执行路径中
2、它必须能自我复制。例如,它可能用受病毒感染的文件副本替换其他可执行文件。病毒既可以感染桌面计算机也可以感染网络服务器。
此外,病毒往往还具有很强的感染性,一定的潜伏性,特定的触发性和很大的破坏性等,由于计算机所具有的这些特点与生物学上的病毒有相似之处,因些人们才将这种恶意程序代码称之为“计算机病毒”。一些病毒被设计为通过损坏程序、删除文件或重新格式化硬盘来损坏计算机。有些病毒不损坏计算机,而只是复制自身,并通过显示文本、视频和音频消息表明它们的存在。即使是这些良性病毒也会给计算机用户带来问题。通常它们会占据合法程序使用的计算机内存。结果,会引起操作异常,甚至导致系统崩溃。另外,许多病毒包含大量错误,这些错误可能导致系统崩溃和数据丢失。令人欣慰的是,在没有人员操作的情况下,一般的病毒不会自我传播,必须通过某个人共享文件或者发送电子邮件等方式才能将它一起移动。典型的病毒有黑色星期五病毒等。

蠕虫:蠕虫(worm)也可以算是病毒中的一种,但是它与普通病毒之间有着很大的区别。一般认为:蠕虫是一种通过网络传播的恶性病毒,它具有病毒的一些共性,如传播性、隐蔽性、破坏性等等,同时具有自己的一些特征,如不利用文件寄生(有的只存在于内存中),对网络造成拒绝服务,以及和黑客技术相结合,等等。普通病毒需要传播受感染的驻留文件来进行复制,而蠕虫不使用驻留文件即可在系统之间进行自我复制, 普通病毒的传染能力主要是针对计算机内的文件系统而言,而蠕虫病毒的传染目标是互联网内的所有计算机。它能控制计算机上可以传输文件或信息的功能,一旦您的系统感染蠕虫,蠕虫即可自行传播,将自己从一台计算机复制到另一台计算机,更危险的是,它还可大量复制。因而在产生的破坏性上,蠕虫病毒也不是普通病毒所能比拟的,网络的发展使得蠕虫可以在短短的时间内蔓延整个网络,造成网络瘫痪!局域网条件下的共享文件夹、电子邮件Email、网络中的恶意网页、大量存在着漏洞的服务器等,都成为蠕虫传播的良好途径,蠕虫病毒可以在几个小时内蔓延全球,而且蠕虫的主动攻击性和突然爆发性将使得人们手足无措。此外,蠕虫会消耗内存或网络带宽,从而可能导致计算机崩溃。而且它的传播不必通过“宿主”程序或文件,因此可潜入您的系统并允许其他人远程控制您的计算机,这也使它的危害远较普通病毒为大。典型的蠕虫病毒有尼姆达、震荡波等。

木马:它是具有欺骗性的文件(宣称是良性的,但事实上是恶意的),是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,也难以确定其具体位置;所谓非授权性是指一旦控制端与服务端连接后,控制端将窃取到服务端的很多操作权限,如修改文件,修改注册表,控制鼠标,键盘,窃取信息等等。一旦中了木马,你的系统可能就会门户大开,毫无秘密可言。特洛伊木马与病毒的重大区别是特洛伊木马不具传染性,它并不能像病毒那样复制自身,也并不"刻意"地去感染其他文件,它主要通过将自身伪装起来,吸引用户下载执行。特洛伊木马中包含能够在触发时导致数据丢失甚至被窃的恶意代码,要使特洛伊木马传播,必须在计算机上有效地启用这些程序,例如打开电子邮件附件或者将木马捆绑在软件中放到网络吸引人下载执行等。现在的木马一般主要以窃取用户相关信息为主要目的,相对病毒而言,我们可以简单地说,病毒破坏你的信息,而木马窃取你的信息。典型的特洛伊木马有灰鸽子、网银大盗等。

病毒总是出现在杀毒软件升级之前的,靠杀毒软件来防范病毒,本身就处于被动的地位,我们要想有一个安全的网络安全环境,根本上还是要首先提高自己的网络安全意识,对病毒做到预防为主,查杀为辅。

标签:


2008年3月23日星期日

Tor: 概述

Tor 是一个由虚拟通道组成的网络,团体和个人用它来保护自己在互联网上的隐私和安全。同时它使得软件开发人员能够创建具有内建隐私保护特性的新的通信工具。 Tor 为一系列应用提供了基础,通过这些应用,组织和个人可以在公开的网络上分享信息而不必担心隐私受到威胁。
个人使用 Tor 避免网站追踪他们和他们的家庭成员,或者连接到被本地 ISP 封锁的新闻站点、即时通讯服务等等。 Tor 的隐匿服务(hidden services)使得用户能够发布网站和其他服务而不必泄露站点的位置。 Individuals also use Tor for socially sensitive communication: chat rooms and web forums for rape and abuse survivors, or people with illnesses.
记者使用 Tor 更安全地与告密者和持不同政见者交流。非政府组织(Non-governmental organizations, NGOs)使用 Tor,当它们的工作人员在国外时,他们可以连接自己的网站,而周围的人对他们的工作却一无所知。
独立媒体中心(Indymedia)之类的团体建议使用 Tor 来保护他们成员在线的隐私和安全。电子前沿基金会(Electronic Frontier Foundation, EFF)之类的社会活动团体建议将 Tor 作为维护公民在线自由的一种机制。 Corporations use Tor as a safe way to conduct competitive analysis, and to protect sensitive procurement patterns from eavesdroppers. 他们还用它来代替传统的虚拟专用网络(VPNs),后者会泄露精确的通信量和通信时间—— 最近员工在什么地点工作?在什么地点有员工访问求职网站?哪些研究分支在和公司的专利律师交流?
A branch of the U.S. Navy uses Tor for open source intelligence gathering, 它的一个小组最近在中东部署的时候也使用了 Tor。执法人员使用 Tor,一方面为了在访问和监视网站时不在网站的日志中留下政府部门的 IP 地址,另一方面为了特情引诱(sting operations)的安全。
Tor 的用户的多样性正是使之如此安全的部分原因。 Tor 把你隐藏在网络上的其他用户之中,所以 Tor 的用户群越发庞大和复杂,你的匿名性就会得到越好的保护。

我们为什么需要 Tor

Tor 保护你抵御一种普遍的网络监视行为——“流量分析(traffic analysis)”。使用流量分析可以在一个公共网络上推断出谁在和谁交流。如果他人知道了你的流量的来源和目的地,他们就可以跟踪你的行为和兴趣。这会影响你的钱包,举个例子,一个电子商务网站也许会根据你来自的国家和机构制定不同的价格。泄露你的身份和地点甚至会威胁你的工作和人身安全。举个例子,如果你在国外连接到你的雇主的电脑去接收和发送邮件,你就会在不经意间向任何监视网络的人泄露了你的国籍和职业关系,即使连接是加密的也没有用。
流量分析的原理是什么?互联网上的数据包由两部分组成:有效载荷(payload)和用来路由的报头(header)。有效载荷是正在发送的数据,它可能是一封邮件、一张网页或是一个声音文件。即便你加密通信中的有效载荷,流量分析一样能够揭露许多你在做的事,甚至有可能揭露你在说些什么。那是因为它所分析的是报头,报头记录着来源、目的地、数据大小、时间等等信息。
对于一个隐私意识强的人,一个基本问题是:你的通信的对方可以从报头得到有用的东西,授权的中间媒介(比如 ISP)——有时甚至未授权的中间媒介——也可以这么做。一个非常简单的流量分析的形式是:藏身于网络上发送者和接收者之间的某个地方,偷看报头。
但是,更强大的流量分析同样存在。一些攻击者(attackers)暗中监视互联网的多个部分,使用高级的统计技术追踪许多不同的组织和个人的通信模式。加密并不能抵御这些攻击者,因为加密隐藏的仅仅是流量的内容而不是报头。


解决办法:一个分布式的、匿名的网络

Tor 有助于降低简单的和高级的流量分析的风险,Tor 把你的流量分散到互联网上的多个地点,所以不存在单一的一点可以把你和你的目的地联系起来。这就好像用一条拐弯抹角的、难以辨认的路径甩掉跟踪你的人,然后定期擦掉你的脚印。在 Tor 网络上,来源和目的地不是用一条路径直接连接的,而是由一条通过数台中继的随机的路径覆盖原始路径,数据包在这条路径上传输,因此,不存在在任何单一点上的观察者能够知道数据从哪里来、到哪里去。








用 Tor 创建一条私有路径时,用户的软件或客户端通过网络上的中继递增地建立一条由若干加密连接组成的电路(circuit)。电路一次扩展一跳(hop),电路上的中继仅仅知道它从哪一个中继接收数据以及向哪一个中继发送数据。没有一台单独的中继会知道数据包的完整路径。客户端为电路上的每一跳分配独立的加密密钥以保证连接数据通过时不被跟踪。


一旦一条电路建立完成,多种类型的数据可以进行交换,不同种类的软件应用程序也可以在 Tor 网络上部署。因为每一台中继最多只能知道电路中的一跳,窃听者(eavesdropper)或者被入侵的中继(compromised relay)都无法通过流量分析把连接的来源和目的地联系起来。 Tor 仅作用于 TCP 数据流,任何支持 SOCKS 的应用程序都可以使用它。
出于有效性,Tor 为大约在相同的十分钟内发生的连接分配同一电路。以后的请求被分配不同的电路,这样他人就不能把你早先的行为和新的行为联系起来。


隐匿服务
Tor 同样使得用户能够向外界提供各类服务并且隐藏自己的位置,比如 Web 发布和及时通讯。其他 Tor 用户使用 Tor 的“聚合点(rendezvous points)”连接到这些隐匿服务,互相都不知道对方的网络标识。 Tor 用户能够使用这个隐匿服务功能建立网站,人们在网站上发布资料而不用担心遭到审查。没人能够确认到底是谁在运行网站,网站的运行者也不知道到底是谁发布了资料。
保持匿名
Tor 不能解决所有匿名问题。它所关注的仅仅是保护数据的传输。如果你不想让你所访问的网站知道你的身份信息,你需要使用支持特定协议的软件。比如,浏览 Web 时你可以使用 Privoxy 之类的 Web 代理软件阻止 cookies,隐藏浏览器的类型。
同样,保护你的匿名要学得聪明些。不要在 Web 表单里输入你的名字和其他会泄露你身份的信息。需要提醒的是,和其他速度快到可以进行 Web 浏览的匿名网络一样, Tor 对于端到端的计时攻击(timing attacks)不提供保护:如果攻击者知道出自你电脑的流量,也知道到达你所选择的目的地的流量,他就可以使用统计分析发现属于同一电路的那部分。
Tor 的未来
今天,在互联网上提供一个可用的匿名网络是一项持续的挑战。我们需要满足用户需求的软件。我们也需要网络以一种支持尽可能多的用户的方式在线运行。安全和可用性并非不可协调:随着 Tor 的可用性的增加,它会吸引更多的用户,用户的增加提高了每次通信的来源与目的地的可能性,而这增强了每个人的安全。我们在进步,但我们需要你的帮助。请考虑运行中继或者 志愿一名开发者
法律、政策和技术的当前趋势以前所未有的程度威胁匿名,破坏着我们在线言论与阅读的自由。这些趋势也使得个人、组织、公司、政府间的通信更易分析,削弱了国家安全和关键基础设施。每一个新的用户、每一台新的中继都会增加网络的多样性, Tor 由此更能帮助你把安全和隐私的控制权重新掌握在自己手中。




标签:


2008年3月22日星期六

Tor overview

tor的全写是“The Onion Router”,即洋葱路由器,属于自由软件,遵循 3-clause BSD 许可证发布。Tor专门防范流量过滤、嗅探分析,使用户免受其害。其在由onion routers(洋葱路由器)组成的表层网(overlay network)上进行通讯,可以实现匿名对外连接、匿名隐藏服务。它是一种点对点的代理软件,依靠网络上的众多电脑运行的tor服务来提供代理。tor代理网络是自动连接并随机安排访问链路的,这样就没有了固定的代理服务器,也不需要去费劲寻找代理服务器地址了。Tor的代理一般在2-5层左右,加密程度也比较高。进入Tor网络后,加密信息在路由器间传递,最后到达“退出节点”(exit node),明文数据从这个节点直接发往原来的目的地。对于目的主机而言,是从“退出节点”发来信息。

官方下载的安装包中包含3个程序, 你可以根据你的需要进行选择. 分别是Tor(必不可少),Vidalia(Tor的图形化配置程序),Privoxy(代理服务器软件, 可以把Tor的SOCKS转换为HTTP代理, 需要HTTP代理的就装吧).

标签:


WordPress overview

WordPress是一种使用PHP语言和MySQL数据库开发的Blog(博客、网志)引擎,用户可以在支持PHP和MySQL数据库的服务器上建立自己的Blog。
WordPress是一个功能非常强大的博客系统,插件众多,易于扩充功能。安装和使用都非常方便。目前WordPress已经成为主流的Blog搭建平台。
WordPress的原版是英文版的,但是有爱好者开发了中文语言包,使其可以支持中文。 WordPress拥有几百个各式插件和不计其数的模板样式。

标签:


firefox的xpi文件

firefox中的xpi实际上类似于IE中的插件或扩展(如Flash插件等). 格式一般为.zip, 由XUL、Javascript、CSS、HTML和图片等构成. Firefox扩展包(Firefox Extensions)是指对为了增强在Mozilla Firefox中浏览网页所做的一些小改进的名字。他们也许只是可以为Mozilla Firefox增加新的功能一个小程序或者插件。您可以在Extensions page上看一看各种扩展包列表。
关于扩展包的最伟大的好事则是它使得Mozilla Firefox小巧而不臃肿。任何人可以根据自己需要安装适当的扩展包。 ==================================================================
如何安装Firefox扩展文件?
扩展文件通常是xpi文件格式(以.xpi结尾).有三种安装方法:
1,直接拖拽到Firefox浏览器的窗口里或扩展窗口里
2,点击 '菜单"--"工具"--''扩展'',把.xpi文件拖进弹出窗口里,稍后就可以看到Firefox会询问你是否要安装这个插件,点击是,并重启Firefox浏览器
3,鼠标右键点xpi文件,选打开方式,在打开方式里选firefox,设置关联。以后只要双击xpi文件就自动安装了

标签:


2008年3月21日星期五

lyj's mother Email

妈妈看你的博客,不能叫看要叫欣赏,是一种精神享受。因为博文流露你很多爱,还体现你顽强、努力又温柔、情长的一面,加上文采横溢、情感细腻,估计你的朋友都很爱看你的博文。可是我知道,期待不断有博文看是个奢侈想法。因此,我只有默默地祝福你愉快健康并能驾驭变通。你一旦有时间有心情,大家就有博文看了。
最近常接触到“付出”这个词。比如,春节前中国南方遭遇冰雪湖南停电停水十多天,武警官兵工程人员放弃春节休息在冰雪中帮助湖南修复电塔,还有河北唐山有13位弟兄自发自费到湖南救灾,电视报刊称这种放弃个人利益为他人贡献的行为叫“付出”。又比如,一位女大学生毕业后主动到贫穷地区支教,还利用假期到西部地区为孩子送书送衣,常常奔驰在大山里,因此遭遇车祸而失去生命,年仅30岁,电视报道说“为帮助贫困孩子她付出了生命”。由此看来,为他人他事尽心尽力时才用“付出”一词来表达。
马云说:“常人不敢想的你想到了,常人不敢做的你愿意做,常人不能忍的你能忍,创业就有成功的希望了”,这番话透露创业是如此艰辛。但开办了2年的《赢在中国》,却极少出现“付出”这个词(不知道你留意到没有)。史玉柱牛根生马云还有三十六强选手说自己成功过也失败过,吃了不少苦,始终都没有用过“付出”来表达心情,也许他们认为自身生活、自身事业累到拼命那是自己的事,是自己要做的,辛苦是应该的,对自己负责对家人负责吧,走上这条道,就要继续走下去,不坚持就会使自己难堪。
妈妈也一样。妈妈为生活,为了一个家,从广东到长沙,从长沙又到广东。为孩子身心,忙于家庭与工作之间。尽管从年轻貌美熬到沧桑憔悴,我也不认为付出很多,反而觉得无所谓,是应该的,结婚嫁人养育孩子就会遇到这些辛苦。
那么聪明的你读到这里,也许已经读出妈妈的心思了。妈妈只想你快乐地努力着,就像《赢在中国》选手们一样,为自己前途不懈追求和努力,给自己人生添砖加瓦砌成大厦,把自己走的每一步都看成是积累,而不认为是“付出”,跟自己不去计较付不付出的。积累会注重过程,更关注提高,心情会轻松些,累了知道停下休息一会。“付出”会注重结果,关注回报,心情会沉重,累了都不敢停下休息。两种认识引致不同心态,会直接表现在人的形表神态上。
其实,还有理由你不谈自己“付出”,因为你比我幸福很多。你有一个开明、小康的家庭,有位能干聪慧无私的母亲,你生活在民主和关爱中,能全心思用于学习而不愁生活。
当你跟自己不再去计较付不付出的时候,一切会很自然,你会是一只快乐的鸟,一棵向日葵,朝气蓬勃的。期待会变少,失望也会变少,只知道该去做的就努力去做,一颗平常心,享受着这过程。
不知妈妈说得对不对?

2008年3月20日星期四

joke

让座

孩子:妈妈,在公交车上,爸爸让我给一位太太让座。

妈妈:儿子,你应该这样做啊

孩子:可是,我当时坐在爸爸腿上



猩猩最讨厌什么线?

平行线--平行线没有相交(香蕉)



布怕什么,纸怕什么?

布(不)怕万一,纸(只)怕一万



1-9那个数字最懒

1最懒,2最勤劳,一不做,二不休



麻雀很吵,怎么让它安静

压一下(鸦雀无声)



最新消息

电视台新闻播报员正在播报新闻,这时一张纸条送到他面前,他拿起纸条习惯性地说:“下面是本台刚刚收到的消息……”

接着他打开纸条读起来:“伙计,你的门牙上有块菠菜叶……”



霸道的孩子

两位妇人在闲话家常,谈起小孩看电视的问题。

芒妈:我的儿子一定要先做完功课,才可以看电视。

云吗:我家的小云好霸道,不替他作好功课,他就不让我看电视。



女人的武器

儿子即将结婚,父亲向他传授秘诀:哭闹是女人的常规武器,沉默是女人的化学武器,自杀是女人的核武器……

儿子紧张的打断父亲的话:如果她宣布使用核武器,我该怎么办?

父亲一脸轻松的回答:经实践证明,那只是核危险而以。



药膏

丈夫:我将医生开的药膏涂在手上,我的手变得灵活多了

妻子:真的吗?那赶快给你脑袋上也涂一点吧



经典口误

1.老师留下作业,小王不会做就抄别人的,然后去办公室交作业,看见老师说:“抄完了!”
2.同事跟人争执,急了张口说:“你以为我吃饭长大的呀?”我一直纳闷他到底吃什么长大的。
3.在网吧,一同学突然举手,大喊:“老师!”
4.大学时,两同学争论问题,其中一同学一时处于下风,情急中拍桌子起身大叫:“你胡说,我又不是不傻!”
5.小A:“那是我们物理老师。”小B:“教什么的啊?”小A:“化学。”
6.大学文艺晚会抢答题环节,女主持:“大家注意了,不要抢的太快。等我说完‘开始’再举手。”然后女主持开始念题目:“现在开……”这时,一个选手抢答了。女主持:“这位同学太着急了,我‘始’还在口里,你怎么就抢了?”

祈祷
一男子总认为自己没有女人缘,于是就去教堂祈祷:“请上帝赐给我一群漂亮女人在我身边。”可是非常不幸,他刚刚走出教堂,就被车撞倒住进了医院。躺在病床上的他心想:“上帝怎么这么不公平?”这时护士突然领来20名漂亮的实习生走到他的病床前,并对她们说:“这名患者因交通事故不能动弹了,你们首先要教他如何使用便盆。”

挥手
早上,我在阳台上看风景,发现对面女生宿舍里一位漂亮女孩拿着手绢在向我挥手,我也向她挥手;然后她跑到另一个窗户前再跟我挥手,我再向她挥手;她又走到第三个窗户前跟我再挥手时,我才反应过来,原来她在擦窗户。

这块石头很面熟
有人发明了一台测试智商(IQ)的电脑,甲、乙、丙三人前去测试。
甲把脑袋放入机器中,电脑显示:“192.6”,甲十分高兴。
乙把脑袋放入机器中,电脑显示出:“0.3”,丙在旁边看了哈哈大笑。
于是丙也把脑袋放到机器里,电脑想了半天显示出来:“别拿石头开玩笑”。
乙和丙为此发奋读书,过了一年之后,又去做测试。
乙把脑袋放入机器中,电脑显示出来:“3.0”,比去年提高了10倍,有点儿进步。
丙把脑袋放到机器里,电脑又想了半天,最后显示出来:“这块石头很面熟”。



做女人真好

现在社会做女人,真好.
年轻叫青春,年长叫成熟;
瘦了叫苗条,胖了叫丰满;
高叫亭亭玉立,矮叫小巧玲珑;
漂亮叫美女,不漂亮叫有气质;
脾气好叫温热,脾气不好叫泼辣;
活泼叫顾盼生辉,矜持叫稳重大方;
化妆叫妩媚动人,不化妆叫清水芙蓉;
挣钱叫追求独立,不挣钱叫牺牲为家;
从不离婚叫感情专一,经常离婚叫追求幸福;
天天在家不出门叫贤惠,天天出去不回来叫女权;
偏要和男人一样那叫不让须眉,偏要男人让着那叫女士优先

男女幽默

(一)
甲:你的未婚夫知道你的年龄吗?
乙:是的,他知道一部分.
(二)
女:只要有钱,我嫁给谁都行.
男:银行的保险柜你嫁吗?
(三)
妻:男人都是胆小的
夫:不见得,否则我何必会与你结婚
(四)
第一年:他说,她听,
第二年:她说,他听,
第三年:他俩说,邻居们听....

标签:


周杰伦--青花瓷

素胚勾勒出青花笔锋浓转淡
瓶身描绘的牡丹一如你初妆
冉冉檀香透过窗心事我了然
宣纸上走笔至此搁一半

釉色渲染仕女图韵味被私藏
而你嫣然的一笑如含苞待放
你的美一缕飘散去到我去不了的地方

天青色等烟雨而我在等你
炊烟袅袅升起隔江千万里
在瓶底书汉隶仿前朝的飘逸
就当我为遇见你伏笔

天青色等烟雨而我在等你
月色被打捞起晕开了结局
如传世的青花瓷自顾自美丽
你眼带笑意

色白花青的锦鲤跃然於碗底
临摹宋体落款时却惦记著你
你隐藏在窑烧里千年的秘密
极细腻犹如绣花针落地

帘外芭蕉惹骤雨门环惹铜绿
而我路过那江南小镇惹了你
在泼墨山水画里
你从墨色深处被隐去

天青色等烟雨而我在等你
炊烟袅袅升起隔江千万里
在瓶底书汉隶仿前朝的飘逸
就当我为遇见你伏笔

天青色等烟雨而我在等你
月色被打捞起晕开了结局
如传世的青花瓷自顾自美丽你眼带笑意

《青花瓷》出来很久了,才入了我的法耳。一如《东风破》等歌,既往周杰伦特有的中国风古典风格,歌曲淡淡的,绵绵的,有几分戚戚然。歌词很唯美,很有韵味。纳闷了方文山一个偏安的台湾人,怎么对中国古典文化在歌词的运用驾驭的这么好,想我泱泱大中华区竟然没能跳出来一个与之叫板的。带着江南生活的记忆,每一句歌词都让我有想象的空间:烟雨笼罩的西湖,绍兴精美的花雕酒瓶,水乡乌镇染坊院子里飘晾着的蓝印花布,还有路过江南小镇被我惹得你……

突然想起一句话,每个人在成长的阶段中都会爱上一首歌,不是因为它优美的旋律或动人的歌词,而是因为它述说着你的故事!

标签:


ipc: internet process connection

IPC(Internet Process Connection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC是NT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT/2000在提供了ipc$功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录 winnt或windows(admin$)共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。

ACE环境的搭建

1. 到ace官方网站 http://www.cs.wustl.edu/~schmidt/ACE.html下载ace包。ACE版本分为release、beta和Latest BFO(Bug Fix Only),通常每个release版本之后的第一个beta版本是保留版本,称为BFO。推荐下载release版本。新版本的ace工程文件为.sln,本人开发环境是MSVC6.0,下载了ace-5.4.3.zip,解压。

2. 在\ACE_wrappers\ace下编辑config.h文件,内容如下:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#define ACE_HAS_MFC 1
#include "ace/config-win32.h"

3. 打开ace.dsw,配置编译选项release或debug,进行编译。可能会出现类似cannot open program database /debug/vc60.pdb 或 cannot open program database /debug/vc60.idb的错误,可以clean->rebuild,或者删除debug目录,重新编译。编译生成aced.dll, aced.lib(debug)或者ace.dll, ace.lib(release)。

4. 配置ace开发环境。tools->options->directories加入ace头文件和生成lib文件的目录。

5. 编写ace程序的时候,要使用多线程版的运行时库(project->settings->c/c++->code generation->use run-time library->debug multithreaded dll),并导入ace库文件(project->settings->link->object/library modules加入ace.lib)。

6. 程序运行时如果需要动态链接ace.dll,还得江ace.dll放入合适的目录。

标签:


软件工程思想精彩语录-林锐(一)

1. 谈林说森

2. 在60 年代计算机发展初期,程序设计是少数聪明人干的事。他们的智力与技能超群,编写的程序既能控制弱智的计算机,又能让别人看不懂、不会用。那个时期编程就跟捏泥巴一样随心所欲,于是他们很过分地把程序的集合称为软件,以便自己开心或伤心时再把程序捏个面目全非。

3. 就象一只鸡在水里扑腾了几下,并不能产生美味的鸡汤。

4. 软件开发过程中的坎坎坷坷, 仿佛只是人脸的凹凸不平,用热水毛巾一把就可抹平。让我们高举程序主义、软件工程思想的伟大旗帜,紧密团结在以Microsoft 为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地编程,把建设有中国特色的软件产业的伟大事业全面推向 21 世纪。

5. 从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维护代价,实质上是提高了生产率,同时可获得很好的信誉。

6. 有谋略才会有好的战术。

7. 复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。进步只是应该的,不进步则就可耻了。

8. 优化工作不是可有可无的事情,而是必须要做的事情。

9. 我第一次看到 Quake时不仅感到震动,而且深受打击。这个 PC 游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。

10. 优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。

11. 就象党支部副书记扮演和事佬的角色: “…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人” 。

12. 传秘方在某些领域很吃香,而在软件领域则意味着落后。

13. 软件开发不同于传统的农业生产,人多不见得力量大。这就像如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。

14. 在软件领域永远没有最好的, 只有更好的。程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

15. 就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。

16. 狼三则》的故事告诉我们“失败的技巧通常是技俩” 。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。 《卖油翁》的故事又告诉我们“熟能生巧” ,表明技巧是自然而然产生的,而不是卖弄出来的。

17. 开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。

18. 要让软件项目失败很容易,只要符合下列条件之一即可:
(1)项目经理对软件一无所知;
(2)技术负责人对编程不感兴趣;
(3)真真编写代码的程序员是临时雇用的。

19. 面对一项技术,市场营销员说:“这项技术比电话、晶体管和原子弹三项发明加起来对世界文明的影响都要大。” 程序员说: “这项技术在有限的领域内,在有限的程度上,解决了一些技术性的问题。

20. 饿了的时候就吃,困的时候就睡,只要时机恰当就进行程序设计。

21. 我编程三日
两耳不闻人声
只有硬盘在歌唱

22. 也不象一些官僚机构,只有两个人的办公室也要设正主任和副主任。如果碰巧正主任姓傅,副主任姓郑,还会斗个没完没了。

23. 程序经理一般就是程序员队伍中最聪明的那个家伙。

24. 聪明人一定反应敏捷,善于接受新事物。他能迅速进入一个新领域,给你一个头头是道的解释。他提出的问题往往一针见血、击中要害。他能及时掌握所学知识,并且博闻强记,他能把本来认为互不相干的领域联系在一起使问题得到解决。他富有创新精神与合作精神……

25. 一个技术水平较差的人被任命为程序经理真是个悲剧,就象一个略有权势的太监,表面上有人对他点头哈腰,背后却被人鄙视。

26. 如果程序经理发现有两个程序员趴在机器旁睡觉,不能只对其中一个大声吼叫: “你一编程就想睡觉,看看人家,在睡觉时都想着编程。

27. 一个有活力的软件公司的各级经理都不会这样感叹, “因为我啥也不会干,所以只好当领导。

28. 不能光指望请来孙子或诸葛亮当教练,就能让弱不禁风的男足去捧世界杯。

29. 新中国历来喜欢与可怜的印度相比较来展现丰富多彩的优越性,可是软件产业没法与人家比。

30. 一个高水平的程序员既然能学好数字逻辑,能理得清楚软件中很多象“嵌套”这类“鸡生蛋并且蛋又生了鸡”的错综复杂的关系,从理论上讲当个县长也不成问题。

31. 要使程序员队伍稳健,必须有合理的等级制度来维护。等级制度并不限制自由和民主,它能让自以为聪明绝顶、谁也不服的人们懂得如何合作与奋斗。 就象有了一架梯子,每个人才有机会爬上墙头摘下那向往已久的野花。当梯子散成一堆木棍时,只可能造就几个卖炭翁。

32. 很多失败如果不去找借口的话, 就会发现错误的根源在自己身上:知识贫乏、才能低下、经验不足、骄傲自负……。

33. 有些事情只要用脑袋去想一想就能分辨是非,可人们就是不去思考,却渴望能跟对“福星” ,甘愿把自己的脑袋拴在别人的裤带上。难道这就是人民的纯朴与可爱吗?回顾一下历史,在“文革”时期,亿万人民跟着合法的党组织大干伤天害理的事,一干就是十多年哪!可见世界上哪个人哪个组织都不能确保绝对的英明。

34. 所以说“迷信”是傻子碰到骗子的结果。傻是内因,被骗是外因。傻子碰到好人未必能做出好事,傻子碰到另一个骗子就会做出另一件傻事。

35. 扔掉文科只学理科并不等同于“放下包袱,轻装前进” ,倒象是摘掉了控制系统的机车,开不了多远就翻车了。

36. 不要让人觉得程序员只管钻研技术,可以不懂世事并且应该自由散漫。程序员不该因为幼稚而显得单纯,应该是成熟了才变得单纯,才配得上这个充满活力的职业。

2008年3月19日星期三

钩子程序

钩子程序是在内存中可以不断的在内存中拦截你要控制设备的消息并且可以对该消息进行处理过滤。钩子WINDOWS留给我们的后门,比如你想控制键盘,在DOS时代很简单通过INT即可,而WINDOWS时代不允许我们直接操作硬件;由于WINDOWS是消息驱动,所以我们可以拦截键盘消息以达到控制键盘的目的。但是控制自己进程的消息固然很简单,要控制所有进程消息要利用钩子了。将钩子函数放在DLL中,所有的有关键盘的消息都必须经过钩子函数过滤,这样你就可以为所欲为了。

WINDOWS下的钩子程序就像DOS下的TSR(内存驻留程序)一样,用来截获WINDOWS下的 特定的消息,进行相应的处理。比如可以截获键盘输入的消息,来获得键盘输入的信息等。钩子程序可以通过API调用来驻留和脱钩。

钩子的类型  

一. 按事件分类,有如下的几种常用类型  
(1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。  
(2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。  
(3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。  
(4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。  
(5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。  
此外,还有一些特定事件的钩子提供给我们使用,不一一列举。

下面描述常用的Hook类型:

1、WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可以监视发送到窗口过程的消息。系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook子程,并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRET Hook子程。 WH_CALLWNDPROCRET Hook传递指针到CWPRETSTRUCT结构,再传递到Hook子程。CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息关联的消息参数。

2、WH_CBT Hook 在以下事件之前,系统都会调用WH_CBT Hook子程,这些事件包括: 1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件; 2. 完成系统指令; 3. 来自系统消息队列中的移动鼠标,键盘事件; 4. 设置输入焦点事件; 5. 同步系统消息队列事件。Hook子程的返回值确定系统是否允许或者防止这些操作中的一个。

3、WH_DEBUG Hook 在系统调用系统中与其他Hook关联的Hook子程之前,系统会调用WH_DEBUG Hook子程。你可以使用这个Hook来决定是否允许系统调用与其他Hook关联的Hook子程。

4、WH_FOREGROUNDIDLE Hook 当应用程序的前台线程处于空闲状态时,可以使用WH_FOREGROUNDIDLE Hook执行低优先级的任务。当应用程序的前台线程大概要变成空闲状态时,系统就会调用WH_FOREGROUNDIDLE Hook子程。

5、WH_GETMESSAGE Hook 应用程序使用WH_GETMESSAGE Hook来监视从GetMessage or PeekMessage函数返回的消息。你可以使用WH_GETMESSAGE Hook去监视鼠标和键盘输入,以及其他发送到消息队列中的消息。

6、WH_JOURNALPLAYBACK Hook WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的。 WH_JOURNALPLAYBACK Hook是全局Hook,它不能象线程特定Hook一样使用。 WH_JOURNALPLAYBACK Hook返回超时值,这个值告诉系统在处理来自回放Hook当前消息之前需要等待多长时间(毫秒)。这就使Hook可以控制实时事件的回放。 WH_JOURNALPLAYBACK是system-wide local hooks,它们不会被注射到任何行程位址空间。(估计按键精灵是用这个hook做的)

7、WH_JOURNALRECORD Hook WH_JOURNALRECORD Hook用来监视和记录输入事件。典型的,可以使用这个Hook记录连续的鼠标和键盘事件,然后通过使用WH_JOURNALPLAYBACK Hook来回放。 WH_JOURNALRECORD Hook是全局Hook,它不能象线程特定Hook一样使用。 WH_JOURNALRECORD是system-wide local hooks,它们不会被注射到任何行程位址空间。

8、WH_KEYBOARD Hook 在应用程序中,WH_KEYBOARD Hook用来监视WM_KEYDOWN and WM_KEYUP消息,这些消息通过GetMessage or PeekMessage function返回。可以使用这个Hook来监视输入到消息队列中的键盘消息。

9、WH_KEYBOARD_LL Hook WH_KEYBOARD_LL Hook监视输入到线程消息队列中的键盘消息。

10、WH_MOUSE Hook WH_MOUSE Hook监视从GetMessage 或者 PeekMessage 函数返回的鼠标消息。使用这个Hook监视输入到消息队列中的鼠标消息。

11、WH_MOUSE_LL Hook WH_MOUSE_LL Hook监视输入到线程消息队列中的鼠标消息。

12、WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks使我们可以监视菜单,滚动条,消息框,对话框消息并且发现用户使用ALT+TAB or ALT+ESC 组合键切换窗口。 WH_MSGFILTER Hook只能监视传递到菜单,滚动条,消息框的消息,以及传递到通过安装了Hook子程的应用程序建立的对话框的消息。 WH_SYSMSGFILTER Hook监视所有应用程序消息。 WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks使我们可以在模式循环期间过滤消息,这等价于在主消息循环中过滤消息。通过调用CallMsgFilter function可以直接的调用WH_MSGFILTER Hook。通过使用这个函数,应用程序能够在模式循环期间使用相同的代码去过滤消息,如同在主消息循环里一样。

13、WH_SHELL Hook 外壳应用程序可以使用WH_SHELL Hook去接收重要的通知。当外壳应用程序是激活的并且当顶层窗口建立或者销毁时,系统调用WH_SHELL Hook子程。 WH_SHELL 共有5钟情况: 1. 只要有个top-level、unowned 窗口被产生、起作用、或是被摧毁; 2. 当Taskbar需要重画某个按钮; 3. 当系统需要显示关于Taskbar的一个程序的最小化形式; 4. 当目前的键盘布局状态改变; 5. 当使用者按Ctrl+Esc去执行Task Manager(或相同级别的程序)。 按照惯例,外壳应用程序都不接收WH_SHELL消息。所以,在应用程序能够接收WH_SHELL消息之前,应用程序必须调用SystemParametersInfo function注册它自己。以上是13种常用的hook类型!  

二. 按使用范围分类,主要有线程钩子和系统钩子  
(1) 线程钩子监视指定线程的事件消息。  
(2) 系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL)中。这是系统钩子和线程钩子很大的不同之处。  
几点需要说明的地方:  
(1) 如果对于同一事件(如鼠标消息)既安装了线程钩子又安装了系统钩子,那么系统会自动先调用线程钩子,然后调用系统钩子。  
(2) 对同一事件消息可安装多个钩子处理过程,这些钩子处理过程形成了钩子链。当前钩子处理结束后应把钩子信息传递给下一个钩子函数。而且最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。  
(3) 钩子特别是系统钩子会消耗消息处理时间,降低系统性能。只有在必要的时候才安装钩子,在使用完毕后要及时卸载。

TSR

Abbreviation of terminate and stay resident. Refers to DOS programs that can be memory resident (remaining in memory at all times once they are loaded). Calendars, calculators, spell checkers, thesauruses, and notepads are often set up as TSRs so that you can instantly access them from within another program. TSRs are sometimes called pop-up programs because they can pop up in applications.

When you install a TSR, you define a special key sequence (usually a control character) that will invoke the TSR program. You can then press this hot key from within any application to run the TSR program. Many programs can be installed as a TSR, but TSRs reduce the amount of memory available to other programs. In addition, not all TSRs interact well with each other. You may have difficulties, therefore, if you try to keep too many TSRs in main memory at once.
TSRs are unnecessary with multitasking operating systems such as Windows, OS/2, and the Mac OS.

2008年3月18日星期二

SMTP命令

SMTP (Simple Mail Transfer Protocol) :
电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。

什么是 ESMTP ESMTP (Extended SMTP),顾名思义,扩展 SMTP 就是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时, 服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。

SMTP 命令

SMTP 命令包括:

HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。(ehlo gzaflamingo, gzaflamingo是主机名)
MAIL FROM 命令中指定的地址是发件人地址 (mail from: zhucaigaosuni@sina.com)
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。 (rcpt to: woody.shi@gmail.com)
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话

2008年3月17日星期一

网页挂马

什么是“网页木马”?



用户在浏览某些网页的时候,网页中可能会包含一些恶意的代码,这就是俗称的“网页木马”,此种行为通常被称为“挂马”。



网页中包含的恶意代码通常类似为:





“网页木马”并非万能的,它一般是通过系统中的漏洞(例如浏览器的漏洞、浏览器插件的漏洞等)来对用户的主机进行攻击,进而获取用户主机中的敏感数据,例如QQ号、网银账号、游戏ID等。如果你的主机已经安装了最新的安全补丁,大多数网页木马都无法对你的主机造成伤害。但是,也有不少网页木马是通过系统未公开的漏洞来攻击用户主机,即是说,即使你的主机安装齐全所有安全补丁,也无法做到100%免疫。






网页中为何会被插入恶意代码?

如图有三种情况:

1. 服务器被黑。服务器被入侵或感染病毒,硬盘上的网页文件被修改,被插入恶意代码。这种情况比较少见。表现形式:互联网上所有用户访问这台服务器上的网页时,网页上都会包含有恶意代码。
2. 服务器被ARP欺骗。服务器所处的那个局域网内,有主机被黑客控制或者感染了病毒,服务器返回给用户的网页数据,在传输过程中被ARP欺骗程序、病毒程序所篡改,插入了恶意代码。表现形式:互联网上所有用户访问这台服务器上的网页时,网页上都会包含有恶意代码。
3. 用户的局域网被ARP欺骗。用户所处的那个局域网内,有主机被黑客控制或者感染了病毒。服务器返回给用户的网页数据,在传输过程中被ARP欺骗程序、病毒程序所篡改,插入了恶意代码。表现形式:局域网的用户,在访问所有网站时,网页中都会包含恶意代码。


2008年3月16日星期日

洋酒分类

一、洋酒的分类

国外蒸馏酒(简称洋酒)按制造原料可分为白兰地(brandy)、威士忌(whisky)和兰姆酒(rum)。
白兰地以葡萄为原料,若以其它水果为原料制成的蒸馏酒,则在白兰地前冠以水果的名称,如苹果白兰地、樱桃白兰地、梨子白兰地等等。
威士忌以麦芽和谷类为原料,单纯的粮谷威士忌一般不能市售,只有和麦芽威士忌组成混合威士忌方可销售。美国的波旁威士忌(bourbonwhisky)则主要以玉米为原料(玉米占51-75%)。
兰姆酒则以甘蔗粮蜜为原料,分为深色和浅色两种。
此外,还有以高纯酒精为基础酿制而成的杜松子酒(gin)和伏特加酒(vodka),杜松子酒为药用植物杜松子和食用酒精经串蒸或冷混而成。伏特加酒可分为纯酒精伏特加(中性酒精)和调香伏特加两大类。
国外蒸馏酒代表性的还有日本产的烧酎、泡盛酒和龙舌兰酒(tequlia)。烧酎的工艺和食用酒精相同,泡盛酒工艺同我国的小曲酒类似,即半固态发酵,缸中陈放。龙舌兰酒则以墨西哥特有植物龙舌兰为原料发酵蒸馏而成,这三种蒸馏酒为少数国家独特生产,不带普遍性。

二、洋酒中的知名品牌
白兰地以法国生产的最为知名。法国著名白兰地产区有两个:一个为干邑地区(coganc),另一个为雅马邑地区(armagnac)。 按法国酒类命名原产地保护法规定,只有在法国干邑地区经过发酵、蒸馏和在橡木桶中贮存的葡萄蒸馏酒才能称为干邑酒,在别的地区按干邑同样工艺生产的葡萄蒸馏酒不能叫干邑。雅马邑所用葡萄品种同干邑酒完全一致,只是贮存方式不一样,雅马邑在黑橡木桶中贮存,定位在田园型白兰地,干邑酒则大多在“利得森”橡木桶中贮存,定位在都会型白兰地。
干邑酒知名品牌有轩尼诗(hennessy),人头马(remy martin),马爹利(martel),拿破仑(courvoisier),百事吉(bisquit prvivilege),路易老爷(louts royer),奥吉尔(angler),欧德(otard)及金花酒(camus)。
干邑酒,其等级与原酒在橡木桶中贮存年限的长短有直接关系,干邑酒分成许多等级,从低到高分别为VS级(酒龄在4年半以下的)、VSOP级(酒龄在4年半至6年半之间的)、XO级(6年半以上的)、EXTRA级等,干邑酒贮存时间越长,质量越好,价格越高。

威士忌以苏格兰生产的较为知名,在中国大陆销售的品牌有johnnic walker公司生产的红方(red label)c/.6" 及黑方(black label),还有芝华士公司生产的芝华士(chivas)皇家礼炮及十二年陈酿,百龄坛公司生产的百龄坛(ballantines)等,这些苏格兰威士忌独具泥碳熏烤麦芽工艺,与其它国家生产的威士忌明显不同。

三、干邑酒的真伪
在中国大陆假冒情况最为严重的洋酒是干邑酒,而干邑酒的假冒又较为集中在轩尼诗、人头马和马爹利等三个品牌上。这是因为这三个品牌知名度最高,质量好且价位相对较高。这些品牌又根据其在橡木桶中贮存的年限而分成许多等级,如轩尼诗有理查(ichard)、xo、sov、vsop等,人头马有路易十三(louis x ill)、extra、xo、人头马特级club、vsop、三星vs等,马爹利有xo、兰带cordon bleu、名士noblige、vsop等,这些等级的价位也由高至低。

四、吧里比较流行的几种喝法
1.伏特加+橙汁: 这是一种最为流行的喝法,本来伏特加这东西总让人联想起一片苍凉的西伯利亚,《苏州河》里男女主人公也一直在喝一种有一根野牛草泡在里面的伏特加。
2.芝华士+冰绿茶+苏打: 本来威士忌是一款很烈的酒,净饮的话几乎就是烧着喉咙下肚,所以连酒商都会介绍你要勾兑一倍的苏打水。可到了酒吧里,这搭配就有几分好玩了,一定要冰绿茶,不能用冰红茶,还以康师傅这牌子的为好。结果就在一股仙风道骨的茶香中,酒精悄然而入。
3.纯白轩尼诗+苏打水: 我所熟知的轩尼诗是法国白兰地的四大品牌之一,这支纯白轩尼诗不知可在其产品系列中。法国人一向是很骄傲的,要是得知轩尼诗被这样勾兑一番,不知会作何感想。
4.杰克丹尼斯+可乐: 据说当年是某位国家领导人发明了陈醋加雪碧的喝法,所以美其名曰:天地一号。没多久市面上还真出现了一款名为“天地一号”的饮料。杰克丹尼斯加可乐的组合到底有多好喝要视个人口味而定,不过据说国外已经有了类似“天地一号”的产品,名为杰可,顾名思义,主要成分是杰克丹尼斯加可乐。
5.兰姆酒+金酒+汤力水: 两款酒都很烈,混在一起更是火焰熊熊。两款酒都很清澈,合在一起也还是平静如水。所以说,在喝酒人的眼里,水和火是没什么分别的。
6.百利甜酒+苏打水: 女人喝酒是很冒险的,其形象要么特别堕落,要么就特别美丽。百利甜酒的所有组合都是为了迎合女士们,除了加苏打水,甚至还可以加牛奶!
7.百家得兰姆酒+可乐: 我正吃惊在醉眼迷离中怎么会冒出这样一款有革命激情的组合出来。后来认真一看全明白了,古巴产的百家得兰姆酒碰上了自由的美国可乐,其实这世界的冲突漩涡中也有一些可爱的和谐,比如卡斯特罗和克林顿都喜欢雪茄,还有这杯自由古巴。
8.龙舌兰酒+柠檬+盐: 其实这是龙舌兰最正统的喝法,之所以入选是因为喝起来感觉很江湖。记得看《生于七月四日》时,墨西哥还有一款龙舌兰酒,每杯里都泡了一条虫子,人们一口把酒吞下,再狠狠地将虫子吐出了,酷毙了。

MSVC环境下的回车换行

0X0D:\r,carriage return,回车,回到行首
0X0A:\n,new line,line feed,换行,下一行
这两个字符都来源于老式打字机。

Windows操作系统中,行尾的一个回车键(enter)对应0x0d和0x0a两个字符
而Unix或类Unix操作系统中,回车键只对应0x0a一个字符
而mac os中,回车键一般对应0x0d一个字符,注意区别

软回车是MS Word中的概念,按enter生成的叫硬回车,独立成段;shift+enter生成的脚软回车,只作分行处理,不独立成段。MS notepad和Unix vim中不区分软、硬回车。

MSVC6.0中,'\n'对应0x0d和0x0a,'\r'对应0x0d,如果是'\r\n'就对应0x0d、0x0d、0x0a,所以一般用一个'\n'就够了。

2008年3月14日星期五

UPNP理解

UPnP
英文名称:Universal Plug and Play
中文译名:通用即插即用

基本概念 UPnP 是各种各样的智能设备、无线设备和个人电脑等实现遍布全球的对等网络连接(P2P)的结构。UPnP 的应用范围非常大,以致足够可以实现许多现成的、新的及令人兴奋的方案,包括家庭自动化、打印、图片处理、音频 / 视频娱乐、厨房设备、汽车网络和公共集会场所的类似网络。UPnP 是一种分布式的,开放的网络架构,它可以充分发挥 TCP/IP 和网络技术的功能,不但能对类似网络进行无缝连接,而且还能够控制网络设备及在它们之间传输信息。在 UPnP 架构中没有设备驱动程序,取而代之的是普通协议。UPnP 是独立的媒介。在任何操作系统中,利用任何编程语言都可以使用 UPnP 设备。 UPnP 并不是周边设备即插即用模型的简单扩展。在设计上,它支持0设置、网络连接过程“不可见”和自动查找众多供应商提供的多如繁星的设备的类型。换言之,一个 UPnP 设备能够自动跟一个网络连接上、并自动获得一个 IP 地址、传送出自己的权能并获悉其它已经连接上的设备及其权能。最后,此设备能自动顺利地切断网络连接,并且不会引起意想不到的问题。 UPnP 推动了英特网技术的发展,包括 IP、TCP、UDP、HTTP、SSDP 和 XML 等技术。在英特网上契约以有线应用协议为基础,而该协议是说明性的、利用 XML 进行表述和 HTTP 进行传输的。与此相同的是,UPnP 的明确设计目标就是提供这样的环境。再者,当成本、技术或经费等方面的因素阻止了在某种媒介里或接入其中的设备上运用 IP 时,UPnP 能够通过桥接的方式提供非 IP 协议的媒体通道。UPnP 不会为应用程序指定 API,因此供应商们就可以自己创建 API 来满足客户的需求。 技术支持对UPnP的诠释 以下是微软官方网站对UPnP的解释: 问:什么是 UPnP? 答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如 TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。 问:UPnP 对消费者意味着什么? 答:简单、更多选择和更新颖的体验。包含通用即插即用技术的网络产品只需实际连到网络上,即可开始正常工作。实际上,UPnP 可以和任何网络媒体技术(有线或无线)协同使用。举例来说,这包括:Category 5 以太网电缆、Wi-Fi 或 802.11B 无线网络、IEEE 1394("Firewire")、电话线网络或电源线网络。当这些设备与 PC 互连时,用户即可充分利用各种具有创新性的服务和应用程序。 以下是BC官方网站对UPnP的解释: UPnP(Universal Plug and Play),通用即插即用,是一组协议的统称,不能简单理解为UPnP=“自动端口映射”。在BitComet下载中,UPnP包含了2层意思: 1、对于一台内网电脑,BitComet的UPnP功能可以使网关或路由器的NAT模块做自动端口映射,将BitComet监听的端口从网关或路由器映射到内网电脑上。 2、网关或路由器的网络防火墙模块开始对Internet上其他电脑开放这个端口。
UPnP的经典应用 网络地址转换 在数量以百万计而且数目仍然在继续增长的家庭网络出现很久以前,Internet上的寻址系统的就已经开发出来了。实际上,在Internet尚处于幼年的时候所开发的这个寻址系统到目前为止仍然能够正常工作真可以说是一个奇迹。 因为Internet地址资源正在迅速被耗尽,大多数的家庭网络都使用网络地址转换(NAT)技术建立了一个网关。NAT是Internet工程任务组(IETF)制订的一种标准,它允许私有网络中的多台PC或设备共享一个全球唯一的公共地址(所使用私有地址的范围为10.0.x.x、192.168.x.x和172.x.x.x)。作为对IP地址短缺的一种临时补救措施,NAT可以很好地完成很多工作--例如Windows XP的Internet连接共享就使用NAT,就像很多网关设备(例如DSL和线缆调制解调器)所做的一样。 但问题是:NAT希望所有的网络应用程序都以一种标准方式(即在数据包头中使用IP地址)进行通信,但是有些网络程序预计到NAT的存在。他们使用了NAT无法转换的嵌入式IP地址。 NAT 穿越技术 NAT穿越技术允许网络应用程序对它们是否位于一个具有UPnP能力的NAT设备之后进行检测。然后,这些程序将获得共享的全球可路由IP地址,并且配置端口映射以将来自NAT外部端口的数据包转发到应用程序使用的内部端口上--所有这一切都是自动完成的,用户无需手动映射端口或者进行其它工作。NAT穿越技术允许网络设备或者点对点应用程序通过动态开启和闭合与外部服务之间的通信端口穿过NAT网关与外界通信。
UPnP的设置 如何设置UPnP支持 UPNP的英文全称是Universal Plug and Play,即通用即插即用协议,是为了实现电脑与智能的电器设备对等网络连接的体系结构。而内网地址与网络地址的转换就是基于此协议的,因此只要我们的路由器支持upnp,并且我们使用支持此协议的xp操作系统,那么我们就可以借此提高点对点传输速度。 进入路由器的设置界面,如果你的路由器支持upnp的话那么在转发规则选项卡下就会看到upnp设置选项(不同路由器可能会有不同),在此选项中,我们选择启用upnp,然后我们重启一下路由器。这样我们就完成了路由器的设置。 启用UPnP用户界面 在某些情况下,Windows XP可以发现UPnP设备,并且提供它自己的用户界面控制这些设备。一个很好的例子便是"网络连接"文件夹中UPnP住宅网关设备的用户界面(UI)。市场上流行的Linksys BEFSR41W无线路由器在安装完毕后,会自动显示在"网络连接"文件夹中,因为Windows XP已经内置了一个相关的应用程序。 除此之外,你可以使用以下步骤安装可选的UI组件。该UI组件会在系统发现新的设备后显示一个"气球"通知,并且在"网上邻居"文件夹中为每个设备防止一个图标。为了启用UPnP UI,请按照以下步骤操作: 1.点击"开始",点击"控制面板",然后点击"添加或删除程序"。 2.在"添加或删除程序"对话框中,点击"添加/删除Windows组件"。 3.在"Windows组件向导"中,点击"网络服务",点击"详细",然后选择"通用即插即用"复选框。 4.点击"确定",然后点击"Windows组件向导"对话框中的"下一步"。您可能需要提供您的Windows XP安装CD。 UPnP映射失败的原因 1.系统服务中禁止了SSDP服务(用于寻找upnp设备) 2.开启了XP下的SP1的ICF(网络连接防火墙)。(XP的ICF与UPnP设备发现有冲突,SP2修复了这个问题,但是仍然需要在防火墙设置中允许例外:UPnP 框架。) 3.路由器不支持UPnP,请向制造商询问。 等等。
UPnP的安全性 由于UPnP技术的简单性和坚持开放标准,UPnP技术已经得到了众多设备厂商的采纳。Windows XP率先实现了对UPnP技术的支持,但是,它现在还存在一些安全漏洞,攻击者可以使用这些漏洞减慢您的PC的运行速度,或者,在极少数的情况下,攻击者可以对他在您的系统中的权限进行提升。但是,如果你在Windows XP中安装了防火墙,这些问题都将不成其为问题。实际上,Windows XP自身就附带了一个Internet连接防火墙,默认情况下,该防火墙安装在您的Internet连接上,因此能够保护您免遭Internet攻击者的攻击。UPnP中的这个安全性漏洞已经得到了修补。Microsoft 安全性公告MS01-059对该问题进行了讨论,并且提供了与此有关的更多资源链接,你可以通过这些链接查看知识库文章了解更多信息,或者下载相应的安全补丁。
UPNP设备 UPNP是通用即插即用设备的缩写。 UPnP技术对即插即用进行了扩展,它简化了家庭或企业中智能设备的联网过程。在结合了UPnP技术的设备以物理形式连接到网络中之后,它们可以通过网络自动彼此连接在一起,而且连接过程无需用户的参与和使用中央服务器。 UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的其它Internet协议。这就是它之所以被称作"通用"的原因所在--UPnP技术不依赖于特定的设备驱动程序,而是使用标准的协议。UPnP设备可以自动配置网络地址,宣布它们在某个网络子网的存在,以及互相交换对设备和服务的描述。基于Windows XP的计算机可以充当一个UPnP控制点,通过程序界面对设备进行发现和控制。 如果与以前的即插即用相比,这种技术似乎并不具有什么革命性的意义。在操作系统中增加即插即用技术使得在单个计算机上安装、配置和添加外设的工作变得更容易了。但是UPnP为家庭用户或者小型办公环境中的非专业用户所带来的是一道更加美味的"大餐",他们可以利用UPnP玩多人游戏,进行实时通信(Internet电话,电话会议)以及使用类似Windows XP的远程协助这样的其它技术。到目前为止,仅有配备了完整IT团队的几个大公司能够轻松做到这些(虽然,我怀疑多人游戏和能够上网冲浪的电冰箱是否会是他们强调的重点)。

2008年3月11日星期二

vmware-mount使用

VMware-mount z: d:\temp\Win2k.vmdk 挂载到盘符z:下
VMware-mount z: /d 解除挂载
VMware-mount /v:2 h: C:\VMW\w2k.vmdk 将vmdk的第二个分区挂载到h:下

标签:


2008年3月6日星期四

vmware 网络设置: 理解网络

bridge:


这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。

在此种模式下,虚拟机内部的网卡(例如linux下的eth0)直接连到了物理网卡所在的网络上,可以想象为虚拟机和host机处于对等的地位,在网络关系上是平等的,没有谁在谁后面的问题。

使用这种方式很简单,前提是你可以得到1个以上的地址。对于想进行种种网络实验的朋友 不太适合,因为你无法对虚拟机的网络进行控制,它直接出去了。

nat方式:


这种方式下host内部出现了一个虚拟的网卡vmnet8(默认情况下),如果你有过 做nat服务器的经验,这里的vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运 行在内网上的机器,虚拟机内的网卡(eth0)则独立于vmnet8。

你会发现在这种方式下,vmware自带的dhcp会默认地加载到vmnet8界面上,这样虚拟机就可以使用dhcp服务。更为重要的是, vmware自带了nat服务,提供了从vmnet8到外网的地址转 换,所以这种情况是一个实实在在的nat服务器在运行,只不过是供虚拟机用的。

很显然,如果你只有一个外网地址,此种方式很合适。

hostonly:



这应该是最为灵活的方式,有兴趣的话可以进行各种网络实验。和nat唯一的不同的是,此 种方式下,没有地址转换服务,因此,模认情况下,虚拟机只能到主机访问,这也是hostonly的名字的意义。

默认情况下,也会有一个dhcp服务加载到vmnet1上。这样连接到vmnet1上的虚拟机仍然可以设置成dhcp,方便系统的配置.

是不是这种方式就没有办法连接到外网呢,当然不是,事实上,这种方式更为灵活,你可以使用自己的方式,从而达到最理想的配置,例如:
a。使用自己dhcp服务:首先停掉vmware自带的dhcp服务,使dhcp服务更为统一。
b。使用自己的nat,方便加入防火墙。windows host可以做nat的方法很多,简单的如windows xp的internet共享,复杂的如windows server里的nat服务。
c. 使用自己的防火墙。因为你可以完全控制vmnet1,你可以加入(或试验)防火墙在vmnet1和外网的网卡间。

从以上可以看出,hostonly这种模式和普通的nat server带整个内网上网的情形类似,因此你可以方便的进行与之有关的实验,比如防火墙的设置等。

2008年3月4日星期二

MSVC: the Symbol 'someSymbol' is undefined的解决方法

删掉对应的.bsc文件,在出错的symbol重新go to definition of 'someSymbol',会提示重建.bsc文件,确认ok!

标签:


2008年3月3日星期一

getch()、getche()与getchar()的区别与联系

getch()、getche()与getchar()的区别与联系
(1) getch()和getche()函数

这两个函数都是从键盘上读入一个字符。
其调用格式为:
getch();
getche();

两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche() 函数却将读入的字符回显到显示屏幕上。

例1:
#include

main()
{
char c, ch;
c=getch(); /*从键盘上读入一个字符不回显送给字符变量c*/
putchar(c); /*输出该字符*/
ch=getche(); /*从键盘上带回显的读入一个字符送给字符变量ch*/
putchar(ch);
}
利用回显和不回显的特点, 这两个函数经常用于交互输入的过程中完成暂停等功能。

例2:
#include
main()
{
char c, s[20];
printf("Name:");
gets(s); //以回车作为输入结束
printf("Press any key to continue...");
getch(); /*等待输入任一键*/
}

(2) getchar()函数
getchar()函数也是从键盘上读入一个字符, 并带回显。
它与前面两个函数 的区别在于: getchar()函数等待输入直到按回车才结束, 回车前的所有输入字 符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
getchar()函数的调用格式为:
getchar();

例3:
#include
main()
{
char c;
c=getchar(); /*从键盘读入字符直到回车结束*/
putchar(c); /*显示输入的第一个字符*/
getch(); /*等待按任一健*/
}

例4
#include
main()
{
char c;
while ((c=getchar())!='\n') /*每个getchar()依次读入一个字符*/
printf("%c",c); /*按照原样输出*/
getch(); /*等待按任一健*/
}

标签:


#pragma pack控制下的内存数据对齐

struct或类是复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如array、struct、union等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
自然对界是指按结构体的成员中 sizeof 最大的成员对齐。
#pragma pack规定的对齐长度,实际使用的规则是:结构,联合,或者类的数据成员,第一个放在偏移为0的地方,以后每个数据成员的对齐,按照#pragma pack指定的数值和结构体的自然对齐长度中比较小的那个进行。就是说,当#pragma pack的值等于或超过所有数据成员长度的时候,这个值的大小将不产生任何效果。整个结构体的对齐,按照结构体中size最大的数据成员和#pragma pack指定值之间,较小的那个进行。
具体解释:
#pragma pack(4)
class TestB
{
public:
int aa; //第一个成员,放在[0,3]偏移的位置
char a; //第二个成员,自身长为1,#pragma pack(4), 取小值,也就是1,所以这个成员按一字节对齐,放在偏移[4]的位置。    
short b; //第三个成员,自身长2,#pragma pack(4),取2,按2字节对齐,所以放在偏移[6,7]的位置。    
char c; //第四个,自身长为1,放在[8]的位置。
};
这个类实际占据的内存空间是9字节类之间的对齐,是按照类内部最大的成员的长度,和#pragma pack规定的值之中较小的一个对齐的。所以这个例子中,类之间对齐的长度是min(sizeof(int),4),也就是4。9按照4字节圆整的结果是12,所以sizeof(TestB)是12。
如果
#pragma pack(2)
class TestB
{
public:
int aa; //第一个成员,放在[0,3]偏移的位置,
char a; //第二个成员,自身长为1,#pragma pack(4),取小值,也就是1,所以这个成员按一字节对齐,放在偏移[4]的位置。    
short b; //第三个成员,自身长2,#pragma pack(4),取2,按2字节对齐,所以放在偏移[6,7]的位置。    
char c; //第四个,自身长为1,放在[8]的位置。  
};
//可以看出,上面的位置完全没有变化,只是类之间改为按2字节对齐,9按2圆整的结果是10。
//所以 sizeof(TestB)是10。
使用伪指令#pragma pack (),取消自定义字节对齐方式。
#pragma pack(push, 1)与#pragma pack(1)作用一样
#pragma pack(pop)和#pragma pack()作用一样

标签:


MSVC6.0下使用libnet开发

1. 下载新的windows xp sp2 sdk, vc6.0自带的太老。如其中一个头文件
typedef struct npf_if_addr
{
struct sockaddr_storage IPAddress; ///<>sockaddr
struct sockaddr_storage SubnetMask; ///< Netmask for that address.
struct sockaddr_storage Broadcast; ///< Broadcast address.
}npf_if_addr;
如果不使用最新的xp sp2 sdk,就会报错,'IPAddress' uses undefined struct 'sockaddr_storage'其实这是因为vc6.0自带的winsock2.h太老了,只包含了sockaddr的定义,而没有sockaddr_storage的定义,后者定义 可以在windows xp sp2 sdk的winsock2.h中找到。下载地址http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm,使用滕讯下载或
讯雷等多线程工具快速下载。
2. 在vc6.0中tools->options->directories下添加sdk的include和library路径,并将其置于最上的位置,表示优先
使用windows xp sp2 sdk中的定义。
3. 在vc6.0中tools->options->directories下添加winpcap的include和library路径,libnet的编译依赖于winpcap。
4. 打开,libnet.dsw,在project->settings->link->general->object/library modules加入advapi32.lib。
5. 编译,生成libnet.dll,libnet.lib。
6. 将libnet.dll放到system32目录下,同时注意在进行libnet开发时,加入libnet.lib。

标签:


2008年3月1日星期六

libnet开发包简介

Libnet是一个专业的网络数据包构造和发送开发包,它是一个高层次的API函数库,允许开发者构造和发送网络数据包。Libnet提供了一个对底层网络数据包进行构造、修改和发送的高级接口。它隐藏了很多底层细节,省去了很多麻烦,如多路技术、缓冲区管理、网络数据包头信息、字节流顺序、操作系统兼容性,以及校验和计算问题等。Libnet主要提供了在IP层和链路层构造网络数据包的功能和一些非常有用的辅助功能。使用Libnet可以非常轻松、快捷地构造任何形式的网络数据包,开发各种各样的网络安全应用程序,甚至非常复杂的程序。Libnet主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能.他的主要特点是:
.高层接口:Libnet主要用C语言写成
.数据报构造:Libnet提供了一系列的TCP/IP数据报文的构造函数以方便用户使用。
.数据报的处理:Libnet提供了一系列的辅助函数,利用这些辅助函数,帮助用户简化那些烦琐的事务性的编程工作
.数据报发送:Libnet允许用户在两种不同的数据报发送方法中选择。
另外Libnet允许程序获得对数据报的绝对的控制,其中一些是传统的网络程序接口所不提供的。
Libnet提供两种将数据报发送到网络的接口:原始套接字(raw socket)接口和链路层(Link Layer)接口。本文选取的是链路层接口进行设计的。

This page is powered by Blogger. Isn't yours?

订阅 博文 [Atom]