按月归档: 5月 2007

Hash 算法及其应用

什么是 Hash
Hash 的重要特性
Hash 函数的实现
主要的 Hash 算法
Hash 算法的安全问题
Hash 算法的应用
结 论

Hash, 一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不 同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

数学表述为:h = H(M) ,其中H( )–单向散列函数,M–任意长度明文,h–固定长度散列值。

在信息安全领域中应用的Hash算法,还需要满足其他关键特性:

第 一当然是单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相 应的M=H-1(h)不可行。这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的 Hash 又被称为"消息摘要(message digest)",就是要求能方便的将"消息"进行"摘要",但在"摘要"中无法得到比"摘要"本身更多的关于"消息"的信息。

第二是抗 冲突性(collision-resistant),即在统计上无法产生2个散列值相同的预映射。给定M,计算上无法找到M’,满足H(M)=H(M’) ,此谓弱抗冲突性;计算上也难以寻找一对任意的M和M’,使满足H(M)=H(M’) ,此谓强抗冲突性。要求"强抗冲突性"主要是为了防范所谓"生日攻击(birthday attack)",在一个10人的团体中,你能找到和你生日相同的人的概率是2.4%,而在同一团体中,有2人生日相同的概率是11.7%。类似的,当预 映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到"相同生日"的人。

第三是映射分布均匀性和差分分布均匀性,散列结果 中,为 0 的 bit 和为 1 的 bit ,其总数应该大致相等;输入中一个 bit 的变化,散列结果中将有一半以上的 bit 改变,这又叫做"雪崩效应(avalanche effect)";要实现使散列结果中出现 1bit 的变化,则输入中至少有一半以上的 bit 必须发生变化。其实质是必须使输入中每一个 bit 的信息,尽量均匀的反映到输出的每一个 bit 上去;输出中的每一个 bit,都是输入中尽可能多 bit 的信息一起作用的结果。

Damgard 和 Merkle 定义了所谓“压缩函数(compression function)”,就是将一个固定长度输入,变换成较短的固定长度的输出,这对密码学实践上 Hash 函数的设计产生了很大的影响。Hash函数就是被设计为基于通过特定压缩函数的不断重复“压缩”输入的分组和前一次压缩处理的结果的过程,直到整个消息都 被压缩完毕,最后的输出作为整个消息的散列值。尽管还缺乏严格的证明,但绝大多数业界的研究者都同意,如果压缩函数是安全的,那么以上述形式散列任意长度 的消息也将是安全的。这就是所谓 Damgard/Merkle 结构:

在下图中,任意长度的消息被分拆成符合压缩函数输入要求的分组, 最后一个分组可能需要在末尾添上特定的填充字节,这些分组将被顺序处理,除了第一个消息分组将与散列初始化值一起作为压缩函数的输入外,当前分组将和前一 个分组的压缩函数输出一起被作为这一次压缩的输入,而其输出又将被作为下一个分组压缩函数输入的一部分,直到最后一个压缩函数的输出,将被作为整个消息散 列的结果。

MD5 和 SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。

1) MD4
MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现–它是基于 32 位操作数的位操作来实现的。它的安全性不像RSA那样基于数学假设,尽管 Den Boer、Bosselaers 和 Dobbertin 很快就用分析和差分成功的攻击了它3轮变换中的 2 轮,证明了它并不像期望的那样安全,但它的整个算法并没有真正被破解过,Rivest 也很快进行了改进。

下面是一些MD4散列结果的例子:

MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0
MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24
MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d
MD4 ("message digest") = d9130a8164549fe818874806e1c7014b
MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9
MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4
MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536

2) MD5
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。它较MD4所做的改进是:

1) 加入了第四轮
2) 每一步都有唯一的加法常数;
3) 第二轮中的G函数从((X ∧ Y) ∨ (X ∧ Z) ∨ (Y ∧ Z)) 变为 ((X ∧ Z) ∨ (Y ∧ ~Z))以减小其对称性;
4) 每一步都加入了前一步的结果,以加快"雪崩效应";
5) 改变了第2轮和第3轮中访问输入子分组的顺序,减小了形式的相似程度;
6) 近似优化了每轮的循环左移位移量,以期加快"雪崩效应",各轮的循环左移都不同。
尽管MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。

消 息首先被拆成若干个512位的分组,其中最后512位一个分组是“消息尾+填充字节(100…0)+64 位消息长度”,以确保对于不同长度的消息,该分组不相同。64位消息长度的限制导致了MD5安全的输入长度必须小于264bit,因为大于64位的长度信 息将被忽略。而4个32位寄存器字初始化为A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210, 它们将始终参与运算并形成最终的散列结果。

接着各个512位消息分组以16个32位字的形式进入算法的主循环,512位消息分组的个数据决定了循环的次数。主循环有4轮,每轮分别用到了非线性函数

F(X, Y, Z) = (X ∧ Y) ∨ (~X ∧ Z)
G(X, Y, Z) = (X ∧ Z) ∨ (Y ∧ ~Z)
H(X, Y, Z) =X +Y + Z
I(X, Y, Z) = X + (Y ∨ ~Z)
这4 轮变换是对进入主循环的512位消息分组的16个32位字分别进行如下操作:将A、B、C、D的副本a、b、c、d中的3个经F、G、H、I运算后的结果 与第4个相加,再加上32位字和一个32位字的加法常数,并将所得之值循环左移若干位,最后将所得结果加上a、b、c、d之一,并回送至ABCD,由此完 成一次循环。

所用的加法常数由这样一张表T来定义,其中i为1…64,T是i的正弦绝对值之4294967296次方的整数部分,这样做是为了通过正弦函数和幂函数来进一步消除变换中的线性性。

当所有512位分组都运算完毕后,ABCD的级联将被输出为MD5散列的结果。下面是一些MD5散列结果的例子:

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a
参考相应RFC文档可以得到MD4、MD5算法的详细描述和算法的C源代码。

3) SHA1 及其他
SHA1是由NIST NSA设计为同DSA一起使用的,访问http://www.itl.nist.gov/fipspubs可以得到它的详细规范–"FIPS PUB 180-1 SECURE HASH STANDARD"。它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。因为它将产生160bit的散列值,因此它有5个参与运算的32位寄存器字,消息分组和填充方式与MD5 相同,主循环也同样是4轮,但每轮进行20次操作,非线性运算、移位和加法运算也与MD5类似,但非线性函数、加法常数和循环左移操作的设计有一些区别, 可以参考上面提到的规范来了解这些细节。下面是一些SHA1散列结果的例子:

SHA1 ("abc") = a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d
SHA1 ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") = 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1
其 他一些知名的Hash算法还有MD2、N-Hash、RIPE-MD、HAVAL等等。上面提到的这些都属于"纯"Hash算法。还有另2类Hash算 法,一类就是基于对称分组算法的单向散列算法,典型的例子是基于DES的所谓Davies-Meyer算法,另外还有经IDEA改进的Davies- Meyer算法,它们两者目前都被认为是安全的算法。另一类是基于模运算/离散对数的,也就是基于公开密钥算法的,但因为其运算开销太大,而缺乏很好的应 用前景。

没有通过分析和差分攻击考验的算法,大多都已经夭折在实验室里了,因此,如果目前流行的Hash算法能完全符合 密码学意义上的单向性和抗冲突性,就保证了只有穷举,才是破坏Hash运算安全特性的唯一方法。为了对抗弱抗冲突性,我们可能要穷举个数和散列值空间长度 一样大的输入,即尝试2128或2160个不同的输入,目前一台高档个人电脑可能需要1025年才能完成这一艰巨的工作,即使是最高端的并行系统,这也不 是在几千年里的干得完的事。而因为"生日攻击"有效的降低了需要穷举的空间,将其降低为大约1.2*264或1.2*280,所以,强抗冲突性是决定 Hash算法安全性的关键。

在NIST新的 Advanced Encryption Standard (AES)中,使用了长度为128、192、256bit 的密钥,因此相应的设计了 SHA256、SHA384、SHA512,它们将提供更好的安全性。

Hash算法在信息安全方面的应用主要体现在以下的3个方面:

1) 文件校验
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。它常被用在下面的2种情况下:

第 一是文件传送后的校验,将得到的目标文件计算 md5 checksum,与源文件的md5 checksum 比对,由两者 md5 checksum 的一致性,可以从统计上保证2个文件的每一个码元也是完全相同的。这可以检验文件传输过程中是否出现错误,更重要的是可以保证文件在传输过程中未被恶意篡 改。一个很典型的应用是ftp服务,用户可以用来保证多次断点续传,特别是从镜像站点下载的文件的正确性。

更出色的解决方法是所谓的代码 签名,文件的提供者在提供文件的同时,提供对文件Hash值用自己的代码签名密钥进行数字签名的值,及自己的代码签名证书。文件的接受者不仅能验证文件的 完整性,还可以依据自己对证书签发者和证书拥有者的信任程度,决定是否接受该文件。浏览器在下载运行插件和java小程序时,使用的就是这样的模式。

第 二是用作保存二进制文件系统的数字指纹,以便检测文件系统是否未经允许的被修改。不少系统管理/系统安全软件都提供这一文件系统完整性评估的功能,在系统 初始安装完毕后,建立对文件系统的基础校验和数据库,因为散列校验和的长度很小,它们可以方便的被存放在容量很小的存储介质上。此后,可以定期或根据需 要,再次计算文件系统的校验和,一旦发现与原来保存的值有不匹配,说明该文件已经被非法修改,或者是被病毒感染,或者被木马程序替代。TripWire就 提供了一个此类应用的典型例子。

更完美的方法是使用"MAC"。"MAC" 是一个与Hash密切相关的名词,即信息鉴权码(Message Authority Code)。它是与密钥相关的Hash值,必须拥有该密钥才能检验该Hash值。文件系统的数字指纹也许会被保存在不可信任的介质上,只对拥有该密钥者提 供可鉴别性。并且在文件的数字指纹有可能需要被修改的情况下,只有密钥的拥有者可以计算出新的散列值,而企图破坏文件完整性者却不能得逞。

2) 数字签名
Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。

在这种签名协议中,双方必须事先协商好双方都支持的Hash函数和签名算法。

签名方先对该数据文件进行计算其散列值,然后再对很短的散列值结果–如Md5是16个字节,SHA1是20字节,用非对称算法进行数字签名操作。对方在验证签名时,也是先对该数据文件进行计算其散列值,然后再用非对称算法验证数字签名。

对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点:

首先,数据文件本身可以同它的散列值分开保存,签名验证也可以脱离数据文件本身的存在而进行。

再 者,有些情况下签名密钥可能与解密密钥是同一个,也就是说,如果对一个数据文件签名,与对其进行非对称的解密操作是相同的操作,这是相当危险的,恶意的破 坏者可能将一个试图骗你将其解密的文件,充当一个要求你签名的文件发送给你。因此,在对任何数据文件进行数字签名时,只有对其Hash值进行签名才是安全 的。

