zzuf变异器的python实现
pyZZUF的Python项目详细描述
位翻转zzuf变异器的python实现。
不再有os.system、subprocess.check_output和 subprocess.Popen
基本用法
内联
frompyZZUFimport*printpyZZUF('good').mutate()
选项
frompyZZUFimport*zzuf=pyZZUF('good')# Random seed (default 0)zzuf.set_seed(9)# Bit fuzzing ratio (default 0.004)zzuf.set_ratio(0.91)# Offsets and rangeszzuf.set_offset(6)# Only fuzz bytes at offsets within <ranges>zzuf.set_fuzz_bytes([[0,3],[6,EOF]])# Protect bytes and characters in <list>zzuf.set_protected([0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39])# Append more byteszzuf.set_protected("0123456789",True)# Refuse bytes and characters in <list>zzuf.set_refused("abcd")# Append more byteszzuf.set_refused([0x00,0xFF],True)# Permit bytes and characters in <list>zzuf.set_permitted('bad')# Append more byteszzuf.set_permitted('!',True)# Fuzzing mode <mode> ([xor] set unset)zzuf.set_fuzz_mode(FUZZ_MODE_XOR)printzzuf.mutate()
诱变剂
zzuf=pyZZUF('good')fordatainzzuf.mutagen(start=0.0,stop=1,step=0.1):if__debug__:seed,ratio,index=data.get_state()printdata.tostring().encode('hex'),seed,ratio,indexifdata=='bad!':break
前一状态的遗传(肉)
zzuf=pyZZUF('good')fordatainzzuf.mutagen(start=0.0,stop=1,step=0.1,inheritance=True):if__debug__:seed,ratio,index=data.get_state()printdata.tostring().encode('hex'),seed,ratio,indexifdata=='bad!':break
恢复突变状态的流发生器
obj=pyZZUF('good')gen=obj.mutagen(start=0.0,stop=1,step=0.01)whileTrue:try:data=gen.next()seed,ratio,index=data.get_state()if__debug__:printdata.tostring().encode('hex'),seed,ratio,indexifseed==20:# Set next state of generator (<seed>, <ratio>).# In this example, it makes an infinite loop!gen.send((0,0.0))ifdata=='bad!':breakexceptStopIteration:break
身份检查
$ echo -n "The quick brown fox jumps over the lazy dog"| zzuf -r0.04 | hd 000000005468652071756963 6b 206272 6f 57 6c 20|The quick broWl |0000001066 4f 5820 6a 75 6f 707324 6f 7675722074|fOX juops$ovur t|00000020686521 6c 61 7a 782066 6f 67|he!lazx fog| 0000002b $ python -c "import pyZZUF, sys; sys.stdout.write(pyZZUF.pyZZUF('The quick brown fox jumps over the lazy dog', ratio=0.04).mutate().tostring())"| hd 000000005468652071756963 6b 206272 6f 57 6c 20|The quick broWl |0000001066 4f 5820 6a 75 6f 707324 6f 7675722074|fOX juops$ovur t|00000020686521 6c 61 7a 782066 6f 67|he!lazx fog| 0000002b
安装
pip install pyZZUF
注释*
使用PyPy加速