python计算数据包校验和

19 篇文章 0 订阅
3 篇文章 0 订阅

使用python对IP数据报头部进行校验。

源数据包:

python代码:
        全局数组packet中放着20字节的IP数据报首部,校验和为零,通过程序处理将校验和填入packet数组。

packet=['45','00','00','3C','8C','AF','40','00','40','06',
        '00','00',#校验位
        'C0','A8','C9','83',#源IP
        'C0','A8','C9','80',#目的IP
        ]
def DataCheck(Info):
    Data=Info.split(" ")
    sum=0
    for i in Data:
        sum=int('0x'+i,16)+sum
    check=0xffff-((0x0000ffff&sum)+(sum>>16))
    return check

if __name__ == '__main__':
    IPH=''
    for i in range(0,20):
        if i%2==0 or i==19:IPH= IPH+packet[i]
        else:IPH= IPH+packet[i]+' '
    IPHcheck=DataCheck(IPH)
    IPHcheck=str(hex(IPHcheck))[2:]
    IPHcheck=IPHcheck.zfill(4)
    packet[10]=IPHcheck[0:2].upper()
    packet[11] =IPHcheck[2:4].upper()
    print(packet)

输出:['45', '00', '00', '3C', '8C', 'AF', '40', '00', '40', '06', '99', 'B7', 'C0', 'A8', 'C9', '83', 'C0', 'A8', 'C9', '80']

校验和计算原理:https://blog.csdn.net/qq_42196196/article/details/83748044

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值