Как сменить локальный МАС с помощью WinPcap?

Тема в разделе "WASM.BEGINNERS", создана пользователем _sheva740, 7 окт 2011.

  1. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Хочу сменить MAC адрес сетевой карны.
    Пересмотрел некоторые из чужих исходников.
    Все идут в реестр, правят или создают там параметры.
    Затем передергивают сетевую карту по принципу как из статьи
    "Безопасное извлечение USB-устройств" есть тут на сайте.

    Но пока смотрел как с помощью winpcap считать MAC оказалось что ...

    Код (Text):
    1. int getmac(pcap_t* ha, char* pStr)
    2. {
    3.   PPACKET_OID_DATA    pOidData;
    4.   CHAR pAddr[sizeof(PACKET_OID_DATA)+5];
    5.   ZeroMemory(pAddr, sizeof(PACKET_OID_DATA)+5);
    6.   pOidData = (PPACKET_OID_DATA) pAddr;
    7.   pOidData->Oid = OID_802_3_CURRENT_ADDRESS;
    8.   pOidData->Length = 6;
    9.   if(PacketRequest(ha->adapter, FALSE, pOidData))
    10.   {    
    11.       sprintf(pStr, "%.02X:%.02X:%.02X:%.02X:%.02X:%.02X",
    12.           pOidData->Data[0],pOidData->Data[1],pOidData->Data[2],
    13.           pOidData->Data[3],pOidData->Data[4],pOidData->Data[5]);
    14.   }else{
    15.       return 0;
    16.   }
    17.   return 1;
    18. }
    .... если у функции PacketRequest() второй параметр TRUE ...
    Код (Text):
    1.  PacketRequest(ha->adapter, TRUE, pOidData))
    ... то ведется не считывание а запись значения MAC из pOidData.
    Пробую.
    1. Заполняю pOidData новым MAC - ом.
    2. Oid = OID_802_3_CURRENT_ADDRESS
    3. ha->adapter - валидный

    Но после отработки PacketRequest(ha->adapter, TRUE, pOidData)
    возвращает ошибку 000001 - "Неверная функция".

    Может OID не тот?
    Может так вообще MAC не сменить?
    Подскажите кто что может ))) plz

    PS. Про уголовную ответственность по статье 272 УК - в курсе, "бабушка звонила" )))
     
  2. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    _sheva740
    А исходники WinPCap смотрел? Там вообще реализована смена MAC ?
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    T800
    Скачал исходники с офсайта.
    Вычитал что смена MAC должна сопровождаться обработкой сообщения
    IOCTL_NDISPROT_SET_OID_VALUE в NDIS драйвере. Обработка должна вызывать функцию ndisprotSetOidValue()
    Поискал по исходниках строки "IOCTL_NDISPROT_SET_OID_VALUE", "ndisprotSetOidValue" - их нет.
    Не знаю правильно или нет ))) но думаю, что смена MAC в WinPcap все же не предусмотрена. ((

    Подскажите я правильно рассуждаю?
    Просто в написании драйверов пока не рублю вообще. ((
     
  4. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    _sheva740
    У вас вообще подход странный.
    Нафига вам вообще менять MAC, коли WinPCap позволяет посылать в сеть RAW пакеты.
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    T800
    RAW - пакеты, ... то есть те которые с MAC отправителя != моему MAC-у?
    Потому как бы и MAC менять не надо?

    Не удивляйтесь пожалуйста моим вопросам ))

    Это конечно облегчает задачу.
    Я попробую.
    Спасибо. ))
     
  6. LeaLNoFiE

    LeaLNoFiE New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    23
    RAW - пакеты ето пакеты которые не привязаны к конкретному протоколу и позволяют роботать с сетью на прямую.(Хотя корректней было бы говорить о RAW сокетах)
    MAC - это грубо говоря номер сетевого адаптера. Нужен для идентификации конкретного компьютера в сети. С RAW-пакетами можно роботать, и если ты отправляешь пакеты на свой компьютер.
     
  7. LeaLNoFiE

    LeaLNoFiE New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    23
    Насколько я понимаю WinPcap аналог Pcap(Packet Capture) для Win платформ, и данные библиотеки в первую очередь были разроботаны для анализа данных поступаюших на сетевой интерфейс.
     
  8. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    LeaLNoFiE
    Несколько месяцев назад под винду писал флудер на WinPCap, т.к. винда уже давно не позволяет работать с RAW пакетами.
    Вот так мордочка выглядит:
    [​IMG]
     
  9. LeaLNoFiE

    LeaLNoFiE New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2011
    Сообщения:
    23
    T800
    Я не спорю насчет того, что может Pcap, а чего не может :) Я пишу под Linux, но насколько я знаю на платформе Windows есть интерфейс NDIS, который позволяет роботать с сетью в сыром виде в 0м кольце, и библиотеки WinPCAP именно на него и операються. Другой вопрос состоит в том что функциональность сырых сокетов в 3м кольце, оставляет желать лучшего, и робота с ними доступна только с учетной записью администратора.

    Простой запрос в гугл дал следуюшие:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx
     
  10. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    T800
    А как это "Get MAC by IP" ?
     
  11. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Предполагаю, что с помощью ARP
     
  12. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Таки да )))
    Спасибо.