Profil von 凯阳小阳子de十点二十FotosBlogListenMehr Extras Hilfe

凯阳 Scalpel

Beruf
Interessen
昔日的手术糖果刀,长大咯^^b
Es wurden noch keine Listenelemente hinzugefügt.

小阳子de十点二十

手术刀 & 万俟 & 暮雪 & 芋头 & 啤酒猫 & 熊猫兔 etc.
Foto 1 von 4
30 Juni

突然很怀念这里呵~

     为了找张自己的照片,所以回这里找找相册,不想把之前的文字也都回顾了一遍……
 
     还是以前有心情呵~哪像现在活得这么累,还感到毫无成就……
 
     也许应该回归这里,至少,我仍怀念这里……
17 September

New blog, New space, New life

Kaiyang's blog -- 小阳子de十点二十 -- has been transferred. The new page is www.wangkaiyang.com.cn/blog/. Welcome everyone.

Goodbye to msn live space... au revoir...

 

Click here to visit 小阳子de十点二十

www.wangkaiyang.com.cn/blog/

31 Juli

很累很累----这还差的远呢

     最近大脑常常恍惚,不知道大家有没有过这样的感觉,就是能够清楚的感觉到大脑是和头骨是分开的。呵呵说的恐怖了些,我的意思是能实实在在地感觉到大脑的存在。这种感觉很……奇妙,也很怪,总之有点令我感到不舒服。

     上周五体验了把醉酒。最近不开心的事情很多,尽管表情上仍然给别人笑脸,却常常感到自己很迷茫。曾经包子说眩晕的感觉是很奇妙的,确实很奇妙,但它不按照你设计的方向转圈,这感觉太糟糕!打车回家时和司机师傅聊天,师傅说一点都没闻到酒气,我说没闻到就没闻到吧,麻烦您找个地方停下我吐会……真不错,师傅还给我买了瓶水!

     上周日,继上午篮球运动3小时、下午KFC和天一“现开”打万智之后,我于晚上19:15驾车前往霍营,第一次驱车去30km以外的目的地,却因许久没动过车了而感到相当地兴奋。按金人的话:“离合器不好使,低头一看是脚蹬子太高了”,爷感觉这车“离合器”太软啊~座子太硬~刹车太轻~轮胎亏气……哎哎~你干吗超我车?你掰左灯了吗?别以为骑辆28就了不起!敢超咱这2轮捷安特牌宝马?!

     话说这30km骑得相当happy,路上哼着歌,仿佛回到高中时代呵~路上有意思的事儿很多,除了我在四环上迷路以外还有一件:我在路上碰到两个后座上插着“支持北京奥运”旗子的骑车人,我试图超了他们一次,马上又被他们超过了。正当我心中愤愤不平准备再超过去的时候,我突然发现这两个人的右臂的袖子在随风飘荡……再仔细看了看后终于确认,他们右臂位置是空的……肃然起敬肃然起敬啊!踏踏实实跟在人家后面,这……不是残奥会选手吧?

     周一到周三持续加班,今天终于能提前解放。眼看到下班的点儿,我也就不在这聒噪了,既然下班了,工作上的烦心事就让他散了吧,嘿嘿笑下,回家!

     再说一句!我恨黑咖啡!!

24 Juli

感触,转瞬即逝

     感触,转瞬即逝,记下的,永远记下;错过的,永久流逝--这一定是种悲哀。

     不习惯身边的改变,也不喜欢身边的改变。改变,在我看来是对自己之前做法的一种否定,也许新的方式确实要比以往美丽许多,但之前的,就不用珍惜么?

     但这世界毕竟是改变着的,就像时间会一秒一秒的走,太阳会升起或者隐去,大地会平静和颤抖,人也会一天天老去……有时真的觉得这会让人感到恐惧,生命上的,精神上的。

     既然这世界一定在变,为了跟随这世界的节奏,我也必然要变。需要变得更加“心安理得”一些,尽管看不透,也说不明白,但准备还是要做的。

     我,浅浅地懂了……

24 Juni

二胖哥新婚快乐

     二胖哥也结婚了哈,我很高兴~~记得小时候到山西都是我哥带着我到处玩,如今也算有家事的人了,呵呵^^

     嫂子很贤惠,很诚实(嘿嘿,问啥说啥,特诚实),就是一开始忘了给我改口费了。过门第一天就下厨给我们做饭了,这样的妻子--恩恩,我哥还真有福气~

     不贴他们的婚纱照了(指穿婚纱的那种),贴张我从他们照片册翻出来感觉很不错的一张“青春”照吧~嘿~嫂子还真上镜!

    

     看看我哥~~嘿嘿嘿~终于找到眼睛比我小的了^^

我们该骂谁?

     最近一直沉浸在欧洲杯的喜悦当中--尽管这些球队都与我没有太多关系,但人家的球确实好看。如果非让我支持一两个球队的话,我选土耳其和西班牙,因为我高中的球衣是土耳其的11号,大学是西班牙的11号~

     不过此博并不是说欧洲杯的,而是为了练练手--毕竟很久没留博了……玩笑了哈。今天加班,吃过晚饭后在工位上浏览欧洲杯的评论,浏着浏着就浏到了国足,顿时感到很憋屈……非常憋屈!我很不理解为什么一想到人家踢球就觉得是一种激情享受,一想到咱们国足就他母亲的想骂人?不过看了不少评论后,我突然不知道应该骂谁了……

     骂球员?恩,球员应该挨骂。别人再怎么说这球是不是你们踢的?没能赢下来是不是你们干的?这N场比赛前锋进了几个进球?你ZZ很大牌怎么没有一次神来之笔?说你中国球员体能没问题怎么跑到下半场15分钟就开始满场遛达?你说你们还能拿出什么给我们球迷?

     我知道你们也很努力,至少我们都能看到你们努力。不然不会有徐云龙的飞踹,不会有韩鹏的血染赛场,不会有大头的热泪两行……我确实理解你们,你们的压力大得让人无法想像,难怪每次开场激情20分钟过后就开始不堪重负,都是压力惹得祸呵~毕竟压力越大,体能消耗越大,动作就很变形,脑袋就很不清楚,球就找不到门框……倘若这么说,那球员的责任也不是很大了,换个鸟骂吧。

     骂教练?他奶奶的F拉多,确实垃圾比较多。我每次看到他都是一张“丧脸”,终日躲在杜Y的后边,怯怯地看着赛场,看着镜头,完全没有一点从容和果断。其实仔细想想F拉多不是那个最该被骂的教练,人家其实自己有东西,孙祥在最后一场球结束后说过:F拉多教了我们很多配合,我们在场上打出来的配合都是F拉多教的。可见F拉多并不是没尽心尽力~人们都说F拉多是杜Y的傀儡,这称呼不好听,也让人觉得不爽--办好了那有人家一半的功劳,搞砸了那就是自己的不是。我觉得我们骂杜Y应该多于老F,恩,最阴险的就是杜Y!这家伙在中国最虚弱得时候趁虚而入,挣得不少,却毁了中国,他NND,我看他奥运会能有什么成绩。

     还是骂足协吧!中国足协没钱?真没钱假没钱咱是不知道,虽然有报道但咱也不了解真实情况不是,不好说是不是有人贪污了还是腐败了。不过瞧瞧中国请的“NB”人--施拉普纳、霍顿、阿里汉、福拉多、杜伊……再加上朱广沪。米卢算个特例,他带来了运气。我就奇怪了,咱中国不是“不拘一格降人才”么?怎么足协选帅头一条就是教练要“听话”?听话和水平有什么必然联系么?其实我很看好克劳琛的,毕竟他把中国足球打出了样子。不就是对德国那场没听话让董方卓上么?干吗就死活不聘用人家?这样看来,特鲁西埃?希丁克?嘿嘿嘿,你想都别想!

     还是自己骂自己吧!咱是球迷,中国球迷,怎么现在说这4个字这么丢人呢?说实话咱也够践的,看一场输一场,生气骂骂咧咧,然后下场仍然扳个凳子做电视机前面,或者上网关注下战况……周而复始……有啥意思?唉……挺佩服那些去现场看球的同胞,即使是拿赠票去的,也别自己找气受啊~~

     所以说啊,中国足球要改,要从根上改。把足协格式化了重装一个,然后真的真的不拘一格降人才,给我们点盼头,别让我们这么憋屈!行不?

05 Mai

什么是CVE...

     看得郁闷了,贴这里,歇会再看……

CVE的产生背景

     随着最近一些年来在全球范围的黑客入侵不断猖獗,信息安全问题越来越严重。在对抗黑客入侵的安全技术中,实时入侵检测和漏洞扫描评估(IDnA——Intrusion Detection and Assessment)的技术和产品已经开始占据越来越重要的位置。
     目前实时入侵检测和漏洞扫描评估基于的主要方法还是“已知入侵手法检测”和“已知漏洞扫描”,换句话说就是基于知识库的技术。可见,决定一个IDnA技术和产品的重要标志就是能够检测的入侵种类和漏洞数量。
     1999年2月8日的 InfoWorld在比较当时ISS的Internet Scanner5.6和NAI的CyberCop2.5时有一段描述,“由于没有针对这些扫描器平台的分类标准,直接比较他们的数据库非常困难。我们找到在Internet Scanner和CyberCop中同一个漏洞采用了不同的名称……”
     各个IDnA厂家在阐述自己产品的水平时,都会声称自己的扫描漏洞数最多,你说有1000种,我说有5000。我们的用户如何辨别?不同的厂家在入侵手法和漏洞这方面的知识库各有千秋,用户如何最大限度地获得所有安全信息?CVE就是在这样的环境下应运而生的。

什么是CVE?

     CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得CVE成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。

CVE的特点:
- 为每个漏洞和暴露确定了唯一的名称
- 给每个漏洞和暴露一个标准化的描述
- 不是一个数据库,而是一个字典
- 任何完全迥异的漏洞库都可以用同一个语言表述
- 由于语言统一,可以使得安全事件报告更好地被理解,实现更好的协同工作
- 可以成为评价相应工具和数据库的基准
- 非常容易从互联网查询和下载,http://www.cve.mitre.org
- 通过“CVE编辑部”体现业界的认可

     CVE 开始建立是在1999年9月,起初只有321个条目。在2000年10月16日,CVE达到了一个重要的里程碑——超过1000个正式条目。截至目前(2000年12月30日),CVE已经达到了1077个条目,另外还有1047个候选条目(版本20001013)。目前已经有超过28个漏洞库和工具声明为CVE兼容。

CVE条目举例

     Land是一个非常著名的拒绝服务攻击的例子。该攻击的主要原理就是构造一个伪造源地址等于目的地址的IP数据包。当存在相应漏洞的主机收到这样的攻击包,会由于不断的自我响应造成系统资源的过渡消耗和崩溃。
