Ruby packetfu ライブラリを使用して、生のパケットを作成して送信しています。私はそれを機能させることができますが、私が間違っていると思うことがあります。(ところで、ruby+packetfu は生のパケット全体の操作を本当に簡単にします..)
これが私のコードです:(MACアドレスは少しマスクされていました)
packet.eth_saddr = "XX:XX:88:XX:03:BD"
packet.eth_daddr = "XX:6D:57:AD:XX:A3"
packet.ip_header.ip_saddr="192.168.0.16"
packet.ip_header.ip_daddr="192.168.0.13"
そして、packet.to_w('eth0') を呼び出すと、配信されます。ご覧のとおり、頭を悩ませているのは MAC アドレスです。パケットを送信する必要があるたびに宛先 MAC アドレスを調べなければならないのは本当に不便です...送信元 MAC アドレスはそれほど重要ではないことをテストしましたが、それがなくても機能します。ただし、宛先MACアドレスは必須です(パケットはそれなしでは送信されません).
生のソケットを使用して C でこれを行う必要があったことを思い出せません...パケットをネットワークに送信する前に ARP を実行する必要がある場合、さらに悪いことに、DNS クエリなどを実行する必要がある場合は最悪です。パケットをインターネットに送信する....
呼び出す必要があるワンライナーなど、ここで何かが欠けていると思います..しかし、packetfuのコードとドキュメントを読んだ後、それを理解できません....
誰でも?