Upload files to 'Test_Cases'
This commit is contained in:
parent
54ee4d528c
commit
b23fe8f36f
50
Test_Cases/IP_Checksum_Calculator.py
Normal file
50
Test_Cases/IP_Checksum_Calculator.py
Normal file
@ -0,0 +1,50 @@
|
||||
# Code has been taken from https://www.codeproject.com/Tips/460867/Python-Implementation-of-IP-Checksum
|
||||
# Example is provided at https://www.thegeekstuff.com/2012/05/ip-header-checksum/
|
||||
|
||||
def ip_checksum(ip_header, size):
|
||||
|
||||
cksum = 0
|
||||
pointer = 0
|
||||
|
||||
#The main loop adds up each set of 2 bytes. They are first converted to strings and then concatenated
|
||||
#together, converted to integers, and then added to the sum.
|
||||
while size > 1:
|
||||
cksum += int((str("%02x" % (ip_header[pointer],)) +
|
||||
str("%02x" % (ip_header[pointer+1],))), 16)
|
||||
size -= 2
|
||||
pointer += 2
|
||||
if size: #This accounts for a situation where the header is odd
|
||||
cksum += ip_header[pointer]
|
||||
|
||||
cksum = (cksum >> 16) + (cksum & 0xffff)
|
||||
cksum += (cksum >>16)
|
||||
|
||||
return (~cksum) & 0xFFFF
|
||||
|
||||
|
||||
if __name__=="__main__":
|
||||
|
||||
header = {}
|
||||
|
||||
header[0] = 0x45
|
||||
header[1] = 0x00
|
||||
header[2] = 0x00
|
||||
header[3] = 0x28
|
||||
header[4] = 0x00
|
||||
header[5] = 0x02
|
||||
header[6] = 0x00
|
||||
header[7] = 0x00
|
||||
header[8] = 0x28
|
||||
header[9] = 0x06
|
||||
header[10] = 0xfd
|
||||
header[11] = 0x5f
|
||||
header[12] = 0xc0
|
||||
header[13] = 0xa8
|
||||
header[14] = 0x0a
|
||||
header[15] = 0x14
|
||||
header[16] = 0xc0
|
||||
header[17] = 0xa8
|
||||
header[18] = 0x0a
|
||||
header[19] = 0x0a
|
||||
|
||||
print("Checksum is: %x" % (ip_checksum(header, len(header)),))
|
Loading…
x
Reference in New Issue
Block a user