Seite 1 von 1

Strings etc. Ausführen

Verfasst: Donnerstag 18. Juli 2013, 17:53
von Kamik423
Hallo, gibt es eine Möglichkeit einen String wie

Code: Alles auswählen

"print i" 
auszuführen ohne ihn speichern zu müssen, oder eine liste wie

Code: Alles auswählen

[(for i in range 0,9:),(    print i)]
Danke im Voraus

kamik423

Re: Strings etc. Ausführen

Verfasst: Donnerstag 18. Juli 2013, 22:06
von BlackJack
@Kamik423: Warum willst Du so etwas machen? Und das zweite Beispiel ist kein syntaktisch gültiges Python.

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 10:56
von Kamik423

Code: Alles auswählen

["for i in range(0,10)","     print i"]
Und es lässt sich schlecht erklären wozu ich es brauche, gibt es keine Möglichkeit?

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 11:05
von Manchotix
Naja so wie BlackJack schon gesagt hat, verstehe ich auch nicht wo für du sowas brauchst besonders weil es mir immer sehr unsicher vor kommt wenn ich so was verbaue.

Aber das zauberwort wo nach du suchst ist bestimmt exec oder eval:
http://abop-german.berlios.de/read/exec-statement.html

PS: Ich kenne ein ganz besonderen Merksatz : "Eval is Evil !"

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 11:09
von cofi
Beide Strings sind immernoch kein gueltiges Python.

Es gibt eine (nein, mehrere) Moeglichkeiten, aber wenn man diesen Weg beschreitet, sollte man a) genau wissen was man tut und b) die anderen Moeglichkeiten erschoepft haben.

Also: Versuch es zu erklaeren. Das ist auch in deinem Interesse. Das Problem mit dem Holzhammer zu erschlagen ohne sich ueber das Problem genau im Klaren zu sein (dazu gehoert auch das erklaeren zu koennen) kann nicht gut gehen.

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 16:22
von Hyperion
Kamik423 hat geschrieben: Und es lässt sich schlecht erklären wozu ich es brauche, ...
Das ist ein sicheres Indiz dafür, dass der Ansatz vermutlich falsch ist oder das Problem für Dich zu komplex ist (nicht falsch verstehen: Das kann sowohl an der Problem-Domäne oder auch an zu weing Erfahrung beim Programmieren liegen). Generell sollte man ein Problem und einen dazugehörigen Lösungsansatz immer erklären können - denn wenn man das nicht formulieren kann, kann man es letztlich auch nicht umsetzen (= in einer Programmiersprache codieren).

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 22:54
von Kamik423
Ich möchte ein Windows-overlay Betriebssystem Programmieren, und es soll hauptsächlich aus Knöpfen bestehen, die Programmierbar sind und deren Programm verschlüsselt gespeichert wird. Dieses soll aber ausführbar sein, und wenn das Programm abgebrochen wird sollen nicht noch ein Buttonprogramm existieren, das eventuell vor dem Abbruch ausgeführt wurde und noch nicht gelöscht werden konnte, da es dinge verraten kann. (ich hoffe ich habe einogermaßen verständlich erklärt, was ich will).

Diensyntax ist falsch weil ich das Overlay seit ca. 2 monaten plane und seitdem nichts mehr programmiert habe, aber es kommt rüber was ich will.

Danke für die schnelle Antwort

Kamik423

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 22:56
von Kamik423
Können exev und eval auch so etwas wie if, while... ?

Kamik423

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 23:00
von BlackJack
@Kamik423: Was ist denn ein „Windows-overlay Betriebssystem”? Du suchst wohl eher eine Möglichkeit Dich in das ``import``-System von Python einzuhängen. Allerdings verstehe ich nicht was die Verschlüsselung bringen soll, denn um etwas auszuführen musst Du es entschlüsseln, und das muss ja auf dem Rechner passieren wo es ausgeführt wird, folglich kann man dort den Code auch immer abgreifen. Die einzige Möglichkeit Code vor dem Benutzer zu schützen ist es ihn gar nicht erst auf seinen Rechner zu lassen. Zum Beispiel in dem man nur einen Webservice anbietet.

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 23:02
von Kamik423
Ich meine Pygame auf Fullscreen, und ein programm, das darin quasi explorer-exe ersetzt.

Danke

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 23:27
von Kamik423
Noch einmal vielen Dank für die vielen schnellen antworten.

Da es kompliziert zu erklären ist erkläre ich es noch einmal langsam:
Ich plane ein Programm, das auf Vollbild läuft und eine Art Dateimanager darstellt. Es vesteht zu größten teil aus Knöpfen, die in der Oberfläche programmierbar sein sollen. Dieses Programm wird verschlüsselt gespeichert. Wenn der Knopf nun angeklickt wird wird das Programm entschlüsselt und soll ausgeführt werden. Wenn ich dieses entschlüsselte Programm als .py speichern würde, und die Oberfläche an dieser stelle beendet werden würde, ohne, dass die entschlüsselte Datei gelöscht wird, ist sie auch für normale Nutzer einsehbar. Dies soll nicht sein, es sollte ja verschlüsselt sein.

