đồ án tốt nghiệp GIẤU TIN TRONG ẢNH DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ

84 50 0
đồ án tốt nghiệp GIẤU TIN TRONG ẢNH DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

đồ án tốt nghiệp, GIẤU TIN TRONG ẢNH, DỰA TRÊN PHƯƠNG PHÁP, OPVD VÀ HÀM ĐỒNG DƯ

BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƯỜNG ĐẠI HỌC THỦY LỢI NGUYỄN PHƯƠNG ANH HÙNG CƯỜNG GIẤU TIN TRONG ẢNH DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ ĐỒ ÁN TỐT NGHIỆP HÀ NỘI, NĂM 2015 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƯỜNG ĐẠI HỌC THỦY LỢI NGUYỄN PHƯƠNG ANH HÙNG CƯỜNG GIẤU TIN TRONG ẢNH DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ Ngành (chuyên ngành) : Công nghệ thông tin Mã số: 106 NGƯỜI HƯỚNG DẪN Ths Đinh Phú Hùng HÀ NỘI, NĂM 2015 LỜI CAM ĐOAN Tôi xin cam đoan Đồ án tốt nghiệp thân Các kết Đồ án tốt nghiệp trung thực, không chép từ nguồn hình thức nào.Việc tham khảo nguồn tài liệu (nếu có) thực trích dẫn ghi nguồn tài liệu tham khảo quy định Sinh viên thực Chữ ký Nguyễn Phương Anh Hùng Cường LỜI CÁM ƠN Lời đầu tiên, em xin chân thành gửi lời cám ơn tới thầy cô trường Đại học Thủy Lợi nói chung thầy giáo Khoa Cơng nghệ thơng tin nói riêng, người nhiệt tình giảng dạy truyền đạt thức cần thiết suốt thời gian em học tập trường để em hồn thành tốt q trình học tập Đặc biệt, em xin gửi lời cảm ơn chân thành sâu sắc đến Thạc sĩ Đinh Phú Hùng, người trực tiếp hướng dẫn tận tình bảo em suốt trình làm đồ án tốt nghiệp Do kiến thức hạn hẹp khả hạn chế, kinh nghiệm thực tế khơng có nhiều, thời gian có hạn nên đồ án tốt nghiệp nhiều điểm thiếu sót Kính mong quý thầy cô bạn thông cảm đưa góp ý quý báu để đồ án tốt nghiệp em hoàn thiện Em xin chân thành cảm ơn! MỤC LỤC DANH MỤC CÁC HÌNH ẢNH v DANH MỤC BẢNG BIỂU vi DANH MỤC CÁC TỪ VIẾT TẮT vii MỞ ĐẦU CHƯƠNG 1.1 TỔNG QUAN VỀ KỸ THUẬT GIẤU TIN Một số khái niệm tổng quan 1.1.1 Sơ lược giấu tin 1.1.2 Đặc trưng tính chất kỹ thuật giấu tin ảnh .4 1.1.3 Mơ hình kỹ thuật giấu tin ảnh .4 1.2 Yêu cầu đánh giá chất lượng ảnh sau giấu tin CHƯƠNG KỸ THUẬT GIẤU TIN ĐỀ XUẤT DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ 2.1 Cơ sở lý thuyết .8 2.1.1 Phương pháp Pixel Value Differencing (PVD) 2.1.2 Phương pháp Overlapping Pixel Value Differencing (OPVD) .10 2.2 Phương pháp kết hợp OPVD hàm đồng dư 11 2.2.1 Ý tưởng thuật toán 11 2.2.2 Thuật toán giấu tin 11 2.2.3 Thuật toán tách tin 13 2.3 Ví dụ minh họa .14 2.3.1 Quá trình giấu tin 14 2.3.2 Quá trình tách tin 29 CHƯƠNG ĐỀ XUẤT NÂNG CAO HIỆU QUẢ THUẬT TOÁN 40 3.1 Ý tưởng thuật toán 40 3.2 Thuật toán giấu tin 40 3.3 Thuật toán tách tin 41 3.4 Ví dụ minh họa .42 3.4.1 Quá trình giấu tin 42 3.4.2 Quá trình tách tin 61 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH 73 4.1 Giới thiệu chung 73 4.2 Các chức chương trình 73 CHƯƠNG THỰC NGHIỆM VÀ KẾT QUẢ 74 5.1 Dữ liệu thực nghiệm .74 5.2 Kết thực nghiệm 74 KẾT LUẬN .75 TÀI LIỆU THAM KHẢO 76 DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Mơ hình giấu tin Hình 1.2 Mơ hình tách tin Hình 2.1 Trình tự xử lý khối điểm ảnh Hình 2.2 Sự khác biệt PVD OPVD .10 Hình 2.3 Quá trình nhúng phương pháp OPVD hàm đồng dư 12 Hình 2.4 Quá trình tách tin phương pháp OPVD hàm đồng dư 14 Hình 4.1 Sơ đồ chức chương trình 73 DANH MỤC BẢNG BIỂU Bảng 2.1 Bộ phạm vi thứ .9 Bảng 2.2 Bộ phạm vi thứ hai .9 Bảng 2.3 Bộ giá trị đánh dấu cho ảnh xám 15 Bảng 3.1 Bộ giá trị đánh dấu cho ảnh màu 43 DANH MỤC CÁC TỪ VIẾT TẮT LSB (Least significant bit) MSE (Mean squared error ) OPVD (Overlapping Pixel Value Bit quan trọng Sai số bình phương trung bình Phương pháp vi phân chồng chéo Differencing) PSNR (Peak signal-to-noise ratio) PVD (Pixel Value Differencing ) điểm ảnh Tỉ số tín hiệu cực đại nhiễu Phương pháp vi phân điểm ảnh MỞ ĐẦU Ngày nay, Internet đóng vai trò quan trọng phát triển xã hội Do đó, việc sử dụng để truyền tin bí mật gia tăng ứng dụng Bảo mật thông tin quan trọng phủ, kinh doanh, cơng nghiệp chí cá nhân Giấu tin lĩnh vực quan trọng an tồn thơng tin Khơng giống mã hóa làm thay đổi thơng điệp không đọc kẻ địch (bên thứ ba), giấu tin che giấu diện thơng tin bí mật Nó sử dụng vỏ bọc (đa phương tiện) để che giấu thơng tin bí mật trước truyền đến kênh truyền thông công cộng Do đó, bảo vệ thơng điệp chống lại truy cập trái phép Dữ liệu mã hóa và/hoặc nén trước áp dụng giấu tin nhằm tăng mức độ bảo mật giảm lượng liệu cần nhúng khiến ảnh mang thông điệp bị giảm chất lượng Trong thực tế, số phương pháp giấu tin đề xuất để nhúng liệu vào ảnh kỹ thuật số với vai trò lớp vỏ, kể miền không gian miền tần số Một phương pháp gần đây, phương pháp PVD đề xuất nhằm tăng khả nhúng mà không thay đổi chất lượng ảnh Phương pháp dựa giá trị chênh lệch cặp điểm ảnh Do đó, số lượng bit nhúng cặp điểm ảnh thay đổi Một phương pháp khác đề xuất Chang cộng sự[CITATION Cha06 \l 1033 ], gọi OPVD Không giống phương pháp PVD, OPVD sử dụng khối chồng lên giấu bit bí mật điểm ảnh thứ hai cặp điểm ảnh cách sử dụng phương pháp thay LSB Mặc dù phương pháp có hiệu cao so với PVD, bỏ qua nhiều điểm ảnh mà không sử dụng để giấu tin Trong đồ án tìm hiểu kỹ thuật giấu tin ảnh dựa khái niệm khối chồng chéo tương tự OPVD với thủ tục điều chỉnh để giảm số lượng điểm ảnh không sử dụng Không giống OPVD, phương pháp sử dụng hàm đồng dư để nhúng thay phương pháp thay LSB Với sửa đổi phương pháp OPVD, phương pháp đề xuất có khả nhúng cao mà khó nhận thấy biểu đồ phân tích Nội dung trình bày chương sau: Chương Tổng quan kỹ thuật giấu tin Chương Kỹ thuật giấu tin đề xuất dựa phương pháp OPVD hàm đồng dư Chương Đề xuất nâng cao hiệu thuật toán Chương Xây dựng chương trình Chương Thực nghiệm kết 12 10 17 17 13 Bước 1: Lấy pixel P1x = 110 P1y = 253 Bước 2: Xét xem P1y có bị đánh dấu khơng? - P1y = 253 điểm đánh dấu  bỏ qua, chuyển sang khối F1g Đối với khối F1g: 25 16 16 19 17 17 16 14 25 14 17 25 14 13 18 18 15 13 16 18 12 17 17 11 12 Bước 1: Lấy pixel P1x = 253 P1y = 160 Bước 2: Xét xem P1y có bị đánh dấu khơng? - P1y = 160 khơng phải điểm đánh dấu Bước 3: Tính da1, Fa1, n1 - da1 = |P1y – P1x| = |160 – 253| = 93 - 93 thuộc (64-127)  Tra bảng 2.2, ta có n1 = - Fa1 = (P1y + P1x) mod = (160 + 253) mod 26 = 29 Bước 4: Chuyển đổi Fa1 = b1 từ thập phân sang nhị phân độ dài n1 - b1 = 29 n1 =  Thông điệp trích: 011101 - Thơng điệp tại: 011101 Đối với khối F1b: 16 16 18 68 17 17 17 16 18 15 16 17 11 12 17 14 19 13 25 14 17 12 10 17 13 10 Bước 1: Lấy pixel P1x = 160 P1y = 168 Bước 2: Xét xem P1y có bị đánh dấu khơng? - P1y = 168 khơng phải điểm đánh dấu Bước 3: Tính da1, Fa1, n1 - da1 = |P1y – P1x| = |168 – 160| = - thuộc (8-15)  Tra bảng 2.2, ta có n1 = - Fa1 = (P1y + P1x) mod = (168 + 160) mod 23 = Bước 4: Chuyển đổi Fa1 = b1 từ thập phân sang nhị phân độ dài n1 - b1 = n1 =  Thơng điệp trích: 000 - Thông điệp tại: 011101000 69 Xét khối F2: Đối với khối F2r: 11 18 12 19 12 25 15 16 11 10 13 13 18 12 17 18 18 19 25 17 16 15 13 14 13 Bước 1: Lấy pixel P2x = 253 P2y = 131 Bước 2: Xét xem P2y có bị đánh dấu khơng? - P2y = 131 khơng phải điểm đánh dấu Bước 3: Tính da2, Fa2, n2 - da2 = |P2y – P2x| = |253 – 131| = 122 - 122 thuộc (64-127)  Tra bảng 2.2, ta có n2 = - Fa2 = (P2y + P2x) mod = (253 + 131) mod 26 = Bước 4: Chuyển đổi Fa2 = b2 từ thập phân sang nhị phân độ dài n2 - b2 = n2 =  Thơng điệp trích: 000000 - Thông điệp tại: 011101000000000 Đối với khối F2g: 25 17 17 18 16 16 25 15 16 14 14 13 70 19 25 13 16 17 14 18 18 12 17 17 11 0 12 Bước 1: Lấy pixel P2x = 160 P2y = 169 Bước 2: Xét xem P2y có bị đánh dấu không? - P2y = 169 điểm đánh dấu Bước 3: Tính da2, Fa2, n2 - da2 = |P2y – P2x| = |169 – 160| = - thuộc (8-15)  Tra bảng 2.2, ta có n2 = - Fa2 = (P2y + P2x) mod = (169 + 160) mod 23 = Bước 4: Chuyển đổi Fa2 = b2 từ thập phân sang nhị phân độ dài n2 - b2 = n2 =  Thơng điệp trích: 001 - Thông điệp tại: 0111010000000000 01 Đối với khối F2b: 16 16 18 17 17 17 16 18 15 16 17 11 12 17 14 19 13 25 14 17 12 10 17 13 10 Bước 1: Lấy pixel P2x = 168 P2y = 181 Bước 2: Xét xem P2y có bị đánh dấu không? - P2y = 181 điểm đánh dấu Bước 3: Tính da2, Fa2, n2 - da2 = |P2y – P2x| = |181 – 168| = 13 - 13 thuộc (8-15)  Tra bảng 2.2, ta có n2 = 71 - Fa2 = (P2y + P2x) mod = (181 + 168) mod 23 = Bước 4: Chuyển đổi Fa2 = b2 từ thập phân sang nhị phân độ dài n2 - b2 = n2 =  Thơng điệp trích: 101 - Thơng điệp tại: 0111010000000000 01101 Xét khối F3: Đối với khối F3r: 11 25 13 18 16 18 15 13 18 15 12 16 18 19 13 19 11 12 25 14 12 10 17 17 13 Bước 1: Lấy pixel P3x = 131 P3y = 189 Bước 2: Xét xem P3y có bị đánh dấu không? - P3y = 189 điểm đánh dấu Bước 3: Tính da3, Fa3, n3 - da3 = |P3y – P3x| = |131 – 189| = 58 - 58 thuộc (32-63)  Tra bảng 2.2, ta có n3 = - Fa3 = (P3y + P3x) mod = (131 + 189) mod 25 = Bước 4: Chuyển đổi Fa3 = b3 từ thập phân sang nhị phân độ dài n3 - b3 = n3 =  Thơng điệp trích: 00000 - Thông điệp tại: 0111010000000000 0110100000 72 Đối với khối F3g: 25 16 16 19 17 17 16 14 25 14 17 25 14 13 18 18 15 13 16 18 12 17 17 11 12 Bước 1: Lấy pixel P3x = 169 P3y = 199 Bước 2: Xét xem P3y có bị đánh dấu không? - P3y = 199 điểm đánh dấu Bước 3: Tính da3, Fa3, n3 - da3 = |P3y – P3x| = |199 – 166| = 30 - 30 thuộc (16-31)  Tra bảng 2.2, ta có n3 = - Fa3 = (P3y + P3x) mod = (199 + 169) mod 24 = Bước 4: Chuyển đổi Fa3 = b3 từ thập phân sang nhị phân độ dài n3 - b3 = n3 =  Thơng điệp trích: 0000 - Thơng điệp tại: 0111010000000000 01101000000000 Đối với khối F3b: 16 16 18 17 17 17 16 18 15 16 17 11 12 17 14 19 13 25 14 17 73 12 10 17 13 10 Bước 1: Lấy pixel P3x = 181 P3y = 172 Bước 2: Xét xem P3y có bị đánh dấu không? - P3y = 172 điểm đánh dấu Bước 3: Tính da3, Fa3, n3 - da3 = |P3y – P3x| = |172 – 181| = - thuộc (8-15)  Tra bảng 2.2, ta có n3 = - Fa3 = (P3y + P3x) mod = (172 + 181) mod 23 = Bước 4: Chuyển đổi Fa3 = b3 từ thập phân sang nhị phân độ dài n3 - b3 = n3 =  Thơng điệp trích: 001 - Thơng điệp tại: 0111010000000000 0110100000000000 Xét khối F4: Đối với khối F4r: 11 25 13 18 16 18 15 13 18 15 12 16 18 19 13 19 11 12 25 14 12 10 17 17 13 Bước 1: Lấy pixel P4x = 189 P4y = 160 Bước 2: Xét xem P4y có bị đánh dấu không? - P4y = 160 điểm đánh dấu Bước 3: Tính da4, Fa4, n4 - da4 = |P4y – P4x| = |160 – 189| = 29 - 29 thuộc (16-31)  Tra bảng 2.2, ta có n4 = 74 - Fa4 = (P4y + P4x) mod = (160 + 189) mod 24 = 13 Bước 4: Chuyển đổi Fa4 = b4 từ thập phân sang nhị phân độ dài n4 - b4 = 13 n4 =  Thơng điệp trích: 1101 - Thông điệp tại: 0111010000000000 0110100000000000 11101 Đối với khối F4g: 25 16 16 19 17 17 16 14 25 14 17 25 14 13 18 18 15 13 16 18 12 17 17 11 12 Bước 1: Lấy pixel P4x = 199 P4y = 179 Bước 2: Xét xem P4y có bị đánh dấu không? - P4y = 179 điểm đánh dấu Bước 3: Tính da4, Fa4, n4 - da4 = |P4y – P4x| = |179 – 199| = 20 - 20 thuộc (16-31)  Tra bảng 2.2, ta có n4 = - Fa4 = (P4y + P4x) mod = (179 + 199) mod 24 = 10 Bước 4: Chuyển đổi Fa4 = b4 từ thập phân sang nhị phân độ dài n4 - b4 = 10 n4 =  Thơng điệp trích: 1010 - Thông điệp tại: 0111010000000000 0110100000000000 111011010 75 Đối với khối F4b: 16 17 17 19 12 16 16 11 13 10 18 18 12 25 17 17 15 17 14 13 17 16 14 17 10 Bước 1: Lấy pixel P4x = 172 P4y = 173 Bước 2: Xét xem P4y có bị đánh dấu không? - P4y = 173 điểm đánh dấu Bước 3: Tính da4, Fa4, n4 - da4 = |P4y – P4x| = |173 – 172| = - thuộc (0-7)  Tra bảng 2.2, ta có n4 = - Fa4 = (P4y + P4x) mod = (173 + 172) mod 23 = Bước 4: Chuyển đổi Fa4 = b4 từ thập phân sang nhị phân độ dài n4 - b4 = n4 =  Thơng điệp trích: 001 - Thông điệp tại: 0111010000000000 0110100000000000 111011010001 Xét khối F5: Đối với khối F5r: 11 18 12 19 25 15 16 11 13 13 18 12 76 18 18 19 25 16 15 13 14 12 10 17 17 13 Bước 1: Lấy pixel P5x = 160 P5y = 151 Bước 2: Xét xem P5y có bị đánh dấu khơng? - P5y = 151 khơng phải điểm đánh dấu Bước 3: Tính da5, Fa5, n5 - da5 = |P5y – P5x| = |151 – 160| = - thuộc (8-15)  Tra bảng 2.2, ta có n5 = - Fa5 = (P5y + P5x) mod = (151 + 160) mod 23 = Bước 4: Chuyển đổi Fa5 = b5 từ thập phân sang nhị phân độ dài n5 - b5 = n5 =  Thông điệp trích: 111 - Thơng điệp tại: 0111010000000000 0110100000000000 111011010001111 Đối với khối F5g: 25 16 16 19 17 17 16 14 25 14 17 25 14 13 18 18 15 13 16 18 12 17 17 11 12 Bước 1: Lấy pixel P5x = 179 P5y = 141 Bước 2: Xét xem P5y có bị đánh dấu khơng? - P5y = 179 khơng phải điểm đánh dấu Bước 3: Tính da5, Fa5, n5 - da5 = |P5y – P5x| = |141 – 179| = 38 - 38 thuộc (32-63)  Tra bảng 2.2, ta có n5 = - Fa5 = (P5y + P5x) mod = (141 + 159) mod 25 = 77 Bước 4: Chuyển đổi Fa5 = b5 từ thập phân sang nhị phân độ dài n5 - B5 = n5 =  Thông điệp trích: 00000 - Thơng điệp tại: 0111010000000000011010000000000011101101000111100000 - Đến điểm đánh dấu, kết thúc thuật toán Độ dài thông điệp : 52  Độ dài thực thông điệp là: 52 – (52 mod 16) = 48 Ta thu chuỗi nhị phân ban đầu: 0111010000000000 0110100000000000 1110110100011110 Message: thử 78 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH 4.1 Giới thiệu chung Chương trình giấu tin ảnh đề xuất dựa phương pháp OPVD hàm đồng dư cài đặt ngôn ngữ lập trình C#(Microsoft Visual Studio 2013) Chương trình gồm có số chức sau:: Hình 4.7 Sơ đồ chức chương trình 4.2 Các chức chương trình 79 CHƯƠNG THỰC NGHIỆM VÀ KẾT QUẢ 5.1 Dữ liệu thực nghiệm 5.2 Kết thực nghiệm 80 KẾT LUẬN 81 TÀI LIỆU THAM KHẢO [1] C C J H Y Chang, Spatial Domain Image Hiding Scheme Using PixelValues Differencing Fundamenta Informaticae 70, 171–184, 2006 [2] D T W Wu, A Steganographic Method for Images by Pixel-Value Differencing.Pattern Recognition Letters 24, 1613–1626, 2003 [3] C W N T C H M Wang, A High Quality Steganographic Method with PixelValue Differencing and Modulus Function Journal of Systems and Software 81, 150–158, 2008 [4] Al-Sadi, E.-S.M El-Alfy and A.A., "High-Capacity Image Steganography Based on Overlapped Pixel Differences and Modulus Function",, 2012 82 ... 11 12 17 14 17 11 12 17 14 19 13 25 14 17 19 13 25 14 17 12 10 17 13 10 12 10 17 13 10 Xét khối F4: Bước 1: Lấy pixel P4x = 168 P4y = 172 Bước 2: Tính db4, Fb4, n4 - db4 = |P4y – P4x| = |172... phân b4 = - m1 = |Fb4 – b4| = |4 – 0| = 4, m2 = – m1 = 23 – = - Do Fb4 > b4 m1 =  P’4y = P3y – m1 = 172 – = 168 Bước 4: Kiểm tra db4 da4 có phạm vi không? - da4 = |P’4y – P4x| = |168 – 168| =... 58| = 49 , m2 = – m1 = 27 – 49 = 79 - Do Fb1 > b1 m1 <  P’1y = P1y – m1 = 253 – 49 = 2 04 Bước 4: Kiểm tra db1 da1 có phạm vi khơng? - da1 = |P’1y – P1x| = |2 04 – 110| = 94 - 94 thuộc ( 64- 127)

