zoukankan      html  css  js  c++  java
  • 处理 pcap 中的 mac 二进制字节流为可读格式

    import struct
    
    # 利用 struct 处理字节流中的mac地址 适用于小端地址操作系统
    def mac2str(bi_mac):
        mac = ""
        for i in bi_mac[:-1]:
            i_str = i + "x00x00x00"
            tmac, = struct.unpack("i", i_str)
            mac += str(tmac) + ":"
        i_str = bi_mac[-1] + "x00x00x00"
        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. 'x01x02x03x04x05x06')
           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 存储输出字符的数量放进参数列表的下一个变量中

  • 相关阅读:
    php str_ireplace()函数 语法
    php str_replace()函数 语法
    php substr()函数 语法
    php implode()函数 语法
    php explode()函数 语法
    php strtok()函数 语法
    php chunk_split()函数 语法
    php strnatcasecmp()函数 语法
    php strnatcmp()函数 语法
    php strncasecmp()函数 语法
  • 原文地址:https://www.cnblogs.com/learn-to-rock/p/5909654.html
Copyright © 2011-2022 走看看