Модуль для Windows, с использованием технологии XSUB (включение в модуль на perl частей на языке С). Модуль предлагает всего одну функцию getmac, которая возвращает MAC-адрес подключившегося клиента. То есть идея именно в получении MAC-адреса удаленного Eth-интерфейса. Модуль разрабатывался для сервера удаленного выполнения комманд, и требовалась авторизация по Mac-адресу. Так как сервер был кроссплатформенный (планировался запуск как на UNIX, так и на Windows), то пришлось разрабатывать этот модуль для получения Mac-адреса на Windows-машинах (на момент написания сервера, средств для этого не было). Для сборки требуется наличие утилиты nmake.
Докуемнтацию по нему я не писал, но думаю в этом и нет смысла, лучше приведу пример использования:
use Getmac;
my ($ip, $uip) = (' 169.254.50.156') x 2;
my $res = Getmac::getmac($ip, $uip);
print "Test: $res";
Не могу также не привести сюда те давние посты мои с xpoint.ru (сейчас их уже нет, видимо база у них частично утеряна):
Я писал свой небольшой сервер для удаленного выполнения одной команды в защищенном режиме. Не буду касаться тонкостей проекта, так как к теме вопроса это не имеет отношения. Так вот - в одной из ступеней авторизации требовалось получить MAC адрес клиента по его IP. сервер работал на FreeBSD но планировалось что он будет работать и на Win32 платформах, и я начал искать способы решения данной задачи максимально простыми методами. Для никс систем это вылилось в функцию:
sub mac2ip {
my $ip=shift || return 0;
$mac=`/usr/sbin/arp -n $ip`;
my $haddr=(stat(split(/\s+/,$mac)))[3];
return $haddr;
}
Позже я нашел кое-какие модули на CPAN для реализации примерно того же (но это все только для никс систем); Для получения IP на Win я перекопал весь СПАН но решения так и не нашел. Поэтому было решено писать функцию на С для этого.
Хотел бы выразить благодарность said за помощь в реализации С-функции.



Комментировать