在许多种漏洞数据库中都有相应的条目,但是说法各不相同,有Land, Teardrop_land, land.c, Impossible IP packet, Land Loopback Attack等等多种命名方法,用户无所适从。如下图:
如果有了CVE这个公共的命名标准,所有的漏洞库都会对应到CVE字典。如下图:

     在CVE字典中会出现一个共同认可的名称和描述:

CVE 版本: 20001013
名称 CVE-1999-0016
描述 Land IP拒绝服务
参考引用:
CERT: CA-97.28.Teardrop_Land
FreeBSD: FreeBSD-SA-98:01
HP: HPSBUX9801-076
CISCO: http://www.cisco.com/warp/public/770/land-pub.shtml
ISS-XF: cisco-land
ISS-XF: land
ISS-XF: 95-verv-tcp
ISS-XF: land-patch
ISS-XF: ver-tcpip-sys
条目创建时间:19990929

什么是漏洞?什么是暴露?

     Vulnerability (漏洞,脆弱性)这个词汇可以有狭义和广义多种解释。比如说:finger服务,可能为入侵者提供很多有用的资料,但是该服务本身有时是业务必须的,而且不能说该服务本身有安全问题。1999年8月,CVE的编辑部投票表决通过,为了表达得更精确,给出了一个新的概念——Exposure(暴露)。
     在所有合理的安全策略中都被认为是有安全问题的称之为“漏洞”。漏洞可能导致攻击者以其他用户身份运行,突破访问限制,转攻另一个实体,或者导致拒绝服务攻击等。漏洞的例子,比如:

#61550; phf (以用户”nobody”的身份远程执行命令)
#61550; rpc.ttdbserverd (以”root”身份远程执行命令)
#61550; 缺省口令
#61550; 可能引起蓝屏死机的拒绝服务攻击
#61550; smurf (淹没一个子网的拒绝服务攻击)

     对那些在一些安全策略中认为有问题,在另一些安全策略中可以被接受的情况,称之为“暴露”。暴露可能仅仅让攻击者获得一些边缘性的信息,隐藏一些行为;可能仅仅是为攻击者提供一些尝试攻击的可能性;可能仅仅是一些可以忍受的行为,只有在一些安全策略下才认为是严重问题。暴露的例子,比如:

#61550; 运行类似finger的服务(用于获取信息或者广告的服务)
#61550; 从企业级的角度看,没有很好地设置Windows NT的审计策略
#61550; 运行可能成为公共攻击点的服务(比如:HTTP、FTP或SMTP)
#61550; 运行可能遭到强力攻击的应用服务(比如:可能遭到字典攻击,口令长度太小等)

什么叫CVE兼容

     “CVE兼容”意味着一个工具、网站、数据库或者其它安全产品使用CVE名称,并且允许与其它使用CVE命名方式的产品交叉引用。不同的工具提供不同的引用方式:

#61550; CVE查询——用户可以通过CVE名称在产品中搜索相关的信息
#61550; CVE输出——在产品提供的信息中,包括相关的CVE名称
#61550; CVE映射——CVE的条目和产品中的信息完全对应

     目前宣布兼容CVE的厂家和机构有28个,这些都是在IDnA领域中大牌。下面是一些典型机构的兼容情况:

机构声明   产品兼容情况
ISS公司 CVE命名标准对于信息安全界和用户来说一个重大的飞跃。作为一个安全管理软件和服务的技术先锋,ISS非常荣幸地参与这个标准的推进,为每个组织的信息资产提供有效的保护。
——Christopher Klaus, 创始人兼CTO 全线的扫描器产品、入侵检测产品RealSecure和X-Force知识库都全面支持CVE查询和输出
Axent公司 AXENT非常乐意与MITRE合作推进漏洞名称的标准化工作,增加安全工具间的协同工作能力。这个联盟会促进电子商务的安全性。我们将会在我们的IDnA产品中结合CVE命名计划。
——Craig Ozancin, SWAT小组安全分析员 只有ESM和NetRecon支持CVE查询,SWAT和NetProwler等产品还不支持。
Cisco公司 Cisco认为CVE对漏洞科学界的合作非常重要。这个工具可以使我们的安全研究和产品开发小组专注在为客户增值。Cisco会在产品中融合进这个字典。
——Andrew Balinsky, Cisco安全百科全书项目经理 全线IDnA产品现在虽然不兼容,但是都有兼容计划
CERT组织 我们将开始直接提出CVE条目,并且将已经公布的建议增加CVE注释。
——Bill Fithen, 1999年9月29日记者招待会 CERT建议库全面支持CVE查询和输出
NIST
国家标准和技术协会 ICAT计划中的对各种公开数据库的漏洞信息索引工作离开CVE是不可能的。
——Peter Mell, 计算机安全部 ICAT Metabase将包含CVE搜索引擎和统计生成器,全面支持CVE查询和输出

CVE的组织和机制

     CVE这个标准的管理组织和形成机制可以说是国际先进技术标准的代表。

CVE的编辑部组成

     CVE 的编辑部(Editorial Board)成员包括了各种各样的有关信息安全的组织,包括:商业安全工具厂商,学术界,研究机构,政府机构还有一些卓越的安全专家。通过开放和合作式的讨论,编辑部决定哪些漏洞和暴露要包含进CVE,并且确定每个条目的公共名称和描述。一个独立的非盈利组织MITRE负责召集编辑部,协调讨论,在整个过程提供指导,保证CVE能够服务于公众的要求。编辑部会议和讨论的内容会保存在网站中。如果需要,还会邀请其他相关信息安全专家加入到编辑部的工作中。
在编辑部中,我们能够找到许多熟悉的名字:

- CERIAS美国普渡大学计算机系
- Kelly Cooper国际知名信息安全专家
- ISS这样的著名安全工具厂商,还有NFR, Axent, PGP, Symantic等等
- Cisco, IBM, Sun, 微软等
- 美国和加拿大的CERT
- NTBugtraq, Security Focus这样的安全门户
- Ernst & Young这样的著名咨询机构
- NIST这样的标准化和测试机构

     这样的编辑部可以说是一个超强的阵容,同时也决定了这个标准的权威地位。

CVE命名过程

     命名过程从发现一个潜在的安全漏洞和暴露开始;首先赋予一个CVE候选号码;接着,编辑部会讨论该候选条目能否成为一个CVE条目;如果候选条目被投票通过,该条目会加进CVE,并且公布在CVE网站上。所有的候选条目都可以在网站上查到,只不过CVE和候选条目是分开的。整个CVE的命名过程如下

#61550; 发现——发现一个潜在的漏洞和暴露
#61550; 公开——通过邮件列表、新闻组、安全建议等形式公开,并提交给CVE的权威候选编号机构CNA(目前由MITRE负责)
#61550; 编号——CNA首先确认该漏洞和暴露是否包含在已有的CVE或候选条目中,如果不重复就可以赋予一个候选编号,编号形式CAN-yyyy-nnnn
#61550; 提案——编辑可以向编辑部提出某个漏洞/暴露,编辑部成员会讨论该条目并表决。表决结果可能是接收、拒绝、彻底改动、微小调整、没有意见、继续审查等。编辑部成员的表决和意见会记录在CVE网站上。
#61550; 修改——如果投票表决,候选条目需要修改,则修改后再提交。
#61550; 中间决策——编辑可以认定一个条目是否已经完成讨论,提请最终决策。
#61550; 最终决策——如果认定一个条目没有再多的修改,就提请最终决策。如果候选条目被接受就会通知所有成员;如果被拒绝则会说明原因。
#61550; 正式发布——当一个候选条目被接受为CVE条目,该条目会发布在网站上。
#61550; 再评估——CVE条目可能根据技术的变化,需要重新评估。再评估过程需要经过同样过程。
#61550; 撤销——有些情况经过讨论和投票表决,有些CVE条目可能会被撤销,或合并到其它条目。

CVE对我们的帮助和启示

用户选择产品

     用户和网络安全管理员可以通过采用“CVE兼容”的产品,或者要求你的安全产品厂商达到CVE兼容的水平,以保证企业级安全应用的需求。在选择相应的产品时候,用户完全可以用CVE作为评判工具的标准。
CVE:从CVE列表开始
CVE子表:根据具体情况,选择合适的CVE条目
评估:将那些CVE兼容的工具/数据库和
你前面选择的CVE子表进行直接比较

CVE名称           工具A 工具B DB 1 DB 2 黑客站点
CVE-0000-0001  √     √     √
CVE-0000-0002  √
CVE-0000-0003  √     √     √     √
CVE-0000-0004  √     √     √

用户实施风险评估

     在风险评估中最重要也是最困难的两个环节就是风险的量化,以及找到风险项后如何寻找控制措施。CVE给了我们非常好的指导去进行风险评估中的技术评估。用户完全可以参考CVE字典和相应的数据库建立自己企业的风险评估指标体系,而且所有的这些风险项都可以通过CVE索引迅速地找到相应的修补控制措施。

厂商开发产品

     安全工具厂商和漏洞库管理者通过符合CVE标准,为客户提供CVE兼容的工具和数据库,以便达到更好的风险控制覆盖范围,实现更容易的协同工作能力,提高客户整个企业的安全能力。

如何制订有实效的信息安全标准

     CVE给了我们一个非常好的典范。
     CVE不是研究室闭门造车的产物,而是行业需求、客户需求驱动的产物,是众多权威机构和大厂商直接支持的共同规范。
     由于CVE实行这种开放式的研究和提交方式,投票表决式的决策机制,保证了CVE能够最大限度地容纳最先进、最新的安全内容,投票结果又可以反映技术界和业界的综合意向,各方面完全不需要为标准的执行担忧。
     CVE这种开放的标准制定机制,以及行业内厂商间的这种有序竞争和合作,才是我国信息安全企业和标准制定单位最需要借鉴的

另一种:
     CVE (Common Vulnerabilities & Exposures,通用漏洞披露)。 CVE 是国际著名的安全漏洞库,也是对目前已知漏洞和安全缺陷的标准化名称的列表,它是一个由企业界、政府界和学术界综合参与的国际性组织,采取一种非盈利的组织形式,其使命是为了能更加快速而有效地鉴别、发现和修复软件产品的安全漏洞。

16 April

