import pytest import requests import time from scapy.all import * @pytest.mark.usefixtures("get_config_instance") def test_76_vlan(get_config_instance): # Define ethernet and IP/TCP layers eth = Ether() ip = IP(src='10.0.0.2', dst='10.0.0.1') # TCP header tcp = TCP(sport=8080, dport=80) # Define VLAN tags outer_vlan = Dot1Q(vlan=10) # Assemble request http_request = "GET /vlan HTTP/1.1\r\nHost: example.com\r\n\r\n" pkt = eth / outer_vlan / ip / tcp / http_request sendp(pkt, iface = get_config_instance.get_traffic_interface()) # Ethernet header eth = Ether() # Outer VLAN tag outer_vlan = Dot1Q(vlan=100) # Inner VLAN tag # IP header ip = IP(src='10.0.0.1', dst='10.0.0.2') # TCP header tcp = TCP(sport=80, dport=8080) # HTTP response http = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<html>Hello World!</html>" # Assemble packet pkt = eth / outer_vlan / ip / tcp / Raw(load=http) # Show packet pkt.show() # Send packet sendp(pkt, iface= get_config_instance.get_traffic_interface()) time.sleep(5) url = get_config_instance.get_clickhouse_addr() data = '''SELECT method FROM access WHERE ts > now()-20 AND host = 'example.com' AND ip = '10.0.0.2' AND url = '/vlan' LIMIT 1;'''.encode('utf-8') check = requests.post(url, data=data, verify=False) assert "GET" in check.text
标签:10.0,pkt,get,python,ip,vlan,TCP,镜像,scap From: https://www.cnblogs.com/mango1997/p/18150342