Jump to content

[1.7.10] Can I get the ModID from a custom packet


Nuchaz

Recommended Posts

I am trying to secure my custom packets better because I found out you can just send packets to any mod if you know the channel id of that packet and some folks are using this to cheat. There is a mod out there that will send a packet to my mod from a hacked client on a server and can be used to spawn anything. I've already taken steps to fix it. I've even doubled up on security for the issue, but I wouldn't mind adding a 3rd layer.

 

In my server packet handler, where I receive my event.packet, I would like to get the ModID of the mod that sent the packet, than I can just compare with my own ModID and return anyone using a different mod. So, is there a way to get the ModID from a custom packet?

 

Thanks.

Link to comment
Share on other sites

You are kinda wrong:

1) Yes, anybody can send packets to anybody.

2) Yes, you can "hack"-send packet.

, BUT:

1) In all mods, all logic happens on server.

2) Client only tells server that key/button in gui was pressed.

3) Server does all logic and processing.

4) You can't change server code from client.

5) If client mod part does logic and sends to server packet, what he has to do AND server does that, then it's wrongly coded mod and must NOT be used on servers.

 

So, as you can see, if you hack packet, nothing will happen, because server does logic and server knows that this player can't do that. And if mod that you saw has "client the almighty controller" logic, then you should report it to mod author.

Link to comment
Share on other sites

I'm aware of all that, and I agree with you (except the nothing will happen part). All my logic is server side. I've even fixed the problem. I just want extra security to know that someone can't hack my packets. Stuff CAN happen when packets get hacked, they can trigger server logic that shouldn't be triggered unless under certain circumstance. The circumstance is irrelevant though, since it is a straightforward question.

 

The question still stands, can I get the ModID from a custom packet?

Link to comment
Share on other sites

I'm aware of all that, and I agree with you (except the nothing will happen part). All my logic is server side. I've even fixed the problem. I just want extra security to know that someone can't hack my packets. Stuff CAN happen when packets get hacked, they can trigger server logic that shouldn't be triggered unless under certain circumstance. The circumstance is irrelevant though, since it is a straightforward question.

 

The question still stands, can I get the ModID from a custom packet?

As far as i know, (if you are using SimpleNetwrkWrapper,) no. Only by writing it yourself...

 

Link to comment
Share on other sites

Network security 101:

There is NO POSSIBLE WAY to trust the packets you receive.

The client ALWAYS lies.

So no, there is no possible way to add this protection in, you just need to verify that the client should be doing what it's telling you it's doing.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.