Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/88: Рейтинг темы: голосов - 88, средняя оценка - 4.86
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071

Как получить список всех устройств, подключенных к WiFi

18.06.2020, 17:14. Показов 20955. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как я могу получить список всех устройств, подключенных к WiFi встроенными средствами Python? И можно ли с помощью Python скажем, включить телевизор?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2020, 17:14
Ответы с готовыми решениями:

Получить список ip устройств, подключенных к своей WIFI точке
всем привет! Входные данные: Android 11 и выше. Как получить список устройств (IP), подключенных к моей WIFI точке доступа? Я...

Список подключенных устройств по WIFI
Здравствуйте. Кто-нибудь подскажите как получить список устройств подключенных в сети WIFI. То есть например имя и ip.

Список устройств, подключенных к точке доступа wifi
Нужно получить список устройств, подключенных к точке доступа. Не знаю даже как подступиться к этому заданию. Может сможете дать какое-то...

68
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.06.2020, 18:34
https://pypi.org/project/wifi/#description
https://github.com/awwong1/wifi-scanner
И еще примерно 4 тысячи репозиториев на github: https://github.com/search?l=Py... positories

Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
встроенными средствами Python?
У Python нет (и не может быть) встроенных средств для подобной частной задачи. Их нет ни в одном языке программирования.
Поэтому все реализуется ручками.

Хотя, впрочем, на линуксе, судя по коду одной из библиотек, получить список Wi-Fi карт компьютера просто (но не тех девайсов, которые к ним подключены):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def getWNICnames():
    """ Extract wireless device names from /proc/net/wireless.
        Returns empty list if no devices are present.
        >>> getWNICnames()
        ['eth1', 'wifi0']
    """
    device = re.compile('[a-z]{2,}[0-9]*:')
    ifnames = []
 
    fp = open('/proc/net/wireless', 'r')
    for line in fp:
        try:
            # append matching pattern, without the trailing colon
            ifnames.append(device.search(line).group()[:-1])
        except AttributeError:
            pass
    # if we couldn't lookup the devices, try to ask the kernel
    if ifnames == []:
        ifnames = getConfiguredWNICnames()
 
    return ifnames
Но на винде нет procFS, чтоб читать оттуда всю системную инфу про девайсы.

Добавлено через 26 минут
P.S. А вообще для низкоуровневой работы с беспроводной инфраструктурой давно существует хакерский кроссплатформенный пакет Aircrack-ng(offsite), который встроен в Kali linux (возможно, в какие-то еще дистрибутивы).
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
18.06.2020, 19:30  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
https://pypi.org/project/wifi/#description
Он не работает на Windows.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.06.2020, 19:42
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
Он не работает на Windows.
Я взял первую случайную ссылку из несколько тысяч на гитхаб.
Второй - wifi-scanner - должен работать, так как является просто интерфейсом к кроссплатформенной сетевой либе scapy.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
18.06.2020, 19:58  [ТС]
Garry Galler,
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
встроенными средствами Python
.

Добавлено через 15 секунд
Хотя бы с помощью requests.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.06.2020, 20:02
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
Хотя бы с помощью requests.
requests это http клиент (http - это верхний уровень модели OSI) - к сетевым девайсам работающим на нижних уровнях OSI отношения не имеет.
Wi-Fi протокол канального уровня - предпоследний в модели OSI, ниже только кабель с электрическими сигналами.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
18.06.2020, 20:16  [ТС]
Garry Galler, решил делать через ctypes. Использую wlanapi.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.06.2020, 20:40
https://fraoustin.fr/old/python_wifi.html
1
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
18.06.2020, 20:44  [ТС]
Garry Galler, главная задача в том, что мне надо включить телевизор.

Добавлено через 19 секунд
И если можно отрисовать на нём что-нибудь.

Добавлено через 1 минуту
А потом, раз уж начали выключить телевизор
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.06.2020, 02:32
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
надо включить телевизор... И если можно отрисовать на нём что-нибудь.
Какой смысл браться за задачи, в которых вы ничего не понимаете?
Если вы не были в курсе на каком уровне работает Wi-FI, то как вы сможете что-то передать устройству не зная базовых основ?
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
19.06.2020, 10:33  [ТС]
Garry Galler, а где можнот узнать про wifi и как работать на python с wifi?

Добавлено через 1 час 5 минут
Python
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import ctypes
import ctypes.wintypes as wintypes
 
wlanapi = ctypes.windll.wlanapi;
 
def customresize(array, new_size):
    return (array._type_ * new_size).from_address(ctypes.addressof(array))
 
