Libtins Versions Save

High-level, multiplatform C++ network packet sniffing and crafting library.

v4.5

8 months ago

Changes in this release:

  • Add VXLAN support (#501)

  • Add FileSniffer constructor taking a FILE* (#499).

  • Remove use of deprecated std::iterator (#481).

  • Add missing algorithm header include (#497).

  • Validate high order two bits of first dns label octet (#494).

  • Use CMAKE_INSTALL_LIBDIR in CONF_CMAKE_INSTALL_DIR (#472).

  • Ignore IPv6 packets with payload after one with no Next Header (#500).

  • Fix unqualified std::move call warnings on clang (#488).

  • Fix incorrect IP address range calculation when using /0 prefix (#484) (#486).

  • Fall back to system GTest if available (#473).

  • Fix compilation issue on android (#471).

  • Fix DNS parser reading garbage on misreported packet size (#468).

  • Fix DNS parser misinterpreting bad label size (#466).

v4.4

2 years ago

Changes in this release:

  • Add RFC8335 extended echo types to ICMP and ICMPv6 (#426)

  • Handle loops in DNS name decompression (#444)

  • Fix Windows' interface macro colliding with uses of that identifier in the code (#458)

  • Sending IPv6 packets to a link-scope destination address now uses the right interface index (#448)

  • Fix incorrect endian being used for ICMP's gateway and address_mask (#437)

  • Socket in PacketSender::open_l3_socket is now closed if setsockopt fails (#433)

  • Fix various incorrect doxygen documentation comments (#439).

  • Fix infinite loop when querying the routing table in *BSD (#427)

v4.3

2 years ago

Changes in this release:

  • Assign a PDUType to Dot11ControlTA (#420)

  • Don't consider IPv6 ESP header a normal extension header (#374)

  • Don't include non-existing headers when installed without libpcap (#382)

  • Add IPv6Address::is_local_unicast (#369)

  • Fix memory leak in PacketWriter (#343)

  • Fix memory leaks in OfflinePacketFilter (#343)

  • Fix detection of new TCP stream (#335)

  • Introduce TCP::has_flags (#334)

  • Fix padding calculations in RadioTapWriter (#333)

v4.2

5 years ago

New features/additions

  • Allow getting a PDU's advertised size and use it in PacketWriter (#324)

  • Add missing Dot11 tagged option types (#305)

  • Add support for DLT_RAW (#313)

Fixes

  • Updated location of installed CMake files in unix systems (#331)

  • Fix check to detect cross compilation (#330)

  • Install DLLs in right directory (#326)

  • Fix potential invalid memory accesses when parsing RadioTap (#322)

v4.1

5 years ago

New features/additions:

  • Implement IPv6::recv_response

  • Add parsing of well known IPv6 extension headers (#287)

  • Add missing operators to address classes (#275)

Fixes

  • Fix serialization for QinQ (#316)

  • Added base class access specifier for socket_close_error (#306)

  • Rewrote hw_address_to_string to not require a stringstream (#299)

  • Make RadioTapParser::skip_to_field check for end of buffer (#296)

  • Ensure local include directory comes before system. (#293)

  • Calculate IP option sizes properly (#288)

  • Add version macros in config.h

  • Don't assume IPv6 uses ICMPv6 underneath

  • Allow users to specify library install dir

  • Use Sleep windows function passing milliseconds as parameter

  • Don't use nullptr in non C++11 code

  • Ignore (possibly malformed) options after EOL (#281)

  • Don't include dot11.h in tins.h if it is not configured in the library (#277)

  • Fix memory leak in PDU's move assignment operator

  • Append padding to IPv6 options

v4.0

6 years ago

For a deeper look into all major changes in this version, please check this blog post.

New features/additions:

  • Add parent PDU to each PDU.

  • Removed parent PDU parameter on PDU::write_serialization.

  • Split utils.h into multiple files under the utils directory.

  • Split internals.h into multiple files under the detail directory.

  • Improve compilation times by removing useless include directives.

  • Refactor PDUOption conversions so that heavy headers are not included in source file.

  • Use std::vector instead of std::list in TCP, IP, IPv6, DHCP, DHCPv6, DNS, LLC, Dot11 and PPPoE.

  • Improve performance on IP, IPv6 and TCP by compiting option sizes during serialization.

  • Minor performance improvements in DNS.

  • Refactor RadioTap parsing and serialization using a generic parser/writer.

  • Add BaseSniffer::set_pcap_sniffing_method to specify whether pcap_loop or pcap_dispatch should be used when sniffing.

  • Added cipher and akm suites from 802.11-2016.

  • Add IPv6 layer parsing on Loopback packets.

  • Allow serializing Loopback on Windows.

  • Restructure CMake files removing useless CMakeLists.txt in include paths.

  • Add getter/setter for "more data" field in Dot11Base.

  • Implemented matching for ND protocol related ICMPv6 messages.

  • Add header files into CMake sources so IDE can pick them up.

  • Add MPLS "experimental" field.

Fixes

  • Fix IPv6 next header handling. Now each one contains its own type and the next type is only set during serialization for ease of use.

  • Fix dhcpv6::duid_type constructor from duid_ll.

  • Use IFF_POINTOPOINT on BSD when getting broadcast address for an interface.

  • Ensure TCP::OptionTypes has 8-bit range.

  • Use the first fragment as a base when reassembling IP packets in IPv4Reassembler.

  • Use the right flag on Loopback for IPv6.

v3.5

7 years ago

New features/additions

  • Added Utils::route6_entries

  • Allow masking IPv4/6 and hardware addresses via operator&

  • Add IPv4Address::from_prefix_length

  • Move stream_id into a new file and rename it StreamIdentifier

  • Allow disabling TCPIP classes

  • Properly handle out of order SACKs on AckTracker

  • Move TCP data tracking into a separate class

  • Allow constructing StreamIdentifier from a Stream

  • Allow configuring pcap timestamp precision

  • Allow building libtins using MinGW

  • Allow including libtins using add_subdirectory via CMake

  • Allow setting customer user data to each TCP stream

  • Allow skipping data forward in TCP streams

  • Allow attaching to already existing TCP streams

Fixes

  • AddressRange masks first address as well

  • Add TINS_API to IPv4Address::operator<<, DataTracker and AckTracker

  • Don't always set key_t to 0 on RSNEAPOL

  • Handle MLDv1 properly on ICMP

  • Make Utils::resolve_hwaddress work on Windows

  • Interface was sometimes considered down when it was up (BSD/Linux)

  • Don't set Dot1Q's payload type if next protocol type is unknown

  • Use recvfrom on BSD/OSX when capturing layer 3 packets

  • Make Timestamp::current_time work on Windows

  • Forward NetworkInterface argument when calling PacketSender::send_l2

  • Timestamp overflow issue

  • boost's include directories variable incorrectly used on build system

  • Configuring auto cleanup of Stream's server data not working

  • Set EthernetII payload type to UNKNOWN if there's no inner PDU

  • Set payload type to 0 if there's no inner PDU in IP, Dot1Q and IPv6

  • Buffer length check issues on Dot11QosData

  • Use AF_INET6 flag when opening L3 IPv6 socket

  • Check expecter size properly on DNS::extract_metadata

  • Several unused parameter warnings

  • CCMP decryption issue when Dot11QoSData has a TID != 0