Nghiên cứu một số kỹ thuật phát hiện xâm nhập mạng bằng phương pháp so khớp

77 466 0
Nghiên cứu một số kỹ thuật phát hiện xâm nhập mạng bằng phương pháp so khớp

Đ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

i LỜI CAM ĐOAN Học viên xin cam đoan luận văn “Nghiên cứu số kỹ thuật phát xâm nhập mạng phương pháp so khớp” công trình nghiên cứu cá nhân học viên tìm hiểu, nghiên cứu hướng dẫn TS Nguyễn Ngọc Cương Các kết hoàn toàn trung thực, toàn nội dung nghiên cứu luận văn, vấn đề trình bày tìm hiểu nghiên cứu cá nhân học viên trích dẫn từ nguồn tài liệu trích dẫn thích đầy đủ TÁC GIẢ LUẬN VĂN Trần Thanh Hòa ii LỜI CẢM ƠN Học viên xin bày tỏ lời cảm ơn chân thành tới tập thể thầy cô giáo Viện công nghệ thông tin, thầy cô giáo Trường Đại học Công nghệ thông tin truyền thông - Đại học Thái Nguyên mang lại cho học viên kiến thức vô quý giá bổ ích suốt trình học tập chương trình cao học trường Đặc biệt học viên xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS.Nguyễn Ngọc Cương - Học viện an ninh định hướng khoa học đưa góp ý, gợi ý, chỉnh sửa quý báu, quan tâm, tạo điều kiện thuận lợi trình nghiên cứu hoàn thành luận văn Cuối cùng, học viên xin chân thành cảm ơn bạn bè đồng nghiệp, gia đình người thân quan tâm, giúp đỡ chia sẻ với học viên suốt trình học tập Do thời gian kiến thức có hạn nên luận văn không tránh khỏi thiếu sót định Học viên mong nhận góp ý quý báu thầy cô bạn Thái Nguyên, ngày 10 tháng năm 2016 HỌC VIÊN Trần Thanh Hòa iii DANH MỤC CÁC HÌNH VẼ Hình 1.1 Hệ thống chống xâm nhập IDS Hình 1.2 Mô hình Networt based IDS – NIDS Hình 1.3 Mô hình Host based IDS – HIDS 10 Hình 1.4 Các thành phần hệ thống phát xâm nhập 14 Hình 2.1 Xây dựng hàm Goto 41 Hình 2.2 Xây dựng hàm Failure 42 Hình 2.3 Xây dựng hàm Output 42 Hình 3.1 Mô hình hệ thống phát xâm nhập mạng 45 Hình 3.2 Các thành phần Snort 48 Hình 3.3 Lệnh Snort –W xem thông số card mạng 55 Hình 3.4 Mô hình mạng trung tâm GDTX Định Hóa 56 Hình 3.5 Mô hình giải pháp kết hợp IDS 57 Hình 3.6 Gói tin mã hóa 59 MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii DANH MỤC CÁC HÌNH VẼ iii MỞ ĐẦU Lý chọn đề tài Hướng nghiên cứu luận văn Đối tượng phạm vi nghiên cứu Những nội dung nghiên cứu 5 Phương pháp nghiên cứu 1.1.1 Định nghĩa 1.1.1.1 Phát xâm nhập 1.1.1.2 Hệ thống phát xâm nhập 1.1.2 Tính IDS 1.1.3 Phân loại IDS 1.1.3.1 Network based IDS – NIDS 1.1.3.2 Host based IDS – HIDS 10 1.1.4 Cơ chế hoạt động hệ thống IDS 11 1.1.4.1 Phát lạm dụng 12 1.1.4.2 Phát bất thường 13 1.1.5 Ưu điểm hạn chế IDS 13 1.1.5.1 Ưu điểm 13 1.1.5.2 Hạn chế 13 1.2 Các thành phần hệ thống phát xâm nhập 13 1.3 Phân biệt hệ thống IDS 14 1.4 Một số kỹ thuật phát xâm nhập mạng 15 1.4.1 Phương pháp tiếp cận dựa xác suất thống kê 15 1.4.2 Phương pháp tiếp tiếp cận dựa trạng thái 15 1.4.3 Phương pháp tiếp cận dựa hệ chuyên gia 16 1.4.4 Phương pháp tiếp cận dựa khai phá liệu 17 1.4.5 Hệ thống phát xâm nhập dựa mạng nơ-ron 17 1.4.6 Tiếp cận dựa so khớp mẫu 19 1.5 Kết chương 19 2.1 Bài toán so khớp mẫu 20 2.1.1 So khớp mẫu gì? 20 2.1.2 Lịch sử phát triển 22 2.1.3 Các bước xử lý 22 2.1.4 Các cách tiếp cận 22 2.1.5 Độ phức tạp tính toán 23 2.1.6 Ứng dụng so khớp mẫu 24 2.2 Các thuật toán so khớp phát xâm nhập mạng 24 2.2.1 Thuật toán Brute Force 24 2.2.2 Các thuật toán so khớp đơn mẫu phát xâm nhập mạng 28 2.2.2.1 Thuật toán Knuth-Morris-Pratt (KMP) 28 2.2.2.2 Thuật toán Boyer-Moore Horspool (BMH) 32 2.2.2.3 Thuật toán Karp-Rabin 34 2.2.3 Đánh giá ưu, nhược điểm thuật toán so khớp đơn mẫu 38 2.2.3.1 Ưu điểm 39 2.2.3.2 Nhược điểm 40 2.2.4 Các thuật toán so khớp đa mẫu phát xâm nhập mạng 40 2.2.4.1 Thuật toán Aho-Corasick (AC) [8] 40 2.2.4.2 Thuật toán Commentz-Walter (CW) 43 2.3 Kết chương 44 3.1 Mô hình phát xâm nhập mạng dựa so khớp mẫu 45 3.1.1 Thành phần thu nhập gói tin 45 3.1.2 Thành phần phân tích gói tin 46 3.1.3 Thành phần phản hồi 46 3.2 Hệ thống phát xâm nhập mạng Snort 47 3.2.1 Giới thiệu 47 3.2.2 Các thành phần Snort 48 3.3 Hệ thống luật 52 3.3.1 Định nghĩa 52 3.3.2 Các thành phần tập luật 52 3.3.2.1 Rule header 52 3.3.3.2 Rule options 52 3.4 Cài đặt cấu hình Snort 53 3.5 Mô hình triển khai 55 3.5.1 Mô hình toán: 55 3.5.1.1 Đặt giải pháp 56 3.5.1.2 Yêu cầu 57 3.6 Thực 57 3.6.1 Đầu vào toán 57 3.6.2 Đầu toán 58 3.6.3 Thử nghiệm đánh giá kết 58 3.6.3.1 Tập liệu thử nghiệm 58 3.6.3.2 Tiền xử lý liệu 59 3.6.3.3 Dữ liệu lựa chọn 59 3.6.3.4 Thiết kế thử nghiệm 60 3.6.3.5 Kết thử nghiệm 60 3.6.3.6 Nhận xét kết 60 3.6.4 Sử dụng chương trình so khớp đa mẫu Aho-Corasick vào Snort 61 3.6.4.1 Cài đặt chương trình so khớp đa mẫu Aho – Corasick 61 3.6.4.2 Cài đặt thuật toán so khớp đa mẫu Aho Corasick vào Snort 61 3.7 Kết chương 63 KẾT LUẬN 634 TÀI LIỆU THAM KHẢO 635 PHỤ LỤC 637 MỞ ĐẦU Lý chọn đề tài Mạng Internet từ cuối kỷ XX mở sóng xu hướng phát triển xã hội - thời đại công nghệ thông tin truyền thông, dịch vụ trực tuyến phát triển mạnh mẽ thương mại điện tử, toán trực tuyến, kinh doanh, tài chính, công nghiệp, an ninh, y tế,… Người sử dụng nhờ mạng Internet truy cập, khai thác chia sẻ thông tin lúc nơi, nhiên Internet không gian rộng mở cho kẻ xấu lợi dụng thực vụ công, truy cập trái phép vào hệ thống máy tính mạng người dùng Phát xâm nhập mạng thành phần quan trọng hệ thống giải pháp đảm bảo an ninh cho mạng đại Hệ thống phát xâm nhập mạng IDS (Intrusion Detection System) có nhiệm vụ phân tích thông tin, theo dõi, phát ngăn chặn xâm nhập trái phép tài nguyên làm tổn hại đến tính bảo mật, tính toàn vẹn tính sẵn sàng hệ thống Hiện nay, việc phát triển hệ thống IDS có nhiều phương pháp để phát xâm nhập vào hệ thống như: - Sử dụng phương pháp Bayes với ý tưởng tính toán xác suất Bayes để dịch chuyển ngược thời gian tìm nguyên nhân kiện, phù hợp cho việc tìm kiếm lý cho bất thường đặc biệt hành vi mạng - Sử dụng mạng nơ ron nhân tạo mô hình Kohonen’s Self Organizing features Map (SOM) sử dụng máy học vectơ Mục tiêu việc sử dụng mạng nơ ron nhân tạo cung cấp phương pháp phân loại không giám sát để vượt qua số chiều nhiều số lượng lớn tính đầu vào - Sử dụng kỹ thuật so khớp mẫu: Các thuật toán so khớp mẫu tiếp cận theo phương pháp dựa đặc trưng (signature-based) cho phép công cụ nhanh chóng tìm kiếm nhiều mẫu lúc đầu vào hệ thống IDS Kỹ thuật sử dụng phổ biến hệ thống phát ngăn chặn xâm nhập mạng Nguyên lý kỹ thuật là: việc phát nguy tiềm ẩn hệ thống phát xâm nhập mạng thực cách so khớp nội dung gói tin với mẫu biết Với đa dạng số lượng đợt công, hình thức công việc thu thập đầy đủ mẫu làm cho kích thước tập mẫu ngày tăng nhanh Vì vậy, em lựa chọn đề tài “Nghiên cứu số kỹ thuật phát xâm nhập mạng phương pháp so khớp” Luận văn nghiên cứu việc sử dụng kỹ thuật so khớp mẫu việc phát xâm nhập mạng So khớp mẫu kỹ thuật ứng dụng nhiều vấn đề an ninh mạng Trong hệ thống phát xâm nhập mạng, so khớp thể dạng mẫu biểu thức quy nhằm tạo thuận lợi việc chia sẻ sở liệu mẫu Nguyên lý kỹ thuật việc phát nguy tiềm ẩn hệ thống phát xâm nhập mạng thực cách so khớp nội dung gói tin với mẫu biết Hướng nghiên cứu luận văn - Tìm hiểu, phân tích đánh giá thời gian thực thuật toán so khớp đơn mẫu, đa mẫu hệ thống phát thâm nhập Snort; - Tìm hiểu thuật toán so khớp đa mẫu thử nghiệm - Cài đặt thực nghiệm thuật toán so khớp đa mẫu việc phát xâm nhập mạng hệ thống Snort mạng máy tính Đối tượng phạm vi nghiên cứu - Các kỹ thuật xâm nhập trái phép kỹ thuật ngăn chặn - Bài toán so khớp mẫu, thuật toán so khớp đơn mẫu, thuật toán so khớp đa mẫu ứng dụng phát kỹ thuật xâm nhập trái phép - Chỉ nghiên cứu dựa giả thiết mẫu công có mô hình, luận văn không nghiên cứu việc phân tích mô hình hóa mẫu công hay hành vi mạng xâm nhập trái phép - Thử nghiệm phát xâm nhập phương pháp so khớp mạng máy tính Những nội dung nghiên cứu Luận văn trình bày chương, có phần mở đầu, phần kết luận, phần mục lục, phần tài liệu tham khảo Các nội dung luận văn trình bày theo cấu trúc sau: Chương - Tổng quan xâm nhập mạng Chương – Kỹ thuật so khớp phát xâm nhập mạng Chương - Xây dựng mô hình phát xâm nhập mạng phương pháp so khớp Phương pháp nghiên cứu - Nghiên cứu tổng hợp kết nghiên cứu có liên quan đến đề tài, giải quyết, lập trình, thử nghiệm - Hiểu toán so khớp mẫu ứng dụng phát xâm nhập mạng, thuật toán công cụ lập trình hệ thống - Sử dụng phương pháp nghiên cứu thực nghiệm mô hình mạng máy tính để đánh giá hiệu thuật toán sử dụng 58 350 byte Để công thông qua giao thức HTTP kẻ công thường phải chèn thêm mã lệnh thực thi trình duyệt nạn nhân, mã lệnh đoạn mã, tệp tin, câu lệnh truy vấn SQL …, request giao thức có thay đổi nhiều kích thước, thông thường kích thước lớn 350 byte mẫu bất thường có khả xuất công Các công từ chối dịch vụ dạng như: Ping of Death, Teardrop, Aland Attack, Winnuke, Smurf Attack, UDP/ICMP Flooding TCP/SYN, Flooding Attack DNS Các dạng chủ yếu kẻ công gửi số lượng lớn lượt Ping, gói tin … để làm tải máy chủ gây lỗi từ chối dịch vụ Các công từ nhiều mạng lưới khác vào “LocalHost” hay nói cách khác có lượng lớn Request từ nhiều địa mạng khác gửi tới “LocalHost” cửa sổ thời gian ngắn bất thường, ngưỡng số request thay đổi tùy thuộc vào điều kiện kết nối mạng mức độ cần bảo vên an toàn 3.6.2 Đầu toán Kết đầu thuật toán hiển thị mẫu có trùng khớp với mẫu tập mẫu hay không để kết luận hành vi có phải xâm nhập trái phép vào hệ thống hay không Giải nén file snortrules-snapshot-CURRENT.tar copy tất nội dung vào thư mục cài đặt Snort: C:\Snort, chọn Yes to All để copy 3.6.3 Thử nghiệm đánh giá kết Dựa mô hình xây dựng phát đột nhập trên, phần thực số thử nghiệm tập liệu thực để đánh giá khả phát đột nhập chúng khía cạnh thời gian thực thuật toán 3.6.3.1 Tập liệu thử nghiệm Phương pháp tạo tập liệu thử nghiệm 59 Sử dụng Snort chế độ Packet logger mode để yêu cầu Snort tập hợp tất gói tin thấy mạng đưa vào file log theo cấu trúc phân tầng File log gồm thông tin gói tin Snort bắt mạng File log mã hóa Hình 3.6 Gói tin mã hóa 3.6.3.2 Tiền xử lý liệu Tập liệu mẫu bao gồm ghi gói tin công đột nhập mạng nói Tập liệu gói tin chọn từ ghi chi tiết gói tin bắt mạng 3.6.3.3 Dữ liệu lựa chọn Dữ liệu thử nghiệm gồm phần: Với CSDL tập mẫu, sử dụng tập mẫu gồm có kích thước tương ứng (mỗi dòng tập mẫu tương ứng gói tin bắt mạng): 5000 gói tin Với CSDL tập gói tin kiểm tra, thiết kế ứng với loại tập mẫu khác (để thể nhiều trường hợp nhất): Với tập mẫu 5000 gói tin: tập gói tin kiểm tra tương ứng: 5000 gói tin, 3000 gói tin, 1500 gói tin 60 3.6.3.4 Thiết kế thử nghiệm Luận văn thực kiểm tra đánh giá hiệu với thuật toán: Thuật toán sơ khai Thuật toán BMH Thuật toán RK Thuật toán Aho - Corasick Mỗi thuật toán thử nghiệm với sở liệu lựa chọn 3.6.3.5 Kết thử nghiệm Chạy chương trình với trường hợp nêu Cấu hình máy tính sử dụng: Bộ xử lý: Intel(R) Core(TM) i3-31100M CPU @ 2.40GHz ~2.3GHz Bộ nhớ Ram: 2.00 GB Loại hệ thống: hệ điều hành 32-bit Hệ điều hành: Windows Ultimate 32-bit Với tập liệu thử nghiệm tập mẫu đưa vào, ta thu kết tổng gói tin đột nhập (ta xử lý gói tin cho kết gói), thời gian thực thuật toán Luận văn xem xét thời gian xử lý toàn thuật toán Kết thu cho sau: kiểm tra Brute Force (giây) BMH (giây) RK (giây) 5000 5000 909.0 1685.7 950.8 Aho Corasick (giây) 58.4 5000 3000 653.1 1160.5 538.0 26.6 5000 1500 221.1 653.1 277.5 18.0 Tập gói tin Tập gói tin mẫu 3.6.3.6 Nhận xét kết Với áp dụng so khớp mẫu phát đột nhập, thuật toán Sơ khai, RK tồi hai thuật toán có kết tương tự 61 Thuật toán BMH không thực hiệu việc so khớp mẫu phát đột nhập độ dài mẫu văn lớn, tốn thời gian tiền xử lý Với mẫu văn dài thuật toán Aho Corasick tỏ thuật toán thực có hiệu cao 3.6.4 Sử dụng chương trình so khớp đa mẫu Aho-Corasick vào Snort 3.6.4.1 Cài đặt chương trình so khớp đa mẫu Aho – Corasick Chương trình viết phần mềm Python 2.7 win32 Python ngôn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trình Cấu trúc Python cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu 3.6.4.2 Cài đặt thuật toán so khớp đa mẫu Aho Corasick vào Snort Với ưu điểm vượt trội việc đối sánh mẫu data lớn, thuật toán Aho Corasick đưa vào hệ thống Snort để tăng hiệu cho việc so khớp mẫu Cài đặt thuật toán Aho Corasick vào Snort thực theo bước sau: Bước 1: Áp dụng thuật toán vào phần source code Snort Xây dựng thư viện treenodes.h để tạo tree, hàm Goto, hàm Failure Gọi thư viện #include "treenodes.h" file detect.h, detection_options.c,… Bước 2: Thay đổi cấu hình (file snort.config) Snort sau: - config detection: search-method ac-split search-optimize maxpattern-len 20 - search-method sử dụng ac-split: sử dụng thuật toán Aho-Corasick đầy đủ với nhóm cổng riêng biệt (bộ nhớ thấp, hiệu cao) 62 - search-optimize: tối ưu hóa nhớ nhanh chóng sử dụng tìm kiếm Aho Corasick cách chia tự động kích thước trạng thái dựa vào tổng trạng thái - max-pattern-len : tối ưu hóa nhớ xác định độ dài tối đa mẫu u áp dụng đối sánh mẫu nhanh Với mẫu có độ dài lớn cắt ngắn chiều dài trước chèn vào đối sánh mẫu Khi nội dung dài cắt ngắn mà không làm tính Bước 3: Tạo rule cho Snort Vì luận văn không sâu tìm hiểu việc tạo rule Snort nên ví dụ luận văn tạo rules đơn giản, dễ cài đặt Ví dụ 1: rule luận văn sử dụng lưu file demo.rules đặt đường dẫn (C:\Snort\rules): alert tcp any any -> 192.168.1.100 any (msg:"Co nguoi truy cap";sid:25358;) alert icmp any any -> 192.168.1.100 any (msg:"Co nguoi dang ping";sid:25310;) Khi khởi động Snort, thử ping đến địa www.google.com thu kết file alert.ids Ví dụ 2: rule luận văn sử dụng lưu file demo1.rules đặt đường dẫn (C:\Snort\rules): alert TCP 42.112.9.40 any -> 192.168.0.102 any (msg:"Co nguoi dang ping"; sid:25312;) alert UDP any any -> 192.168.0.102 any (msg:"Co goi tin UDP";sid:25310;) Ví dụ 3: rule luận văn sử dụng lưu file demo2.rules đặt đường dẫn (C:\Snort\rules): alert TCP 192.168.1.100 any -> any any (content: "bom"; msg: “Cảnh báo có nguy hiểm”; sid: 25311;) 63 3.7 Kết chương Chương đưa mô hình phát xâm nhập mạng ứng dụng so khớp chuỗi bao gồm việc xây dựng mô hình cài đặt thử nghiệm Các thuật toán so khớp chuỗi thử nghiệm với tập mẫu tập gói tin kiểm tra có kích thước khác để đánh giá hiệu Kết cho thấy thuật toán so khớp chuỗi đa mẫu Aho-Corasick cho kết tốt nhất, đặc biệt với tập mẫu tập gói tin kiểm tra có kích thước lớn Luận văn tiến hành tích hợp thử nghiệm thành công thuật toán so khớp chuỗi đa mẫu Aho-Corasick vào hệ thống phát đột nhập Snort 64 KẾT LUẬN Những phần nắm Luận văn cho ta thấy rõ quan trọng hệ thống phát chống xâm nhập trái phép công nghệ thông tin phát triển Hệ thống phát xâm nhập mạng (IDS) xuất sau đóng vai trò không phần quan trọng IDS giúp khám phá, phân tích nguy công Từ vạch phương án phòng chống, góc độ tìm thủ phạm gây công Nắm bắt khái niệm hệ thống phát xâm nhập Triển khai hệ thống phát xâm nhập phổ biến Snort Thực thi Snort chế độ như: Sniffer Packet, Packet Logger, NIDS… Tích hợp thuật toán so khớp đa mẫu Aho – Corasick vào Snort Những chưa đạt Đề tài nhiều thiếu sót Phần lý thuyết tổng quát sơ lược tóm tắt chưa sâu nghiên cứu vấn đề Phần thử nghiệm tìm hiểu chế độ đơn giản Sniffer Packet, Packet Logger, NIDS Về vấn đề viết rule cho Snort để xử lý hệ thống luật viết có phần đơn giản Hướng mở rộng Sau nắm hệ thống phát xâm nhập (IDS), ta thực nghiên cứu hệ thống phát ngăn chặn xâm nhập (IPS) triển khai cho hệ thống mạng tổ chức Nghiên cứu sử dụng Snort để phát hình thức công phát triển lên phương pháp phòng chống tiên tiến tương lai không xa 65 TÀI LIỆU THAM KHẢO [1] Lê Đắc Nhường, Nguyễn Gia Như, Lê Đăng Nguyên, Lê Trọng Vĩnh Song song hóa thuật toán so khớp mẫu QuickSearch NIDS sử dụng mô hình chia sẻ nhớ OpenMP Pthreads Tạp chí Đại học Quốc gia Hà Nội, tháng 12/2012 Vol 28(4), Tr 255 – 263 [2] Lê Đắc Nhường, Lê Đăng Nguyên, Trịnh Thị Thùy Giang, Lê Trọng Vĩnh Phân tích, đánh giá hiệu thuật toán so khớp mẫu dùng an ninh mạng, Hội thảo vấn đề chọn lọc CNTT & TT lần thứ 14, Tr.451463, Cần Thơ 7-8/10/2011 NXB Khoa học kỹ thuật Hà Nội 2012 [3] Likarish, Eunjin Jung, Dunbar D., and Hansen T.E., “B-APT: Bayesian Anti-Phishing Toolbar”, In the Proceeding of 16th International Conference on Communication 2008 (ICC’08), pp 17451749, 2008 [4] Vinnarasi Tharania I, R Sangareswari, and M Saleembabu, “Web Phishing Detection In Machine Learning Using Heuristic Image Based Method”, International Journal of Engineering Research and Applications, Vol.2, Issue 5, pp.1589-1593, 2012 [5] Kranti W., Supriya A And N V Puri, “ An Efficient Approach to Detecting Phishing A Web Using K-Means and Naive- Bayes Algoriths”, International Journal of Research in Advent Technology, Vol.2, No.3, pp.106-111, 2014 [6] Jangjong Fan, Kehyih Su, “An Efficient Algorith for Matching Multiple Patterns”, IEEE Transactions on Knowledge and Data Engineering, vol 5, no 2, pp 339-351, 1993 [7] Le Dang Nguyen, Dac Nhuong Le, Tran Thi Huong, Le Trong Vinh, A New Genetic Algorithm Applied to Inexact Graph Matching 66 International Journal of Computer Science and Telecommunications, Vol.5(5), pp.1-7, 2014 [8] Alfred V Aho and Margraet J Corasick Efficient string mathching: an aid to bibliographic search Commun ACM 18, 6(June 1975), pages 333-340 [9] Boyer, R.S, and Moore, J.S “A fast string searching algorithm”, Communications of the Association for Computing Machinery (ACM), Vol 20, no 10, 1977 [10] http://snort.org/ 67 PHỤ LỤC Thuật toán Brute_Force Void Brute_Force (char *x, int m, char y, int n) { /* Searching */ For (int j = ; j = m ) OUTPUT (j); } } } Thuật toán Knuth - Morris – Pratt (KMP) a Thuật toán tính mảng Next: int* InitNext(char *p, int m) { int i,j,*kmpNext; i = -1; j = 0; *kmpNext = -1; while (j < m ) { while (i > -1)&&( p[i] != p[j]) i = *(kmpNext + i); i++; j++; if (p[i]== p[j]) *(kmpNext + j) = *(kmpNext + i); else *( kmpNext + j) = i; } return kmpNext; 68 } b Thuật toán Knuth - Morris – Pratt (KMP) int KMP (char *p, char *t) { int i, j, M = strlen(p), N = strlen(t); InitNext(p); for (i = 0, j = 0; j < M && i < N; i++, j++) while ((j >= 0) && (t[i] != p[j])) j = next[j]; if (j == M) return i - M; else return i; } Thuật toán Boyer Moore Hospool a Thuật toán tính mảng bmBC m  length [P] for i = to 255 bmBC[i] = m for i = to ( m-1) bmBC[x[i]] = m-i-1 b BMH-String-Matching(T,P) prebmBC () pos = while (pos tj+pos = pj )do j j-1 if(j = 0) return (pos + 1) j  j + bmbc[Tpos+m] end of while Thuật toán Karp-Rabin int ReHash(int a,int b,int h,int d) { 69 return((h–a*d)

Ngày đăng: 16/04/2017, 17:26

Từ khóa liên quan

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

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

Tài liệu liên quan