class GUID(ctypes.Structure):
    _fields_ = [
            ('Data1', ctypes.c_ulong),
            ('Data2', ctypes.c_ushort),
            ('Data3', ctypes.c_ushort),
            ('Data4', ctypes.c_ubyte*8),
        ]
class WLAN_INTERFACE_INFO(ctypes.Structure):
    _fields_ = [
            ("InterfaceGuid", GUID),
            ("strInterfaceDescription", ctypes.c_wchar * 256),
            ("isState", ctypes.c_uint)
        ]
class WLAN_INTERFACE_INFO_LIST(ctypes.Structure):
    _fields_ = [
            ('NumberOfItems', wintypes.DWORD),
            ('Index',         wintypes.DWORD),
            ('InterfaceInfo', WLAN_INTERFACE_INFO * 1),
        ]
DOT11_SSID_MAX_LENGTH = 32
class DOT11_SSID(ctypes.Structure):
    _fields_ = [
            ("SSIDLength", ctypes.c_ulong),
            ("SSID",       ctypes.c_char * DOT11_SSID_MAX_LENGTH)
        ]
WLAN_MAX_PHY_TYPE_NUMBER = 0x8
class WLAN_AVAILABLE_NETWORK(ctypes.Structure):
    _fields_ = [
            ("ProfileName",                 ctypes.c_wchar * 256),
            ("dot11Ssid",                   DOT11_SSID),
            ("dot11BssType",                ctypes.c_uint),
            ("NumberOfBssids",              ctypes.c_ulong),
            ("NetworkConnectable",          ctypes.c_bool),
            ("wlanNotConnectableReason",    wintypes.DWORD),
            ("NumberOfPhyTypes",            ctypes.c_ulong),
            ("dot11PhyTypes",               ctypes.c_uint * WLAN_MAX_PHY_TYPE_NUMBER),
            ("MorePhyTypes",                ctypes.c_bool),
            ("wlanSignalQuality",           ctypes.c_ulong),
            ("SecurityEnabled",             ctypes.c_bool),
            ("dot11DefaultAuthAlgorithm",   ctypes.c_uint),
            ("dot11DefaultCipherAlgorithm", ctypes.c_uint),
            ("Flags",                       wintypes.DWORD),
            ("Reserved",                    wintypes.DWORD)
        ]
class WLAN_AVAILABLE_NETWORK_LIST(ctypes.Structure):
    _fields_ = [
            ("NumberOfItems", wintypes.DWORD),
            ("Index",         wintypes.DWORD),
            ("Network",       WLAN_AVAILABLE_NETWORK * 1)
        ]
 
def get():
    try:
        index = int(input('Выберите сеть для подключения: ')) - 1;
    except:
        return get();
    if index < 0 or index >= len(wifi_networks):
        return get();
    return index;
 
version = wintypes.DWORD();
handle  = wintypes.HANDLE();
 
wlanapi.WlanOpenHandle(1, None, ctypes.byref(version), ctypes.byref(handle));
interfaces = ctypes.pointer(WLAN_INTERFACE_INFO_LIST());
wlanapi.WlanEnumInterfaces(handle, None, ctypes.byref(interfaces));
ifaces = customresize(interfaces.contents.InterfaceInfo,
                      interfaces.contents.NumberOfItems)
print('Доступные WiFi сети:')
wifi_networks = [];
for interface in ifaces:
    networks = ctypes.pointer(WLAN_AVAILABLE_NETWORK_LIST());
    wlanapi.WlanGetAvailableNetworkList(handle, ctypes.byref(interface.InterfaceGuid), 0, None, ctypes.byref(networks));
    nets = customresize(networks.contents.Network,
                        networks.contents.NumberOfItems)
    i = 0;
    for network in nets:
        i += 1;
        wifi_networks.append(network);
        print(i, '-', network.dot11Ssid.SSID.decode())
index   = get();
network = wifi_networks[index];
print('Выбранная сеть: ', network.dot11Ssid.SSID.decode())
Набросал программу, но почему то два раза выдаёт название моей сети.

Добавлено через 53 минуты
А что делает WlanConnect?

Добавлено через 20 минут
Как можно подключиться к другому устройству?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.06.2020, 14:39
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
олучить список всех устройств, подключенных к WiFi
Два способа, полностью разные, так как вопрос задан расплывчато.

1) подключиться к веб-мордочке роутера и стянуть данные оттуда (правильно и проще).

2) покурить маны по локальным сетям, понять зачем нужна маска сети и тупо широковещательно попинговать (отключено на уровне ядра). Или попинговать в цикле. Так можно будет найти IP телевизора. Кто-нибудь знает, ARP в wi-fi работает? Подключиться к API телевизора и делать с ним нехорошие штуки. Или, попробовать Wake-on-LAN.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.06.2020, 14:46
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
ARP в wi-fi работает?
Если бы не работало, как бы ARP-Spoofing применяли?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.06.2020, 14:59

Не по теме:

Я как-то больше с eth знаком. Хотя вы правы, канальный уровень должен быть одинаковый



Тогда всё просто, зная МАС телевизора и сидя в одной подсетке с ним, пищим на всю сетку и получаем его IP.

Добавлено через 7 минут

Не по теме:

Вру



Добавлено через 39 секунд
Придётся пинговать всю сеть, а потом
Bash
1
arp -an
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
19.06.2020, 15:03  [ТС]
Рыжий Лис, Garry Galler, поичкал много вещей в гугле, и сформулировал точный вопрос: как получить локальные IP адреса, подключенных к WiFi устройств? Потом по IP я буду обращаться к самим устройствам.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.06.2020, 15:07
Пропинговать все адреса в сети

Или
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
широковещательно попинговать (отключено на уровне ядра)
Добавлено через 23 секунды
Предлагаю начать писать IP калькулятор

Добавлено через 44 секунды
Сетевой CIDR калькулятор
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
19.06.2020, 15:34  [ТС]
Рыжий Лис, к сожаления я знаю только что значит буквосочетание пинг вместе с понг.

Добавлено через 26 минут
Я вообще не понимаю как калькулятор может мне помочь.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.06.2020, 15:39
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
не понимаю как калькулятор может мне помочь.
Как минимум, вычислить размер подсетки (обычно, 256 - 2 = 254 компа).
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
19.06.2020, 17:41  [ТС]
Вот, сделал код, но он ничего не записывает в bssl:
Python
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
import time
 
from threading import Thread
 
def loading(x):
    while x[0]:
        for i in range(3 + 1):
            print('Loading' + '.' * i + ' ' * (3 - i), end='\r');
            time.sleep(0.5);
 
x = [True];
loading_t = Thread(target=loading, args=(x,));
loading_t.start();
 
import requests
import socket
 
response = requests.get('http://ifconfig.me/ip');
ip = response.text;
 
import ctypes
import ctypes.wintypes as wintypes
 
wlanapi = ctypes.windll.wlanapi;
 
def customresize(array, new_size):
    return (array._type_ * new_size).from_address(ctypes.addressof(array))
 
class GUID(ctypes.Structure):
    _fields_ = [
            ('Data1', ctypes.c_ulong),
            ('Data2', ctypes.c_ushort),
            ('Data3', ctypes.c_ushort),
            ('Data4', ctypes.c_ubyte*8),
        ]
DOT11_BSS_TYPE = ctypes.c_uint;
(dot11_BSS_type_infrastructure,
 dot11_BSS_type_independent,
 dot11_BSS_type_any) = map(DOT11_BSS_TYPE, range(1, 4))
class WLAN_INTERFACE_INFO(ctypes.Structure):
    _fields_ = [
            ("InterfaceGuid", GUID),
            ("strInterfaceDescription", ctypes.c_wchar * 256),
            ("isState", ctypes.c_uint)
        ]
class WLAN_INTERFACE_INFO_LIST(ctypes.Structure):
    _fields_ = [
            ('NumberOfItems', wintypes.DWORD),
            ('Index',         wintypes.DWORD),
            ('InterfaceInfo', WLAN_INTERFACE_INFO * 1),
        ]
DOT11_SSID_MAX_LENGTH = 32;
class DOT11_SSID(ctypes.Structure):
    _fields_ = [
            ("SSIDLength", ctypes.c_ulong),
            ("SSID",       ctypes.c_char * DOT11_SSID_MAX_LENGTH)
        ]