Ngày đăng: 28/09/2019, 10:41

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • CHƯƠNG 1 TỔNG QUAN VỀ KỸ THUẬT GIẤU TIN

    • 1.1 Một số khái niệm tổng quan

      • 1.1.1 Sơ lược về giấu tin

      • 1.1.2 Đặc trưng và tính chất của kỹ thuật giấu tin trong ảnh

      • 1.1.3 Mô hình kỹ thuật giấu tin trong ảnh cơ bản

      • 1.2 Yêu cầu và đánh giá chất lượng ảnh sau khi giấu tin

      • CHƯƠNG 2 KỸ THUẬT GIẤU TIN ĐỀ XUẤT DỰA TRÊN PHƯƠNG PHÁP OPVD VÀ HÀM ĐỒNG DƯ

        • 2.1 Cơ sở lý thuyết

          • 2.1.1 Phương pháp Pixel Value Differencing (PVD)

          • 2.1.2 Phương pháp Overlapping Pixel Value Differencing (OPVD)

          • 2.2 Phương pháp kết hợp OPVD và hàm đồng dư

            • 2.2.1 Ý tưởng thuật toán

            • 2.2.2 Thuật toán giấu tin

            • 2.2.3 Thuật toán tách tin

            • 2.3 Ví dụ minh họa

              • 2.3.1 Quá trình giấu tin

              • 2.3.2 Quá trình tách tin

              • CHƯƠNG 3 ĐỀ XUẤT NÂNG CAO HIỆU QUẢ THUẬT TOÁN

                • 3.1 Ý tưởng thuật toán

                • 3.2 Thuật toán giấu tin

                • 3.3 Thuật toán tách tin

                • 3.4 Ví dụ minh họa

                  • 3.4.1 Quá trình giấu tin

                  • 3.4.2 Quá trình tách tin

                  • CHƯƠNG 4 XÂY DỰNG CHƯƠNG TRÌNH

                    • 4.1 Giới thiệu chung

                    • 4.2 Các chức năng của chương trình

                    • CHƯƠNG 5 THỰC NGHIỆM VÀ KẾT QUẢ

                      • 5.1 Dữ liệu thực nghiệm

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan