Category Archives: Software

How to:如何在Windows Server操作系统下使用罗技Setpoint

不得不说做鼠标罗技还是最好的。然而鼠标驱动就不行了,小气的罗技Setpoint在安装的时候会检测操作系统类型,如果是Server类的系统,直接不允许装。当年用Mouseware的时候还可以用XP兼容模式骗过去从而顺利安装,然而Mouseware早就不更新了,无64位版,也无法在最新的操作系统上安装,例如Vista或Win 2k8。而对于Setpoint,从4.0开始干脆连系统不兼容的提示也不给,会让你安心的顺利装完,然后就会发现除了一个控制中心外什么都没有-_-b
原因是setpoint在安装的时候仍然会检测系统,发现是Desktop版本的系统才会把设备驱动包释放出来并安装,如果非Desktop系统,则跳过设备驱动安装步骤,只装setpoint控制面板本身,所以才会有此弱智现象。所以像我这种整天玩Windows  Server系统的人,就需要想办法把里面的设备驱动包Rip出来单独安装。经过分析后大致推断驱动程序应该就是从setpoint.exe里解包出来的那个CDDRV_Installer.exe,然而把这玩意单独拿出来安装也会提示错误而拒绝继续安装,推断应该也是要检测什么东西才行。可惜这个exe不知道是什么方式打包的,没办法继续解开看。
自己diy没搞定,却在logitech的论坛上找到了解决方法:有高人直接自己做了一个 CDDRV_Installer.exe,安装好setpoint之后,将这个文件放到C:\Program Files\Logitech\SetPoint\Drivers,运行一下,就会安装鼠标的设备驱动,装好后鼠标自动断开并用新驱动重新启用,会在设备管理器里看到设备描述变了,此时再打开setpoint就会看到关于鼠标设置的面板都出现了。
这个diy的文件由于有一段时间了,找不到原先发布的页面了,所以在自己blog下放一个吧,有需要的可以点这里下载setpoint4_00_121fix1.rar。
经测试32位和64位系统都可以用,Windows 2003/2008都可以用,setpoint版本只要是4.0之后的应该也都能用,我个人测试到目前最新的4.4。
最后自我YY一下,G5用起来还是很爽的。

瑞星ARP防火墙导致网络问题,兼谈软件是否应具有道德准则

这两天出了个很有意思的新闻,是关于瑞星的。
此事源自吉林大学网络中心发布了一则通知《关于谨慎使用瑞星2008防火墙软件的紧急通知》,指明瑞星防火墙的其中ARP防护功能会导致网络充斥大量的ARP广播,从而干扰网络正常运行,并可能导致上层网关设备负载加重从而影响正常工作。
因为此声明直指瑞星产品设计有缺陷,瑞星官方的人当然坐不住了,很快官方就发表了声明“瑞星关于《吉林大学公告慎用瑞星2008防火墙》的声明”,首先否认了其有设计缺陷,其次鼓吹其ARP防护的“强大”功效,以及拿仅有吉林大学一家使用出现问题作为案例说事,最后将问题归结于吉林大学网络本身不健壮。具体解说可谓精彩,摘录如下:
   我们认为,瑞星个人防火墙2008的ARP功能不存在设计缺陷,具体解释如下:
    第一、ARP欺骗攻击是目前较为流行的一种欺骗手段,黑客可以利用ARP攻击进行病毒传播、信息监听、内容篡改、盗取网游、网银帐号等恶意攻击。为了解决这一问题,瑞星个人防火墙2008版新增加了ARP欺骗攻击防护功能。该功能可以有效地阻止因ARP攻击造成的上述各种问题,特别对网游、炒股软件等帐号的保护非常有效,因此受到广大用户的热烈追捧,并被部分用户认为是瑞星2008新品中最喜爱的功能之一。
    第二、目前,全球安全业界公认的最有效的ARP防护技术,是通过向网内发送ARP广播获取真实的IP-MAC对应关系来实现的,瑞星所采用的就是这种技术。在一个管理完善的网络中,不会存在如此频繁的ARP攻击,只有在局域网中存在大量的ARP攻击源,或者用户对ARP防火墙设置不当,才会导致此种情况发生。目前,有且仅有吉林大学称使用瑞星个人防火墙2008会造成严重问题
    第三、瑞星个人防火墙2008版缺省设置不会开启ARP防护功能,数千万用户都可以作证。事实上,即使用户开启了ARP防护功能,默认情况下也只保护用户指定的IP,除非用户自行添加其它地址。因此吉林大学公告中所说的“采用其缺省设置就会导致网络线不畅”的情况完全不属实。

(图一 该功能默认是不开启的) 

(图二,若开启此功能,默认状态只会保护特定IP地址,除非用户自行添加其它地址)
    第四、随着黑客和病毒技术的不断发展,安全产品势必不断精进技术,增加更底层更强大更复杂的功能才能保护用户,如何处理好技术的复杂性和操作的简易性之间的矛盾,是全球所有安全厂商所面临的共同课题。正因为如此,瑞星2008新品才进行了史无前例的大规模公开测试和长达半年多时间的后期产品完善工作。目前数千万用户的使用证明,瑞星2008新品在大量应用创新的底层核心技术的同时,其适用性和易用性也是最好的。
    第五、为了避免此类事件再次发生,瑞星公司建议:
    1、瑞星杀毒软件2008版及瑞星个人防火墙2008主要针对个人用户设计,对于校园网、企业网络等局域网环境,应该采用瑞星杀毒软件网络版等企业级安全产品进行防护,至少局域网本身应该拥有完善、可靠的安全管理机制,对接入局域网的用户行为进行有效的安全控制。
    2、瑞星杀毒软件2008版及瑞星个人防火墙2008新增了主动防御、ARP欺骗防护等功能。对于电脑初级用户,建议采用产品缺省设置即可。对于新产品中提供的高级设置等功能,如果用户不了解相关知识,建议不要随便修改设置。
然而事情还没算完,昨天,好事的CNBeta又放出了一则新闻《[证据]中科大、中山大学、四川大学关于瑞星ARP产品问题的说明》,证明有更多的苦主由于瑞星的这个东西导致了网络不正常。这下看瑞星怎么应对了。
对于我个人来说,新闻本身并没有什么值得关注的,我更关心导致问题的技术层面的原因以及为什么要这样做。这里先简单分析一下所谓的ARP和ARP病毒,以及瑞星的反毒措施,如果对此已经有了结的兄弟们可以跳过。
ARP,全称地址解析协议,作用于ISO七层协议的数据链路层。具体作用是将网络层的IP地址翻译为链路层的MAC地址,来使得IP数据报在链路层可以找到相对应的链路桢,从而传输到正确的目的地。假定要传输数据的双方分别为pcA和pcB,pcA要发送数据到pcB,其ip地址和mac地址分别为ipA,macA和ipB,macB,ARP工作的流程简述如下:
1,pcA发出一个arp request,这个request包含有源mac地址,为macA,还有目的地址,为FF:FF:FF:FF:FF,也就是全局域网内广播,request内容翻译成白话就是who has ipB please tell ipA。
2,局域网内所有机器都会接受此广播,同时检查request内容,发现是找ipB,则对照自己机器的ip,如果没有ipB,忽略此包,如果有,进入下一步。
3,其他机器都已经停止,唯有pcB,发现此广播的request是找自己,所以pcB发出一个回应,具体为一个arp echo,源地址为自身macB,目的地址为macA(从前面request包里拿到的),内容为ipB is at macB。
4,pcA收到这个echo,在自己协议栈内建立一个arp缓存表,表项加入ipB-macB,并往macB发送数据,这样数据就能准确到达pcB。并且在ipB-macB这个表项存在的时期,都无需再进行arp request,直接根据缓存表发送数据即可。缓存表项都有一个时间限制,到达限制后系统自动删除此项,删除后如果pcA和pcB再有通讯,就会重复步骤1。
从这几步骤来看,ARP是能够通过一个广播的request和一个单播的echo准确完成地址解析的过程的。然而这里存在一个小问题:如果pcA还没有发出request,而pcB直接发送了echo呢?按照设计应当不存在此类情况,但计算机只会按照程序办事,有不按设计来的程序,就有不按设计来的行为。在这种情况下,直接进入第4步,pcA会根据收到的echo更新自己的缓存表,因为ipB-macB这个表项原来就可能存在,此次更新其实并没有造成什么影响,因此这种情况不会出现什么异常。
然而不按设计的行为不只如此,假如有人捣乱呢?比如,有另外一台pcC直接发送了一个arp echo给pcA,内容是ipB is at macC。这时,pcA收到了echo,所以将表项无条件换成ipB-macC,这样,发往ipB的数据都将会转向macC,也就是到了pcC那里去。这时问题就严重了。本来A是要和B通讯,却把给B的数据发到了C那里,如果此数据很重要,而C看到了,那么…….那么C就有无限可能的坏事可以做了。例如现在已经有很多坏蛋在扮演C这个角色:

