SyntaxError: Missing parenthese...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
__blackjack__
User
Beiträge: 13064
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@tomycat: Du kannst angeblich C#, PHP, und Java, hast aber offensichtlich keine Ahnung was eine Bibliothek ist. Ähm…

Kannst Du denn überhaupt Python? Gleich beim ersten Beispiel hätte Dir doch eigentlich schon auffallen müssen das die Klammern beim `print()`-Aufruf fehlen, denn `print()` wird doch in der Quelle die Du zum lernen der Python-Grundlagen verwendest bestimmt vorkommen‽
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

__blackjack__ hat geschrieben: Dienstag 3. September 2019, 21:58 @tomycat: Du kannst angeblich C#, PHP, und Java, hast aber offensichtlich keine Ahnung was eine Bibliothek ist. Ähm…

Kannst Du denn überhaupt Python? Gleich beim ersten Beispiel hätte Dir doch eigentlich schon auffallen müssen das die Klammern beim `print()`-Aufruf fehlen, denn `print()` wird doch in der Quelle die Du zum lernen der Python-Grundlagen verwendest bestimmt vorkommen‽
zu Bibliothek: Ich verstehe das so, anstatt 30 Zeilen zu tippen, so tipp man nur 3 Zeilen. Die 3 Zeilen greifen auf die Bibliothek zu. Somit muss das Rad nicht immer neu erfunden werden. Richtig?

zu Python: Ich lerne mich gerade ein :-) Ich nehme an, dass die einfachen Beispiele im Internet funktionieren. Sprich, ich gehe davon aus, ich machen Irgendwo einen Denkfehler.

zum Implentieren: Ich starte wireshark und schneide den Datenverkehr zwieschen SMB Client und Remote Windows Computer mit. In Wireshark exportiere ich den Datensatz vom SMB Client in einen Datei. Davon löschen ich alles, bis auf NetBios gefolgt vom SMB Teil. Diesen Teil sende ich mit einem Standart Socket auf auf Port 445.

Bitte verbessert mich wenn Quatsch dabei ist. Ich will NUR einen kleinen einfachen Beispielcode, der sich als SMB client ausgibt.

Code: Alles auswählen

z.B. könnte das so irgendwie aussehen:
s.netbios.connect(192.168.178.111)
Was besseres wie
https://www.programcreek.com/python/exa ... S.MODE_CCM
habe ich nicht gefunden. Ich kann Beispiel 1 nutzen, aber was mache ich mit

Code: Alles auswählen

sendSMB(self, packet): 
//self ???
// packet ???

Der Entwickler gibt mir keine Antwort.
Benutzeravatar
sparrow
User
Beiträge: 4183
Registriert: Freitag 17. April 2009, 10:28

Welcher Entwickler denn? Du verlinkst hier nie Projektseiten, sondern Seiten, die irgendwoher Programmcode ziehen und (mehr oder wenige zusammenhanglos) darstellen. Steht ja auch groß darüber.

Sich dir eine Bibliothek bzw. ein Modul, welches das Protokoll anbietet. Ich bin mir fast sicher, dass du mit Wireshark nicht weit kommst, weil die Kommunikation hoffentlich verschlüsselt ist. Musst du aber auch gar nicht, weil die Dokumentation des Protokolls verfügbar ist.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein, Du hast ein falsches Verständnis von Bibliothek. Eine Bibliothek ist eine Sammlung von Funktionen, die Dir für ein komplexes Problem eine einfache Schnittstelle bereitstellt.
Ich muß also nicht mehr wissen, wie etwas im Detail gemacht wird.

Deine Annahme, dass irgendwelche Code-Schnipsel, die irgendwer illegal kopiert hat, ohne die Lizenzbedingungen zu beachten, Dir helfen, Dein Problem zu lösen, ist schlicht falsch.

Und so ist es auch mit Deinem Ansatz mit Wireshark. Allein vom Mitschneiden von Datenverkehr wirst Du so ein komplexes Protokoll wie SMB nicht verstehen können. Das eigentliche Protokoll ist von Microsoft auf wenigen hundert Seiten auch irgendwie dokumentiert.

Wenn man einfach nach SMB sucht (https://pypi.org/search/?q=smb) findest Du etliche Bibliotheken, die zum Teil Teile des SMB-Protokolls umsetzen. Erster Schritt wäre es also, zu testen, ob eine dieser Bibliotheken das tut, was Du machen möchtest.

So ganz verstanden, was Dein eigentliches Problem ist, habe ich aber noch nicht.
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

sparrow hat geschrieben: Mittwoch 4. September 2019, 10:27 Welcher Entwickler denn? Du verlinkst hier nie Projektseiten, sondern Seiten, die irgendwoher Programmcode ziehen und (mehr oder wenige zusammenhanglos) darstellen. Steht ja auch groß darüber.
Der Entwickler wo da steht. Ich suche auch kein Projekt, sondern einen kleinen Einstieg in smb und phthon.
sparrow hat geschrieben: Mittwoch 4. September 2019, 10:27 Sich dir eine Bibliothek bzw. ein Modul, welches das Protokoll anbietet. Ich bin mir fast sicher, dass du mit Wireshark nicht weit kommst, weil die Kommunikation hoffentlich verschlüsselt ist. Musst du aber auch gar nicht, weil die Dokumentation des Protokolls verfügbar ist.
Der Anfangsteil (davon war auch meine Rede) von einer SMB Kommunikation ist unverschlüsselt, sobald die Anmeldung und die Protokoll Version ausgehandelt wird, dann sind die SMB Daten verschlüsselt, das ist richtig.
Sirius3 hat geschrieben: Mittwoch 4. September 2019, 10:48 Nein, Du hast ein falsches Verständnis von Bibliothek. Eine Bibliothek ist eine Sammlung von Funktionen, die Dir für ein komplexes Problem eine einfache Schnittstelle bereitstellt.
Ich muß also nicht mehr wissen, wie etwas im Detail gemacht wird.
Vielleicht habe ich mich falsch ausgedrückt, aber das habe ich doch gesagt, statt 30 Zeilen hat man nur 3 Zeilen Code. Das beste Beispiel ist OpenGL.
Sirius3 hat geschrieben: Mittwoch 4. September 2019, 10:48
Deine Annahme, dass irgendwelche Code-Schnipsel, die irgendwer illegal kopiert hat, ohne die Lizenzbedingungen zu beachten, Dir helfen, Dein Problem zu lösen, ist schlicht falsch.
sorry, nicht verstanden. Ich nehme mal an, wenn jemand ein Code Schnipsel im Internet zu Verfügung stellt. Der Möchte der Welt helfen. Ok, dann gibt es noch Fake Seiten und viel Werbung. :-)
Sirius3 hat geschrieben: Mittwoch 4. September 2019, 10:48 Und so ist es auch mit Deinem Ansatz mit Wireshark. Allein vom Mitschneiden von Datenverkehr wirst Du so ein komplexes Protokoll wie SMB nicht verstehen können. Das eigentliche Protokoll ist von Microsoft auf wenigen hundert Seiten auch irgendwie dokumentiert.
100? Es gibt über 100 pdf Doku´s über smb. ja ich weis. Mit Wireshark kann man nicht alles sehen. :-)
Sirius3 hat geschrieben: Mittwoch 4. September 2019, 10:48 Wenn man einfach nach SMB sucht (https://pypi.org/search/?q=smb) findest Du etliche Bibliotheken, die zum Teil Teile des SMB-Protokolls umsetzen. Erster Schritt wäre es also, zu testen, ob eine dieser Bibliotheken das tut, was Du machen möchtest.
Mega THX, ich check mal den link :-)
Sirius3 hat geschrieben: Mittwoch 4. September 2019, 10:48 So ganz verstanden, was Dein eigentliches Problem ist, habe ich aber noch nicht.

Kommt noch :-)
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

ich glaube wir reden aneinander vorbei. Der Denkfehler liegt auf meiner Seite.

1.Frage
Gibt es von Haus aus, eine Möglichkeit mit z.B. 3 Zeilen eine SMB Verbindung aufzubauen? Wenn Nein, dann brauche ich ein Projekt wo mir die Schnittstelle zu Verfügung gestellt wird. Sehe ich das so richtig?


2. Frage: Die Bibliothek ist gleiche zu setzen mit API? wie verstehe ich das mit Implentieren, ich sende einen String mit einer Standart Socket, stimmt das so ?


Warum das ganz? Ich will wissen wie sich eine SMB Verbindung mit Python aufbau, deswegen ich ein kleiner Prog schreiben.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@tomcat: zu 1) SMB ist viel zu komplex, als dass drei Zeilen ausreichen würden, selbst wenn Du eine passende Bibliothek benutzt. Zu 2) Bibliothek und API ist wie Staubsauger und Gebrauchsanweisung. Und SMB ist viel komplexer, als dass es mit dem Senden eines Strings an einen Server über einen Socket getan wäre.

Und warum willst Du wissen, wie sich eine SMB Verbindung mit Python aufbauen läßt? Und SMB ist viel zu komplex, als dass das mit einem kleinen Prog getan wäre.
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

sowas habe ich gesucht, der Code geht:

Code: Alles auswählen

#!/usr/bin/python
from impacket import smb
from struct import pack
import sys
import socket

def mein_smb():
	conn = smb.SMB(sys.argv[1],sys.argv[1])
	conn.login_standard('', '')
	print('Target OS: '+conn.get_server_os())

mein_smb()
Bibiotek und Implentierung macht mir irre
Kann mir jemand ein Beispiel machen?
Benutzeravatar
__blackjack__
User
Beiträge: 13064
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@tomycat: Beispiel heisst auf Englisch „example“. Schau mal in dem Quellen von `impacket` — da gibt's ein Verzeichnis…

Das Package scheint aber Python 2 zu sein — also nichts mit dem man heute noch neue Programme anfangen sollte.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4183
Registriert: Freitag 17. April 2009, 10:28

Aus der README.md: A Python interpreter. Python 2.6/2.7 and Python 3.6 are known to work.
Benutzeravatar
__blackjack__
User
Beiträge: 13064
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich hatte mir das angeschaut was man per ``pip`` installieren, nicht den aktuellen master-Branch. Beim PyPI sieht das noch Python 2-only aus. 🤔

Naja, und die She-Bang-Zeile beim OP sieht halt auch nach Python 2 aus.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten