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.