ソフトウェアでイーサネットフレームエラーを確実に生成するにはどうすればよいですか?
-
27-10-2019 - |
質問
質問:
ケーブル障害検出ソフトウェアのセクションをテストしていますが、cat5ケーブルでケーブル障害を確実かつ再現性よく生成したいと考えています。
現在、1メートルの長さのねじれていないケーブルを使用しており、電源装置の横でケーブルを手動でくねらせていますが、アプリケーションで障害を検出できません(イーサネットASICからイーサネット障害カウンターを読み取っています) 。)これは、障害が生成されていないためか、ソフトウェア/ハードウェアの検出に障害があるためか、わかりません。
ソフトウェアでこれを行う方法はありますか?
JavaやPythonなどの高級言語で何かを書くことに決め、最後の手段としてCでまとめることをいとわないでしょうが、イーサネットドライバーを純粋に書き直したくはありません。考えられるバグを修正します。
[編集]:ケーブル障害を作成したいのですが、検出しません。
[編集]:ドクターケーブルに問題なくFTPとSCPを介して大きなファイルを転送しましたが、wiresharkでトラフィックを検査しているときにエラーが発生していません
[編集]: Pythonでの同様の質問。
解決策:
まあ、Cとの戦いに1日以上費やした後、これはPythonソリューションです。
最初にイーサネットカードの自動チェックサムを無効にします:
ジェネラコディセタグプレ
次に、Pythonから危険なフレームを送信します:
ジェネラコディセタグプレ
複雑にする必要があると誰が言ったのか...
PS: Pythonが大好きです。
解決
Cで作業している場合は、socket(AF_PACKET, SOCK_RAW, ...)
を使用して生のイーサネットフレームを送信し、自分で生成した生のバッファへのポインタを渡すことができます(たとえば、 wikipedia )。
これを行ってから久しぶりなので、代表的なコードスニペットを作成するつもりはありません...