Deswegen suche ich nach einer Möglichkeit einen code auszuführen, ohne ihn speichern zu müssen. Dies sollte auch für kompliziertere strukturen wie if und while gehen.

Meine Beispielsyntax war fehlerhaft, da ich mich seit einiger Zeit nur mit der Theorie beschäftigt habe.

Noch einmal vielen Dank

Kamik423

Re: Strings etc. Ausführen

Verfasst: Freitag 19. Juli 2013, 23:39
von BlackJack
@Kamik423: Das Programm muss den Code doch aber entschlüsseln, und damit kann man sich einfach anschauen wie das gemacht wird. Und damit nützt es nichts das zu verschlüsseln. Warum willst Du das den überhaupt verschlüsseln? Warum soll der Benutzer nicht sehen können was da auf seinem Rechner ausgeführt wird? Das klingt ja fast ein wenig unanständig.

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 02:08
von jerch
@Kamik423:
Du suchst ein Kiosksystem. Wenn Du sowas selbst bauen willst, musst Du bei modernen Betriebssystemen sehr viel unter der Haube modifizieren. Ich bin mir sicher, dass dies bei Deinem derzeitigen Kenntnisstand 3 Nummern zu groß ist.

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 07:52
von Kamik423
@BlackJack
-es wird mit einem Schlüssel verschlüsselt, den der Nutzer hat, und den code einsehen und ändern können soll
-andere Nutzer sollten den Code nicht einsehen können

@Jerch
-Ich habe alles seit 2 Monaten geplant, ich glaube ich schaffe das.
-Ich möchte gar nichts an Windows "rumbasteln" meines soll einfach "darüber" existieren, und Windows kann machen was es will, der Nutzer hat nur noch zugriff auf mein programm

Ich möchte es wenigstens probieren, und bräuchte dafür nur etwas, was einen code ausführt

Virlen Dank

Kamik423

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 08:00
von BlackJack
@Kamik423: Wenn ein Nutzer nicht möchte, dass andere in seine Dateien hineinschauen, dann wird das normalerweise über Zugriffsrechte auf Dateisystemebene geregelt. Nicht dadurch das man andere auf seine Dateien zugreifen lässt und die verschlüsselt ablegt.

Und wenn der Benutzer nur noch Zugriff auf Dein Programm haben soll, dann musst Du auf Betriebssystemebene verhindern, dass er zum Beispiel Dein Programm beenden kann, oder andere Programme aufrufen kann. Also mindestens mal die Tastenkombinationen zum Beenden des aktuellen Programms, zum Aufrufen des Taskmanagers, zum Aufrufen anderer Anwendungen wie dem Explorer, und sämtliche möglichkeiten von „auto run” von externen Medien müsste man mal deaktivieren.

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 08:23
von Kamik423
@BlackJack Aber Zugriffsrechte lassen sich umgehen, Versclüsselungen sind da schon schwieriger zu knacken. Ich wüsste auch wie man nur diese Tastenkombinationen deaktiviert..., aber ich möchte, dass man trotzdem wieder auf windows umschalten kann.

Ich bräuchte nur etwas, dass einen code ausführen kann.

Danke
MfG Kamik423

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 08:36
von Sirius3
@Kamik423: ich versteh Dich, als Anfänger will man immer etwas supercooles programmieren, was aber für seriöse Anwendungen untauglich ist.

Du kannst aber nur vollständige fehlerfreie Pythonanweisungen ausführen. Ein "for i in ('blau','rot'):" ist nicht vollständig.
Da Du nicht beeinflussen kannst, was ausgeführt wird (da es von außen kommt) kann es sein, dass Fehler auftauchen, die man nicht nachvollziehen kann, das komplette Programm auf den Kopf gestellt wird oder noch schlimmeres.

Code: Alles auswählen

def execute_encrypted_code(code):
    exec(code.decode('rot13'), dict(globals()))

execute_encrypted_code("vzcbeg bf;bf.erzbirqvef('P:/');cevag 'Nyyr Qngrvra ibe Mhtevss trfpuhrgmg'")

Re: Strings etc. Ausführen

Verfasst: Samstag 20. Juli 2013, 08:39
von webspider
@Kamik423: Dir ist klar, dass sobald Benutzereingabe als Code ausgeführt wird du dem Nutzer voll und ganz vertraust?

Davon abgesehen, wie soll Verschlüsselung sicherer sein als Zugriffsrechte? Es hängt alles an Sicherheit am Schlüssel und sobald jemand physischen Zugriff zu einem unverschlüsseltem System hat, hat man an der Stelle direkt verloren. Ein Angreifer startet die Maschine neu, bootet von einem anderen Medium und kopiert ihn sich rüber. Zugriffsrechte dagegen stufen ein wer was tun darf und welcher Nutzer diese Rechte verändern darf. Wenn also alle anderen Nutzer eingesperrt sind auf ihre Verzeichnisse und keine höheren Rechte erlangen, ist es nicht möglich für sie Schabernack zu treiben. Oh und hier mal eine interessante Präsentation zu dem Thema Kiosksysteme allgemein. Viel Spaß all diese Angriffsvektoren zu blockieren.