fragment missing test with scapy

Page content

다음과 같이 scapy를 이용해서 fragment를 쉽게 만들 수 있다.

from scapy.all import *

dip="10.0.0.1"
payload=" "*1000

packet=IP(dst=dip)/UDP(dport=0x1234)/payload
 
frag_list=fragment(packet,fragsize=500)
 
counter=1
for fragment in frag_list:
  print "Packet no%d" %counter
  print 

  fragment.show()
  counter+=1
  send(fragment)

frag_list에서 counter 변수를 확인해서 전송하지 않으면 간단하게 fragment가 수신되지 않은 경우에 시험할 수 있음.

필요하면 frag_list의 순서를 뒤집는 것도 가능하고, 각 fragment의 offset값을 조정하거나 패킷 크기를 변경하면 다른 비정상 경우도 쉽게 시험할 수 있다.

scapy interactive tutorial