-
Notifications
You must be signed in to change notification settings - Fork 0
/
helper.py
71 lines (54 loc) · 1.91 KB
/
helper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import socket
import os
import re
# import psutil
from requests import get
# try:
# import ifcfg
# except ImportError:
# print("SOMETHING GOES WRONG")
# def fill_network_enum():
# networks = []
# private_ip = get_private_ip()
# networks.append((private_ip, f"Private: {private_ip}", ""))
# public_ip = get_public_ip()
# networks.append((public_ip, f"Public: {public_ip}", ""))
# return networks
# # WORKS ONLY ON UNIX
# def get_ip_data(ether_adapter):
# ip_data = os.popen(f'ifconfig {ether_adapter}')
# for line in ip_data:
# match2 = re.search(r'inet +(\d+.\d+.\d+.\d+)', line)
# if match2:
# ip = match2.group(0)
# return ip
# # LOCAL IP'S
# def get_ip(family):
# for interface, snics in psutil.net_if_addrs().items():
# for snic in snics:
# if snic.family == family:
# yield (interface, snic.address)
# PUBLIC IP'S
def get_ips_ifcfg():
return [(interface['inet4'][0], f"{name[:6]}:{interface['inet4'][0]}", "")
for name, interface in ifcfg.interfaces().items() if interface['inet4'] and name.startswith(('lo', 'eth', 'wlp'))]
def get_public_ip():
return get('https://api.ipify.org').text
def get_private_ip():
''' Requires intenet connection '''
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
def fill_network_enum():
networks = []
# ipv4_networks = get_ip(socket.AF_INET) # returns generator
private_ip = get_private_ip()
networks.append((private_ip, f"Private: {private_ip}", ""))
public_ip = get_public_ip()
networks.append((public_ip, f"Public: {public_ip}", ""))
# networks.append(get_ips_ifcfg())
# for network, address in ipv4_networks:
# networks.append((address, f"{network[:6]}:{address}", ""))
return networks