Einige Fragen als Neuling

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.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Guten Morgen!

Ich bin recht neu in der Python Programmierung.
Grundwissen/kenntnisse habe ich schon durch ein Buch und Internetrecherchen erlangt.
Doch bei manch Problemen komme ich nicht weiter bzw über manches habe ich mich noch nicht schlau gemacht.
Ich bin gerade dabei eine GUI zu erstellen und stolpere dabei auf ein paar Hindernisse / Probleme.

PS: Ich schreibe über RasPi 3 B+ und benutze die "Python (IDLE) 3.5.3" und "Tkinter".

Frage 1:
Wie kann ich ein Hintergrundbild einfügen?
Habe viel gelesen, doch iwie hat nichts geklappt.
Dazu muss ich noch anmerken, dass meine GUI in 2 Frames eingeteilt ist - doch ich hätte gern das Bild komplett in beiden Frames, sprich durchgehend.

Frage 2:
Wenn ich auf ein Button klicke, öffnen sich im 2. Frame Buttons, Entrys, Labels, co. - klicke ich erneut auf den Button oder auf einen anderen Button, dann hängen sich die neuen Widgets einfach darunter dran, wie behebe ich das?

Frage 3:
Mal angenommen ich erzeuge eine Variable deren Inhalt ein Script ist - wie kann ich mittels Radiobuttons / Entrys /etc. ein Teil des Skriptes ändern?
Z.B. nur bestimmte Zahlen ändern...

Frage 4:
Wie kann man eigentlich eine Update Funktion erzeugen, in der das Programm per Buttondruck checkt ob das Programm und der Skript auf dem neuesten Stand ist und ggf. aktualisiert?

Frage 5:
Wie kann ich Datein/Skripts per SSL/TLS verschlüsseln?

Frage 6:
Wie kann man eigentlich Video Signale ablesen?
z.B. das Signal was vom PC zum TV/Monitor fließt /etc. .


Dies sind so die Fragen, die mich aktuell beschäftigen.
Ich brauche nicht unbedingt ein fertigen Code (wäre war nicht schlecht, da ich so ein Code habe - den ich dann bloß versuchen muss zu verstehen, damit ich seine Arbeitsweise verstehe) ,
aber für gute Ansätze / Tips /etc. wäre ich sehr dankbar! :)
Ich weiß nun nicht, ob mein Code für diese Fragen unbedingt benötigt wird - wenn ja, kann ich ihn natürlich auch noch hochladen.

Mit freundlichen Grüßen,
xXSkyWalkerXx1
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind gleich so viele Dinge auf einmal, und auch sehr wenig konkret. Kann man darum schwer was zu sagen.

Fragen 1-2 hängen von deinem Code ab.

Frage 3 ist mir unklar. In Python gibt es das Konzept einer Variablen, die veränderbaren Code enthält, so nicht. Was man da üblicherweise macht ist eine Funktion zu schreiben, und die bekommt Parameter. Und die Berechnungen innerhalb der Funktion ändern sich dann entsprechend. Die Parameter kannst du natürlich zb aus Entries gewinnen.

Frage 4 Ist SEHR fortgeschritten. Würde ich hinten anstellen.

Frage 5 ist unklar bis sinnlos. SSL/TLS Verschlüsseln Datenströme über ein Netzwerk. Du kannst natürlich zB Python Skripte via HTTPS runter laden, und dann sind die während des Transfers verschlüsselt. Aber das klingt nicht so, als ob es das ist, was du willst. Was willst du erreichen?

Auch Frage 6 ist zu unklar. Was willst du erreichen?
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Sonntag 1. Juli 2018, 12:45 Das sind gleich so viele Dinge auf einmal, und auch sehr wenig konkret. Kann man darum schwer was zu sagen.

Fragen 1-2 hängen von deinem Code ab.

Frage 3 ist mir unklar. In Python gibt es das Konzept einer Variablen, die veränderbaren Code enthält, so nicht. Was man da üblicherweise macht ist eine Funktion zu schreiben, und die bekommt Parameter. Und die Berechnungen innerhalb der Funktion ändern sich dann entsprechend. Die Parameter kannst du natürlich zb aus Entries gewinnen.

Frage 4 Ist SEHR fortgeschritten. Würde ich hinten anstellen.

Frage 5 ist unklar bis sinnlos. SSL/TLS Verschlüsseln Datenströme über ein Netzwerk. Du kannst natürlich zB Python Skripte via HTTPS runter laden, und dann sind die während des Transfers verschlüsselt. Aber das klingt nicht so, als ob es das ist, was du willst. Was willst du erreichen?

Auch Frage 6 ist zu unklar. Was willst du erreichen?
Zu Antwort 1-2:

