C++ 网络抓包和操作库:libtins
jopen
10年前
libtins 是一个高级支持多平台的 C++ 网络抓包和操作库。开发者可以利用 libtins 在应用实现对网络数据包的分析和操作。它的主要目的是提供C++开发一个简单,高效,平台和字节序无关的方式来创建一个需要发送,接收和处理网络数据包的工具。
它易于使用
该库是非常简单易用。作为一个简单的例子,这是怎么回事,可以用来打印在eth0接口捕捉每一个TCP数据包的源地址和目的地址和端口:
#include <iostream> #include <tins/tins.h> using namespace Tins; bool handler(const PDU &pdu) { const IP &ip = pdu.rfind_pdu<IP>(); // Find the IP layer const TCP &tcp = pdu.rfind_pdu<TCP>(); // Find the TCP layer std::cout << ip.src_addr() << ':' << tcp.sport() << " -> " << ip.dst_addr() << ':' << tcp.dport() << std::endl; return true; } int main() { Sniffer("eth0").sniff_loop(handler); }
特性
libtins 支持多种协议和特性:
- Network packet crafting.
- Packet sniffing and automatic interpretation packets.
- Reading and writing PCAP files.
- Following and reassembling TCP streams on the fly.
- Decrypting WEP and WPA2(TKIP and CCMP) encrypted 802.11 data frames on the fly and interpreting the decrypted content.
- Supported protocols:
- IEEE 802.11
- IEEE 802.3
- IEEE 802.1q
- Ethernet II
- ARP
- IP
- IPv6
- ICMP
- ICMPv6
- TCP
- UDP
- DHCP
- DHCPv6
- DNS
- RadioTap
- EAPOL
- PPPoE
- STP
- LLC
- LLC+SNAP
- Linux Crooked Capture
- PPI
- NULL/Loopback