SM>Если у вас есть дамп пакета, который ТОЧНО пробуждает машину, пришлите на мыло плз...
Вот выдержки из статьи по Wake On Lan
Сама последовательность весьма проста — вначале идет так называемая “цепочка синхронизации”, состоящая из 6 байт FF, а затем — собственно адрес сетевой платы, повторенный 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:
Вот и вся магия. Для программистов, в достаточной степени владеющих навыками написания приложений для работы с сетью, написать программку, посылающую данный пакет, не составит труда.
PS: я так и не смог отправить такой пакет
Как послать пакет по MAC-адресу ???
От:
Аноним
Дата:
17.10.02 09:23
Оценка:
Здравствуйте, Уважаемые !
Нужно послать пакет из Windows (или из Linux), используя C или ASSM, в сетку используя MAC-адрес карты получателя.
Имея протокол IPX все просто, но как это сделать, если установлен только TCP/IP протокол ?
Здравствуйте Аноним, Вы писали:
А>Здравствуйте, Уважаемые !
А>Нужно послать пакет из Windows (или из Linux), используя C или ASSM, в сетку используя MAC-адрес карты получателя. А>Имея протокол IPX все просто, но как это сделать, если установлен только TCP/IP протокол ?
А>С уважением, Вячеслав.
Послать broadcast Ethernet пакет по данному МАС-адресу. Как это сделать, подсказать не могу, никогда не делал.
И что будет после броадкастового пакета на данный адрес? Что вообще означает "Послать broadcast Ethernet пакет по данному МАС-адресу"? Броадкаст и есть для того броадкаст — отыслается на все адреса. Если имеется ввиду — послать броадкастовый пакет с адресом-источником, как этот MAC, то тоже облом — злые админы обычно привязывают MAC к конкретному порту свитча + если и пройдет — удаленный компутер с таким MAC возопит, что в сети есть его двойник
На самом деле я сначала подумал про RARP, но, к сожалению, и тут ничего не выйдет. Единственный выход, который вижу я — посмотреть локальный ARP кэш (например, при помощи ip helper) на предмет наличия данного MAC. Если есть — твое счастье, нет — такова судьба. Еще можно попытать NETBIOS....
Здравствуйте Evgeny, Вы писали:
E>Здравствуйте Аноним, Вы писали:
А>>Здравствуйте, Уважаемые !
А>>Нужно послать пакет из Windows (или из Linux), используя C или ASSM, в сетку используя MAC-адрес карты получателя. А>>Имея протокол IPX все просто, но как это сделать, если установлен только TCP/IP протокол ?
А>>С уважением, Вячеслав.
E>Послать broadcast Ethernet пакет по данному МАС-адресу. Как это сделать, подсказать не могу, никогда не делал.
Зачем мне ARP (RARP) ?
Да с помощью RARP я узнаю IP адрес по MAC-адресу.
Но мне не надо IP. Нужно послать пакет сетевой карте зная именно ее MAC-адрес.
И ARP тоже ни к чему. Я уже знаю знаю MAC-адрес.
Чтоб было понятней к чему это поясню: нужно для Wake-On-Lan.
Прочитайте свой вопрос. Если не обладать даром ясновидца, то можно понять только то, что надо послать пакет TCP/IP используя MAC адрес. Яснее надо выражаться. Например — послать Ethernet пакет по определенному MAC. Но при чем тогда здесь стек TCP/IP? Тут надо напрямую общаться с канальным уровнем — драйвером NDIS. Под 2000-ми это сделать можно из user-mode, иначе — писать драйвер. Искать здесь.
Успехов.
Здравствуйте Аноним, Вы писали:
А>Зачем мне ARP (RARP) ? А>Да с помощью RARP я узнаю IP адрес по MAC-адресу. А>Но мне не надо IP. Нужно послать пакет сетевой карте зная именно ее MAC-адрес. А>И ARP тоже ни к чему. Я уже знаю знаю MAC-адрес.
А>Чтоб было понятней к чему это поясню: нужно для Wake-On-Lan.
AS>Прочитайте свой вопрос. Если не обладать даром ясновидца, то можно понять только то, что надо послать пакет TCP/IP используя MAC адрес. Яснее надо выражаться. Например — послать Ethernet пакет по определенному MAC. Но при чем тогда здесь стек TCP/IP? Тут надо напрямую общаться с канальным уровнем — драйвером NDIS. Под 2000-ми это сделать можно из user-mode, иначе — писать драйвер. Искать здесь.
Нет, тут я не советчик. Знаю только, что почти ко всему там есть доступ через файловую систему. Например, к разделам диска, портам и другим устройствам. Наверное, и к сетевым адаптерам так же. Это надо спеца по Uniх вопрошать.
А вообще — есть же снифферы для линукс. Причем с исходниками. Наверное, ковырять надо их.
Успехов.
Здравствуйте Аноним, Вы писали:
AS>>Прочитайте свой вопрос. Если не обладать даром ясновидца, то можно понять только то, что надо послать пакет TCP/IP используя MAC адрес. Яснее надо выражаться. Например — послать Ethernet пакет по определенному MAC. Но при чем тогда здесь стек TCP/IP? Тут надо напрямую общаться с канальным уровнем — драйвером NDIS. Под 2000-ми это сделать можно из user-mode, иначе — писать драйвер. Искать здесь.
А>Спасибо за ответ. А если не Windows, а Linux ?
А>С уважением, Вячеслав
Здравствуйте Аноним, Вы писали:
А>Зачем мне ARP (RARP) ? А>Да с помощью RARP я узнаю IP адрес по MAC-адресу. А>Но мне не надо IP. Нужно послать пакет сетевой карте зная именно ее MAC-адрес. А>И ARP тоже ни к чему. Я уже знаю знаю MAC-адрес.
А>Чтоб было понятней к чему это поясню: нужно для Wake-On-Lan.
Вау! И вы знаете КАКОЙ пакет надо послать??? Я где-то пол года назад занимался этим вопросом, так и не добился ничего. Т.е. железо поддерживает WakeOnLan, шнурок от сетевухи к матери стоит, в кмосе всё выставлено, машина иногда даже сама собой включалась.
Но НИКОГДА по моей команде.
Думаю я неправильно составлял пакет. И найти программу, которая достоверно включает машину по сети, мне тоже неудалось.
А пакеты я слал пользуя PCAP. И/ИЛИ просто сниффером. Безрезультатно...
Если у вас есть дамп пакета, который ТОЧНО пробуждает машину, пришлите на мыло плз...
Ну что ж. Сейчас возьмем Winpcap в зубы и попробуем.
WN>Сама последовательность весьма проста — вначале идет так называемая “цепочка синхронизации”, состоящая из 6 байт FF, а затем — собственно адрес сетевой платы, повторенный 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:
WN>FFFFFFFFFFFF010203040506010203040506010203040506010203040506 WN>010203040506010203040506010203040506010203040506010203040506 WN>010203040506010203040506010203040506010203040506010203040506 WN>010203040506010203040506
WN>Вот и вся магия. Для программистов, в достаточной степени владеющих навыками написания приложений для работы с сетью, написать программку, посылающую данный пакет, не составит труда.
WN>PS: я так и не смог отправить такой пакет
Далее — ссылка на ether-wake.c — мож поможет... Еще, где-то неделю назад я кидал пример на Перл-е. У меня он не заработал — карточка оказалась не PCI2.2 совместима (шнурок питающий надо втыкать, а на маме нет под него гнезда)
Здравствуйте, Warlock_NT, Вы писали: W_N>Вот выдержки из статьи по Wake On Lan
W_N>Сама последовательность весьма проста — вначале идет так называемая “цепочка синхронизации”, состоящая из 6 байт FF, а затем — собственно адрес сетевой платы, повторенный 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:
W_N>FFFFFFFFFFFF010203040506010203040506010203040506010203040506 W_N>010203040506010203040506010203040506010203040506010203040506 W_N>010203040506010203040506010203040506010203040506010203040506 W_N>010203040506010203040506
W_N>Вот и вся магия. Для программистов, в достаточной степени владеющих навыками написания приложений для работы с сетью, написать программку, посылающую данный пакет, не составит труда.
W_N>PS: я так и не смог отправить такой пакет
Да такая последовательность работает. Отправляю UDP пакет на адресс 255.255.255.255 и машина включается. Причем номер порта не имеет ни какого значения.