模糊测试工具Sulley开发指南(1)——安装Sulley(多图,超详细)

article/2025/10/7 18:05:12

    本教程是针对的是windows上面的安装,至于其他系统的安装有时间的话会贴出来,本教程翻译自OpenRCE/Sulley-GitHub-Wiki官网教程,但是里面有一些错误我会更正指出。值得一提是,我是在win10 64位系统下面完成本次安装和运行(64位系统运行安装32位程序是可以的,反之却不行的哟),所以本教程对任何系统都适用。
    咱们先来看看安装Sulley需要什么的工具,如下表:

库/工具描述下载链接
MinGWMinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW|MinGW预编译的二进制安装包
Python这个就不多解释了,整个Sulley都是用python来写的,推荐python版本2.7.9中的32位版本 因为对于后面的库来说兼容性最强,安装的时候bug也少Python 2.7.9 x86 |Python 2.7.9 x64
Git这个工具不用多说了,用来获取Sulley源项目Git
Pydbg我们使用的Sulley是OpenRCE里面三大项目之一,作为三大项目的另一知名项目,它的影响力是很大的,它是用纯python来编写的,32位调试器,相当于WinDbg.git clone https://github.com/Fitblip/pydbg.git (是OpenRCE/pydbg的一个分支,包含安装脚本)
libdasmPydbg依赖于pydasm,libdasm包含pydasm。所以我们必须安装编译libdasm,值得注意的是sulley官网给的libdasm的下载链接已经失效了,在这里我们给出新的链接libdasm google上的,可能要翻墙|我自己上传的
PCapy和pypcap一样都是不同的封装,都是用的libpcap;pcapy是某些人对pypcap不满才搞出来的,更容易使用的版本。git clone https://github.com/CoreSecurity/pcapy.git
WinPcapwinpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。WinPcap
ImpacketPython第三方网络协议实现包,提供很多底层接口,实现例如NMB, SMB1-3 and MS-DCERPC等底层的协议git clone https://github.com/CoreSecurity/impacket.git

    所以,我们要完成sulley的安装,必须完成

  • pydbg(调试模块)
  • pcapy(抓包模块)
  • Impacket(网络协议包模块,底层网络)

Step 1 下载和安装MinGW

    推荐直接使用预编译好的二进制安装包,如果您使用了第一种方式,在安装界面选择package里面勾选:1)mingw32-base - Base Package 2)mingw32-gcc-g++ - C++ Compiler 3)mingw32-gcc-objc - Objective-C Compiler

    安装MinGW的过程和一般程序的安装过程一样,值得注意的是在勾选界面进行如图所示的选择就可以了:sulley-MinGW

Step 2 下载和安装Python

    安装过程我就不详细说了,网上有很多教程的,这里我还是推荐安装2.7.9 32位版本。

Step 3 下载和安装Git(可选)

    这是可选的步骤,如果你下载了Git,那么获取github上面的项目会变得简单,因为后面的项目只会用到git clone这个命令;如果你没下载Git,那也没关系,在之后的git clone https://xxxxx.com命令直接打开https://xxxxx.com这个网站就行,然后点击右上角的download下载zip包就行啦。

Step 4 设置环境变量

    接下来就是配置环境变量,使得git python MinGW命令能在cmd中使用,如图:环境变量

Step 5 git下载pydbg并安装

    通过git clone https://github.com/Fitblip/pydbg.git 命令来获取pydbg的最新版本,如图:git pydbg

往后的git clone命令的结果图片就不贴出来了,都是这样操作的

    接着,进入pydbg目录,在cmd目录下执行python setup.py install命令,如图:pydbg install

    是不是感觉已经安装完pydbg了?其实并没有,就像上文说的,pydbg依赖于libdasm,所以是没有完全安装完的,如果我们此时进入python命令行,执行import pydbg命令会出现Import Error错误!,如图:import error

Step 6 下载libdasm并安装

    这一步就是安装libdasm,先安装其extension模块,再安装其主要模块,这里是非常容易出现错误的地方,如果出现了什么bug可以在底下评论,大家一起解决。

下载的libdasm解压后目录\pydasm\>python setup.py build_ext -c mingw32running build_extbuilding 'pydasm' extension
...省略...
下载的libdasm解压后目录\pydasm\>python setup.py installrunning installrunning buildrunning build_extrunning install_libcopying build\lib.win32-2.7\pydasm.pyd -> C:\python27\Lib\site-packagesrunning install_egg_infoWriting C:\python27\Lib\site-packages\pydasm-1.5-py2.7.egg-info...省略...

如图所示:install pydasm

    我们现在试试import pydbg和import pydasm会不会出错,如下图:如图所示:success

Step 7 下载Sulley并验证

    我们开始下载Sulley主工程,git clone https://github.com/OpenRCE/sulley.git 下载完以后进入sulley目录,运行如下命令来检测process_monitor.py是否能运行,没有import errors:

下载Sulley所在目录>python process_monitor.py
ERR> USAGE: process_monitor.py<-c|--crash_bin FILENAME> filename to serialize crash bin class to[-p|--proc_name NAME]     process name to search for and attach to[-i|--ignore_pid PID]     ignore this PID when searching for the target process[-l|--log_level LEVEL]    log level (default 1), increase for more verbosity[--port PORT]             TCP port to bind this agent to

