http://git.kernel.org/cgit/linux/kernel/git/jberg/iw.git/tree/scan.c?id=v3.17#n1401.

    Positional arguments:
    data -- bytearray data to read.

    Returns:
    Dictionary of parsed data with string keys.

def get_vendor(data):
    """http://git.kernel.org/cgit/linux/kernel/git/jberg/iw.git/tree/scan.c?id=v3.17#n1401.

    Positional arguments:
    data -- bytearray data to read.

    Returns:
    Dictionary of parsed data with string keys.
    """
    if len(data) < 3:
        return dict(('Vendor specific: <too short> data', ' '.join(format(x, '02x'))) for x in data)
    key = data[3]

    if bytes(data[:3]) == ms_oui:
        if key in wifiprinters and wifiprinters[key].flags & 1:
            return get_ie(wifiprinters[key], key, data[4:])
        return dict(('MS/WiFi {0:02x}, data'.format(key), ' '.join(format(x, '02x'))) for x in data[4:])

    if bytes(data[:3]) == wfa_oui:
        if key in wfa_printers and wfa_printers[key].flags & 1:
            return get_ie(wfa_printers[key], key, data[4:])
        return dict(('WFA {0:02x}, data'.format(key), ' '.join(format(x, '02x'))) for x in data[4:])

    unknown_key = 'Vendor specific: OUI {0:02x}:{1:02x}:{2:02x}, data'.format(data[0], data[1], data[2])
    unknown_value = ' '.join(format(x, '02x') for x in data[3:])
    return {unknown_key: unknown_value}