Open-source tool · Rust + Java

Burp-TCP

A Rust TCP relay and Java extension that bring desktop traffic into Burp Suite for inspection and manual testing.

RustJava 21SOCKS5ProtobufBurp Montoya API

Open-source tool

Tool overview

The problem

How do I inspect desktop traffic outside an HTTP proxy?

Approach

I routed TCP connections through a Rust SOCKS5 relay, with controls provided by a Java extension in Burp Suite.

Result

Inspect captured bytes, pause traffic in either direction, and resend data from Burp Suite. Source code and automated tests are available on GitHub.

Source code / Built with Rust and Java

Architecture

The relay carries application traffic; the Burp extension controls capture and interception.

  1. 01Desktop application
  2. 02Rust SOCKS5 relay
  3. 03TCP target

Java Burp extension · WebSocket + Protobuf

01

The problem

An HTTP proxy does not cover every desktop protocol. I needed a way to inspect and intercept raw TCP traffic in Burp Suite, without treating each captured chunk as a complete application message.

02

How it works

An asynchronous Rust SOCKS5 relay captures traffic in both directions. The Java extension adds interception controls, traffic history and a repeater that sends data once each time you trigger it, all inside Burp Suite.

Implementation

Features

  1. 01SOCKS5 CONNECT relay bound only to loopback
  2. 02TCP capture in both directions, with timestamps and offsets
  3. 03Optional manual interception in either direction
  4. 04Traffic history, hex and text views, and a repeater
  5. 05WebSocket and Protobuf for communication between components
  6. 06Windows CI builds and automated tests

Scope

Limitations

  • Does not decrypt TLS
  • Does not support UDP
  • Captures TCP chunks; does not reassemble complete protocol messages
  • Holding a stream can cause application heartbeat timeouts

Source code

siberfaqih/burp-tcp

Review the implementation and tests on GitHub.

View GitHub repository