본문 바로가기
Python

Python- 무차별 대입 공격(BruteForce Attack).

by 웹하는빡통 2019. 11. 17.

이번시간에는 Python을 이용하여 무처별 대입 공격을 구현해보겠다.

무차별 대입 공격: 모든 경우의 수를 무작위로 대입하여 암호를 푸는 공격 기법

 

★ 무차별 대입 공격이 이루어지는 환경은 로그인 기능에 임계값 설정이 없을때 이 공격 기법을 사용한다.

그 이유는 임계값 설정이 없으면 패스워드가 틀려도 무한적으로 패스워드창에 값을 대입 할 수 있다.

 

테스트 환경

bee-box

 

소스코드.

가장 먼저 itertools라는 모듈은  자신만의 반복자를 만드는 모듈이다. 

ex) 'ABCD' 가 있으면 A,B,C,D,AB,AC,AD,BA,BC,.....이런식으로 

그 다음 product를 import해준다 여기서 product의 역할은 두 개이상의 리스트를 조합할때 사용한다.

즉. word라는 변수에 알파벳 소문자/대문자 + 특수문자(총 리스트 3개)를 조합할때 product를 사용한다.

 

이제 range(1,4)에 패스워드 길이를 구한다. 

 

product(words, repeat=passwd_length)에 repeat는 문자조합의 개수를 의미한다. 

ex) 'abcd', repeat=2라고 가정하자 그러면 'aa','ab','ac'이런식으로 

현재 range(1,4)는 1부터 시작해서 1,2,3 총  3개의 문자열을 비교할것이다.

 

product(words, repeat=passwd_length) 이부분에서 'a','b'....'ab','ac'...........'abc',adc'....이런식으로 알간??. 

 

그 다음 .join()에서는 리스트에 특정 구분자를 추가하여 문자열로 변환한다. 

 이런식으로~ 

 

자 이제 requst_login_packet이라는 부분에

비박스 로그인창에 있는 요청 패킷을 잡는다. 그러면 요청값에 해당 값이 나올거다 이것을  

requst_login_packet{

 

   여기~~

 

} 안에다 넣어주자. 

 

그 다음 request.post()를 사용하면 끝.

 

 

실행 결과.

bee-box ID:"bee" password="bug"라는 것을 알 수 있다. 아 물론 아이디는 알고 있다는 가정에서 이다. 

 

모듈 및 함수 개념 정리

1. itertools: 반복자를 만드는 모듈.

2. product: 2개이상 리스트를 조합할때 사용.

3. .join(): 리스트에 특정 구분자를 추가하여 문자열로 변환.

4. repeat:  조합할 문자열의 개수

 

 

댓글