python 침투 테스트 Liux 암호 활성화 예제

전편 의 글 은 모두 에 게 소개 한 적 이 있다  Python 스 크 립 트 리 눅 스 암호 해독(crypt 모듈)     관심 있 는 친구 클릭 하여 보기.
링크 ux 암호 해독
이 코드 는 각각 두 개의 파일 을 읽 습 니 다.하 나 는 암호 화 암호 파일(cryptPass)이 고 다른 하 나 는 추측 에 사용 할 사전 파일(key.txt)입 니 다.
test Pass()함수 에서 사전 파일 을 읽 고 crypt.crypt()를 통 해 암호 화 합 니 다.암호 화 할 때 명문 암호 와 두 바이트 salt(암호 화 암호 의 앞 두 글자)가 필요 합 니 다.salt 와 명문 암호 화 를 통 해 cryptWord 를 만 듭 니 다.
마지막 으로 cryptWord 와 cryptPass 를 비교 합 니 다.같 으 면 이 워드 는 이 사용자 의 비밀번호 입 니 다.그렇지 않 으 면 아 닙 니 다.
먼저 crypt 의 예 시 를 보십시오.
在这里插入图片描述
소금 은 비밀문서 의 앞 두 자리 에 첨가 되 어 있 는 것 을 볼 수 있 으 므 로 암호 화 된 구령 의 앞 두 자 리 를 salt 로 추출 하면 된다.
Linux 시스템 에서 사용자 의 비밀 번 호 는/etc/shadow 파일 에 암호 화 되 어 저 장 됩 니 다.
다음은/etc/shadow 의 루트 사용자 필드 입 니 다.
在这里插入图片描述
암호 부분의 형식 은:$id$salt$encryptedid 는 해시 알고리즘 을 말 합 니 다.id 는 1 은 MD5 이 고 id 는 5 는 SHA-256 이 며 id 는 6 은 SHA-512 입 니 다.
소금 값
encrypted 는 hash 값 입 니 다.여기 hash 값 은 암호 와 소금 값 을 함께 암호 화하 여 얻 은 것 입 니 다.
프로 그래 밍 전에 준비:
1.암호 사전 key.txt 를 만 듭 니 다.
2.python 스 크 립 트 가 있 는 디 렉 터 리 에/etc/shadow 파일 을 복사 합 니 다.파일 이름 을 shadow.txt 로 변경 합 니 다.

import crypt   ##  Linux     
def testPass(cryptPass):
    salt=cryptPass[cryptPass.find("$"):cryptPass.rfind("$")]  ##    ,  $id  
    dictFile=open('key.txt','r')
    for word in dictFile.readlines():
        word=word.strip("
") cryptWord=crypt.crypt(word,salt) ## if (cryptWord==cryptPass): ## print "[+]Found Password:"+word+"
" ## return print "[-] Password Not Found.
" return def main(): passFile=open('shadow.txt') for line in passFile.readlines(): ## if ":" in line: user=line.split(":")[0] ## cryptPass=line.split(":")[1].strip(' ') ## print "[*] Cracking Password for:"+user testPass(cryptPass) main()
在这里插入图片描述
참고 문장
관련 지식
1.split()방법 및 str.split()[0]등 형식 내용 에 대한 상세 한 설명

str.split(str="", num=string.count(str)).
인자:
str:구분자,기본 값 은 모든 빈 문자 입 니 다.빈 칸,줄 바 꾸 기(),탭 문자(\t)등 을 포함 합 니 다.
num:분할 횟수.기본 값 은-1,즉 모든 것 을 구분 합 니 다.
반환 값:
Python split()는 지정 한 구분자 로 문자열 을 자 릅 니 다.매개 변수 num 에 지정 한 값 이 있 으 면 num+1 키 문자열 을 구분 하여 분 단 된 문자열 목록 을 되 돌려 줍 니 다.
코드 예제:

  
str = "Line1-abcdef 
Line2-abc
Line4-abcd"; print str.split( ); # ,
print str.split(' ', 1 ); # ,

  
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '
Line2-abc
Line4-abcd']
2.str.split()[0]등 형식 내용 에 대한 상세 한 설명

•     
>>> 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]은[뒤의 내용 과]전의 내용 을 출력 한다.str.split("[")[1].split("]")[0].split(".")는[뒤의 내용 과]앞의 내용 을 먼저 출력 한 다음 에.구분자 로 문자열 을 자 릅 니 다.
다음은 위의 예 에 대해 더욱 깊이 이해 하 겠 습 니 다.

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

str="hello boy<[www.doiido.com]>byebye"
str.split("o")[1]
획득:'b'(여기 b 앞 에 빈 칸 이 있 습 니 다!)

str="hello boy<[www.doiido.com]>byebye"
str.split("o")[3]
획득:'iid'(여기 서 얻 은 iid 는 세 번 째 o 후 와 네 번 째 o 전 사이 의 내용)

str="hello boy<[www.doiido.com]>byebye"
str.split("[")[0]
획득:'hello boy'(여기 서 얻 은 hello boy'가 첫 번 째[이전 내용)
해석:
str.split("o")[0]은 첫 번 째 o 이전의 내용 을 얻 었 다.
str.split(o)[1]는 첫 번 째 o 와 두 번 째 o 사이 의 내용 을 얻 었 다.
str.split(o)[3]는 세 번 째 o 후 와 네 번 째 o 전 사이 의 내용 을 얻 었 다.
str.split("[")[0]은 첫 번 째[이전 내용]을 얻 었 습 니 다.
[n]수치 범위(n,n+1)
메모:[]내 수 치 는 split(")내 구분자 의 개수 보다 작 아야 합 니 다.그렇지 않 으 면 잘못 알 릴 수 있 습 니 다.
3.보충

str="hello boy<[www.doiido.com]>byebye"
str.split("o")[0:2]
     :
['hell', ' b']
해석:
str.split(o)[0:2]는 첫 번 째 o 이전의 내용+첫 번 째 o 와 두 번 째 o 사이 의 내용 을 얻 었 습 니 다.여기 서 세 번 째 o 전 내용 을 얻 을 수 없고 왼쪽 닫 고 오른쪽 열 림 구간 입 니 다.
[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])
    :
['hell', ' b', 'y<[www.d', 'iid', '.c']
['hell', ' b', 'y<[www.d', 'iid']
['hell', ' b', 'y<[www.d']

`str.split("o")[1:3]`      
[' b', 'y<[www.d']
주:스페이스 바 주의!빈 칸 조심!빈 칸 조심!
이상 은 python 침투 테스트 Liux 암호 활성화 예제 의 상세 한 내용 입 니 다.python 침투 테스트 Liux 암호 해독 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기