⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inet.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
字号:
"""Internet packet basicSimple operations like performing checksums and swapping byte orders."""# Copyright 1997, Corporation for National Research Initiatives# written by Jeremy Hylton, jeremy@cnri.reston.va.us#from _ip import *import arrayimport structfrom socket import htons, ntohsdef cksum(s):    if len(s) & 1:	s = s + '\0'    words = array.array('H', s)    sum = 0    for word in words:	sum = sum + (word & 0xffff)    hi = sum >> 16    lo = sum & 0xffff    sum = hi + lo    sum = sum + (sum >> 16)    return (~sum) & 0xffff# Should generalize from the *h2net patterns# This python code is suboptimal because it is based on C code where# it doesn't cost much to take a raw buffer and treat a section of it# as a u_short.def gets(s):    return struct.unpack('H', s)[0] & 0xffffdef mks(h):    return struct.pack('H', h)def iph2net(s):    len = htons(gets(s[2:4]))    id = htons(gets(s[4:6]))    off = htons(gets(s[6:8]))    return s[:2] + mks(len) + mks(id) + mks(off) + s[8:]def net2iph(s):    len = ntohs(gets(s[2:4]))    id = ntohs(gets(s[4:6]))    off = ntohs(gets(s[6:8]))    return s[:2] + mks(len) + mks(id) + mks(off) + s[8:]def udph2net(s):    sp = htons(gets(s[0:2]))    dp = htons(gets(s[2:4]))    len = htons(gets(s[4:6]))    return mks(sp) + mks(dp) + mks(len) + s[6:]def net2updh(s):    sp = ntohs(gets(s[0:2]))    dp = ntohs(gets(s[2:4]))    len = ntohs(gets(s[4:6]))    return mks(sp) + mks(dp) + mks(len) + s[6:]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -