主頁(yè) > 知識(shí)庫(kù) > python滲透測(cè)試linux密碼激活的示例

python滲透測(cè)試linux密碼激活的示例

熱門(mén)標(biāo)簽:地圖標(biāo)注線上如何操作 開(kāi)封語(yǔ)音外呼系統(tǒng)代理商 河北防封卡電銷(xiāo)卡 開(kāi)封自動(dòng)外呼系統(tǒng)怎么收費(fèi) 天津電話機(jī)器人公司 400電話辦理哪種 應(yīng)電話機(jī)器人打電話違法嗎 電銷(xiāo)機(jī)器人的風(fēng)險(xiǎn) 手機(jī)網(wǎng)頁(yè)嵌入地圖標(biāo)注位置

上篇文章給大家介紹過(guò) Python腳本破解Linux口令(crypt模塊)    感興趣的朋友點(diǎn)擊查看。

linux密碼破解

這段代碼通過(guò)分別讀取兩個(gè)文件,一個(gè)為加密口令文件(cryptPass),另一個(gè)為用于猜測(cè)的字典文件(key.txt)。
在testPass()函數(shù)中讀取字典文件,并通過(guò)crypt.crypt()進(jìn)行加密,加密時(shí)需要一個(gè)明文密碼以及兩個(gè)字節(jié)salt(加密口令的前兩個(gè)字母),通過(guò)salt和明文密碼加密形成 cryptWord。
最后將cryptWord和cryptPass進(jìn)行對(duì)比,如果相等,則這個(gè)word就是該用戶的密碼,否則不是。

先看crypt的示例

可以看到鹽是添加在密文的前兩位的,所以將加密口令的前兩位提取出來(lái)為salt即可。

在Linux系統(tǒng)中,用戶的密碼被加密存儲(chǔ)在了 /etc/shadow 文件中
如下是 /etc/shadow中root用戶的字段

密碼部分的格式為:$id$salt$encrypted
id是指用的哈希算法,id為1是MD5,id為5是SHA-256,id為6是SHA-512
salt 為鹽值
encrypted 為hash值,這里的hash值是密碼和鹽值一起加密之后得到的

編程之前準(zhǔn)備:
1、創(chuàng)建密碼字典key.txt 。
2、我們將 /etc/shadow 文件復(fù)制到python腳本所在目錄,修改文件名為 shadow.txt

import crypt   ##導(dǎo)入Linux口令加密庫(kù)
def testPass(cryptPass):
    salt=cryptPass[cryptPass.find("$"):cryptPass.rfind("$")]  ##獲得鹽值,包含$id部分
    dictFile=open('key.txt','r')
    for word in dictFile.readlines():
        word=word.strip("\n")
        cryptWord=crypt.crypt(word,salt)      ##將密碼字典中的值和鹽值一起加密
        if (cryptWord==cryptPass):           ##判斷加密后的數(shù)據(jù)和密碼字段是否相等
            print "[+]Found Password:"+word+"\n"       ##如果相等則打印出來(lái)
            return 
    print "[-] Password Not Found.\n"
    return 
 
def main():
    passFile=open('shadow.txt')
    for line in passFile.readlines():      ##讀取文件中的所有內(nèi)容
        if ":" in line:
            user=line.split(":")[0]                     ##獲得用戶名
            cryptPass=line.split(":")[1].strip(' ')   ##獲得密碼字段
            print "[*] Cracking Password for:"+user
            testPass(cryptPass)
main()

參考文章
相關(guān)知識(shí)
1、split()方法以及關(guān)于str.split()[0]等形式內(nèi)容的詳細(xì)講解

str.split(str="", num=string.count(str)).

參數(shù):
str :分隔符,默認(rèn)為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
num : 分割次數(shù)。默認(rèn)為 -1, 即分隔所有。
返回值:
Python split() 通過(guò)指定分隔符對(duì)字符串進(jìn)行切片,如果參數(shù) num 有指定值,則分隔 num+1 個(gè)子字符串,返回分割后的字符串列表。
代碼示例:

