RubyでRawソケットでイーサネットフレームを丸ごと受信するメモ。 Rawソケットを使ったプログラミングは以前ICMPは扱ったことがあったが、イーサネットフレーム全体の扱い方が分からなかった。 qiita.com C言語のサンプルはたくさん出てくるけど、Rubyのサンプルや解説はなかなか出てこなかった。 どうやらソケットをバインドする時の値がポイントらしいのだが、なかなか深い部分を理解しないと難しいようで、サンプルを探していたら以下のコードを利用したら実現できた。 github.com コードは以下の通り。 recvfrom で取得される文字列は値をASCIIコードで変換されているようなので、パケットのヘッダとしての値を取得するように変換する必要があるみたい。 実際に socket2.rb の中身を見るとソケットの扱い方を確認できるが、なかなか解読が大変なのでまた別途。 require_
![【Ruby】Rawソケットでイーサネットフレームをまるごと受信するメモ - memo.log](https://cdn-ak-scissors.b.st-hatena.com/image/square/efb8d35e334f16cb905499d78f36a8ff23ba7722/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkuredev%2F20201115%2F20201115231639.png)