Source / code snippets | | | | Hubert Binnewies | Hello together...
I knows...you Profan Profis tell I nothing new, but for NEN Beginner could that here interestingly his (be ultimately yourself one Beginner).
i'm into fix come some Strings verschlüsselt To Save circa tappt im dunkeln to nosy eyes To protect. therefore have I these routine written. she is not unknackbar, but the most go a Disassambler need circa hereon To come.
Erstmal The Speicherroutine:
One möglicher appeal would CompileMarkSeparationSpeichern "Daten.dat", String1$,String2$,String3$,String4$,String5$,Zahl1%,Zahl2%,Zahl3%,Zahl4%,Zahl5% > where The 5 numbers the further Verschlüsselung serve and in the first Integer and secondly in the area between 1 and about 65400 lying should. and the 5 Strings should a maximum length of 200 not beyond (something longer goes already but then Better get going entschlüsselbar) and with about 235 plus less a couple is integrally Schluss.
here The memory routine: CompileMarkSeparation
Proc Speichern
Parameters Dateiname$, Var1$, Var2$, Var3$, Var4$, Var5$, Var1%, Var2%, Var3%, Var4%, Var5%, Dateiname$
Declare Anzahl%, Datei%, Zähler1%, Zähler2%, Dummy$, Dummy1$, Dummy%, Dummy1%
Anzahl%=Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)
Randomize
Declare Zufall#[Anzahl%+1], Datei#
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Dim Datei#,1024
Zufall#[0].Nummer%=@Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Zufall#[0].Nummer%=Zufall#[0].Nummer%*2
Zähler1%=0
Whileloop Anzahl%+1
Inc Zähler1%
Dummy1%=0
Whilenot Dummy1%
Dummy1%=1
Dummy%=Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Dummy%=Dummy%*2
Zähler2%=0
Whileloop Anzahl%+1
If Dummy%=Zufall#[Zähler2%].Nummer%
Dummy1%=0
endif
Inc Zähler2%
Endwhile
Endwhile
Zufall#[Zähler1%].Nummer%=Dummy%
Endwhile
Whileloop 512
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Word Datei#,0 = Len(Var1$)+Var1%,Len(Var2$)+Var2%,Len(Var3$)+Var3%,Len(Var4$)+Var4%,Len(Var5$)+Var5%
Whileloop Anzahl%+1
Word Datei#,(&Loop-1)*2+10,Zufall#[&Loop-1].Nummer%+&Loop
Endwhile
Dummy$=Var1$+Var2$+Var3$+Var4$+Var5$
Whileloop Anzahl%+1
Dummy1$=@Mid$(Dummy$,&loop-1,1)
Dummy%=@Ord(Dummy1$)+&Loop
Word Datei#,Zufall#[&loop-1].Nummer%,Dummy%
Endwhile
Assign #1, Dateiname$
OpenRW #1
BlockWrite #1, Datei#, 0, 1024
CloseRW #1
< s=s4 href='./../../function-references/XProfan/endproc/'>Endproc
These routine created a File of exakt one Kilobyte The mainly with Zufallswerten filled becomes between them The Nutzwerte durcheinandergewürfelt and changed cache are.
naturally must to the again auseinanderpflücken can:
One möglicher appeal: CompileMarkSeparationloading "Daten.dat",number1%, number2%, number3%, number4%, number5%
where these 5 numbers The even supra beschriebenen are
here The Laderoutine: CompileMarkSeparation___________ In Diesen variables are to Proc appeal The in the File
___________ gespeicherten Strings
Declare Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc loading
Parameters Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Declare File#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, amount%
Dim File#, 1024
Assign #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, File#, 0, 1024)
CloseRW #1
Varl1%=@Word(File#,0)-Var1%
Varl2%=@Word(File#,2)-Var2%
Varl3%=@Word(File#,4)-Var3%
Varl4%=@Word(File#,6)-Var4%
Varl5%=@Word(File#,8)-Var5%
amount%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Declare chance#[amount%]
Struct Zufallnr = number%
Dim chance#[], Zufallnr
Whileloop amount%+1
chance#[&Loop-1].number%=@Word(File#,(&Loop-1)*2+10)
chance#[&Loop-1].number%=chance#[&Loop-1].number%-&Loop
Endwhile
Whileloop amount%
Dummy1$=@chr $(@Word(File#,chance#[&Loop].number%)-&Loop-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid$(Dummy2$,&Loop,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
Endproc
plenty joke so |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 04/23/06 ▲ |
| |
| | Jac de Lad | is still neat, probier I same from!
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 04/23/06 ▲ |
| |
| | Frank Abbing | Beauty work .
in the Context my Verschlüsselungscode from whom XPIA Examples. it depends itself in first line but on User with erweiteren Programmkenntnissen, for speed important is together with a relatively secure Passwortschutz. CompileMarkSeparationSuperschnelles XOR-Verschlüsselungs-Verfahren mit Passwortschutz.
Entliehen aus meiner ProSpeed.dll
{$cliq}
Declare text$,passwort$,nurso$
text$="Zunächst einmal: Für Assembler benötigt man keine grosse Anzahl von Befehlen, mit 10 Befehlen "
text$=text$+"(insgesamt gibt es über 90) ist man schon gut bedient, alles andere ist unnütz, weil der "
text$=text$+"MASM32 Assembler High-Level-Syntax (.while / .endw / .if / .endif usw.) unterstützt."
text$=text$+"Und davon ist einem Profan-User schon das meiste bekannt."
passwort$="Ganz geheimes Passwort."
Window 0,0-%maxx,%maxy
Print "Originaltext:"
Print
Color 7,15
Print text$
Color 0,15
Print
Print
ASM-Block
Crypt(), eine XOR-Verschlüsselung mittels Passwort
Übernommen aus meiner ProSpeed.dll
Parameter:
1) para1 = Bereichsvariable oder String, in der die Daten gespeichert sind.
2) para2 = Anzahl zu verschlüsselnder Bytes
3) para3 = Pointer auf einen String (oder Bereich), in dem das Passwort gespeichert ist
4) para4 = Länge des Passworts
Beim zweiten Aufruf mit den gleichen Parametern wird der ursprung wieder hergestellt.
AsmStart Crypt
Parameters addr(text$),Len(text$),addr(passwort$),Len(passwort$)
mov ecx,para2
mov edx,para1
mov ebx,para3
mov esi,para4
mov edi,0
schleife:
mov al,[edx]
xor al,[ebx+edi]
mov [edx],al
inc edx
inc edi
cmp esi,edi
jne sprung
mov edi,0
sprung:
sub ecx,1
jne schleife
AsmEnd
Print "Verschlüsselter Text:"
Print
Color 7,15
Print text$
Color 0,15
Print
Print
Jetzt kommt eine Besonderheit...
Wir rufen unseren ersten ASM-Block ein zweites mal auf !!! Ohne Prozedure !
xpia$ ist der Name unserer kompletten Assemblerlibrary.
Crypt ist hier der Name des Assemblerblocks, danach folgen etventuelle Parameter.
Dabei ist es sogar egal, ob der zweite Aufruf nach dem Assemblerblock erfolgt oder schon davor !
Wer das jetzt nicht verstanden hat, der sollte den ASM-Block Crypt lieber in eine Profan-Prozedure
packen, und stattdessen lieber die Prozedure aufrufen. Aber so wie hier geht es auch.
External(xpia$,"Crypt",addr(text$),Len(text$),addr(passwort$),Len(passwort$))
Print "Und der wieder hergestellte Text:"
Print
Color 7,15
Print text$
WaitInput class=s4 href='./../../function-references/XProfan/end/'>End
|
| | | | |
| | Hubert Binnewies | @Frank
neither badly.....even goil would I say.... only I verwürfel the whole still in of/ one File...with which one cracker to 3 Problems set becomes.. in the first: How long are The strings.. where are The characters in the File and which reihenfolge....the first is no prob...the standing in the beginning the File, the stupid is only that here very The additional verschlüsselungszahlen add get...because first from it yields itself first How long the area the Positionszahlen is with which the positions the characters and its Order yields.....means not integrally so simply...
but time in the serious....it would Real sense make your routine to of my To settle and already becomes it Real jolly fürn cracker....what meinste...whether it The hairs faster nachwachsen as the the Rauft???.... |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 04/23/06 ▲ |
| |
| | Hubert Binnewies | i'm yet what invaded around the positions the characters To veil...there I will me tommorrow time dransetzen...and then becomes it yet what safer...
but time ne question......wieso is my Posting here moved been...whom have I still under beginner-questions / Programming reingesetzt....if I what Search look I always first darein....under whom codesnippets finds the still none.... |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 04/23/06 ▲ |
| |
| | | [quote:b53fcb60e0=Hubert Binnewies]but time ne question......wieso is my Posting here moved been...whom have I still under beginner-questions / Programming reingesetzt....if I what Search look I always first darein....under whom codesnippets finds the still none....[/quote:b53fcb60e0]Please in the Regulars table post, here would none to the response search. always beautiful at Topic stay. ( Regeln ) |
| | | | |
| | Hubert Binnewies | Hello together....
I have The routines yet what verfeinert, now are too yet The Positionszahlen verschlüsselt so the one Cracker in any case disassmblieren must so it The The 5 additional numbers sustain...otherwise would it not yet times the positions the characters herausbekommen..
here The memory routine: CompileMarkSeparation
Proc Speichern
Parameters Dateiname$, Var1$, Var2$, Var3$, Var4$, Var5$, Var1%, Var2%, Var3%, Var4%, Var5%, Dateiname$
Declare Anzahl%, Datei%, Zähler1%, Zähler2%, Dummy$, Dummy1$, Dummy%, Dummy1%
Anzahl%=Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)+Len(Var1$)
Randomize
Declare Zufall#[Anzahl%+1], Datei#
Struct Zufallnr = Nummer%
Dim Zufall#[], Zufallnr
Dim Datei#,1024
Zufall#[0].Nummer%=@Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Zufall#[0].Nummer%=Zufall#[0].Nummer%*2
Zähler1%=0
Whileloop Anzahl%+1
Inc Zähler1%
Dummy1%=0
Whilenot Dummy1%
Dummy1%=1
Dummy%=Rnd(500-(Anzahl%*2))+12+(Anzahl%*2)
Dummy%=Dummy%*2
Zähler2%=0
Whileloop Anzahl%+1
If Dummy%=Zufall#[Zähler2%].Nummer%
Dummy1%=0
endif
Inc Zähler2%
Endwhile
Endwhile
Zufall#[Zähler1%].Nummer%=Dummy%
Endwhile
Whileloop 512
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Word Datei#,0 = Len(Var1$)+Var1%,Len(Var2$)+Var2%,Len(Var3$)+Var3%,Len(Var4$)+Var4%,Len(Var5$)+Var5%
Dummy$=Var1$+Var2$+Var3$+Var4$+Var5$
Whileloop Anzahl%+1
Dummy1$=@Mid$(Dummy$,&loop-1,1)
Dummy%=@Ord(Dummy1$)+&Loop
Word Datei#,Zufall#[&loop-1].Nummer%,Dummy%
Endwhile
Zähler1%=1
Whileloop Anzahl%+1
If Zähler1%=1
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var1%
Endif
If Zähler1%=2
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var2%
Endif
If Zähler1%=3
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var3%
Endif
If Zähler1%=4
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var4%
Endif
If Zähler1%=5
Zufall#[&Loop-1].Nummer%=Zufall#[&Loop-1].Nummer%+Var5%
Endif
Inc Zähler1%
If Zähler1%=6
Zähler1%=1
Endif
Endwhile
Whileloop Anzahl%+1
Word Datei#,(&Loop-1)*2+10,Zufall#[&Loop-1].Nummer%+&Loop
Endwhile
Assign #1, Dateiname$
OpenRW #1
BlockWrite #1, Datei#, 0, 1024
Endproc
and here The Laderoutine: CompileMarkSeparation___________ In Diesen variables are to Proc appeal The in the File
___________ gespeicherten Strings
Declare Var1$, Var2$, Var3$, Var4$, Var5$
_________________________________________________________________________________________
Proc loading
Parameters Dateiname$, Var1%, Var2%, Var3%, Var4%, Var5%
Declare File#, Dummy%, Varl1%, Varl2%, Varl3%, Varl4%, Varl5%, Dummy1$, Dummy2$, amount%, counter%
Dim File#, 1024
Assign #1, Dateiname$
OpenRW #1
Dummy% = @BlockRead(#1, File#, 0, 1024)
CloseRW #1
Varl1%=@Word(File#,0)-Var1%
Varl2%=@Word(File#,2)-Var2%
Varl3%=@Word(File#,4)-Var3%
Varl4%=@Word(File#,6)-Var4%
Varl5%=@Word(File#,8)-Var5%
amount%=Varl1%+Varl2%+Varl3%+Varl4%+Varl5%
Declare chance#[amount%]
Struct Zufallnr = number%
Dim chance#[], Zufallnr
Whileloop amount%+1
chance#[&Loop-1].number%=@Word(File#,(&Loop-1)*2+10)
chance#[&Loop-1].number%=chance#[&Loop-1].number%-&Loop
Endwhile
counter%=1
Whileloop amount%+1
IF counter%=1
chance#[&Loop-1].number%=chance#[&Loop-1].number%-Var1%
Endif
IF counter%=2
chance#[&Loop-1].number%=chance#[&Loop-1].number%-Var2%
Endif
IF counter%=3
chance#[&Loop-1].number%=chance#[&Loop-1].number%-Var3%
Endif
IF counter%=4
chance#[&Loop-1].number%=chance#[&Loop-1].number%-Var4%
Endif
IF counter%=5
chance#[&Loop-1].number%=chance#[&Loop-1].number%-Var5%
Endif
Inc counter%
If counter%=6
counter%=1
Endif
Endwhile
Whileloop amount%
Dummy1$=@chr $(@Word(File#,chance#[&Loop].number%)-&Loop-1)
Dummy2$=Dummy2$+Dummy1$
endwhile
Whileloop Varl1%
Dummy1$=@Mid$(Dummy2$,&Loop,1)
Var1$=Var1$+Dummy1$
Endwhile
Whileloop Varl2%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%,1)
Var2$=Var2$+Dummy1$
Endwhile
Whileloop Varl3%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%,1)
Var3$=Var3$+Dummy1$
Endwhile
Whileloop Varl4%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%,1)
Var4$=Var4$+Dummy1$
Endwhile
Whileloop Varl5%
Dummy1$=@Mid$(Dummy2$,&Loop+Varl1%+Varl2%+Varl3%+Varl4%,1)
Var5$=Var5$+Dummy1$
Endwhile
Endproc
plenty joke so |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 04/24/06 ▲ |
| |
| | Hubert Binnewies | ACHTUNG!!!!
at that revise the routine for a new Proggi is me noticed the with this routine, if one tappt im dunkeln knows, the Key with a ploy on simplest Nature and point zurückgerechnet go can.
I work straight at a routine with the not More possible is.
means : NOT VERWENDEN !
on IF: it would already if You this Posting delete could. If I the new routine ready have eröffne I then a new Posting.
thanks
Hubert |
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 06/27/06 ▲ |
| |
| | Michael Wodrich | Hello Hubert, You can your geposteten Posts as an afterthought Edit. on the end standing (under right) edit.
If you whom Posting changed have, then points You simply with a new Posting hereon there, the there now something changed watts. The Changes get otherwise Yes none with.
Best wishes Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 06/27/06 ▲ |
| |
| | Hubert Binnewies | Hello together...
After 2 weeks gutem durchbraten in the sun of Friedewald (Westerwald) and about one Gigabyte on photos, be I completely Relaxed again here. naturally have I directly again on The routine to that verschlüsseltem Save staid and wished here The finished routine post.
but first something to the routine: 1.) tappt im dunkeln bid Space for 101 Strings with of/ one length of up to 50 characters. 2.) tappt im dunkeln bid Space for 101 Integerwerte. 3.) there 2 Key together verwurstet go, arise one gigant langer Key the, under the prerequisite the both Key different long are, no replays shows. Womit because of the astronomisch high Opportunities one Brute-Force forward line useful unmöglich becomes. likewise becomes one Rückrechnen the Key useful unmöglich.
around the whole yet abzurunden be erwähnt the one on none drop The Key in the program unterbringen ought to, there one tappt im dunkeln otherwise through Disassamblieren sustain.
plenty joke with the routine, I hope on many comments.
Hubert CompileMarkSeparation_________________________________________________________________________________________
Globale Variablen, hier kommen die zu Speichernden Werte hinein
Declare Speicherdaten#[100], Schlüssel$,Schlüssel2$
Struct Nutzdaten = Stringvar$(50), Intvar%
Dim Speicherdaten#[], Nutzdaten
_________________________________________________________________________________________
Beim Aufruf wird noch ein Dateiname (gegebenenfalls mit Pfad) benötigt und ein
beliebig langer Schlüssel (max 235 Zeichen) als String der alle mit der Tastatur
erreichbare Zeichen enthalten darf.
Beispielaufruf :
Whileloop 0,100
Speicherdaten#[&loop].Stringvar$="testdatensatz nummer:"+@Str$(&loop)+" Integerwert:"
Speicherdaten#[&loop].Intvar%=&loop
endwhile
Schlüssel$="AABBCCDDEEFFGG112233445566"
Schlüssel2$="abcdefghijk"
Speichern $Progdir+"INI.DAT",Schlüssel$,Schlüssel2$
cls
print "fertig"
waitinput
_________________________________________________________________________________________
Am Programmende muss noch dies, da sonst der Speicher nicht freigegeben wird.
Dispose Speicherdaten#[]
_________________________________________________________________________________________
Die Speicher Routine
Proc Speichern
Parameters Datei$, Schlüssel$, Schlüssel2$
Declare Speicherstring$, Speicherschlüssel$, Speicherschlüssel1$, Speicherschlüssel2$, Speicherstringverschlüsselt$, Speicherstringlänge%
Declare Zähler1%, Zähler2%, Zähler3%, Dummy1%, Dummy2%, Dummy3%, Datei#, Speicherstringlängecod%
Dim Datei#,30720
Randomize
Whileloop 0,100 <---Bei weniger Datensätze, diese Zahl anpassen
Speicherstring$=Speicherstring$+chr$(len(Speicherdaten#[&loop].Stringvar$))+Speicherdaten#[&loop].Stringvar$+chr$(len(str$(Speicherdaten#[&loop].Intvar%)))+str$(Speicherdaten#[&loop].Intvar%)
EndWhile
Speicherstringlänge%=len(Speicherstring$)+1
Speicherstringlängecod%=Speicherstringlänge%
Whileloop len(Schlüssel$)
Speicherstringlängecod%=Speicherstringlängecod%+ord(mid$(Schlüssel$,&Loop,1))
Endwhile
Declare Zufall%[Speicherstringlänge%]
Whilenot Speicherstringlänge%<len(Speicherschlüssel1$)
Speicherschlüssel1$=Speicherschlüssel1$+Schlüssel$
Endwhile
Whilenot Speicherstringlänge%<len(Speicherschlüssel2$)
Speicherschlüssel2$=Speicherschlüssel2$+Schlüssel2$
Endwhile
WhileLoop 0,Speicherstringlänge%+1
Speicherschlüssel$ = Speicherschlüssel$ + @Chr$(@XOr(@Ord(@Mid$(Speicherschlüssel1$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel2$,&Loop,1))))
EndWhile
WhileLoop 0,Speicherstringlänge%+1
Speicherstringverschlüsselt$ = Speicherstringverschlüsselt$ + @Chr$(@XOr(@Ord(@Mid$(Speicherstring$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel$,&Loop+1,1))))
EndWhile
Clear Datei#
Whileloop Speicherstringlänge%
Dummy2%=&loop
Dummy3%=0
Whilenot Dummy3%
Dummy3%=1
Dummy1%=(Rnd(30710-(Speicherstringlänge%*2)))+10+(Speicherstringlänge%*2)
If @byte(Datei#,Dummy1%)=0
Byte Datei#,Dummy1%=1
Zufall%[Dummy2%]=Dummy1%
else
Dummy3%=0
Endif
Endwhile
Endwhile
Whileloop 0,15359
Word Datei#,(&Loop-1)*2,Rnd(65533)
Endwhile
Whileloop 0,Speicherstringlänge%-1
Byte Datei#,Zufall%[&Loop]=Ord(mid$(Speicherstringverschlüsselt$,&Loop+1,1))
Endwhile
Word Datei#,0=Speicherstringlängecod%
Whileloop Speicherstringlänge%
Word Datei#,&Loop*2=@XOr(Zufall%[&Loop-1], @Ord(@Mid$(Speicherschlüssel$,&Loop,1)))
Endwhile
Assign #1, Datei$
OpenRW #1
BlockWrite #1, Datei#, 0, 30720
CloseRW #1
Endproc
CompileMarkSeparation_________________________________________________________________________________________
Globale variables, here come The gespeicherten values into
Declare Speicherdaten#[100], Key$, Key2$, success%
Struct Nutzdaten = Stringvar$(50), Intvar%
Dim Speicherdaten#[], Nutzdaten
_________________________________________________________________________________________
at that appeal becomes yet the Dateiname (possibly with way) needed and the
Key as String.
Return Value: 0=ungültige File (caution, it go only elementare items examined,
sinvoll would one Prüfwert)
1=gültige File
Beispielaufruf :
Schlüssel$="AABBCCDDEEFFGG112233445566"
Schlüssel2$="abcdefghijk"
Erfolg%=loading ($Progdir+"INI.DAT",Key$,Key2$)
Testausgabe
cls
whileloop 0,100
print Speicherdaten#[&loop].Stringvar$;
print " ";
print Speicherdaten#[&loop].Intvar%
waitinput
endwhile
_________________________________________________________________________________________
on the End of program must yet this, there otherwise the memory not released is.
Dispose Speicherdaten#[]
_________________________________________________________________________________________
The load routine
Proc loading
Parameters File$, Key$, Key2$
Declare File#, counter1%, counter2%, counter3%, Dummy1%, Dummy2%, Dummy3%, Speicherstringlängecod%
Declare Speicherstring$, Speicherschlüssel$, Speicherschlüssel1$, Speicherschlüssel2$, Speicherstringverschlüsselt$, Speicherstringlänge%
Declare Falschedatei%
Dim File#,30720
Falschedatei%=1
Assign #1, File$
OpenRW #1
Dummy1% = @BlockRead(#1, File#, 0, 30720)
CloseRW #1
If Dummy1%<>30720
Falschedatei%=0
Endif
Speicherstringlängecod%=@Word(File#,0)
Whileloop len(Key$)
Speicherstringlängecod%=Speicherstringlängecod%-ord(mid$(Key$,&Loop,1))
Endwhile
Speicherstringlänge%=Speicherstringlängecod%
If Speicherstringlänge%>5200
Falschedatei%=0
Endif
If Falschedatei%=0
Return 0
Endif
Declare chance%[Speicherstringlänge%]
Whilenot Speicherstringlänge%<len(Speicherschlüssel1$)
Speicherschlüssel1$=Speicherschlüssel1$+Key$
Endwhile
Whilenot Speicherstringlänge%<len(Speicherschlüssel2$)
Speicherschlüssel2$=Speicherschlüssel2$+Key2$
Endwhile
WhileLoop 0,Speicherstringlänge%+1
Speicherschlüssel$ = Speicherschlüssel$ + @Chr$(@XOr(@Ord(@Mid$(Speicherschlüssel1$,&Loop,1)), @Ord(@Mid$(Speicherschlüssel2$,&Loop,1))))
EndWhile
Whileloop Speicherstringlänge%
chance%[&loop-1]=@XOr(@Word(File#,&loop*2), @Ord(@Mid$(Speicherschlüssel$,&Loop,1)))
Endwhile
Whileloop 1,Speicherstringlänge%
Speicherstring$=Speicherstring$+chr $(@XOr(@byte(File#,chance%[&loop-1]), @Ord(@Mid$(Speicherschlüssel$,&Loop,1))))
Endwhile
counter1%=2
Whileloop 0,100 <--- with less Datensätze, these number adjust
Dummy1%=@Ord(@Mid$(Speicherstring$,counter1%,1))
Speicherdaten#[&loop].Stringvar$=@Mid$(Speicherstring$,counter1%+1,Dummy1%)
Dummy2%=@Ord(@Mid$(Speicherstring$,counter1%+1+Dummy1%,1))
Speicherdaten#[&loop].Intvar%=Val(@Mid$(Speicherstring$,counter1%+2+Dummy1%,Dummy2%))
counter1%=counter1%+2+Dummy1%+Dummy2%
EndWhile
Return 1
Endproc
|
| | | WinXP Prof, XProfan 9.1 Newbie
Ein kluger Kopf sagte mal: "Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!" | 07/24/06 ▲ |
| |
|
Zum QuelltextThemeninformationenthis Topic has 5 subscriber: |