Могу ли я выключить компьютер одним пакетом TCP

335
user7306345

Таким образом, вы можете проснуться по локальной сети, потому что кабели Ethernet не только для данных, они также передают силу тока. Если они напрямую подключены к материнской плате, может кто-нибудь скинуть пакет и выключить ваш компьютер. И это проще на хостах Windows.

1
Wake-on-LAN работает с магическими пакетами (без * силы тока *), PoE (питание через Ethernet) обеспечивает питание устройства буквально, но не требует его включения (оно просто обеспечивает питание). Чтобы выключить устройство, вам нужно, чтобы оно отвечало на другой (пользовательский) магический пакет. В случае PoE просто отключите питание. GiantTree 7 лет назад 3
Это является тангенциальным, но в протоколе пробуждения по локальной сети магический пакет определяется следующим образом: магический пакет - это широковещательный кадр, содержащий в любом месте в своей полезной нагрузке 6 байтов всех 255 (FF FF FF FF FF FF в шестнадцатеричном формате), за которым следует шестнадцать повторения 48-битного MAC-адреса целевого компьютера, в общей сложности 102 байта. Я не уверен, откуда поступил комментарий об отсутствии силы тока, но, надеюсь, это прояснит это для некоторых. Argonauts 7 лет назад 0
Я не уверен, что вы можете сделать ssh-соединение в 1 пакете или нет, но ssh-соединение с последующим ** shutdown -h now ** или ** shutdown -s ** для windows будет работать. Также PowerShell. Я не знаю около 1 пакета, но, вероятно, будет сделано в 2-5. 1. отправить пользователя / пройти 2. получить подтверждение 3. выключение cybernard 7 лет назад 0
@cybernard SSH обычно использует TCP, а TCP требует рукопожатия, для которого требуется пакет от отправителя к получателю, называемый SYN, а затем пакет от получателя к отправителю, называемый ACK. Затем пакет от отправителя к получателю, который, я думаю, известен как SYN ACK. Я не знаю, если или в какой степени вы можете сделать SSH через UDP. Например, http://superuser.com/questions/1127871/ssh-connection-under-udp в любом случае SSH не будет выполняться в одном пакете. Необходимо договориться о шифровании. У него даже не было бы возможности по-настоящему начать. barlop 7 лет назад 0
может иметь больше смысла делать это с UDP-пакетом (так как им не требуется трехстороннее рукопожатие), но, возможно, для этого, как я полагаю, может быть, WOL, требуется поддержка в UEFI / BIOS, а также в NI (сетевой интерфейс) , barlop 7 лет назад 1

1 ответ на вопрос

1
Argonauts

Очень часто встречается противоположное тому, о чем вы спрашиваете - Wake On LAN (WOL). Чтобы ответить на ваш вопрос, вам будет гораздо проще сначала это объяснить.

WOL

WOL требует наличия этих возможностей

  1. Сеть в выключенном ПК должна иметь встроенную поддержку в его драйвере.

  2. Материнская плата (BIOS) должна поддерживать режим низкого энергопотребления, который по-прежнему обеспечивает небольшое количество энергии для сетевой платы, когда ПК в противном случае выключен.

  3. Второй ПК / сетевое устройство должно быть в локальной сети (ради этого упрощенного примера - вы можете сделать это через Интернет) и на нем должно быть программное обеспечение для генерации специального пакета.

Когда ПК выключен, ПК, который выдаст команду на включение, создает волшебный пакет:

Магический пакет - это широковещательный кадр, содержащий в любом месте в его полезной нагрузке 6 байтов всех 255 (FF FF FF FF FF FF в шестнадцатеричном формате), за которыми следуют шестнадцать повторений 48-битного MAC-адреса целевого компьютера, что в сумме составляет 102 байта.

Этот пакет отправляется всем в локальной сети. Каждый сетевой адаптер проверяет в нем MAC-адрес и, если он совпадает, сообщает материнской плате о необходимости включения системы.


С UDP-пакетом

По твоему вопросу это намного проще. ПК работает, и MB / NIC не нужно знать о специальном пакете. Простая программа или сценарий, использующий такую ​​программу, как nc, может быть настроена на прослушивание пакета UDP на конкретном порту с предопределенным содержимым.

Поскольку UDP не использует соединение, никакие издержки (транзакционные пакеты) не задействованы. Достаточно одного пакета. После получения может произойти что угодно - выключить, запустить другую программу, удалить содержимое жесткого диска ...

Вы можете отправить этот пакет из любого места, предполагая, что существует правильная маршрутизация - это просто обычное UDP-сообщение.

Вы также можете, и в действительности ДОЛЖНЫ, работать с функциями безопасности в содержимом пакета, чтобы аутентифицировать пакет.

На самом деле это был бы достойный вводный проект для программирования сокетов.

Решение TCP

Использование TCP-пакета требует дополнительных и регулярных сообщений для поддержания работы сокета, что не соответствует вашим требованиям.

Но вы можете настроить правило брандмауэра на ПК, используя iptables, который идентифицирует пакет TCP, и преобразовать его в нечто, пригодное для использования в качестве триггера для запуска программы для выполнения желаемого действия. Немного капризный, но вполне выполнимый.

Похожие вопросы