Chuyển đến nội dung chính

[Crypto] Birthday Paradox

Nghịch lý Birthday là 1 trong những nghịch lý được áp dụng rất nhiều khi dùng để giải mã trong Crypto. Câu hỏi:  "Cần ít nhất bao nhiêu người để xác suất có 1 cặp trong số đó trùng ngày-tháng sinh với nhau là > 50%?"  Câu trả lời là 23 người.  Nghe qua thì hơi khó tin, lần đầu nghe mình cũng không tin lắm :)) nhưng để chứng minh nó bằng các giải ngược thì khá đơn giản:  Gọi A là biến cố không có ai trong 23 người cùng ngày sinh, ta cần tính 1- P(A).  Ta có: Với mỗi người ta có cách chọn ngày sinh lần lượt là: 365, 365 - 1, ..., 365 - 22 Không gian mẫu:  365^23 Suy ra:  1- P(A) = 50.73%   Vậy nên trong 1 lớp họp có hơn 30 người, xác suất có 2 người trùng ngày sinh lên tới gần 70%, nên thường trong 1 lớp sẽ có 2 người trung ngày sinh.  Phát biểu: Chỉ cần thử 1.2 * sqrt(n) thì sẽ có tới 50% là có 1 cặp giống nhau. Áp dụng định lý này với phương pháp Brute-force: 

Transformation picoCTF(reverse)

Đầu tiên khi tải file về ta thấy 1 dòng chữ rất là ố dề :))


Description và hint bài này dẫn ta nghĩ đến việc sẽ là 1 dạng mã hóa nào đó. 

Tìm thử các hàm ord() và chr() ta biết được hàm này sẽ là hàm đưa 1 kí tự về mã Ascii và ngược lại. 

Bây giờ thử viết 1 hàm chuyển kí tự này về chuỗi số Ascii:


Đọc phần Description ta thấy, dòng chữ này sẽ được so sánh với flag theo hàm: 

.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])

hay là 28777 =  chr((ord(flag[0]) << 8) + ord(flag[0 + 1])))

vì flag sẽ có dạng picoCTF{} nên ta đoán flag[0]='p' và flag[0+1]='i' và chạy thử:


ta thấy đầu ra giống nhau.

Vậy bây giờ có 2 cách: 1 là ta sẽ viết 1 đoạn code dịch ngược các mã Ascii về unicode, 2 đơn giản hơn là ta chạy tất cả các chữ unicode theo đoạn mã trên mà nếu nó bằng mã Ascii sẽ lấy chữ đó. 





Nhận xét

Bài đăng phổ biến từ blog này

Lời nói đầu

 Mình là Nguyễn Tùng Dương, hiện đang là sinh viên Kỹ thuật máy tính K66 HUST, cựu học sinh chuyên Toán k47 chuyên Phan Bội Châu, Nghệ An. Mình có niềm đam mê với An toàn thông tin, nhưng năm nhất thì chưa được học nhiều về chuyên ngành, vậy nên blog này là những chia sẻ về quá trình và chặng đường tìm hiểu về Cyber Security. Vì là tự tìm hiểu và hiện tại không có nhiều road map để theo ngành này, vậy nên nếu có gì sai sót xin mọi người góp ý và bỏ qua cho mình.  Mình mong là blog sẽ có chút kiến thức hay truyền động lực cho bạn tiếp tục theo ngành này.  Instagram: duongn.15 Facebook: www.facebook.com/tungduong03/