Esempio n. 1
0
class MacAddresses:
    def __init__(self):
        self.__mac_lookup = MacLookup()
        self.__mac_lookup.load_vendors()
        self.__mac_addresses = self.__fetch_mac_addresses()

    def __call__(self):
        return self.__mac_addresses

    # MACアドレスの取得
    def __fetch_mac_addresses(self):
        mac_addresses = {}
        for name, interface in ifcfg.interfaces().items():
            address = interface['ether']
            mac_addresses[name] = {
                'address':
                address,
                'vendor':
                self.__lookup_org_by_mac_address(address)
                if address is not None else None,
            }
        return mac_addresses

    # MACアドレスからベンダを照会する
    # mac_vendor_lookupが存在しないMACアドレスを投げると例外吐いて死にやがるのでこういう邪悪なコードになりました
    def __lookup_org_by_mac_address(self, mac_address):
        oui = MacAddresses.translate_oui(mac_address)
        return self.__mac_lookup.lookup(
            mac_address
        ) if oui in self.__mac_lookup.async_lookup.prefixes else None

    # MACアドレスからOUIを抽出して返す
    @staticmethod
    def translate_oui(mac_address):
        oui = mac_address.replace(':', '').replace('-', '').upper()
        try:
            int(oui, 16)
        except ValueError:
            raise InvalidMacAddressException(
                '{} contains unexpected character'.format(mac_address))
        if len(oui) > 12:
            raise InvalidMacAddressException(
                '{} is not a valid MAC address (too long)'.format(mac_address))
        if type(oui) == str:
            oui = oui.encode('utf8')
        return oui[:6]
Esempio n. 2
0
from scapy.all import *
# import local, modified version of mac_vendor_lookup
from mac_vendor_lookup import MacLookup

mac = MacLookup()
mac.load_vendors()


def find_mac(mac_address):
    return mac.lookup(mac_address)


"""
Show send/receive 
"""


def PacketHandler(p):
    sn = p.addr2
    rc = p.addr1
    print(str(sn) + ' -> ' + str(rc))
    print(find_mac(sn) + ' -> ' + find_mac(rc))
    print("\n")


sniff(iface="wlp3s0mon", prn=PacketHandler)
Esempio n. 3
0
from datetime import datetime
import matplotlib.pyplot as plt
import pyshark
import os
import sys
from mac_vendor_lookup import MacLookup
import csv
import numpy as np

roundOffSecond = 10

mlu = MacLookup()
mlu.load_vendors()

# sources = []
tvs = {}  # time versus source


def add_data_to_dict(packet):
    source = packet.source[0:17]
    destination = packet.destination[0:17]
    # time = packet.time.split('.')[0]
    # time = myround(int(time),roundOffSecond)
    global time

    if source and destination:
        # global sources
        global tvs
        # sources.append(source)
        if time not in tvs:
            tvs[time] = [source]
Esempio n. 4
0
from mac_vendor_lookup import MacLookup

parser = argparse.ArgumentParser()
parser.add_argument("--iface", help='Interface to capture data', required=True)
parser.add_argument("--debug",
                    help='Enable debug',
                    required=False,
                    action='store_true')
parser.add_argument("--cont",
                    help='load previous',
                    required=False,
                    action='store_true')
args = parser.parse_args()

macdb = MacLookup()
macdb.load_vendors()

run = True
wigle_flag = False
if Wigle.AUTH == '':
    wigle_flag = True


def signal_handler(sig, frame):
    global run
    run = False
    print('Bye! ;)')
    sys.exit(0)


signal.signal(signal.SIGINT, signal_handler)