23岁了

     突然心里很躁,听着防火墙的声音觉得越来越烦,已然没有心情研究技术问题了。不如上来冒个泡,调节调节这不知道是高是低的温度。

     昨天是我23岁的生日,不过这可能是我过得最无聊的一个生日了吧,在公司加班到晚上10点,又赶上低烧……孤单感非常强烈,好在收到不少祝福的短信,老胡和大钊还请我共进了晚餐,让我感到至少还有些人记得自己。

     特别值得记下的是父亲在早上5点发来的祝福短信,很感动,因为周一离开家的时候刚刚和父母有些不快……真的很感动。

     周日打球的时候,天一评价过现在的生活:忙碌却单调。不由让我开始回忆之前的日子都是什么样子?一帮无聊的人干着无聊的事打法着看似无聊的时间,却怀着很多愿望和梦想,有些烦心的事情现在想想确实给生活多了很多乐趣。现在的忙碌却周而复始……幸运的是我仍和几个同伴住在一起,晚上回去的时候还可以开开玩笑,一起打打游戏……之前确实没觉得什么,当有一天自己一个人坐在屋里,独享着空间时间,却听不到除你之外的任何声音……这种滋味真的是不好受的。

     其实忙碌和单调并不一定是一对组合。关键看你忙碌的事情,你的目标,找一件你感兴趣的事情来忙而且最终有了收获,也就不觉得单调乏味了。

     我所作的工作常常让我觉得无味,却又时常让我觉得是种挑战。收获?呵呵,这个恐怕要差一点。

     长大一点要成长一点,我不知道我是不是多懂了些。这个生日我没有许下任何愿望。

     感谢我的父母、感谢二姨、帆、娜姐、旧近、熊、华、周周、小佳、芋头、天一、芸MM、茜MM、晴MM、张婧、李森、朱音、小凡、鸡毛、帮主、老胡、大钊、开心·水水……以及所有想起我的人们,谢谢!

     我,23岁了

11 April

Know Your Enemy: Passive Fingerprinting(转)

Know Your Enemy:
Passive Fingerprinting

Identifying remote hosts, without them knowing

Honeynet Project
http://project.honeynet.org
Last Modified: 04 March, 2002

