处理 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 存储输出字符的数量放进参数列表的下一个变量中

posted @ 2016-09-26 16:27  LandFlow  阅读(381)  评论(0编辑  收藏  举报