This project is open so others can learn from it.
I do not feel it is ready for public use, so I don't sugggest using it in the current state.
Many things can change, since I'm still experimenting with ideas.
If you have any suggestions or ideas, feel free to open an issue about them.
tcc-sniffer
is a program that collects and decodes network packets relating to Albion Online.
This program does not collect or decode any data that would break the game rules
.
The program will never send any data collected or decoded to anything outside your computer.
The program will run a simple tcp server @ localhost:9999 by default.
For those unaware, localhost is a special ip that only your computer has access to.
You can find a detailed example using nodejs in /examples/
.
This example runs the sniffer in the background, connects to the server, and consumes the data.
These are the packets that get processed and sent out.
- Chat Messages- Silver / Gold Updates
This list will continue to expand as I get to things...
I have only used this on Windows. Linux/Mac users will have to figure things out themselves.
Requirements(Windows):
- Install
NPCAP
(Look for theNpcap 1.60 installer
link.) - Visual Studio (suggest 2022)
- Open the solution file in Visual Studio.
- Select Build from the menubar, then select Publish.
- Click the Publish button.
There are 3 types of packets; Events, Requests, and Responses.
Events are essentially actions that change something.
Requests are asking for something, or just sending something.
Responses are answering a request.
Packets are identified by a special code.
Events have there own Event Codes
.
Requests and Responses share Operation Codes
.
Every packet is packed like a dictionary or table, or more simple; key/value pairs.
The data in the packet has a key, which is a single byte.
The data itself is given to us as a plain object, which we must convert to the actual value type.
Every packet has a key of 252 or 253, which tells us the code that identifies the packet.
252 are events
253 are operations
So, if a packet has 252=63, this is the Chat Message event.
Requests and Responses have a special key, 255, that pairs a Response to a Request.
For example, the client sends a Request where 255 = 10.
Eventually the client will receive a Response where 255 = 10.
Also, they both will have the same code on the 253 key.
Finally, Albion uses the Photon Engine for networking.
Luckily for us, people have already made libraries to decode Photon's packets.
If you're interested in seeing how that works, check out any of these:
To find alot more Albion related projects, visit AO-Data
.
Option | Description | Example |
---|---|---|
--debug | When debugging, the program will log the packet values. | |
--debug-all-packets | This will enable all codes to be debugged. | |
--stop-on-debug | This will stop the program from sending debugged packets on the local network. | |
--events | Only debug these events. | 1,2,3 |
--requests | Only debug these requests. | 1,2,3 |
--responses | Only debug these responses. | 1,2,3 |
Example:
sniffer.exe --debug --debug-all-packets --stop-on-debug --events 1,2,3 --requests 1,2,3 --responses 1,2,3
We use the AGPLv3 License
.
You are free to use this code however you want.
However, you are not allowed to redistribute the code unless your code is also open source.
The nature of this project is delicate, since it looks into the user's network stream, so we need to take special care to be as transparent as possible.
Any closed source projects of this nature are in direct violation of this transparency, and therefore should not be trusted.