[Development] ModuleFilter

06/25/2016 20:38 DaxterSoul#1
Hello, I've been working with @DevTekVE; and we've completely rewritten his [Only registered and activated users can see links. Click Here To Register...] to make it less goofy.


The new plugin system allows us to write code specific to their modules and packets accuring between them. We still have a lot of work to do, like UI to distinguish between modules and their packets but the current state already allows us to redirect and therefor analyze or filter every connections between any module in one application.

We're aiming to replace the original GatewayServer and AgentServer with custom ones (replaces filter) and the analysis of this data will let us accomplish that in near time. We still don't know the FULL capabilities of the modular injection, but so far we can say that will allow us to modify more of the server behavior without the need of ASM.

[Only registered and activated users can see links. Click Here To Register...]

We are hoping you contribute to the project as this is a way to start developing a much bigger and stable framework that all of us can us for our servers, for researches and developments. Let's try to give to the Silkroad development community a new focus, and a new purpose.

Here is an example of how the architecture looks like:
[Only registered and activated users can see links. Click Here To Register...]

Please use this thread for questions & discussion regarding development.
06/25/2016 20:48 devtekve#2
#Reserved
08/10/2016 16:56 asdqaz#3
nice release :) 2 notes tho, in PluginBase.cs
Code:
//SPOOF
parentNode.NodeType = redirect.MachineID; // <-- remove the comment from this line
was useful to me to be able to spoof the NodeType too :D
and as i've noticed, for csro-r files at least :p the AgentServer does not certify against the GameServer, it's the other way around :D any ideas ? did ya try using a multi-agent and multi-game setup ?
08/10/2016 18:47 DaxterSoul#4
Quote:
Originally Posted by asdqaz View Post
nice release :) 2 notes tho, in PluginBase.cs
Code:
//SPOOF
parentNode.NodeType = redirect.MachineID; // <-- remove the comment from this line
was useful to me to be able to spoof the NodeType too :D
Spoofing NodeType was just debug code. I had problems certifying when hosting the ModuleFilter on a dev machine.

Quote:
Originally Posted by asdqaz View Post
and as i've noticed, for csro-r files at least :p the AgentServer does not certify against the GameServer, it's the other way around :D any ideas ?
Not familiar with CSRO-R but the architecture should be similar if not the same. A mistake your certification would be my first guess.

Quote:
Originally Posted by asdqaz View Post
did ya try using a multi-agent and multi-game setup ?
No, but it should work by adding related services. That's how the structure was planned.

Yet, this application is not usable outside of development scope as dispatched encrypted packets (for example 0x704C - ITEM_USE_REQ) are incorrectly handled by current [Only registered and activated users can see links. Click Here To Register...] implementation. Iwa's [Only registered and activated users can see links. Click Here To Register...] bypasses this problem being a hook instead of a proxy.
08/12/2016 03:12 asdqaz#5
sry for the late reply
Quote:
Originally Posted by DaxterSoul View Post
Spoofing NodeType was just debug code. I had problems certifying when hosting the ModuleFilter on a dev machine.
works perfectly fine, i've just tested it :D tho i have it configured on the same machine ... for ex i have my gameserver on machineid 2 and the shard on machineid 1, the filter will be on machineid 2 so it's spoofin the 1 into 2 :p

Quote:
Originally Posted by DaxterSoul View Post
Not familiar with CSRO-R but the architecture should be similar if not the same. A mistake your certification would be my first guess.
No, but it should work by adding related services. That's how the structure was planned.
i've kinda miss-worded the problem, i didn't mean anything about the actual certification :) i was referring to the server cords :p more specifically the parent - child relation :) and well i've just tested it :D running 2 agentservers and 3 gameservers :p the only configuration that works is having each of the gameservers be child to farm, shard and the 2 agentservers :D and the agentservers be child to farm, shard and the other agentserver :p note it won't work if it's as u have it now (agentserver being child to gameserver not the other way around) if there are more than 1 gameservers or agenservers :D

Quote:
Originally Posted by DaxterSoul View Post
Yet, this application is not usable outside of development scope as dispatched encrypted packets (for example 0x704C - ITEM_USE_REQ) are incorrectly handled by current [Only registered and activated users can see links. Click Here To Register...] implementation.
sadly didn't know that :) and seems u guys have given up on it :p will give it a few more tries myself tho :)

le: got it workin :p most likely ur packet didn't get accepted and u got dc due to not padding it :D
03/24/2020 13:54 gigola123#6
Hi, sorry for bumping this thread, but I get interessted by filter packet between module, I got the idea by reading your post. My main purpose was to spawn monster without any char logged in. We know that the /spawnmonster_all command is run by the Shard which send the information to the GameServer so I decided to sniff packet between them,

Like @[Only registered and activated users can see links. Click Here To Register...] said, it's really fun to handle 0xA003 packet then spoof any port :D

The main problem using this method is:
- All monster spawn with Unique Status
- All monster spawn with the message "[Monster] has appared.."

And you can spawn NPC also, so for making event is pretty nice system without using any bot for TP then spawn ect..

Here: as you can all unique in radar + Npc spawn from the function

[Only registered and activated users can see links. Click Here To Register...]

Here the packet structure which I sniffed:

SR_GameServer -> SR_ShardManager Service
PING_PACKET
0x7CDC
1 byte uk

SR_ShardManager Service -> SR_GameServer
PONG_PACKET
0xBCDC
empty



+ Bonus spawning 400 NPC

[Only registered and activated users can see links. Click Here To Register...]
03/26/2020 00:40 DaxterSoul#7
Unintentionally leaking an exploit :lul:

While this tool helps to sniff packets I'd advice against using it for a real server. Insert a new custom module into the server certification architecture and just send your packets to which ever module you want.
08/04/2020 09:35 Kai·#8
I would like to know what are those packets mean if you have a documentation or smth, as i get this randomally which causes shardmanager to crash

Code:
[SR_ShardManager] 	MsgID : 0x0 	 21

[SR_ShardManager] 	MsgID : 0x1 	 1

[SR_ShardManager] 	MsgID : 0xE 	 1

[SR_ShardManager] 	MsgID : 0x385F 	 19

[SR_ShardManager] 	MsgID : 0x3864 	 14

[SR_ShardManager] 	MsgID : 0x7005 	 9

[SR_ShardManager] 	MsgID : 0x78F7 	 5

[SR_ShardManager] 	MsgID : 0x7C80 	 14

[SR_ShardManager] 	MsgID : 0xBC80 	 1

[SR_ShardManager] 	MsgID : 0xBCDC 	 317915
08/04/2020 10:22 Devsome#9
Code:
SERVER_FORTRESS_NOTIFY = 0x385F
SERVER_PARTY_DATA = 0x3864
CLIENT_LEAVE_REQUEST = 0x7005
The others should be some ShardManager > GameServer packets, which are not public
05/19/2022 14:19 asuradoll#10
great project