輸入
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );          # 以空格為分隔符,包含 \n
print str.split(' ', 1 );    # 以空格為分隔符,分隔成兩個(gè)
輸出
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']

2、關(guān)于str.split()[0]等形式內(nèi)容的詳細(xì)講解

•輸入與輸出
>>> str="hello boy[www.doiido.com]>byebye"
>>> str.split("[")[1].split("]")[0]
'www.doiido.com'
>>> str.split("[")[1].split("]")[0].split(".")
['www', 'doiido', 'com']

解析:
str.split("[")[1]. split("]")[0]輸出的是 [ 后的內(nèi)容以及 ] 前的內(nèi)容。 str.split("[")[1]. split("]")[0]. split(".") 是先輸出 [ 后的內(nèi)容以及 ] 前的內(nèi)容,然后通過(guò) . 作為分隔符對(duì)字符串進(jìn)行切片。
下面再對(duì)上面的例子進(jìn)一步操作加深理解:

str="hello boy[www.doiido.com]>byebye"
str.split("o")[0]

得到:‘hell'

str="hello boy[www.doiido.com]>byebye"
str.split("o")[1]

得到:' b'(這里b的前面有個(gè)空格!)

str="hello boy[www.doiido.com]>byebye"
str.split("o")[3]

得到:‘iid'(這里得到的iid是第3個(gè)o后和第4個(gè)o前之間的內(nèi)容)

str="hello boy[www.doiido.com]>byebye"
str.split("[")[0]

得到:‘hello boy'(這里得到的hello boy是第一個(gè)[之前的內(nèi)容)
解析:
str.split(“o”)[0]得到的是第一個(gè)o之前的內(nèi)容
str.split(“o”)[1]得到的是第一個(gè)o和第二個(gè)o之間的內(nèi)容
str.split(“o”)[3]得到的是第三個(gè)o后和第四個(gè)o前之間的內(nèi)容
str.split("[")[0]得到的是第一個(gè) [ 之前的內(nèi)容
[n] 取值范圍(n,n+1)
注意:[ ]內(nèi)的數(shù)值必須小于等于split("")內(nèi)分隔符的個(gè)數(shù),否則會(huì)報(bào)錯(cuò)

3、補(bǔ)充

str="hello boy[www.doiido.com]>byebye"
str.split("o")[0:2]
得到的結(jié)果:
['hell', ' b']

解析:
str.split(“o”)[0:2]得到的是第一個(gè)o之前的內(nèi)容 + 第一個(gè)o和第二個(gè)o之間的內(nèi)容,這里第三個(gè)o前內(nèi)容取不到,是一個(gè)左閉右開(kāi)區(qū)間。
[n:m]取值范圍(n,n+1)^(n+1,m)
引申:

str="hello boy[www.doiido.com]>byebye"
print(str.split("o")[0:-1])
print(str.split("o")[0:-2])
print(str.split("o")[0:-3])
運(yùn)行結(jié)果:
['hell', ' b', 'y[www.d', 'iid', '.c']
['hell', ' b', 'y[www.d', 'iid']
['hell', ' b', 'y[www.d']

`str.split("o")[1:3]`取得的結(jié)果為
[' b', 'y[www.d']

注:注意空格!注意空格!注意空格!

以上就是python滲透測(cè)試linux密碼激活的示例的詳細(xì)內(nèi)容,更多關(guān)于python滲透測(cè)試linux密碼破解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python腳本激活Linux密碼的方法(crypt模塊)
  • python獲取linux和windows系統(tǒng)指定接口的IP地址的步驟及代碼
  • 聊聊python在linux下與windows下導(dǎo)入模塊的區(qū)別說(shuō)明
  • linux centos 7.x 安裝 python3.x 替換 python2.x的過(guò)程解析
  • 在Linux下使用命令行安裝Python

標(biāo)簽:六盤(pán)水 成都 江蘇 蘭州 山東 宿遷 駐馬店 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python滲透測(cè)試linux密碼激活的示例》,本文關(guān)鍵詞  python,滲透,測(cè)試,linux,密碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python滲透測(cè)試linux密碼激活的示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python滲透測(cè)試linux密碼激活的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章