This project is read-only.


SMProxy allows you to run a local "server" which you can connect to with a Minecraft client. It will then feed all of your traffic to the server of your choosing, and vice-versa. In the process, it is able to log all traffic for later viewing. SMProxy is always started from the command line, and is compatible with Mono.

Basic Usage

SMProxy.exe [server address]

This usage will listen for traffic on, and will feed traffic to [server address]. Connect to with your Minecraft client to connect and start logging.

Advanced Usage

Usage: SMProxy.exe [flags] [server address]
-o [file]: Set output to [file].  Default: output.txt
-p [port]: Set local endpoint to listen on [port].  Default: 25564
-f [filter]: Logs only packets that match [filter].
        [filter] is a comma-delimited list of packet IDs, in hex.
        Example: -f 01,02 would restrict output to handshake and login packets.
        Alternatively, you can do -!f [filter] for the opposite behavior.
-sc: Suppress client.  Suppresses logging for client->server packets.
-ss: Suppress server.  Suppresses logging for server->client packets.
-ep: Enable profiling.  Logs speed of transmission.
-ap [packet]: Adds an additional packet.  This can prevent packet handling
        errors when testing new versions of the Minecraft protocol.

        Packet Format: [name]:[id (hex)]:[direction]:[values]
        Direction is one or both of the characters 'C' and 'S', for each
        side of the connection that is sending the packet.
        Example for the pre-existing entity equipment packet:
        -ap EntityEquipment:S:05:int,short,short,short
        Do not use spaces in the packet name.
        Valid data types:
        boolean, byte, short, int, long, float, double, string, and slot.

        Custom packets added with this flag will override the existing packet.

Specifying Custom Packets
Using the -ap (add packet) flag, you can specify custom packets that will either overwrite existing packets, or add new ones to the proxy protocol implementation. You should give them a name for logging, a direction of transmission, a packet ID byte, and a structure. For example, the Player Position & Look packet could be re-implemented with the following flag:

-ap PlayerPositionAndLook:0D:CS:double,double,double,double,float,float,boolean

Last edited Mar 15, 2012 at 8:54 PM by sircmpwn, version 10


No comments yet.