减少蜜罐bug之UnicodeDecodeError

背景

昨天,在开发onvif蜜罐的过程中,发现针对3702端口的扫描行为,payload并不是十分规矩,蜜罐收到部分扫描的数据包后,会出现崩溃的情况。排查发现传入的扫描数据为:b'<\xaa>\x00'.decode(),报错信息为:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in position 1: invalid start byte

回忆之前做MQTT蜜罐时遇到的十六进制数据解码出错的问题,立刻想到了,网络中对蜜罐的扫描行为,不仅有ascii的编码方式,也存在十六进制的扫描方式。蜜罐需要做的是,尽量减少报错和崩溃,记录下尽可能多的信息。

TODO

其实,TCP和UDP类型的蜜罐在解码过程中,最好使用try做好解码的错误控制,完全就可以避免这种问题产生。

try:
    onvif_info_dict["data"] = data.decode("ascii")
except UnicodeDecodeError:
    onvif_info_dict["data"] = ''.join(['%02X ' % b for b in data])
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容