在sql中如何替换去掉回车符?

3

分类 : 编码知识 | 发表时间 21-07-2008

今天在远程查询sql数据时,遇到了乱码以及在表中大量出现回车符的情况,处理过程比较有意义,日志一下,留待后用。

本来在sql查询分析器中查询的,但查询出来的数据,在复制时,不能复制表头,要一项项设置,比较麻烦;因此就考虑在企业管理器中把刚才在sql查询分析器中的语句执行一下,这样就可以复制字段名,也就是表格的表头。

在把数据复制到excel中后,处理数据发现了大量的乱码错误,并且在整理乱码表列时,还发现存有很多回车标记,这可能是录入资料人员由于习惯问题,把回车符也给提交了上去,这是程序没有过滤引起的。

后来考虑把回车符从sql数据库中去掉,同时也在想,会不会是由于回车符引起了数据导入到excel后文本乱码?

在sql中替换去掉回车符的sql语句:

把回车符替换成空;

update tablename set field1=replace(field1,’ ‘,”)

或:

update tablename set field1=replace(replace(field1,char(10),”),char(13),”)

回车符号在sql中是char(13),第一个命令我用过;第二个命令没在实际测试用,如果要替换为其他字符值,把单引号中加入相应值即可。

硬件知识剖析之键盘驱动

0

分类 : 技术文摘 | 发表时间 20-07-2008

这次讲的可能玄乎点,在linux等系统下编译或者编译驱动程序时,或许用得着,其他时候,也没什么群体愿意了解这些知道,前天研发部的人在利用键盘控制扫描枪和前端钱箱,用到了这方面的细节知道,比较有用。

【PC端】:pc机上对键盘进行读写与控制的io端口是60H和64H;60H作为数据端口,由改端口可以给键盘写数据或读取键盘数据;64H作为命令端口,可以读取键盘的状态或写入命令数据;

【键盘控制器端】:在linux下我们可以用下面的命令来查看我们pc机当前使用的是什么键盘控制器:
helight@helight-desktop:~$ cat /proc/interrupts
CPU0 CPU1
0: 181 0 IO-APIC-edge timer
1: 1800 0 IO-APIC-edge i8042
3: 2 0 IO-APIC-edge
4: 2 0 IO-APIC-edge
7: 0 0 IO-APIC-edge parport0
8: 3 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-fasteoi acpi
14: 0 0 IO-APIC-edge libata
15: 8686 0 IO-APIC-edge libata
……
另外键盘一般使用的中断号是1.所以可以看出其对应的控制器是i8042,当然从网上查了资料得知,一般情况下的键盘
控制器也就是i8042,所以看到这两个都有时,就可以确定键盘中断号是1,键盘控制器就是i8042.

i8042:
i8042也就是intel8042,位于主板上,CPU通过IO端口与i8042通信,i8042则负责读取键盘按键的扫描吗或是发送个中键盘命令.另外还有一个芯片是8048,它是位于键盘中的,是将键盘上的按键转换成所谓的扫描码,关于扫描码下面会做简单的介绍.
而我们的键盘驱动直接读写 i8042 芯片,通过 i8042 间接的向键盘中的 i8048 发命令。所以对于驱动来说,直接发生联系的只有 i8042 ,因此我们只介绍 i8042 ,不介绍 i8048。

i8042有四个8bits的寄存器,他们是状态机存器,输出寄存器,输入寄存器和控制寄存器.而端口只是用60H和64H两个端口.
状态寄存器是一个8位只读寄存器,任何时刻均可被cpu读取。其各位定义如下
Bit7: PARITY-EVEN(P_E): 从键盘获得的数据奇偶校验错误
Bit6: RCV-TMOUT(R_T): 接收超时,置1
Bit5: TRANS_TMOUT(T_T): 发送超时,置1
Bit4: KYBD_INH(K_I): 为1,键盘没有被禁止。为0,键盘被禁止。
Bit3: CMD_DATA(C_D): 为1,输入缓冲器中的内容为命令,为0,输入缓冲器中的内容为数据。
Bit2: SYS_FLAG(S_F): 系统标志,加电启动置0,自检通过后置1
Bit1: INPUT_BUF_FULL(I_B_F): 输入缓冲器满置1,i8042 取走后置0
BitO: OUT_BUF_FULL(O_B_F): 输出缓冲器满置1,CPU读取后置0

Output Buffer(输出缓冲器)
输出缓冲器是一个8位只读寄存器。驱动从这个寄存器中读取数据。这些数据包括,扫描码,发往 i8042 命令的响应,间接的发往 i8048 命令的响应。

Input Buffer(输入缓冲器)
输入缓冲器是一个8位只写寄存器。缓冲驱动发来的内容。这些内容包括,发往 i8042 的命令,通过 i8042 间接发往 i8048 的命令,以及作为命令参数的数据。

Control Register(控制寄存器)
也被称作 Controller Command Byte (控制器命令字节)。其各位定义如下
Bit7: 保留,应该为0
Bit6: 将第二套扫描码翻译为第一套
Bit5: 置1,禁止鼠标
Bit4: 置1,禁止键盘
Bit3: 置1,忽略状态寄存器中的 Bit4
Bit2: 设置状态寄存器中的 Bit2
Bit1: 置1,enable 鼠标中断
BitO: 置1,enable 键盘中断

【控制命令】 :
对键盘的控制命令有两种:
1.使用于i8042的命令,这种命令是直接写给i8042来完成.
这一类的操作有:给i8042写命令或读命令,设置键盘密码,自检,开启或禁用键盘等.

2.以数据的形式写给i8042,再由i8042以命令的形式写给i8048达到控制目的.
这一类的操作有: 设置LED灯设置键盘的扫描码类型,设置键盘的工作方式等.

【扫描码】 :
当键盘上有键被按下,松开,按住,键盘将产生扫描码( Scan Code ),这些扫描码将被 i8048 直接得到。扫描码有两种,Make Code 和 Break Code。当一个键被按下或按住时产生的是 Make Code ,当一个键被松开产生的是 Break Code。每个键被分配了唯一的 Make Code 和 Break Code ,这样主机通过扫描码就可以知道是哪一个键。简单的说就是按下键,产生一个 Make Code。松开键,产生一个 Break Code。

到目前为止一共有三套扫描码集( Scan Code Set ),ps/2 键盘默认使用第二套。不过可以设置 i8042,让 i8042 把得到的 Scan Code 翻译成 Scan Code Set 1 中的 Scan Code ,这样键盘驱动从 i8042 得到的所有 Scan Code 都是第一套中的 Scan Code(实际中驱动也是这么做的)。所以我们只讨论 Scan Code Set 1 。需要说明的是 Scan Code 和 ASCII码完全不相同。

在 Scan Code Set 1 中,大多数键的 Make Code,Break Code 都是一个字节。他们的 Make Code 的最高位都为0,也就是他们的 Make Code 都小于 0x7F。而他们的 Break Code 为其 Make Code 或运算 80h ,也就是把 Make Code 的低7位不变,最高位设置为1。

还有一些扩展按键,他们的 Scan Code 是双字节的。他们的第一个字节都是E0h,表明这是一个扩展键。第2个字节,和单字节 Scan Code 的情况相同。

还有一个特殊的键,Pause/Break 键,它的 Make Code 为 E1,1D,45 E1,9D,C5,注意是 E1h 开头。而且它没有 Break Code 。但有些键盘使用的是Scan Code Set 1.

以上大部分内容转录自互联网,内容源自RSS中。

讨论内存不能为“read”的一些可能原因和解决方法

0

分类 : 技术文摘 | 发表时间 17-12-2007

经常遇到有朋友在正在运行一些程序时,突然弹出该内存不能为“read”或“written”,接着程序就死掉退出;更甚者,整个系统蓝屏。以下是一些代码提示:

“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。(0x后面内容有可能不一样。)

一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

1、微软IE缓冲溢出漏洞引起

2、内存或虚拟内存地址使用冲突造成程序的运行需要分配一定的内存地址给程序使用,当程序结束时释放留出空间让给新的程序使用,win是多任务的系统有时前程序未结束 又有新的任务开始到底要多少内存或虚拟内存来保证我们同时运行的工作任务呢?也许win在这个问题上没弄好,所以有此错误常常发生,一般运行大型软件或多媒体后出现这种情况

3、劣质内存条也会出现这个问题一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。

4、微软WINDOWS系统的漏洞,windows把内存地址0X00000000到0X0000ffff指定为分配null指针的地址范围,如果程序试图访问这一地址,则认为是错误。c/c++编写的程序通常不进行严格的错误检查,当采用malloc来分配内存而可供分配的地址空间不够的情况下返回null指针。但是代码不检查这种错误,认为地址分配已经成功,于是就访问0X00000000的地址,于是就发生内存违规访问,同时该进程被终止。ASCII字符填充组成的pif文件时会出现以下情况:一个非法的pif文件(用ascii字符\”x\”填充)至少要369字节,系统才认为是一个合法的pif文件,才会以pif的图标[pifmgr.dll,0]显示,才会在属性里有程序、字体、内存、屏幕”等内容。而且仅仅当一个非pif文件的大小是369字节时察看属性的“程序”页时,不会发生程序错误,哪怕是370字节也不行。当对一个大于369字节的非法pif文件察看属性的“程序”页时,Explorer会出错,提示:\”***\”指令引用的\”***\”内存。该内存不能为\”read\” ,问题出在pif文件的16进制地址:0×00000181[0x87]0×00000182[0x01]和 0×00000231[0xC3]0×00000232[0x02]即使是一个合法pif文件,只要改动这四处的任意一处,也会引起程序错误。而只要把0×00000181和0×00000182的值改为[0xFF][0xFF],那么其它地址任意更改都不会引起错误。

5、可能没有完全正确安装apache服务,且启动了它的原故; 把服务中OracleOraHomeXXHTTPServer改成停 止

6、应用程序没有检查内存分配失败程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0×00000000”。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

7、应用程序由于自身BUG引用了不正常的内存指针在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0×00000000”,而是其他随机数字。

如果系统经常有所提到的错误提示,下面的建议可能会有帮助:

1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

3.试用新版本的应用程序

4、删除然后重新创建 WINDOWS\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。删除 WINDOWS\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs

下面我从几个例子给大家分析:

例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0×00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现&ldquo
;发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。
解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。

例二:在windowsxp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的0×00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。
解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayerui.dll。右键,属性,也会出现兼容性的选项。   

例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。
解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。
解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例五:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。
解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。

例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0×00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。
解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

例七:我的笔记本电脑用的XP系统,有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭,然后有弹出0x03e7c738指令引用的0x03e7c738内存,该内存不能为read,请问是怎么回事?
解决方法:先查杀一下病毒,另外如果你安装了浏览增强之类的软件,请卸掉。

例八:从桌面或开始菜单中打开任何一个程序, 出现错误提示:"0x…….."指令引用的"0×00000000"内存,该内存不能为"read"。省略号代表可变值。而从运行中打开程序没问题。
解决方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。

例九:我三个月前配了台机子。系统比较不稳定,三个月内已经重装过多次系统,四五天前刚装过系统,可是经常随机地出现Explorer-应用程序错误,“0x4a01259d“指令引用的“0×00000000"内存。该内存不能为“read"。要终止程序,请单击“确定“。要调试程序,请单击“取消”。如果点确定,windows桌面就不见了。这种问题在之前的系统也出现过,不知道是不是硬件的问题?
解决方法:内存的兼容性问题!遇到这类问题,用户可以自行打开机器把内存的位置调动一下,看问题是否可以解决,如果问题依旧,可与你的朋友调换内存使用。

通过上面的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。

问题产生原因原因--解决方法

内存条坏了--更换内存条

双内存不兼容--使用同品牌的内存或只用一条内存

内存质量问题--更换内存条

散热问题--加强机箱内部的散热

内存和主板没插好或和其它硬件不兼容等--重插内存或换个插糟

硬盘有问题--更换硬盘

驱动问题--重装驱动。如果是新系统,要先安装主板驱动

软件损坏--重装软件

软件有BUG--打补丁或用最新的版本。

软件和系统不兼容--给软件打上补丁或者试试系统的兼容模式

软件和软件之间有冲突--如果最近安装了什么新软件,卸载了试试

软件要使用到其它相关的软件有问题--重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

病毒问题--杀毒

杀毒软件与系统或软件冲突--由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试

系统本身有问题--有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了。

另注:在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。
如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕

其它讨论:

方法一:微软新闻组的朋友指点:开始–运行:regsvr32 jscript.dll 开始–运行:regsvr32 vbscript.dll

不过没解决—但提供了路子—–一次注册所有dll文件,这个办法,曾经解决过“无法登陆”问题

运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
for %1 in (%windir%\system32\*.dll) do regsvr32 /s %
这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看

方法二:
一般来讲就是给系统打上补丁更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了]

更多相关讨论

造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助:
1
。确保使用的是未修改过的软件(非汉化、破解版)
2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)
3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”

处理方法:
运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。

曾验证解决办法:尝试了多种办法,最后我发现问题出在微软的NET.Framework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NET.Framework1.0和1.1,世界太平了。

另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。

上面的方法,最管用、最彻底的方法是这个:

运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

技巧:如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。

如果还嫌不够方便,本站特为你提供解决内存不能为read工具下载

no keepalive这条命令有什么用处

0

分类 : 技术文摘 | 发表时间 18-06-2006

keepalive是两个设备间发送的live信号,没有了这个live对方就可能认为你已经dead了。:)

no logg console不要在终端上显示logging信息,如debug信息

no logging console的意义就是为了减小router的cpu,让debug之类的信息不显示在console中!

有几种情况下,可以不要keepalive,如:当链路的速率非常低的时候,一些keepalive会影响链路协议的运行,导致line protocol down;还有在serial 中使用LQM(Link Quality Monitoring) on PPP,LQR就替换了keepalive,但没有配置LQM,keepalive仍然使用。

还有就是在做实验是,一般ETHER口要接设备什么的在能UP,你在INTERFACE下设no keepalive 就可以让它UP

一般来说,在实验中,以太口接PC就可以UP了,前提是设置了NO SHUT

摘自共享联盟http://bbs.shareunion.net思科专区

增强对木马和病毒防范之几大绝招

0

分类 : 系统安全 | 发表时间 15-06-2006

信息来源:http://gooo.77169.com/archives/2006/77592.html

一、问题的提出

  大部分的木马及部分的病毒是通过注册表的自启动项或文件关联或通过系统服务实现自启动的,那是否有一种方法可以防止木马或病毒修改注册表项及增加服务呢?

  二、问题的解决

  windows2000/xp/2003的注册表是可以设置权限的,只是我们比较少用到。设置以下注册表键的权限:

  1、设置注册表自启动项为everyone只读(Run、RunOnce、RunService),防止木马、病毒通过自启动项目启动
  2、设置.txt、.com、.exe、.inf、.ini、.bat等等文件关联为everyone只读,防止木马、病毒通过文件关联启动
  3、设置注册表HKLM/SYSTEM/CurrentControlSet/Services为everyone只读,防止木马、病毒以”服务”方式启动

  注册表键的权限设置可以通过以下方式实现:

  1、如果在域环境里,可能通过活动目录的组策略实现的

  2、本地计算机的组策略来(命令行用secedit)

  3、本文通过setacl这个程序加批处理实现,可以在http://www.helge.mynetcologne.de/setacl/下载

  4、手工操作可以通过regedt32(windows2000系统,在菜单“安全”下的“权限”)或regedit(windows2003/xp,在“编辑”菜单下的“权限”)

  批处理代码在后面给出。

  如果只有users组权限,以上键值默认是只读的,就可以不用这么麻烦了。

  三、适用人群

  1)、对电脑不是很熟悉,不经常安装/卸载软件的人

  2)、喜欢在网上下载软件安装的朋友

  3)、每台电脑的操作人员都有管理员权限,这些人的电脑水平又参差不齐的企业

  四、还存在的问题

  1)、安装杀毒软件,打补丁的时候都可能对那些注册表进行操作,这样就得先恢复权限设置,再安装,安装完成后重新设置。不方便

  2)、防不住3721,不知是不是3721的权限太高了(听说3721是通过驱动程序启动的,有ring 0级权限)

  3)、只适合windows2000/xp/2003,其他的就没办法了

  4)、只能对付那些简单的病毒和木马

  五、其他

  大家看完本文看,可能禁不住大骂:神经病,两三句话就说完的事,非得搞得像论文,写这么一大堆,浪费我时间。如果真的是这样,那真的是对不起了。只因为公司在实施ISO,我也觉得ISO里提倡的东西蛮好的,为了规范化我的文档,我就多做些练习了。

  打包好的程序可以到:
https://www.xfocus.net/php/tools.php?sub=down&tid=741下载。

  六、批处理源代码

@goto start
==============================================================
名称:反特洛伊木马
功能:

1、禁用自启动项目(run runonce runservices)
2、禁止修改.txt、.com、.exe、.inf、.ini、.bat等等文件关联
3、禁止修改”服务”信息

原理:设置注册表权限为只读

版本修订情况

版本号 修订日期 修订人 修订内容
1.0 2004-12-22 netu0 创建本脚本
==============================================================
:start
@SETLOCAL
@rem 活动代码页设为中文
@chcp 936>nul 2>nul
@echo.
@echo ************************************************************
@echo #
@echo #         欢迎使用反特洛伊木马程序
@echo #
@echo #
@echo ************************************************************

:chkOS
@echo.
@ver find “2000″ > nul 2>nul
@if “%ERRORLEVEL%”==”0″ goto :2000
@ver find “Microsoft Windows [版本 5" > nul 2>nul
@if "%ERRORLEVEL%"=="0" goto :2003
@ver find "XP" > nul 2>nul
@if "%ERRORLEVEL%"=="0" goto :XP
@echo.
@echo #您的操作系统不是Windows 2000/XP/2003中的一种,无法使用。
@goto quit

@rem 在下面语句插不同系统的不同命令
:2000
@set UpdatePolicy=secedit /refreshpolicy machine_policy>nul 2>nul
@goto Selection

:XP
@set UpdatePolicy=GPUpdate /Force>nul 2>nul
@goto Selection

:2003
@set UpdatePolicy=GPUpdate /Force>nul 2>nul
@goto Selection

:Selection
@rem User Choice
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1: 安装反特洛伊木马保护
@echo 2: 删除反特洛伊木马保护(恢复默认设置)
@echo 3: 查看技术信息
@echo 4: 退出
@echo.
@set /p UserSelection=输入您的选择(1、2、3、4)
@if "%UserSelection%"=="1" goto install
@if "%UserSelection%"=="2" goto uninstall
@if "%UserSelection%"=="3" goto information
@if "%UserSelection%"=="4" goto quit
@rem 输入其他字符
@cls
@goto Selection

:information
@cls
@echo

============================================================
@echo #
@echo #         欢迎使用反特洛伊木马程序
@echo #
@echo #功能:
@echo #
@echo # 1、设置注册表自启动项为只读(Run、RunOnce、RunService),
@echo # 防止木马、病毒通过自启动项目启动
@echo # 2、设置.txt、.com、.exe、.inf、.ini、.bat等等文件关联为只读,
@echo # 防止木马、病毒通过文件关联启动
@echo # 3、设置注册表HKLM/SYSTEM/CurrentControlSet/Services为只读
@echo # 防止木马、病毒以"服务"方式启动
@echo #
@echo #注意事项:
@echo # 某些安装程序也会用到以上注册表键,请在安装前运行本程序,
@echo # 然后选择2,恢复默认设置。安装完成后,重新运行本程序,
@echo # 然后选择1,实施反特洛伊木马保护
@echo ==============================================================
@echo.
@echo 按任意键,返回选择
@pause>nul 2>nul
@cls
@goto Selection
:install
@set OP=/grant everyone /read /p:no_dont_copy
@goto Doit
:uninstall
@set OP=/revoke everyone /read /p:yes
@goto Doit
:D oit
@echo.
@echo 正在执行操作...
@rem HKLM
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul

@rem HKCU
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce /registry %OP%>nul 2>nul

@rem USERS
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/M
icrosoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce /registry %OP%>nul 2>nul

@rem Services
@setacl MACHINE/SYSTEM/CurrentControlSet/Services /registry %OP%>nul 2>nul

@rem CLASSES_ROOT
@setacl CLASSES_ROOT/exefile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/inifile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/txtfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/comfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/batfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/inffile/shell/open/command /registry %OP%>nul 2>nul

@echo 正在更新帐户策略、审核策略......
@REM [刷新本地安全策略]
@%UpdatePolicy%>nul 2>nul
@echo 帐户策略、审核策略更新完成

:complete
@echo 操作完成
@echo.
@echo.
@echo 请按任意键退出。
@pause>nul 2>nul

:quit
@rem Clear
@del %systemroot%/system32/setacl.exe>nul 2>nul
@del %systemroot%/system32/AntiTrojanhorse.bat>nul 2>nul

@ENDLOCAL

加速交换机端口初始化进程

0

分类 : 技术文摘 | 发表时间 15-06-2006

当把电脑连到一台Cisco交换机上时,可能需要30秒甚至更多的时间,电脑才可以使用网络进行通讯。如果你正着急等着要用,30秒的等待足以让你感觉无比漫长。让我们来看看如何才能加速交换机的端口初始化进程。

了解交换机端口初始化的过程 当把设备连上已经启动的交换机的端口,交换机端口一般会经历4各步骤。我们来仔细看一下。

生成树协议(STP)初始化

STP是IEEE 802.1d协议,它阻止一个局域网里形成环路。测试此交换机端口是必要的;启动STP时会在局域网内形成一次循环。如果连上来的是一台集线器、交换机或者是路由器,STP就显得分外重要。另外一方面,如果连上来的是一台电脑、打印机、服务器或者一台笔记本电脑,那么STP的初始化进程就不需要了。 在STP初始化阶段中间,端口会经历STP的5个阶段:阻塞、倾听、学习、转发以及失效。整个过程耗时15秒。所以,如果你确定将要连接的是什么,你就可以终止这个过程。

 以太通道配置测试

下一个过程是对以太通道的测试,这是和交换机端口绑定在一起,以便提供更多的以太网连接。如果一条通道不行,以太通道通常会提供冗余。这个过程使用端口聚合协议(PAgP),耗时大约15秒。 Trunk配置测试有线和无线网络 下一步,交换机开始测试该端口是否Trunk端口(交换机之间互联用的端口)。TRUNKING通过单一的交换机端口,在多个VLAN之间交换数据。对Trunk端口的测试耗时很少,当然你也可以禁止它,再节省1、2秒时间出来。 交换机端口速度与全双工的自适应 最后,交换机端口进入速度与全双工的自动握手。举例来说,一个交换机端口可支持1000Mb(1Gb)的全双工速度,但是客户机只支持100Mb的全双工,则交换机和客户机会自动协商彼此能支持的最高速率。 可以在交换机初始化过程时对此过程进行硬编码以节约时间。但是这并不总是一个好的选择,因为可能不知道客户端支持的速度到底是多少。这个自适应时间不长,所以不妨仔细考虑一下如果要对每一个交换机端口进行硬编码的时间耗费是否值得。 现在我们已经回顾了交换机端口初始化的不同阶段,让我们来看看能从中节约多少时间。

执行下述步骤,可以为基于Cisco IOS协议的交换机节约30秒以上的端口初始化时间: 将交换机端口设为Access模式。这可以取消Trunk协商,并阻止端口进入以太通道协商。这可以为初始化过程节约15秒。 配置PortFast。这可以阻止端口进入STP协商,并再节约15秒时间。下面是个例子: Switch(config)# int fa0/21

Switch(config-if)# switchport mode access

Switch(config-if)# spanning-tree portfast %

Warning: Only enable PortFast on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc. to this interface when you’ve PortFast can cause temporary bridging loops. Use with CAUTION. %This has configured PortFast on FastEthernet0/21 but will only have an effect when the interface is in a non-trunking mode.

Switch(config-if)# no shutdown

Switch(config-if)#

也可以在一系列端口上设置,比如:

Switch(config)# int range fastEthernet 0/1 – 24

Switch(config-if-range)# switchport mode access

Switch(config-if-range)# spanning-tree portfast

如果觉得需要,也可以人为设置交换机端口的速度,节约一点时间。下面是例子。

 Switch(config-if)# speed 100

Switch(config-if)# duplex full

通过禁止STP初始化,Trunk协商,以太通道协商可以为初始化进程节约30秒时间。另外,可以使用接口的范围命令,设置好交换机的所有端口。

杀毒–难道非要用软件(人毒大战的终级指南)

0

分类 : 技术文摘 | 发表时间 14-06-2006

杀毒——难道非要用软件?(人毒大战的终级指南)

在下Creamdog,可以算是一名熟练的C++程序员了,从业六年。曾尝试过写杀毒软件,仅限于对某一种或几种类似病毒的专杀。我的主攻是三维引擎和仿真领域的数据结构和算法,对杀毒软件这种体力活并不在行,因此没有过多的研究,但对于其机理还是有一定了解的。对于琳琅满目的杀毒软件我一向是不屑一顾,因为他们不仅不能够有效的防范、查杀,自己有时也有一些流氓行为,不仅让计算机性能极剧降低,占用了巨大的内存资源,更为可恶的是有时将病毒杀死后竟藏匿尸首,令人哭笑不得。我数年来从未用过任何杀毒软件杀毒,一切病毒靠人工查杀,机器没有一次因病毒而瘫痪,因此我在在预防和查杀上积累了一些经验,希望和朋友们分享。下面将从预防和查杀两个角度展开讨论,希望此文对于饱受病毒之苦的朋友有所帮助。

预防篇

一、98?ME?2K?XP?Vista!?
操作系统是最需要得到重视的,我估计至少有90%以上的病毒是通过各类操作系统漏洞而感染机器的,因此要想从根源上断掉病毒的根,务必从操作系统入手。我更情愿将机器抵抗病毒的能力比喻为人的免疫系统,而操作系统正像人类免疫系统的第一级——皮肤,因此选择一款安全的操作系统是非常重要的,下面是我对MS各操作系统的看法。98和ME已被我列入黑名单,MS实际上已经放弃了对它们的支持,不会再对其安全性做大的升级了,我想它们对于大家来说也没有什么值得留恋的,正如盖茨曾说的“一晃二十年,形式变了!”但如果你必须要使用,最好的防毒办法就是“物理断开”。网线是一定要拨掉的,光盘、软盘、MP3、移动硬盘……还是少插为妙。有人要问了,什么都不能用,我还用98/ME干嘛呀?是啊,我也不知道您非要用98/ME干嘛!我推荐使用2K和XP,尤其是XP。对于目前来讲,XP的安全性还是最高的,微软出任何补丁也是先给XP出。虽然XP有正版验证的问题,但总有办法破解的,下面我会提到。对于新出的vista,我抱有一定的期望。这一次它的发布又跳票到2007年的1月,可见MS对于其安全性之重视程度。希望在未来的几年,我们会过上高枕无忧,藐视病毒的日子。要想了解关于各操作系统的安全性的详细介绍,Google一下!不过我们下面还是来说现实的事吧。

二、更新•更新•再更新
如果windows的自动更新它总是跳出来,恭喜你,你的机器中毒的机率已经很小了!让机器的自动更新功能打开,时刻与微软保持一致,你将几乎不可能遭受到来自互联网的病毒攻击。如果您是新装的操作系统,强烈建议在安装任何程序,访问任何网站之前访问http://www.windowsupdate.com/,并按照提示安装各类更新,可能在安装的过程中重起,重起后需要再次访问,直到它报告你的机器暂时没有任何可用的更新。这时你的操作系统就是安全的了。但MS动用的正版优势计划无疑对于我们这些用D版的人来说是严重的打击,然而道高一尺魔高一丈,对于2K来说,正版验证实同虚设,根本不予正视。而XP就比较讨厌了,前几天MS又强化了验证的有效性,使得靠修改data.dat文件来更新的人一下子手足无措。但令人惊奇的是,MS依然没有封掉JS的调用,我们依然可以通过调用JS函数的方法来绕过正版验证。方法是先进入更新站点,停在第一个页面应该是有“快速”和“自定义”两个按钮,此时将下面的语法输入地址栏:java script:void(window.g_sDisableWGACheck=’all’),然后按回车,你回惊奇的发现——什么也没有发生。但此时您应当仰天大笑了,直接点“自定义”看看,根本就没有验证那回事了!另外有些朋友问我,为什么总是不能更新,开始我也觉得很奇怪,因为一切都对路,但总是提示没有打开那两个讨厌的服务——AutoUpdate&BackTrans——实际上服务正运行着。后来我才发现服务光开着是不行的,还需要将启动类型设为自动。设定后一切问题都立即烟消云散了。下面我们将面临一个是鸡生蛋还是蛋生鸡的问题,我们所面临的情况是每天都有上百种新病毒或其变种问世,每一秒种无数的病毒都在伺机对任何可能的端口发动攻击,然而我们才装的机子就像刚出生的小孩,没有任何抵抗能力,想直接去MS更新谈何容易,在更新期间中毒是再正常不过的事!幸好对于XP和2K来讲都有强大的更新合集,简称SP。希望大家在电脑正常的时候未雨绸缪,从官方下载之,约有一二百兆,可能对于网速慢的朋友来说比较大,但当您需要重装系统的时候,这是您唯一的“还魂丹”!XP目前是SP2,2K是SP4,注意版本。除了SP,随时下载小更新也是很必要的,如果你不清楚近期你的机器自动安装了什么更新,可以到控制面版的“添加删除程序”里查一下(注意,XP要点上面那个“显示更新”)。要下载的话,先记下它们的编号,一般是KBXXXXXX或QXXXXXX,然后到http://www.microsoft.com去搜索这个号就可以得到下载的地址了。这也许对英文有点抱歉的朋友来说是比较麻烦的事,但国内也有一些网站提供了定期的更新合集下载,可以一试。Google一下!

三、上网=中毒?
网页里经常暗藏杀机,对于机器来说,网页恶意程序是计算机的第二大杀手。我将它比喻为人类的呼吸系统,因为现在计算机不能停止上网就像人类不能停止呼吸一样,而人类的每一次呼吸都意味着可能染上可怕的疾病,比如时髦的SARS和禽流感。但不知您注意到了没有,我并没有在这里提到病毒二字,因为我这里所说的只是普通的网站网页,不包括网页上链接的程序,程序的问题下面会讲到。一般来讲网页能做的还没有那么多,顶多是各种脚本写成的恶意程序,并不具有传染性,因此不能称之为病毒。但千万别小瞧它们,让你的IE病到生不如死还是比较轻松的,他可能会修改你的注册表,让你不能够访问IE的属性;也可能不时弹出/关上你的光驱,让你惊恐万分;也可能将你在网上的信息散之天下;当然,最可怕的事就是只要你一开机就弹出无数的广告窗口让你无法使用。看到这里的朋友相信有很多都在咬牙切齿,谁又不是从这一步走过来的呢?当我们有了Maxthon这样的软件,真的一切问题都搞定了,能禁止下载的全部禁止,能屏蔽的广告全部屏蔽,我不相信单纯的网页又有多大的本事能够冲破Maxthon这个好卫兵的门关!

四、软件是可怕的寄主
如果您按照我上面所讲的内容将最基本的“皮肤”和呼吸这两关打好了预防针,其它的就比较好办了,因为我们致少可以保证在下面进行的查杀毒过程中不会二次中毒。俗话说“病从口入”,计算机也是这样的,第三道免疫的重点关卡“口”就是我们常用的各类软件。机器装的软件越多越杂,中毒的可能性就越大,因为现在各类软件就是病毒的最好寄主,尤其是从网页上下载的各种小软件。对于这类病毒攻击其实我也没有太好的办法,实际上,我的机器也常染上一些病毒,但一般的在发作之前就被我干掉了,因为我清楚的知道我装的软件向我机器上写入的每一字节数据,而做到这一点则需要很多年的经验,对于大多数涉网未深的网友又该如何是好呢?我想最好的办法还是自己谨慎。有几个原则要说明的,邮件里来的附
件一律不要打开;你并没想下载什么而自动跳出来让你下载的一律不要下载;网页上弹出的诱人的信息问你是否查看的一律要点“否”;凡是弹出来ActiveX要安装如果你不是非常的清楚并有安装的经验一律不要安装(Microsoft除外,那是自动更新);没有被其它网友推荐过的软件一律不要下载。能做到上面这几个一律的话,我想你已经将机器的第三道免疫关把的很死了。还有一点是不得不提的,那就是现在流行的一个新词汇——流氓软件。它们并非病毒,也非恶意程序,堂尔皇之的挂上官方的旗号,名正言顺的进驻您的机器,但它们从不干好事。无法干净的卸载事小,上网经时经常受到骚扰就很讨厌了,它们唯一的目的就是令所谓的“官方”获益。3721、中文上网、百度工具条、网络猪之流正是如此,要获得完整的流氓软件列表,请Google“流氓软件”。对于我本人来讲,因为业务需要,所以经常要试用一些陌生的软件,这也给病毒攻击带来了机会,然而对于大多数网友来说,计算机只不过一是台“游戏机”或“家庭影院”,其它能用到的功能用的并不多,因此一份各类软件的推荐列表是很重要的。我会尽快出这样一份列表,包括我能想得到的各类用途的软件,选出公认最好的一两种,附上官方下载地址,以帮助朋友们为机器把好免疫关。目前您要是想了解对于各类软件哪些是公认最棒的,还是那句老话:Google一下!

五、光盘、软盘、MP3、移动硬盘……
这是病毒攻击你的最后机会了,因为这些都是硬性插入你的机器而使你的机器得病的,所以我实在不想用人的免疫系统来比喻了,原谅我吧,那太可怕了。如果你的机器有最新的补丁,我想还是可以放心的打开它们的,只要不随意运行来历不明的程序。不过将所有的自动拨放都关掉还是很必要的!对于2K,自动拨放在设备管理器中,查看光驱的属性就可以取消。对于XP,在盘符上点右键,进入属性就可以设置,具体操作我不想多说了,那不是本文的重点,请自行Google。另外,如果你真的对机器的安全性要求很高,那么在你打开这些盘之前,最好还是先用命令提示符进入,看看根目录下有没有可疑的文件。这一步仅限有经验的朋友。

六、系统设置,无懈可击的境界
虽然免疫系统已经万无一失,但人的操作总会出现一些问题,导致病毒有可乘之机。那么从病毒攻击的手段上来讲,我们可以采取一些补救性的措施。将服务列表中没用的服务全部禁用是非常好的做法,尤其是像Task、Message这类服务是一定要禁用的,因为它们常被病毒所利用!偶尔会用到的服务尽量采用手动启动,这样会为将来的查毒提供方便。有关各服务的详细说明,网上到处都是,Google一下就可以得到。请朋友们根据自己的需要设定吧!我的服务列表里自动运行的服务只有二十来个,这已经足够了。另外可能被病毒攻击的地方就是各种即时通讯软件。QQ这样有一定流氓性质的软件,用起来一定要小心,任何人发来的信息中包括的链接不要随便点,实在要看的话,复制到Maxthon里,在所有屏蔽功能打开的状态下前往,这样您将会得到最有效的安全保障。其它可能会自动上网更新的软件,尽量设置为不自动更新,有时他们的行为会令你摸不着头脑,甚至会被误判为病毒,为查毒操作带来相当大的干扰。定期去官网更新是最安全的方式。

到此为止,预防的工作您已经作的很好了,任何的杀毒软件、防火墙(包括XP自带的)你都可以藐视之,并笑傲江湖。但天有不测风雨,再好的免疫系统也有失效的时候,如果您真的由于操作不慎而导致不幸中招,那就请看下面的查杀篇。记得,查杀只能是一种补救措施,而且任何查杀的措施都只能在预防措施完善的情况下进行,因此防患于未燃才是最重要的。


查毒篇
一、工具
虽然不用杀毒软件,但并不意味着不使用任何工具。要想有效的处理病毒,有两类软件是必不可少的,一是进程管理,二是安装监控。进程管理软件目前最好用的是ProcessExplorer,Google一搜就有,它是完全免费的,请前往官方网站下载最新版。安装监控软件我并不想给大家推荐完美卸载之流的软件,因为他们本身都有一定的缺陷,但这类软件对于新手来讲还是必要的,至少可以让你看到一个安装程序运行的每一个细节,以积累一些查毒经验。我推荐使用的是RegMon软件,它也是完全免费的,并且功能强大,可以随时监控任何程序对注册表进行的任何读、写、创建等操作,这是我们将病毒清理干净的一把利刃,请前往官方网站下载最新版。以上就是我仅仅推荐的两款软件,都是很小的绿色软件,大家放心使用吧!

二、半自动实时监控
我们对于病毒最大的问题是如何知道病毒程序正在运行,这也是电脑新手面临的最大难题,他们往往借助于各类杀毒软件。但这不仅于事无补,并且会导致你的机器性能大幅下降。我做过测试,在同样的机器,上同样时长的网,开杀毒软件导致的用电量都将比不开杀毒软件高出30%左右,这太可怕了。众所周知,我国目前的电能资源极度紧缺……。好,朋友们会问了,不用杀毒软件你怎么知道机器被病毒感染了?我想告诉你的是每一台计算机都有两套天生的病毒警报装置,一套就是机箱上的HDD端口(硬盘)指示灯。学会观查指示灯状态,听辨硬盘的读盘声是非常重要的,也并不很难。首先我们要明确的知道我们现在正在机器上做什么,用到的程序是否会大量的读写硬盘。显然,没有任何一种应用软件在使用的时候会从头到尾不停的读写硬盘(磁盘碎片整理程序等除外),事实上运行大多数程序时,绝大多数时间硬盘也应该只是处于偶尔闪烁一下的状态,包括听歌、看电影、写文档、上网下载甚至是打游戏!但如果硬盘灯在不停的闪,并不断的发出“巨大”的响声,而你并没有进行很复杂的操作,那你的机器就很可能有危险了。排除检测法是很必要的,当你发现机器的硬盘不正常的运作,请将所运行的程序一个个的关掉,直到硬盘工作状态缓和下来。这样就很可能发现原来是某一个程序整在干“坏事”,不过当你把所有的程序都关掉时硬盘仍然在不停的运作就是令人感到非常不安的信号,这时您就应该高度的警惕了!另外一套自动警报装置来自于系统的响应效率。如果你发现你并没有运行什么操作繁杂的程序,但机器却变的很慢,甚至连打开“我的电脑”都要花一些时间的话,我将不幸的告诉您,您的机器八成是中毒了。效率低也可能分几种情况,比如时不时的顿一下,或着每次开机需要很长时间等,这都应该引起我们的注意。当然很多病毒在潜伏期是很安静的,对于这种病毒我们又如何才能发现呢?这确实是一个问题,但很有经验的朋友并不会为此感到担心,因为只要是病毒总会做出一些细小的动作,如果您对你的机算机上任何一个程序的运行过程都了如直掌的话,那病毒隐蔽的再好也不可能逃过你的眼睛。当然这需要长期积累的经验,没有经验的朋友请看下面的内容吧,一台高效病毒监控仪将会成为病毒最残忍的克星!

三、每一个进程都是我们的朋友
孙子曰“知己知彼,百战不殆”,我们必须

通俗易懂的—路由和交换

0

分类 : 技术文摘 | 发表时间 13-06-2006

路由和交换是网络世界中两个重要的概念。传统的交换发生在网络的第二层,即数据链路层,而路由则发生在第三层,网络层。在新的网络中,路由的智能和交换的性能被有机的结合起来,三层交换机和多层交换机在园区网络中大量使用。本文将介绍一些路由和交换的基本概念,分为网络层次结构、交换、路由和全交换园区网络四个部分。
网络层次结构
网络参考模型的定义给出了清晰的功能层次划分。最常被提及的是ISO OSI参考模型和TCP/IP协议簇。
国际标准化组织定义的OSI参考模型将计算机网络按功能划分为七个层次,这就是我们常说的七层模型或七层结构。网络功能分层的直接好处是这些层次可以各司其职,由不同厂家开发的不同层次的软硬件设备可以配合使用。一个层次的设备更新或软件重写也不会影响到其它层次。TCP/IP协议体系中的各个层次和ISO的参考模型有大致的对应关系。
OSI中间一层,即第四层执行传输功能,它负责提供从一台计算机到另外一台计算机之间的可靠数据传输。传输层(Transport Layer)是承上启下的一层,在它的下面有三层,都是与数据传输相关的功能;上面也有三层,提供与网络应用相关的功能。
OSI下三层中。物理层(Physical Layer)负责实际的传送数据信号,数据链路层(Data Link Layer)负责网络内部的帧传输,而网络层(Network Layer)负责网络间的计算机寻址和数据传输。
OSI上三层中。应用层(Application Layer)是最高的层次,它负责提供用户*作的界面,因特网中常用的电子邮件服务,文件传输服务等都是这一层提供的。表示层(Presentation Layer)负责数据的表示,比如发送数据之前的加密,接收数据时的解密,中英文的翻译等等都是这一层提供的功能。会话层(Session Layer)负责建立和终止网络的数据传输,计算机名字转换成地址的工作也在这层完成。
传统意义上的交换是第二层的概念。数据链路层的功能是在网络内部传输帧。所谓”网络内部”是指这一层的传输不涉及网间的设备和网间寻址。通俗的理解,一个以太网内的传输,一条广域网专线上的传输都由数据链路层负责。所谓”帧”是指所传输的数据的结构,通常帧有帧头和帧尾,头中有源目二层地址,而帧尾中通常包含校验信息,头尾之间的内容即是用户的数据。
数据链路层涵盖的功能很多,所以又将它划分为两个子层, MAC(Media Access Control,介质访问控制)层和LLC(Logical Link Control,逻辑链路控制)层。常见的局域网和城域网的二层标准是IEEE的802协议。而在广域网中,HDLC(High-level Data Link Control,高级链路控制)、PPP(Point-to-Point Protocol,点对点协议)和Frame Relay(帧中继)等协议都有广泛的使用。
路由是第三层的概念。网络层在Internet中是最重要的,它的功能是端到端的传输,这里端到端的含义是无论两台计算机相距多远,中间相隔多少个网络,这一层保障它们可以互相通信。例如我们常用的PING命令就是一个网络层的命令,PING通了,就是指网络层的功能正常了。通常,网络层不保障通讯的可靠性,也就是说,虽然正常情况下数据可以到达目的地,但即便出现异常,网络层也不作任何更正和恢复的工作。
网络层常用的协议有IP、IPX、APPLETALK等等,其中IP协议更是Internet的基石。在TCP/IP协议体系中,第三层的其他辅助协议还包括ARP(地址解析) 、RARP(反向地址解析)、 ICMP(网际报文控制)和IGMP(组管理协议)等等。由于网络互连设备都具有路径选择功能,所以我们经常将 RIP、OSPF等路选协议也放在这一层讨论。
交换
谈到交换的问题,从广义上讲,任何数据的转发都可以称作交换。当然,现在我们指的是狭义上的交换,仅包括数据链路层的转发。做网络的人理解交换大多是从交换机开始的,电路交换机在通信网中已经使用了几十年了,做帧交换的设备,尤其是以太网交换机的大规模使用则是近几年的事情。
理解以太网交换机的作用还要从网桥的原理讲起。传统以太网是共享型的,如果网段上有四台计算机A、B 、C和D,那么A与B通信的同时,C和D只能是被动的收听。假如将缆段分开(即微化),A、B在一段上,C、D在另一段上,那么A和B通信的同时,C和D也可以通信,这样原有10M的带宽从理论上讲就变成20M了。同时,为了确保这两个网段可以互相通信,需要用桥将它们连接起来,桥是有两块网卡的计算机。
在整个网络刚刚启动时,桥对网络的拓朴一无所知。这时,假设A发送数据给B,因为网络是广播式的,所以桥也收到了,但桥不知到B在自己的左边还是右边,它就进行缺省的转发,即在另外一块网卡上发送这个信息。虽然做了一次无用的转发,但通过这个过程,桥学习到数据的发送者A在自己的左边。当网络上的每一台计算机都发送过数据之后,桥就是智能的了,它了解每一台计算机在哪一个网段上。当A再发送数据给B时,桥就不进行数据转发了,与此同时,C可以发送数据给D。
从上面的例子可以看出,桥可以减少网络冲突发生的几率,这就是我们使用桥的主要目的,称作减小冲突域。但桥并不能阻止广播,广播信息的隔绝要靠三层的连接设备,路由器。
按照缆段微化的思想,缆段越多,可用带宽就越高。极限情况是每一台计算机处在一个独立的缆段上,如果网络上有十台计算机,就需要一个十端口的桥将它们连接起来。但实现这样一个桥不太现实,软件转发的速度也跟不上,于是有了交换机,交换机就是将上述多端口的桥硬件或固件化,以达到更低的成本和更高的性能。
交换机的一个重要的功能是避免交换循环,这就涉及到了STP(Spanning Tree Protocol,分支树协议)。分支树协议的功能是避免数据帧在交换机构成的网络中循环传送。如下图所示,如果网络中有冗余链路的话,STP协议现选出根交换机(Route Bridge),然后确定每一台非根交换机到根交换机之间的路径,最后,将此路径上的所有链路置成转发(Forward)状态,其余的交换机之间的连接就是冗余链路,置为阻塞(Block)状态。
交换机的另外一个重要功能是VLAN(Virtual LAN,虚拟局域网)。VLAN的好处主要有三个:
*端口的分隔。即便在同一个交换机上,处于不同VLAN的端口也是不能通信的。这样一个物理的交换机可以当作多个逻辑的交换机使用。
*网络的安全。不同VLAN不能直接通信,杜绝了广播信息的不安全性。
*灵活的管理。更改用户所属的网络不必换端口和联线,只该软件配置就可以了。
VLAN可以按端口或MAC地址来划分。
有时,我们需要在交换机所构成的网络上保持VLAN的配置的一致性。这就需要交换机之间按照VTP(VLAN Trunk Protocol,VLAN骨干协议)交流VLAN信息。VTP协议只在骨干端口(Trunk Port),即交换机之间的端口,上运行。
路由
路由器是网络间的连接设备,它重要工作之一是路径选择。这个功能是路由器智能的核心,它是由管理员的配置和一系列的路由算法实现的。
路由算法有动静之分,静态路由是一种特殊的路由,它是由管理员手工设定的。手工配置所有的路由虽然可以使网络正常运转,但是也会带来一些局限性

windows下搭建cvs服务器

0

分类 : 技术文摘 | 发表时间 13-06-2006

通常搭建CVS服务器都是在Linux/Unix平台上,但是在Windows平台上,凭借数目庞大的Open Source软件,我们也同样可以搭建一个适用于项目组的CVS服务器,并且还可以为其添加源代码跟踪功能。

一、需要的软件
1、CVSNT
CVSNT是目前在Windows平台上构建CVS服务器最方便的工具,操作简单,以Windows服务程序的形式运行。目前CVSNT已被移植到其它平台如Linux上。
选用版本:2.0.58d。
选用这个版本而不是最新的2.5.x的原因是2.5.x改变了History文件的格式,影响了我们后面介绍的CVSTracNT的运行。当然,如果你不使用CVSTracNT,选用2.5.x也没有问题,其操作与2.0.58d基本相同,也十分的简单。
下载地址:http://www.cvsnt.org

2、CVSTracNT
CVSTracNT是一个基于Web的CVS源代码跟踪工具。使用CVSTracNT,你可以跟踪源代码的变更,提交任务单,创建里程碑,并通过Web的方式查看、比较源代码文件。对于CVS系统本身来说,是一个非常有益的补充。
选用版本:1.1.5 Build20050703多国语言版。
这个版本由cnpack项目组的成员进行了汉化,并添加了许多实用的工具。具体的内容可以参考其中文网站。
下载地址:http://www.cnvcl.org

3、ViewCVS
ViewCVS是一个用Python语言编写的CVS Web界面。有了它,你可以通过浏览器查阅源代码,进行版本比较。相对于CVSTracNT自带的Web界面来说,ViewCVS更加有亲和力,功能也比较完善。大名鼎鼎的SourceForge的Web界面就是使用ViewCVS搭建的。
还有另外一个CVS的Web界面CVSWeb,用Perl语言开发。
选用版本:1.0 dev r6。
最新的版本,没什么好说的。
下载地址:http://russ.hn.org/viewcvs/

4、Python
让ViewCVS运行起来,必不可少的就是Python。
选用版本:2.4.1。其它2.4.x版本应该也可以,但注意和ViewCVS的版本要搭配。
下载地址:http://www.python.org

5、PyWin32
Python语言的Win32扩展。
选用版本:2.04 for Py 2.4。
下载地址:http://pywin32.sourceforge.net

6、Apache HTTP Server
ViewCVS可以在IIS和Apache服务器上运行,考虑再三,最后选择的Apache。虽然配置起来有些麻烦(其实也不麻烦),但考虑到Apache是开源项目,不会有法律问题,呵呵。
选用版本:2.0.54。
下载地址:http://apache.justdn.org/

7、MySQL
ViewCVS提供了查询功能,使用的是MySQL数据库。
选用版本:3.23.42-nt。
不要使用4.x版本的MySQL,与ViewCVS兼容不太好。

二、安装
1、安装CVSNT
直接运行CVSNT安装包。安装结束后,打开Service Control Panel,配置你的CVS仓库。点击Repositories选项页,添加你的仓库地址就可以了,不需要重新启动CVS服务器。

2、安装CVSTracNT
直接运行CVSTracNT安装包。感谢CNPack的程序员,如果按照CVSTracNT网页上的安装介绍,一定会郁闷死。安装结束后运行CVSTrac配置程序,程序启动后会自动搜索CVS仓库,将其添加到CVSTrac数据库。选中数据库,点击浏览按钮,你的浏览器应该打开并显示CVSTrac的页面了。
CVSTracNT的使用及配置参考http://www.cnpack.org上的介绍。

3、安装Python及PyWin32
运行安装包即可。

4、安装Apache HTTP Server
运行安装包即可。如果在安装过程中没有选择让Apache自动运行,那么可以通过开始菜单运行Apache。

5、安装MySQL
运行安装包即可。

6、安装ViewCVS
最麻烦的地方到了。
首先,将ViewCVS解压缩到一个目录中,然后在该目录的命令行中,运行python viewcvs-install。安装结束后,编辑viewcvs.conf文件,修改cvs_roots项为你的CVS仓库路径,修改default_root项为默认的CVS仓库,还可以修改邮件地址项。
然后拷贝web\cvs\viewcvs.cgi到你的Apache cgi-bin目录中。
运行Apache,在浏览器中输入http://localhost/cgi-bin/viewcvs.cgi,看看你的ViewCVS是不是运行顺利?
现在我们要为ViewCVS添加查询功能了。
运行MySQL的管理程序mysql,进入MySQL命令行模式,添加一个用户viewcvs,并赋予其读写的权力。退出。在命令行下运行python cvsbdadmin CREATE,根据提示输入数据库名,用户名和密码,数据库自动创建。
编辑viewcvs.conf文件,修改cvsdb块下的enabled选项值为1,去除后面各项前的注释符,修改各项的值为前面设置的值。
拷贝web\cgi\query.cgi到Apache cgi-bin目录下。
在浏览器中运行http://localhost/cgi-bin/query.cgi,看看结果……
失败了,系统提示Python错误。根据错误信息查到,错误处在dbi.py文件中。在dbi.py中有这样一行:datetime.tuple()。查阅Python文档,发现datetime对象没有tuple方法,只有timetuple方法,更改之后,运行正常。

三、总结
以上的搭配方案适用于中小项目组,因为CVSNT本身在应对大项目时有一些效率问题。如果你想用CVS管理上万个源文件,那么用Linux平台搭建CVS服务器是更合适的选择。
无论如何,CVSTracNT都是你不该错过的好东西,当项目逐渐膨胀起来后,让CVSTracNT来管理一些机械的事情是一个好选择。
ViewCVS并不是必要的,但是比之CVSTracNT自带的Web界面,ViewCVS要更舒服一些,某些功能也更清晰(比如版本比较)。让你的上级通过ViewCVS来浏览你的工作情况也许是个好选择,你不需要在Trac中为他保留一个会扰乱正常工作程序的位置。
总得来说ViewCVS的查询功能并不是太方便,使用起来比较繁琐,结论是不用也罢。安装MySQL等等的繁琐工作也就不需要了。
我最遗憾的是,因为时间的关系,并没有建立SSL连接方式。从安全的角度来说,SSL也许是必不可少的,除非你的访问者都值得信任。
最后还要说的是,CVS虽然比较流行,但并不是源代码管理的唯一选择。在你作出决定之前,不妨先看看这篇文章:http://better-scm.berlios.de/comparison/comparison.html。

NTFS的十个精彩问答

0

分类 : 技术文摘 | 发表时间 12-06-2006

1、什么是NTFS-新(N)技术(T)文件(F)系统(S)?

  想要了解NTFS,我们首先应该认识一下FAT。FAT(File Allocation Table)是“文件分配表”的意思。对我们来说,它的意义在于对硬盘分区的管理。FAT16、FAT32、NTFS是目前最常见的三种文件系统。

  FAT16:我们以前用的DOS、Windows 95都使用FAT16文件系统,现在常用的Windows 98/2000/XP等系统均支持FAT16文件系统。它最大可以管理大到2GB的分区,但每个分区最多只能有65525个簇(簇是磁盘空间的配置单位)。随着硬盘或分区容量的增大,每个簇所占的空间将越来越大,从而导致硬盘空间的浪费。

  FAT32:随着大容量硬盘的出现,从Windows 98开始,FAT32开始流行。它是FAT16的增强版本,可以支持大到2TB(2048G的分区。FAT32使用的簇比FAT16小,从而有效地节约了硬盘空间。

  NTFS:微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。随着以NT为内核的Windows 2000/XP的普及,很多个人用户开始用到了NTFS。NTFS也是以簇为单位来存储数据文件,但NTFS中簇的大小并不依赖于磁盘或分区的大小。簇尺寸的缩小不但降低了磁盘空间的浪费,还减少了产生磁盘碎片的可能。NTFS支持文件加密管理功能,可为用户提供更高层次的安全保证。

  2、什么系统可以支持NTFS文件系统?

只有Windows NT/2000/XP才能识别NTFS系统,Windows 9x/Me以及DOS等操作系统都不能支持、识别NTFS格式的磁盘。由于DOS系统不支持NTFS系统,所以最好不要将C:盘制作为NTFS系统,这样在系统崩溃后便于在DOS系统下修复。

  NTFS与操作系统支持情况如下:

  FAT16 windows 95/98/me/nt/2000/xp unix,linux,dos

  FAT32 windows 95/98/me/2000/xp

  NTFS  windows nt/2000/xp

  3、我们需要NTFS吗?

  Windows 2000/XP在文件系统上是向下兼容的,它可以很好地支持FAT16/FAT32和NTFS,其中NTFS是Windows NT/2000/XP专用格式,它能更充分有效地利用磁盘空间、支持文件级压缩、具备更好的文件安全性。如果你只安装Windows 2000/XP,建议选择NTFS文件系统。如果多重引导系统,则系统盘(C盘)必须为FAT16或FAT32,否则不支持多重引导。当然,其他分区的文件系统可以为NTFS。

  4、如何将FAT分区转换为NTFS?

  Windows 2000/XP提供了分区格式转换工具“Convert.exe”。Convert.exe是Windows 2000附带的一个DOS命令行程序,通过这个工具可以直接在不破坏FAT文件系统的前提下,将FAT转换为NTFS。它的用法很简单,先在Windows 2000环境下切换到DOS命令行窗口,在提示符下键入:D:\>convert 需要转换的盘符 /FS:NTFS。如系统E盘原来为FAT16/32,现在 需要转换为NTFS,可使用如下格式:D:\>convert e: /FS:NTFS。所有的转换将在系统重新启动后完成。本人推荐使用此法进行转换!

  此外,你还可以使用专门的转换工具,如著名的硬盘无损分区工具Powerquest Partition Magic 7.0,软件下载页面http://soft.km169.net/soft/html/1964.htm,使用它完成磁盘文件格式的转换也是非常容易的。首先在界面中的磁盘分区列表中选择需要转换的分区。从界面按钮条中选择“Convert Partition”按钮,或者是从界面菜单条“Operations”项下拉菜单中选择“Convert”命令。激活该项功能界面。在界面中选择转换输出为“NTFS”,之后单击“OK”按钮返回程序主界面。单击界面右下角的“Apply”添加设置。此后系统会重新引导启动,并完成分区格式的转换操作。


 5、如何在NTFS格式分区下找回意外删除丢失的文件?

  你可以使用专门的软件,如Final Data for NTFS,或者是Get Data Back for NTFS 1.04。这两个软件的文件恢复效果都不错。本人推荐使用数据恢复功能强大、速度快的Get Data Back for FAT 1.05/NTFS 1.04(是2个软件),下载地址http://download-tipp.de/cgi-bin/ … phrase&bool=and。如果在文件删除后没有任何文件操作,恢复率接近100%。所以不要等到文件删除后才安装这个软件,最好是与Windows系统一起安装,并在出现文件误删除后立刻执行恢复操作,一般可以将删除的文件恢复回来。

  6、如果Windows 2000/XP安装在C盘(NTFS格式),当Windows崩溃时在DOS状态下不能进入C盘,怎么办?

  你可以使用Windows 2000/XP的安装光盘启动来修复Windows,或者是制作Windows 2000/XP的安装启动应急盘。注意:Windows 2000的安装盘制作程序在程序的安装光盘中,而Windows XP的应急盘制作是独立提供的,需要从微软的网站下载。

  7、Final Data for NTFS或Get Data Back for NTFS可以修复被意外格式化的硬盘吗?

  这两个软件都可以恢复格式化删除的数据(低级格式化除外)。常规格式化删除的只是数据信息,低级格式化则删除全部数据区,当硬盘技术还不像现在这样发达的时候,磁盘表面很容易磨损。硬盘使用者对经常出现的读错误,往往采用低级格式化。修复被格式化的硬盘,只能将这个硬盘拆下来,安装到其他的计算机中,之后执行文件修复操作。Final Data甚至可以修复由CIH病毒破坏的硬盘。

  8、Windows 98(FAT系统)下如何直接读写NTFS文件系统?

  当电脑安装有Windows 98和Windows 2000/XP两个操作系统,如何在FAT系统下直接读写NTFS文件系统?虽然FAT系统可以转换为NTFS系统,但是有时我们需要在机器中同时安装Windows 98和Windows 2000/XP。此时的麻烦就来了,由于Windows 98不能读取Windows 2000的NTFS,那么如何进行数据交换呢?实际上我们只需要使用一个小小的软件NTFS for Windows 98就可以让Windows 98轻松读取、甚至写入NTFS分区。首先,到该工具的下载网址http://down.hothost.com/list.asp?id=514下载NTFS for Windows 98 1.07版(能读、写!)。

  解压缩后,请把CR整个目录(里边有7个读取NTFS文件系统必须使用到Windows 2000/XP的系统文件,其它3个是注释文件)COPY到C盘(也可改名为NTFS_FILES,我是这样改的),安装结束后会出现一个配置界面,在该界面中的“NTFS System Files”项中需要设置的是程序可以借用的Windows 2000/XP系统的相关文件保存路径,你就选择刚才COPY到盘的CR目录即可,然后其它什么都不必去操作,到此设置完成,单击OK按钮保存设置并退出。重启后就可以在Windows 98下访问NTFS分区了!经过实际使用,证明安装此软件后,在NTFS分区上能读、写!
以上内容本人在WIN98SE+WINXP_PROCN+WINXP_PROEN及WINME+WINXP_PROCN+WINXP_PROEN上验证通过!(2台机)

  下面的内容仅供参考,建议你不要实施,至少我是这样做的。

  “Drive Letter Assignments”项中提供的设置是设置允许可以识别的NTFS分区盘符,设置的依据可以参考在Windows 2000/XP下的盘符顺序。如果单击界面中的“Advanced”按钮,在关联界面中提供了针对设置的NTFS分区高级设置,其中包括设置为只读属性“Read-Only”、允许写入“Write-Through”。对于检查点间隔“Checkpoint Interval”和写回间隔“Writeback nterval”,使用程序提供的默认设置即可。

  9、如何在DOS系统下直接读写NTFS文件系统?

  Winternals Software LP 公司提供了工具软件解决了这个问题。用一张MS-DOS启动盘就可以作到以前不可能作到的事,修改,删除,更新 NTF
S上的文件,实际 NTFSDOS pro 是在 Windows NT 出问题时的一个修复工具。下载页面http://soft.winzheng.com/searchengine.asp,键入“NTFS”查找该站软件,就可以找出NTFSDOS PRO 4.0,最好选择服务器2下载。具体安装过程并不复杂,按照提示做好启动盘即可。

  10、在NTFS系统下,如何保护自己的文件、文件夹?

由于NTFS文件分区格式具有良好的安全性,如果你不希望自己在硬盘中的文件被其他人调用或查看,使用权限控制方式加密是非常有效的方法。设置方法非常简单:以系统管理员身份登录,使用鼠标右键单击需要加密的文件夹,选择“Properties”,切换到“Security”选项卡。在“Group of user names”项中设置允许访问的用户只有Administrator和自己。删除其他的所有用户。保存设置退出即可。此后,其他用户将不能访问该文件夹。使用这项功能需要注意的是:一定要保证只有你一个人知道Administrator密码,并且设置其他用户不能属于Administrator。此外,你还可以详细的给每个用户设置权限,包括设置读取权限、写入权限、删除权限等,这样使用起来就更加灵活。你还可以设置权限,控制一个磁盘,或者磁盘分区只为自己使用,这样其他人就不能看到你的任何东西了。

无觅相关文章插件,快速提升流量