Code: Alles auswählen

import tkinter, webbrowser
from tkinter import messagebox, PhotoImage

def Beenden():
    mainwindow.destroy()


def layoutSettings():
    pass


def aimbotSettings():
    titleLabel = tkinter.Label(frameRight, text = "Aimbot", foreground = "red", font = "arial 33 bold")
    titleLabel.pack(side="top",pady=12)

    phLabel = tkinter.Label(frameRight, text = "PLACEHOLDER FOR PREVIW VIDEO!")
    phLabel.pack(pady = 65)

    info1Label = tkinter.Label(frameRight, text = "Information/en:",foreground = "red",font = "arial 18 bold") 
    info1Label.pack()
    
    info2Label = tkinter.Label(frameRight, text = "<Aktuell stehen noch keine Infos zur Verfügung!>",font = "arial 10") 
    info2Label.pack(pady=25)

    label1 = tkinter.Label(frameRight, text = "Einstellungen:",foreground = "red",font = "arial 18 bold")
    label1.pack()
    
    label2 = tkinter.Label(frameRight, text = "Schaltung:",font = "arial 10")
    label2.pack()
    toggle = tkinter.StringVar()
    toggle.set("FALSE")
    on = tkinter.Radiobutton(frameRight, text = " ON",variable=toggle,value="TRUE")
    on.pack()
    off = tkinter.Radiobutton(frameRight, text = "OFF",value="FALSE")
    off.pack()
    
    label3 = tkinter.Label(frameRight, text = "Geschwindigkeit Zoom-In:",font = "arial 10")
    label3.pack()
    
    entry1 = tkinter.Entry(frameRight)
    entry1.pack()
    
    label4 = tkinter.Label(frameRight, text = "Geschwindigkeit Zoom-Out:",font = "arial 10")
    label4.pack()
    
    entry2 = tkinter.Entry(frameRight)
    entry2.pack()


def aimassistSettings():
    titleLabel = tkinter.Label(frameRight, text = "AimAssist", foreground = "red", font = "arial 33 bold")
    titleLabel.pack(side="top",pady=12)

    phLabel = tkinter.Label(frameRight, text = "PLACEHOLDER FOR PREVIW VIDEO!")
    phLabel.pack(pady = 65)

    info1Label = tkinter.Label(frameRight, text = "Information/en:",foreground = "red",font = "arial 18 bold") 
    info1Label.pack()
    
    info2Label = tkinter.Label(frameRight, text = "<Aktuell stehen noch keine Infos zur Verfügung!>",font = "arial 10") 
    info2Label.pack(pady=25)

    label1 = tkinter.Label(frameRight, text = "Einstellungen:",foreground = "red",font = "arial 18 bold")
    label1.pack()

    label2 = tkinter.Label(frameRight, text = "Schaltung:",font = "arial 10")
    label2.pack()
    toggle = tkinter.StringVar()
    toggle.set("FALSE")
    on = tkinter.Radiobutton(frameRight, text = " ON",variable=toggle,value="TRUE")
    on.pack()
    off = tkinter.Radiobutton(frameRight, text = "OFF",value="FALSE")
    off.pack()
    
    label3 = tkinter.Label(frameRight, text = "Geschwindigkeit:",font = "arial 10")
    label3.pack()
    
    entry1 = tkinter.Entry(frameRight)
    entry1.pack()
    
    label4 = tkinter.Label(frameRight, text = "Y - Wert:",font = "arial 10")
    label4.pack()
    
    entry2 = tkinter.Entry(frameRight)
    entry2.pack()
    
    label5 = tkinter.Label(frameRight, text = "X - Wert:",font = "arial 10")
    label5.pack()
    
    entry3 = tkinter.Entry(frameRight)
    entry3.pack()


def norecoilSettings():
    titleLabel = tkinter.Label(frameRight, text = "NoRecoil", foreground = "red", font = "arial 33 bold")
    titleLabel.pack(side="top",pady=12)

    phLabel = tkinter.Label(frameRight, text = "PLACEHOLDER FOR PREVIW VIDEO!")
    phLabel.pack(pady = 65)

    info1Label = tkinter.Label(frameRight, text = "Information/en:",foreground = "red",font = "arial 18 bold") 
    info1Label.pack()
    
    info2Label = tkinter.Label(frameRight, text = "<Aktuell stehen noch keine Infos zur Verfügung!>",font = "arial 10") 
    info2Label.pack(pady=25)

    label1 = tkinter.Label(frameRight, text = "Einstellungen:",foreground = "red",font = "arial 18 bold")
    label1.pack()

    label2 = tkinter.Label(frameRight, text = "Schaltung:",font = "arial 10")
    label2.pack()
    toggle = tkinter.StringVar()
    toggle.set("FALSE")
    on = tkinter.Radiobutton(frameRight, text = " ON",variable=toggle,value="TRUE")
    on.pack()
    off = tkinter.Radiobutton(frameRight, text = "OFF",value="FALSE")
    off.pack()
    
    label3 = tkinter.Label(frameRight, text = "Recoil Wert (Y-Achse, positiv):",font = "arial 10")
    label3.pack()
    
    entry1 = tkinter.Entry(frameRight)
    entry1.pack()
    
    label4 = tkinter.Label(frameRight, text = "Geschwindigkeit:",font = "arial 10")
    label4.pack()
    
    entry2 = tkinter.Entry(frameRight)
    entry2.pack()
    

