base64.b64decode falsche Syntax??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kobra
User
Beiträge: 5
Registriert: Dienstag 23. Mai 2006, 18:53

Hallo,

warum funktioniert folgender Codeschnipsel nicht:


Code: Alles auswählen

import base64,sys;sys.stdout.write("\0"*432+base64.b64decode(sys.stdin.read()))
Bekomme immer folgende FM:

AttributeError: 'module' object has no attribute 'base64decode'
Ist da irgendwie ein Denkfehler drin, oder stimmt die Syntax nicht, denn wenn ich z.B. print 'irgend ein crypt string' .decode("base64") ausführe fun ktioniert decode wunderprächtig. Ist das Prinzip nicht ähnlich wie base64.b64decode? Sorry für die dumme Frage :oops:

Ich hoffe, ich hab das im richtigen Bereich gepostet.

Danke im Voraus
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

meine frage: was hat das semikolon darin zu suchen? vllt schreibst du das ganze innj Python-Syntax?

Code: Alles auswählen

import base64, sys
sys.stdout.write("\0"*432+base64.b64decode(sys.stdin.read()))
Warum das nichts macht, dafür bin ich aber zu n00big^^
Weiß nicht, was welche module genau bringen...
Kobra
User
Beiträge: 5
Registriert: Dienstag 23. Mai 2006, 18:53

das klimper ich direkt in die shell, deshalb alles in einer Zeile, natürlich noch mit python -c voran und das ganze in Hochkomma.
Das Problem ist, das er meint, dass er das Attribut b64decode nicht kennt, aber ich kann mich schwach dran erinnern, dass das Attribut sehr wohl im python vorhanden ist. Hab mich auch nochmal in der Referenz vergewissert. Kann halt nur sein, dass irgendwo ein Fehler drin steckt, ich hab auch schon Kontakt mit dem Entwickler dieses Schnippsels aufgenommen. Wollte das aber gleichzeitig hier posten, falls irgendjemand schon vorher ne Idee hat.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

also bei mir läuft alles, keine ahnung...tut mir leid
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

@Kobra:
du übergibst dem Programm über stdin (Tastatur?) einen base64-codierten string mit?

Beschreib doch bitte mal, was du genau vorhast.
mfg, querdenker
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Also, wenn ich jetzt (Suse 10, Python 2.4.1) die von Kobra gepostete Zeile per copy and paste in meinem Python ausfuehren lasse, wartet Python schoen brav auf Tastatureingabe. Als ich es gestern abend zu Hause (Suse 9) ausprobiert habe, hatte ich auch den AttributeError: 'module' object has no attribute 'base64decode'.

Dummerweise war es gestern abend schon spaet und mir ist noch was dazwischengekommen, sodass ich der Sache nicht mehr auf den Grund gegangen bin (vielleicht war es nur was ganz Dummes?). Versuch doch mal

Code: Alles auswählen

import base64
dir(base64)
dann siehtst du ja, ob irgendwo b64decode dabei ist. Eenn die Kommandovervollstaendigung per Tabulatortaste bei dir aktiviert ist, genuegt auch schon base64.b<TAB>.
Kobra
User
Beiträge: 5
Registriert: Dienstag 23. Mai 2006, 18:53

Eben und genau das Gleich passiert mir unter Debian, Suse 10, Suse 8.2
Es scheint als wäre es nicht implementiert.

Code: Alles auswählen

dir (base64) 
gibt unteranderem decode aus, aber eben nur decode, b64decode gibt es nicht, obwohl es ja eindeutig zur Syntax von base64 laut python Referenz dazugehört.
@murph:
Wie hast du den Code ausgeführt, welches OS und python version?
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

ich habe ihn direkt in der kommandozeile ausgeführt, allerdings auseinandergenommen, sprich den import von dem anderem getrennt.
Python: 2.4.2
OS: Ubuntu 5.10
Kobra
User
Beiträge: 5
Registriert: Dienstag 23. Mai 2006, 18:53

Vielleicht liegt es wirklich an der Python Version.
Ich check ma ne andere auf Suse 8.2 und Debian waren es glaube nur Version 2.2
Ansonsten, könnte ich dich eventuell mal bitten ne Codezeile für mich in deine shell zu klimmpern, der generiert daraus ne Datei die ich bräuchte?, anscheinend funktionierts ja bei dir.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

solange es nur einmal ist ;)
Kobra
User
Beiträge: 5
Registriert: Dienstag 23. Mai 2006, 18:53

Danke für deine Hilfe.
Es lag wirklich an der Version, unter Version 2.2 kennt base64 kein Attribut b64decode.
Ma schnell die Version 2.4.1 ausprobiert und bingo, es ging. 8)

Also brauch ich dich nicht mehr nötigen :D
Zuletzt geändert von Kobra am Mittwoch 24. Mai 2006, 10:10, insgesamt 1-mal geändert.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

OK...
BlackJack

Man kommt auch ohne den import von `base64` aus:

Code: Alles auswählen

python -c 'import sys;sys.stdout.write("\0"*432+sys.stdin.read().decode("base64"))'
Antworten