本来打算睡了,但是一抬头。却发现一轮上悬月挂在空中,色调之唯美,不由的一阵动心。
这样绝佳的意境,岂能错过!于是就有了下面这组照片:
校园网的建立为教师、学生提供了广阔的学习空间,但不可避免的是也带来了一系列的问题:如有的学生迷恋网上游戏、有的教师在正常的工作时间内利用QQ聊天等。因此,按着学校要求,作为网管就要禁止内网用户使用QQ、联众等聊天和网游软件,现对我们在处理过程中发现的一些解决方法,进行一下总结,希望能供各位同事参考。
阻断QQ的连接
新版QQ不仅仅通过UDP方式登录服务器,还能够以TCP方式登录。QQ在连接时首先向以下七个服务器的8000端口发送UDP包。
sz.tencent.com 61.144.238.145
sz2.tencent.com 61.144.238.146
sz3.tencent.com 202.104.129.251
sz4.tencent.com 202.104.129.254
sz5.tencent.com 61.141.194.203
sz6.tencent.com 202.104.129.252
sz7.tencent.com 202.104.129.253
在阻断8000端口的连接后,发现QQ还会通过UDP的8001和TCP的8000、8001端口进行连接。鉴于这些端口目前只有QQ使用,所以可以基于端口来做阻断规则。
在用防火墙阻断以上端口的数据包后,发现QQ还会通过TCP的80和443端口进行连接。如果针对这两个端口作阻断规则,会影响用户的正常上网,所以只能对服务器的IP地址来做规则。通过试验发现了以下可通过80和443端口建立连接的QQ服务器:
218.17.217.106
219.133.40.95
219.133.40.97
219.133.40.157
219.133.40.177
219.133.40.73
219.133.40.189
218.18.95.153
218.17.209.23
202.104.129.253
218.17.209.42
在针对这些IP作阻断规则后,QQ已基本无法登录。
在试验中还发现,QQ安装目录下的Config.db文件,其中记录了QQ服务器的地址,与我们上面找到的完全符合。
因此,在用防火墙阻止用户使用QQ上网时,除了阻止TCP和UDP的8000、8001端口外,还需阻断与QQ服务器的连接。下面列举了在试验中找到的和在网上查到的QQ服务器IP:
61.141.194.203
61.144.238.145/146/149/155
61.172.249.135
65.54.229.253
202.96.170.164
202.104.129.151/251/252/253/254
211.157.38.38
218.17.209.23/42
218.17.217.106
218.18.95.153/165
219.133.40.21/73/89/90/92/95/97/157/177/189(这个网段的服务器地址较多,可以考虑阻断整个网段)
虽然以上方法可以起到阻断QQ连接的作用,但如果腾讯增加新的QQ服务器,QQ也还是可以登录的。另外,用第三方的代理软件如NEC E-BORDER等,支持Anonymous的Socks5代理还是可能绕过去,登录使用QQ。
阻断MSN的连接
MSN的连接在除使用常规的1863端口外,还会使用7001和80端口,因为这两个端口涉及到其他网络服务的应用,所以也只能采用阻断QQ连接的方法,通过阻断与MSN服务器的连接,来达到用户要求。
以下列举了在试验中找到的服务器IP:
64.4.12.200/201
65.54.194.117
207.46.68.23
207.46.104.20
207.46.107.14/125
207.46.110.27/28/254
经查询,这些服务器IP都是北美地区的。
同样,如微软添加新的MSN服务器或者用户使用代理,还是可以登录MSN。
阻断联众的连接
阻断联众的连接相对来说就比较容易啦。在客户端连接服务器时,首先会与服务器的2000端口建立连接(61.55.138.219:2000)。在连接建立后,会用到服务器的1007、2001、2002、3015端口。在试验中,只阻断了2000端口的数据包,客户端就已经无法连接服务器了。
1、建筑师
一位夫人打电话给建筑师,说每当火车经过时,她的睡床就会摇动。
“这简直是无稽之谈!”建筑师回答说,“我来看看。”
建筑师到达后,夫人建议他躺在床上,体会一下火车经过时的感觉。
建筑师刚上床躺下,夫人的丈夫就回来了。他见此情形,便厉声喝问:“你躺在我妻子的床上干什么?”
建筑师战战兢兢地回答:“我说是在等火车,你会相信吗?”
【顿悟】
有些话是真的,却听上去很假;有些话是假的,却令人无庸置疑。
2、引诱
英国绅士与法国女人同乘一个包厢,女人想引诱这个英国人,她脱衣躺下后就抱怨身上发冷。先生把自己的被子给了她,她还是不停地说冷。
“我还能怎么帮助你呢?”先生沮丧地问道。
“我小时候妈妈总是用自己的身体给我取暖。”
“小姐,这我就爱莫能助了。我总不能跳下火车去找你的妈妈吧?”
【顿悟】
善解风情的男人是好男人,不解风情的男人更是好男人。
3、调羹
麦克走进餐馆,点了一份汤,服务员马上给他端了上来。
服务员刚走开,麦克就嚷嚷起来:“对不起,这汤我没法喝。”
服务员重新给他上了一个汤,他还是说:“对不起,这汤我没法喝。”
服务员只好叫来经理。
经理毕恭毕敬地朝麦克点点头,说:“先生,这道菜是本店最拿手的,深受顾客欢迎,难道您……”
“我是说,调羹在哪里呢?”
【顿悟】
有错就改,当然是件好事。但我们常常却改掉正确的,留下错误的,结果是错上加错。
4、穿错
饭厅内,一个异常谦恭的人胆怯地碰了碰另一个顾客,那人正在穿一件大衣。
“对不起,请问您是不是皮埃尔先生?”
“不,我不是。”那人回答。
“啊,”他舒了一口气,“那我没弄错,我就是他,您穿了他的大衣。”
【顿悟】
要做到理直气壮,并不是件容易的事情。理直的人,往往低声下气;而理歪的人,却是气壮如牛。
5、回电
一个苏格兰人去伦敦,想顺便探望一位老朋友,但却忘了他的住址,于是给家父发了一份电报:“您知道托马的住址吗?速告!”
当天,他就收到一份加急回电:“知道。”
【顿悟】
当我们终于找到最正确的答案时,却发现它是最无用的。
6、伤心故事
有三个人到纽约度假。他们在一座高层宾馆的第45层订了一个套房。
一天晚上,大楼电梯出现故障,服务员安排他们在大厅过夜。
他们商量后,决定徒步走回房间,并约定轮流说笑话、唱歌和讲故事,以减轻登楼的劳累。
笑话讲了,歌也唱了,好不容易爬到第34层,大家都感觉精疲力竭。
“好吧,彼德,你来讲个幽默故事吧。”
彼德说:“故事不长,却令人伤心至极:我把房间的钥匙忘在大厅了。”
【顿悟】
我们痛苦,所以幽默;我们幽默,所以快乐。
7、卖书
一个很有名的作家要来书店参观。书店老板受宠若惊,连忙把所有的书撤下,全部换上作家的书。作家来到书店后,心里非常高兴,问道:“贵店只售本人的书吗?”
“当然不是。”书店老板回答,“别的书销路很好,都卖完了。”
【顿悟】
“拍马屁”是个奇怪的词:你象是在奉承他,又象是在侮辱他。
8、帮忙
在邮局大厅内,一位老太太走到一个中年人跟前,客气地说:“先生,请帮我在明信片上写上地址好吗?”
“当然可以。”中年人按老人的要求做了。
“谢谢!”老太太又说:“再帮我写上一小段话,好吗?”
“好吧。”中年人照老太太的话写好后,微笑着问道:“还有什么要帮忙的吗?”
“嗯,还有一件小事。”老太太看着明信片说,“帮我在下面再加一句:字迹潦草,敬请原谅。”
【顿悟】
你若不肯帮忙,人家会恨你一个星期;如果帮得不够完美,还不如……
(1)
有一次,一个老强盗带着徒弟去抢劫银行,被警方追捕。两人狂逃,差点儿连裤子都跑掉了。好不容易甩掉了警察,两人上气不接下气,瘫倒在地上。
良久,惊魂稍定,徒弟说:“师父啊师父,要是这个世界上没有警察,该有多么美好啊!”师父骂道:“放屁!要是没有警察,我们还有饭吃吗?!”徒弟大惑不解。师父“语重心长”地说:“你只知其一不知其二啊!你想想,如果没有了警察,是不是大家都敢去偷、去抢了?正因为有了这些警察,把那些能人挡住了,我们才有生存空间啊!和他们相比,我们算什么东西?有什么本事啊?我们不就是仅仅凭着一颗贼胆,敢干他们不敢干的事,才混得一口饭吃吗?有了警察,才有我们啊!没有警察,哪里有我们的好日子过啊!”
你看成功人士多么风光,但是,你只看到一面,没有看到另外一面,你“只看到贼吃肉,没有看到贼挨打”,没有看到他们为成功所流的汗水、泪水,甚至鲜血!即使,你看到了“贼挨打”,你也只愿意做“只吃肉不挨打的贼”。天下哪里有这样便宜的好事!上面那个老强盗的经验,我们是可以好好借用一下的。只要有一点点勇气、自信,就足够用来突破生理和心理的障碍。(出自《你就是百万精兵》)
(2)
两个食人族到某公司上班,老板说:“如果你们在公司吃人,立马开除!”三个月下来大家相安无事,突然一天老板把这两个人叫到办公室大骂一顿: “TMD,叫你们不要吃人你们还吃,明天你们不用来上班了!” 两食人族收拾东西离开,出门时一个忍不住骂另一个:“告诉过你多少遍,不要吃干活儿的人,三个月来我们每天吃一个部门经理,什么事都没有,昨天你吃了一个清洁工,今天就被他们发现了!”
(3)
小狗汤姆到处找工作,忙碌了好多天,却毫无所获。他垂头丧气地向妈妈诉苦说:“我真是个一无是处的废物,没有一家公司肯要我。”
妈妈奇怪地问:“那么,蜜蜂、蜘蛛、百灵鸟和猫呢?”
汤姆说:“蜜蜂当了空姐,蜘蛛在搞网络,百灵鸟是音乐学院毕业的,所以当了歌星,猫是警官学校毕业的,所以当了保安。和他们不一样,我没有接受高等教育的经历和文凭。”
妈妈继续问道:“还有马、绵羊、母牛和母鸡呢?”
汤姆说:“马能拉车,绵羊的毛是纺织服装的原材料,母牛可以产奶,母鸡会下蛋。和他们不一样,我是什么能力也没有。”
妈妈想了想,说:“你的确不是一匹拉着战车飞奔的马,也不是一只会下蛋的鸡,可你不是废物,你是一只忠诚的狗。虽然你没有受过高等教育,本领也不大,可是,一颗诚挚的心就足以弥补你所有的缺陷。记住我的话,儿子,无论经历多少磨难,都要珍惜你那颗金子般的心,让它发出光来。”
汤姆听了妈妈的话,使劲地点点头。
在历尽艰辛之后,汤姆不仅找到了工作,而且当上了行政部经理。鹦鹉不服气,去找老板理论,说:“汤姆既不是名牌大学的毕业生,也不懂外语,凭什么给他那么高的职位呢?”
老板冷静地回答说:“很简单,因为他是一只忠诚的狗。”
(4)
去过庙的人都知道,一进庙门,首先是弥勒佛,笑脸迎客,而在他的背面,则是黑口黑脸的韦陀。但相传在很久以前,他们并不在同一个庙里,而是分别掌管不同的庙。
弥勒佛热情快乐,所以来的人非常多,但他什么都不在乎,丢三拉四,没有好好的管理账务,所以依然入不敷出。而韦陀虽然管账是一把好手,但成天阴着个脸,太过严肃,搞得人越来越少,最后香火断绝。
佛祖在查香火的时候发现了这个问题,就将他们俩放在同一个庙里,由弥勒佛负责公关,笑迎八方客,于是香火大旺。而韦陀铁面无私,锱珠必较,则让他负责财务,严格把关。在两人的分工合作中,庙里一派欣欣向荣景象。
其实在用人大师的眼里,没有废人,正如武功高手,不需名贵宝剑,摘花飞叶即可伤人,关键看如何运用。
(5)
曾经有个小国到中国来,进贡了三个一模一样的金人,把皇帝高兴坏了。可是这小国不厚道,同时出一道题目:这三个金人哪个最有价值?
皇帝想了许多的办法,请来珠宝匠检查,称重量,看做工,都是一模一样的。怎么办?使者还等着回去汇报呢。泱泱大国,不会连这个小事都不懂吧?
最后,有一位退位的老大臣说他有办法。
皇帝将使者请到大殿,老臣胸有成足地拿着三根稻草,插入第一个金人的耳朵里,这稻草从另一边耳朵出来了。第二个金人的稻草从嘴巴里直接掉出来,而第三个金人,稻草进去后掉进了肚子,什么响动也没有。老臣说:第三个金人最有价值!使者默默无语,答案正确。
这个故事告诉我们,最有价值的人,不一定是最能说的人。老天给我们两只耳朵一个嘴巴,本来就是让我们多听少说的。善于倾听,才是成熟的人最基本的素质。
(6)
父子两住山上,每天都要赶牛车下山卖柴。老父较有经验,坐镇驾车,山路崎岖,弯道特多,儿子眼神较好,总是在要转弯时提醒道:“爹,转弯啦!”
有一次父亲因病没有下山,儿子一人驾车。到了弯道,牛怎么也不肯转弯,儿子用尽各种方法,下车又推又拉,用青草诱之,牛一动不动。
到底是怎么回事?儿子百思不得其解。最后只有一个办法了,他左右看看无人,贴近牛的耳朵大声叫道:“爹,转弯啦!”
牛应声而动。
牛用条件反射的方式活着,而人则以习惯生活。一个成功的人晓得如何培养好的习惯来代替坏的习惯,当好的习惯积累多了,自然会有一个好的人生。
(7)
一只乌鸦坐在树上,整天无所事事。一只小兔子看见乌鸦,就问:“我能象你一样整天坐在那里,什么事也不干吗?”乌鸦答道:“当然啦,为什么不呢?”于是,兔子便坐在树下,开始休息。突然,一只狐狸出现了。狐狸跳向兔子……并把它给吃了。
这个故事的寓意是……要想坐在那里什么也不干,你必须坐(做)得非常非常高。
(8)
一只小鸟正在飞往南方过冬的途中。天气太冷了,小鸟冻僵了,从天上掉下来,跌在一大片农田里。它躺在田里的时候,一只母牛走了过来,而且拉了一泡屎在它身上。冻僵的小鸟躺在牛屎堆里,发掘牛粪真是太温暖了。牛粪让它慢慢缓过劲儿来了!它躺在那儿,又暖和又开心,不久就开始高兴地唱起歌来了。一只路过的猫听到了小鸟的歌声,走过来查个究竟。顺着声音,猫发现了躲在牛粪中的小鸟,非常敏捷地将它刨了出来,并将它给吃了!
这个故事的寓意是……
1) 不是每个在你身上拉屎的都是你的敌人。
2) 不是每个把你从屎堆中拉出来的都是你的朋友。
3) 而且,当你陷入深深的屎堆当中(身陷困境)的时候,闭上你的鸟嘴!
(9)
有七个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。
一开始,他们抓阄决定谁来分粥,每天轮一个。于是乎每周下来,他们只有一天是饱的,就是自己分粥的那一天。后来他们开始推选出一个道德高尚的人出来分粥。强权就会产生腐败,大家开始挖空心思去讨好他,贿赂他,搞得整个小团体乌烟障气,高尚的人也腐败了。然后大家开始组成三人的分粥委员会及四人的评选委员会,但他们常常互相攻击,扯皮下来,粥吃到嘴里全是凉的。最后想出来一个方法:轮流分粥,但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己吃到最少的,每人都尽量分得平均,就算不平,也只能认了。大家快快乐乐,和和气气,日子越过越好。
同样是七个人,不同的分配制度,就会有不同的风气。所以一个单位如果有不好的工作习气,一定是机制问题,一定是没有完全公平公正公开,没有严格的奖勤罚懒。如何制订这样一个制度,是每个领导需要考虑的问题。
(10)
战国时期魏惠王因为齐威王违背了盟约,所以想要发兵攻打齐国。身为国相的惠施为了劝导魏王息兵,请来了国都的一位贤士戴晋人。戴晋人见了魏王问道: “关于蜗牛,君王知道吗?”魏王说:“知道。”戴普人说:“蜗牛长着两只触角。左面的角上有一个国家,称为触氏;右面的角上有一个国家,称为蛮氏。为了争夺领地,两国交兵开战,伏尸数万,胜者追了十又五天,才收兵回营。”魏王不以为然地笑说:“这不都是虚假之言吗?”戴晋人说:“不是虚假之言,不信的话,我来为你论证一下:以君王看来,四方上下有穷尽吗?”魏王说:“没有穷尽。”戴晋人又问:“人的心巡游过无穷无尽的宇宙之后,返回到人世,可不可以说人世渺小到了似有似无?”魏王说:“对。”戴晋人紧跟着又问:“人世既然渺小到了可有可无的地步,而魏国只是人世间的一个很小的地方,国都又是魏国之中很小的一块地方,君王又是国都中很小的一个形体,那么,相对于无穷无尽的宇宙而言,跟蜗牛右角上蛮氏国的国王又有什么分别呢?”魏王说:“没有什么分别。”
戴晋人离去了。魏王好似被引入了空旷无际的太空,看不到人世,更看不到魏国,体悟到人世和国土的渺小,感受到了征战和扩疆的无聊,认识到交兵争胜,所得不过蜗牛一角之地,实在没有多大意义。于是称赞戴晋人为“大人”,认为他有如此眼光,远远超过了圣人。(出自《庄子》)
故事告诉我们,职场的一切得失都是渺小的,没有人会在临死的时候,后悔自己没有多花点时间在办公室工作。追求快乐和平安幸福,才是人的一生中最重要的事情。
在开放的现代社会,跨文化的言语交际显得愈发重要,已经成为现代交际中引人注目的一个特点。交际中的文化差异随处可见,言语环境中的文化因素受到普遍重视。下面是英汉文化中十大常见差异。
1.回答提问
中国人对别人的问话,总是以肯定或否定对方的话来确定用“对”或者“不对”。如:
“我想你不到20岁,对吗?”
“是的,我不到20岁。”
(“不,我已经30岁了。”)
英语中,对别人的问话,总是依据事实结果的肯定或否定用“Yes”或者“No”。如:
“You‘‘re not a student,are you?”
“Yes,I am.”
(“No,I am not.”)
2.亲属称谓
英语的亲属以家庭为中心,一代人为一个称谓板块,只区别男性、女性,却忽视配偶双方因性别不同而出现的称谓差异。显得男女平等。如:
英文“grandparents,grandfather,grandmother”,而中文“祖辈、爷爷、奶奶、外公、外婆”。
再如,父母同辈中的称谓:英文“uncle”和“aunt”,而中文“伯伯、叔叔、舅舅等,姑妈、姨妈等”。
还有,英文中的表示下辈的“nephew和 niece”是不分侄甥的,表示同辈的“cousin”不分堂表、性别。
3.考虑问题的主体
中国人喜欢以对方为中心,考虑对方的情感。比如:
你想买什么?
您想借什么书?
而英语中,往往从自身的角度出发。如:
Can I help you?
What can I do for you?
4.问候用语
中国人打招唿,一般都以对方处境或动向为思维出发点。如:
您去哪里?
您是上班还是下班?
而西方人往往认为这些纯属个人私事,不能随便问。所以他们见面打招唿总是说:
Hi/Hello!
Good morning/afternoon/evening/night!
How are you?
It‘‘s a lovely day,isn‘‘t it?
5.面对恭维
中国人的传统美德是谦虚谨慎,对别人的恭维和夸奖应是推辞。如:
“您的英语讲得真好。”
“哪里,哪里,一点也不行。”
“菜做得很好吃。”
“过奖,过奖,做得不好,请原谅。”
西方人从来不过分谦虚,对恭维一般表示谢意,表现出一种自强自信的信念。如:
“You can speak very good French.”
“Thank you.”
“It‘‘s a wonderful dish!”
“I am glad you like it.”
所以,学生要注意当说英语的人称赞你时,千万不要回答:“No,I don‘‘t think so.”这种回答在西方人看来是不礼貌的,甚至是虚伪的。
6.电话用语
中国人打电话时的用语与平时讲话用语没有多少差异。
“喂,您好。麻烦您叫一声王伟接电话。”“我是张英,请问您是谁?”
英语中打电话与平时用语差别很大。如:“Hello,this is John speaking.”
“Could I speak to Tom please?”
“Is that Mary speaking?”
西方人一接到电话一般都先报自己的号码或者工作单位的名称。如:
“Hello,52164768,this is Jim.”
中国学生刚开始学英语会犯这样的错误:
“Hello,who are you please?”
7.接受礼物
中国人收到礼物时,一般是放在一旁,确信客人走后,才迫不及待地拆开。受礼时连声说:
“哎呀,还送礼物干什么?”
“真是不好意思啦。”
“下不为例。”
“让您破费了。”
西方人收到礼物时,一般当着客人的面马上打开,并连声称好:
“Very beautiful!Wow!”
“What a wonderful gift it is!”
“Thank you for your present.”
8.称唿用语
中国人见面时喜欢问对方的年龄、收入、家庭等。而西方人很反感别人问及这些私事。西方人之间,如没有血缘关系,对男子统称唿“Mr.”,对未婚女士统称“Miss”,对已婚女士统称“Mrs.”。
中国人重视家庭、亲情,认为血浓于水。为了表示礼貌,对陌生人也要以亲属关系称唿。如:
“大爷、大娘、大叔、大婶、大哥、大姐等”。
9.体贴他人
在西方,向别人提供帮助、关心、同情等的方式和程度是根据接受方愿意接受的程度来定的;而中国人帮起忙来一般是热情洋溢,无微不至。例如:一位中国留学生在美国看到一位老教授蹒跚过车水马龙的马路,出于同情心,他飞步上前挽住老人,要送他过去,但是他得到的却是怒目而视。请看下面的对话:
Chinese student:Mr.White,you are so pale,are you sick?
English teacher:Well...yes.I have got a bad cold for several days.
Chinese student:Well,you should go to a clinic and see the doctor as soon as possible.
English teacher:Er...what do you mean?
中国人建议患上感冒的人马上去看医生,表示真诚的关心。而美国人对此不理解,会认为难道他的病有如此严重吗?因此,只要回答:“I‘‘m sorry to hear that.”就够了。
10.请客吃饭
中国人招待客人时,一般都准备了满桌美味佳肴,不断地劝客人享用,自己还谦虚:“没什么菜,吃顿便饭。薄酒一杯,不成敬意。”行动上多以主人为客人夹菜为礼。
西方人会对此大惑不解:明明这么多菜,却说没什么菜,这不是实事求是的行为。而他们请客吃饭,菜肴特别简单,经常以数量不多的蔬菜为可口的上等菜,席间劝客仅仅说:“Help yourself to some vegetables,please.”吃喝由客人自便自定。
可见在学习语言的过程中,不可忽视语言交际中的文化倾向,要适时导入相关的文化背景知识,以充实学习者的知识结构,提高认知能力。
代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效。由于代码审查本身所针对的对象,就是俯瞰整个代码在测试过程中的问题和Bug。并且,代码审查对消除一些特别细节的错误大有裨益,尤其是那些能够容易在阅读代码的时候发现的错误,这些错误往往不容易通过机器上的测试识别出来。本文就常见的Java代码中容易出现的问题提出一些建设性建议,以便您在审查代码的过程中注意到这些常见的细节性错误。
通常给别人的工作挑错要比找自己的错容易些。别样视角的存在也解释了为什么作者需要编辑,而运动员需要教练的原因。不仅不应当拒绝别人的批评,我们应该欢迎别人来发现并指出我们的编程工作中的不足之处,我们会受益匪浅的。
正规的代码审查(code inspection)是提高代码质量的最强大的技术之一,代码审查—由同事们寻找代码中的错误—所发现的错误与在测试中所发现的错误不同,因此两者的关系是互补的,而非竞争的。
如果审查者能够有意识地寻找特定的错误,而不是靠漫无目的的浏览代码来发现错误,那么代码审查的效果会事半功倍。在这篇文章中,我列出了11个Java编程中常见的错误。你可以把这些错误添加到你的代码审查的检查列表(checklist)中,这样在经过代码审查后,你可以确信你的代码中不再存在这类错误了。
一、常见错误1# :多次拷贝字符串
测试所不能发现的一个错误是生成不可变(immutable)对象的多份拷贝。不可变对象是不可改变的,因此不需要拷贝它。最常用的不可变对象是String。
如果你必须改变一个String对象的内容,你应该使用StringBuffer。下面的代码会正常工作:
String s = new String ("Text here");
但是,这段代码性能差,而且没有必要这么复杂。你还可以用以下的方式来重写上面的代码:
String temp = "Text here";
String s = new String (temp);
但是这段代码包含额外的String,并非完全必要。更好的代码为:
String s = "Text here";
二、常见错误2#: 没有克隆(clone)返回的对象
封装(encapsulation)是面向对象编程的重要概念。不幸的是,Java为不小心打破封装提供了方便——Java允许返回私有数据的引用(reference)。下面的代码揭示了这一点:
import java.awt.Dimension;
/***Example class.The x and y values should never*be negative.*/
public class Example{
private Dimension d = new Dimension (0, 0);
public Example (){ }
/*** Set height and width. Both height and width must be nonnegative * or an exception is thrown.*/
public synchronized void setValues (int height,int width) throws IllegalArgumentException{
if (height < 0 || width < 0)
throw new IllegalArgumentException();
d.height = height;
d.width = width;
}
public synchronized Dimension getValues(){
// Ooops! Breaks encapsulation
return d;
}
}
Example类保证了它所存储的height和width值永远非负数,试图使用setValues()方法来设置负值会触发异常。不幸的是,由于getValues()返回d的引用,而不是d的拷贝,你可以编写如下的破坏性代码:
Example ex = new Example();
Dimension d = ex.getValues();
d.height = -5;
d.width = -10;
现在,Example对象拥有负值了!如果getValues() 的调用者永远也不设置返回的Dimension对象的width 和height值,那么仅凭测试是不可能检测到这类的错误。
不幸的是,随着时间的推移,客户代码可能会改变返回的Dimension对象的值,这个时候,追寻错误的根源是件枯燥且费时的事情,尤其是在多线程环境中。
更好的方式是让getValues()返回拷贝:
public synchronized Dimension getValues(){
return new Dimension (d.x, d.y);
}
现在,Example对象的内部状态就安全了。调用者可以根据需要改变它所得到的拷贝的状态,但是要修改Example对象的内部状态,必须通过setValues()才可以。
三、常见错误3#:不必要的克隆
我们现在知道了get方法应该返回内部数据对象的拷贝,而不是引用。但是,事情没有绝对:
/*** Example class.The value should never * be negative.*/
public class Example{
private Integer i = new Integer (0);
public Example (){ }
/*** Set x. x must be nonnegative* or an exception will be thrown*/
public synchronized void setValues (int x) throws IllegalArgumentException{
if (x < 0)
throw new IllegalArgumentException();
i = new Integer (x);
}
public synchronized Integer getValue(){
// We can’t clone Integers so we makea copy this way.
return new Integer (i.intValue());
}
}
这段代码是安全的,但是就象在错误1#那样,又作了多余的工作。Integer对象,就象String对象那样,一旦被创建就是不可变的。因此,返回内部Integer对象,而不是它的拷贝,也是安全的。
方法getValue()应该被写为:
public synchronized Integer getValue(){
// ’i’ is immutable, so it is safe to return it instead of a copy.
return i;
}
Java程序比C++程序包含更多的不可变对象。JDK 所提供的若干不可变类包括:
·Boolean
·Byte
·Character
·Class
·Double
·Float
·Integer
·Long
·Short
·String
·大部分的Exception的子类
四、常见错误4# :自编代码来拷贝数组
Java允许你克隆数组,但是开发者通常会错误地编写如下的代码,问题在于如下的循环用三行做的事情,如果采用Object的clone方法用一行就可以完成:
public class Example{
private int[] copy;
/*** Save a copy of ’data’. ’data’ cannot be null.*/
public void saveCopy (int[] data){
copy = new int[data.length];
for (int i = 0; i < copy.length; ++i)
copy[i] = data[i];
}
}
这段代码是正确的,但却不必要地复杂。saveCopy()的一个更好的实现是:
void saveCopy (int[] data){
try{
copy = (int[])data.clone();
}catch (CloneNotSupportedException e){
// Can’t get here.
}
}
如果你经常克隆数组,编写如下的一个工具方法会是个好主意:
static int[] cloneArray (int[] data){
try{
return(int[])data.clone();
}catch(CloneNotSupportedException e){
// Can’t get here.
}
}
这样的话,我们的saveCopy看起来就更简洁了:
void saveCopy (int[] data){
copy = cloneArray ( data);
}
五、常见错误5#:拷贝错误的数据
有时候程序员知道必须返回一个拷贝,但是却不小心拷贝了错误的数据。由于仅仅做了部分的数据拷贝工作,下面的代码与程序员的意图有偏差:
import java.awt.Dimension;
/*** Example class. The height and width values should never * be
negative. */
public class Example{
static final public int TOTAL_VALUES = 10;
private Dimension[] d = new Dimension[TOTAL_VALUES];
public Example (){ }
/*** Set height and width. Both height and width must be nonnegative * or an exception will be thrown. */
public synchronized void setValues (int index, int height, int width) throws IllegalArgumentException{
if (height < 0 || width < 0)
throw new IllegalArgumentException();
if (d[index] == null)
d[index] = new Dimension();
d[index].height = height;
d[index].width = width;
}
public synchronized Dimension[] getValues()
throws CloneNotSupportedException{
return (Dimension[])d.clone();
}
}
这儿的问题在于getValues()方法仅仅克隆了数组,而没有克隆数组中包含的Dimension对象,因此,虽然调用者无法改变内部的数组使其元素指向不同的Dimension对象,但是调用者却可以改变内部的数组元素(也就是Dimension对象)的内容。方法getValues()的更好版本为:
public synchronized Dimension[] getValues() throws CloneNotSupportedException{
Dimension[] copy = (Dimension[])d.clone();
for (int i = 0; i < copy.length; ++i){
// NOTE: Dimension isn’t cloneable.
if (d != null)
copy[i] = new Dimension (d[i].height, d[i].width);
}
return copy;
}
在克隆原子类型数据的多维数组的时候,也会犯类似的错误。原子类型包括int,float等。简单的克隆int型的一维数组是正确的,如下所示:
public void store (int[] data) throws CloneNotSupportedException{
this.data = (int[])data.clone();
// OK
}
拷贝int型的二维数组更复杂些。Java没有int型的二维数组,因此一个int型的二维数组实际上是一个这样的一维数组:它的类型为int[]。简单的克隆int[][]型的数组会犯与上面例子中getValues()方法第一版本同样的错误,因此应该避免这么做。下面的例子演示了在克隆int型二维数组时错误的和正确的做法:
public void wrongStore (int[][] data) throws CloneNotSupportedException{
this.data = (int[][])data.clone(); // Not OK!
}
public void rightStore (int[][] data){
// OK!
this.data = (int[][])data.clone();
for (int i = 0; i < data.length; ++i){
if (data != null)
this.data[i] = (int[])data[i].clone();
}
}
六、常见错误6#:检查new 操作的结果是否为null
Java编程新手有时候会检查new操作的结果是否为null。可能的检查代码为:
Integer i = new Integer (400);
if (i == null)
throw new NullPointerException();
检查当然没什么错误,但却不必要,if和throw这两行代码完全是浪费,他们的唯一功用是让整个程序更臃肿,运行更慢。
C/C++程序员在开始写java程序的时候常常会这么做,这是由于检查C中malloc()的返回结果是必要的,不这样做就可能产生错误。检查C++中new操作的结果可能是一个好的编程行为,这依赖于异常是否被使能(许多编译器允许异常被禁止,在这种情况下new操作失败就会返回null)。在java 中,new 操作不允许返回null,如果真的返回null,很可能是虚拟机崩溃了,这时候即便检查返回结果也无济于事。
七、常见错误7#:用== 替代.equals
在Java中,有两种方式检查两个数据是否相等:通过使用==操作符,或者使用所有对象都实现的.equals方法。原子类型(int, flosat, char 等)不是对象,因此他们只能使用==操作符,如下所示:
int x = 4;
int y = 5;
if (x == y)
System.out.println ("Hi");
// This ’if’ test won’t compile.
if (x.equals (y))
System.out.println ("Hi");
对象更复杂些,==操作符检查两个引用是否指向同一个对象,而equals方法则实现更专门的相等性检查。
更显得混乱的是由java.lang.Object 所提供的缺省的equals方法的实现使用==来简单的判断被比较的两个对象是否为同一个。
许多类覆盖了缺省的equals方法以便更有用些,比如String类,它的equals方法检查两个String对象是否包含同样的字符串,而Integer的equals方法检查所包含的int值是否相等。
大部分时候,在检查两个对象是否相等的时候你应该使用equals方法,而对于原子类型的数据,你用该使用==操作符。
八、常见错误8#: 混淆原子操作和非原子操作
Java保证读和写32位数或者更小的值是原子操作,也就是说可以在一步完成,因而不可能被打断,因此这样的读和写不需要同步。以下的代码是线程安全(thread safe)的:
public class Example{
private int value; // More code here…
public void set (int x){
// NOTE: No synchronized keyword
this.value = x;
}
}
不过,这个保证仅限于读和写,下面的代码不是线程安全的:
public void increment (){
// This is effectively two or three instructions:
// 1) Read current setting of ’value’.
// 2) Increment that setting.
// 3) Write the new setting back.
++this.value;
}
在测试的时候,你可能不会捕获到这个错误。首先,测试与线程有关的错误是很难的,而且很耗时间。其次,在有些机器上,这些代码可能会被翻译成一条指令,因此工作正常,只有当在其它的虚拟机上测试的时候这个错误才可能显现。因此最好在开始的时候就正确地同步代码:
public synchronized void increment (){
++this.value;
}
九、常见错误9#:在catch 块中作清除工作
一段在catch块中作清除工作的代码如下所示:
OutputStream os = null;
try{
os = new OutputStream ();
// Do something with os here.
os.close();
}catch (Exception e){
if (os != null)
os.close();
}
尽管这段代码在几个方面都是有问题的,但是在测试中很容易漏掉这个错误。下面列出了这段代码所存在的三个问题:
1.语句os.close()在两处出现,多此一举,而且会带来维护方面的麻烦。
2.上面的代码仅仅处理了Exception,而没有涉及到Error。但是当try块运行出现了Error,流也应该被关闭。
3.close()可能会抛出异常。
上面代码的一个更优版本为:
OutputStream os = null;
try{
os = new OutputStream ();
// Do something with os here.
}finally{
if (os != null)
os.close();
}
这个版本消除了上面所提到的两个问题:代码不再重复,Error也可以被正确处理了。但是没有好的方法来处理第三个问题,也许最好的方法是把close()语句单独放在一个try/catch块中。
十、常见错误10#: 增加不必要的catch 块
一些开发者听到try/catch块这个名字后,就会想当然的以为所有的try块必须要有与之匹配的catch块。
C++程序员尤其是会这样想,因为在C++中不存在finally块的概念,而且try块存在的唯一理由只不过是为了与catch块相配对。
增加不必要的catch块的代码就象下面的样子,捕获到的异常又立即被抛出:
try{
// Nifty code here
}catch(Exception e){
throw e;
}finally{
// Cleanup code here
}
不必要的catch块被删除后,上面的代码就缩短为:
try{
// Nifty code here
}finally{
// Cleanup code here
}
常见错误11#;没有正确实现equals,hashCode,或者clone 等方法
方法equals,hashCode,和clone 由java.lang.Object提供的缺省实现是正确的。不幸地是,这些缺省实现在大部分时候毫无用处,因此许多类覆盖其中的若干个方法以提供更有用的功能。但是,问题又来了,当继承一个覆盖了若干个这些方法的父类的时候,子类通常也需要覆盖这些方法。在进行代码审查时,应该确保如果父类实现了equals,hashCode,或者clone等方法,那么子类也必须正确。正确的实现equals,hashCode,和clone需要一些技巧。
小结
我在代码审查的时候至少遇到过一次这些错误,我自己也犯过其中的几个错误。好消息是只要你知道你在找什么错误,那么代码审查就很容易管理,错误也很容易被发现和修改。即便你找不到时间来进行正规的代码审查,以自审的方式把这些错误从你的代码中根除会大大节省你的调试时间。花时间在代码审查上是值得的。
“远程破解”与“本地破解”正好相反,是指QQ盗号者通过网络盗窃远端QQ用户的密码。这种QQ破解有很多方法,如在线密码破解、登录窗口破解、邮箱破解、消息诈骗以及形形色色的QQ木马病毒等。下面就让我们一同来看看这些QQ密码的远程破解是怎么实现的。
1、在线密码破解
大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。
在线密码破解和本地密码破解采用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地盗取QQ密码!
在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然采用穷举法技术,所以在枚举密钥位数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。
目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。它的破解操作分四步:第一步,在QQ起始号码和结束号码中填上想要盗取的QQ号码(此号码必须在线);第二步,在“添加或删除HTTP代理服务器”中输入代理服务器的IP地址和端口号码(如果你嫌自己寻找QQ代理服务器麻烦,可以使用一些现代的QQ代理公布软件);第三步,点击“添加&测试”按钮,软件先自动检测此服务器是否正常,确定后将它加入代理服务器列表(此软件可填入多个代理服务器的地址,并且能够自动筛选不可用或者速度慢的服务器);第四步,点击“开始”按钮,开始在线密码破解……
2、登录窗口破解
伪造QQ登录窗口的盗号方法非常简单,这是一种比较另类的木马破解方法(后面对木马破解有专门讲述)。先用盗号软件生成一个伪装的QQ主程序,它运行后会出现跟腾讯QQ一模一样的登录窗口,只要用户在这个伪登录窗口中登录,输入的QQ号及密码就会被记录下来,并通过电子邮件发送到盗号者指定的油箱中,在此以一款叫“狐Q”的软件为例,首次运行它时,它会把自身复制到QQ目录中,并把原来的QQ.exe文件改名为QQ.com(这样的更改不会影响QQ的正常运行)。设置完毕后,“狐Q”的原程序就会消失,伪装成QQ等待“猎物”上钩……在其软件设置中,有一项设置可以决定真假QQ交替运行的次数,可以减少用户在使用QQ时产生的怀疑。比如说将“生效次数”设定为3,那么用户第一次运行的是真QQ了,也就是说在第三次运行时,用户的QQ号便被盗了!在QQ密码发送的过程中,如果发送失败,它还会把QQ号和密码记下来,等待下一次发送。
即时监视QQ登录窗口的盗号方法利用Windows窗口函数、句柄功能实现QQ号和密码的后台截取。此类软件几乎可以捕获Windows下所有标准密码框中的密码,如QQ、Outlook、屏幕保护程序、各种电子邮件客户端、各种游戏账号和上网账号等。捕获后,它也会将密码实时发送到盗号者指定的邮箱中。其代表性的盗号软件是“密码使者”,它几乎可以捕获Windows 9x/2000/XP下所有登录窗口中的密码,并且还能够盗取在网页中登录的各种密码。盗号在使用这款软件时,只须填上用于接收别人QQ密码的邮箱地址及保护密码,并把生成的盗号器文件传过去哄骗别人运行,然后就可以坐等密码上门!此软件与传统的键盘记录器不同,它在电脑每次开机时隐藏自启动,不管密码是用键盘输入的,还是复制、粘贴的,都能够有效地实时拦截!其注册版本居然还带有自动升级的功能,破坏力十分巨大。
3、邮箱破解
利用邮箱盗取QQ密码也是一种比较常用的方法。我们都知道,腾讯公司在对用户的QQ号码进行验证时需要用户填写电子邮箱。对于申请了“密码保护”功能的用户,在腾讯主页上找回遗忘的密码时,密码会被发送到用户注册时的邮箱中。所以,只要盗号者破解了对方的电子邮箱,就有机会得到其QQ密码!通常我们在对方QQ注册时填写的邮箱。至于如何破解电子邮箱,具体的操作方法有多种,由于它有点超出文本的范畴,所以大家可以自己上网查询相关资料,在此就不赘述了。
4、消息诈骗
孔子曰:上士杀人用笔端,中士杀人用语言,下士杀人用石盘。远程盗取QQ密码还有一种大家最常见也是最简单最有效的方法,那就是利用不少人爱贪小便宜的弱点,进行人为的欺骗!
标题:腾讯关于xxxxx获奖通知
“QQ幸运儿:恭喜!!!您已经成为QQ在线网友齐抽奖的中奖用户。您将获赠精美T恤1件,并有机会得到NOKIA 7110手机1部。腾讯公司(tencent.com)注:奖品是以邮寄方式寄出,请您认真填写以下资料。如果填写错误,将被作为自动放弃获奖机会处理。> > QQ号码:> 密码:> 姓名:> E-mail地址:> 身份证号码:> 通讯地址:> 联系电话:> 邮编:”
比如我们的QQ经常会收到如下的陌生人消息。
如果你真的如实填写这些资料并傻傻的发送回去,不一会儿QQ密码就被盗了。
还有类似这样的消息:“亲爱的***号QQ用户,恭喜你你已经成为腾讯的幸运号码,腾讯公司送你QQ靓号:12345,密码:54321。请尽快登陆并修改密码,感谢您对腾讯公司的支持!”不少人一看,以为白捡的便宜来了 ,登录一试还是真的,于是就大大咧咧地笑纳了。但是,很多人为了方便,不管什么东西都爱使用相同的密码,所以当这个QQ号的密码被你改为与自己QQ号相同的密码时,自己QQ号的连同这个赠送的QQ号都得玩完!这是因为,赠送的QQ号已被盗号者申请过密码保护,当你更改密码后他就利用腾讯的密码保护功能把它收了回去,同时也收走你的QQ密码。如果你的QQ没有申请过密码保护,此刻就只能和它永别了。
5、更多的木马破解
“古希腊大军围攻特洛伊城,久攻不破,遂造一大木马藏匿将士于其中,大部队假装撤退而弃木马。城中得知敌退,将木马作战利品拖入城内。午夜时分,匿于木马中的将士开启城门四处纵火,城外伏兵涌入,里应外合,焚屠特洛伊城。”这是古希腊神话《木马屠城记》的故事,其中那只木马被黑客程序借用其名,表“一经潜入,后患无穷”之意。一个完整的木马程序由服务器端和控制端组成。所谓“中了木马”,是指用户的电脑中被安装了木马的服务器端,而拥有控制端的盗号者就通过网络远程控制该电脑,从而轻而易举地盗得该缒灾械腝Q密码。
针对QQ的木马程序多不胜数,其中专门盗取QQ密码的也有一大堆,它们被偷偷地安装在用户的电脑中,随电脑启动而自动运行,如果用户使用QQ,那么其账号和密码就会被这些木马记录下来,并发送到木马安装者的邮箱中。前面已经介绍了两款通过登录窗口盗号的QQ木马,下面再介绍两款典型的。
第一款:极品QQ盗号2004
这是“极品QQ盗号”木马的最新版本。它的使用方法跟前面介绍的“密码使者”差不多,先再“设置”栏中填入接收QQ密码的邮箱地址和发送邮件的标题,然后把生成的盗号器偷偷地安装到别人的电脑里……这个木马声称可以避过主流的杀毒软件,盗取QQ最新版本的密码,即QQ2004和QQ2004奥运特别版的密码。
第二款:QQ间谍3.0
使用此木马软件时,点击工具条上的“服务端”,按照提示生成服务端程序,然后把它偷偷地传到别人的电脑中,当受害者不小心运行了它,木马就被种上了。这个木马不仅可以盗号,还能悄悄地在后台记录受害者的QQ聊天信息,并下载可执行文件实现远程升级和远程执行脚本程序。另外再注册之后,它还可以直接远程监控对方电脑上的QQ聊天记录。
利用木马软件盗取QQ密码,显然比用前面介绍的那些破解方法更有效率!不仅节省时间,而且成功率也高。但是,如何把木马程序的服务器端安装在用户的电脑中,这是一个费心思的事儿。另外,很多功能强大的木马程序都是需要花钱注册,才能使用其全部功能。因此,对于那些水平参差不齐的盗号者而言,要想玩转木马程序,还得费点劲。
不幸的消息……昨天我才把BitDefender的二年注册码贴出来,BitDefender就开始打击盗版。我的BitDefender就被告知License Key是盗版,然后就不能用了,唉……
BitDefender - 我目前推荐的杀毒软件,具备四大功能:杀毒、防恶意软件、网络防火墙、垃圾邮件过滤器
目前病毒、恶意软件泛滥,上网一不小心就感染N多病毒、N多恶意软件,简直是防不胜防!我装了Norton Antivirus都没用,照样N多Troijan、N多Adware过来。如果你也遇到和我一样的问题,那就试试BitDefender吧。呵呵
Key: C919025ADFC6A0460F3F A39B28EDCFE82CDD22A9 3D480FCB5052DE191D87 09F49E65E1D0E58624D9 53E8D7C7EC15D6D378B0 FD31B972D3CB3DDCCF94 A64121BB50C4AD025094 9318CCF8B751DDD3C80F 0CF851DA478F54A62DB6 7A069F8D7731675D5971
在日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器、打不开文件、不能聊天……也许还会造成很大的损失!下面我们就介绍电脑操作中常用密码的破解方法,希望能解你燃眉之急。
一、遗忘了SYSTEM密码
如果你遗忘了CMOS设置中的SYSTEM密码,就无法启动机器了, 解决的办法只能是:打开机箱,把电池取下、正负极短接,给CMOS放电,清除CMOS中的所有内容(当然也就包括密码)。然后,重新开机进行设置。
注意:有些主板设置了CMOS密码清除跳线,请参照主板说明书将该跳线短接,这样也可以清除CMOS密码。
二、遗忘了SETUP密码
遗忘了该密码,就不能进行CMOS设置了。如果你能使用计算机,但不能进入CMOS设置,可以这样解决:在DOS状态下启动DEBUG,然后输入如下命令手工清除SETUP密码:
_ o 70 16
_ o 71 16
_ q
你也可以用CMOS密码破解软件来显示CMOS密码。这样的软件有很多,例如Cmospwd,它支持Acer、AMI、AWARD、COMPAQ、DELL、IBM、PACKARD BELL、PHOENIX、ZENITH AMI等多种BIOS。在DOS下启动该程序,CMOS密码就会显示出来。
三、遗忘了Windows登录密码
WinMe/98下对策:开机后按F8键选择DOS启动,然后删除Windows安装目录下的*.PWL密码文件,以及Profiles子目录下的所有个人信息文件。重新启动Windows后,系统会弹出一个不包含任何用户名的密码设置框,此时无需输入任何内容,直接单击“确定”,登录密码即被删除。
另外,将注册表数据库HKEY_LOCAL_MACHINENetworkLogon 分支下的UserProfiles修改为“0”,然后重新启动Windows也可达到同样目的。
WinXP/2000下对策:删除系统安装目录system32config下的SAM文件,重新启动,此时管理员Administrator账号已经没有密码了,用Administrator帐户登陆系统,不用输入任何密码,进入系统后再重新设置登陆帐户密码即可。
四、遗忘了Windows屏保密码
解决方法:在开机后按F8键,选择安全模式启动,进入Windows 后,右击桌面空白处,从弹出的快捷菜单中选择“属性”/屏幕 保护,取消“密码保护”即可。
五、遗忘了Windows电源管理密码
Windows的电源管理功能也可以设置密码,启用此功能后,当系统从节能状态返回时就会要求输入密码。
如果你遗忘了该密码,可以使用前面破解Windows登录密码的那种方法去破解。
六、遗忘了微软Office密码
解决方法:使用破解Office系列文档密码的软件,这样的软件有很多,例如AOPR,该软件可以同时对微软Office系列Word、Excel及Access等软件所生成的密码进行破解,还可以对Word的*.DOT模板文件的密码进行搜索。
七、遗忘了WinZip压缩包密码
解决方法:用软件UZPC(Ultra Zip Password Cracker),找回丢失的密码。使用该软件时要先设置适当的解密方式,例如“后门方式”、“穷举方式”、“字典方式”和“ 模式匹配方式”等,一般采用“Brute Force穷举方式”,然后软件就会对所有可能的密码进行测试,直至找出最后的结果。
八、遗忘了RAR压缩包密码
遗忘了RAR压缩包密码后,你可下载一个CRARK软件来对其进行破解,它主要通过命令行来实现对RAR压缩包的密码进行破解。使用时一般只需直接使用“CRARK RAR压缩包文件名”命令,利用缺省参数即可进行破解。
九、遗忘了QQ/ICQ密码
为保护QQ密码,你应该赶快到这里申请密码保护。假如你忘记了QQ密码、或者密码被盗时,只需填写正确的信息即可取回。
如果你要找回ICQ密码,可以使用软件ICQ Password Revealer,这是一个DOS下的命令行实用软件,你只需在ICQ安装文件夹的NEWDB子文件夹下执行该文件,然后按照屏幕提示输入自己的UIN,系统即会找回“久违”的ICQ密码。
十、遗忘了OE密码
如果你忘了密码,无法进入OutLook Express阅读收到的邮件、使用通讯簿等,可以这样破解:重启计算机并按F8,选择“安全模式”,再启动OE就不需要密码了,然后你可以重建一个用户(不能修改密码),把信息导入新用户信箱即可。
十一、遗忘了Foxmail帐户密码
解决方法:消除忘记的Foxmail帐户密码。首先打开Foxmail,新建一个帐户(帐户名任意,例如lacl1),然后退出Foxmail,运行Windows资源管理器,找到FoxmailMAILlacl1文件夹,里边有个“account.stg”,把它复制到忘记密码的帐户(例如“lacl”)目录中,直接覆盖原来的“account.stg”文件。再重新运行Foxmail,打开忘记密码的帐户,呵呵,怎么连“口令提示框”也没有?现在你就可以直接打开忘记密码的帐户,而且帐户中原来的邮件一封都不会少!
十二、查看“*”密码
许多密码在屏幕上都是以“*”显示的,因此我们无法直接看到密码的原始字符,如果你使用专门破解“*”密码的软件,即可查出这些密码的原始字符。
这样的软件有很多,例如Win2000/Win98下你可用iOpus Password Recovery,WinXP下可用Password Spectator Pro 。使用时,只需先打开显示“*”的窗口,启动这类软件,然后按住Ctrl键,在密码栏中按下鼠标左键,这些“*”密码的原始字符就会显示出来了。