python計算資料包校驗和
阿新 • • 發佈:2018-12-02
使用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