MC百科社群

标题: 通过溢出玩家数据来踢出玩家(如禁人书)和防范它的方法 [打印本页]

作者: 31415    时间: 2020-2-12 09:31
标题: 通过溢出玩家数据来踢出玩家(如禁人书)和防范它的方法
这个技术引起我的注意大概还是自在2b2t中了禁人塔的招之后哈哈哈。原理非常简单,往一个区块里面塞大量带数据的东西,比如说牌子或者是命了很长名字的方块,一加载这个区块,你就要下载极大量的数据导致被服务器踢出——error:badly compressed packet-size ofxxx is larger than protocol maxium of 2097152那么原因就很明确了——数据包大小超过了协议的许可,2097152字节。想让一个玩家一个数据包下载这些东西最简单的两个方法就是往一个区块里面放大量数据或者是往他的背包里面放大量数据然后刷新他的物品栏。用书做到这一点应该是最简单的,因为一本书最多可以写12800个字符,而用unicode编码复制过来一个标点是2个字节。这么算下来83本书就足够让他滚蛋了,也就是3盒子书,里面每一个格都放上这种书,不需要堆叠。当然大多数情况下不需要3盒子,两盒子就够了因为他还要加载别的东西,而3盒子可以保证他下一次登陆服务器还会继续被踢下来,和ban掉没啥区别。
牌子应该是一个比较容易搞出来的带数据的方块,每一个牌子可以塞下上百个标点,但是你还是要放千把来个牌子才有这个效果,做起来不容易。

至于这张图,我没有成功重现。。。也不知道这个命名怎么回事。
还有关于防范的问题。最简单的防范方法是利用补丁或者是类似于Bigger Packets Please  的mod解决,简单的扩大这个允许值。
还有就是像future科学家端的防禁人书功能那样简单的通过不读取书的数据来避免连续被踢。还有就是后台监控大数据量物品和区块来提前避免
最后,看起来一些mod也会无意间引起这种问题。单机模式数据包再大都没事,但是一旦上了服务器就是一个灾难

作者: 封兽·鵺    时间: 2020-2-18 02:40
感谢分享 终于知道怎么解决某些MOD的数据包过大了
作者: 31415    时间: 2020-2-18 21:04
封兽·鵺 发表于 2020-2-18 02:40
感谢分享 终于知道怎么解决某些MOD的数据包过大了

最大的危险不是在这里,最大的危险是通过填满区块让区块大小超过1024kb导致卸载区块的时候回档刷东西
作者: QQ酱61136    时间: 2020-2-18 21:27
31415 发表于 2020-2-18 21:04
最大的危险不是在这里,最大的危险是通过填满区块让区块大小超过1024kb导致卸载区块的时候回档刷东西 ...

那岂不是可以毁别人的家
作者: 封兽·鵺    时间: 2020-2-19 00:45
31415 发表于 2020-2-18 21:04
最大的危险不是在这里,最大的危险是通过填满区块让区块大小超过1024kb导致卸载区块的时候回档刷东西 ...

但是自己玩的时候最蛋疼的地方就是这个数据包过大导致的被服务器踢出
作者: 31415    时间: 2020-2-19 09:17
封兽·鵺 发表于 2020-2-19 00:45
但是自己玩的时候最蛋疼的地方就是这个数据包过大导致的被服务器踢出

但是单机不会因为数据包过大被t掉,但是会导致区块回档
作者: Mr.Pumpkin    时间: 2020-10-11 18:50
Minecraft用的字符串编码是UTF-8
一个汉字一般是3bytes
生僻字可能会有4bytes甚至6bytes




欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科