![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 1 Всего: 112 |
Мне надо сделать привязку программы к железу.
Один из параметров привяки - MAC адрес сетевого адаптера. Но возникли трудности... Не нашёл способа уверенного определения MAC-адреса. Способы, которые я пробовал - ненадёжные... 1) Через функцию Netbios (см. DRKB). Если нет сетевого подключения, получается облом... ![]() 2) Через сокеты (см. DRKB): socket, getsockopt. Не работает в любом случае... Пока не разбирался в чём дело... 3) Создание GUID/UUID В GUID/UUID используется MAC-адрес. Опять же, если нет сетевого подключения, то будет кирдык - либо возьмётся MAC-адрес другого активного адаптера (например, их устанавливает VMWare), либо если их нет, будет какая-то ерунда вместо MAC-адреса... 4) Ip Helper API GetAdaptersAddresses - в возвращаемой структуре есть поле PhysicalAddress, но почему он один ? А если несколько адаптеров ? В любом случае, на моём компе это поле заполняется нулями... SendARP (inet_addr('127.0.0.1'), 0, ...) - не пашет... как им пользоваться ? GetIpNetTable - в bPhysAddr что-то не то... GetAdaptersInfo - работает, но опять же только если соединение активно ![]() КАК БЫТЬ ? Какие идеи ? -------------------- С уважением, г-н Посол. |
|||
|
||||
Girder |
|
||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 4 Всего: 155 |
![]()
Ну... можно обратиться к таблице маршрутизации на прямую, т.е. воспользоваться INETMIB1.DLL: SnmpExtensionInit - Функция инициализации; SnmpExtensionQuery - Функция запроса; SnmpExtensionTrap - Обработчик ловушек. Проверять, при неактивном сетевом подключении, не стал... так как считаю что привязка по MAC не есть гуд... ![]() Поясню...: 1)Для некоторых сетевых карт можно заменить МАС адресс в настройках драйвера; 2)Для некоторых... устанавливая соответствующие ключи в реестре 3)Использование двух интерфейсов - готовых реализаций в инете полно ![]() 4)Самый простой и надежный способ! - Корректировать драйвер сетевой карты. Т.к. драйвер сетевой карты считывает MAC-адрес через стандартные порты ввода-вывода только на этапе инициализации! Чтение MAC-адреса происходит через порт XXX и определение его не составляет труда: смотрится диапазон ввода-вывода сетевой карты... к примеру он равен=AA00h...AA1Fh => тогда XXX=AA00h+10h=AA10h... ну а дальше SoftIce и bpio AA10 r и... и... я думаю поймеш дальше сам... ![]() PS: Даже если ты сделаеш определение МАС адресса через порт(имхо: самый надежный спрособ ![]() Удачи. Это сообщение отредактировал(а) Girder - 10.11.2004, 02:55 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||
|
|||||||
p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 1 Всего: 112 |
Это понятно. Но моя прога сама не знает, какой MAC-адрес правильный (она лишь может сказать, есть изменения в аппаратуре или нет, а в чём именно изменения - это она не знает), поэтому какой адрес юзер будет ставить ? Короче, тут всё продумано (вроде ![]() ![]()
![]() ![]() Еще пробовал через WMI - такая же фигня... Придётся отказаться от MAC-адреса... -------------------- С уважением, г-н Посол. |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 4 Всего: 329 |
В WinXP такая программка исчезла, а в Win98 она была
![]() Присоединённый файл ( Кол-во скачиваний: 29 ) ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 4 Всего: 329 |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 4 Всего: 329 |
забыл, может быть, понаlобится WinSock2
Это сообщение отредактировал(а) dsergey - 11.12.2004, 10:19 Присоединённый файл ( Кол-во скачиваний: 25 ) ![]() |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Мне тоже сначала пришла в голову мысль использовать ipconfig /all
![]() |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 4 Всего: 162 |
Ни куда она не изчезала Пуск->Выполнить->cmd /k ipconfig /all -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 1 Всего: 112 |
dsergey, спасибо
![]()
IPConfig предназначен для IP-адресов, они назначаются при активном подключении. Нет подключения - нет IP-адреса, нет и MAC-адреса (если смотреть через IPConfig)... Короче, всё в итоге сводится к такому вопросу: Как узнать MAC-адрес, даже если нет сетевого подключения ? Все API-функции, которые я просмотрел, думают, что если нет сетевого подключения, то как будто бы и нет сетевой карты вообще, физически... Если делать через порт - то шкурка выделки не стоит... -------------------- С уважением, г-н Посол. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 4 Всего: 329 |
ну звыняйте, бананив у нас нэмае
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |