# Scapy Fuzz 模塊解析
很久以來,scapy都是一個(gè)交互式發(fā)包的神器,因?yàn)槎ㄖ扑詮?qiáng)大,借助scapy可以方便實(shí)現(xiàn)很多功能,但是對于其很多功能,并沒有人給予很多深入的解釋,因此在此茍且用自己粗糙的語言嘗試解析一遍scapy源碼。
# Fuzz模塊
scapy在用戶手冊中,提到一個(gè)用戶模塊,就是fuzz功能
```
>>>send(IP(dst="target")/fuzz(UDP()/NTP(version=4)),loop=1
................
Sent 16 packets.
```
然后我們來解析下發(fā)送的數(shù)據(jù)包

# 源碼解讀 Fuzz模塊
## field 字段對fuzz的配置
```
I:\code\scapy\scapy\fields.py:
1081?
1082? class ByteEnumKeysField(ByteEnumField):
1083:? ? """ByteEnumField that picks valid values when fuzzed. """
1084? ? ? def randval(self):
1085? ? ? ? ? return RandEnumKeys(self.i2s)
....
1087?
1088? class ShortEnumKeysField(ShortEnumField):
1089:? ? """ShortEnumField that picks valid values when fuzzed. """
1090? ? ? def randval(self):
1091? ? ? ? ? return RandEnumKeys(self.i2s)
....
1093?
1094? class IntEnumKeysField(IntEnumField):
1095:? ? """IntEnumField that picks valid values when fuzzed. """
1096? ? ? def randval(self):
1097? ? ? ? ? return RandEnumKeys(self.i2s)
```
可以看到每個(gè)域,都對fuzz中字段變化方式做了一定探索
## field 配置按鈕