处理 pcap 中的 mac 二进制字节流为可读格式
import struct # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统 def mac2str(bi_mac): mac = "" for i in bi_mac[:-1]: i_str = i + "\x00\x00\x00" tmac, = struct.unpack("i", i_str) mac += str(tmac) + ":" i_str = bi_mac[-1] + "\x00\x00\x00" tmac, = struct.unpack("i", i_str) mac += str(tmac) return mac
好像官方没有提供把 pcap 中的 Mac 地址字节流转换为可读格式的方法。
自己写了一个,请多指教!
虽说没有内建的,但我在 dpkt 那边找到一个更好的实现比我的好多了......
学习一个
def mac_addr(address): """Convert a MAC address to a readable/printable string Args: address (str): a MAC address in hex form (e.g. '\x01\x02\x03\x04\x05\x06') Returns: str: Printable/readable MAC address """ return ':'.join('%02x' % ord(b) for b in address) # 16进两位数,字母用小写表示
python format 字符说明:
%% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中