def jitterSettings():
    pass


def autorunSettings():
    titleLabel = tkinter.Label(frameRight, text = "AutoRun", foreground = "red", font = "arial 33 bold")
    titleLabel.pack(side="top",pady=12)

    phLabel = tkinter.Label(frameRight, text = "PLACEHOLDER FOR PREVIW VIDEO!")
    phLabel.pack(pady = 65)

    info1Label = tkinter.Label(frameRight, text = "Information/en:",foreground = "red",font = "arial 18 bold") 
    info1Label.pack()
    
    info2Label = tkinter.Label(frameRight, text = "<Aktuell stehen noch keine Infos zur Verfügung!>",font = "arial 10") 
    info2Label.pack(pady=25)

    label1 = tkinter.Label(frameRight, text = "Einstellungen:",foreground = "red",font = "arial 18 bold")
    label1.pack()
    
    label2 = tkinter.Label(frameRight, text = "Schaltung:",font = "arial 10")
    label2.pack()
    toggle = tkinter.StringVar()
    toggle.set("FALSE")
    on = tkinter.Radiobutton(frameRight, text = " ON",variable=toggle,value="TRUE")
    on.pack()
    off = tkinter.Radiobutton(frameRight, text = "OFF",value="FALSE")
    off.pack()


def rapidfireSettings():
    pass

                       
#Hauptfenster
mainwindow = tkinter.Tk()
mainwindow.title("xXSkyWalkerXx1 - Fortnite S.G.I. Tool")
mainwindow.resizable(0,0)                   #Verhindert Möglichkeit Fenster zu vergrößern
mainwindow.geometry("1200x521")             #Größe des Fensters - modul.funktion(pixelX,pixelY)
"""backgroundPic = PhotoImage(file = "/home/pi/Bilder/SHAREfactory™_20170530112945.gif")
mainwindow["image"] = backgroundPic"""

#Hauptfenstereinteilung
frameLeft = tkinter.Frame(mainwindow,width=200,height=300,relief="sunken",bd=0)
frameLeft.pack(side="left",expand=1,fill="both")
frameRight = tkinter.Frame(mainwindow, width=500,height=400,relief="sunken",bd=0)
frameRight.pack(side="right",expand=1,fill="both")

#Widgets
infoLabel = tkinter.Label(frameLeft, text = "InGame Layout:", font = "arial 27 bold", foreground = "orange")  #Gibt Text in Arial, Größe 25 und Art fettgedruckt aus
infoLabel.pack(pady=12)

layoutButton = tkinter.Button(frameLeft, text = "Layout Settings", command = layoutSettings)
layoutButton.pack(pady=8)

#Leerzeichen (Wie?)

infoLabel = tkinter.Label(frameLeft, text = "Mods:", font = "arial 27 bold", foreground = "orange")  #Gibt Text in Arial, Größe 25 und Art fettgedruckt aus
infoLabel.pack(pady=12)

aimbotButton = tkinter.Button(frameLeft, text = "Aimbot", command = aimbotSettings)
aimbotButton.pack(pady=8)

aimassistButton = tkinter.Button(frameLeft, text = "AimAssist", command = aimassistSettings)
aimassistButton.pack(pady=8)

norecoilButton = tkinter.Button(frameLeft, text = "NoRecoil", command = norecoilSettings)
norecoilButton.pack(pady=8)

rapidfireButton = tkinter.Button(frameLeft, text = "RapidFire", command = rapidfireSettings)
rapidfireButton.pack(pady=8)

jitterButton = tkinter.Button(frameLeft, text = "Double Tac & Pump", command = jitterSettings)
jitterButton.pack(pady=8)

autorunButton = tkinter.Button(frameLeft, text = "AutoRun", command = autorunSettings)
autorunButton.pack(pady=8)


mainwindow.mainloop()
Zu Antwort 3:
Vllt irgendein Code Bsp. ? :D

Zu Antwort 4:
Nagut ^^

Zu Antwort 5:
Doch, so möchte ich es.

Zu Antwort 6:
z.B. um so zu erkennen wo ein Objekt ist /etc.
Mein RasPi soll halt das Videosignal von (z.B.) PC zum TV lesen und so feststellen wo sich was bewegt oder so

Extra Frage:
Wie kann ich ein USB Stick erkennen, der aber wie ein Controller oder so an PC angesteckt wird.
Zum Beispiel gibt da nen CronusMax, der wird mittels USB Kabel (PS3 Ladekable) an PC gesteckt - der PC erkennt das Gerät nicht, aber ein Programm (CronusPro) schon.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: Re Frage 1: Kurz: Geht nicht. Lang: Alle Tk-Widgets sind *nicht* durchsichtig, jedes zeichnet seine Hintergrundfarbe als gefülltes Rechteck. Darum kann man nichts hinter Widgets legen was ”durchscheint”.

Re Frage 2: Die ”öffnen” sich nicht, Du hast Code geschrieben der die erzeugt wenn man die Schaltfläche drückst. Und dieser Code wird jedes mal ausgeführt wenn man auf die Schaltfläche drückt, also werden da auch jedes mal neue Widgets erzeugt. Das hast Du so programmiert. Wenn Du das nicht willst, dann programmier das nicht so.

Normalerweise erstellt man soweit es geht auch alle GUI Elemente am Anfang, und ändert dann nur noch deren Eigenschaften während das Programm läuft. Man kann beispielsweise in dem rechten Frame alles was dort angezeigt werden soll für die Verschiedenen Einstellungen in Frames organisieren und die alle übereinander in den rechten Frame stecken und dann jeweils den Frame den man sehen möchte, nach vorne holen. Oder man nimmt gleich ein `ttk.Notebook` und spart sich einiges an Arbeit.

Re Frage 3: Wieso hast Du eine Variable deren Inhalt ein Skript ist? Ich vermute mal Du meinst den Quelltext als Text? Was willst Du *eigentlich* machen? Suchst Du Templates (`string.Template` in der Standardbibliothek, oder beispielsweise `jinja2`), oder versuchst Du hier eine Konfigurationsdatei zu ”sparen” in dem Du Einstellungen direkt im Quelltext vornehmen und speichern möchtest? Letzteres solltest Du mit einer Konfigurationsdatei machen die vom Skript eingelesen wird.

Re Frage 4: In dem man so eine Funktion schreibt, die genau das macht. Oder man schaut ob schon jemand so etwas als Bibliothek zur Verfügung stellt.

Re Frage 5: Du willst das, aber uns ist immer noch nicht klar *was* Du eigentlich willst. SSL/TLS ist eine Transportverschlüsselung, nichts womit man einzelne Dateien verschlüsselt. Das wendet man auf ”unterster” Ebene auf Sockets an. Wobei ich jetzt keinem Anfänger empfehlen würde selbst irgendwie auf dieser Ebene zu programmieren. Das würde ich nicht mal Fortgeschrittenen empfehlen. Es gibt je nach Protokoll genug Bibliotheken die das alles für einen erledigen. Bleibt also die Frage was Du *eigentlich* machen willst.

Re Frage 6: Da gibt es Hardware für. Stichwort „video grabber“ oder „video capture device“. Da müsste man dann Hardware finden die Deine gewünschten Schnittstellen unterstützt und für die es für Linux Treiber gibt wenn das an einem Raspi laufen soll. Keine Ahnung wie die Situation da heutzutage aussieht. Es gibt wohl einiges an USB-Hardware, aber die wollen/brauchen wahrscheinlich USB 3.

Re Extra Frage: Die hat irgendwie so gar nichts mit Python zu tun‽ Laut dem was im Netz steht, sollte CronusMAX ganz normal als USB-HID-Gerät erkannt/behandelt werden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zum Frame-Grabbing: das wird für den PI zum Erbrechen wiedergekäut in den ganzen Ambilight Projekten. Allerdings ist der PI ein schwachbrüstiger Rechner. Volle HD Videoanalyse geht nicht. Da kommt es dann sehr auf den Anwendungszweck an, ob das überhaupt geht.

Ich habe das Gefühl du hast ein bestimmtes Vorhaben, und statt da darzulegen so dass man zu geeignetem Vorgehen raten kann, lieferst du hier diverse Versatzstücke von Dingen, von denen du glaubst, dass sie dafür relevant sind. Es wäre ggf besser mal zu erzählen wo die Reise hingehen soll.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Sonntag 1. Juli 2018, 15:52 Zum Frame-Grabbing: das wird für den PI zum Erbrechen wiedergekäut in den ganzen Ambilight Projekten. Allerdings ist der PI ein schwachbrüstiger Rechner. Volle HD Videoanalyse geht nicht. Da kommt es dann sehr auf den Anwendungszweck an, ob das überhaupt geht.

