答え1
このコマンドを使用すると、以下を減らすことができます。TCPダンプただMACアドレス目を覚ますしようとしています。
tcpdump -UlnXi eth0 ether proto 0x0842 or udp port 9 2>/dev/null |
sed -nE 's/^.*20: (ffff|.... ....) (..)(..) (..)(..) (..)(..).*$/\2:\3:\4:\5:\6:\7/p'
これは目覚めることを捉えます。etherwake
、エーテル型 0x0842(AMDマジックパケット形式)とwakeonlan
(UDP:9)、しかし実行するにはインターフェイスが必要です。promiscuous mode
。
この例の出力は次のとおりです。
44:55:33:11:56:66
11:22:33:66:56:af
11:be:33:ef:56:af
たとえば、別のコンピューターでテストするには、次のようにします。
wakeonlan 12:de:ad:be:ef:56
etherwake -i wlp2s0 -b 31:32:33:34:35:36
UDPを介して送信されたデータ(wakeonlan
コマンドなど)のみをキャプチャするには、無差別モードを必要としないスクリプトを使用できます。
nc -dknl -p 9 -u |
stdbuf -o0 xxd -c 6 -p |
stdbuf -o0 uniq |
stdbuf -o0 grep -v 'ffffffffffff' |
while read ; do
echo ${REPLY:0:2}:${REPLY:2:2}:${REPLY:4:2}:${REPLY:6:2}:${REPLY:8:2}:${REPLY:10:2};
done
代わりに別のタスクを開始できますwhile read ... echo blabla
。
答え2
ウィキペディアWake-on-LANパケットの構造について、次のような言葉があります(強調)。
マジックパケットは、ペイロードの任意の位置に255のうち6バイト(16進数でFF FF FF FF FF FF FF)を含み、続いてターゲットコンピュータの48ビットMACアドレスが16回繰り返され、合計102バイトを含むブロードキャストフレームです。
マジックパケットは上記の文字列だけをスキャンし、プロトコルスタック全体で実際に解析されないため、任意のネットワーク層およびトランスポート層プロトコルに転送できます。ただし、通常はポート0、7、または9にUDPデータグラムとして送信されるか、EtherType 0x0842としてイーサネット経由で直接送信されます。
したがって、現在のキャプチャフィルタは、すべてのWOLパケットキャプチャを保証するわけではありません。そして文書によると、WakeMeOnLanアプリケーションにはWOLパケットを送信するさまざまな方法があるように見えるため、フィルタリングされていない単純なテストキャプチャを実行して、アプリケーションが送信するWOLパケットの種類を確認し、それに応じてフィルタを調整できます。