The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Получить MAC-адрес клиента средствами Perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 05-Мрт-05, 10:49  (MSK)
Требуется получить MAC-адрес клиента, при подключении к моему серверу. Просто я сделал идентификацию пользователей по IP, а хотелось бы по связке IP+MAC. Никак не могу найти инфу о том как получить MAC-адрес клиента на perl.  Подскажите, плз. Хотелось бы чтобы это был переносимый код (а не жестко привязанный к никсам). Хотя сервер планируется запускать на FreeBSD, но хотелось бы чтоб код работал и на Windows.
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от allez Искать по авторуВ закладки(ok) on 05-Мрт-05, 12:01  (MSK)
Сходите на www.cpan.org и поглядите на модули Net::Mac::Vendor и Net::MacMap. Не это ли вы ищете?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 05-Мрт-05, 12:20  (MSK)
>Сходите на www.cpan.org и поглядите на модули Net::Mac::Vendor и Net::MacMap. Не это
>ли вы ищете?
Нет, к сожалению это не то. Эти модули по мак-адресу определяют производителя карты, а мне нужно получить мак-адрес подключившегося клиента.. :(


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от a Искать по авторуВ закладки(??) on 05-Мрт-05, 13:19  (MSK)
$mac=`/usr/sbin/arp -n $ip|awk '{print $4}'`
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 05-Мрт-05, 13:48  (MSK)
>$mac=`/usr/sbin/arp -n $ip|awk '{print $4}'`

Спасибо - наверно так и придеться... Но код становиться не переносимым не НЕ никс системы... По прежнему ищу инфу... Среди модулей ничего конкретного пока не нашел...

Да вот как я это реализовал.. (кусочек кода)

#!/usr/bin/perl -w

my $ip="192.168.99.1";

$mac=`/usr/sbin/arp -n $ip`;
my $haddr=(stat(split(/\s+/,$mac)))[3];
print $haddr,"\n";

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от ACCA Искать по авторуВ закладки(ok) on 06-Мрт-05, 09:53  (MSK)
>НЕ никс системы... По прежнему ищу инфу... Среди модулей ничего конкретного
>пока не нашел...

Net-ARP на CPAN

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 09-Мрт-05, 09:26  (MSK)
>>НЕ никс системы... По прежнему ищу инфу... Среди модулей ничего конкретного
>>пока не нашел...
>
>Net-ARP на CPAN
Работает только с linux b freebsd :(


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от ACCA Искать по авторуВ закладки(ok) on 09-Мрт-05, 13:35  (MSK)
>Работает только с linux b freebsd :(

Сомневаюсь. Без проблем должно работать в MacOS, Solaris, Irix, ...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 09-Мрт-05, 13:55  (MSK)
>>Работает только с linux b freebsd :(
>
>Сомневаюсь. Без проблем должно работать в MacOS, Solaris, Irix, ...
А ты посмотри код который там имеется..
if( freebsd) { ...}
else { linux...}

МакОс - это таже фрибзд, только немного исковерканная :-))). А вот с виндой работать не будет этот модуль...


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от Leningrad Искать по авторуВ закладки on 09-Мрт-05, 14:21  (MSK)
идентификацию пользователей лучше делать по паролю
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 09-Мрт-05, 14:26  (MSK)
>идентификацию пользователей лучше делать по паролю
Это не окончательная идентификация - это просто проверка - можно ли от этого пользователя принять пароль или нет.. А авторизация у меня идет даже не по паролю а по криптованному ключу. Высылаю правильному клиенту (с разрешенными IP+MAC) рандомную строку - он у себя ее криптует по определенному алгоритму и с использованием в качестве salt'a криптованного пароля и пересылает серверу - тот делает тоже самое и сверяет строки. 3-ступенчатый хэндшэйк, и вот к нему-то я и хотел прикрутить проверку MAC.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(??) on 11-Мрт-05, 09:45  (MSK)
В общем - я написал прогу на С для получения МАК адреса на Win. Проблема с тем чтобы оформить ее в модуль (через XSUB). Есть ли тут люди имеющие опыт в XSUB? Подскажите.
Вот код программы:

#include <windows.h>
#include <stdio.h>
#include <iphlpapi.h>

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")

void getmac (char *ip, char *yourIP, char *str);

int main(int argc, char* argv[])
{
        char *ip=argv[1];
        char *uip=argv[2];
                char str[32];

                getmac (ip, uip, str);

                printf ("%s", str);

        return 0;
}

void getmac (char *ip, char *yourIP, char *str){
        ULONG   ulMACAddr[2], ulSize = 6;
        LPBYTE  pBuffer;

        if (SendARP(inet_addr (ip), inet_addr(yourIP), ulMACAddr, &ulSize ) == NO_ERROR){
                pBuffer = (LPBYTE) ulMACAddr;

                sprintf (str, "%02X:%02X:%02X:%02X:%02X:%02X",
                                pBuffer[0],
                                pBuffer[1],
                                pBuffer[2],
                                pBuffer[3],
                                pBuffer[4],
                                pBuffer[5]);
        }
                else{
                        sprintf (str, "error");
                }

}

Принимает в качестве аргумента командной строки IP, и выводит MAC.
Но вот как все это записать для XSUB???


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от karasiov emailИскать по авторуВ закладки(??) on 11-Мрт-05, 12:21  (MSK)
>Принимает в качестве аргумента командной строки IP, и выводит MAC.
>Но вот как все это записать для XSUB???

http://search.cpan.org/dist/perl/pod/perlxstut.pod

в чем проблема? - там все ясно расписано.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 11-Мрт-05, 14:59  (MSK)
>>Принимает в качестве аргумента командной строки IP, и выводит MAC.
>>Но вот как все это записать для XSUB???
>
>http://search.cpan.org/dist/perl/pod/perlxstut.pod
>
>в чем проблема? - там все ясно расписано.
Тогда может быть переделаете функцию? :-))


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 11-Мрт-05, 15:26  (MSK)
Временное решение - я описал тут
http://poizon.net.ru/?s=4.
Не очень элегантно... но с xsub у меня не заладилось...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от Forth emailИскать по авторуВ закладки on 13-Мрт-05, 01:19  (MSK)
Может под win стоит попробовать сначала ping -n 1 ip_addr чтобы запись добавилась в арп таблицу если её нету, а потом arp -a и "выдрать" из выдачи команды нужный мак?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Получить MAC-адрес клиента средствами Perl" 
Сообщение от falkon Искать по авторуВ закладки on 21-Мрт-05, 10:55  (MSK)
>Требуется получить MAC-адрес клиента, при подключении к моему серверу. Просто я сделал
>идентификацию пользователей по IP, а хотелось бы по связке IP+MAC. Никак
>не могу найти инфу о том как получить MAC-адрес клиента на
>perl.  Подскажите, плз. Хотелось бы чтобы это был переносимый код
>(а не жестко привязанный к никсам). Хотя сервер планируется запускать на
>FreeBSD, но хотелось бы чтоб код работал и на Windows.


p5-NetPacket - в портах, рулезная вешь ;)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру