Radamsa:一款高性能通用模糊测试工具

news2024/11/14 19:37:14

关于Radamsa

Radamsa是一款高性能的通用模糊测试工具,广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。

工具运行机制

该工具使用简单,支持自定义脚本开发,可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工作原理是读取有效数据的示例文件并从中生成有趣的不同输出。

Radamsa旨在成为适用于所有类型数据的通用模糊测试工具。其目标是无论程序处理哪种数据(无论是xml还是mp3),都能发现问题,反之,如果找不到错误,则意味着其他类似工具可能也找不到。这是通过各种启发式方法和更改模式来实现的,这些方法和模式在测试过程中会发生变化。

Radamsa是一种基于黑盒测试技术的模糊测试工具,因此它不需要任何有关目标应用程序或数据格式的相关信息。在测试期间,可以将其与覆盖率分析配对,以在连续测试运行期间提高样本集的质量。

工具要求

支持的操作系统

GNU/Linux

OpenBSD

FreeBSD

Mac OS X

Windows(使用Cygwin)

软件要求

gcc / clang

make

git

wget

工具安装

$ git clone https://gitlab.com/akihe/radamsa.git

 $ cd radamsa

 $ make

 $ sudo make install # optional, you can also just grab bin/radamsa

 $ radamsa --help

Radamsa本身只是一个二进制文件,没有外部依赖项,我们可以将其移动到任意位置并删除其余部分。

工具使用

使用Radamsa对通过管道的数据执行模糊测试:

$ echo "aaa" | radamsa

 aaaa

这里Radamsa决定在输入中添加一个“a”,然后再试一次:

$ echo "aaa" | radamsa

 :aaa

默认情况下,如果未指定特定的随机状态,Radamsa将从 /dev/urandom 中获取随机种子,并且每次启动时通常都会看到不同的结果,但对于较小的输入,可能会经常看到相同的结果或原始结果。可以使用 -s 参数指定要使用的随机状态,该参数后跟一个数字。需要注意的是,使用相同的随机状态将导致生成相同的数据:

$ echo "Fuzztron 2000" | radamsa --seed 4

 Fuzztron 4294967296

我们还可以使用 -n 参数生成多个输出,如下所示:

$ echo "1 + (2 + (3 + 4))" | radamsa --seed 12 -n 4

 1 + (2 + (2 + (3 + 4?)

 1 + (2 + (3 +?4))

 18446744073709551615 + 4)))

 1 + (2 + (3 + 170141183460469231731687303715884105727))

工具无法保证所有的输出都是唯一的,但相同的输出结果情况还是很罕见的。

现在,我们已经拿到了测试用例,接下来就可以将其输入到待测应用程序中了:

$ echo "100 * (1 + (2 / 3))" | radamsa -n 10000 | bc

 [...]

 (standard_in) 1418: illegal character: ^_

 (standard_in) 1422: syntax error

 (standard_in) 1424: syntax error

 (standard_in) 1424: memory exhausted

 [hang]

或者测试用于编译Radamsa的编译器:

$ echo '((lambda (x) (+ x 1)) #x124214214)' | radamsa -n 10000 | ol

 [...]

 > What is 'ó µ'?

 4901126677

 > $

或测试gzip:

$ gzip -c /bin/bash | radamsa -n 1000 | gzip -d > /dev/null

我们还可以加入无限循环执行测试:

$ gzip -c /bin/bash > sample.gz

 $ while true; do radamsa sample.gz | gzip -d > /dev/null; done

输出选项

-o参数

意义

示例

:port

充当给定端口的 TCP 服务器

# radamsa -o :80 -n inf samples/*.http-resp

ip:port

作为 TCP 客户端连接到 ip 端口

$ radamsa -o 127.0.0.1:80 -n inf samples/*.http-req

-

写入stdout

$ radamsa -o - samples/*.vt100

path

写入文件,%n 是测试用例 #,%s 是第一个后缀

$ radamsa -o test-%n.%s -n 100 samples/*.foo

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

Radamsa:【GitHub传送门】

参考资料

http://www.gnu.org/software/gdb/

Valgrind Home

http://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

strace download | SourceForge.net

tcpflow -- TCP Flow Recorder

http://lcamtuf.coredump.cx/afl/

zzuf – Caca Labs

http://code.google.com/p/bunny-the-fuzzer/

Security Compliance | GitLab

http://code.google.com/p/sulley/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MapCrafter - 定制精美的地图海报! | 限时免费

MapCrafter: 打造个性化城市地图海报的终极工具! 在您的 iPhone、iPad、Mac 或 VisionPro 上轻松制作美丽的城市地图海报,展示您的城市情感与创意。 https://apps.apple.com/cn/app/mapcrafter/id6557037905 为什么选择 MapCrafter? • 城市…

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.7 项目管理原则

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

CTF-web基础 TCP/UDP协议

传输层协议由TCP/UDP协议组成,来控制信息的传输,二者有什么区别呢,TCP比较靠谱,但是UDP速度比较快一点。 TCP协议 Transmission Control protocol, 三次握手:先给服务器传输询问要发消息,然后…

Python语言编制批处理文件管理器

在软件开发和系统管理中,批处理文件(.bat)是一种常见且有用的工具。它们可以自动化重复性任务,简化复杂的操作流程。然而,随着批处理文件数量的增加,管理和执行这些文件可能变得麻烦。今天,我们…

uniapp HarmonyOS项目实战

1. uniapp HarmonyOS项目实战 Dcloud发布了uniapp兼容鸿蒙的文档:Uniapp开发鸿蒙应用 1.1. 说明 (1)鸿蒙开发只支持Vue3,不支持Vue2、不支持plus、但支持nvue (2)nvue编译到鸿蒙后非原生渲染,…

AUTOSAR实战教程 - 模式管理BswM与其他各模块的交互

近日驻厂某OEM,幸得大块的个人时间, 把BswM这一块的内容从ETAS/ISOLAR工具配置到代码实现做了一个全方位的CT. 2024,希望孜孜内卷的汽车人升职加薪! 博主近期写的一首小诗,也一并送给大家,懂的都懂: 在看不到阳光的冬天/ 我染了风寒/ 白天点灯/ 晚上吃药/ 躺在被窝里才敢…

2024上海初中生古诗文大会暑假备考:单选题真题和独家解析

今天是2024年8月3日,现在距离2024年初中生古诗文大会初选还有3个月(11月3日正式开赛),我们继续来看10道选择题真题和详细解析。为帮助孩子自测和练习,题目的答案和解析统一附后。 本专题持续分享,欢迎到我…

C 语言二分查找法

二分查找定义 二分查找法用于查找一个有序数组中某个目标值是否存在,或者接近目标值的元素;相比把 整个数组遍历一次的0(n)复杂度,二分查找可以把复杂度降低到0(logzn): 原理讲解 原来中间的值mid (left right)/ 2,但…

用NSAT-1000实现S参数的自动化测试

在射频技术领域,S参数的准确测量对于保证产品质量至关重要。本文将带您了解NSAT-1000测试系统实现S参数自动化测试的流程。 S参数的测试原理 S参数测试原理是基于网络分析仪,网络分析仪发出一个已知频率和幅度的射频信号,通过网分测量信号得到…

eclipse Web Browser Setting

eclipse Web Browser Setting 默认程序打开浏览器的设置 Windows - Preference - General - Web Browser 没有设置的时候,就是你自己要手动打开浏览器,地址栏敲进去,例如: http://127.0.0.1:7070/FRTIMP_YTFRB_WEB/bin/MainApp.…

PHP高校迎新系统-计算机毕业设计源码08468

摘要 随着高校规模的不断扩大和新生人数的增加,传统的手工登记和管理方式已经无法满足高效、准确的需求。为了提升大学新生入学迎新工作的效率和质量,本研究设计开发了一套高校迎新系统。系统通过信息技术的应用,集成了首页、交流论坛、通知公…

万顺汽车租赁推荐系统

1 项目介绍 1.1 摘要 随着汽车租赁市场的不断发展,为了提升用户体验和管理效率,开发了一套集管理员和用户功能于一体的汽车租赁平台系统。该系统旨在提供便捷的用户信息管理、车辆信息管理、租赁订单管理等功能,以满足管理员和用户的不同需…

DTU、RTU和边缘计算网关的联系与区别

在工业4.0发展浪潮中,物联网助力工业逐渐向智能化发展,各种工业设备相互连接起来形成物联网。而传输层作为物联网体系中十分重要的一环,它是连接物理世界与数字世界的桥梁,是数据的第一入口。 其中,我们经常会使用到三…

探索Python为何成爬虫开发首选

大家在日常生活中会不会有这样的疑惑——为什么在进行网络爬虫开发时,大多数开发者更倾向于选择Python而不是Java。Python在爬虫领域的受欢迎程度背后有多个原因,让我们一起来了解一下。 一、简洁易学的语法 Python以其简洁易学的语法著称,使…

包装类与泛型

泛型与包装类密切相关,在学习泛型前先了解了解包装类吧 包装类 包装类是对应着各种基本数据类型进行包装后产生的引用数据类型 ,是基本数据类型的plus版本。 为什么要设计包装类 因为 Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是…

科普文:微服务之Spring Cloud Alibaba组件熔断过载保护器Sentinel

一、什么是Sentinel Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网:Home alibaba/Sentinel Wiki GitHub 2012年,Sentinel诞生于阿里巴巴,其主要目标是流量控制。…

浅谈几个常用OJ的注册方式

众所周知,好的OJ是成功的一半,但是有些英文OJ的注册很让人伤脑筋。 CodeForces 点进官网 戳这里 然后就会进入这个页面 在这一页里面里填写好信息即可 最后,一个邮件就会发到你的邮箱上,点击其中的链接即可激活账号 AtCoder …

软件测试生命周期、BUG描述与处理策略指南

软件测试的生命周期 需求分析:需求是否完整、是否正确 测试计划:确定由谁测试、测试的起止时间、设计哪些模块 测试设计、测试开发:写测试用例(手工、自动化测试用例)、编写测试工具 执行测试用例 测试评估&…

从文本到图像:深度解析向量嵌入在机器学习中的应用

简介 向量嵌入是机器学习领域中一项极具吸引力且实用的技术,它为多种应用提供了基础支撑,包括自然语言处理(NLP)、推荐系统和搜索算法。无论是推荐引擎、语音助手还是语言翻译器,这些系统的背后都可能运用了向量嵌入技…

ventoy和微pe可以共存吗?ventoy和pe共存使用教程

Ventoy新一代多系统启动U盘解决方案。国产开源U盘启动制作工具,支持Legacy BIOS和UEFI模式,理论上几乎支持任何ISO镜像文件,支持加载多个不同类型的ISO文件启动,无需反复地格式化U盘,插入U盘安装写入就能制作成可引导的…