3 Stimmen

libpcap daran hindern, die mit pcap_inject() injizierten Pakete zu erfassen

Ich denke derzeit über eine Möglichkeit nach, an derselben Schnittstelle nur mit pcap zu schnüffeln und die Pakete auch mit pcap_inject zu injizieren.

Das Problem lässt sich mit beiden Methoden leicht lösen:

  • dauerhafte Prüfsummenverfolgung /große langsame Karte/,
  • Prüfsummenverfolgung - bis alle Daten eingespeist wurden, z. B. eine erste http-Anfrage;
  • bpf/libipq/Netfilter hacken, um zusätzliche Parameter für jedes echte PHY-Paket zu übertragen

Aber:

pcap lauscht eth0 /Die reale Situation ist näher an "pcap lauscht und verwirft über die magische Quelle"/, pcap sendet Pakete über das Handle von eth0, damit sie nach draußen geleitet werden können. Was ist die theoretische Grundlage dafür, dass libpcap keine Pakete aufnimmt, die mit derselben Bibliothek an dieselbe Schnittstelle eingespeist wurden - z.B. gehen eingespeiste Pakete nicht durch den gesamten Paketfiltercode von Berkeley?

Praktische Prüfung TBD.

1voto

user502515 Punkte 4287

Möglicherweise einfach Pakete mit der Eigenschaft ignorieren skb->pkt_type == PACKET_OUTGOING auf dem Empfangsweg.

1voto

Christian Punkte 1462

Ihre Frage ist schwer zu entschlüsseln, aber wenn ich Sie richtig verstehe, suchen Sie nach einer Möglichkeit, Pakete zu erfassen, die die Pakete, die Sie einspeisen, ausschließt. Dies können Sie mit einem Erfassungsfilter erreichen, der nur das erfasst, was an die entsprechende Schnittstelle Ihres Rechners gesendet wird...

ether dst aa:bb:cc:dd:ee:ff 

... oder die alles erfasst, außer dem, was auf der betreffenden Schnittstelle gesendet wird:

not ether src aa:bb:cc:dd:ee:ff

Dies wirkt sich auf den Datenverkehr Ihres Rechners aus, der nicht von Ihnen injiziert wird, aber wenn Sie den Datenverkehr erfassen und injizieren, sind Ihnen die Pakete Ihres eigenen Rechners wahrscheinlich ohnehin egal. Wenn Sie etwas spezielleres brauchen, sollte es nicht schwer sein, die Pakete, die Sie gerade gesendet haben, in den aufgezeichneten Paketen zu identifizieren. (Ich nehme an, das ist es, was Sie mit Prüfsummen meinen, aber ich sehe kein unmittelbares Tabellenproblem).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X