Ich habe das Gefühl du hast ein bestimmtes Vorhaben, und statt da darzulegen so dass man zu geeignetem Vorgehen raten kann, lieferst du hier diverse Versatzstücke von Dingen, von denen du glaubst, dass sie dafür relevant sind. Es wäre ggf besser mal zu erzählen wo die Reise hingehen soll.
Okey, ich bin ehrlich... :D
Ich weiß nicht, glaube aber kaum, ob du mich aus YouTube kennst - bin ein sehr bekannter YouTuber unter Konsolen Cheatern.
Schreibe selbst welche und mache Videos davon...
Was ich schreiben möchte, ist halt ne S.G.I. (Script Game Interface) , bei der der Anwender des Programmes per einfaches Klicken auf Radiobuttons , leichte Eingabe in Entrys &co. den Skript nach belieben ein/um stellen kann. Dazu würde ich gern auch eine Update Funktion einbringen und meine Skripts würde ich auch gerne verschlüsseln, doch GPC macht das ziemlich kompliziert.
Desweiteren frage ich das mit den Bildsignalen deshalb, um richtige Hacks für Konsolen schreiben zu können - RasPi empfängt das Bildsignal der PS4/XBOX/PC , verarbeitet es, steuert den Controller, sodass das Fadenkreuz auf dem Gegner liegt und gibt aber gleichzeitig das Bildsignal weiter an den TV/Monitor.

Wollte nicht gerade über sowas eigentlich sprechen, da ich nicht weiß, ob mir dann noch einer helfen würde. :D

Würde allerdings auch gerne mal was anderes schreiben als nur Mods/Hacks , iwas mit Robotern oder anderes automatisiertes (Gerät das nach etwas bestimmtes sucht/etc.). ^^
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__blackjack__ hat geschrieben: Sonntag 1. Juli 2018, 14:39 @xXSkyWalkerXx1: Re Frage 1: Kurz: Geht nicht. Lang: Alle Tk-Widgets sind *nicht* durchsichtig, jedes zeichnet seine Hintergrundfarbe als gefülltes Rechteck. Darum kann man nichts hinter Widgets legen was ”durchscheint”.

Re Frage 2: Die ”öffnen” sich nicht, Du hast Code geschrieben der die erzeugt wenn man die Schaltfläche drückst. Und dieser Code wird jedes mal ausgeführt wenn man auf die Schaltfläche drückt, also werden da auch jedes mal neue Widgets erzeugt. Das hast Du so programmiert. Wenn Du das nicht willst, dann programmier das nicht so.

Normalerweise erstellt man soweit es geht auch alle GUI Elemente am Anfang, und ändert dann nur noch deren Eigenschaften während das Programm läuft. Man kann beispielsweise in dem rechten Frame alles was dort angezeigt werden soll für die Verschiedenen Einstellungen in Frames organisieren und die alle übereinander in den rechten Frame stecken und dann jeweils den Frame den man sehen möchte, nach vorne holen. Oder man nimmt gleich ein `ttk.Notebook` und spart sich einiges an Arbeit.

Re Frage 3: Wieso hast Du eine Variable deren Inhalt ein Skript ist? Ich vermute mal Du meinst den Quelltext als Text? Was willst Du *eigentlich* machen? Suchst Du Templates (`string.Template` in der Standardbibliothek, oder beispielsweise `jinja2`), oder versuchst Du hier eine Konfigurationsdatei zu ”sparen” in dem Du Einstellungen direkt im Quelltext vornehmen und speichern möchtest? Letzteres solltest Du mit einer Konfigurationsdatei machen die vom Skript eingelesen wird.

Re Frage 4: In dem man so eine Funktion schreibt, die genau das macht. Oder man schaut ob schon jemand so etwas als Bibliothek zur Verfügung stellt.

Re Frage 5: Du willst das, aber uns ist immer noch nicht klar *was* Du eigentlich willst. SSL/TLS ist eine Transportverschlüsselung, nichts womit man einzelne Dateien verschlüsselt. Das wendet man auf ”unterster” Ebene auf Sockets an. Wobei ich jetzt keinem Anfänger empfehlen würde selbst irgendwie auf dieser Ebene zu programmieren. Das würde ich nicht mal Fortgeschrittenen empfehlen. Es gibt je nach Protokoll genug Bibliotheken die das alles für einen erledigen. Bleibt also die Frage was Du *eigentlich* machen willst.