记录这个数据,完事后装作没事一样把数据转回B,这样A-B通讯变成了A-C-B,A和B感觉不到异常,而发送的数据可能包含密码等敏感信息,此时C就可以获得这些信息了—-此为ARP中间人式嗅探,很多黑客工具盗密码就是这么干的。

记录这个数据,同时加一点篡改,篡改部分内容为病毒代码,再转回B,此时B接到这个数据后就会因这段代码而中毒—-此为ARP病毒,所以为什么一台机器出问题导致整个网络都染毒,就是因为这个C欺骗了所有的B们,将所有数据都篡改过了。

记录并保留这个数据,但延迟发送到B,这样A-B之间的通讯感觉变慢了,或者干脆不发给B,这样A-B的通讯直接就断了 —-想起是什么了吗?对了,局域网执法官,p2p终结者之类的限速或者所谓的“管理”工具!

所以我们看到,ARP当初设计时,互联网还是一个很友好的世界,任何人都会按规矩办事,然而现在的世界大多是恶意的,总有一些捣蛋分子在乱搞,然而我们的ARP协议还在广泛应用着,难道就没有办法管制这些捣蛋分子了吗?
办法是有的,例如做ip-mac的静态绑定,避开ARP协议,或者在协议栈内加入更强化的监测机制,但总不完美,因为要人力来维护。没有更傻瓜的办法吗?于是瑞星们想出了一个歪招,让pcA不停地发arp request,这样即使有C在灌输假的arp echo,pcB因为会收到广播,也必定会返回正确的arp echo,这样只要瑞星实现一个目标:他发送request的频率总比C发送echo的频率快,则B返回正确echo的频率也必定快,那我们的正确echo就盖过了恶意echo,使得网络在大部分情况下都是正常的。
很傻的办法,不是吗?但却基本有效!只要有效,对于瑞星们,这就是技术领先,这就是商业卖点!反正用户永远是无知的!
瑞星的算盘打得好,然而,他却忘记了存在一种大型网络环境,在这环境内一个网段存在很多机器,如果在这种环境内高速率发送广播,会产生非常多的回应,多到广播本身占据的流量可能阻塞网络,多到ARP包的横行使得交换机为了不断更新自己的mac-port对应表而疲于奔命,于是…..就出问题了…..
诚然,从技术上讲,瑞星没有错,它的行为没有违反RFC关于ARP协议的规定,仅仅是对于一些建议值(arp 广播频率)作了修改,于是瑞星坚持自己是对的,然而问题确实存在,不然也不会有这么多高校出台规定,于是就有了前面的丑剧,于是就有人将其上升到商业竞争或者娱乐大众的高度去了。
技术讲完,进入第二阶段–怎样看待瑞星这次事件?
还是个人意见:这牵扯到一个软件行为的道德问题!此类行为,虽无法责令其停止,但我有权力厌恶!
道德本身的含义无需再述,而软件,也应具有道德,干正事的软件叫好软件,干坏事的软件叫病毒,然而为了干自己认为的“正事”而造成了其他方面的坏影响的,绝不能称之为好软件。
举个不是很恰当的类比例子:某女生坐公交车,嫌地面太脏,于是把自己的行李箱放在旁边座位上,过一会有人过来要求其拿掉行李箱,因为这人要坐这座位,此女生说:这个座位我多付钱要了,我就是要放行李箱。此人怒曰:有你这么坐公交的吗?总共30多座位,我付30块钱我还包车了呢!女生虽看来有理,然而从周围乘客到公交司机和售票员都无任何人站在她一边,于是只能拿掉行李箱。
再举个软件的例子:假如同样完成某功能的2个软件,一个占用很多cpu资源,另一个不多,那自然是选择后者,前者虽然没问题,但我们至少有抵制它的权力。
也就是说,软件为达成目的,肯定要有某些行为,这些行为看似合法,然而由于太霸道而影响了其他方面运行时,造成的问题就绝对应该由此软件负责而不能置身事外。所以瑞星此事,无论其怎么有道理,至少我还是厌恶其行为。
其实对于软件来说,类似的例子还是有不少的,正面的:
Windows XP和Vista的半开连接数限制,为什么要限制,就是为了不让一个桌面操作系统有对网络造成巨大影响的可能,尤其是一个面向不懂计算机知识只会使用的用户群的时候。或许很多人会不认同,我也不想阻止你破解它,但请你在占用巨大带宽与你在同一网络内的同学喊慢的时候汗颜一下。
某些下载软件的线程数限制。并非不能开高,而是开太高并无意义,徒增负担,还影响他人,TCP/IP的滑动窗口和拥塞控制本身就比较完善,开多线程本身就有抢占资源打压其他使用者的嫌疑,开得无节制的多那就是占着高速公路开拖拉机,占着茅坑不拉屎。
反面的:
XX执法官,XX终结者,XX监视岗等类软件,这类软件的行为本身就太不道德,违反RFC,虽能达成功能,但其害远大其利,以暴制暴本身就不提倡,何况以暴欺压平民,对于此类软件,借用某神人的话语:谁用谁应该被吊起来打!
迅雷,这个软件更容易惹人非议,且不论其盗链下载的行为是否有问题,光是其想尽一切办法提速,无视带来的网络负载,就不是一个好软件应有的行为。同时TCP,UDP皆上,任意使用端口,无视拥塞和并发控制,都导致了网络行为和QOS管理方面的困难,尤其是无状态UDP的大量使用使得很多底端家用路由设备经常在第一时间被打死,且无法通过软件自身控制。所以此软件虽有很强的下载能力,但不到万不得已,我个人是尽量不用的态度。
作为软件开发商,总有责任对自己软件造成的一切问题负责,这是最起码的态度问题。如果没有这种态度,我们绝对有权力BS这个厂商。
最后回到技术,吉林大学最初始发布的公告“该软件(瑞星2008防火墙)对网络的干扰和破坏力甚至大于很多计算机病毒”的结论基本正确无误,网友请自行判断使用其与否。

区分几种知名散列算法的散列值的方法

取自FreeBSD HandBook第14.4小节,刚才回顾手册时看到的。
 用 MD5 散列加密的密码通常要比用 DES 散列得到的长一些, 并且以 $1$ 字符开始。 以 $2a$ 开始的口令是通过 Blowfish 散列函数加密的。 DES 密码字符没有任何可以用于鉴别的特征, 但他们要比 MD5 短, 并且以不包括 $ 在内的 64 个可显示字符来表示,因此相对比较短的、没有以美元符号开头的字符串很可能是一个 DES 口令。

发现新玩艺儿—-MySQL Proxy

今天看到了这么一个新项目–MySQL Proxy,貌似最近比较热门。简单来说就是一个从MySQL Client到Server的一个代理。可能有人认为MySQL这种连接方式不应该会用到代理,因为一般来说都喜欢把MySQL Server放到后端,用内网圈起来,这样一方面保证安全,另一方面用Local  Ethernet来避免不稳定因素较多的Internet连接,因此基本没有代理这个角色出现的机会。然而,假如这个代理不仅仅是一个代理,而是一个能“懂得”连接双方传送内容,并有可能会对双方内容加以控制甚至干涉的一个角色呢?还有没有人觉得他没用?联想一下Squid之于HTTP Client和HTTP Server所能起到的作用,是不是能想到更多了呢?
是的,MySQL Proxy就是这么一个玩艺儿。代理仅仅是其最不值一提的功能,让人激动的功能都是建立在代理这个前提之上,能实现的更好玩的东西,例如以下:
Query Interception
Query Filtering
Query Rewriting
Macro Expansion
可能对于没接触过这个东西的人,这几个概念还不是十分直观,那么这样,在脑子里描绘这样一幅情景:
1,原本为Cilent-Server直连这种拓扑,现在引入MySQL Proxy,变成Client-Proxy-Server。
2,原本为了实现高容载能力,对于Server采取了多台并存,Master/Slave甚至是Master/Master等方式的复制集群,配置管理都比较复杂。而引入了Proxy以后,中间存在了这样一个Store-Forward的proxy环节。
3,在这个环节,我们可以通过一种脚本语言来控制这个proxy的行为,例如对于Client进来的查询依照某种条件过滤,甚至依照某种条件改写,再导向后端的Server。
4,凭借自己实现的filtering或rewriting,我们可以实现很多目的,例如Failover,例如Load balance。或者更无聊些我们可以对Client进来的带有弱智语法错误的SQL语句进行修正。
有了这个东西,几乎是想到什么就能完成什么,这可是大大得扩展了MySQL应用的多样性,可以用它来实现一些高端商业数据库的复杂的企业化功能。相信喜欢MySQL的架构设计师们一定会喜欢这个玩艺儿。
这里有篇Getting Start,是很好的入门教材,对于这套软件,定要保持关注。

Shell tips:神奇的叹号

整天在shell环境下操作,不积累点快捷输入的小技巧是不行的。
最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用。
最近还找到一种快速回退上一条历史的一些小技巧,暂记录之。
1,除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。
例如:
$./some-shell-command
$cat !!
则后一条命令就相当于cat ./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。
2,除了!!,!$代表得是上一条命令中最后一个parameter,这是个更有用的变量,例如:
$ls /some-path-to-a-directory
$cat !$/some-file.txt
如果some-path-to-a-directory不幸为一个非常长的路径的时候,使用!$恰好就能省去输入这个超长路径的麻烦,这条命令实际上就相当于cat  /some-path-to-a-directory/some-file.txt
3,!str代表以历史命令中最近一条以str开头的命令。
4,!?str?代表历史命令中最近一条包含str的命令。
5,!n和!-n,前者代表history命令显示出来前面的条目数为n的那条命令,后者代表当前命令条目数减去n的那条命令,例如!-3就代表3条前的那个命令。
对比起来,1和2是相当实用的,剩下3条记得住就用,记不住也无妨了。

IIS7新特性–写于beta3 release之后

IIS7是伴随着新一代Windows Server操作系统发布的新的WebServer。从目前为止其特点来看,这一代相比IIS6应该会有一个质的飞跃,因此从Windows Server Codename “Longhorn”开始的每个公开预览版本,IIS都是我最感兴趣的。
Beta3发布之后,微软IIS开发团队的Bill Staples大牛在IIS blog上撰文写了关于IIS7在beta3之后加入的几个新特性。在此大体介绍一下这篇文章并意译一下,然后掺杂点自己对于新版本试用中的几点看法,希望有更多的人来关注和使用IIS7。
原文链接如下:http://blogs.iis.net/bills/archive/2007/04/25/what-s-new-in-iis7-beta-3.aspx

VIM改变文档中字母大小写

拿到一份文档,里面全是大写字母,要全部改写成为小写字母,印象里写段小程序判断ACSII码范围然后增减一个数值就可以搞定,但是最近比较迷VIM,就顺带搜索了一下能否有现成的命令或脚本解决,没想到还真找到了。
gggUG—-全文转换为大写字符。
ggguG—-全文转换为小写字符。
最后一个“G”代表范围,通过调整这个可以限定字、行、正文范围的转换。

突然发现,就连软件,也在悄悄地进行新老更替了

如果是2000年左右的网民,手头常备的下载软件一定是flashget,翻译软件恐怕是金山词霸吧。
如果你现在还是这样的使用习惯,你不妨先把这两个东西卸载掉,然后找找看最近几年新出的一些软件用来看看。
至少我个人在这样做了一天之后,就毅然抛弃了前两者。
感慨一下过去的时代不再来
顺便称赞一下这个词典软件—-灵格斯

无光驱、软驱,通过PXE安装Windows 2003

情景:
买了一台微型PC做二奶机,无光驱软驱,又懒得从主PC上拆下来用,于是打算通过网络安装的方式来装操作系统。
需求:
可以支持PXE启动的网卡,经检查版载的Reltek 8110是支持Intel PXE Rom的;
网络环境,没问题,有一个一个宽带路由器;
DHCP Server/TFTP Server,自然是在主PC上搭咯;
PXE Server,根据PXE协议设计的服务,关键问题就在于这里的选取和实现了。

给自己留个备忘–我的vimrc

以前已经整理过n次vimrc,但只是想用的时候才找资料去抄,写完就扔,怎奈管理服务器太多到最后都忘记写在哪台机器上了,以及该机器是否被咔嚓了。现在想想此类的资料怎么说也是有点价值的,所以现在起要注意保留这方面的小碎片,希望能形成自己一套的workspace吧。