Неверно сформированный IP Scapy - PullRequest
0 голосов
/ 06 ноября 2019

Моя цель - разработать скрипт, который может отправлять IP-пакеты любому хосту на любой другой хост в другой подсети. Прямо сейчас все работает, за исключением того, что мой IP-пакет искажен, поэтому scapy не может его отправить.

def sendIPMessage(interfaceName, dst_ip, routerIP, message):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.bind(("", port))

    src_addr = get_mac_address(interface=interfaceName)

    my_ip = get_ip_address(interfaceName)
    netmask = ipaddress.ip_address(dst_ip) in ipaddress.ip_network(my_ip)
    if netmask is True:  # if dst is in the same network
        arp_MAC = sendArpMesage(interfaceName, dst_ip)
    else:
        arp_MAC = sendArpMesage(interfaceName, routerIP)

    ether = Ether(src=str(src_addr), dst=str(arp_MAC))
    print(ether.show())

    size = len(message) + 14
    ip = IP(src=my_ip, dst=dst_ip, proto=17, ihl=5, len=size, ttl=5, chksum=0)
    #print(ip.show())

    payload = Raw(message)

    packet = ether / ip / msg
    del packet[IP].chksum
    packet = packet.__class__(bytes(packet)) # same as packet.show2()

    print(packet.show())

    success = send(packet)

    if success is not None:
        print(success.show)
    else:
        print("success is None")

Вот информация о шоу ()

Begin emission:
*Finished sending 1 packets.

Received 1 packets, got 1 answers, remaining 0 packets
###[ Ethernet ]### 
  dst       = 4e:98:22:86:f6:75
  src       = 00:00:00:00:00:11
  type      = LOOP

None
###[ Ethernet ]### 
  dst       = 4e:98:22:86:f6:75
  src       = 00:00:00:00:00:11
  type      = IPv4
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 28
     id        = 1
     flags     = 
     frag      = 0
     ttl       = 5
     proto     = udp
     chksum    = 0xe9c2
     src       = 192.168.1.101
     dst       = 10.0.0.1
     \options   \
###[ UDP ]### 
        sport     = 21608
        dport     = 26995
        len       = 8297
        chksum    = 0x7320
###[ Padding ]### 
           load      = 'a test'

None
.
Sent 1 packets.
success is None

И вот как сейчас выглядит wireshark enter image description here enter image description here

Я не уверен, что проблема в том, что значения контрольной суммы не совпадают, но любая помощь в создании этого пакета будет оценена

...