Weiterleiten einer TCP-Verbindung mit der Protokollierung mit socat

666
William

Ich versuche, einen Service zu debuggen, mit dem sich Clients über TCP (unter Linux) verbinden. Ich kann kein Programm ändern (habe keine Quelle), und ich kann keine Mechanismen verwenden, die auf der Netzwerkebene schnüffeln (wie tcpdump, pcap, wireshark usw.).

Ich kann jedes Service- und Client-Programm so konfigurieren, dass es an jedem beliebigen Port oder an der Adressbindung abhört oder eine Verbindung herstellt.

Ich weiß, dass es möglich ist, das SOCAT-Programm zu verwenden, um beliebige Verbindungen mit einem Befehl wie weiterzuleiten SOCAT -d -d TCP-LISTEN:2001,bind=127.0.0.1,fork TCP:localhost:2002. Ich sehe jedoch nicht, dass die Standardversionen von socat über einen Mechanismus verfügen, um die Daten zu protokollieren, wenn sie hin und her gehen.

Was ich brauche, ist eine Möglichkeit, eine TCP-Verbindung auf diese Weise weiterzuleiten, aber die Daten in beiden Richtungen in eine Datei (also ein Paar von Dateien) zu protokollieren. Im Idealfall würde diese Strategie nur Linux-Pakete wie Socat oder Tee verwenden.

Ich weiß, dass es wahrscheinlich möglich ist, ein Programm zu schreiben, das dies mit Perl oder Python oder ähnlichem ausführt, aber für die Zwecke dieser Frage möchte ich eine Möglichkeit, nur mit Klebstoff (bash usw.) und Aktienprogrammen zu arbeiten.

1

0 Antworten auf die Frage