Step 8 下载Pcapy和WinPcap Dev Kit

    git clone https://github.com/CoreSecurity/pcapy.git 和下载 WinPcap Dev Kit(WinPcap开发者版本,主要使用到这里的头文件和lib),并把下载的WinPack放在c:\Sulley\目录下(当然你可以选择自己的方式)。

Step 9 编译安装pcapy

    进入pcapy的目录,运行以下代码:

pcapy的目录>python setup.py build_ext -c mingw32 -I "C:\sulley\WpdPack\Include" -L "C:\sulley\WpdPack\Lib"(主要是包含这两个目录)
running build_ext
building 'pcapy' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
creating build\temp.win32-2.7\Release\win32
...省略...
pcapy的目录>python setup.py install
running install
running build
running build_ext
running install_lib
copying build\lib.win32-2.7\pcapy.pyd -> C:\python27\Lib\site-packages
running install_data
creating C:\python27\share
creating C:\python27\share\doc
creating C:\python27\share\doc\pcapy
copying README -> C:\python27\share\doc\pcapy
...省略...

pcapy

这里是非常容易出现错误的地方,如果出现了什么bug可以在底下评论,大家一起解决。

Step 10 下载和安装WinPcap

    您是不是感觉已经pcapy安装完了呢,其实并没有,如果此时我们进Python命令行执行import pcapy命令会发现Import Error:DLL not fond错误,如图:error

    这是因为我们还没有安装WinPcap,这些DLL就缺失了,下载WinPcap,然后进行安装(一直next就ok拉),最后我们再次运行一下import pcapy命令,就会发现没有任何问题啦,如图:
success

Step 11 下载和安装Impacket

    git clone https://github.com/CoreSecurity/impacket.git下载Impacket包,然后进入目录执行install命令:

Impacket的目录>python setup.py install
running install
running build
running build_py
creating build
creating build\lib
creating build\lib\impacket
copying impacket\ImpactDecoder.py -> build\lib\impacket
copying impacket\ImpactPacket.py -> build\lib\impacket
copying impacket\nmb.py -> build\lib\impacket
copying impacket\ntlm.py -> build\lib\impacket
copying impacket\smb.py -> build\lib\impacket
copying impacket\structure.py -> build\lib\impacket
copying impacket\uuid.py -> build\lib\impacket
copying impacket\__init__.py -> build\lib\impacket
creating build\lib\impacket\dcerpc
...省略...

Step 12 最后一步-运行network_monitor.py

    最后就是运行network_monitor.py来确保模块安装成功!如图所示:
network
    其中Network Device List就是网卡列表啦,OK,大功告成!我们可以start fuzzing!

PS:在这里我提供安装sulley所需的上述所有的安装包供大家下载,懒人必备:所有安装包打包

后记

    Sulley的安装步骤就是麻烦,接下来我会更新两篇内容,一篇是主要介绍一下sulley的一些概念,第二篇真实案例,来对那些有漏洞的ftp服务器来进行fuzz测试,希望大家继续关注。


http://chatgpt.dhexx.cn/article/F99MeMOH.shtml

相关文章

网络socket编程(c语言)

一.socket通信简介 Socket是对TCP/IP协议的封装&#xff0c;Socket本身并不是协议&#xff0c;而是一个调用接口&#xff08;API&#xff09;&#xff0c;通过Socket&#xff0c;我们才能使用TCP/IP协议,主要利用三元组【ip地址&#xff0c;协议&#xff0c;端口】。 socket起…

Socket的通信原理和使用

目录 一、什么是 Socket&#xff1f; 二、Socket 通信过程 2.1 通信过程介绍 2.2 实现TCP建立连接的三次握手过程 三、 使用Socket进行通信【php】 3.1 PHP中Socket常量和函数介绍 3.2 php实现Socket通信过程 一、什么是 Socket&#xff1f; Socket 的中文翻译过来就是“套接…

linux 网络编程socket

前言 socket&#xff08;套接字&#xff09;是linux下进程间通信的一种方式&#xff0c;通常使用C-S&#xff08;客户端-服务端&#xff09;的方式通信&#xff0c;它可以是同一主机下的不同进程间通信或者不同主机的进程通信。 socket是夹在应用层和TCP/UDP协议层间的软件抽象…

什么是socket?socket详解

“一切皆Socket&#xff01;” 话虽些许夸张&#xff0c;但是事实也是&#xff0c;现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff…

【Python】Socket的简单应用

前言 今天“出差在外”&#xff0c;晚上又琐事缠身&#xff0c;实在也没办法特别沉下心去学什么内容&#xff0c;但还是不希望一天一篇的flag就此倒下&#xff0c;只能多多参考别人的博客浅浅学习一下python的socket应用&#xff0c;后续课内做实验了&#xff0c;学习更深入的…

http和socket关系