3) 鉴权协议
如下的鉴权协议又被称作"挑战–认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

需 要鉴权的一方,向将被鉴权的一方发送随机串(“挑战”),被鉴权方将该随机串和自己的鉴权口令字一起进行 Hash 运算后,返还鉴权方,鉴权方将收到的Hash值与在己端用该随机串和对方的鉴权口令字进行 Hash 运算的结果相比较(“认证”),如相同,则可在统计上认为对方拥有该口令字,即通过鉴权。

POP3协议中就有这一应用的典型例子:

S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK maildrop has 1 message (369 octets)
在 上面的一段POP3协议会话中,双方都共享的对称密钥(鉴权口令字)是tanstaaf,服务器发出的挑战是< 1896.697170952@dbc.mtview.ca.us>,客户端对挑战的应答是MD5("< 1896.697170952@dbc.mtview.ca.us>tanstaaf") = c4c9334bac560ecc979e58001b3e22fb,这个正确的应答使其通过了认证。

散列算法长期以来一直在计算机科学中大量应用,随着现代密码学的发展,单向散列函数已经成为信息安全领域中一个重要的结构模块,我们有理由深入研究其设计理论和应用方法。

(金诺 · Panzer)

Read: 658

嗅探原理与反嗅探技术详解

渗透实验室:大皮球

一.嗅探器的基础知识
1.1 什么是嗅探器?

嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。

可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据, 嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。

计 算机的嗅探器比起电话窃听器,有他独特的优势: 很多的计算机网络采用的是“共享媒体"。 也就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们称 这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode) 。 尽管如此,这种“共享” 的技术发展的很快,慢慢转向“交换” 技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。

1.2嗅探器是如何工作的

1.2.1如何窃听网络上的信息

刚才说了,以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。

正是因为这样的原因,以太网卡都构造了硬件的“过滤器”这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身MAC地址不符合的信息。

嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。

1.2.2什么是以太网的MAC地址

MAC:Media Access Control.

由 于大量的计算机在以太网内“共享“数据流,所以必须有一个统一的办法用来区分传递给不同计算机的数据流的。这种问题不会发生在拨号用户身上,因为计算机会 假定一切数据都由你发动给modem然后通过电话线传送出去。可是,当你发送数据到以太网上的时候,你必须弄清楚,哪台计算机是你发送数据的对象。的确, 现在有大量的双向通讯程序出现了,看上去,他们好像只会在两台机器内交换信息,可是你要明白,以太网的信息是共享的,其他用户,其实一样接收到了你发送的 数据,只不过是被过滤器给忽略掉了。

MAC地址是由一组6个16进制数组成的,它存在于每一块以太网卡中。后面的章节将告诉你如何查看自己计算机的MAC地址。

如 果你对网络结构不太熟悉,建议参考一下OSI 7-Layer Model,这将有助于你理解后面的东西以太网所使用的协议主要是TCP/IP,并且TCP/IP也用于其他的网络模型(比如拨号用户,他们并不是处于一 个以太网环境中)。举例一下,很多的小团体计算机用户都为实现文件和打印共享,安装了“NetBEUI” 因为它不是基于TCP/IP协议的, 所以来自于网络的黑客一样无法得知他们的设备情况。

基于Raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送一个Raw数据给以太网,你必须先做一些事情,让以太网能够理解你的意思。这有点类似于邮寄信件的方法,你不可能直接把一封信投递出去,你必须先装信封,写地址,贴邮票,网络上的传输也是这样的。

下面给出一个简单的图示,有助于你理解数据传送的原理:

_________

/………

/..Internet.

+—–+ +—-+………….+—–+

|UserA|—–|路由|………….|UserB|

+—–+ ^ +—-+………….+—–+

| ………../

| ———/

+——+

|嗅探器|

+——+

UserA IP 地址: 10.0.0.23
UserB IP 地址: 192.168.100.54

现在知道UserA要于UserB进行计算机通讯,UserA需要为10.0.0.23到192.168.100.54的通讯建立一个IP包

这个IP包在网络上传输,它必须能够穿透路由器。因此, UserA必须首先提交这个包给路由器。由每个路由器考查目地IP地址然后决定传送路径。

UserA 所知道的只是本地与路由的连接,和UserB的IP地址。UserA并不清楚网络的结构情况和路由走向。

UserA必须告诉路由预备发送的数据包的情况,以太网数据传输结构大概是这样的:

+–+–+–+–+–+–+

| 目标 MAC |

+–+–+–+–+–+–+

| 源 MAC |

+–+–+–+–+–+–+

|08 00|

+–+–+———–+

| |

. .

. IP 包 .

. .

| |

+–+–+–+–+—–+

| CRC校验 |

+–+–+–+–+

理 解一下这个结构,UserA的计算机建立了一个包假设它由100个字节的长度(我们假设一下,20 个字节是IP信息,20个字节是TCP信息,还有60个字节为传送的数据)。现在把这个包发给以太网,放14个字节在目地MAC地址之前,源MAC地址, 还要置一个0x0800的标记,他指示出了TCP/IP栈后的数据结构。同时,也附加了4个字节用于做CRC校验 (CRC校验用来检查传输数据的正确性)。

现在发送数据到网络。