Re Frage 6: Da gibt es Hardware für. Stichwort „video grabber“ oder „video capture device“. Da müsste man dann Hardware finden die Deine gewünschten Schnittstellen unterstützt und für die es für Linux Treiber gibt wenn das an einem Raspi laufen soll. Keine Ahnung wie die Situation da heutzutage aussieht. Es gibt wohl einiges an USB-Hardware, aber die wollen/brauchen wahrscheinlich USB 3.

Re Extra Frage: Die hat irgendwie so gar nichts mit Python zu tun‽ Laut dem was im Netz steht, sollte CronusMAX ganz normal als USB-HID-Gerät erkannt/behandelt werden.
Zu Antwort 1:
Ohh, hmm, dann kann man ja GUIs durch bloßes programmieren garnicht so schön gestalten oder? :/

Zu Antwort 2:
Also muss ich die Widgets nicht erzeugen, sondern bloß erscheinen lassen oder wie?

Was ist ein "ttk.Notebook" ?
Werde es zwar gleich googlen, frage aber dennoch mal.

Zu Antwort 3:
Ich möchte, dass ein Quellcode eines anderen Skripts im Programm gespeichert wird und durch Entry im Programm sich verändern lässt.

Zu Antwort 4:
Naja, nicht gerade informativ - ich bin Anfänger, da weiß ich noch nicht ganz, wie ich das Programm dazu bringe! :P :D
Habe aber ne Idee: das Programm überprüft bei jedem Start / Klick auf dem Button die Version, in dem es im Hintergrund eine Seite aufruft (auf der die neueste Version des Programms / Skripts ist) und überprüft, ob es eine neue "Datei" gibt (erkennbar durch Uploaddatum). Wäre nicht elegant, aber für'n Anfang wohl das Leichteste.

Zu Antwort 5:
Ich dachte daran, dass ein Programm sowas wie ne kleine Online Bibliothek hat: Bei Internetzugang werden die Skripts geladen, doch man kann sie nicht öffnen oder auf'n Desktop ziehen.
Sondern man kann sie nur auf den CronusMax installieren. Downloade dir mal CronusPro und schau mal bei den Gamepacks. Du kannst zwar keine sehen, da du ein CronusMax bräuchtest, aber es wird dann vllt trotzdem etwas klarer.

Zu Antwort 6:
Danke, ich schau mal.

Zu Extra Antwort:
Achso, danke für die Info! Hätte das vllt auch mal vorher googlen sollen! :D
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Okey, habe mal nachgeschaut was "ttk.notebook" ist, doch kann man das auch vertikal setzen? ...Die "Notizen".
Wenn ja - wie?
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Verschluesselung deiner Scripts per SSL ist dann aber immer noch nicht, was dir helfen wuerde. Denn dann laufen sie ja immer noch unverschluesselt auf dem Zielsystem. Da greift man sie halt dann einfach ab. Die Ironie, dass du zum bescheissen ein Tool anbieten willst, um dich dann gegen Beschiss zu schuetzen, schreit natuerlich auch zum Himmel...

Und dein Wunsch nach Bilderkennung ist zum einen technisch mit dem PI nicht wirklich moeglich, weil er dafuer viel zu schwachbruestig ist. Und selbst wenn du da einen fetten Rechner moderner Bauart dran werkeln laesst, begibst du dich da auf eine Ebene des Bildverstehens, die schwierig bis unmoeglich ist. Um das genau zu beurteilen muesste man aber schon ein paar Jahre Erfahrung damit haben, sowas zu programmieren. Selbst wenn man das fuer ein bestimmtes Game dann hinbekommt, klappt es halt fuer Far Cry, aber nicht fuer COD. Der Ansatz, der da AFAIK erfolgversprechender ist, besteht darin, die Client/Server-Kommunikation zu belauschen, und damit eine klare Vorstellung davon zu haben, was wo in der Welt ist.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 13:09 Die Verschluesselung deiner Scripts per SSL ist dann aber immer noch nicht, was dir helfen wuerde. Denn dann laufen sie ja immer noch unverschluesselt auf dem Zielsystem. Da greift man sie halt dann einfach ab. Die Ironie, dass du zum bescheissen ein Tool anbieten willst, um dich dann gegen Beschiss zu schuetzen, schreit natuerlich auch zum Himmel...

Und dein Wunsch nach Bilderkennung ist zum einen technisch mit dem PI nicht wirklich moeglich, weil er dafuer viel zu schwachbruestig ist. Und selbst wenn du da einen fetten Rechner moderner Bauart dran werkeln laesst, begibst du dich da auf eine Ebene des Bildverstehens, die schwierig bis unmoeglich ist. Um das genau zu beurteilen muesste man aber schon ein paar Jahre Erfahrung damit haben, sowas zu programmieren. Selbst wenn man das fuer ein bestimmtes Game dann hinbekommt, klappt es halt fuer Far Cry, aber nicht fuer COD. Der Ansatz, der da AFAIK erfolgversprechender ist, besteht darin, die Client/Server-Kommunikation zu belauschen, und damit eine klare Vorstellung davon zu haben, was wo in der Welt ist.
Hehe, ja, naja... ^^ Was würde denn dann helfen?


Ja, aber man kann ja auf Konsolen nicht hacken.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__blackjack__ hat geschrieben: Sonntag 1. Juli 2018, 14:39 @xXSkyWalkerXx1: Re Frage 1: Kurz: Geht nicht. Lang: Alle Tk-Widgets sind *nicht* durchsichtig, jedes zeichnet seine Hintergrundfarbe als gefülltes Rechteck. Darum kann man nichts hinter Widgets legen was ”durchscheint”.

Re Frage 2: Die ”öffnen” sich nicht, Du hast Code geschrieben der die erzeugt wenn man die Schaltfläche drückst. Und dieser Code wird jedes mal ausgeführt wenn man auf die Schaltfläche drückt, also werden da auch jedes mal neue Widgets erzeugt. Das hast Du so programmiert. Wenn Du das nicht willst, dann programmier das nicht so.

Normalerweise erstellt man soweit es geht auch alle GUI Elemente am Anfang, und ändert dann nur noch deren Eigenschaften während das Programm läuft. Man kann beispielsweise in dem rechten Frame alles was dort angezeigt werden soll für die Verschiedenen Einstellungen in Frames organisieren und die alle übereinander in den rechten Frame stecken und dann jeweils den Frame den man sehen möchte, nach vorne holen. Oder man nimmt gleich ein `ttk.Notebook` und spart sich einiges an Arbeit.

Re Frage 3: Wieso hast Du eine Variable deren Inhalt ein Skript ist? Ich vermute mal Du meinst den Quelltext als Text? Was willst Du *eigentlich* machen? Suchst Du Templates (`string.Template` in der Standardbibliothek, oder beispielsweise `jinja2`), oder versuchst Du hier eine Konfigurationsdatei zu ”sparen” in dem Du Einstellungen direkt im Quelltext vornehmen und speichern möchtest? Letzteres solltest Du mit einer Konfigurationsdatei machen die vom Skript eingelesen wird.

Re Frage 4: In dem man so eine Funktion schreibt, die genau das macht. Oder man schaut ob schon jemand so etwas als Bibliothek zur Verfügung stellt.

Re Frage 5: Du willst das, aber uns ist immer noch nicht klar *was* Du eigentlich willst. SSL/TLS ist eine Transportverschlüsselung, nichts womit man einzelne Dateien verschlüsselt. Das wendet man auf ”unterster” Ebene auf Sockets an. Wobei ich jetzt keinem Anfänger empfehlen würde selbst irgendwie auf dieser Ebene zu programmieren. Das würde ich nicht mal Fortgeschrittenen empfehlen. Es gibt je nach Protokoll genug Bibliotheken die das alles für einen erledigen. Bleibt also die Frage was Du *eigentlich* machen willst.

Re Frage 6: Da gibt es Hardware für. Stichwort „video grabber“ oder „video capture device“. Da müsste man dann Hardware finden die Deine gewünschten Schnittstellen unterstützt und für die es für Linux Treiber gibt wenn das an einem Raspi laufen soll. Keine Ahnung wie die Situation da heutzutage aussieht. Es gibt wohl einiges an USB-Hardware, aber die wollen/brauchen wahrscheinlich USB 3.

Re Extra Frage: Die hat irgendwie so gar nichts mit Python zu tun‽ Laut dem was im Netz steht, sollte CronusMAX ganz normal als USB-HID-Gerät erkannt/behandelt werden.
Danke - hat übrigens sehr geholfen das Problem zu lösen, bei den die Widgets immer neu platziert wurden!!! :))
Hab Code auch nochmals neu umgeschrieben, angeordnet, etc.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Und wie kann ich nun ein Skript schützen und verändern?
Sprich, man soll den Skript nicht sehen können (z.B. wenn der Skript im Programm gekoppelt wäre) aber Zahlen und Wahrheitswerte verändern und speichern können.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Schuetzen im Grunde nicht. Code, der auf einem nicht von dir kontrollierten System ausgefuehrt wird, kann immer geknackt werden. Alles, was zb auf lokales verschluesseln und ausfuehren abziehlt, ist nicht trivial zu implementieren, aber ziemlich einfach zu knacken. Du wirst da denke ich mit dem business-modell von allen anderen klarkommen muessen: hoffen, dass genug Leute fuer deine Software zahlen. So wie du das bestimmt auch tust bei den Spielen, die du auf dem PC spielst.

Natuerlich gibt es kommerzielle Loesungen wie Denuvo. Ob die fuer Python ueberhaupt geeignet sind, und wieviel die kosten, kann ich dir nicht sagen. Und auch die werden meistens innerhalb von Stunden geknackt. So isses halt.

Was du tun kannst, ist einfach nur den Python Byte-Code auszuliefern. Damit ist der Source-Code fuer die ganz doofen verschleiert. Es gibt allerdings Tools wie decompyle (https://github.com/zrax/pycdc) mit denen das wieder zurueck uebersetzt werden kann. Das hebt das ganze dann auf ein Skript-Kiddie++-Niveau.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 15:53 Schuetzen im Grunde nicht. Code, der auf einem nicht von dir kontrollierten System ausgefuehrt wird, kann immer geknackt werden. Alles, was zb auf lokales verschluesseln und ausfuehren abziehlt, ist nicht trivial zu implementieren, aber ziemlich einfach zu knacken. Du wirst da denke ich mit dem business-modell von allen anderen klarkommen muessen: hoffen, dass genug Leute fuer deine Software zahlen. So wie du das bestimmt auch tust bei den Spielen, die du auf dem PC spielst.

Natuerlich gibt es kommerzielle Loesungen wie Denuvo. Ob die fuer Python ueberhaupt geeignet sind, und wieviel die kosten, kann ich dir nicht sagen. Und auch die werden meistens innerhalb von Stunden geknackt. So isses halt.

Was du tun kannst, ist einfach nur den Python Byte-Code auszuliefern. Damit ist der Source-Code fuer die ganz doofen verschleiert. Es gibt allerdings Tools wie decompyle (https://github.com/zrax/pycdc) mit denen das wieder zurueck uebersetzt werden kann. Das hebt das ganze dann auf ein Skript-Kiddie++-Niveau.
Naja, es reicht eigentlicht, wenn nur "normale" Leute es nicht knacken können. :D
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte hoer mal auf, immer die kompletten Beitraege von wem anderes zu zitieren, wenn die eh direkt drueber stehen.

Und wenn "normale" Leute es nicht koennen sollen, reichen ersmal die PYC-files.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Okey, tut mir leid. ^^ Hab nicht gedacht, dass das nerven könnte.

Okey. Kann ich ja aber dann nicht aufn CronusMax installieren, da er nur .gpc akzeptiert.
Möchte mein Programm auch so schreiben, dass er eigentlich gar keine Datei direkt erstellt und z.b. auf'm Desktop platziert, sondern, dass er direkt eine Datei erstellt und auf'n CronusMax installiert - vllt mittels der IDE von CronusPro, wie du schon im anderen Thread erwähntest.

Weiß nicht, ob du verstehst wie ich das meine - bin halt neu in der Sache "Programmierung"(richtige - nicht wie GPC) und da rede ich eben noch bissel wie ein Noob. xD
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn es dir darum geht, eine Art Skript-Configurator zu schreiben, dann kannst du natuerlich theoretisch auch alles einfach als Webservice machen. Die Konfiguration wird an den Webserver geschickt, und da uebersetzt du das Programm. Das resultierende GDC ist halt ein GDC, das kannst du ja nicht weiter verhackstuecken. Nur sind deine Skript-Quellen dann niemals auf dem Rechner des Benutzers.

Aber ob das geht haengt eben von der Beantwortung der Frage im anderen Thread ab - kann man GDCs selbst uebersetzen, oder braucht man dazu immer die gesamte CronusPro Nummer.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Oder willst Du die gpc-Dateien irgendwie verschlüsseln?
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Das wäre ne super Idee! :3
Wäre auch super, dass die Skriptquelle dann nie beim Benutzer wäre, denn so kann er sie zwar benutzen, aber nicht öffnen.

Was für 'ne CronusPro Nummer?
Hm, weiß ich halt leider nicht, ob man diese selbst übersetzen kann.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Sirius3 hat geschrieben: Montag 2. Juli 2018, 17:49 Oder willst Du die gpc-Dateien irgendwie verschlüsseln?
Auch, aber es soll halt so (am Besten) sein, dass mein Programm den Skript nicht auf'n Desktop oder sonste wo erzeugt, sondern direkt (wenn CronusMax angeschlossen) im CronusMax installiert.
Somit wäre widerrum keine Verschlüsselung nötig, wenn das so ginge.
Antworten