← back
sourcesniffer
github.com/daverlon/sourcesniffer
Kotlin · Networking · Reverse Engineering · Pcap4J
Overview
sourcesniffer is a low-level networking framework that implements the Source Engine netchannel protocol from scratch. It enables real-time decoding, inspection, and manipulation of game traffic at the bit level.
This entire project was developed and tested in local, controlled, and isolated environments, to research video game networking protocols and security. The project contains zero code that provides an unfair advantage and cannot be used to monitor network communications without permission.
Almost all of the (outdated) Source Engine's network message protocol is available in Valve's csgo-demoinfo.
Updated versions of the Source Engine protocol use asymmetric encryption, Perfect Forward Secrecy (PFS), IP protection, and several other real-time authentication checks.
The video shows a Windows machine running Counter-Strike: Source (CS:S) streamed via Moonlight (client) and Sunshine (host).
My MacBook Air (M1) is running the proxy server in IntelliJ, forwards all the client's network packets to a local dedicated CS:S server running on the Windows computer.
The game connects to the proxy, then the proxy automatically decodes all packets and modifies the client's viewangles via SVC_FixAngle in every packet.
This causes the client's viewangles to spin, without any software on the Windows computer controlling it.
It is possible to 'inject' packets into an ongoing conversation on the same local network, without any proxy connection. Using this framework I was able to make my client send chat messages to my local, isolated test server.
This did cause weird effects on the client such as graphical glitches or lag when spammed due to Seq Ack desyncs.
The project was built to explore protocol behavior, message injection, and real-time control of client-server communication without access to official, up-to-date implementations. Tested only on local, isolated environments.
Core Capabilities
System Design
Execution Modes
Notable Features
Technical Challenges
What I Learned
Current Status
Future Work