python 침투 테스트 Liux 암호 활성화 예제
링크 ux 암호 해독
이 코드 는 각각 두 개의 파일 을 읽 습 니 다.하 나 는 암호 화 암호 파일(cryptPass)이 고 다른 하 나 는 추측 에 사용 할 사전 파일(key.txt)입 니 다.
test Pass()함수 에서 사전 파일 을 읽 고 crypt.crypt()를 통 해 암호 화 합 니 다.암호 화 할 때 명문 암호 와 두 바이트 salt(암호 화 암호 의 앞 두 글자)가 필요 합 니 다.salt 와 명문 암호 화 를 통 해 cryptWord 를 만 듭 니 다.
마지막 으로 cryptWord 와 cryptPass 를 비교 합 니 다.같 으 면 이 워드 는 이 사용자 의 비밀번호 입 니 다.그렇지 않 으 면 아 닙 니 다.
먼저 crypt 의 예 시 를 보십시오.
소금 은 비밀문서 의 앞 두 자리 에 첨가 되 어 있 는 것 을 볼 수 있 으 므 로 암호 화 된 구령 의 앞 두 자 리 를 salt 로 추출 하면 된다.
Linux 시스템 에서 사용자 의 비밀 번 호 는/etc/shadow 파일 에 암호 화 되 어 저 장 됩 니 다.
다음은/etc/shadow 의 루트 사용자 필드 입 니 다.
암호 부분의 형식 은:
$id$salt$encrypted
id 는 해시 알고리즘 을 말 합 니 다.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 암호 해독 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.