= 创作分享 =
百科杂谈
通过溢出玩家数据来踢出玩家(如禁人书)和防范它的方法 ...
31415

通过溢出玩家数据来踢出玩家(如禁人书)和防范它的方法

31415 于 2020-2-12 09:31 ( 4年前 ) [复制链接] [显示全部楼层] [打印]
这个技术引起我的注意大概还是自在2b2t中了禁人塔的招之后哈哈哈。原理非常简单,往一个区块里面塞大量带数据的东西,比如说牌子或者是命了很长名字的方块,一加载这个区块,你就要下载极大量的数据导致被服务器踢出——error:badly compressed packet-size ofxxx is larger than protocol maxium of 2097152那么原因就很明确了——数据包大小超过了协议的许可,2097152字节。想让一个玩家一个数据包下载这些东西最简单的两个方法就是往一个区块里面放大量数据或者是往他的背包里面放大量数据然后刷新他的物品栏。用书做到这一点应该是最简单的,因为一本书最多可以写12800个字符,而用unicode编码复制过来一个标点是2个字节。这么算下来83本书就足够让他滚蛋了,也就是3盒子书,里面每一个格都放上这种书,不需要堆叠。当然大多数情况下不需要3盒子,两盒子就够了因为他还要加载别的东西,而3盒子可以保证他下一次登陆服务器还会继续被踢下来,和ban掉没啥区别。
牌子应该是一个比较容易搞出来的带数据的方块,每一个牌子可以塞下上百个标点,但是你还是要放千把来个牌子才有这个效果,做起来不容易。
1580471491407.jpg
至于这张图,我没有成功重现。。。也不知道这个命名怎么回事。
还有关于防范的问题。最简单的防范方法是利用补丁或者是类似于Bigger Packets Please  的mod解决,简单的扩大这个允许值。
还有就是像future科学家端的防禁人书功能那样简单的通过不读取书的数据来避免连续被踢。还有就是后台监控大数据量物品和区块来提前避免
最后,看起来一些mod也会无意间引起这种问题。单机模式数据包再大都没事,但是一旦上了服务器就是一个灾难

评分

参与人数 4RF +24 收起 理由
Qian_quan + 1 给大佬递分
封兽·鵺 + 12 干得漂亮
破晓行者 + 5 学到了
重生是希望 + 6 感谢分享

查看全部评分

发表于 2020-2-12 09:31:11 | 显示全部楼层 |阅读模式

回复 | 举报

该帖共收到 7 条回复!
暗黑星 黑芽
感谢分享 终于知道怎么解决某些MOD的数据包过大了
绝对,不再哭泣了。从今以后,我要像小丑那样藏起悲哀而笑着。时而会像幽灵一般渴望,时而会作为愚者定下决断,但就算背负着堕落天使的污秽,我也要在胸中怀抱着花与月,像朝着圣地前行的巡礼者那般继续走下去。
发表于 2020-2-18 02:40:46 | 显示全部楼层

回复 | 举报

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

最大的危险不是在这里,最大的危险是通过填满区块让区块大小超过1024kb导致卸载区块的时候回档刷东西
发表于 2020-2-18 21:04:12 | 显示全部楼层

回复 | 举报

圣神的末影龙
31415 发表于 2020-2-18 21:04
最大的危险不是在这里,最大的危险是通过填满区块让区块大小超过1024kb导致卸载区块的时候回档刷东西 ...

那岂不是可以毁别人的家

点评

完全可以,之前2b2t里面就是有几个无聊的人在炸完一个大基地放出视频后,为了防止别人圣地寻礼,放了ban人塔不过原版做chunk很难,要放几千个牌子  发表于 2020-2-19 09:14
发表于 2020-2-18 21:27:48 | 显示全部楼层

回复 | 举报

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

但是自己玩的时候最蛋疼的地方就是这个数据包过大导致的被服务器踢出
绝对,不再哭泣了。从今以后,我要像小丑那样藏起悲哀而笑着。时而会像幽灵一般渴望,时而会作为愚者定下决断,但就算背负着堕落天使的污秽,我也要在胸中怀抱着花与月,像朝着圣地前行的巡礼者那般继续走下去。
发表于 2020-2-19 00:45:06 | 显示全部楼层

回复 | 举报

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

但是单机不会因为数据包过大被t掉,但是会导致区块回档
发表于 2020-2-19 09:17:49 | 显示全部楼层

回复 | 举报

Mr.Pumpkin
Minecraft用的字符串编码是UTF-8
一个汉字一般是3bytes
生僻字可能会有4bytes甚至6bytes
发表于 2020-10-11 18:50:30 | 显示全部楼层

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表