WireShark utf-8
Netexpert.cn又有新 Toy发布,这次是一个 WireShark的加强版本。
众所周知,Wireshark 是一个开源的网络分析软件,是“万恶的资本主义国家”率先实现了共产主义,把近百万行的代码贡献给全世界的好东东之一。WireShark可以支持上千种协议,数以百计的来自世界各国的开发人员为其贡献过代码,其也可以运行在从Windows 32/64位环境到MacOS, 各种Linux发布版本以及 HP/UX, FreeBSD/NetBSD/Solaris等各类操作系统之上。
有诸多好处,不过 WireShark有他的软肋,因为毕竟主要是美国同志开发的,所以所有的思维方式、支持角度主要都考虑了英语环境。尽管我们不奢望像微软操作系统一样来个全中文界面,甜美的中文女性电话支持服务,但至少期望能够获得一些工作上的便利,对中文的协议解析和分析提供好的支持。
比如下图可以看到,一个中文的主机请求,在 WireShark里就变成了一堆<d6><d0><b9<fa>的编码。相信看到这堆编码,无论是什么样的高手都会心情暗淡、假装镇定、只能视而不见……
好在WireShark的图形化界面使用了 glib/gtk2 这个开源的第三方库,而这个第三方库已经支持了utf-8编码,这样就使让 WireShark显示中文的能力成为可能。
通过修改WireShark解码核心(被称为EPAN),增加了将字符串转换为 utf8编码的字符,然后传送给用户界面显示。WireShark立即成为了会说中国化的洋鬼子—大山。
WireShark使用了不同的机制处理 Column 和解码的 Field,因此还要进一步增加代码让解码的部分能够支持中文。

嗯,现在看上去好像挺完美了。不光是ftp/netbios,包括dns/http等各类协议都可以解析显示中文了。
甚至打开一个网页以后,原先在解码里看到的乱哄哄的字符显示,现在也可以完整地看到中文的解析。
完成这样的修补以后,似乎已经大功告成了。不过打开同一个 trace 文件却发现,解码分析的速度足足下降了10 倍!这怎么可以,不过稍微想想也合理,每个字符串都要去进行 utf8的重组,这种字符串处理效率却是没指望。所以还要加段代码,如果是英文就不要进行 utf8再回炉另造,因为ascii和utf8 好在还是兼容的。经过这样的处理,性能终于回到掌握,毕竟一个文件中,中文字符串还是比较少的。
不过在解析部分协议的时候,发现了另外一个问题,那就是有些解码器直接就支持 utf-8编码的字符串生成。在传递到我们的 utf8 核心的时候,我们的代码就会把已经 utf8编码的字符当作本地语言(GBK)再加工一遍,这样的结果就惨不忍睹了。因此在 utf8 核心中还要加入对输入字符串编码的判别功能。
经过完善,WireShark utf8 核心的netexpert专门版本就完成了。目前已经放在http://www.netexpert.cn/wireshark 可供下载。 所有的最终的源代码也可以直接获得,方便我们做进一步修改或者编译到更多操作系统环境中使用。希望经过一段时间的完善,这些代码可以贡献给wireshark项目,这样的话,在网络分析领域,我们中国也算加入了共产国际了。
By Vader



Recent Comments