參考資料:
https://some-ip.com/standards.shtml
https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_PRS_SOMEIPProtocol.pdf
https://www.autosar.org/fileadmin/standards/R22-11/CP/AUTOSAR_SWS_SOMEIPTransportProtocol.pdf
https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_PRS_SOMEIPServiceDiscoveryProtocol.pdf
main.py
import os import struct from scapy.all import * import scapy.all as scapy data = bytearray( b"\xff\xff\x81\x00" b"\x00\x00\x00\x20" b"\x00\x00\x00\x01" b"\x01\x01\x02\x00" b"\x80\x00\x00\x00" # service discovery b"\x00\x00\x00\x10" b"\x06\x00\x00\x00" # entry b"\x12\x34\x56\x78" b"\x00\x00\x00\x03" b"\x00\x00\x44\x65" ) packet = scapy.Ether() / scapy.IP() / scapy.UDP() packet[scapy.IP].dst = "192.168.0.1" packet[scapy.IP].src = "192.168.0.2" packet[scapy.UDP].dport = 1234 packet[scapy.UDP].sport = 5678 packet[scapy.UDP].payload = Packet(data) try: scapy.wrpcap("test.pcap", packet, append=False) except Exception as e: print(f"ERR: {e}")
執行
$ python3 ./main.py $ wireshark test.pcap