網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 1.2.1 蠻力攻擊與字典攻擊 構(gòu)造一個(gè)Crack程序,有兩種方法可選擇,一種是使用蠻力攻擊,另一種是字典攻擊。下面,分別估算一下它們的效率。 Unix一共是 [0x00~0xff] 共128個(gè)字符,小于0x20 的都是控制符,不能輸入為 口令, 0x7f 為轉(zhuǎn)義符, 不能輸入。 那么總共128- 32 - 1 = 95 個(gè)字符可作為口令的字符。 即10(數(shù)字)+33(標(biāo)點(diǎn)符號(hào))+26*2(大小寫字母) = 95個(gè)。 首先估算蠻力攻擊的嘗試次數(shù)。很顯然,該值為m的n次冪。其中,基數(shù)m為可能使用的字符集的大小;冪次n為口令的長(zhǎng)度。分下面幾種情形討論: 僅使用字母的組合序列,則m = 26*2 = 52。 使用字母數(shù)字的組合序列,則m = 52 + 10 = 62。 使用字母數(shù)字以及特殊字符的組合序列,則m = 95 表1.3列舉幾個(gè)例子,計(jì)算所需的嘗試次數(shù)K,對(duì)其數(shù)值大小得到一個(gè)較確切的印象。 表1.3 不同字符集與長(zhǎng)度的口令嘗試次數(shù) M N K 52 5 38,0204,032 52 6 19,770,609,664 52 7 1,028,071,702,528 62 5 916,132,832 62 6 56,800,235,584 62 7 3,521,614,606,208 95 5 7,737,809,375 95 6 735,091,890,625 95 7 69,833,729,609,375 從該表中可以看出,隨著字符集的擴(kuò)大與口令長(zhǎng)度的增大,所需的嘗試次數(shù)明顯增加。選擇盡量大的字符集和較長(zhǎng)的口令,能獲得較高的口令安全。 但如果5個(gè)字母是一個(gè)常用漢字的拼音或英文單詞,估算一下設(shè)常用詞10000條, 從10000個(gè)常用詞中取一個(gè)詞與任意一個(gè)數(shù)字字符組合成口令,即:10000* 10 = 100000 (10萬種可能性)。因此,借助于資料字典的幫助,可以使Crack的效率大大提高。 1.2.2 數(shù)據(jù)字典 目前,在因特網(wǎng)上,有一些數(shù)據(jù)字典可以下載,包含的條目從1萬到幾十萬條。數(shù)據(jù)字典一般囊括了常用的單詞。 也許有人認(rèn)為:我的口令毫無規(guī)律可言,字典中不會(huì)有,因此,計(jì)算機(jī)是破譯不了的,那就大錯(cuò)特錯(cuò)了。有很多專門生成字典的程序,比如:Dictmake、txt2dict等等。以dictmake為例:?jiǎn)?dòng)程序后,計(jì)算機(jī)會(huì)要求輸入最小口令長(zhǎng)度、最大口令長(zhǎng)度、口令包含的小寫字符、大寫字符、數(shù)字、有沒有空格、含不含標(biāo)點(diǎn)符號(hào)和特殊字符等一系列的問題。當(dāng)回答完了計(jì)算機(jī)提出的問題后,計(jì)算機(jī)就會(huì)按照給定的條件自動(dòng)將所有的組合方式列出來并存到文件中,而這個(gè)文件就是資料字典。 1.2.3 讀寫口令文件的一組子程序 為了對(duì)/etc/passwd文件進(jìn)行方便的存取,我編寫了一組訪問/etc/passwd文件的子程序。可讀取文件的用戶條目入口項(xiàng)或?qū)懭胄碌挠脩魲l目等。這組子程序可用于編寫Crack程序。 Getpwuid()函數(shù)即可從/etc/passwd文件中獲取指定的UID的用戶條目。Getpwnam()函數(shù)則對(duì)于指定的登錄名,在/etc/passwd文件檢索用戶條目。getpwent(),setpwent(),endpwent()等函數(shù)則可對(duì)口令文件作后續(xù)處理。 Getpwuid()與Getpwnam()返回一指向passwd結(jié)構(gòu)的指針,該結(jié)構(gòu)定義如下: struct passwd { char * pw_name; /* 登錄名 */ char * pw_passwd; /* 加密后的口令 */ uid_t pw_uid; /* UID */ gid_t pw_gid; /* GID */ char * pw_age; /* 代理信息 */ char * pw_comment; /* 注釋 */ char * pw_gecos; char * pw_dir; /* 主目錄 */ char * pw_shell; /* 使用的shell */ char * pw_shell; /* 使用的shell */ 首次調(diào)用getpwent(),可打開/etc/passwd文件并返回指向文件中第一個(gè)用戶條目的指針,并保持調(diào)用之間文件的打開狀態(tài),再調(diào)用getpwent()便可順序地返回口令文件中的各用戶條目。而調(diào)用setpwent() 又可把口令文件的指針重新置為文件的開始處,最后使用完口令文件后調(diào)用endpwent() 可關(guān)閉口令文件。 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!