Per Scapy command an Server

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
marty
User
Beiträge: 3
Registriert: Mittwoch 14. November 2018, 09:31

Hallo zusammen,

vor geraumer Zeit habe ich in Autoit eine Fernbedienung für meinen Desktop programmiert. Sie besteht aus einem Server, der auf dem Desktop läuft und auf den Port 666 hört um per TCP Kommandos zu erhalten und entsprechend zu reagieren.

Mir geht es nun darum per Scapy ein Kommando herauszuschicken, dass den Server reagieren lässt.

Bisher hatte ich einen in Autoit programmierten Client auf meinem Laptop zum Versenden der Befehle genutzt. Habe dann aber auch entsprechende Befehle über die Bash command line auf meinem Raspberry Pi genutzt. Letzterer Befehl sah wie folgt aus:

Code: Alles auswählen

echo "text" > /dev/tcp/192.168.1.33/666
Diesen Befehl habe ich nun - leider erfolglos - in Scapy nachzubilden versucht. Folgendes war mein Versuch:

Code: Alles auswählen

send(IP(dst='192.168.1.33')/TCP(sport=666,dport=666)/Raw("text"))
Habe auch mit Wireshark den Output studiert, bin da aber auch nicht weiter gekommen.

Kann hier jemand helfen?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@marty: Warum willst Du ganz normale Netzwerkkommunikation mit so etwas kompliziertem wie `scapy` machen? Und dazu noch als Ersatz für das schreiben in eine lokale Datei?

Code: Alles auswählen

# ``echo "text" > /dev/tcp/192.168.1.33/666`` in Python:
with open('/dev/tcp/192.168.1.33/666', 'wb') as file:
    file.write(b'text\n')
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
marty
User
Beiträge: 3
Registriert: Mittwoch 14. November 2018, 09:31

@__blackjack__: Ich will jetzt keine Fernbedienung mit Scapy programmieren. Eigentlich wollte ich nur mit Scapy umgehen lernen. Und da wäre ein erster Schritt, diesen einfachen Befehl nachzubilden. Leider scheitert es schon hieran. Mich würde einfach interessieren, wie dies in Scapy funktionieren würde, da man ja angeblich alles in Scapy bauen kann.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@marty: Die Frage ist ob das so einfach ist. Du baust da ja wirklich Pakete auf unterster Ebene zusammen. Geht das bei TCP einfach so, oder musst Du da am Ende nicht auch tatsächlich das TCP-Protokoll selbst implementieren. *Ein* ”TCP-Paket” reicht da ja nicht für aus. Die Verbindung muss ja mindestens aufgebaut werden und die ACK-Pakete verarbeitet werden… Oder macht `scapy` das automatisch? Und dann bleibt auch immer noch die Frage nach dem *warum*?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
marty
User
Beiträge: 3
Registriert: Mittwoch 14. November 2018, 09:31

@__blackjack__: Ich denke, das wird es sein. Bei Wireshark konnte ich beobachten, dass der echo-Befehl mehrere Pakete geschickt hatte und Scapy nur eines. Außerdem hatte sich der echo-Befehl aufgehängt. Ich hatte die Pakete für Wireshark nicht an den Desktop-Server geschickt sondern an den Laptop, wo kein Server am Port 666 hört sondern nur Wireshark läuft. Vermutlich hat der echo-Befehl auf irgendeine Art Rückmeldung gewartet. Wenn es so kompliziert ist, werde ich es vielleicht lassen. Trotzdem habe ich zumindest ein bisschen mit der Sache gelernt.
Antworten