So, bastel da jetzt schon ein bißchen dran rum, aber macht ja bekanntlich mehr Spaß, wenn mehr mitspielen 
Benötigt wird, um den ByteCode zu erstellen, ein Python gleicher Version wie der HS, also Python 2.2.3
Gedacht ist das ganze
A) um mehrzeiligen Pythoncode zu verwenden und
B) um Logiken zu schützen und sie evtl. an privat kostenlos zu verteilen, die man sonst gar nicht teilen würde
Bitte nicht den Code aus den Textblöcken nehmen, da fehlen die TABS die bei Python sehr wichtig sind,
im Anhang sind alle benötigten Dateien
Dieser Teil ist zum Erstellen der 5012er Logikzeile nötig
ohne Lizenz / oder eigene Lizenzprüfung
[HIGHLIGHT=python]
import base64
import marshal
import re
import md5
code = """
## Eigener CODE ##
## Geht alle Ausgänge durch und guckt ob AC[x] gesetzt werden muss
for i in range(1,len(AN)+1):
if AN[i]!=AA[i]:
AC[i]=1
"""
print code
data=compile(code,"<string>","exec")
data=marshal.dumps(data)
#print data
formel = "5012|0|\"(EA!=EN) or EI\"|\"eval(__import__('marshal').loads(__import__ ('base64').decodestring('"+re.sub("\n","",base64.e ncodestring(data))+"')))\"|\"\"|0|0|0|0"
open('HSLogik.out.hsl','w').write(formel+"\n")
[/HIGHLIGHT]
mit MAC basierter Lizenz
[HIGHLIGHT=python]
import base64
import marshal
import re
import md5
## Mac zum lizensieren
cmac="00:01:02:11:22:33"
## Pro Logik Lizenz
LicSecret="TEST LICENSE"
LicModifier=2122
LSec=md5.new(LicSecret).hexdigest()
code = """
LSec='"""+LSec+"""'
cmac=__import__('os').popen("/sbin/ifconfig").read().split('HWaddr ')[1].split(' \\n')[0]
mac=__import__('md5').new(cmac).hexdigest()
LicKey = ""
## Lizenzcode
for i in range(0,16,2):
LicKey = LicKey + "%X" % (int(mac[i:i+2],16) ^ (int(LSec[i:i+2],16) +"""+str(LicModifier)+"""))
if EN[1]==LicKey:
AN[1]="licensed"
## Eigener Code ##
else:
AN[1]="unlicensed: "+cmac
## Geht alle Ausgänge durch und guckt ob AC[x] gesetzt werden muss
for i in range(1,len(AN)+1):
if AN[i]!=AA[i]:
AC[i]=1
"""
print code
data=compile(code,"<string>","exec")
data=marshal.dumps(data)
#print data
formel = "5012|0|\"(EA!=EN) or EI\"|\"eval(__import__('marshal').loads(__import__ ('base64').decodestring('"+re.sub("\n","",base64.e ncodestring(data))+"')))\"|\"\"|0|0|0|0"
mac=md5.new(cmac).hexdigest()
LicKey=""
for i in range(0,16,2):
LicKey = LicKey + "%X" % (int(mac[i:i+2],16) ^ (int(LSec[i:i+2],16) +LicModifier))
print "Lizenzkey for "+cmac+" : "+LicKey
open('HSLogik.out.hsl','w').write(formel+"\n")
[/HIGHLIGHT]
obige Datei modifizieren und den Code unterhalb von ## Eigener Code ## einfügen. Tabs beachten, die vorher in der hsl in gewohnter Form definierten Ein- und Ausgänge können direkt benutzt werden.
Das heißt, AN[2]=4 sendet eine 4 auf den Ausgang 2....
cmd im Verzeichniss c:\python22 (unter win) öffnen
python.exe makeLogic.py ausführen
hier wird die Formelzeile aus der damit erstellten HSLogik.out.hsl eingetragen
[HIGHLIGHT=python]
## Lizenzkopf nach Bedarf
### Logikkopf nach Bedarf anpassen
## E1 und A1 sind für Lizenzfreigabe belegt.
5000|"xxAPI\Lizensierter Code"|0|1|"E1 Lizenzkey"|2|"A1 Lizenzstatus"|"A2 Irgendwas"
5001|1|2|0|0|1
# EN[x]
5002|1|""|1
# Ausgänge
5004|1|""|0|1|1
5004|2|""|0|1|1
#################################################
### Diese Zeile mit der aus der HSLogik.out.hsl ersetzen (EA!=EN heißt Änderung auf einem beliebigen Baustein)
5012|0|"(EA!=EN) or EI"|"eval(__import__('marshal').loads(__import__(' base64').decodestring('YwAAAAAJAAAAc1wBAAB/AAB/AgBkAABaAAB/AwBlAQBkAQCDAQBpAgBkAgCDAQBpAwCDAABpBABkAwCDAQBkBA AZaQQAZAUAgwEAZAYAGVoFAH8EAGUBAGQHAIMBAGkGAGUFAIMB AGkHAIMAAFoIAH8FAGQIAFoJAH8GAHheAGUKAGQGAGQJAGQKAI MDAER/BgBdRwBaCwB/BwBlCQBkCwBlDABlCABlCwBlCwBkCgAXIWQJAIMCAGUMAGUAAG ULAGULAGQKABchZAkAgwIAZAwAF0EWF1oJAHGBAFd/CABlDQBkBAAZZQkAagIAbxEAAX8JAGQNAGUOAGQEADxuEgABfw 0AZA4AZQUAF2UOAGQEADx/EAB4TQBlCgBkBABlDwBlDgCDAQBkBAAXgwIARH8QAF0vAFoLAH 8RAGUOAGULABllEABlCwAZagMAbxEAAX8SAGQEAGURAGULADxu AQABcSIBV2QPAFMoEAAAAHMgAAAANDYzMTFhYWU3NjhjZjgzZD c5MzUxZDc4NzAxYTY2NzBzAgAAAG9zcw4AAAAvc2Jpbi9pZmNv bmZpZ3MHAAAASFdhZGRyIGkBAAAAcwMAAAAgIAppAAAAAHMDAA AAbWQ1cwAAAABpEAAAAGkCAAAAcwIAAAAlWGk0CgAAcwgAAABs aWNlbnNlZHMMAAAAdW5saWNlbnNlZDogTigSAAAAcwQAAABMU2 VjcwoAAABfX2ltcG9ydF9fcwUAAABwb3BlbnMEAAAAcmVhZHMF AAAAc3BsaXRzBAAAAGNtYWNzAwAAAG5ld3MJAAAAaGV4ZGlnZX N0cwMAAABtYWNzBgAAAExpY0tleXMFAAAAcmFuZ2VzAQAAAGlz AwAAAGludHMCAAAARU5zAgAAAEFOcwMAAABsZW5zAgAAAEFBcw IAAABBQygFAAAAcwQAAABjbWFjcwQAAABMU2VjcwEAAABpcwMA AABtYWNzBgAAAExpY0tleSgAAAAAKAAAAABzCAAAADxzdHJpbm c+cwEAAAA/AgBzGgAAAAwBOAEeAQkBFgAJAUUBFAERBBEDHQAJARgB')))"| ""|0|0|0|0
[/HIGHLIGHT]
EDIT: Anhänge aktualisiert, war ein Fehler und beide Scripts(Mit und ohne Lizenz) jetzt im Anhang

Benötigt wird, um den ByteCode zu erstellen, ein Python gleicher Version wie der HS, also Python 2.2.3
Gedacht ist das ganze
A) um mehrzeiligen Pythoncode zu verwenden und
B) um Logiken zu schützen und sie evtl. an privat kostenlos zu verteilen, die man sonst gar nicht teilen würde
Bitte nicht den Code aus den Textblöcken nehmen, da fehlen die TABS die bei Python sehr wichtig sind,
im Anhang sind alle benötigten Dateien
Dieser Teil ist zum Erstellen der 5012er Logikzeile nötig
ohne Lizenz / oder eigene Lizenzprüfung
[HIGHLIGHT=python]
import base64
import marshal
import re
import md5
code = """
## Eigener CODE ##
## Geht alle Ausgänge durch und guckt ob AC[x] gesetzt werden muss
for i in range(1,len(AN)+1):
if AN[i]!=AA[i]:
AC[i]=1
"""
print code
data=compile(code,"<string>","exec")
data=marshal.dumps(data)
#print data
formel = "5012|0|\"(EA!=EN) or EI\"|\"eval(__import__('marshal').loads(__import__ ('base64').decodestring('"+re.sub("\n","",base64.e ncodestring(data))+"')))\"|\"\"|0|0|0|0"
open('HSLogik.out.hsl','w').write(formel+"\n")
[/HIGHLIGHT]
mit MAC basierter Lizenz
[HIGHLIGHT=python]
import base64
import marshal
import re
import md5
## Mac zum lizensieren
cmac="00:01:02:11:22:33"
## Pro Logik Lizenz
LicSecret="TEST LICENSE"
LicModifier=2122
LSec=md5.new(LicSecret).hexdigest()
code = """
LSec='"""+LSec+"""'
cmac=__import__('os').popen("/sbin/ifconfig").read().split('HWaddr ')[1].split(' \\n')[0]
mac=__import__('md5').new(cmac).hexdigest()
LicKey = ""
## Lizenzcode
for i in range(0,16,2):
LicKey = LicKey + "%X" % (int(mac[i:i+2],16) ^ (int(LSec[i:i+2],16) +"""+str(LicModifier)+"""))
if EN[1]==LicKey:
AN[1]="licensed"
## Eigener Code ##
else:
AN[1]="unlicensed: "+cmac
## Geht alle Ausgänge durch und guckt ob AC[x] gesetzt werden muss
for i in range(1,len(AN)+1):
if AN[i]!=AA[i]:
AC[i]=1
"""
print code
data=compile(code,"<string>","exec")
data=marshal.dumps(data)
#print data
formel = "5012|0|\"(EA!=EN) or EI\"|\"eval(__import__('marshal').loads(__import__ ('base64').decodestring('"+re.sub("\n","",base64.e ncodestring(data))+"')))\"|\"\"|0|0|0|0"
mac=md5.new(cmac).hexdigest()
LicKey=""
for i in range(0,16,2):
LicKey = LicKey + "%X" % (int(mac[i:i+2],16) ^ (int(LSec[i:i+2],16) +LicModifier))
print "Lizenzkey for "+cmac+" : "+LicKey
open('HSLogik.out.hsl','w').write(formel+"\n")
[/HIGHLIGHT]
obige Datei modifizieren und den Code unterhalb von ## Eigener Code ## einfügen. Tabs beachten, die vorher in der hsl in gewohnter Form definierten Ein- und Ausgänge können direkt benutzt werden.
Das heißt, AN[2]=4 sendet eine 4 auf den Ausgang 2....
cmd im Verzeichniss c:\python22 (unter win) öffnen
python.exe makeLogic.py ausführen
hier wird die Formelzeile aus der damit erstellten HSLogik.out.hsl eingetragen
[HIGHLIGHT=python]
## Lizenzkopf nach Bedarf
### Logikkopf nach Bedarf anpassen
## E1 und A1 sind für Lizenzfreigabe belegt.
5000|"xxAPI\Lizensierter Code"|0|1|"E1 Lizenzkey"|2|"A1 Lizenzstatus"|"A2 Irgendwas"
5001|1|2|0|0|1
# EN[x]
5002|1|""|1
# Ausgänge
5004|1|""|0|1|1
5004|2|""|0|1|1
#################################################
### Diese Zeile mit der aus der HSLogik.out.hsl ersetzen (EA!=EN heißt Änderung auf einem beliebigen Baustein)
5012|0|"(EA!=EN) or EI"|"eval(__import__('marshal').loads(__import__(' base64').decodestring('YwAAAAAJAAAAc1wBAAB/AAB/AgBkAABaAAB/AwBlAQBkAQCDAQBpAgBkAgCDAQBpAwCDAABpBABkAwCDAQBkBA AZaQQAZAUAgwEAZAYAGVoFAH8EAGUBAGQHAIMBAGkGAGUFAIMB AGkHAIMAAFoIAH8FAGQIAFoJAH8GAHheAGUKAGQGAGQJAGQKAI MDAER/BgBdRwBaCwB/BwBlCQBkCwBlDABlCABlCwBlCwBkCgAXIWQJAIMCAGUMAGUAAG ULAGULAGQKABchZAkAgwIAZAwAF0EWF1oJAHGBAFd/CABlDQBkBAAZZQkAagIAbxEAAX8JAGQNAGUOAGQEADxuEgABfw 0AZA4AZQUAF2UOAGQEADx/EAB4TQBlCgBkBABlDwBlDgCDAQBkBAAXgwIARH8QAF0vAFoLAH 8RAGUOAGULABllEABlCwAZagMAbxEAAX8SAGQEAGURAGULADxu AQABcSIBV2QPAFMoEAAAAHMgAAAANDYzMTFhYWU3NjhjZjgzZD c5MzUxZDc4NzAxYTY2NzBzAgAAAG9zcw4AAAAvc2Jpbi9pZmNv bmZpZ3MHAAAASFdhZGRyIGkBAAAAcwMAAAAgIAppAAAAAHMDAA AAbWQ1cwAAAABpEAAAAGkCAAAAcwIAAAAlWGk0CgAAcwgAAABs aWNlbnNlZHMMAAAAdW5saWNlbnNlZDogTigSAAAAcwQAAABMU2 VjcwoAAABfX2ltcG9ydF9fcwUAAABwb3BlbnMEAAAAcmVhZHMF AAAAc3BsaXRzBAAAAGNtYWNzAwAAAG5ld3MJAAAAaGV4ZGlnZX N0cwMAAABtYWNzBgAAAExpY0tleXMFAAAAcmFuZ2VzAQAAAGlz AwAAAGludHMCAAAARU5zAgAAAEFOcwMAAABsZW5zAgAAAEFBcw IAAABBQygFAAAAcwQAAABjbWFjcwQAAABMU2VjcwEAAABpcwMA AABtYWNzBgAAAExpY0tleSgAAAAAKAAAAABzCAAAADxzdHJpbm c+cwEAAAA/AgBzGgAAAAwBOAEeAQkBFgAJAUUBFAERBBEDHQAJARgB')))"| ""|0|0|0|0
[/HIGHLIGHT]
EDIT: Anhänge aktualisiert, war ein Fehler und beide Scripts(Mit und ohne Lizenz) jetzt im Anhang
Kommentar