高培淇自己做的網(wǎng)站seo優(yōu)化一般包括哪些內(nèi)容
關(guān)于Radamsa
Radamsa是一款高性能的通用模糊測試工具,廣大研究人員可以將其當(dāng)作一個(gè)應(yīng)用程序穩(wěn)定性測試的測試用例生成工具。

工具運(yùn)行機(jī)制
該工具使用簡單,支持自定義腳本開發(fā),可以用于測試程序?qū)Ω袷藉e(cuò)誤和潛在惡意輸入的承受能力。它的工作原理是讀取有效數(shù)據(jù)的示例文件并從中生成有趣的不同輸出。
Radamsa旨在成為適用于所有類型數(shù)據(jù)的通用模糊測試工具。其目標(biāo)是無論程序處理哪種數(shù)據(jù)(無論是xml還是mp3),都能發(fā)現(xiàn)問題,反之,如果找不到錯(cuò)誤,則意味著其他類似工具可能也找不到。這是通過各種啟發(fā)式方法和更改模式來實(shí)現(xiàn)的,這些方法和模式在測試過程中會(huì)發(fā)生變化。
Radamsa是一種基于黑盒測試技術(shù)的模糊測試工具,因此它不需要任何有關(guān)目標(biāo)應(yīng)用程序或數(shù)據(jù)格式的相關(guān)信息。在測試期間,可以將其與覆蓋率分析配對(duì),以在連續(xù)測試運(yùn)行期間提高樣本集的質(zhì)量。
工具要求
支持的操作系統(tǒng)
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本身只是一個(gè)二進(jìn)制文件,沒有外部依賴項(xiàng),我們可以將其移動(dòng)到任意位置并刪除其余部分。
工具使用
使用Radamsa對(duì)通過管道的數(shù)據(jù)執(zhí)行模糊測試:
$ echo "aaa" | radamsaaaaa
這里Radamsa決定在輸入中添加一個(gè)“a”,然后再試一次:
$ echo "aaa" | radamsa:aaa
默認(rèn)情況下,如果未指定特定的隨機(jī)狀態(tài),Radamsa將從 /dev/urandom 中獲取隨機(jī)種子,并且每次啟動(dòng)時(shí)通常都會(huì)看到不同的結(jié)果,但對(duì)于較小的輸入,可能會(huì)經(jīng)??吹较嗤慕Y(jié)果或原始結(jié)果??梢允褂?-s 參數(shù)指定要使用的隨機(jī)狀態(tài),該參數(shù)后跟一個(gè)數(shù)字。需要注意的是,使用相同的隨機(jī)狀態(tài)將導(dǎo)致生成相同的數(shù)據(jù):
$ echo "Fuzztron 2000" | radamsa --seed 4Fuzztron 4294967296
我們還可以使用 -n 參數(shù)生成多個(gè)輸出,如下所示:
$ echo "1 + (2 + (3 + 4))" | radamsa --seed 12 -n 41 + (2 + (2 + (3 + 4?)1 + (2 + (3 +?4))18446744073709551615 + 4)))1 + (2 + (3 + 170141183460469231731687303715884105727))
工具無法保證所有的輸出都是唯一的,但相同的輸出結(jié)果情況還是很罕見的。
現(xiàn)在,我們已經(jīng)拿到了測試用例,接下來就可以將其輸入到待測應(yīng)用程序中了:
$ 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
我們還可以加入無限循環(huán)執(zhí)行測試:
$ gzip -c /bin/bash > sample.gz$ while true; do radamsa sample.gz | gzip -d > /dev/null; done
輸出選項(xiàng)
-o參數(shù) | 意義 | 示例 |
:port | 充當(dāng)給定端口的 TCP 服務(wù)器 | # 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 是第一個(gè)后綴 | $ radamsa -o test-%n.%s -n 100 samples/*.foo |
許可證協(xié)議
本項(xiàng)目的開發(fā)與發(fā)布遵循MIT開源許可協(xié)議。
項(xiàng)目地址
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/