scapy/test/linux.uts

56 lines
1.3 KiB
Plaintext

% Regression tests for Linux only
# More informations at http://www.secdev.org/projects/UTscapy/
############
############
+ Linux only test
= TCP client automaton
~ automaton netaccess linux needs_root
* This test retries on failure because it often fails
import os
import time
import signal
def handler(signum, stack_frame):
raise Exception("Timer expired !")
tmp = signal.signal(signal.SIGALRM, handler)
SECDEV_IP4 = "203.178.141.194"
IPTABLE_RULE = "iptables -%c INPUT -s %s -p tcp --sport 80 -j DROP"
# Drop packets from SECDEV_IP4
assert(os.system(IPTABLE_RULE % ('A', SECDEV_IP4)) == 0)
success = False
for i in xrange(10):
tmp = signal.alarm(5)
try:
r, w = os.pipe()
t = TCP_client(SECDEV_IP4, 80, external_fd={ "tcp": (r,w) })
tmp = os.write(w, "HEAD / HTTP/1.0\r\n\r\n")
t.runbg()
time.sleep(0.5)
response = os.read(r, 4096)
tmp = signal.alarm(0) # cancel the alarm
t.stop()
os.close(r)
os.close(w)
if response.startswith("HTTP/1.1 200 OK"):
success = True
break
else:
time.sleep(0.5)
except Exception as e:
print e
# Remove the iptables rule
assert(os.system(IPTABLE_RULE % ('D', SECDEV_IP4)) == 0)
assert(success)