Skip to content

A program that sniffs Albion Online network packets.

License

Notifications You must be signed in to change notification settings

TheCaerleonCrow/tcc-sniffer

Repository files navigation

ATTENTION

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.


Packets

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...

How to build the executable?

I have only used this on Windows. Linux/Mac users will have to figure things out themselves.

Requirements(Windows):

  • Install NPCAP (Look for the Npcap 1.60 installer link.)
  • Visual Studio (suggest 2022)
  1. Open the solution file in Visual Studio.
  2. Select Build from the menubar, then select Publish.
  3. Click the Publish button.

How do Albion's packets work?

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.

Command Line

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

License

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.

About

A program that sniffs Albion Online network packets.

Resources

License

Stars

Watchers

Forks

Languages