One of the challenges of network security is learning about the bad guys. To understand your threats and better protect against them, you have to Know Your Enemy. Passive Fingerprinting is a method to learn more about the enemy, without them knowing it. Specifically, you can determine the operating system and other characteristics of the remote host using nothing more then sniffer traces. Though not 100% accurate, you can get surprisingly good results. The subterrain crew has developed siphon, a passive network and system mapping and OS fingerprinting tool. Also, Michael Zalewski (Poland's finest) and Bill Stearns are maintaining p0f. Both of these tools demonstrate the functionality we are about to discuss.

Fingerprinting
Traditionally, Operating System fingerprinting has been done using active tools, such as queso or nmap. These tools operate on the principle that every operating system's IP stack has its own idiosyncrasies. Specifically, each operating system responds differently to a variety of malformed packets. All one has to do is build a database on how different operating systems respond to different packets. Then, to determine the operating system of a remote host, send it a variety of malformed packets, determine how it responds, then compare these responses to a database. Fyodor's nmap is tool of choice when using this methodology. He has also written a detailed paper on this.

Passive fingerprinting follows the same concept, but is implemented differently. Passive fingerprinting is based on sniffer traces from the remote system. Instead of actively querying the remote system, all you need to do is capture packets sent from the remote system. Based on the sniffer traces of these packets, you can determine the operating system of the remote host. Just like in active fingerprinting, passive fingerprinting is based on the principle that every operating system's IP stack has its own idiosyncrasies. By analyzing sniffer traces and identifying these differences, you may be able determine the operating system of the remote host.

The Signatures
There are four TCP areas that we will look at to determine the operating system (however there are other signatures that can be used). These signatures are:

  • TTL - What the operating system sets the Time To Live on the outbound packet
  • Window Size - What the operating system sets the Window Size at.
  • DF - Does the operating system set the Don't Fragment bit.
  • TOS - Does the operating system set the Type of Service, and if so, at what.
By analyzing these factors of a packet, you may be able to determine the remote operating system. This system is not 100% accurate, and works better for some operating systems then others. No single signature can reliably determine the remote operating system. However, by looking at several signatures and combining the information, you increase the accuracy of identifying the remote host. An example would be the easiest way to explain. Below is the sniffer trace of a system sending a packet. This system launched a mountd exploit against us, so we want to learn more about it. We do not want to finger or nmap the box, that could give us away. Rather, we want to study the information passively. This signature was captured using snort, our passive weapon of choice.

04/20-21:41:48.129662 129.142.224.3:659 -> 172.16.1.107:604
TCP TTL:45 TOS:0x0 ID:56257
***F**A* Seq: 0x9DD90553
Ack: 0xE3C65D7 Win: 0x7D78

Based on our 4 criteria, we identify the following:

  • TTL: 45
  • Window Size: 0x7D78 (or 32120 in decimal)
  • DF: The Don't Fragment bit is set
  • TOS: 0x0
We then compare this information to a database of signatures. First, we look at the TTL used by the remote host. From our sniffer trace above, you can see the TTL is set at 45. This most likely means it went through 19 hops to get to us, so the original TTL was set at 64. Based on this TTL, it appears this packet was sent from a Linux or FreeBSD box, (however, more system signatures need to be added to the database). This TTL is confirmed by doing a traceroute to the remote host. If you are concerend about the remote host detecting your traceroute, you can set your traceroute time-to-live (default 30 hops), to be one or two hops less then the remote host (-m option). For example, in this case we would do a traceroute to the remote host, but using only 18 hops (traceroute -m 18). This gives you the path information (including their upstream provider) without actually touching the remote host. For more information on TTLs, check out this Research Paper on Default TTL values.

The next step is too compare the Window size. We have found the Window Size to be another effective tool, specifically what Window Size is used and how often the size changes. In the above signature, we see it set at 0x7D78, a default Window Size commonly used by Linux. Also, Linux, FreeBSD, and Solaris tend to maintain the same Window Size throughout a session (as this one did). However, Cisco routers (at least my 2514) and Microsoft Windows/NT Window Sizes are constantly changing. We have found that Window Size is more accurate if measured after the initial three-way handshake (due to TCP slow start). For more information on Window Size, see Stevens, "TCP/IP Illustrated, Volume 1" Chapter 20.

Most systems use the DF bit set, so this is of limited value. However, this does make it easier to identify the few systems that do not use the DF flag (such as SCO or OpenBSD). After further testing, we feel that TOS is also of limited value. This seems to be more session based then operating system. In other words, its not so much the operating system that determines the TOS, but the protocol used. TOS defintely requires some more testing. So, based on the information above, specifcally TTL and Window size, you can compare the results to the database of signatures and with a degree of confidence determine the OS (in our case, Linux kernel 2.2.x).

Keep in mind, just as with Active Fingerprinting, Passive Fingerprinting has some limitations. First, applications that build their own packets (such as nmap, hunt, nemesis, etc) will not use the same signatures as the operating system. Second, it is relatively simple for a remote host to adjust the TTL, Window Size, DF, or TOS setting on packets. For example, to change the default TTL value:

Solaris: ndd -set /dev/ip ip_def_ttl 'number'
Linux: echo 'number' > /proc/sys/net/ipv4/ip_default_ttl
NT: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

However, by combining a variety of different packets and signatures, in this case TTL and Window Size, you can reliably approximate the remote system.

Other Signatures and Uses
We are not limited to the four signatures discussed so far. There are other areas that can be tracked, such as initial sequence numbers, IP Identification numbers, TCP or IP options. For example, Cisco routers tend to start IP Identification numbers at 0, instead of randomly assigning them. For TCP Options, the option Selective Acknowledgement
SackOK is commonly used by Windows and Linux, but not commonly used by FreeBSD or Solaris. With Maximum Segment Size (MSS), most operating systems use a MSS of 1460, however Novell commonly uses 1368, and some FreeBSD variants may use a MSS of 512. Also, ICMP packets can be used. Honeynet member Ofir Arkin has done extensive research in using ICMP for fingerprinting, publishing the paper ICMP Usage in Scanning. The ICMP signatures he discusses in this paper can be used for passively fingerprinting systems based on their ICMP signatures. For example, Microsoft ICMP REQUEST payloads contain the alphabet, while most Unix systems, such as Solaris or Linux, ICMP REQUEST payloads have number and symbols.

Passive fingerprinting can be used for several other purposes. It can be used by the bad guys as 'stealthy' fingerprinting. For example, to determine the Operating System of a 'potential victim', such as a webserver, one only needs to request a webpage from the server, then analyze the sniffer traces. This bypasses the need for using an active tool that can be detected by various IDS systems. Also, Passive Fingerprinting may be used to identify remote proxy firewalls. Since proxy firewalls rebuild connection for clients, it may be possible to ID the proxy firewalls based on the signatures we have discussed. Organizations can use Passive Fingerprinting to identify 'rogue' systems on their network. These would be systems that are not authorized on the network. For example, a Microsoft or Sun shop can quickly identify 'rogue' Linux or FreeBSD systems that mysteriously appeared on their network. Passive Fingerprinting can be used to quickly inventory an organizations operating systems without touching or imapcting any systems or network performance. You would be surprised how may organizations do not know what systems they have on their internal network. For individuals conducting security assessment, Passive Fingerprinting also allows one to quickly identify critical systems (such as Unisys Mainframe). This method can also be used to identify rogue or unautorized systetms or OS types within an organization, a possible indication of 'blackhat' activity.

The Project has developed a test database to demonstrate these concepts of passive fingerprinting. The database was built by testing a variety of systems with the Telnet, FTP, HTTP, and SSH protocol. This database is no longer being developed and is provided for demonstration purposes only. If you want to contribute to the development of passive fingerprinting, we recommend the actively maintained solutions we have discussed so far.

Conclusion
Passive fingerprinting gives you the ability to learn about the enemy, without them knowing it. Though no single piece of information can positively identify a operating system, by combining several signatures, you can make an approximation of the remote system. A big thanks to the following people for their help and ideas:

Craig Smith
Peter Grundl
Subterrain Siphon Project

database of signatures

#
#  Lists of fingerprints for passive fingerprint monitoring
#  Updated 23 May, 2000
#
#  Mail your signatures to Lance Spitzner <lance@spitzner.net>
#
# OS	     	VERSION	PLATFORM	TTL	WINDOW		DF	TOS
#---	     	-------	--------	---	-----------	--	---

DC-OSx          1.1-95  Pyramid/NILE    30      8192            n       0

Windows	     	9x/NT	Intel		32	5000-9000	y	0

NetApp  	OnTap   5.1.2-5.2.2     54      8760            y       0

HPJetDirect     ?       HP_Printer      59      2100-2150       n       0

AIX          	4.3.x   IBM/RS6000      60     	16000-16100     y       0
AIX          	4.2.x   IBM/RS6000      60     	16000-16100     n       0
Cisco           11.2    7507            60      65535           y       0
DigitalUnix  	4.0     Alpha		60     	33580		y	16
IRIX         	6.x     SGI             60     	61320           y       16
OS390           2.6     IBM/S390        60      32756           n       0
Reliant         5.43    Pyramid/RM1000  60      65534           n       0

FreeBSD		3.x	Intel		64	17520		y	16
JetDirect	G.07.x  J3113A		64	5804-5840	n	0
Linux		2.2.x	Intel		64	32120		y	0
OpenBSD 	2.x	Intel		64	17520		n	16
OS/400		R4.4	AS/400		64	8192		y	0
SCO		R5	Compaq		64	24820		n	0
Solaris 	8       Intel/Sparc     64      24820           y       0
FTX(UNIX)       3.3     STRATUS         64      32768           n       0
Unisys		x	Mainframe	64	32768		n	0

Netware 	4.11	Intel		128	32000-32768	y	0
Windows		9x/NT	Intel		128	5000-9000	y	0
Windows 	2000    Intel           128     17000-18000     y       0

Cisco		12.0	2514		255	3800-5000	n	192
Solaris		2.x	Intel/Sparc	255	8760		y	0	


## ADDITIONAL NOTES
#
# Cisco IOS 12.0 normally starts all IP sessions with IP ID of 0
# Solaris 8 uses a smaller TTL (64) then Solaris 7 and below (255).
# Windows 2000 uses a much larger Window Size then NT.


## Thanks to the following people for their fingprint contributions
#
# delta <delta@caravan.ru>
# Craig <smithc@cinstate.cc.oh.us>
# Richard Tomkinson <rto17@qantas.com.au>

目标主机操作系统识别技术(转)

普遍的入侵行为需要进行端口扫描,这是多数“黑客”的熟练技巧。大多数的端口扫描就是让我们能够达到这样的目的:
1、让我们能够大致判断目标是什么操作系统
2、目标到底在运行些什么服务
当然,要扫描得到这些东西还是最后为了让我们能够知道哪些可能拿来利用,可能存在的漏洞,对目标主机的操作系统类型识别,更能够方便地让我们去利用操作系统对应的漏洞实施攻击。很多工具提供的扫描也可能就直接得到什么操作系统了,或者相对应的端口使用的是什么程序,程序是什么版本的等等。不过,这些都是由那些工具自己做了,不讨论这个,我们应该去想想这些工具到底是怎么去实现的。
对目标主机操作系统识别的目的,正如Fyodor(nmap的作者)在他的
《Remote OS detection via TCP/IP Stack FingerPrinting》中讲解那样,进行主机识别有两个主要作用,第一,很多系统漏洞是同OS密切相关的,还有就是社会学(social engineering)问题,你能够在非常了解对方的系统之后,冒充软件提供商给目标发送“补丁”。按照我们上面提到的高级扫描方式,直接进行的端口扫描,能够赋予我们绕过防火墙的能力,而且可以尽可能地隐藏
自己等等,但是,我们能够得到的信息也是有限的,也许对是否开放一个端口并不是那么直接地感兴趣,比如一个21端口,我们真正感兴趣的是这个端口被用来作什么了,运行地什么版本的程序,而不是仅仅打开一个21端口就满意了。也就是说,我们对下面得到地这个东西更感兴趣(关系到IP的地方,我都用X代替了):
C:\>ftp XXX.XXX.XXX.XXX
Connected to XXX.XXX.XXX.XXX.
220 XXXXX X2 WS_FTP Server 1.0.5 (1327846197)
User (XXX.XXX.XXX.XXX:(none)):
其实,这就是一种最简单和最直接的判别方式,获得程序版本变相地也让我们能够估计到目标的操作系统类别。我们可以对每个打开的端口进行相应的连接,通常这些服务程序就会非常高兴地显示自己的“banner”,也就让我们能够直接得到他是什么版本了。甚至,我们能够得到更好的东西:
C:\>telnet XXX.XXX.XXX.XXX
Red Hat Linux release 7.1 (Seawolf)
Kernel 2.4.2-2 on an i686
login:
这让我们对操作系统版本一览无余了。正象这些只对80端口感兴趣的“黑客”一样,通过对80端口的连接,我们也能得到足够多的信息。
C:\>telnet XXX.XXX.XXX.XXX 80
HEAD / HTTP/1.1
HTTP/1.1 200 OK
Via: 1.1 ADSL2000
Content-Length: 97
Date: Thu, 24 Jan 2002 13:46:56 GMT
Content-Type: text/html
Server: Apache/1.3.20 (Unix) PHP/4.0.6
Last-Modified: Wed, 26 Dec 2001 09:22:54 GMT
ETag: "8715f-61-3c2996ee"
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
可以注意到:Server: Apache/1.3.20 (Unix) PHP/4.0.6,这里很明白地“贡献”出WEB服务器的软件版本。
这样直接的连接探测方式,对于这些banner开放的,简直是太容易了,当然,负责的管理员也会屏蔽或者修改掉这些BANNER。
还有一种粗劣而且简单的判别主机操作系统类型的办法就是通过Ping,然后分析得到的TTL值,当然,稍微准确点可以同时在配合Tracert来确定主机原始的TTL值,不过,这种办法很容易被欺骗,比如,在WINDOWS系统中,对注册表的修改:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Key: DefaultTTL
通过对DefaultTTL的修改,比如:修改成为255,伪装成为一台UNIX主机,就能够造成探测者的错误判断。
对主机使用端口的分析,同样也能够进行操作系统识别,一些操作系统使用特殊的端口,比如:WINDOWS的137、139,WIN2K的445,而且一些网络设备比如入侵检测系统、防火墙等等也都有厂商自己的端口开放。
上面的这些识别方式也是那些负责管理员能够简单应付的方式,这里,我们可以看看高级的主机识别技术,这些技术主要分为两类:主动协议识别和被动协议识别,都是利用各种操作系统在网络协议通讯中使用不同的协议内容(各个厂商有自己的规定),然后对这些不同之处进行分析进行的识别。
Nmap这个强大的扫描工具在远程主机判断上也使用了很多技术,来实现更高级的主机系统检测。这主要是通过主动的TCP/IP协议辨识来实现的,每种操作系统在TCP交流中总是使用一些具有特性的标志,这些标志在TCP IP数据包的头中表现出来。比如window、ACK序号、TTL等等的不同反应,通过大量的数据分析,然后精确地判断主机系统。这些系统的协议特性包括(这只是一小部分):
FIN识别:发送一个只有FIN标志位的TCP数据包给一个打开的端口并等待回应。正确的RFC793行为是不响应,但有些系统,例如 MS Windows, BSDI, CISCO, HP/UX,MVS,和IRIX 发回一个RESET。
DF位识别:许多操作系统在送出的一些包中设置IP的DF(不分片)位。
WINDOW大小:检查返回包的窗口大小。特定操作系统反应的窗口大小基本是常数,例如,AIX 是唯一用0x3F25的),Microsoft 以及OpenBSD 与FreeBSD用的是0x402E。
ACK 序号识别:不同实现中ACK的值是不同的。例如,如果你送了一个FIN|PSH|URG 到一个关闭的TCP 端口。大多数实现会设置ACK 为你的初始序列数,而Windows 和一些傻打印机会送给你序列数加1。
在之后,Fyodor 和Ofir又分析和收集利用ICMP协议的操作系统特性来进行的主机系统判别,这种主动的识别方式都经过了大量的分析,原理和上面的TCP/IP协议识别相同,比如:用ICMP的地址掩码请求来探测SUN操作系统,对于ICMP地址掩码请求,只有少数操作系统会产生相应的应答,这些系统包括ULTRIX OpenVMS, Windows 95/98/98 SE/ME,
NT below SP 4, 和 SUN Solaris机器。但SUN对分片ICMP地址掩码请求的应答同其他操作系统不相同,这样就可以来识别SUN主机操作系统。
和主动的协议识别原理相同,Lance Spitzner在《Passive Fingerprinting》中提出了被动的协议识别,同样用来判别主机系统。这种办法主要集中考虑:
1、TTL的设置
2、WINDOW SIZE:操作系统设置的窗口大小
3、DF:操作系统是否设置分片位
4、TOS:操作系统设置的服务类型
对于TTL,对于一个操作系统来说一般是固定的,比如LINUX Kernel 2.2.x & 2.4.x的 TTL 字段值为 64,
FreeBSD 4.1, 4.0, 3.4; Sun Solaris 2.5.1, 2.6, 2.7, 2.8;的 TTL为 255 Windows NT,Windows 2000 的为 128等,同时将配合其他需验证的内容,比如:LINUX的窗口值是0x7D78,Solaris2.6-2.7的窗口值有几种0x2328,0x2238等等。我们以WIN2000为例,它的TTL为“128”,窗口大小在“17000-18000”这个范围内,并且设置分片位,即DF为1,
而操作系统设置的服务类型TOS为“0”,如果我们对接收的原始数据分析得到这样的结果,那么我们可以判断这是一个WIN2000的操作系统。
当然被动协议识别操作系统也需要分析各个操作系统的不同反馈属性,然后根据得到的信息同收集的属性相比较。比如多数系统使用DF位设置,但是有些系统如SCO和OPENBSD不使用这个DF标志,这样就可以用来识别一些没有设置DF位的操作系统。被动协议识别也可以用来判断远程代理防火墙,因为代理防火墙重建对客户的连接,它有它自身的特征代码,也可以用这样的办法来分析。
主动协议识别和被动协议识别需要进行大量的统计分析,虽然比最开始介绍的那些简单识别方法准确些,但是也并不能保证一定能够识别得到准确的操作系统类型。同时这两种方法主要区别就在于一个是主动,而一个是被动的,主动识别方式需要主动发送数据包,因此相对于那些安全设备来说,也比较容易识别这些数据包,同被动识别比较起来,隐蔽性稍微差些。
Reference:
1、《X - Remote ICMP Based OS Fingerprinting Techniques》
2、Phrack #57《ICMP based remote OS TCP/IP stack fingerprinting techniques》
3、Fyodor《Remote OS detection via TCP/IP Stack FingerPrinting》
4、Lance Spitzner《Passive Fingerprinting》

09 April

系统版本扫描(转)

FIN探测 -- 通过发送一个FIN数据包(或任何未设置ACK或SYN标记位的数据包)到一个打开的端口,并等待回应。RFC793定义的标准行为是“不”响  应,但诸如MS Windows、BSDi、CISCO、HP/UX、MVS和IRIX等操作系统会回应一个RESET包。大多数的探测器都使用了这项技术。

BOGUS(伪造)标记位探测 -- 据我所知,Queso是第一个使用这种更聪明技术的 探测器。它原理是在一个SYN数据包TCP头中设置未定义的TCP“标记”(64或128)。低于2.0.35版本的Linux内核会在回应包中保持这个 标记,而其它操作系统好象都没有这个问题。不过,有些操作系统当接收到一个SYN+BOGUS数据包时会复位连接。所以这种方法能够比较有效地识别出操作系统。 

TCP ISN 取样 -- 其原理是通过在操作系统对连接请求的回应中寻找TCP连接初 始化序列号的特征。目前可以区分的类别有传统的64K(旧UNIX系统 使用)、随机增加(新版本的Solaris、IRIX、FreeBSD、Digital UNIX、Cray和其它许多系统使用)、真正“随机”(Linux 2.0.*及更高版本、OpenVMS和新版本的AIX等操作系统使用)等。Windows平台(还有其它一些平台)使用“基于时间”方式产生的ISN会随着时间的 变化而有着相对固定的增长。不必说,最容易受到攻击的当然是老式的64K方式。而最受我们喜爱的当然是“固定”ISN!确实有些机器总是使用相同的ISN,如某些3Com集线器(使用0x83)和Apple LaserWriter打印机(使用0xC7001)。根据计算ISN的变化、最大公约数和其它一些有迹可循的规律,还可以将这些类别分得更细、更准确。 

“无碎片”标记位 -- 许多操作系统逐渐开始在它们发送的数据包中设置IP“不分 片(无碎片)”位。这对于提高传输性能有好处(虽然有时它很讨厌-- 这也是为什么nmap不对Solaris系统进行碎片探测的原因)。但并不是所有操作系统都有这个设置,或许并不并总是使用这个设置,因此通过留意这个标记位的设置可以收集到关于目标主机操作系统的更多有用信息。

TCP 初始化“窗口” -- 就是检查返回数据包的“窗口”大小。以前的探测器仅仅通 过RST数据包的非零“窗口”值来标识为“起源于BSD 4.4”。而象queso 和nmap这些新的探测器会记录确切的窗口值,因为该窗口随操作系统类型有较为稳定的数值。这种探测能够提供许多有用的信息,因为某些系统总是使用比较特殊的窗口值(例如,据我所知AIX是唯一使用0x3F25窗口值的操作系统)。而在声称“完全重写”的NT5的TCP堆栈中,Microsoft使用的窗口值总是0x402E。更有趣的是,这个数值同时也被OpenBSD和FreeBSD使用。

ACK值 -- 也许你认为ACK值总是很标准的,但事实上操作系统在ACK域值的实 现也有所不同。例如,假设向一个关闭的TCP端口发送一个FIN|PSH|URG包,许多操作系统会将ACK值设置为ISN值,但Windows和某些愚 蠢的打印机会设置为seq+1。如果向打开的端口发送SYN|FIN|URG|PSH包,Windows的返回值就会非常不确定。有时是seq序列号值,有时是S++,而有时回送的是一个似乎很随机性的数值。我们很怀疑为什么MS总是能写出这种莫名其妙的代码。

ICMP错误信息查询 -- 有些(聪明的)操作系统根据RFC 1812的建议对某些类型的错误信息发送频率作了限制。例如,Linux内核(在net/ipv4/icmp.h)限制发送“目标不可到达”信息次数为每4秒80次,如果超过 这个限制则会再减少1/4秒。一种测试方法是向高端随机UDP端口发送成批的数据包,并计算接收到的“目标不可到达”数据包的数量。在nmap中只有UDP端口扫描使用了这个技术。这种探测操作系统方法需要稍微长的时间,因为需要发送大量的数据包并等待它们的返回。这种数据包处理方式也会对网络性能造成某种程度的影响。

ICMP信息引用 -- RFC定义了一些ICMP错误信息格式。如对于一个端口不可到达信息,几乎所有操作系统都只回送IP请求头+8字节长度的包,但Solaris返回的包会稍微长一点,Linux则返回更长的包。这样即使操作系统没有任何监听任何端口,nmap仍然有可能确定Linux和Solaris操作系统的主机。

ICMP错误信息回显完整性 -- 我们在前面已谈到,机器必须根据接收到的数据包返回“端口不可到达”(如果确实是这样)数据包。有些操作系统会在初始化处理过程中弄乱了请求头,这样当你接收到这种数据包时会出现不正常。例如,AIX和BSDI返回的IP包中的“总长度”域会被设置为20字节(太长了)。某些BSDI、FreeBSD、OpenBSD、ULTRIX和VAX操作系统甚至会修改请求头中的IP ID值。另外,由于TTL值的改变导致校验和需要修改时,某些系统(如AIX、FreeBSD等)返回数据包的检验和会不正确或为0。有时这种情况也出现在UDP包检验和。总的说来,nmap使用了九种不同的ICMP错误信息探测技术来区分不同的操作系统。

服务类型(TOS) -- 对于ICMP的“端口不可到达”信息,经过对返回包的服务类型(TOS)值的检查,几乎所有的操作系统使用的是ICMP错误类型0,而Linux使用的值是0xC0。

片段(碎片)处理 -- 不同操作系统在处理IP片段重叠时采用了不同的方式。有些用新的内容覆盖旧的内容,而又有些是以旧的内容为优先。有很多探测方法能确定这些包是被如何重组的,从而能帮助确定操作系统类型。

TCP选项 -- 这是收集信息的最有效方法之一。其原因是: 
     1)它们通常真的是“可选的”,因此并不是所有的操作系统都使用它们。 
     2)向目标主机发送带有可选项标记的数据包时,如果操作系统支持这些选项,会在返回包中也设置这些标记。 
     3)可以一次在数据包中设置多个可选项,从而增加了探测的准确 度。 
     Nmap在几乎每一个探测数据包中都设置了如下选项: 


     Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops; 


     当接收到返回包时,检查返回了哪些选项,它们就是目标操作系统支持的选项。有些操作系统(如较新版本的FreeBSD)支持以上所有选项,而有些(如Linux 2.0.x)则几乎都不支持。Linux 2.1.x 内核支持以上所有选项。如果有几个操作系统支持相同的选项,可以通过选项的值来进行区 分。例如,如果向Linux机器发送一个很小的MSS值,它一般会将此MSS值返回,而其它系统则会返回不同数值。如果支持相同的选项,返回值也相同,又怎么办呢?仍然可以通过返回选项的顺序进行区分。如Solaris系统返回‘NNTNWME',而如果是Linux 2.1.122系统,相同的选项,相同的返回值,但顺序却有所不同:MENNTNW。 
     目前还没有其它操作系统探测工具利用TCP选项,但它确实非常有效! 
     另外还有其它一些选项也可用于进行探测,如T/TCP支持等。 
     上面我们讨论了操作系统类型探测的多种技术(除了某些攻击性方法外)。这些技术都在nmap扫描器中实现。Nmap扫描器收集了众多操作系统端口打开和关闭时的特征,支持目前流行的Linux、*BSD和Solaris 2.5.1/2.6多种操作系统。 
     目前版本的nmap扫描器从一个文件中读取操作系统特征模板。下面是一个实例:

 
     FingerPrint IRIX 6.2 - 6.4 # Thanks to Lamont Granquist 
     TSeq(Class=i800) 
     T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT) 
     T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) 
     T3(Resp=Y%DF=N%W=C000|EF2A%ACK=O%Flags=A%Ops=NNT) 
     T4(DF=N%W=0%ACK=O%Flags=R%Ops=) 
     T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=) 
     T6(DF=N%W=0%ACK=O%Flags=R%Ops=) 
     T7(DF=N%W=0%ACK=S%Flags=AR%Ops=) 
     PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) 


     让我们来看一下每一行的含义: 
     > FingerPrint IRIX 6.2 - 6.3 # Thanks to Lamont Granquist 
     它说明这是一个IRIX 6.2 - 6.3操作系统特征,注释指出该特征由Lamont Granquist提供。 


     > TSeq(Class=i800) 
     它说明ISN特征是"i800 class",即每一个新序列号比上一个序列号大800的整数倍。 


     > T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT) 
     T1代表test1。这个测试是向打开的端口发送带有多个TCP选项的SYN数据包。DF=N说明返回包的"Don't fragment"位必须没有设置。W=C000|EF2A说明返回包的窗口值必须为0xC000或0xEF2A。ACK=S++说明 返回包的ACK值必须为初始化序列号加1。Flags=AS说明返回包的ACK和SYN标记位必须被设置。Ops=MNWNNT说明返回包的TCP选项及其顺序必须为:


     > T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) 
     Test 2(第二个测试)向打开端口发送带有相同TCP选项的NULL(空)数据包。Resp=Y说明必须接收到返回包 Ops= 说明返回包中的所有TCP选项必须都没有被设置。‘%Ops='匹配任意TCP选项。

 
     > T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M) 
     Test 3(第三个测试)向打开端口发送带有TCP选项的SYN|FIN|URG|PSH数据包。

 
     > T4(DF=N%W=0%ACK=O%Flags=R%Ops=) 
     这是向打开端口发送ACK数据包。注意这里没有Resp=字符串。说明返回包不是必须的(例如数据包被丢弃或有
   防火墙)。 


     > T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=) 
     > T6(DF=N%W=0%ACK=O%Flags=R%Ops=) 
     > T7(DF=N%W=0%ACK=S%Flags=AR%Ops=) 
     以上测试是针对关闭端口的SYN、ACK和FIN|PSH|URG数据包测试,并设置了相同的TCP选项。

 
     > PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) 
     这个是对“端口不可到达”信息的测试。DF=N前面已经介绍过了。TOS=0说明IP服务类型域应为0。接着的两个是IP 包头总长度和返回IP包总长度(16进制值)。RID=E说明期望返回包RID值与发送的UDP包的值相同。RIPCK=E说明校验和应该正常(如果不正常则RIPCK=F)。UCK说明UDP包校验和也应该正常。ULEN=134是UDP包长度为0x134。DAT=E说 明正确返回UDP数据,这个是大多数情况下的缺省设置。


一些较为著名站点的扫描结果
     注:这些都是以前的扫描结果,仅供参考。不保证它现在仍然有效或准确。 
     # "Hacker" sites or (in a couple cases) sites that think they are 
     www.l0pht.com => OpenBSD 2.2 - 2.4 
     www.insecure.org => Linux 2.0.31-34 
     www.rhino9.ml.org => Windows 95/NT # No comment :) 
     www.technotronic.com => Linux 2.0.31-34 
     www.nmrc.org => FreeBSD 2.2.6 - 3.0 
     www.cultdeadcow.com => OpenBSD 2.2 - 2.4 
     www.kevinmitnick.com => Linux 2.0.31-34 # Free Kevin! 
     www.2600.com => FreeBSD 2.2.6 - 3.0 Beta 
     www.antionline.com => FreeBSD 2.2.6 - 3.0 Beta 
     www.rootshell.com => Linux 2.0.35 # Changed to OpenBSD after 
     # they got owned. 
     # Security vendors, consultants, etc. 
     www.repsec.com => Linux 2.0.35 
     www.iss.net => Linux 2.0.31-34 
     www.checkpoint.com => Solaris 2.5 - 2.51 
     www.infowar.com => Win95/NT 
     # Vendor loyalty to their OS 
     www.li.org => Linux 2.0.35 # Linux International 
     www.redhat.com => Linux 2.0.31-34 # I wonder what distribution :) 
     www.debian.org => Linux 2.0.35 
     www.linux.org => Linux 2.1.122 - 2.1.126 
     www.sgi.com => IRIX 6.2 - 6.4 
     www.netbsd.org => NetBSD 1.3X 
     www.openbsd.org => Solaris 2.6 # Ahem :) 
     www.freebsd.org => FreeBSD 2.2.6-3.0 Beta 
     # Ivy league 
     www.harvard.edu => Solaris 2.6 
     www.yale.edu => Solaris 2.5 - 2.51 
     www.caltech.edu => SunOS 4.1.2-4.1.4 # Hello! This is the 90's :) 
     www.stanford.edu => Solaris 2.6 
     www.mit.edu => Solaris 2.5 - 2.51 # Coincidence that so many good 
     # schools seem to like Sun? 
     # Perhaps it is the 40% 
     # .edu discount :) 
     www.berkeley.edu => UNIX OSF1 V 4.0,4.0B,4.0D 
     www.oxford.edu => Linux 2.0.33-34 # Rock on! 
     # Lamer sites 
     www.aol.com => IRIX 6.2 - 6.4 # No wonder they are so insecure :) 
     www.happyhacker.org => OpenBSD 2.2-2.4 # Sick of being owned, Carolyn? 
     # Even the most secure OS is 
     # useless in the hands of an 
     # incompetent admin. 
     # Misc 
     www.lwn.net => Linux 2.0.31-34 # This Linux news site rocks! 
     www.slashdot.org => Linux 2.1.122 - 2.1.126 
     www.whitehouse.gov => IRIX 5.3 
     sunsite.unc.edu => Solaris 2.6

08 April

第九届北工北航对抗赛 & 工大棋牌社大聚

     我的blog严重缺乏时效性……今天写的是4月5日的事情……

     自我感觉自从周MD写了《北京工业大学围棋往事》一文后,棋牌社群里就开始热闹起来。一帮毕业的没毕业的--当然大部分是已经毕业的--无聊份子开始回忆过去棋牌社围棋部的点点滴滴,我看得甚是有趣。恰巧上周六(4月5日)除了是王利哥和朱音的生日之外,还是浩浩荡荡的北工大围棋团体预备“血洗”北航的日子。

     说是“血洗”,确实是夸张了,这只能算我们一相情愿而已;历史上北工VS北航互有胜负,战绩上北工稍稍强一些。

     称这次工大阵容为“浩浩荡荡”确实不为过,10VS10的比赛我们去了18个人(算上啦啦队员和家属等),北航方面凑了半天也仅仅凑到9人……工大阵容中我见到了很多很多熟悉的面孔(说几个许久不见的):严天鹏严老,李娟李老,王磊王老,大侠;宛楠前辈,另有焦朗领衔的新生代。北航方面也有几个熟面孔,名字却叫不上来了。

     不知道北航方面最后是如何补充人才的,反正当大家纷纷入座时比赛变成了10VS10。由于“万恶”的孙X(你也可以称他为X诺)擅自排台次,把我分在了第四台,前五台的顺序是王昕、周MD、焦朗、我、严老,后边记不清楚了,依稀两位女侠:旷老和李老都上阵了。开赛之前,焦朗指了指我的对手和我说:“我在富士通的比赛上就输他了。”我笑着和我的对手对视了一眼后,发现彼此都认识--我的对手参加北工北航对抗赛的第一盘棋就是和我下的……貌似现在已经成为北航主力了呢,不知道棋力涨了多少?毕竟上一次交锋我可是胜了^^

     在掌声沉寂之后比赛正式开始,田玉超(二饼)拿着周MD的相机不停地闪阿闪……这盘棋自我感觉下得还是不错的,因为许久不下棋,行棋思路上有了很多的变化,感觉视野开阔了许多,不过与此同时的是计算力上出现了很多漏洞,直接导致接连发生两次重大误算……继又在官子上节节败退后,最终我执白惊险地以一又四分之一子取胜。(首回合工大6:4北航)

     第二场比赛在休息了10分钟后进行。这次我坚决不上场了,因为三年前我和李娟李老在棋牌社有一盘未下完的棋(下到熄灯了),这确实是一种遗憾,所以我一定要趁这个机会和李老下一盘!李老万般推脱之后满足了我这个愿望,不过可能是久疏战阵,感觉李老的棋不想从前那样强硬了,最终我执黑中盘胜。

     不得不说,北航人都是我们的兄弟,这点从小事上看的清清楚楚。由于对抗赛的规则是每人45分钟包干,超时判负,时间上还是紧凑的,常常出现一个人由于前期长考导致最终只剩下1、2分钟,而另一个人还剩15分钟的情况。这时我听到一个北航兄弟对他的对手说:“我不拍钟了,你别着急,下面的时间都算我的。”我很感动……想想在打“富士通杯”比赛的时候,当看到对方没时间的时候,多少人采用的都是拖延战术,不管棋下得多差,就是要活生生地把你耗死……相比之下北航兄弟们的素质就相当高尚了。最终第二回合结束,双方战成10:10平。

     算个大团圆的结局吧!其实谁赢谁输都是无所谓的,北工北航对抗赛举办到第九届,是两校共同努力的结果,大家在一起开心才是最重要的。

     照过“全家福”后,我们和北航兄弟们告别,开始工大棋牌社大聚之钱柜K歌之旅……

     小小描述一下:1、王昕唱歌是实力派的;2、张明野打了越洋电话过来;3、见到了99级的学姐;4、二饼唱了4次《夏天的味道》;5、王磊又吼了《光辉岁月》;6、严老酷爱蔡琴;7、孙诺女声再现;8、各种吃;9、其他其他,很多很多……

     呵呵,算我偷懒了吧,就写到这里,期待再聚~

03 April

北京工业大学围棋往事(连载中)

第一章 第一打手的诞生
作者:红翼(周游)

2008年3月,在第五届北邮-富士通杯大学生围棋团体赛的网络预选赛上,北京工业大学队四战四败,惨遭淘汰,这支昔日大学生围棋界的王者之师再也掩饰不住其没落的步伐了。

首届北邮-富士通杯大学生围棋团体赛亚军,以纯业余阵容力压北京大学和北京师范大学两支半专业的传统强队;“陈毅杯”大学生赛里,横空出世般出现在工大阵容里的朱阿逸二段;第三届北邮-富士通杯大学生围棋团体赛中连续狙击日本大学棋队,并最终将日本人挡在六强之外的壮举。这一幕幕仿佛就在昨天……

2000年9月,高考第一志愿落榜的我鬼使神差般地走进了北京工业大学。值得庆幸的是这里有个棋牌社团,里面着实有些“志同道合”的兄弟,可惜的是擅长围棋者少之又少,以五子连珠的爱好者居多。北工大围棋真正的黄金时代是从2001年开始的。

九月永远是北工大最热闹的季节,新生们好奇的身影随处可见,大四的“老鸟”们也勉为其难地出现在学校一阵子,大二大三的无聊们一边嗤笑着学弟学妹的青涩,一边憧憬着being学长的洒脱。一年一度的招新大会就在这种氛围里开始了。

此时,作为棋牌协会围棋部的部长我义不容辞地成为了招新的“苦力”之一。所谓的招新大会其实就是中午吃饭的时候,各个社团在第三食堂门口的马路两边(这里被称为三食路口,乃社家必争之地),支一个摊子,以海报、传单、礼品甚至走秀的传单美女来诱惑来往的学生加入社团。

棋牌社招揽生意的法宝则是一幅气势磅礴的海报(之所以磅礴,是因为海报上几乎囊括了所有棋牌类游戏)和几位顾盼生兮又伶牙俐齿的学姐。男生们则有的出去派发传单,有的给感兴趣的新人介绍,当然也有的趁机去找美女搭讪……

我一边浏览着报名表上报选围棋部的名字,一边留意着过往的人群。据可靠消息,这届2001的新生里面有一个强5段……

“吱”的一声,一辆“二八”单车停到了宣传摊前,车上一个黑黑瘦瘦的男生打量着棋牌社的海报。总算来了!“嘿,赶紧报名吧!”“你丫是这社的啊?”“对,赶紧签字来,回头叫你打比赛去。”“签字画押”之后,黑瘦男生正式成为了棋牌社的一员。

“这人就是你说的那个强5段?”黑瘦男生的样貌显然和宛楠社长心目中围棋高手的轮廓严重脱节。“对,就是他。”“他比你还厉害?”“比我强点应该。”……这个时候,除了我可能没有人意识到北京工业大学围棋的“第一打手”已经诞生了。

待续……

     更多内容请见http://blog.sina.com.cn/asyouknowme
28 März

搜到老大的旧文

     今天在网上google自己的名字(没事闲的),结果搜到老大的一篇旧文。老大的space已经不复存在,不曾想在google cache中还保留着一份,吾甚感欣慰啊~老大,小发很想念您老啊~

     特保存为图片以纪念

老大的旧文

18 März

以太网自动协商

     今天解决一个端口协商的BUG时,被人问住了(太丢人了……),在网上搜了一下发现自己没错!唉~对自己是越来越没自信了啊……靠!这可不行!

     以太网的自动协商原理和相关的网络测试
     自动协商是以太网中最受争议概念之一。它的出现到底是好是坏呢?这要看情况而定了。在你使用自动协商时,供应、驱动版本和管理员的选择,这些都是需要考虑的方面。
  什么是自动协商?
  802.3标准中的第28条是这样定义自动协商功能的:它允许一个设备向链路远端的设备通告自己所运行的工作方式,并且侦测远端通告的相应的运 行方式。自动协商的目的是给共享一条链路的两台设备提供一种交换信息的方法,并自动配置它们工作在最优能力下。
  照字面上来讲,自动协商就是一种在两台设备间达到可能的最大传输速率的方式。它允许设备用一种方式“讨论”可能的传输速率,然后选择双方可接受的最佳速率。它们使用叫做快速链路脉冲的FLP交换各自传输能力的通告。FLP可以让对端知道源端的传输能力是怎样的。当交换FLP时,两个站点根据以下从高到低的优先级侦测双方共有的最佳方式。
  1000BASE-T全双工
  1000BASE-T
  100BASE-T2 全双工
  100BASE-TX 全双工
  100BASE-T2
  100BASE-T4
  100BASE-TX
  10BASE-T 全双工
  10BASE-T
  例如,A和B正在自动协商,并且A具有10/100/1000全半双工的能力,但是B只有10/100全半双工的能力,这样双方共有的最高链路能力为100,全双工。一旦双方进行自动协商,链路就会运行在双方能够支持的最佳能力下。
  自动协商会产生什么问题?
  有关自动协商的大多数问题是由于有一方没有工作在自动协商方式。当一个站点工作在自动协商方式而另一方没有时,只有一方发送快速链路脉冲。另一方已经设定在特定的速率和双工方式下,这样就不会跟对端进行协商。他已经被强行设定,就不会再考虑他连接端的工作方式。
  由于强行设定的站点不会告诉正在协商的站点自己的速率和单双工方式,自动协商的站点就必须自己决定合适的速率和单双工方式来匹配对端,这叫做平行检测。协商站点监听从对端过来的链路脉冲能够辨别通信速率。10,100和1000Mbs以太网使用不同的信号方式,所以协商站点能识别对端的工作速率。
  然而,全半双工又是另外一回事了。因为强行设定的站点不进行协商,协商站点没有方法知道强行设定站点工作在哪种双工方式下。协商站点为了避免全半双工不匹配,根据802.3标准,它必需与强行站点使用相同的速率,但是工作在半双工方式下。不管速率如何(除了10Gig),半双工是以太网的默认方式。在许多情况下,这会产生全半双工不匹配问题。
  为了两端都达到全双工方式,要么两端都自动协商,要么两端都强行设定。
  务必不要一端自动协商,另一端强行设定。这会导致双工不匹配。建议把两端设置留在自动协商以减少人为错误。
  怎样才能知道全半双工不匹配问题?
  双工不匹配会在链路上产生冲突,因为一端可以同时发和收而另一端不能。全双工站点不可能和半双工站点很好的工作。在半双工站点一侧会产生冲突。受影响端口的重传,差的吞吐率和高错误数会损害链路性能。使用福禄克网络公司的OptiView查看时,会在交换机端口上显示错误。

很好

     很久没有写blog,手生得很;常常有写的冲动,冲动的时候却没有环境;如今有了环境却又不知道从何处下笔……

     突然听到了燕姿的《很好》,非常努力地回忆着第一次听这首歌的心情,却发现早已忘了许久;映在脑海的是我坐在166中学6班那个教室,那帮人。这世界上真的没有重新来过的机会么?我相信是有的,但现在的记忆不能带到过去,重新来过又和现在有什么关系呢?如果真的可以把记忆也带到过去,我想,炒股一定很赚吧^^。

     你现在过得好吗?

     很好

     祝你幸福

13 Januar

08年第一文

     忙忙碌碌、平平淡淡间,新的一年已经过了13天(看日历的时候确实微微吃了一惊)。貌似生活和一年前没有不同,吃饭、上班、工作、吃饭、加班、下班、刷道(RO中的一种道场挑战赛)、睡觉……反反复复,周而复始,让我已经淡忘了时间的流逝。细来想想蛮可怕的,既然昨天和今天一样,那经历昨天又有什么意义?

     既然生活单调,就拣几件现在想得起来的事情写写吧。

     充满“怨气”的圆明园

     说圆明园充满“怨气”,这话恐怕说得重了,不过自从上个月我父母去过那里过后,我确实是这么认为的。记得个把月前,BTV播过一期节目,讨论圆明园是否应该重建的问题,嘉宾分成两个阵营:“重建派”和“保留派”。当然,我家里也讨论过这个话题,均比较支持重建。我觉得节目中有个女嘉宾说得挺对,她说她得朋友来北京她一般都不会带着他们参观圆明园,什么东西都没有,就有几块充满历史的“石头”而已(是这个意思,不是原话)。阿阿,我不想在这里讨论这个,呵呵^^事情接下来是这样的,这期节目确实引起了我父母再游圆明园的一种愿望,于是二老上个月就去了,不但回来评价极差(传说整个园林就剩那几块充满历史的石头,但就这几块石头还专门收费了!),而且我妈还发烧了,烧了两天后我爸也发烧了……直到今天我爸病还没有好利索……唉,真不想说,圆明园阿,唉,怨气太重了……重建吧……

     躺在椅子上想起了父亲

     这件事情发生在公司,时间是中午午休的时候。本来我中午是没有午睡的习惯的,从幼儿园开始就开始翘午觉了。无奈这样一个不睡午觉的小伙被“万恶的加班制度”整得不得不睡午觉了--不睡的话就等着晚上10点开会的时候哈叱连天吧。不过我想说的不是这个,也不是因为因为睡午觉竟然把脚扭伤了(这个汗一下……),而是在倚靠在椅子的那一刹那想起了我父亲,想起了父亲带着10岁的我参加业余围棋段位赛的时候。那个时候每天比赛要下3盘棋,上午1盘,下午2盘。中午的时候父亲总是带着我找个教室(段位赛的地点在黑芝麻小学),把几个椅子拼在一起,强迫我睡午觉,我却是极不情愿的,迫于压力(呵呵)不得不假寐一下下阿(呵呵呵呵)。现在想起来父亲确实是用心良苦……父亲在我学围棋的过程中做了一件又一件平凡却伟大的事情,不,父母一直都在做平凡却伟大的事情,我的父母是这样,全世界的父母都是这样。爸爸妈妈,我爱你们!

     奇妙又恼人的checksum

     厄,其实应该说郁闷……上周五碰到了这样一个任务:要求在发送的tcp syn+ack包中增加一个options字段,8bytes就行。这么一个简单的任务……我靠,郁闷了我两天!问题就出在这个checksum上了(checksum叫校验和,用来保证发送的数据包是正确的)。感觉自己算得正确阿!怎么发出去对方看到抓到的数据包解析出来就是checksum fail……linux倒是有现成的计算checksum的函数,不过我也犟上了,一定要自己实现代码!不过也可能问题出在trailer上?突然想到的,貌似可能也许大概maybe……会有问题,呵呵^^

     0:4 and 2:7

     这个标题大家知道我要说什么了吧?对了,就是昨天晚上进行的国足VS汉堡、国奥VS拜仁两场比赛。太郁闷了,幸好我昨天就看了国奥那场,看了国足那场岂不更郁闷……国足这场我是听我父亲给我讲述和网上解说的。我只想用四个字形容国足:如丧考妣。又说重了,不过请原谅一个久久目睹你们失败的还在支持你们的不算铁杆球迷的球迷,在自己的博客宣泄一下自己的愤怒吧!我一直不赞成一直球队以一个完全防守的姿态出现在竞技场上。是的,也许有这样一句话,没有防守就没有冠军。但只会防守的球队没有激情!只会防守,破门的兴奋极限离你们将越来越远,远到无穷远。不过话又说回来,国足你真的会防守么?被人家灌了4个还好意思说自己是在打防守反击吗?呵呵呵呵,这是冷笑话吗?!再说国奥,恩,怎么说呢,现实是残酷的,因为你们被人家灌的比国足还多,不过,你们同样给我希望,当开场1分钟就失球的时候,我真的想骂你们。可2分钟闫项闯助攻朱挺进球的那刻,我知道你们在拼!实力上差距相当明显,我却看到了那股拼劲,于是我打算用一种包容的心情看这场球,尽管一直看到的是人家在戏耍我们的后防线,尽管看到了李玮峰漂亮的鱼跃冲顶乌龙球,尽管听到了现场球迷的嘘声,但最终我看到了两个进球,两个给我无比希望的进球。2:7这个比分,将来会不会变成2:5?3:3?7:2呢?我期待着!国奥加油!!

     呵呵,着08第一文就写到这吧^^明天将是7天前的重复,祝愿能在每一天结束的时候看到今天过得比昨天好,能在凌晨进入梦想的前,告诉自己,我一直在成长,是的,继续成长……

31 Dezember

2007逝去 && 2008奔来

     和数年前相同的天空,和数年前相同的名称,和数年前不同的心情……

     转眼2007已然剩下最后几十分钟了。不得不再次感叹时间如梭,当我还留恋初中那份纯真、高中那份真诚、大学那份欢愉的时候,霎时间,书桌前的台历又换了崭新的一本。

     回顾这一年走过的路,悲悲喜喜;从进入研究生考试考场的那一刻起,注定了这一年并不是一个完美的轮回。“思科网院杯大中华区比赛”是1月份的事情,也让07年开始有了欢乐,如今再看,仍然留恋那一段痛并快乐的日子。2、3、4月,是最幸福的日子……直到7月,开始走向职业,也许这并不是我期待的最好结局……

     上班的日子蛮没有在学校的日子那样缤纷多彩,也许称之为机械的生活比较恰当,在偶尔的聚会调济下勉强凑合。开始花自己的钞票却没有了那份潇洒,开始习惯拖着疲惫的身体走在漆黑的道路上,开始在睡前叹气,时常不奢求时间继续……

     总之,07年我没有交出一份令我自己满意的答卷,不过确实让我懂得一些东西,比如什么叫机会总给那些有准备的人……为什么我总是要摔倒才懂得看清自己,看清道路?

     我丢失了自己的理想,亦或是目标,变得庸散,不求进取……

     在这里自白并不丢人,丢人的是不能正视自己,确实,我一直在逃避……

     不如将短短的过去format,重新燃起些许斗志,我还年轻!

     08年,我要有质的飞跃,在工作上,还是学习上--确实,仍然要学习,工作越久越有此感受--都要上升到新的阶段,考些证吧,不怕花钱:P;我会再次挑战研究生考试,亦或雅思,给我一个机会,我会再次挑战思科!

     2008,来吧!

P.S. 凯阳恭祝大家新年快乐!

04 Dezember

拜读大J的《Hi~Angel!》有感

     先对Jay说声抱歉,您老上个月25号写的博我今日才读到,确实有点不仗义,枉我曾信誓旦旦地承诺在你每一篇博第一个留下评论。

     不过,读过您老的这篇博之后,我非常愤怒!

     这TMD叫什么理由!

      仅仅因为年龄年轻了些,就这一个狗屁理由,就在两人之间筑起难以逾越的高墙?就能扯断小拇指上神圣的红线?就能告别彼此的默契、依靠、微笑?就能结束这段感情了么?

     难以置信!

     说来我没有什么资格对这件事情进行评论--我也因为一个狗屁理由结束了自己的爱--但这不能阻止我宣泄我的愤怒!时至今日,我仍然认为两个人在一起最重要的是相互包容,人们常常在乎的是喜悦的分享,但面对彼此之间的不如意甚至相背的价值观人生观时,能否给予对方最宽大的包容才决定着两个人是否能牵着手一直走下去。

     告别一个人可以有一千一万个理由,但想和一个人在一起,仅仅因为爱你。

     Jay,那些客套话我不想对你说了,随便baidu一下都比我说的好。我想说的是,你应该感谢她,她给你的都是财富;另外你应该正视你自己,看清楚不论你18岁还是30岁你丫都是男人!何况你还是军人!拿不出点气魄来像什么样子!

     因此,不是你的年龄阻止了这场感情,而是你对自己的胆怯,束缚了你的身体!

     我语言激烈了些,但都是说给你听的,不怕说的重了,因为咱们是哥们;你爱护的那个女孩我不认识,所以我也不会去说她作的怎样。    

     当你像周日那样拿出100%态度对待一件事情,我很惊讶你的转变,我认为那个样子的你,是条汉子!

     也同样给你祝福,祝福你一切顺利,像男人一样去战斗!

03 Dezember

我们一起见证

     仅以此篇blog,纪念一位陪伴我们7年的伙伴,在今日选择了退役……

     晓阳那个斯伯丁篮球

     说来晓阳对它的感情势必要比我更深,但我也同样喜爱着它,这个陪我们一起欢乐的伙伴。喜欢它空心入框时的声音,喜欢它砸在篮框上跳来跳去的样子,喜欢它粘着手腕的感觉……这是我们的伙伴!

     我们有幸见证了它退役的时刻,同样见证的,是我们仍然在东单篮球场上“混”在一起~

     我很欣慰阿!

     记得成为上班族后,周末活动第一次开始是在5月分,也许更早一点;当时还是夏天,如今已然入冬。这个活动竟然风雨无阻地坚持了下来,也同样希望它能一直延续下去……

     上传图片花了我很长时间,现在睡意正浓,考虑到明日,阿不,今日还要上班就不写了,一切尽在不言中……

     不知道我们是无形中给nike做了广告,还是nike那句广告词就是写给我们的:

     我们一起见证

21 November

重要的是方式还是态度?

  最近的工作任务蛮重,上个星期几乎天天都在加班,昨天、前天也是,不知不觉中时间就接近晚上11点,仍舍不得扔下手头的事情,任务确实是很紧的。

  不过这也没什么稀奇的--整个项目组都在加班。所以与其说是为了达到目标而强迫自己留下来,不如说是身边同事的工作态度感染了我,让我同样拥有着危机感。

  北京的夜在这个时节仍不是那么寒冷,至少我走出公司大门时是这么觉得。冷清的街道、仍挂着几片枯叶的树,再加上风吹过时发出的“呜呜”声……说实话我很喜欢。我想这个场景应该非常适合孤单的男人独行,身着风衣,任风吹乱头发,再听一首听不懂的音乐--最好不是摇滚。

  有时走着走着真的就不想走了,好想打个电话,听一个好听的声音,然后告诉那个声音,我下班了……

  ---

  终于开始和哥几个一起租房,貌似工作后住址就不停在变,洋桥、西三旗、三元桥再到现在的霍营,奔波得蛮不爽的。新居是火熊女友家的房子,还不错,只是感觉贵了些--花自己挣的钱果然心很疼。龙跃苑小区,距离城铁霍营站大约5分钟路程,还算方便。因为是新居,感觉屋里缺少些生气,还没达到人房合一吧^^。新居的暖气是自己烧的,第一个晚上为了节省我们竟然没有烧,结果夜里被冻醒两次,昨天终于决定烧了,感觉和没烧差不了多少……慢慢调整适应吧。

  Live...

13 November

稍有成就感

  两个星期半,我用了12个工作日的时间完成了曾以为遥遥无期的任务--限制BT流量。

  还是有点不敢相信,怎么就封住了呢?肯定有哪个方面我还没有想到,无孔不入的BT不应该就如此败在我的手下,肯定是没找到它的“杀手锏”……唉,一句话,我有点不放心^^

  说说方法吧。

  其实很简单,我作的工作也不是很多;最开始设计的时候查阅了大量论文,及相关资料。貌似网上的方法效果都不是绝对的好,唯一敢拍着自己胸脯说没问题的好像只有思科的NBAR--这一度让我对思科的崇拜达到了顶点。想到的方法无外乎这么几种:

  封端口。说实话这种方法在“高科技”的“现代”是彻底的沦落了,BT默认的6881~6889可能只会在教科书上出现了,随便一个新版BT软件都非常智能地自己给自己扔个色子,随机打开一个端口。用BT软件自己的口吻说一句:封端口?大哥,开玩笑呢吧!

  封BT种子下载。这种方法的意思是禁止用户从网上下载种子文件。恩……我要是打包哩?更何况我在BT@china上下个种子抓包一看,文件路径都没出现过(加密了),没招阿。唉,说点能实现的……

  封tracker服务器地址。tracker服务器?干啥的?tracker服务器是用来维护下载者信息滴,简单点,一个人打开了一个种子,那么他先要连上tracker服务器去取得一个用户列表,这个列表记录着当前谁正在下载同一个文件,于是乎,这个人的客户端再和那些人(的客户端)取得联系,P2P正式开始!恩!封tracker服务器就是禁止客户端去取得用户列表,从而限制BT流量。不过这种方案有两大缺点:1、不可能搜集到全部的tracker服务器的ip地址;2、这个世界上出现了一个叫做DHT的东东。

  继续扫盲,什么是DHT?DHT是Distributed Hash Table(分布式哈希表,好像是),可以完全不连接tracker服务器,也可以很好的下载;具体一点,在DHT的环境下,每个BT使用者都是一个节点(node),每个节点之间互相保有路由记录,可以互联互通,所以大家互相找来找去,只要和任何一个已经在DHT网络中的节点连接上,客户端就会找到更多的节点,从而P2P正式开始!

  吼吼^^说下一个方法:应用层Payload匹配。Payload翻译成有效载荷吧?应用层的意思是比较的时候要拆包到数据部分。说白了,就是比较特征码!好理解了吧?特征码http://l7-filter.sourceforge.net/layer7-protocols/protocols/bittorrent.pat上有,这个:

  ^(\x13bittorrent protocol|azver\x01$|get /scrape\?info_hash=)|d1:ad2:id20:|\x08'7P\)[RP]

  正则表达式,吼吼^^,按理说知道了特征码接下来就非常简单了,比较报文数据部分,出现特征码就“卡碴”,没出现就PASS。比较费劲的就是我只找到其中3个码对应的位置……\x13bittorrent protocolget /scrape\?info_hash=d1:ad2:id20:\x13bittorrent protocol出现在peer之间三次握手之后的第一次连接中,我只在TCP报文中找到过,UDP没有,不知道iptables源码中为什么UDP也要比较,之前的BT客户端版本只要识别这个特征码就能完全防范BT了(当然现在不行);get /scrape\?info_hash=这个我找到的是GET \######?info_hash=,######可能是announce,可能是announce.php,还可能是%20,还可能什么都没有……这个码出现在BT客户端前往tracker服务器取用户列表的时候;第三个d1:ad2:id20:出现在UDP报文中,打开BT客户端的时候就会有N个(主要是没统计过)UDP连接出现,源端口是自己随机出来的那个端口,实话实说,我不是非常清楚地知道这些UDP报文是作什么用的。剩下的2个特征码我没有找到相应的位置……

  最后一个方法:传输层流量分析。这个方法深了,是经常出现在论文、期刊上的方法,是非常有创造性的方法,也同样是我们讨论过后觉得最不靠谱的方法。我就简单说说,这个方法基于两个启发式的判断(翻译自《A Longitudinal Study of P2P traffic Classification》):

  1、如果两个主机间的连接同时使用了TCP和UDP连接,则这个连接极有可能是一个P2P连接;具备这样的特性也可能是在线游戏、DNS、NFS等,但这些都可以根据知名端口来进行判断。

  2、<IP,Port>对;由于P2P端口都是随机的,所以极不可能出现很多主机使用相同端口这样的情况出现,换个说法,连接到本地P2P客户端的端口数目(distinct)应该和连接到它的IP数目(distinct)非常接近。

  恩,怎么作我不解释了,大家自己悟吧,反正这种方法看来还在研究,要是有人觉得可行就给我留言,咱们一起探讨。

  阿,对了,说说思科那个NBAR的方法--我怎么理解怎么说了阿。我觉得思科是收集了各种各样的服务需要的端口号,收集得非常全面,然后对这些服务进行分级,比如http等算1级,SQL算2级、VDOLive算5级等等(多少级都是我随口说的阿),然后作QOS,对未知的端口仅分配很少的带宽;可以说,这样做间接地封掉了BT。……不过又好像不太对,唉,不懂。

  我最后选用的是封tracker服务器地址和应用层Payload匹配这两个方法。封tracker服务器地址是为了“提速”,毕竟这个在网络层比较就足够了,如果是BT流量直接就扔掉。按理仅用这两种方法应该被DHT干掉,并且对加密无解,实际的测试结果是干掉了DHT(汗),只是偶尔受到长效种子“骚扰”,加密那个没测到。客户端方面来说,测试了bitcomit,bitspirit,wagaa和迅雷,前三个都没有多少流量,后一个……不得不说,迅雷确实强,P2P不通人家直接整别的(可能是Http,BT peer一个都没有连上但下载速度飚到100k)……我服了,以后我自己BT也用迅雷了……

  方法中肯定有不完善或者不正确的地方,高人请指出哈,能独立基本完成P2P限制的任务,确实很高兴^^看来,没白抽自己,哈哈!

10 November

有点重生的感觉

     我,讨打的命,永远会在没有鞭子的时候荒废时间,而在失败之后重新振作,我算看透了,这样迟早要坏事呦~

     给自己这三个月的生活打30分,心散了……

     必须要宣泄!

     对着镜子猛抽自己20个耳光之后,我,重生了!

18 Oktober

别了,小屋

     昨天没有回到我那西三旗的小屋,这次是真的不会再回去了,不免有些伤感。

     想当初第一次走进你,我是那么的不满意:一间平房,屋顶是才支起来的,因为这间房子已许久没有人住过;空气中一股发霉的味道,没有电视,没有空调,没有洗衣机,没有厨房,没有洗手间……真是什么都没有呵~真不知道当时怎么狠心住下来的,也许,是看到父母不辞辛劳地在屋子里面忙上忙下吧,仿佛在这住的是他们,而不是我……

     尽管过去许久,今天仍能想到父母当时的样子,另我感动……

     曾经记叙过的那两个生活在这个小院的疯子,如今我却想起他们,其中一个已经许久再未见过了,另一位却也整日缩在屋里不出来,再难见到两个人坐在胡同两旁,对吹啤酒,被一帮不懂事的小孩欺负却仍面露笑容,甚至,连狗都欺负他们……

     在小屋里,我能听到久违的吆喝声:卖鸡蛋、卖大米……我常常抱怨这些人为什么不能再晚些出来,偏偏要打扰我的美梦,简直比闹钟还可恶呵~试想这声音,自从定居高楼大厦,多久没有听到了?

     一个人,我几点回到小屋都不会听到抱怨,打开灯,看到的只有一个人的影子。这就是我的小屋,夏天它很热,如今却又很冷。门是没有玻璃的,有时让我感到自己就是谁在外面,确实是越来越冷了。

     于是,我决定离开,小屋能陪我过夏,却难以随我过冬,我怀念你的一切,也许你也会怀念我吧?是吗?

     最后一次把小屋打扫得干干净净……再见吧,小屋!

P.S. 十月十八,生日快乐!