WLAN_MAX_PHY_TYPE_NUMBER = 0x8;
DOT11_PHY_TYPE = ctypes.c_uint;
dot11_phy_type_unknown      = 0;
dot11_phy_type_any          = 0;
dot11_phy_type_fhss         = 1;
dot11_phy_type_dsss         = 2;
dot11_phy_type_irbaseband   = 3;
dot11_phy_type_ofdm         = 4;
dot11_phy_type_hrdsss       = 5;
dot11_phy_type_erp          = 6;
dot11_phy_type_ht           = 7;
dot11_phy_type_IHV_start    = 0x80000000;
dot11_phy_type_IHV_end      = 0xffffffff;
class WLAN_AVAILABLE_NETWORK(ctypes.Structure):
    _fields_ = [
            ("ProfileName",                 ctypes.c_wchar * 256),
            ("dot11Ssid",                   DOT11_SSID),
            ("dot11BssType",                DOT11_BSS_TYPE),
            ("NumberOfBssids",              ctypes.c_ulong),
            ("NetworkConnectable",          ctypes.c_bool),
            ("wlanNotConnectableReason",    wintypes.DWORD),
            ("NumberOfPhyTypes",            ctypes.c_ulong),
            ("dot11PhyTypes",               DOT11_PHY_TYPE * WLAN_MAX_PHY_TYPE_NUMBER),
            ("MorePhyTypes",                ctypes.c_bool),
            ("wlanSignalQuality",           ctypes.c_ulong),
            ("SecurityEnabled",             ctypes.c_bool),
            ("dot11DefaultAuthAlgorithm",   ctypes.c_uint),
            ("dot11DefaultCipherAlgorithm", ctypes.c_uint),
            ("Flags",                       wintypes.DWORD),
            ("Reserved",                    wintypes.DWORD)
        ]
class WLAN_AVAILABLE_NETWORK_LIST(ctypes.Structure):
    _fields_ = [
            ("NumberOfItems", wintypes.DWORD),
            ("Index",         wintypes.DWORD),
            ("Network",       WLAN_AVAILABLE_NETWORK * 1)
        ]
'''WLAN_MAX_NAME_LENGTH = 256;
class WLAN_PROFILE_INFO(ctypes.Structure):
    _fields_ = [
            ("strProfileName", ctypes.c_wchar * WLAN_MAX_NAME_LENGTH),
            ("Flags",          wintypes.DWORD)
        ]
class WLAN_PROFILE_INFO_LIST(ctypes.Structure):
    _fields_ = [
            ("NumberOfItems", wintypes.DWORD),
            ("Index",         wintypes.DWORD),
            ("ProfileInfo",   WLAN_PROFILE_INFO * 1)
        ]'''
DOT11_MAC_ADDRESS = ctypes.c_ubyte * 6;
DOT11_RATE_SET_MAX_LENGTH = 126;
class WLAN_RATE_SET(ctypes.Structure):
    _fields_ = [
            ("RateSetLength", ctypes.c_ulong),
            ("RateSet",       ctypes.c_ushort * DOT11_RATE_SET_MAX_LENGTH)
        ]
class WLAN_BSS_ENTRY(ctypes.Structure):
    _fields_ = [
            ("dot11Ssid",             DOT11_SSID),
            ("PhyId",                 ctypes.c_ulong),
            ("dot11Bssid",            DOT11_MAC_ADDRESS),
            ("dot11BssType",          DOT11_BSS_TYPE),
            ("dot11BssPhyType",       DOT11_PHY_TYPE),
            ("Rssi",                  ctypes.c_long),
            ("LinkQuality",           ctypes.c_ulong),
            ("InRegDomain",           ctypes.c_bool),
            ("BeaconPeriod",          ctypes.c_ushort),
            ("Timestamp",             ctypes.c_ulonglong),
            ("HostTimestamp",         ctypes.c_ulonglong),
            ("CapabilityInformation", ctypes.c_ushort),
            ("ChCenterFrequency",     ctypes.c_ulong),
            ("wlanRateSet",           WLAN_RATE_SET),
            ("IeOffset",              ctypes.c_ulong),
            ("IeSize",                ctypes.c_ulong)
        ]
class WLAN_BSS_LIST(ctypes.Structure):
    _fields_ = [
            ("TotalSize",      wintypes.DWORD),
            ("NumberOfItems",  wintypes.DWORD),
            ("wlanBssEntries", WLAN_BSS_ENTRY * 1)
        ]
 
def get():
    try:
        index = int(input('Выберите сеть для подключения: ')) - 1;
    except:
        return get();
    if index < 0 or index >= len(wifi):
        return get();
    return index;
 
def reset():
    global text;
    response = requests.get(f'http://api.ipstack.com/{ip}?access_key=cf32e6af5bddd9eda69932c774459dce&language=ru&fields=country_name,region_name,city,location.languages', data={});
    data = response.json();
    text = 'Ваш IP: ' + ip + '\n'\
           'Ваша страна: ' + data['country_name'] + '\n'\
           'Ваш регион: ' + data['region_name'] + '\n'\
           'Ваш город: ' + data['city'] + '\n'\
           'Ваш язык: ' + data['location']['languages'][0]['native'] + '\n';
 