所有在网内的计算机通过适配器都能够发现这个数据 片,其中也包括路由适配器,嗅探器和其他一些机器。通常,适配器都具有一块芯片用来做结构比较的,检查结构中的目地MAC地址和自己的MAC地址,如果不 相同,则适配器会丢弃这个结构。这个操作会由硬件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。

当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。查找0x8000标记,然后对这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。

设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个 结构,则嗅探器无论如何也无法检测到这个结构的。

1.3.1 MAC地址的格式是什么?

以 太网卡的MAC地址是一组48比特的数字,这48比特分为两个部分组成,前面的24比特用于表示以太网卡的寄主,后面的24比特是一组序列号,是由寄主进 行支派的。这样可以担保没有任何两块网卡的MAC地址是相同的(当然可以通过特殊的方法实现)。如果出现相同的地址,将发生问题,所有这一点是非常重要 的。这24比特被称之为OUI(Organizationally Unique Identifier)。

可是,OUI的真实长度只有22比特,还有两个比特用于其他:一个比特用来校验是否是广播或者多播地址,另一个比特用来分配本地执行地址(一些网络允许管理员针对具体情况再分配MAC地址)。

举 个例子,你的MAC地址在网络中表示为 03 00 00 00 00 01 。第一个字节所包含的值二进制表示方法为00000011。 可以看到,最后两个比特都被置为真值。他指定了一个多播模式,向所有的计算机进行广播,使用了“NetBEUI”协议(一般的,在Windows计算机的 网络中,文件共享传输等是不使用TCP/IP协议的)。.

1.3.2 我如何得到自己计算机的MAC地址?

Win9x

Win9x自带的这个程序将告诉你答案:“winipcfg.exe”

WinNT

在命令行的状态下运行这个命令:"ipconfig /all"

它会显示出你的MAC网卡地址,下面是一个例子:

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : bigball

Primary DNS Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Hybrid

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Legend/D-Link DFE-530TX PCI Fast Eth

ernet Adapter (Rev B)

Physical Address. . . . . . . . . : 00-50-BA-25-5D-E8

DHCP Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.10.254

Subnet Mask . . . . . . . . . . . : 255.255.128.0

Default Gateway . . . . . . . . . : 192.168.10.3

Ethernet adapter SC12001:

Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet

Linux

运行“ifconfig”。结果如下:

eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3E

inet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:1137249 errors:0 dropped:0 overruns:0

TX packets:994976 errors:0 dropped:0 overruns:0

Interrupt:5 Base address:0x300

Solaris

用 “arp” 或者 “netstat -p” 命令

1.3.3我如何才能知道有那些计算机和我的MAC地址直接关联?

对于WinNT和Unix机器,可以直接使用“arp -a”查看。

1.3.4我能够改变我的MAC地址吗?

可以。简单的说一下:

第一种方法,你要做地址欺骗,因为MAC地址是数据包结构的一部分, 因此,当你向以太网发送一个数据包的时候,你可以覆盖源始的MAC信息。

第二种方法,很多网卡允许在一定的时间内修改内部的MAC地址。

第的三种方法, 你可以通过重新烧录EEPROM来实现MAC地址的修改。但是这种方法要求你必须有特定的硬件设备和适用的芯片才能修改,而且这种方法将永远的修改你的MAC地址。

二.反嗅探技术
2.1我如何才能检测网内是否存在有嗅探程序?

理论上,嗅探程序是不可能被检测出来的,因为嗅探程序是一种被动的接收程序,属于被动触发的,它只会收集数据包,而不发送出任何数据,尽管如此,嗅探程序有时候还是能够被检测出来的。

一个嗅探程序,不会发送任何数据,但是当它安装在一台正常的局域网内的计算机上的时候会产生一些数据流。举个例子,它能发出一个请求,始DNS根据IP地址进行反相序列查找。

下面一种简单的检测方法:

ping 方法

很多的嗅探器程序,如果你发送一个请求给哪台有嗅探程序的机器,它将作出应答

说明:

1. 怀疑IP地址为10.0.0.1的机器装有嗅探程序,它的MAC地址确定为00-40-05-A4-79-32.

2. 确保机器是在这个局域网中间。

3. 现在修改MAC地址为00-40-05-A4-79-33.

4. 现在用ping命令ping这个IP地址。

5. 没有任何人能够看到发送的数据包,因为每台计算机的MAC地址无法与这个数据包中的目地MAC不符,所以,这个包应该会被丢弃。

6. 如果你看到了应答,说明这个MAC包没有被丢弃,也就是说,很有可能有嗅探器存在。

现 在,这种方法已经得到了广泛的推崇和宣扬,新一代的黑客们也学会了在他们的代码中加入虚拟的MAC地址过滤器很多的计算机操作系统(比如Windows) 都支持MAC过滤器(很多过虑器只检查MAC的第一个字节,这样一来,MAC地址FF-00-00-00-00-00和FF-FF-FF-FF-FF- FF就没有区别了。(广播地址消息会被所有的计算机所接收)。这种技术通常会用在交换模型的以太网中。当交换机发现一个未知的MAC地址的时候,它会执行 类似“flood”的操作,把这个包发送给每个节点。

2.2本机嗅探程序的检测

本机嗅探的程序检测方法比较简单,只要检查一下网卡是否处于混杂模式就可以了,在Linux下,这个比较容易实现,而在Windows平台上,并没有现成的函数可供我们实现这个功能,我们来用一点小技巧:

#include

#define MAX_PACK_LEN 65535

#define MAX_HOSTNAME_LAN 255

#pragma comment (lib , "ws2_32.lib")

int main()

{

SOCKET SockRaw,Sock;

WSADATA wsaData;

int ret=0;

struct sockaddr_in sAddr,addr;

char RecvBuf[MAX_PACK_LEN];

char FAR name[MAX_HOSTNAME_LAN];

struct hostent FAR * pHostent;

char *Buf=(char *)malloc(128);

int settimeout=1000;//这里我们设置了一秒钟超时

printf("UNSniffer for Win2k v1.0nPower by BigBallnHomePage:http://www.patching.net/liumynEmail:liumy@patching.netnOicq:9388920nnChecking your system ,wait a moment please…n");

WSAStartup(MAKEWORD(2,2),&wsaData);

//建立一条RawSocket

SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);

再建立一条UDP

Sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

memset(&sAddr,0,sizeof(sAddr));

memset(&addr,0,sizeof(addr));

sAddr.sin_family=AF_INET;

sAddr.sin_port=htons(5257);

addr.sin_family=AF_INET;

addr.sin_port=htons(5258);

//把IP地址指向本机

addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

memset(RecvBuf,0, sizeof(RecvBuf));

pHostent=malloc(sizeof(struct hostent));

gethostname(name, MAX_HOSTNAME_LAN);

pHostent=gethostbyname(name);

//取得自己的IP地址

memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

free(pHostent);

//绑定一个本机的接收端口

bind(SockRaw, (struct sockaddr *)&sAddr, sizeof(sAddr));

//虚连接到本机的一个未打开的端口

connect(Sock,(struct sockaddr *)&addr,sizeof(addr));

Buf="1234567890!@#$%^&*";

//设置超时

setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)&settimeout,sizeof(int));

//向虚连接端口发送一个数据包

send(Sock,Buf,strlen(Buf),0);

//使用SockRaw尝试接收这个数据包

ret=recv(SockRaw,RecvBuf,sizeof(RecvBuf),0);

if(ret==SOCKET_ERROR || ret==0)

printf("No found any sniffer in your system!n");

else

{

//进行ChkSum

if(Buf=="1234567890!@#$%^&*")

printf("Warning!!! Found sniffer!!!n");

}

closesocket(Sock);

closesocket(SockRaw);

free(pHostent);

free(Buf);

WSACleanup();

return 0;

}

Read: 691

找工作! gangbadiesu~!!!

(TNND 本来是我同学 还玩得很好的那种,说这边有项目,叫我过来搞…哪知道过来后又叫我坐火车去吉林通化那边,再到白山..原来是搞直销…郁闷…去那待了2天听了几堂课….不干…走人….丫的..浪费老子近千块钱…顶他个肺啊…还是回北京找工作吧…现在回乙膊恢 栏墒裁戳?…原来的活都托给我哥做了..唉…..)

4月28号

呀呀…又到首都了…大城市呀…….

嗯…找工作…找工作….怎么办怎么办?……

这可不像我们那个小地方,走上门问就行了….况且….走上门问的那是个什么档次的工作场所呀

再说了….北京啷个大,,,走打落啦啷个办撒…

嗯嗯….. 姜哥给我说了上智联(zhaopin.com)看看,还真有不少…
(姜哥是我网上的朋友…对我很照顾…很感谢他…)

真是不少…是太多了…

开始还不知道该挑哪个呢…..搜索一下….网页设计相关的….

自己能达标的不是很多     不过捏     姜哥他又说了…那些都是唬人的 些那些要求的人或许都不懂的说

嗯嗯….既然如此…..那不管了…..注册了个帐号….

重新搜索一次….全选….全部申请…..

哇哈哈…谁有我强….反正资料里我都写清楚我会什么,能干什么了撒

反正撒大网 总能捞到鱼吧…

嗯…每天如此…

第二天下午 …还是没消息…没消息…郁闷了…..

这哈子姜哥给我来电话了 … 说半壁店那边有家网吧在招聘网管…据说是包住 还是怎么的…

眼下我要解决的也正是生活问题啊…不管了 去撞撞 虽然我不想做网管

…. 嗯…请坐电梯上三楼?….上就上嘛…

网星在线…装修挺好的嘛…嗯…不慌,,,先熟悉一下环境, 交了十块钱押金(心疼啊…)

…随便挑了台机器坐下…嗯…机器也挺好…P4 2.8 1G内存 7300GT的显卡 呀呀的…

开好机了…登录界面上写了个网站的地址…二维科技?…汗…登录好 去看看

怎么说也算是同行…看看北京这大地方人家的系统是咋个搞法的….

嗯…?     招贤纳士?      招人呢.?…嘿嘿 应该招技术员的吧…     直接在这种公司做可比在网吧强多了

还真有…条件全部符合…. 找QQ….加了…啊欧…不在线…不管 发个留言吧…

诶?…在呢….扯了一会…..薪水才1000块…不包吃住……那还不如个网管….

这边随便租个地下室也不少于200啊….不过相比网管我比较喜欢这个…..

算了….明天去面试…瞧瞧去…

不知道干什么….嗯…找工作要紧….再上智联上看看去…呀 …有消息

有两条只是常规回复….通知我已经收到我的申请而已…第三条是一家做P2P播放器的

要求根据他们现有的网站内容根据个人能力设计一个主页….

我晕…搞设计?…不是我的强项啊….算了…再看下一家

汗…标题就是     “请速来面试”…..     不知道是我非常符合他们的需要呢 还是他们想在放假前把人招着

看内容再说….哦 是一家做保健养生的公司….网站做得很烂….一看就出自菜鸟之手 嘿嘿…

相比之下原来我也算半个高手了…先偷笑一会

嗯…..上班时间是早上10点 – 12点 下午 2点 至 5点

嗯…已经5点半了…不管 打个电话去看看…希望他们还有人在公司…

嘟….嘟….嘟……..没人接….

唉..郁闷那…..

第二天早上 8点     我就直接往他们给的地址出发了….(之前可是查了好久的地图..)

额…到中坞村了…..好烂…..不过旁边的清华慧谷挺先进…不知道是不是在里面呢…..

晃荡晃荡去….没招着…..好热呀…这天….

继续晃荡….附近好像根本没他们说那什么玉泉山南路嘛!!!

继续…..嗯……进中坞村看看去……

找了半天没找到…..什么中坞新村我也没看到啊…

最后没办法 只好找了个大爷问了一下….

就给我指了西面…叫我一直朝西走..有一群小楼的地方…汗…东西这概念在我们南方人脑子里可不是很好啊…

还好他给我指了方向….冲啊!!!!

找啊找….嗯…发现了….原来是个小区..不过有围墙……绕了10分钟…总算绕到正门了….原来我从这经过了N次….. 我看那有块牌子写着某某汽修厂…就一直没进去….郁闷…从大路上也看不出里面有什么房子啊….唉..修那么高的围墙干嘛呀 你说

有门卫…不能随便进呀….. 先去问问是不是在里面

哦….还真是….呵呵…总算找到啦….我都快累死啦…找到的时候都是2点过了…午饭就找了家面馆随便吃了碗刀削面…..好无味….

嗯…到了…….嗯…和网站上的照片一样….外面很多竹条条包着的大粽子… 呵呵

呀…门在哪呢….我可是近视呀…走近看看….嗯? 有人呢 人家先问了…小伙子 有什么事呀?

我说 我是来应聘的….”啊? 应聘的呀 , 我们都放假了 你是来应聘什么的呀?”     网页设计师啊,,你们不是昨天才给我发的信息么? 叫我速来…

这时候出现了另一位….年轻一点的 接替了那么大妈…

等我把情况说清楚以后 她把我带到了间办公室里…嗯…接待室吧..

然后给了我张表叫我填 然后就不知道找谁去了…我想应该是BOSS吧….不过听名字是男的….

我填啊填….说起简历这东西….我之前就没填过….除了去广东的时候在一家网吧应聘网管的时候随手写过一张…….这拿起笔来我都是手抖的呀…天气又热…我在太阳底下晒了那么旧…都快熟了…

我看我放在桌子上的手下面都全是汗….手上全是汗..郁闷…搽搽吧…搽哪啊….我衣服又是白的…裤子不吸汗…随便在裤子上抹了两把…就埋头开始写简历…

不一会就进来个男的…嗯 应该就是那个大姐去叫的那位吧

写完了以后…我随口跟他打了声招呼..得到他确认以后我就将简历叫给了他…

他稍稍看了一下

就跟我谈了起来…就问了一下我的工作经验啊什么的…

然后就问我的对薪金要求的底线…..我当时填的是4000 的期望薪金….

不过想了想…现在工作对我很重要…不管了…随便说了个2500 因为姜哥在那边也是2000左右

然后他继续跟我谈待遇问题….包吃,不过每天会从工资里扣1.5元,不管你吃不吃….

然后有宿舍的..

但是工资呢      就低了….他给我说有3个月试用期…

试用期薪水是 800~2000 ..看他的意思…我估计在1000左右吧

然后叫我给他看看作品….

嗯….程序嘛他不懂…我也没空间放..而且也没现成的…

回去做一个再给他吧..不过我说的是回去找找..我说在我硬盘里的….

哎呀呀…头大啊…临时赶工…当天晚上跑到网星…包宿…继续包宿…

这机器好 装修好 还有空调 呵呵 挺好的 不过北京这地方太TMD讨厌了 包宿比我们那边高了2倍..

比市里可是高了近3倍呀…郁闷     15块..心疼…

一时没什么想法….N天没摸电脑了…PS更是放下好久了…唉…

不知道怎么做….去看看他们网站吧….嗯..算了…

随便找个素材做好了…我也选绿色….做个公益宣传页?….呵呵 谁知道呢…先乱画吧

嗯嗯…慢慢成型了…哎呀…没有内容…算了算了…反正都是绿色健康风格的…干脆就把他们站的内容放点

过来好了 就用他们站做素材

花了4个小时..真辛苦啊….算是差不多了…不过没什么内容…只好随便找了点图填充了一下…呵呵

自我感觉还不错….(图在相册里有)

…发了邮件给他们….到底是哪个邮箱啊…..bjdlybj@163.com(北京动力源保健?) bjdlbjy 北京动力保健院?….管他呢…两个都发…

汗…有一个是错的….163发不出去..呵呵…

那么应该是另一个了嘛…

第二天早上赶紧给他们打电话….哦….面试我的那个家伙在开会呢…(他姓李)

只好再等等了…我突然想起来…会不会是我邮箱写错了….

拿出他给我写的条子…汗….还真写错了….

赶紧进邮箱再转发…..呼…差点搞砸老…嘿嘿…

下午再打电话过去….呵呵 应该行了吧…叫我周一去面试…

他当时给我说的是 如果作品看了还行的话他会通知我到时候叫我跟他上级谈…

看来应该是没问题了…..

等….等…..等…..待续

============================        5   月   7    号       =================================

今天面试了,我早上去…他们一直在开会…我从9点20左右一直等到12点过…

很郁闷…

然后,好不容易等到了他们所谓的董事长…(一肥婆..)

然后..拿着我的简历就开始说了….

首先…开门见山 …..这个 ….2500的工资是绝对不可能的…..

我那会有点凉了…2500在这个行业里面绝对不高….

不过冲着那吃住都包的情况….忍了…反正又没打算做长久…

我给她说 这个没事,先看看您觉得我有多少能力,这个是可以调整的嘛..

哎…心里狠操N次…..

然后这个话题就结束了….然后就扯啊…什么…

“这个,网站这个东西吗,工程还是蛮庞大的,一个人肯定是无法完成的是吧?肯定是一个团队来做吧?”

本来我想说…这个,我看现在公司的网站好像也没什么复杂的地方,我一个人应该可以自如应付了…

…但我一看旁边 ,,就一开始面试我那个….好像无意中得知他就是这公司搞网络的…也就是有可能是未来的同事….考虑这个问题….嗯,嗯,,,不能得罪人家….

只好应声…对对,,这个肯定的,肯定得一个团队来做..

还没等我发表完我的意见,她又接着说…所以,我们要先了解你的能力有多少,才好决定你的薪水水平…

我先看看你做的那个设计吧….(原来她还没看过…晕)

然后把电脑打开….看看…嗯嗯….

然后就叫我陈述我的设计理念….

我汗…大汗….2,3个小时做的东西能有什么精髓的东西? HOHO 再说我设计本来就不行…

只好胡乱扯了一点…..那个人象征生命,,,活力,,,那个齿轮象征什么动力之类…又把为什么那么布局跟她说了…

她开始评判了….嗯…这个…你这个太乱…太杂..什么什么….反正忽悠了我半天…..

郁闷…搞得很有文化…很有深度…很懂…很明白….郁闷 …我非常郁闷….

然后叫我3天之内再做个作品出来 能突出特色…吸引人..什么什么…

然后说什么…一大堆的….

我有点晕了…不打算搞这个的…就跟她说….”这个,,,您应该知道,我主要是做程序,应该是主要负责网站的功能实现部分的…”…

汗..她又来了….貌似吃定我了…

“可你简历上写得很全面嘛,而且即使你是做程序的,你也要根美工沟通对不对…你要怎么怎么…&^%$^%@!3,………我们要的是人才…”..

听到她后面那句,,,”我们要的是人才的时候…”    我就想K她了…..不想出钱还要人才….而且还要超全能的…

比美工还要美工的程序员…..我日….就那么点$$$     ,,,     她是不是穷疯了…

不过想到生活问题…我又忍了…..

嗯…只好说…”这样吧,,我试试…”

本来我打算回去了….她说…”这样,你要是去网吧不方便的话,可以在我们这做,我可以提供你电脑…”

然后她就闪了…看来是叫那个…就一开始接待我那个…李SIR…呵呵 …就是有可能我未来同事的那位..

给我安排了….嗯…我想了想…反正做个图嘛..也花不了多少时间…就在他们那做吧..不过我要先去吃饭..

那”李SIR” 也说了…额..电脑我还要整理一台给你…这样..你先去吃饭吧..一会再来….

…..我就等这句话呢…哎..没品…我还以为他们会请我吃饭呢….呵呵…..

我赶紧飞到路口那一家小面馆叫了家凉面……额…突然想到在吉林吃那个甜不甜酸不酸,辣不辣咸不咸的凉面….汗…不过人家已经做了…算了算了….

嗯…面来了….味道还行…比吉林那个好吃多了….虽然还是没我们贵州的强…嘿嘿….

到吃饱整个过程也就15分钟左右吧…

我又回去…回到那间接待室…(准备给我用的电脑就放这地方…)  

就看到他们俩(网络部是两个人…另一个人没怎么接触..就不介绍啦..)

拿着一块网卡,一块内存在那比划什么….我凑过去一看…天…还SD的内存呀…

嗯?…那家伙(李)好像听到我说话了…凑过来问我,你知道这是什么?

我还以为他考我呢….额….”内存啊 ,应该是现代256M的…”…

…他突然转头把内存递给另一个家伙..说:”这是内存..”;;;;

我大汗…原来他们俩琢磨半天….就没搞清楚那玩意是内存啊….我的天….

本来就觉得他们俩菜,,没想到这么菜,,,无敌了….
怎么这年头混干饭这么好混..有真本事的反而混不出头呢?

接着他又给我说那台电脑上不了网…线接不到路由上,,,线不够长…

刚好我想了想也不想在他们那做….很烦,,而且姜哥还等我回去搬家呢….

我就回去了….心情无比郁闷….

啊啊啊…郁闷的一天呀……

下午 6点

搬家了……..地址: 三环新城    7栋….19楼…4单元 ? 大概这地方吧…

额…搬东西好累…..

刚准备换拖鞋休息一下….突然发现..呀…拖鞋呢……大汗…大汗….

我的拖鞋没带过来…..10快钱呀呀呀………重点是我很喜欢…..挺漂漂的….

赶紧下楼…坐公车回去….郁闷….回到那拿到拖鞋…都8点过了(我大概7点出去的,在楼下都等了20分钟的车)

…..果然北京是大地方啊…..等车…等车….呀?….

102呢?….不停?….过一辆不要紧…下一辆还有呢…

106?…..也不停…..汗….搞什么….

