使用python处理.cap抓包文件实现时间脱敏
根据上一篇学习到的内容,写了一个小脚本,先把时间脱敏功能实现了,因为时间关系,代码暂不优化,当然这样也会对python初学者和网络数据包分析初学者更友好。
定义源文件位置、目标文件位置
PktFile = "E:/temp2/1.cap"
NewFile = "E:/temp2/time.cap"
定义函数,将小端序转换为大端序
def xD(value):
big_endian = int.from_bytes(value[::-1], byteorder='big')
hexadecimal = hex(big_endian)
return hexadecimal
定义第一个报文头位置索引
Index = 24
读取源.cap文件
SourceFile = open(PktFile,'rb')
将字节对象转换为字节数组,这样才能直接修改
BtArray = bytearray(SourceFile.read())
关闭源文件,节省内存空间
SourceFile.close()
定义循环终止条件
DdataLength = len(BtArray)
无限循环直至索引位置超出数组长度
while Index < DdataLength:
# 读取报文头
p = BtArray[Index:Index+16]
# 读取报文的捕获长度
c = int(xD(p[8:12]),16)
# 修改报文头的时间戳高位,这里的高位数值根据实际需要修改,实现时间脱敏
BtArray[Index+1:Index+4] = b'\x00\x00\x00'
# 定义下一个报文头位置索引
Index = Index+c+16
修改后的数据写入目标.cap文件
with open(NewFile,'wb') as f:
f.write(BtArray)
感谢阅读,下期再见。欢迎留言探讨,谢谢!