Split ip46->ip/tcp

This commit is contained in:
gpotter2 2022-02-15 15:27:25 +01:00
parent beefcc9185
commit 5a2b2927d9
4 changed files with 55 additions and 31 deletions

View file

@ -18,7 +18,7 @@ import importlib
import os import os
# Export / other tests # Export / other tests
from .core import test_all from .core import test_all # noqa: F401
DEFAULT_TESTS = [ DEFAULT_TESTS = [
"arp", "arp",
@ -26,11 +26,12 @@ DEFAULT_TESTS = [
"http", "http",
"icmpv4", "icmpv4",
"icmpv6", "icmpv6",
"ip46", "ip",
"rpc", "rpc",
"smb", "smb",
"ssh", "ssh",
"stun", "stun",
"tcp",
] ]
ENABLED_TESTS = DEFAULT_TESTS ENABLED_TESTS = DEFAULT_TESTS

View file

@ -36,6 +36,7 @@ LOG = setup_logs()
TESTS = [] TESTS = []
ERRORS = [] ERRORS = []
# decorator to automatically add a function to tests # decorator to automatically add a function to tests
def test(f): def test(f):
global ERRORS, TESTS global ERRORS, TESTS

50
test/src/tests/ip.py Normal file
View file

@ -0,0 +1,50 @@
# This file is part of masscanned.
# Copyright 2021 - The IVRE project
#
# Masscanned is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Masscanned is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Masscanned. If not, see <http://www.gnu.org/licenses/>.
from scapy.layers.inet import IP, ICMP
from scapy.layers.l2 import Ether
from scapy.sendrecv import srp1
from ..conf import IPV4_ADDR, MAC_ADDR
from ..core import test, check_ip_checksum
@test
def test_ipv4_req():
##### IP #####
ip_req = Ether(dst=MAC_ADDR) / IP(dst=IPV4_ADDR, id=0x1337) / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is not None, "expecting answer, got nothing"
check_ip_checksum(ip_repl)
assert IP in ip_repl, "no IP layer in response"
ip_repl = ip_repl[IP]
assert ip_repl.id == 0, "IP identification unexpected"
@test
def test_eth_req_other_mac():
#### ETH ####
ip_req = Ether(dst="00:00:00:11:11:11") / IP(dst=IPV4_ADDR) / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is None, "responding to other MAC addresses"
@test
def test_ipv4_req_other_ip():
##### IP #####
ip_req = Ether(dst=MAC_ADDR) / IP(dst="1.2.3.4") / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is None, "responding to other IP addresses"

View file

@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with Masscanned. If not, see <http://www.gnu.org/licenses/>. # along with Masscanned. If not, see <http://www.gnu.org/licenses/>.
from scapy.layers.inet import IP, ICMP, TCP from scapy.layers.inet import IP, TCP
from scapy.layers.inet6 import IPv6 from scapy.layers.inet6 import IPv6
from scapy.layers.l2 import Ether from scapy.layers.l2 import Ether
from scapy.packet import Raw from scapy.packet import Raw
@ -25,34 +25,6 @@ from ..conf import IPV4_ADDR, IPV6_ADDR, MAC_ADDR
from ..core import test, check_ip_checksum, check_ipv6_checksum from ..core import test, check_ip_checksum, check_ipv6_checksum
@test
def test_ipv4_req():
##### IP #####
ip_req = Ether(dst=MAC_ADDR) / IP(dst=IPV4_ADDR, id=0x1337) / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is not None, "expecting answer, got nothing"
check_ip_checksum(ip_repl)
assert IP in ip_repl, "no IP layer in response"
ip_repl = ip_repl[IP]
assert ip_repl.id == 0, "IP identification unexpected"
@test
def test_eth_req_other_mac():
#### ETH ####
ip_req = Ether(dst="00:00:00:11:11:11") / IP(dst=IPV4_ADDR) / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is None, "responding to other MAC addresses"
@test
def test_ipv4_req_other_ip():
##### IP #####
ip_req = Ether(dst=MAC_ADDR) / IP(dst="1.2.3.4") / ICMP(type=8, code=0)
ip_repl = srp1(ip_req, timeout=1)
assert ip_repl is None, "responding to other IP addresses"
@test @test
def test_tcp_syn(): def test_tcp_syn():
##### SYN-ACK ##### ##### SYN-ACK #####