Mac Adressen Generator

Da ich ungern meine eigentliche Mac-Adresse preisgebe, habe ich ein kleines Script geschrieben um Mac-Adressen zu generieren.

Dem Script kann ich über Argumente einen Hersteller (z.B Samsung oder Apple), das Trennzeichen (Komma, strich, Doppelpunkt) und eine Anzahl der zu generierenden Adressen übergeben. Wird nichts übergeben, wird eine zufällig generierte Adresse ausgegeben.

# @Author: DanSch <DanSch>
# @Date:   27-08-2016
# @Email:  dansch@blackit.de
# @Last modified by:   DanSch
# @Last modified time: 27-08-2016

#!/usr/bin/env python
#random-mac.py
#ein kleines Python3 Script zum Erzeugen zufälliger Mac-Adressen

from random import SystemRandom
import argparse
import sys

random = SystemRandom()

separatorListe = {
    'doppelpunkt':':',
    'strich':'-',
    'punkt':'.'
    }

herstellerListe = { #Weitere Mac-Adressen unter https://standards.ieee.org/develop/regauth/oui/oui.csv

    'apple':'FOCBA1',
    'amazon':'F0D2F1',
    'blackberry':'A4E4B8',
    'motorola':'1430C6',
    'samsung':'FO25B7',
    }
def hersteller(hersteller):
    if hersteller == "random":
        #print("Wähle zufälligen Hersteller aus\n")
        herstellermac = random.choice(list(herstellerListe.values()))
        #print(herstellermac)
        hersteller = list(herstellerListe.keys())[list(herstellerListe.values()).index(herstellermac)]
        #print(hersteller)
        return hersteller,herstellermac
    elif hersteller in herstellerListe:
        return hersteller, herstellerListe[hersteller]
    else:
        print("ERROR - Irgend etwas ist bei der Auswahl der Hersteller schief gelaufen")
        sys.exit()

def geraeteKennung ():
    geraet = random.randrange(0x999999)
    geraet = "{0:0{1}X}".format(geraet, 6)
    return geraet

def formatieren (rawmac, separator):
    mac = ""
    rawmac = [rawmac[i:i+2] for i in range(0, len(rawmac), 2)]
    if separator not in separatorListe:
        print("WARNUNG der uebergebene Seperator [" + separator + "] existiert nicht.\n Es wird nun der Standard (:) verwendet")
        separator = ":"
    else:
        separator = separatorListe[separator]
    for i in rawmac:
        mac += i + separator
    return mac[:-1]

def argumente():
    parser = argparse.ArgumentParser(description='Erstelle eine Zufällige Mac-Adresse')
    parser.add_argument('-s', '--separator',
                        choices=sorted(separatorListe.keys()), default="doppelpunkt",
                        help='Wie soll die Mac-Adresse getrennt werden? Default 00:00:00:00:00:00')
    parser.add_argument('-v', '--hersteller',
                        choices=sorted(herstellerListe.keys()), default="random",
                        help='Welchen Hersteller wollen Sie? r=random')
    parser.add_argument('-a', '--anzahl',
                        action="store", dest="anzahl", type=int, default=1,
                        help='Anzahl der zu erstellenden Mac-Adressen')
    return parser.parse_args()


def main ():
    i=0
    args = argumente()
    separatorArgument = args.separator
    herstellerArgument = args.hersteller
    anzahlArgument = args.anzahl
    print("\n"+str(anzahlArgument)+" Mac-Adresse(n) wurde erstellt:")
    while i < anzahlArgument:
        herstellername, herstellermac = hersteller(herstellerArgument)
        mac = herstellermac + geraeteKennung()
        mac = formatieren(mac, separatorArgument)
        print("\nHersteller: "+herstellername+"\nAdresse:    "+mac)
        i +=1

if __name__ == '__main__':
    main()

Das Programm kann mit

python 3 ./random-mac.py

oder mit Parametern

python 3 ./random-mac.py -s doppelpunkt -v samsung

gestartet werden

Teilen macht Spaß:

Posted by Daniel Schwarz

danielschwarz
Daniel Schwarz, macht irgendwas mit Computern in der Nähe von Würzburg, schreibt hier privat auf BlackIT um anderen bei Problemen zu helfen. Macht er mal nichts mit Computern so engagiert er sich ehrenamtlich bei der freiwilligen Feuerwehr in Randersacker und den Maltesern in Würzburg.

Letzte Beiträge: