[python] ethernetverbinding met socket maken

Pagina: 1
Acties:

  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
Beste Tweakers,

Via python zou ik heel graag een verbinding willen maken met een apparaat wat aan mijn netwerk hangt, met IP adres 10.0.0.163. Hiervoor heb ik gebruik gemaakt van sockets in python zoals dit voorbeeld van https://wiki.python.org/moin/TcpCommunication deze website. Het is de bedoeling dat ik na de connectie gelegd te hebben, commando's kan sturen vanaf mijn pc en data terugkrijg.

Als ik nu met wireshark kijk wat er gebeurd zie ik helaas geen verbinding opgesteld worden. Ik heb in wireshark het filter op dit ip adres maar er wordt niks gecaptured. :'(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
TCP_IP = '10.0.0.163'
TCP_PORT = 432
BUFFER_SIZE = 1024
MESSAGE = 'D.'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print("test")
s.connect((TCP_IP, TCP_PORT))
while (1==1):
    s.send(MESSAGE.encode('utf-8'))
 
s.close()


Ik zou verwachten dat de software in ieder geval probeert de 3-way handshake te doen, maar er gebeurd helemaal niks. Hij komt wel in de while loop, dus het lijkt dat s.connect() niets doet.

(disclaimer: ik ben noob met python en met sockets heb ik ook nog nooit gewerkt }:O )

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Monitor je in wireshark verkeer van en náár 10.0.0.163? Ook als er iets foutgaat op de machine aan de andere kant, zou je het eerste bericht van de three-way handshake moeten zien vertrekken.

Heeft geen speciale krachten en is daar erg boos over.


  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
Ja ik heb het filter ip.addr == 10.0.0.163 gebruikt, als het goed is is dat 2 wegverkeer

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


  • Merethil
  • Registratie: December 2008
  • Laatst online: 08-10 16:12
epic_gram schreef op donderdag 28 september 2017 @ 14:02:
Beste Tweakers,

Via python zou ik heel graag een verbinding willen maken met een apparaat wat aan mijn netwerk hangt, met IP adres 10.0.0.163. Hiervoor heb ik gebruik gemaakt van sockets in python zoals dit voorbeeld van https://wiki.python.org/moin/TcpCommunication deze website. Het is de bedoeling dat ik na de connectie gelegd te hebben, commando's kan sturen vanaf mijn pc en data terugkrijg.

Als ik nu met wireshark kijk wat er gebeurd zie ik helaas geen verbinding opgesteld worden. Ik heb in wireshark het filter op dit ip adres maar er wordt niks gecaptured. :'(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
TCP_IP = '10.0.0.163'
TCP_PORT = 432
BUFFER_SIZE = 1024
MESSAGE = 'D.'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print("test")
s.connect((TCP_IP, TCP_PORT))
while (1==1):
    s.send(MESSAGE.encode('utf-8'))
 
s.close()


Ik zou verwachten dat de software in ieder geval probeert de 3-way handshake te doen, maar er gebeurd helemaal niks. Hij komt wel in de while loop, dus het lijkt dat s.connect() niets doet.

(disclaimer: ik ben noob met python en met sockets heb ik ook nog nooit gewerkt }:O )
Wat is de code op je "server" (het ontvangende apparaat)?

  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
die code heb ik niet, ik heb met wireshark gekeken wat er gestuurd wordt en dat is het.

edit: ik heb wel een driver van het apparaat, als ik die draai zie ik dat er een verbinding wordt opgezet volgens de gewone 3 way handshake routine van het TCP ip protocol. Die probeer ik nu na te bootsen met deze pythoncode.

[ Voor 56% gewijzigd door epic_gram op 28-09-2017 14:22 ]

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Merethil schreef op donderdag 28 september 2017 @ 14:17:
[...]


Wat is de code op je "server" (het ontvangende apparaat)?
Hoewel dat interessant is, gaat daar het probleem niet liggen als de eerste SYN niet eens verstuurd wordt.

Zit wireshark op de goede interface te luisteren?

Verder, welk OS is het?

Heeft geen speciale krachten en is daar erg boos over.


  • Merethil
  • Registratie: December 2008
  • Laatst online: 08-10 16:12
bwerg schreef op donderdag 28 september 2017 @ 14:22:
[...]

Hoewel dat interessant is, gaat daar het probleem niet liggen als de eerste SYN niet eens verstuurd wordt.

Zit wireshark op de goede interface te luisteren?

Verder, welk OS is het?
Ik gok eigenlijk dat wireshark gewoon verkeerd staat ingesteld en probeer meer te bekijken waarom zo'n klein stukje code niet zou werken.

Edit: Maar goed, servercode zit er niet in want zo te zien moet het gaan om het mocken van een driver die dit ook zou doen.

[ Voor 12% gewijzigd door Merethil op 28-09-2017 14:24 ]


  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
bwerg schreef op donderdag 28 september 2017 @ 14:22:
[...]

Hoewel dat interessant is, gaat daar het probleem niet liggen als de eerste SYN niet eens verstuurd wordt.

Zit wireshark op de goede interface te luisteren?

Verder, welk OS is het?
ja wireshark zit ook op de goede interface te luisteren, het is windows 7 x64

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


Acties:
  • +1 Henk 'm!

  • sh4d0wman
  • Registratie: April 2002
  • Laatst online: 07:14

sh4d0wman

Attack | Exploit | Pwn

Je hebt je Wireshark filter als display filter staan?
Zo ja, test dan eens een connectie naar de remote server met telnet of netcat.
Dat zou je dan terug moeten zien

edit: voor de duidelijkheid, capture filters hebben een andere syntax dan display filters.
zie o.a. https://pmoorey.wordpress...pture-vs-display-filters/

[ Voor 35% gewijzigd door sh4d0wman op 28-09-2017 14:26 ]

This signature has been taken down by the Dutch police in the course of an international lawenforcement operation.


  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
telnet kan hem inderdaad ook niet bereiken, ik ga even in mijn netwerkinstellingen rommelen. Volgens mij heb ik ergens een verkeerd subnetmask of iets dergelijks ingesteld.

Bedankt voor jullie hulp in ieder geval.

Denken jullie dat de code wel gewoon goed is?

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


Acties:
  • +1 Henk 'm!

  • sh4d0wman
  • Registratie: April 2002
  • Laatst online: 07:14

sh4d0wman

Attack | Exploit | Pwn

epic_gram schreef op donderdag 28 september 2017 @ 14:40:
Denken jullie dat de code wel gewoon goed is?
Ik ben geen goede coder maar ik zie volgens mij wel wat verbeterpunten.
Je hebt een BUFFER_SIZE = 1024 maar ik zie niet waar je deze gebruikt.

Over het algemeen zal je server iets terug sturen. Dit kan gelijk na connectie zijn, zoals een FTP banner, of wellicht nadat je een commando verstuurd hebt. Dat vang je op met recv() in een buffer, welke ik niet zie in je code.

Hier een voorbeeldje met recv() gebruik.
https://gist.github.com/tuxmartin/e7c85f84153ba15576c5
Misschien even een goede tutorial opzoeken maar eerst je Wireshark op orde brengen.
Dan kun je in ieder geval je code modelleren naar wat je op het scherm ziet :)

This signature has been taken down by the Dutch police in the course of an international lawenforcement operation.


  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
sh4d0wman schreef op donderdag 28 september 2017 @ 15:10:
[...]

Ik ben geen goede coder maar ik zie volgens mij wel wat verbeterpunten.
Je hebt een BUFFER_SIZE = 1024 maar ik zie niet waar je deze gebruikt.

Over het algemeen zal je server iets terug sturen. Dit kan gelijk na connectie zijn, zoals een FTP banner, of wellicht nadat je een commando verstuurd hebt. Dat vang je op met recv() in een buffer, welke ik niet zie in je code.

Hier een voorbeeldje met recv() gebruik.
https://gist.github.com/tuxmartin/e7c85f84153ba15576c5
Misschien even een goede tutorial opzoeken maar eerst je Wireshark op orde brengen.
Dan kun je in ieder geval je code modelleren naar wat je op het scherm ziet :)
klopt, goede punten. :)

Mijn code is nog verre van compleet, ik heb dit puur als test gemaakt (gekopieerd van internet en wat veranderd in mijn zoektocht naar oplossingen) om een verbinding te leggen met een server.

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


  • stereohead
  • Registratie: April 2006
  • Laatst online: 20:18
epic_gram schreef op donderdag 28 september 2017 @ 14:02:

Hij komt wel in de while loop, dus het lijkt dat s.connect() niets doet.
En wat doet s.send()? Blijft die hangen, of wordt die daadwerkelijk oneindig vaak aangeroepen?

Als de s.connect() wel werkt lijkt het alsof er wel daadwerkelijk verbinding is opgezet, anders zou je namelijk een exception moeten krijgen.
epic_gram schreef op donderdag 28 september 2017 @ 14:40:
Denken jullie dat de code wel gewoon goed is?
Zou moeten werken als ik het zo bekijk ja.

In het vervolg wel even je while als volgt schrijven:

code:
1
2
while True:
    # do stuff


Dus zonder haakjes (is niet nodig in Python) en met 'True' in plaats van '1 == 1'

Niet dat het niet werkt, maar dat is nou eenmaal de python-way.

[ Voor 12% gewijzigd door stereohead op 28-09-2017 16:38 . Reden: Per ongelijk te vroeg gesubmit ]


Acties:
  • 0 Henk 'm!

  • epic_gram
  • Registratie: April 2010
  • Laatst online: 21:03

epic_gram

undercover moderator

Topicstarter
jullie zijn allemaal toppers heren (en dames) :D

Inmiddels werkt het, het was gewoon een netwerkfout. Bovenstaande code werkt prima.

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████

Pagina: 1