Git Product home page Git Product logo

rawtcp_lib's Introduction

██████╗  █████╗ ██╗    ██╗████████╗ ██████╗██████╗ 
██╔══██╗██╔══██╗██║    ██║╚══██╔══╝██╔════╝██╔══██╗
██████╔╝███████║██║ █╗ ██║   ██║   ██║     ██████╔╝
██╔══██╗██╔══██║██║███╗██║   ██║   ██║     ██╔═══╝ 
██║  ██║██║  ██║╚███╔███╔╝   ██║   ╚██████╗██║     
╚═╝  ╚═╝╚═╝  ╚═╝ ╚══╝╚══╝    ╚═╝    ╚═════╝╚═╝     
                                                   

GitHub release (latest by date) Maintainability GitHub code size in bytes GitHub last commit

RawTCP_Lib

RawTCP is a library to build custom TCP/IP packets from the ground and send/receive them using only raw sockets and the C language.

Features

  • Create custom TCP/IP packets with control over all their fields (including network flags).
  • Automatically build packets' checksums, or request a recalculation manually.
  • Send built packets over raw sockets.
  • NEW: Sniff incoming packets to your device, and operate with them later.

Use cases

You can have a look at my project TCPcannon built on top of this library for an example!

  • Send spoofed network packets (fake source IP/port).
  • Build specific packets for network attacks (e.g SYN flooding).
  • Monitor your device network traffic.
  • Fast integration in your network application.

Note: RawTCP uses the AF_INET address family so it supports both customization of the Network Layer (IP) and the Transport Layer (TCP) headers. Support for the Link Layer will come in future updates.

Installation

RawTCP is built as an static library to facilitate integration with your project.

  1. Download RawTCP and put it in your project directory.

  2. Integrate it in your project

    • METHOD 1: With gcc compiler
    gcc <your-files> libRawTCP_Lib.a
    • METHOD 2 With cmake
    target_link_libraries(<your-target> ${CMAKE_CURRENT_SOURCE_DIR}/libRawTCP_Lib.a)

    Note that you will need to specify the path to the library in both cases if you stored it under a project folder.

  3. Import "RawTCP.h" from a source file whenever you need RawTCP.

Examples

Create a TCP/IP packet

//Packet indicates source=192.168.1.10:8000, dest=192.168.1.20:8080
packet_t packet = build_standard_packet(8000, 8080, "192.168.1.10", "192.168.1.20", 4096, "MyMessage");

Set TCP flag active

RawTCP uses hexadecimal notation for the TCP flags. Multiple flags can be set at the same time by adding their values.

//Setting both SYN and FIN flags
set_TCP_flags(packet, 0x03);

RawTCP manages the recomputation of the checksums automatically.

Sending packet to destination

//Destination port and destination IP are those specified when creating the packet.
rawsocket_send(packet);

IMPORTANT: Raw sockets need root priviliges, so you will need them before you can run this specific function.

Continously sending packets

//Sequence number & checksum automatically updated by OS
packet_t packet = build_standard_packet(...)
while(1){
    rawsocket_send(packet);
}

Sniff incoming TCP packets

//The packet can be used as if it was generated with build_standard_packet()
packet_t packet = rawsocket_sniff();

Issues?

Whether it is a bug, question or suggestion, please open a ticket and I will have a look at it as fast as I possibly can.

LICENSE

This software is licensed under the MIT license. See LICENSE

rawtcp_lib's People

Contributors

fengjixuchui avatar h3xduck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.