Scapy抓包以及IP首部检验和计程序实现Python实现

把本学期所学的知识,自己做的课程设计,分享一下。

原理

     IP首部检验和原理:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。

程序流程图

代码

from scapy.all import *
import struct
ipNum = 0
def sumcheck(head, ichksum):
    # 置0
    checksum = 0
    # IPV4报文头部长度
    headlen = len(head)
    print("IPV4报文头部长度:", headlen)
    if headlen % 2 == 1:
        head += b&#
posted @ 2019-07-17 14:20  9529  阅读(452)  评论(0)    收藏  举报