reset();
x[0] = False
loading_t.join();
print('Здравствуйте,', socket.gethostname() + '!');
while True:
    print('Что будем делать?');
    print('1. Я хочу получить информацию об IP.')
    print('2. Подключение к WiFi')
    print('3. Выход')
    print('4. Обновить данные')
    answ = input();
    if answ == '1':
        print(text, end='');
    elif answ == '2':
        version = wintypes.DWORD();
        handle  = wintypes.HANDLE();
 
        wlanapi.WlanOpenHandle(1, None, ctypes.byref(version), ctypes.byref(handle));
        interfaces = ctypes.pointer(WLAN_INTERFACE_INFO_LIST());
        wlanapi.WlanEnumInterfaces(handle, None, ctypes.byref(interfaces));
        ifaces = customresize(interfaces.contents.InterfaceInfo,
                              interfaces.contents.NumberOfItems)
        print('Доступные WiFi сети:')
        wifi = [];
        for interface in ifaces:
            networks = ctypes.pointer(WLAN_AVAILABLE_NETWORK_LIST());
            wlanapi.WlanGetAvailableNetworkList(handle, ctypes.byref(interface.InterfaceGuid), 0, None, ctypes.byref(networks));
            nets = customresize(networks.contents.Network,
                                networks.contents.NumberOfItems)
            i = 0;
            for network in nets:
                i += 1;
                wifi.append((network, interface));
                print(i, '-', network.dot11Ssid.SSID.decode())
        index   = get();
        network, interface = wifi[index];
        print('Выбранная сеть:', network.dot11Ssid.SSID.decode())
        '''profiles = ctypes.pointer(WLAN_PROFILE_INFO_LIST());
        wlanapi.WlanGetProfileList(handle, ctypes.byref(interface.InterfaceGuid), 0, ctypes.byref(profiles));
        profs = customresize(profiles.contents.ProfileInfo,
                             profiles.contents.NumberOfItems);
        for profile in profs:
            print(profile.strProfileName)'''
        bss_list = ctypes.pointer(WLAN_BSS_LIST());
        wlanapi.WlanGetNetworkBssList(handle, ctypes.byref(interface.InterfaceGuid), ctypes.pointer(network.dot11Ssid), dot11_BSS_type_any, True, 0, bss_list);
        bssl = customresize(bss_list.contents.wlanBssEntries,
                            bss_list.contents.NumberOfItems)
        for bss in bssl:
            print(dir(bss))
    elif answ == '3':
        break;
    elif answ == '4':
        x = [True];
        loading_t = Thread(target=loading, args=(x,));
        loading_t.start();
        reset();
        x[0] = False;
        loading_t.join();
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.06.2020, 18:39
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
ip = response.text;
Ха-ха, а теперь прочитайте про серые адреса. IP и маску нужно брать из настроек сетевого интерфейса.

Добавлено через 23 минуты
https://pypi.org/project/netifaces/

Добавлено через 5 минут
https://scapy.net/ - правда требует админа для некоторых вещей.

Добавлено через 39 секунд
Python
1
2
3
4
5
6
7
for ip in range(0, 256):
    packet = IP(dst="192.168.0." + str(ip), ttl=20)/ICMP()
    reply = sr1(packet, timeout=TIMEOUT)
    if not (reply is None):
         print reply.dst, "is online"
    else:
         print "Timeout waiting for %s" % packet[IP].dst
Добавлено через 39 секунд
Python
1
ans, unans = sr(IP(dst="192.169.0.1-255")/ICMP(), timeout=2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2020, 18:39
Помогаю со студенческими работами здесь

Как получить имена всех устройств подключённых к COM портам?
Как получить имена всех устройств подключённых к COM портам?

Как получить ip адреса всех подключенных устройств к маршрутизатору через wi-fi?
Как получить перечень всех подключенных устройств через wifi? С проводной сетью все понятно, а вот с wifi возникает проблема не выводит...

Как получить список когда-либо подключенных USB устройств к ПК на windows в JAVA?
Нужно получить список usb устройств подключенных к пк за все время, с подробной информацией о каждом. Попытался использовать java4usb....

Wifi hotspot как получить список девайсов подключенных к телефону
Всем привет, ребята может кто сталкивался. Если я роздаю с девайса вайфай , может знает какие способы что-бы получить айпи и мак адреса...

Получить список устройств, подключенных к USB
Доброго времени суток. Пытаюсь получить список устройств подключенных к USB import java.io.UnsupportedEncodingException; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru