mirror of
https://github.com/ivre/masscanned.git
synced 2025-10-01 22:28:20 +00:00
Fix syn (#102)
* Add unit test for TCP SYN replies * Add functional test for TCP SYN+flag packets * Fix bug: prevent anwsers to SYN+flag first packets * Fix TCP behaviour to match Linux network stack * Update the documentation according to the new behaviour for TCP SYN packets
This commit is contained in:
parent
092a16631c
commit
c132c39ebf
3 changed files with 128 additions and 3 deletions
|
@ -277,3 +277,27 @@ def test_ipv6_tcp_psh_ack():
|
|||
assert TCP in ack, "expecting TCP, got %r" % ack.summary()
|
||||
ack = ack[TCP]
|
||||
assert ack.flags == "A", "expecting TCP A, got %r" % syn_ack.flags
|
||||
|
||||
|
||||
@test
|
||||
def test_tcp_syn_with_flags():
|
||||
# send a SYN packet with other TCP flags, should not be answered
|
||||
for flags in ["SA", "SR", "SF", "SPUCE"]:
|
||||
seq_init = int(RandInt())
|
||||
syn = (
|
||||
Ether(dst=MAC_ADDR)
|
||||
/ IP(dst=IPV4_ADDR)
|
||||
/ TCP(flags=flags, dport=80, seq=seq_init)
|
||||
)
|
||||
syn_ack = srp1(syn, timeout=1)
|
||||
assert syn_ack is None, "expecting no answer, got one"
|
||||
# some should be accepted to imitate a Linux network stack
|
||||
for flags in ["SP", "SU", "SC", "SE", "SPU", "SPC", "SPE", "SPUC", "SPUE"]:
|
||||
seq_init = int(RandInt())
|
||||
syn = (
|
||||
Ether(dst=MAC_ADDR)
|
||||
/ IP(dst=IPV4_ADDR)
|
||||
/ TCP(flags=flags, dport=80, seq=seq_init)
|
||||
)
|
||||
syn_ack = srp1(syn, timeout=1)
|
||||
assert syn_ack is not None, "expecting answer, got None"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue