rawソケットを取得するにはroot権限が必要であり、tcp / udpにはそれがないため、udpソケットを取得してicmpデータをフェッチする方法を知る必要があります。プログラミング言語はCで、OSはBSDに似ています。
(つまり、root権限なしでpingを作成したい)
root 権限がなくても UDP ping を書き込むことができます。
IP_RECVERRオプションが有効な場合、すべてのエラーはソケット エラー キューに格納され、 MSG_ERRQUEUEフラグが設定されたrecvmsg (2) で 受信できます。
forge&send ルーチンはすでに SOCK_DGRAM ソケットに実装されていると思います。次に、ICMP メッセージの送信元アドレスにアクセスするには:
UDP は OSI レイヤー 4 プロトコルであり、ICMP も同様です。これにより、レイヤー 4 プロトコルが既に UDP に固定されているため、UDP ソケットに ICMP を実装することはできません。raw ソケットを開く権限を必要とする実装を作成することを検討できます。次に、アプリケーションまたはアカウントに適切な機能を付与するか、実行可能ファイルの SUID ビットを反転して root として実行できるようにします。
それで、ええと、要件を回避するのは簡単でした.それはまだそこにあると思いますか?
ある程度のセキュリティを提供することを目的としているため、簡単に移動できるわけではありません.
私はそれができるとは思わない。