等过了N辆以后…我猛然发现…路线牌上写的….102,106 末班车…20:00   

我曰……太郁闷了…太郁闷了….

咋办?…先坐车到前面一点吧…看有没有其他车过去…多换几次车也可以….

等我到了定慧北桥的时候,我惊讶的发现…耶….车…车在哪……5555….

往三环的车貌似已经没有了………….只好给姜哥打电话…今天晚上看来只有在网吧过了….

哎…命苦啊…..找到网吧的时候….23点…..

我发出这篇文章的时候刚好是…0:00

…..待续…..待续…..待续…..待续…..待续

Read: 727

前世积蓄500次的回眸,才换来今世的檫间而过.

有个年轻美丽的女孩,出身豪门,家产丰厚,又多才多艺,日子过得很好,媒婆也快把她家的门槛给踩烂了,但她一直不想结婚,因为她觉得还没见到她真正想要嫁的那个男孩。
直到有一天,她去一个庙会散心,於万千拥挤的人群中,看见了一个年轻的男人,不用多说什么,反正女孩觉得那个男人就是她苦苦等待的结果了。可惜, 庙会太挤了,她无法走到那个男人的身边,就这样眼睁睁的看著那个男人消失在人群中。后来的两年里,女孩四处去寻找那个男人,但这人就像蒸发了一样,无影无 踪。女孩每天都向佛祖祈祷,希望能再见到那个男人。她的诚心打动了佛祖,佛祖显灵了。
佛祖说:"你想再看到那个男人吗?"
女孩说:"是的!我只想再看他一眼!"
佛祖:"你要放弃你现在的一切,包括爱你的家人和幸福的生活。"
女孩:"我能放弃!"
佛祖:"你还必须修炼五百年道行,才能见他一面。你不后悔??"
女孩:"我不后悔!"
女孩变成了一块大石头,躺在荒郊野外,四百多年的风吹日晒,苦不堪言,但女孩都觉得没什么,难受的是这四百多年都没看到一个人,看不见一点点希望,这让她都快崩溃了。
最后一年,一个采石队来了,看中了她的巨大,把她凿成一块巨大的条石,运进了城里,他们正在建一座石桥,於是,女孩变成了石桥的护栏。
就在石桥建成的第一天,女孩就看见了,那个她等了五百年的男人!他行色匆匆,像有什么急事,很快地从石桥的正中走过了,当然,他不会发觉有一块石头正目不转睛地望著他。男人又一次消失了。
再次出现的是佛祖。
佛祖:"你满意了吗?"
女孩:"不!为什么?为什么我只是桥的护栏?如果我被铺在桥的正中,我就能碰到他了,我就能摸他一下!"
佛祖:"你想摸他一下?那你还得修炼五百年!"
女孩:"我愿意!"
佛祖:"你吃了这么多苦,不后悔?"
女孩:"不后悔!"
女孩变成了一棵大树,立在一条人来人往的官道上,这里每天都有很多人经过,女孩每天都在近处观望,但这更难受,因为无数次满怀希望的看见一个人走 来,又无数次希望破灭。不是有前五百年的修炼,相信女孩早就崩溃了!日子一天天的过去,女孩的心逐渐平静了,她知道,不到最后一天,他是不会出现的。又是 一个五百年啊!最后一天,女孩知道他会来了,但她的心中竟然不再激动。 来了!他来了!他还是穿著他最喜欢的白色长衫,脸还是那么俊美,女孩痴痴地望著他。这一次,他没有急匆匆的走过,因为,天太热了。他注意到路边有一棵大 树,那浓密的树荫很诱人,休息一下吧,他这样想。他走到大树脚下,靠著树根,微微的闭上了双眼,他睡著了。女孩摸到他了!他就靠在她的身边!但是,她无法 告诉他,这千年的相思。她只有尽力把树荫聚集起来,为他挡住毒辣的阳光。千年的柔情啊!男人只是小睡了一刻,因为他还有事要办,他站起身来,拍拍长衫上的 灰尘,在动身的前一刻,他回头看了看这棵大树,又微微地抚摸了一下树干,大概是为了感谢大树为他带来清凉吧。然后,他头也不回地走了! 就在他消失在她的视线的那一刻,佛祖又出现了。
佛祖:"你是不是还想做他的妻子?那你还得修炼。"
女孩平静地打断了佛祖的话:"我是很想,但是不必了。"
佛祖:"哦?"
女孩:"这样已经很好了,爱他,并不一定要做他的妻子。"
佛祖:"哦!"
女孩:"他现在的妻子也像我这样受过苦吗?"
佛祖微微地点点头。
女孩微微一笑:"我也能做到的,但是不必了。"
就在这一刻,女孩发现佛祖微微地叹了一口气,或者是说,佛祖轻轻地松了一口气。
女孩有几分诧异:"佛祖也有心事?"
佛祖的脸上绽开了一个笑容:因为这样很好,有个男孩可以少等一千年了,他为了能够看你一眼,已经修炼了两千年。"
生命总是平衡的,以一种我们了解或是不了解的方式。

Read: 557

不知道谁写的 不错

这是生命中最辉煌、最奢侈、最肆无忌惮的季节。
这一年,额头上没有生活忧伤的皱纹,
手心里还满攥着大把的青春,
为个性而歌唱,为生命而率真;
对爱情,已经走过了纯真、痴迷的羞涩时代,
对生活仍怀有极大的憧憬,并毫不经心地挥霍着生活。
这一年,停留在单纯和成熟的临界点

Read: 823