SyntaxError: Missing parenthese...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

hallo,

Code: Alles auswählen

def client_function():
    print "Connecting to a server..."
    sys.stdout.write("Server?: ")
    host = stdin.readline().rstrip("\n")
    sys.stdout.write("Port?: ")
    port = stdin.readline().rstrip("\n")
    c = Client(host, int(port))
    c.send_packet("hello!")
    sleep(0.01)
    i = 0
    # wait to get packetConfirm
    while i < 3:
        c.Loop()
        sleep(0.1)
        i += 1

client_function()
Meine Shell:

Code: Alles auswählen

C:\Users\tomycat\Documents>client.py
  File "C:\Users\tomycat\Documents\client.py", line 2
    print "Connecting to a server..."
                                    ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Connecting to a server...")?

C:\Users\tomycat\Documents>
Was mache ich falsch?
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Du benutzt Python 3 (und das ist gut so), allerdings ist dort "print" im Gegensatz zu Python 2 eine Funktion und benötigt den String daher als Argument.
Wie es korrekt heißt, steht sogar in der Fehlermeldung.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum verwendest Du `sys.stdout`, und `stdin` (da ohne sys)? Üblich wäre `print` und `input` zu benutzen. Die while-Schleife sollte eine for-Schleife sein.
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

ok danke,
Version II
<Code>
def client_function():
print ("Connecting to a server...")
host = input("Server: ")
print ("\n")
port = input("Port: ")
print ("\n")
c = Client(host, int(port))
c.send_packet("hello")
sleep(0.01)
i = 0
# wait to get packetConfirm
while i < 3:
c.Loop()
sleep(0.1)
i += 1

client_function()
</Code>
<Code>
C:\myprojekt\Pyton_v1>client.py
Connecting to a server...
Server: 192.168.178.95


Port: 4444


Traceback (most recent call last):
File "C:\myprojekt\Pyton_v1\client.py", line 17, in <module>
client_function()
File "C:\myprojekt\Pyton_v1\client.py", line 7, in client_function
c = Client(host, int(port))
NameError: name 'Client' is not defined

C:\myprojekt\Pyton_v1>
</Code>
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind die falschen code-tags, bitte die richtigen benutzen: [code*] und [/code*] (ohne die sternchen, sonst kann man das ja hier nicht sehen).
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind die falschen code-tags, bitte die richtigen benutzen: [code*] und [/code*] (ohne die sternchen, sonst kann man das ja hier nicht sehen).
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Natürlich ist `Client` nicht definiert, weil Du `Client` nirgends definierst. Woher hast Du das?
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich schrieb ja ohne *.... und in deinem ersten Post hast du das doch auch noch hinbekommen?!?! Und warum soll der Link in Code-Tags...??

Und die Seite die du da hast scheint Mist zu sein, denn die grast selbststaendig Code ab (wahrscheinlich von Github) und extrahiert da irgendeinen Mist, der so nicht laeuft.

Wie waere es, wenn du mal einen Schritt zurueck trittst, und uns erzaehlst, was du da eigentlich erreichen willst?
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

thx,
ich möchte ein Prog. schreiben das sich bei einem Win Rechner per smb Protokoll anmeldet, sprich:
001_SMB_negotiate
002_SMB_season_setup
003_SMB_Tree_connect_AndX

Dann z.B ein Verzeihnis erstellt etc.
ganz Normal. Ich kann c# php Java...

Ich finde keinen Anfang,
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das willst du von Anfang an komplett selbst implementieren? Oder gibt es da schon Bibliotheken?
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

Bibliotheken: Genau das ist mein Ziel, ein Skript, wo funkt, wäre für den Anfang super. :D

implementieren: Interesse ja, wie der Aufbau ist. Wenn ich die Bibliotheken im griff habe, dann könnte ich die Implementierung in Wireshark abgreifen.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist keine Antwort auf meine Frage. Gibt es solche Bibliotheken? Wenn ja, wie heißen die? Und wie sehen deren Beispiele aus? Denn was du da gesucht und gefunden hast, das hat ja nun nichts mit SMB zu tun.
tomycat
User
Beiträge: 26
Registriert: Samstag 31. August 2019, 15:27

__deets__ hat geschrieben: Dienstag 3. September 2019, 19:53 Das ist keine Antwort auf meine Frage. Gibt es solche Bibliotheken? Wenn ja, wie heißen die? Und wie sehen deren Beispiele aus? Denn was du da gesucht und gefunden hast, das hat ja nun nichts mit SMB zu tun.
danke für deine Antwort:
Mit Bibliotheken verstehe ich...

Code: Alles auswählen

schnipp...
  cipherText = cipher.encrypt(plainText)
            transformHeader['Signature'] = cipher.digest()
            packet = str(transformHeader) + cipherText

        self._NetBIOSSession.send_packet(str(packet))
        ...schnipp
Der Komplette link:
https://www.programcreek.com/python/exa ... S.MODE_CCM

PS: Die Codes habe ich nicht zum laufen bekommen, der Entwickler gibt mir keine Antwort.


Ich verstehe unter Implantierung:

Code: Alles auswählen

Send.meinText_als_hex(00000085ff534d4272000000001853c00000000000000000000000000000fffe00004000006200025043204e45545...schnipp)
Erster Teil ist Netbios und dann kommt SMB.

ich sende einen Hexstring(negotiate Anfrage) auf Port 445. Der Client meldet sich an den Remote Windows an und das SMB Protokoll wird ausgehandelt.
bitte korrigiere mich wenn ich falsch liege
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ja nun ein komplett anderes Projekt. Was hat das mit dem Code den du oben zeigst zu tun?
Benutzeravatar
__blackjack__
User
Beiträge: 13006
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‽
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
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: 4165
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: 17712
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 :-)
Antworten