Quelltexte/ Codesnippets | | | | p.specht
| Eine Eigenheit von XProfan-11´s Clicked()-Befehl: Er scheint die Auswertung der internen %Key-Variable zu behindern. Deshalb funktioniert das nachstehende, etwas naiv programmierte Zahlenschloss (Democode: "12345", C = CLEAR) nur ENTWEDER mit Keyboard-Eingabe ODER mit Mausklicks auf die Buttons, im letzteren Fall ist dann allerdings keine Keyboardeingabe mehr möglich. Der Übergang von Keyboard zu Maus klappt aber.
WindowTitle " ZAHLENSCHLOSS ":WindowStyle 24
'(D) Demo 2017-10 by P.Specht, Wien. OHNE JEDE GEWÄHR!
'Profan-Eigenheit: Mausverwendung schaltet Keyboardeingabe ab!
Window %maxx\2-75,(%maxy\2-75) - 166,148
var hdl1&=@Create("Button",%hwnd,"1", 00,00, 40,30)
var hdl2&=@Create("Button",%hwnd,"2", 40,00, 40,30)
var hdl3&=@Create("Button",%hwnd,"3", 80,00, 40,30)
var hdld&=@Create("Button",%hwnd,"C",120,00, 40,30)
var hdl4&=@Create("Button",%hwnd,"4", 00,30, 40,30)
var hdl5&=@Create("Button",%hwnd,"5", 40,30, 40,30)
var hdl6&=@Create("Button",%hwnd,"6", 80,30, 40,30)
var hdlm&=@Create("Button",%hwnd,">",120,30, 40,30)
var hdl7&=@Create("Button",%hwnd,"7", 00,60, 40,30)
var hdl8&=@Create("Button",%hwnd,"8", 40,60, 40,30)
var hdl9&=@Create("Button",%hwnd,"9", 80,60, 40,30)
var hdls&=@Create("Button",%hwnd,"<",120,60, 40,30)
var hdlk&=@Create("Button",%hwnd,",", 00,90, 40,30)
var hdl0&=@Create("Button",%hwnd,"0", 40,90, 80,30)
var hdlg&=@Create("Button",%hwnd,"=",120,90, 40,30)
declare Ende&,s$,n&,key&
WHILENOT Ende&
waitinput:key&=%key
IF key&
If key&=ord("1"):inc n&:WindowTitle str$(n&)+":1":s$=s$+"1"
ElseIf key&=ord("2"):inc n&:WindowTitle str$(n&)+":2":s$=s$+"2"
ElseIf key&=ord("3"):inc n&:WindowTitle str$(n&)+":3":s$=s$+"3"
ElseIf (key&=ord("c")) or (key&=ord("C"))
n&=0:WindowTitle str$(int(n&+1))+": ":s$=""
ElseIf key&=ord("4"):inc n&:WindowTitle str$(n&)+":4":s$=s$+"4"
ElseIf key&=ord("5"):inc n&:WindowTitle str$(n&)+":5":s$=s$+"5"
ElseIf key&=ord("6"):inc n&:WindowTitle str$(n&)+":6":s$=s$+"6"
ElseIf key&=ord(">"):inc n&:WindowTitle str$(n&)+":>":s$=s$+">"
ElseIf key&=ord("7"):inc n&:WindowTitle str$(n&)+":7":s$=s$+"7"
ElseIf key&=ord("8"):inc n&:WindowTitle str$(n&)+":8":s$=s$+"8"
ElseIf key&=ord("9"):inc n&:WindowTitle str$(n&)+":9":s$=s$+"9"
ElseIf key&=ord("<"):dec n&:case n&<0:n&=0
WindowTitle str$(int(n&+1))+":":
s$=left$(s$,len(s$)+if(len(s$)>2,-1,0))
ElseIf key&=ord(","):inc n&:WindowTitle str$(n&)+":,":s$=s$+","
ElseIf key&=ord("0"):inc n&:WindowTitle str$(n&)+":0":s$=s$+"0"
ElseIf key&=ord("="):WindowTitle str$(n&)+":="+s$:waitinput 2000
Ende&=1:WindowTitle "Wiedersehen!":waitinput 2000:END
endif
ELSE
If Clicked(hdl1&):inc n&:WindowTitle str$(n&)+":1":s$=s$+"1"
ElseIf Clicked(hdl2&):inc n&:WindowTitle str$(n&)+":2":s$=s$+"2"
ElseIf Clicked(hdl3&):inc n&:WindowTitle str$(n&)+":3":s$=s$+"3"
ElseIf Clicked(hdld&):n&=0:WindowTitle str$(int(n&+1))+": ":s$=""
ElseIf Clicked(hdl4&):inc n&:WindowTitle str$(n&)+":4":s$=s$+"4"
ElseIf Clicked(hdl5&):inc n&:WindowTitle str$(n&)+":5":s$=s$+"5"
ElseIf Clicked(hdl6&):inc n&:WindowTitle str$(n&)+":6":s$=s$+"6"
ElseIf Clicked(hdlm&):inc n&:WindowTitle str$(n&)+":>":s$=s$+">"
ElseIf Clicked(hdl7&):inc n&:WindowTitle str$(n&)+":7":s$=s$+"7"
ElseIf Clicked(hdl8&):inc n&:WindowTitle str$(n&)+":8":s$=s$+"8"
ElseIf Clicked(hdl9&):inc n&:WindowTitle str$(n&)+":9":s$=s$+"9"
ElseIf Clicked(hdls&):dec n&:case n&<0:n&=0:WindowTitle str$(int(n&+1))+":"
case len(s$):s$=left$(s$,len(s$)-1)
ElseIf Clicked(hdlk&):inc n&:WindowTitle str$(n&)+":,":s$=s$+","
ElseIf Clicked(hdl0&):inc n&:WindowTitle str$(n&)+":0":s$=s$+"0"
ElseIf Clicked(hdlg&):inc n&:WindowTitle str$(n&)+":="+s$:Ende&=1
waitinput 2000:WindowTitle "Wiedersehen!":waitinput 2000:END
endif
ENDIF
'Auswertung (Diese Version noch ohne Obfuscator):
if (n&=5) and (s$="12345")
cls 0:font 2
waitinput 1000
beep
print "\n\n\n K O R R E K T ! "
waitinput 3000
break
endif
EndWhile
CLS
DestroyWindow(hdl1&)
DestroyWindow(hdl2&)
DestroyWindow(hdl3&)
DestroyWindow(hdld&)
DestroyWindow(hdl4&)
DestroyWindow(hdl5&)
DestroyWindow(hdl6&)
DestroyWindow(hdlm&)
DestroyWindow(hdl7&)
DestroyWindow(hdl8&)
DestroyWindow(hdl9&)
DestroyWindow(hdls&)
DestroyWindow(hdlk&)
DestroyWindow(hdl0&)
DestroyWindow(hdlg&)
Windowtitle "Geschützt:"
Window 0,0-%maxx,%maxy:cls 0:showmax
PRINT " "
PRINT "HIER WÜRDE DANN DAS"
PRINT "GESCHÜTZTE PROGRAMM"
PRINT "GESTARTET ODER EIN "
PRINT "ELEMENT ANGEZEIGT! "
PRINT " "
PRINT "==================="
PRINT "THANKS FOR TESTING!"
PRINT "===================";
waitinput 6000
END
|
| | | Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 25.05.2021 ▲ |
| |
| | p.specht
| XOR-Obfuskator gegen neugierige Nasen, die den Zahlenschloss-Code aus der Source auslesen wollen
windowstyle 24:Windowtitle "For your eyes only, XOR!":cls
declare a$,b$,c$,d$
'c$="Geheim-Schlüssel"
c$="#IB&H …"
a$="For your eyes only! 0123456789+-*:"
'a$="":whileloop 0,255:a$=a$+chr$(&Loop):endwhile
Start:
font 2:print "\n Geheime Botschaft: ":font 0:print a$
font 2:print "\n XOR-Schlüssel: ":font 0:print c$
b$="":case c$="":c$=chr$(0)
whileloop len(a$)
b$=b$+chr$(xor(ord(mid$(a$,&Loop,1)),ord(mid$(c$,(&Loop mod len(c$))+1,1))))
endwhile
font 2:print "\n Chiffre: ":font 0:print b$
clearclip:putclip b$
font 2:print " ==> Zwischenablage!"
d$=""
whileloop len(b$)
d$=d$+chr$(xor(ord(mid$(b$,&Loop,1)),ord(mid$(c$,(&Loop mod len(c$))+1,1))))
endwhile
font 2:print "\n Dechiffriert: "
font 0:print d$
print
if a$<>d$:font 2:print "\n *** ERROR ***":sound 2000,2000:waitinput
endif
waitinput
cls
print "\n Ihre Geheimbotschaft: ";
Input a$
goto "Start"
|
| | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 25.05.2021 ▲ |
| |
|
Zum QuelltextThemenoptionen | 1.698 Betrachtungen |
ThemeninformationenDieses Thema hat 1 Teilnehmer: |