Nhiều bạn có thể đã biết mình đã từng viết một chương trình dò mật khẩu Wifi theo giao thức bảo mật WPA2 Link tại đây Và hôm nay mình sẽ giải thích cho mọi người một chút về cách mà mình tạo ra nó

Ý tưởng bắt nguồn từ đâu?
Trong hệ điều hành Windows, có một câu lệnh trong cmd giúp bạn có thể thêm một profile mới để truy cập vào một Wifi mới đó là netsh wlan add profile filename = "WifiProfile.xml"
Câu lệnh này yêu cầu bạn phải truyền vào một file xml và đồng thời mình phát hiện ra rằng trong file xml có chứa thẻ name chứa thông tin về tên SSID của wifi và keyMaterial là nơi chứa thông tin về mật khẩu cửa Wifi đó và nếu thẻ protected là giá trị false mật khẩu trong file xml sẽ không bị mã hóa và bạn hoàn toàn có thể sửa lại thông tin của các thẻ đó và nạp lại đoạn code ở trên
Bắt đầu code thôi!
Viết file xml
Link mã nguồn
Về cơ bản, hầu hết các thẻ trong file xml thông tin Wifi đều giống nhau trừ các thẻ
-
name: Tên SSID Wifi -
SSID.hex: mã Hex của tên SSID -
SSID.name: là thẻnameở trên -
sharedKey.keyMaterial: Mật khẩu của Wifi
Đầu tiên, mình sẽ viết một hàm có tên là WriteXML để các thông tin của wifi ra xml
Đầu tiên, mình sẽ ghi thông tin của thẻ name trước
Thông tin của SSID.hex và SSID.name mình sẽ viết hàm writeSSIDConfig để ghi chúng vào file xml. Lưu ý là SSID.hex là tên của SSID ở dạng mã Hex
Cuối cùng, mình sẽ sửa thông tin của thẻ sharedKey.keyMeterial trong hàm writeMSM
Thêm profile wifi và kết nổi thử với nó
Link mã nguồn
Sau khi đã viết xong file xml, việc tiếp theo mà ta cần làm là thêm profile và kết nối thử với nó. Cả 2 bước này mình sẽ thực hiện trong hàm connectWifi
Về cơ bản, chúng sẽ chạy 2 lệnh cmd netsh wlan add profile filename = "wifiNetwork.xml" netsh wlan connect name = "WifiNetwork"
Sau đó, máy tính sẽ đợi 10 giây để chắc chắn rằng đã truy cập Wifi Sau khi đã đảm bảo rằng Wifi đã được truy cập, mình sẽ kiểm tra xem Wifi đã được kết nối hay chưa trong hàm isConnected. Hàm này sẽ lấy thông tin State trong câu lệnh netsh wlan show interface. Nếu State là connected thì tức là Wifi đã được kết nối và mật khẩu trong file xml kia chính là mật khẩu của Wifi đó
Lấy danh sách mật khẩu và thử từng trường hợp
Link mã nguồn
Sau khi đã viết xong những phần phía trên mình hoàn thành nốt việc còn lại là lấy danh sách các mật khẩu thử và thử từng cái một trong hàm bruteForce Công đoạn này chỉ đơn giản là mình đọc file chứa mật khẩu sau đó thực hiện các bước ở phía trên để tìm ra mật khẩu chính xác thôi.
Tổng kết
Tóm lại, chương trình của mình chỉ chạy theo một nguyên lý rất đơn giản
- Lấy tất cả các mật khẩu thử
- Với mỗi một mật khẩu viết file xml và thêm nó và rồi chạy thử xem chúng có phải là mật khẩu Wifi đó không