一、先说下HTTP网络协议栈 二、连接过程 三、重点来了&#xff0c;TCP套接字编程&#xff0c;也就是所谓的socket 四、通过比较发现http和socket完全是两个不同的概念&#xff0c;http是应用层的&#xff0c;socket是传输层和网络层的&#xff0c;http要基于socket实现。httpcl…

SOCKET函数详解

socket原理 1.socket socket位于应用层和TCP/IP协议通信中间&#xff0c;抽象成一组接口 1.服务端首先初始化Socket(),然后和接口进行绑定bind()和监听listen(),然后调用accept()进行阻塞。 2.客户端初始化socket(),然后调用connect&#xff08;&#xff09;与服务端进行连接…

用大白话解释什么是Socket

好好学习&#xff0c;天天向上 本文已收录至我的Github仓库DayDayUP&#xff1a;github.com/RobodLee/DayDayUP&#xff0c;欢迎Star&#xff0c;更多文章请前往&#xff1a;目录导航 前言 我在去年就学习过Java中Socket的使用&#xff0c;但对于Socket的理解一直都是迷迷糊糊…

Socket详解

“一切皆Socket&#xff01;” 话虽些许夸张&#xff0c;但是事实也是&#xff0c;现在的网络编程几乎都是用的socket。 ——有感于实际编程和开源项目研究。 我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff…

Java socket详解

整理和总结了一下经常遇到的问题&#xff1a; 1. 客户端socket发送消息后&#xff0c;为什么服务端socket没有收到&#xff1f; 2. 使用while 循环实现连续输入&#xff0c;是不是就是多线程模式&#xff1f; 3. 对多线程处理机制不是很明白&#xff0c;希望详细讲解…

Socket的详细介绍

文章目录 前言1-Socket出现的原因1.1-Socket出现的背景1.2-Socket解决的问题 2-Socket的组成及关键点2.1-What&#xff1a;什么是Socket&#xff1f;2.2-How&#xff1a; Socket通信实现的步骤2.3-How&#xff1a; Socket编写流程 3-Socket的关键实现3.1-socket()函数创建套接字…

Socket到底是什么?

学习java网络编程一段时间后&#xff0c;突然被问到socket是什么&#xff1f;回答不上来&#xff0c;感觉很尴尬&#xff0c;于是赶紧是查阅资料。 网络由下往上分为 物理层 、数据链路层 、 网络层 、 传输层 、 会话层 、 表现层 和 应用层。 通过初步了解&#xff0c;我知道…

什么是Socket?

一、什么是Socket&#xff1f; 在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff08;套接字主机端口号&#xff09;&#xff0c;它是计算机之间进行通信的一种约定或一种方式。通过 socket这种约定&#xff0c;一台计算机可以接收其他计算机的数据&#xff0c;也…

Socket的学习(一)什么是Socket?

本文参考的是《Socket通信原理》https://www.cnblogs.com/wangcq/p/3520400.html 一、TCP/IP UDP是什么&#xff1f; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;即传输控制协议/网间协议&#xff0c;是一个工业标准的协议集&#xff0c…

整数划分(递归方法)

最近讲到了递归&#xff0c;老师布置了一道经典的整数划分问题&#xff0c;浏览了网上很多代码&#xff0c;还是似懂非懂&#xff0c;想找张清晰地展现递归过程的图片也没有&#xff0c;今天想了想&#xff0c;自己画了一张才发现&#xff0c;想完整清晰地表现这个过程确实真的…

递归算法--整数划分

何为整数划分&#xff1a; 所谓整数划分&#xff0c;是指把一个正整数n写成为 其中&#xff0c; 为正整数&#xff0c;并且 &#xff1b; 为n的一个划分。 如果 中的最大值不超过m&#xff0c;即 &#xff0c;则称它属于n的一个m划分。 例如&#xff1a;6的划分&#xff1a; 6…

递归实现整数划分

递归思想 递归是算法设计中的一种基本而重要的算法。递归方法通过函数调用自身将问题转化为本质相同但规模较小的子问题&#xff0c;是分治策略的具体体现。 不多废话&#xff0c;直接上故事 ->从前有座山&#xff0c;山上有座庙&#xff0c;庙里有个老和尚在给小和尚讲故…

复杂的整数划分

复杂的整数划分 又到了动态规划的时间了&#xff01; 记得我之前讲过的三要素哦 下面这一条题目其实思路并不是非常的难&#xff0c;但是在细节处理上要非常仔细&#xff0c;而且它有3个相互独立的动态规划问题。 总时间限制: 200ms 内存限制: 65536kB 描述 将正整数n 表…

整数划分(DP)

一个正整数 n 可以表示成若干个正整数之和&#xff0c;形如&#xff1a;nn1n2…nk&#xff0c;其中 n1≥n2≥…≥nk,k≥1。 我们将这样的一种表示称为正整数 n 的一种划分。 现在给定一个正整数 n&#xff0c;请你求出 n 共有多少种不同的划分方法。 输入格式 共一行&#x…

【算法】整数划分问题

描述 整数划分问题是算法中的一个经典命题之一。把一个正整数n表示成一系列正整数之和&#xff1a; 正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分数&#xff0c;记作P(n) 。 正整数6有如下11种不同的划分&#xff0c;所以P(6)11。 6 51 42, …