Skip to content

Instantly share code, notes, and snippets.

@rafalw
Created November 8, 2019 14:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafalw/f12d117e65c7d15a4b7c90d6ebf150e2 to your computer and use it in GitHub Desktop.
Save rafalw/f12d117e65c7d15a4b7c90d6ebf150e2 to your computer and use it in GitHub Desktop.
Informacje o producencie karty sieciowej wg. adresu MAC
import urllib.parse
from io import BytesIO
from sys import argv
from pycurl import Curl, error
# Pozyskiwanie danych producenta karty sieciowej o wskazanym adresie sprzętowym MAC
def get_mac_vendor(mac_address, url_api = 'https://macvendors.co/api/', result_form = '/csv'):
vendor_result = BytesIO()
c = Curl()
c.setopt(c.URL, url_api + mac_address + result_form)
c.setopt(c.WRITEDATA, vendor_result)
try:
c.perform()
except error as e:
print("Error: \"" + e.args[1] +"\"")
return None
else:
vendor_list = vendor_result.getvalue().decode('UTF-8').split('\",\"')
c.close()
vendor_result.close()
return vendor_list
if __name__ == "__main__":
print("Pozyskiwanie danych producenta karty sieciowej w oparciu o adres sprzętowy MAC.")
print("Program korzysta z API serwisu https://macvendors.co \n")
if len(argv) < 2:
print("Prawidłowe wywołanie: ")
print(argv[0] + " XX:XX:XX:XX:XX:XX")
print("gdzie XX:XX:XX:XX:XX:XX to adres MAC karty sieciowej.")
else:
vendor_list = get_mac_vendor(argv[1])
if vendor_list:
print("===============================================================================")
print(" Company: " + vendor_list[0].replace("\"", ""))
print(" MAC prefix: " + vendor_list[1].replace("\"", ""))
print(" Address: " + vendor_list[2].replace("\"", ""))
print("Start (HEX): " + vendor_list[3].replace("\"", ""))
print(" End (HEX): " + vendor_list[4].replace("\"", ""))
print(" Country: " + vendor_list[5].replace("\"", ""))
print(" Type: " + vendor_list[6].replace("\"", ""))
print("===============================================================================\n")
else:
print("Nie można pobrać danych producenta.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment