3 Các Phương Pháp Xây Dựng
3.2 Pcap – mức network adapter
Pcap (packet capture) bao gồm những giao diện lập trình ứng dụng (API) dùng để chặn bắt network traffic. Đối với các hệ thống thuộc họ Unix ta có thư viện libpcap, còn đối với Window ta có thư viện được port từ libpcap là winpcap. Pcap thường có hai thành phần cơ bản:
• Driver: packet capture driver không thể được viết bằng các ngôn ngữ bậc cao mà thường viết bằng C hoặc assembly. Hai driver được sử dụng rộng rãi nhất hiện nay là driver thương mại nằm trong PCAUSA và driver miễn phí nằm trong Windump package.
• Interface: là giao diện thực hiện packet capture.
Libpcap và Winpcap được sử dụng từ link layer trở lên. Chúng cung cấp cơ chế packet capture và packet filter, có thể lưu trữ packet thu được vào file hay đọc file đó... Ngoài ra chúng còn cho phép tạo các custom packet và injection chúng trên mạng. Rất nhiều ứng dụng đã sử dụng libpcap hay winpcap vào các mục đích khác nhau như packet sniffer, network monitor, network tester hay network intrusion detection system...
Tuy nhiên nhược điểm của việc sử dụng các thư viện này là chúng chỉ có thể sử dụng để chặn bắt gói tin mà không thể block một địa chỉ hay một cổng hay một tiến trình truy nhập mạng như socket.
API của libpcap và winpcap được viết bằng C hoặc C++ nên để có thể xây dựng ứng dụng bằng các ngôn ngữ khác như .NET, Java ta cần có wrapper.
Danh sách các wrapper để sử dụng libpcap/winpcap với ngôn ngữ khác C/C++:
• Net::Pcap, a Perl wrapper for pcap
• python-libpcap, a Python wrapper for pcap
• pcapy, another Python wrapper for pcap
• PacketFu, a Ruby wrapper for pcap
• tclpcap, a Tcl wrapper for pcap
• jpcap, a Java wrapper for pcap
• jNetPcap, another Java wrapper for pcap
• WinPcapNET, SharpPcap, Pcap.Net, .NET wrappers for WinPcap
• pcap, Haskell bindings for pcap
• mlpcap, Objective Caml bindings for pcap