网络协议逆向工具netzob安装过程

最近项目任务有需求,想探究一下对未知未加密网络协议的解析。

之前只了解过基本的计算机网络知识,对于具体的网络协议,更多是学术上的认识,而没有工程上的认知与实践。因此对于网络协议解析的工作,可谓是一筹莫展。

各种查找资料,这方面的公开资料还真少,国内外就没多少人在做,别说工程,就学术研究都非常少。为什么?因为太难!

不过非常感谢知乎匿名用户在问题“在网络协议逆向分析方面有哪些值得推荐教材/读物? https://www.zhihu.com/question/26962412”下的回答,让我对协议逆向解析有了基础的认识。

于是乎开始找相应的工具,只要能用就行,至少让我感受一下对未知协议的逆向分析过程也好。

可是找遍了国内外所有资源,几乎没有可用的工具,只有一个Netzob的开源项目可以参考。

那就开干吧!

1 Netzob简介

从国内一些地方找到了相关信息,但是资源太少,于是借了VPN出去逛了逛。Netzob本来有个官方网站,但是现在其域名居然过期了在重新拍卖,所以没有找到最详细的信息。还好其作为开源的python项目,在PyPI https://pypi.org/project/Netzob/上面有相应的文档和资源,不过不是很全面。

其官方介绍是:

Netzob是一种用于逆向工程,流量生成和通信协议模糊测试的开源工具。此工具允许通过被动和主动进程推断协议的消息格式(词汇表)和状态机(语法)。其目的是通过半自动方式利用生物信息学和语法推理算法,将最先进的学术研究带入运营领域。

Netzob适用于逆转网络协议,结构化文件以及系统和流程(IPC和与驱动程序和设备的通信)。一旦推断,可以在我们的流量生成引擎中使用协议模型,以允许模拟真实且可控的通信端点和流。

Netzob处理不同类型的协议:文本协议(如HTTP和IRC),基于分隔符的协议,固定字段协议(如IP和TCP)和可变长度字段协议(如基于TLV的协议)

作者为:

 法国学者Georges Bossert和Frédéric Guihéry

其最后版本及维护时间为:

v1.0.2 - 2016-04-30
既然有资源,必然有教程。可是翻了一大圈,国外还真没有这个版本的教程,甚至连老的版本也没有,看样子研究的人研究是很少很少啊。

回到国内,非常感谢liyihao17 https://blog.csdn.net/liyihao17 在其博客中对老版本Netzob-0.4.1使用及开发的相关说明,还有bitpeach https://www.cnblogs.com/bitpeach/p/4111742.html 对该版本在ubuntu上安装过程的详细介绍,让我有信心在ubuntu上对netzob进行安装和试用。

本来是想就装个老版本试试,但是过程简直不要太痛苦,不知道为什么,按照上述二位作者的方法,ubuntu12里面各种错误,折腾了好久还是没法安装,主要错误在包依赖关系。最后没办法,只能放弃对老版本的安装。

后面自己冷静下来梳理了一下,决定对其最新版本进行尝试性安装,没想到还成功了!

下面是对安装试用过程的简要记录,主要记录下一些坑人的地方。

2 Netzob-1.0.2 ubuntu安装与试用

2.1 安装

这个最新的版本是python3,于是选择了ubuntu18作为搭载平台,其自带了python3.6,可以省一些事情。

如果对ubuntu非常熟悉的话,按照官方文档来安装应该是不会太费力,但是我想在这里与大多数和我一样的新手来分享学习安装过程。

官方文档显示如下的步骤:

This file depends on setuptools which like few other modules cannot be automatically installed. The reason why, you have to manually install the following bunch of prerequisites before initiating Netzob’s install process.

python3
python3-dev
python3-setuptools
build-essential
We also highly recommend to install the following additional dependencies:

python-sphinx (for the documentation)
看起来好简单,但是真实安装时遇到许多问题

问题1:速度慢

资源都是在国外,所以贼慢,怎么办?首先换成国内的linux资源,这里推荐aliyun的镜像资源。

问题2:用apt-get安装,各种包依赖关系错误,基本无法按步骤安装

可能是因为Netzob大量调用了第三方库和包,而且开发时间较长同时缺少资金资源来良好地维护,所以其包依赖关系较为复杂。这时我首先安装了aptitude这个包管理工具,它在处理包依赖关系方面好过apt太多

问题3:执行Netzob最后安装时,提示pcapy错误

首先我想那就装个pcapy吧,可是居然还错!!!又各种想办法,后来发现不是pcapy的问题,而是ubuntu上面没有pcapy需要的libpcap库,于是把这个libpcap装上

问题4:最后安装Netzob过程中,各种死机/中断

分析了一下,死机和中断多发生在下载一些小的依赖包的过程中,应该是网络问题,所以一旦发生了因下载导致的中断和假死,就果断结束进程,重新安装。

就这样,折腾了一天,终于给装上了。

2.2 利用pycharm试用

这个最新版本是没有图形界面的,如果直接用,效果不太友好。自然要用个IDE来调用和调试,也可以满足个性化任务需求。

于是在ubuntu上面安装了pycharm,准备按照liyihao17的方法来用一下,结果又遇到了问题。

问题1 明明安装了netzob,但是解释器找不到

python开发学习也有过一些经验,但是这种问题是第一次遇到,最后发现问题简直让人无语。原来我将工程名和文件名直接命名为了netzob,和外部依赖的netzob文件冲突了,解释器会自动选择本地文件进行关联,于是导致无法调用真实的netzob。改个工程名和文件名就行了

问题2 程序无法读取相应的pcap文件

这个错误没有详细的提示,就是说无法读取,简直让人无从下手。开始逐一排查问题,最后发现是权限问题。原来ubuntu下的pycharm默认工程文件放在了root文件夹下面,影响了程序的读取权限。于是果断在其它位置建立了工程项目,问题解决。

最初发表于CSDN
---------------------
作者:Traveller__Lee
来源:CSDN
原文:https://blog.csdn.net/qq_20728177/article/details/87903659
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/Traveller-Lee/p/10426025.html