Chúng ta đang đến rất gần, tôi gần như có thể nhìn thấy vạch đích.
Vì vậy, treo trong đó.
Bây giờ chúng ta có hàm băm và số đếm để chúng ta có thể hoàn thiện chức năng này để quét các rò rỉ mật khẩu ở đây
khi chúng ta lặp lại từng mục.
Chúng ta muốn kiểm tra những gì?
Chà, chúng tôi muốn kiểm tra xem hash đó có phải là câu chuyện về hash ở đây hay không.
Là bằng với băm.
Để kiểm tra, hãy nhớ, băm.
Để kiểm tra là phần cuối của mật khẩu băm của chúng tôi mà chúng tôi chưa bao giờ gửi cho bất kỳ ai trên máy của chúng tôi.
Vì vậy, nó tốt đẹp và an toàn.
Và chúng tôi sẽ kiểm tra điều này vì API đã trả lại cho chúng tôi danh sách các hàm băm theo đuôi này.
Vì vậy, nếu điều đó khớp tốt, trong trường hợp đó, tôi muốn bạn trả lại số đếm.
Vậy tôi muốn quay lại mật khẩu này đã bị lộ bao nhiêu lần?
Nếu không thì chỉ cần quay lại.
Số không.
Một lần nữa, tôi có thể làm điều này vì nó sẽ thoát ra khỏi vòng lặp này bất cứ khi nào nó nhìn thấy từ khóa return.
Bây giờ trong kiểm tra API pwned của tôi, tôi sẽ chạy chức năng này mà intel sẽ lấy tất cả thông tin
này và trả về số lần mật khẩu băm đã bị rò rỉ.
Vì vậy, chúng tôi có một điều cuối cùng phải làm.
Đó là khả năng thực sự in ra kết quả của tất cả các phép tính này.
Vì vậy, chúng ta hãy loại bỏ điều này ngay bây giờ và tạo một chức năng chính.
Và hàm chính này sẽ nhận các đối số mà chúng ta cung cấp cho nó ngay tại đây trong dòng lệnh của chúng
ta.
Vì vậy, chúng tôi sẽ nhập, như bạn có thể đã thấy trước đây, mô-đun CIS.
Và ở đây, chúng ta sẽ có một hàm chính nhận các đối số, là mật khẩu mà chúng
ta muốn kiểm tra.
Và bây giờ, chúng ta sẽ chỉ đi qua đây.
Nhưng ở dưới cùng, chúng ta sẽ gọi hàm chính.
Với dấu chấm CIS RV và chấp nhận bất kỳ số đối số nào sau khi chúng tôi thực hiện python 3, hãy kiểm tra số pi trong quá khứ của tôi và sau đó chúng tôi cung cấp cho
nó tất cả các đối số mà chúng tôi muốn, đó là mật khẩu.
Vì vậy, chúng tôi sẽ chạy chức năng như thế này.
Chức năng chính này.
Tất cả những gì cần làm là chúng ta sẽ nói về mật khẩu trong các đối số vì chúng ta có thể cung cấp cho nó nhiều
mật khẩu.
Chúng tôi sẽ lặp lại điều đó.
Và chúng ta sẽ có một mật khẩu duy nhất.
Và đếm, hoặc chúng ta sẽ chỉ đếm vì chúng ta sẽ nhận được số lượng từ số lần rò rỉ mật
khẩu lấy.
Vì vậy, chúng tôi có thể làm điều đó bằng cách thực hiện kiểm tra api pwned.
Và chúng tôi sẽ chuyển cho nó mật khẩu mà chúng tôi đang kiểm tra.
Và tất cả những gì chúng ta sẽ làm thực sự nằm bên trong khối này, giả sử nếu số đếm tồn tại trong trường
hợp đó, tôi muốn bạn in một chuỗi F và chuỗi F này sẽ nói.
Các.
Mật khẩu mà chúng tôi đang lặp lại.
Được tìm thấy.
Số lần đếm bao nhiêu lần?
Và sau đó chúng tôi sẽ nói, bạn có thể nên thay đổi.
Mật khẩu của bạn.
Nếu không thì.
Nếu điều đó có nghĩa là không có số lượng, tức là không có trận đấu nào, thì bạn đều tốt.
Chúng ta có thể nói.
Nếu chuỗi.
Mật khẩu.
Không tìm thấy.
Tiếp tục.
Vì vậy, đó là một mật khẩu tốt.
Bạn nên tiếp tục.
Tất cả các bạn tốt.
Và cuối cùng, cho vui thôi, hãy quay lại khỏi chức năng này.
Trở về?
Thực hiện cứ như vậy.
Nếu tôi lưu điều này, hãy xem điều này mang lại cho chúng ta những gì.
Tôi sẽ nói Python ba.
Kiểm tra thẻ của tôi và hãy kiểm tra.
Xin chào?
Tôi có.
Xin chào.
Không vui khi tiếp tục, nhưng chúng tôi biết rằng lời chào đã được tìm thấy trước đó.
Đúng.
Ý tôi là, đó là một mật khẩu đơn giản.
Chúng ta thực sự nên nhận được một cái gì đó tốt ở đây.
Bây giờ, tôi cũng muốn loại bỏ phản hồi này của bản in.
Vì chúng tôi không cần nó nữa, bạn có thể phát hiện ra lỗi không?
Một lần nữa, đây là một phần hơi phức tạp với Python, phải không?
Đó là vết lõm và một cái gì đó mà chúng ta đã thấy trước đây.
Vì vậy, bạn muốn gỡ lỗi mã của riêng mình thành thạo và tìm hiểu điều gì xảy ra trong trường hợp
này, chúng ta có thể đi từng bước qua mã, nhưng chúng ta có thể nghĩ, Hmm, chúng tôi thực sự chưa bao giờ thử nghiệm chức năng đếm này.
Và nếu chúng ta nhìn qua đây, vết lõm của chúng ta hơi lệch một chút, phải không?
Chúng tôi có kiểm tra nếu, nhưng sau đó chúng tôi luôn trả về số không.
Trả về này sẽ giống như thế này sau vòng lặp for.
Sau khi chúng tôi đã kiểm tra mọi thứ, không có gì phù hợp.
Sau đó, chúng ta sẽ trả về số không.
Vì vậy, nếu tôi lưu và chạy lại điều này.
Được rồi, bây giờ nó đang hoạt động.
Bạn nhận thấy rằng một lỗi nhỏ đơn giản có thể cho bạn kết quả hoàn toàn khác.
Vì vậy, luôn luôn tốt để đi từng bước và thử một cái gì đó với một cái gì đó mà bạn đã biết là hiệu quả.
Và điều quan trọng nữa là sử dụng các kỹ năng gỡ lỗi mà bạn sẽ phát triển trong suốt khóa học để thử và
tìm ra mọi thứ.
Bây giờ, không một lập trình viên nào có thể viết một chương trình hoàn hảo ngay lập tức.
Hầu hết thời gian bạn đang cố gắng tìm ra lý do tại sao bạn gặp lỗi này, tại sao điều
này lại xảy ra và đây chỉ là thứ mà bạn ngày càng trở nên tốt hơn khi viết mã.
Vì vậy, cách chữa duy nhất cho vấn đề này là tiếp tục mã hóa.
Hy vọng rằng trong suốt khóa học, bạn đã thấy một số lỗi mà tôi mắc phải trong cách tôi gỡ lỗi chúng để
bạn cũng bắt đầu áp dụng các mẫu này.
Dù sao, điều này là tuyệt vời.
Điều này cuối cùng đã hoạt động.
Hãy thử một vài điều nữa.
Hãy nói lời tạm biệt và sau đó là một số ngôn ngữ vô nghĩa.
Được rồi.
Có vẻ như điều này cũng đang hoạt động.
Điều này thật tuyệt.
Trình kiểm tra mật khẩu của chúng tôi đang hoạt động.
Bây giờ, tôi muốn làm một điều nữa ở đây.
Để hoàn thành dự án này.
Vì vậy, hãy làm điều đó trong video tiếp theo.