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

项目主页:http://www.open-open.com/lib/view/home/1407554328317