Forum Liberty Basic France
• Index
Afin de retrouver tous les logins et password des forums ou autre, je me suis fabriqué cette petite gestion de base de donnée qu'il fallait bien sûr crypter vue son utilisation.
J'ai donc cherché sur le forum anglais, car pas envie de réinventer la poudre, et comme d'habitude, j'y ai trouvé tout ce qu'il me fallait.
Puis j'ai fait ma mixture.
L'utilisation est très simple et ne nécessite pas spécialement d'explications supplémentaires, si ce n'est qu'il vaut mieux ne pas oublier le code secret, car il n'est enregistré nulle part, et même avec le fichier source, il ne me semble pas vraiment facile de décrypter le fichier.
Code VB :
Edité par cassiope01 Le 27/01/2013 à 19h26
J'ai donc cherché sur le forum anglais, car pas envie de réinventer la poudre, et comme d'habitude, j'y ai trouvé tout ce qu'il me fallait.
Puis j'ai fait ma mixture.
L'utilisation est très simple et ne nécessite pas spécialement d'explications supplémentaires, si ce n'est qu'il vaut mieux ne pas oublier le code secret, car il n'est enregistré nulle part, et même avec le fichier source, il ne me semble pas vraiment facile de décrypter le fichier.
Code VB :
' By cassiope01 on January 2013 ' ' PASSWORD WITH A MASK ' original by by laz on April 1, 2002 ' modified by tsh73 July 2011 ' XORcoding by tenochtitlanuk (John F) nomainwin WindowWidth = 500 : WindowHeight= 430 UpperLeftX = int((DisplayWidth-WindowWidth)/2) 'center the window UpperLeftY = int((DisplayHeight-WindowHeight)/4) mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc" ' mois$ = "January February March April May June July August September October November December" 'US format today$ = date$("mm/dd/yyyy") j = date$(today$) jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1) ' jsem$ = word$("Tue Wed Thu x Fri Sat x Sun Mon",int((j/7-int(j/7))*10)+1) 'US format date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+left$(time$(),5)'right$(today$,4) ' date$ = jsem$+" "+word$(mois$, val(today$))+", "+mid$(today$,1,2)+" "+left$(time$(),5)'right$(today$,4) ' US format DIM info$(1,1), titre$(11), array$(11) enter$ = chr$(_VK_RETURN) : backspace$ = chr$(_VK_BACK) : esc$ = chr$(27) up$ = chr$(_VK_UP) : down$ = chr$(_VK_DOWN) start$ = "Tapez votre code" filename$ = "BDDC.cry" sep$="|" ' records separator sepField$="¤" ' fields separator in a record graphicbox #w.gb, 0,0,0,0 'this graphicbox is used to capture key input LISTBOX #w.list, titre$(), [select], 5, 5, 480, 110 textbox #w.tb, 85,120,160,25 button #w.find, "Find", [findButton], UL, 10, 120, 60, 25 TEXTBOX #w.titre, 5, 150, 465, 28 TEXTEDITOR #w.edi, 5, 178, 480, 165 button #w.modif, "Mod", [modif], UL, 260, 120, 40, 25 button #w.add, "Add", [add],UL, 330,120,40,25 button #w.del, "Del", [del],UL, 400,120,40,25 button #w.val, "Validate", [valid], UL, 370, 355, 90, 25 statictext #w.total, ".. records.", 40, 360, 200, 25 open "Base de données cryptée"+space$(20)+date$ for window_nf as #w #w "trapclose [quit]" if fileExists(DefaultDir$, filename$) then okfile = 1 open filename$ for input as #i Source$ =input$( #i, lof( #i)) close #i cle = val(left$(Source$,12)) Source$ = mid$(Source$,13) else #w.edi " Création du code secret."+chr$(13)+chr$(13)+_ " 4 caractères minimum."+chr$(13)+chr$(13)+_ " Attention, vous ne pourrez pas le modifier..." end if #w "font courier_new 11 bold" #w.gb "setfocus" #w.gb "when characterInput [letter]" #w.tb start$ #w.list "singleclickselect" #w.val "!disable" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" [waitAgain] timer 400, [t] '!!! faster , as,60, will break [OK] button (will not fire at all) wait [t] 'redirect key presses to graphicbox #w.gb, "setfocus" wait [letter] timer 0 'set timer off so it didn't fire key$ = Inkey$ 'get the key pressed. It's single char for ordinary keys 'or (somerhing)(keyCode) for special keys select case case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = enter$ : goto [ok] case key$ = esc$ : goto [quit] case key$ = backspace$ b$ = left$(b$,len(b$)-1) 'strip last letter case else b$ = b$ + key$ 'add next letter end select fill$ = left$("***********************************************", len(b$)) ' Mask if len(b$)=0 then fill$ = start$ #w.tb fill$ 'put thet fill$ into textbox for us to see #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on WAIT [ok] ' when you tape "Enter" timer 0 if okfile then ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) randomize rdz r = rnd(1) if cle = val(left$(str$(r)+"000000000000",12)) then #w.tb "Code correct" #w.tb "!disable" #w.gb "when characterInput" goto [outCrypt] else b$ = "" #w.gb, "setfocus" ' incorrect code #w.tb "code incorrect" timer 400, [t] end if else if len(b$)>3 then ' secret code creation ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) #w.tb "Code créé" #w.tb "!disable" #w.gb "when characterInput" #w.edi "!cls" #w.add "!enable" end if end if WAIT [outCrypt] ' decryption of the file if okfile then Dec$ ="" randomize rdz for i =1 to len(Source$) f =int(256*rnd(1)) ch =f xor asc(mid$(Source$,i,1)) Dec$ =Dec$+chr$(ch) next i DO ' calc number of records totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) LOOP UNTIL record$="" REDIM array$(totalRec+80) REDIM titre$(totalRec+80) totalRec = 0 DO ' load dec$ into array$() etc... totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) if record$<>"" then array$(totalRec) = record$ titre$(totalRec) = word$(record$,1,sepField$) end if LOOP UNTIL record$="" totalRec = totalRec - 1 #w.total, totalRec;" records." #w.list "reload" #w.list "setfocus" current = 1 #w.list "selectindex ";current goto [select] end if WAIT [add] #w.titre "" #w.titre "!setfocus" #w.edi "!cls" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [modif] modif = 1 #w.titre "!setfocus" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [valid] ' Add or Modif #w.titre "!contents? varTitre$" if varTitre$<>"" then if modif = 1 then Rec = current else totalRec = totalRec + 1 current = totalRec Rec = totalRec end if titre$(Rec) = varTitre$ #w.edi "!contents? varEdit$" if varEdit$ = "" then varEdit$ = "-" array$(Rec) = titre$(Rec) + sepField$ + varEdit$ ' record #w.list "reload" #w.val "!disable" modif = 0 #w.total, totalRec;" records." #w.list "selectindex ";current #w.list "setfocus" goto [select] end if wait [del] #w.modif "!disable" #w.add "!disable" #w.del "!disable" confirm "DELETE THIS RECORD ?"; answer$ if answer$ = "yes" then for nRec=current to totalRec array$(nRec) = array$(nRec+1) titre$(nRec) = word$(array$(nRec),1,sepField$) next if current = totalRec then current = current - 1 totalRec = totalRec - 1 #w.total totalRec;" records." #w.list "reload" #w.list "selectindex ";current #w.list "setfocus" goto [select] end if wait [select] ' the listbox #w.list "selectionindex? current" #w.titre titre$(current) #w.edi "!cls" #w.edi mid$(array$(current),len(titre$(current))+2) #w.list "selectindex ";current #w.list "setfocus" #w.add "!enable" if totalRec>0 then #w.modif "!enable" #w.del "!enable" #w.val "!disable" end if if totalRec>1 then #w.find "!enable" else #w.find "!disable" wait [findButton] timer 0 #w.tb "!enable" tofind$ = "" #w.tb tofind$ #w.gb "setfocus" #w.gb "when characterInput [find]" wait [find] timer 0 'set timer off so it didn't fire key$ = Inkey$ 'get the key pressed. It's single char for ordinary keys 'or (somerhing)(keyCode) for special keys select case case instr(enter$+esc$,key$)>0 : goto [waitAgain] case instr(up$+down$,right$(key$,1))>0 timer 0 #w.list "setfocus" tofind$ = "" #w.tb "search" #w.tb "!disable" #w.gb "when characterInput" goto [select] case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = backspace$ tofind$ = left$(tofind$,len(tofind$)-1) 'strip last letter case else tofind$ = tofind$ + key$ 'add next letter end select #w.tb tofind$ 'put into textbox for us to see if tofind$>"" then gosub [findData] #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on wait [findData] for rec = 1 to totalRec if instr(titre$(rec),tofind$)>0 then current = rec #w.list "selectindex ";current exit for end if next return FUNCTION fileExists(path$, filename$) files path$, filename$, info$( fileExists = val(info$(0, 0)) END FUNCTION [quit] timer 0 if rdz>0 then randomize rdz r = rnd(1) Enc$ =left$( str$(r) +"000000000000", 12) if totalRec>0 then ' make Source$ with array$() Source$ = "" for nRec = 1 to totalRec Source$ = Source$ + array$(nRec) + sep$ next randomize rdz ' Encrytpion of data for i = 1 to len(Source$) f =int(256*rnd(1)) ch =asc(mid$(Source$,i,1)) Enc$ =Enc$+chr$(f xor ch) next i if fileExists(DefaultDir$, "BDDC.bak") then kill "BDDC.bak" if fileExists(DefaultDir$, filename$) then NAME filename$ AS "BDDC.bak" open filename$ for output as #o #o Enc$; close #o end if end if close #w end
Edité par cassiope01 Le 27/01/2013 à 19h26
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Comment ça pas d'explications ?
Première manip:
j'entre un texte, je tape le code, j'oublie de faire: "Enter" résultat: rien !
Deuxième manip:
J'entre un texte, je mets le code, je fais "enter", le bouton "Add" s'allume, je le clique, le bouton "Validate" s'allume, je le clique. résultat: rien, je vais voir dans le dossier: rien.
Troisième manip:
J'entre un texte, je mets le code, je fais "enter", le bouton "Add" s'allume, je le clique, le bouton "Validate" s'allume, je retape le code, je clique "Validate", mon code apparait en clair dans la fenêtre du haut, les trois boutons "Mod", "Add" et "Del" s'allument, je clique "Add", qui r'allume "Validate", je le clique. je vais voir au dossier: Rien
Gloups! où qu'y n'est passé mon texte ? ?
A la fermeture: error: fichier introuvable ! MiloDiiouu ! es couplicat aquo !
Première manip:
j'entre un texte, je tape le code, j'oublie de faire: "Enter" résultat: rien !
Deuxième manip:
J'entre un texte, je mets le code, je fais "enter", le bouton "Add" s'allume, je le clique, le bouton "Validate" s'allume, je le clique. résultat: rien, je vais voir dans le dossier: rien.
Troisième manip:
J'entre un texte, je mets le code, je fais "enter", le bouton "Add" s'allume, je le clique, le bouton "Validate" s'allume, je retape le code, je clique "Validate", mon code apparait en clair dans la fenêtre du haut, les trois boutons "Mod", "Add" et "Del" s'allument, je clique "Add", qui r'allume "Validate", je le clique. je vais voir au dossier: Rien
Gloups! où qu'y n'est passé mon texte ? ?
A la fermeture: error: fichier introuvable ! MiloDiiouu ! es couplicat aquo !
____________________
Roro
Roro
Le seul truc génant c'est "error: fichier introuvable". Erreur corrigé. C'est une erreur qui ne pouvait ce produire que s'il n'y avait pas encore de fichier créé.
Pour le reste, ma fois c'est comme tout les outils, il faut juste apprendre à s'en servir et s'adapter.
Le programme me semble avoir un comportement normal par rapport à ce que tu en fais.
Déjà je ne comprends pas ta suite de manip :
Roland:
Comment tu entres un texte, PUIS tu tapes un code, puisque la seule possibilité à l'ouverture du programme c'est d'entrer le code !?
Il faut effectivement faire 'Entrer' après avoir tapé le code.
Le champ 'Titre' doit contenir quelque chose pour qu'une fiche soit enregistrée puisque c'est lui qui est listé plus haut !!!!
Edité par cassiope01 Le 27/01/2013 à 16h04
Pour le reste, ma fois c'est comme tout les outils, il faut juste apprendre à s'en servir et s'adapter.
Le programme me semble avoir un comportement normal par rapport à ce que tu en fais.
Déjà je ne comprends pas ta suite de manip :
Roland:
j'entre un texte, je tape le code,
Comment tu entres un texte, PUIS tu tapes un code, puisque la seule possibilité à l'ouverture du programme c'est d'entrer le code !?
Il faut effectivement faire 'Entrer' après avoir tapé le code.
Le champ 'Titre' doit contenir quelque chose pour qu'une fiche soit enregistrée puisque c'est lui qui est listé plus haut !!!!
Edité par cassiope01 Le 27/01/2013 à 16h04
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Hey, mais j'ai entré le texte avec la fonction "édit" du menu pardine
avec un bon Copié/Collé des familles.
J'y retourne voir où est ce fameux "titre"
avec un bon Copié/Collé des familles.
J'y retourne voir où est ce fameux "titre"
____________________
Roro
Roro
Roland:
Bien sûr.
Ben comme ça tu as pu voir que ça ne sert à rien de faire ça tant que tu n'as pas tapé ton code secret pour ouvrir ta base de données, ce qui me parait évident.
Mais c'est bien de tout tester, c'est le but, et avec toi je ne m'étonne de rien
Edité par cassiope01 Le 27/01/2013 à 16h45
Hey, mais j'ai entré le texte avec la fonction "édit" du menu pardine
avec un bon Copié/Collé des familles.
avec un bon Copié/Collé des familles.
Bien sûr.

Ben comme ça tu as pu voir que ça ne sert à rien de faire ça tant que tu n'as pas tapé ton code secret pour ouvrir ta base de données, ce qui me parait évident.
Mais c'est bien de tout tester, c'est le but, et avec toi je ne m'étonne de rien

Edité par cassiope01 Le 27/01/2013 à 16h45
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Bon, j'entre le code, je fais "enter", "Add" s'allume, je le clique, "Validate" s'allume, je le clique: rien.
Crogneugneu!
j'entre le code, je fais "enter", "Add" s'allume, je mets un titre dans la fenêtre centrale, je clique sur: "Add", oups! mon titre a disparute! ; "validate" s'allume,... j'hésite.......Le curseur clignote dans la fenêtre centrale, je sens le piège.
Tant pis, je remets un titre, Ahhh, le titre apparait en haut, le curseur est dans la fenêtre du bas, j'y colle mon texte, les trois boutons s'allument, Hum hum..."Mod"?, non.."Del"?, et non, bon il reste "Add". je sais bien ce qui va se passer: "Validate" va s'allumer! Je le clique...P....n! mon texte a disparute !!!
Là, j'y crois... Je regarde au dossier: Rien!
Bon, ben, j'ai quand même essayé pas mal de choses, je donne ma langue au chat...
Je suis bon pour faireBéta Testeur Testeur Bebête.
Edité par Roland Le 27/01/2013 à 16h57
Crogneugneu!
j'entre le code, je fais "enter", "Add" s'allume, je mets un titre dans la fenêtre centrale, je clique sur: "Add", oups! mon titre a disparute! ; "validate" s'allume,... j'hésite.......Le curseur clignote dans la fenêtre centrale, je sens le piège.
Tant pis, je remets un titre, Ahhh, le titre apparait en haut, le curseur est dans la fenêtre du bas, j'y colle mon texte, les trois boutons s'allument, Hum hum..."Mod"?, non.."Del"?, et non, bon il reste "Add". je sais bien ce qui va se passer: "Validate" va s'allumer! Je le clique...P....n! mon texte a disparute !!!
Là, j'y crois... Je regarde au dossier: Rien!
Bon, ben, j'ai quand même essayé pas mal de choses, je donne ma langue au chat...
Je suis bon pour faire
Edité par Roland Le 27/01/2013 à 16h57
____________________
Roro
Roro
Roland:
Tu t'attendais à ce qui se passe quoi au juste ?
Roland:
Quand tu cliques sur Add c'est pour créer une nouvelle fiche : donc les champs s'initialisent à 'rien'.
Ca ne sert à rien de recliquer tout de suite sur Add sans rien avoir rentré dans les champs de la nouvelle fiche, au moins dans le premier...
'Validate' permet d'enregistrer cette nouvelle fiche à condition que le premier champ contienne quelque chose, comme je l'ai expliqué dans un post précédent.
Roland:
Tant qu'au moins une fiche n'a pas été créée aucun fichier ne se créé bien sûr !
Roland:
Je ne pensais pas avoir créé un programme aussi compliqué à utiliser, mais il se peut qu'il y ait encore des bugs à l'utilisation, je continu de vérifier.
Tout les cas possibles ne sont pas forcément facile à gérer, surtout en ce qui concerne le flux du programme avec JustBasic !
Je me demande aussi si une routine de tri des fiches par ordre alphabétique serait utile ?
Edité par cassiope01 Le 27/01/2013 à 17h52
Bon, j'entre le code, je fais "enter", "Add" s'allume, je le clique, "Validate" s'allume, je le clique: rien.
Crogneugneu!
Crogneugneu!
Tu t'attendais à ce qui se passe quoi au juste ?
Roland:
j'entre le code, je fais "enter", "Add" s'allume, je mets un titre dans la fenêtre centrale, je clique sur: "Add", oups! mon titre a disparute! ; "validate" s'allume,... j'hésite.......Le curseur clignote dans la fenêtre centrale, je sens le piège.
Quand tu cliques sur Add c'est pour créer une nouvelle fiche : donc les champs s'initialisent à 'rien'.
Ca ne sert à rien de recliquer tout de suite sur Add sans rien avoir rentré dans les champs de la nouvelle fiche, au moins dans le premier...
'Validate' permet d'enregistrer cette nouvelle fiche à condition que le premier champ contienne quelque chose, comme je l'ai expliqué dans un post précédent.
Roland:
Tant pis, je remets un titre, Ahhh, le titre apparait en haut, le curseur est dans la fenêtre du bas, j'y colle mon texte, les trois boutons s'allument, Hum hum..."Mod"?, non.."Del"?, et non, bon il reste "Add". je sais bien ce qui va se passer: "Validate" va s'allumer! Je le clique...P....n! mon texte a disparute !!!
Là, j'y crois... Je regarde au dossier: Rien!
Là, j'y crois... Je regarde au dossier: Rien!
Tant qu'au moins une fiche n'a pas été créée aucun fichier ne se créé bien sûr !
Roland:
Bon, ben, j'ai quand même essayé pas mal de choses, je donne ma langue au chat...
Je suis bon pour faireBéta Testeur Testeur Bebête.
Je suis bon pour faire
Je ne pensais pas avoir créé un programme aussi compliqué à utiliser, mais il se peut qu'il y ait encore des bugs à l'utilisation, je continu de vérifier.
Tout les cas possibles ne sont pas forcément facile à gérer, surtout en ce qui concerne le flux du programme avec JustBasic !
Je me demande aussi si une routine de tri des fiches par ordre alphabétique serait utile ?
Edité par cassiope01 Le 27/01/2013 à 17h52
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Citation:
Ce qui serait utile, ce serait:
a)- Faire ceci dans celà
b)- Faire celà dans ceci
c)- Cliquer sur...
d)- Puis sur...
e)- Et sur....
Quelques lignes sans ambiguités. Le problème étant souvent dans la chronologie des actions.
C'est dingue de constater que des trucs qui nous paraissent évident quand on les crée,
ne le sont pas si tant qu'on le crois.
Je suis curieux de voir comment les anglophonistes vont s'en sortir.
Hey, pas de triche...En leur envoyant le mode d'emploi en express.
Je me demande aussi si une routine de tri des fiches par ordre alphabétique serait utile ?
Ce qui serait utile, ce serait:
a)- Faire ceci dans celà
b)- Faire celà dans ceci
c)- Cliquer sur...
d)- Puis sur...
e)- Et sur....
Quelques lignes sans ambiguités. Le problème étant souvent dans la chronologie des actions.
C'est dingue de constater que des trucs qui nous paraissent évident quand on les crée,
ne le sont pas si tant qu'on le crois.
Je suis curieux de voir comment les anglophonistes vont s'en sortir.
Hey, pas de triche...En leur envoyant le mode d'emploi en express.
____________________
Roro
Roro
Correction de quelques BUGs.
Attention, si vous êtes sous W7 il faut que tout ça soit dans un répertoire sous C:\My Program Files\ je crois bien, pour que le fichier créé soit vu par le programme...
Code VB :
Edité par cassiope01 Le 29/01/2013 à 13h26
Attention, si vous êtes sous W7 il faut que tout ça soit dans un répertoire sous C:\My Program Files\ je crois bien, pour que le fichier créé soit vu par le programme...
Code VB :
' By cassiope01 on January 2013 ' ' PASSWORD WITH A MASK ' original by by laz on April 1, 2002 ' modified by tsh73 July 2011 ' XORcoding by tenochtitlanuk (John F) nomainwin WindowWidth = 500 : WindowHeight= 440 UpperLeftX = int((DisplayWidth-WindowWidth)/2) 'center the window UpperLeftY = int((DisplayHeight-WindowHeight)/4) mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc" ' mois$ = "January February March April May June July August September October November December" 'US format today$ = date$("mm/dd/yyyy") j = date$(today$) jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1) ' jsem$ = word$("Tue Wed Thu x Fri Sat x Sun Mon",int((j/7-int(j/7))*10)+1) 'US format date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+left$(time$(),5)'right$(today$,4) ' date$ = jsem$+" "+word$(mois$, val(today$))+", "+mid$(today$,1,2)+" "+left$(time$(),5)'right$(today$,4) ' US format DIM info$(1,1), titre$(11), array$(11) enter$ = chr$(_VK_RETURN) : backspace$ = chr$(_VK_BACK) esc$ = chr$(27) : up$ = chr$(_VK_UP) : down$ = chr$(_VK_DOWN) start$ = "Tapez votre code" filename$ = "BDDC.cry" sep$="|" ' records separator sepField$="¤" ' fields separator in a record graphicbox #w.gb, 0,0,0,0 'this graphicbox is used to capture key input LISTBOX #w.list, titre$(), [select], 5, 5, 480, 110 textbox #w.tb, 85,120,160,25 button #w.find, "Find", [findButton], UL, 10, 120, 60, 25 TEXTBOX #w.titre, 5, 150, 465, 28 TEXTEDITOR #w.edi, 5, 180, 480, 165 button #w.modif, "Mod", [modif], UL, 280, 120, 40, 25 button #w.add, "Add", [add],UL, 350,120,40,25 button #w.del, "Del", [del],UL, 420,120,40,25 button #w.val, "Validate", [valid], UL, 370, 355, 90, 25 statictext #w.total, ".. records.", 40, 360, 200, 25 open "Base de données cryptée"+space$(20)+date$ for window_nf as #w #w "trapclose [quit]" if fileExists(DefaultDir$, filename$) then okfile = 1 open filename$ for input as #i Source$ =input$( #i, lof( #i)) close #i cle = val(left$(Source$,12)) Source$ = mid$(Source$,13) else #w.edi " Création du code secret."+chr$(13)+chr$(13)+_ " 4 caractères minimum."+chr$(13)+chr$(13)+_ " Attention, vous ne pourrez pas le modifier..." end if #w "font courier_new 11 bold" #w.gb "setfocus" #w.gb "when characterInput [letter]" #w.tb start$ #w.list "singleclickselect" #w.val "!disable" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" [waitAgain] timer 400, [t] '!!! faster , as,60, will break [OK] button (will not fire at all) wait [t] 'redirect key presses to graphicbox #w.gb, "setfocus" wait [letter] timer 0 'set timer off so it didn't fire key$ = Inkey$ 'get the key pressed. It's single char for ordinary keys 'or (somerhing)(keyCode) for special keys select case case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = enter$ : goto [ok] case key$ = esc$ : goto [quit] case key$ = backspace$ b$ = left$(b$,len(b$)-1) 'strip last letter case else b$ = b$ + key$ 'add next letter end select fill$ = left$("***********************************************", len(b$)) ' Mask if len(b$)=0 then fill$ = start$ #w.tb fill$ 'put thet fill$ into textbox for us to see #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on WAIT [ok] ' when you tape "Enter" timer 0 if okfile then ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) randomize rdz r = rnd(1) if cle = val(left$(str$(r)+"000000000000",12)) then #w.tb "Code correct" #w.tb "!disable" #w.gb "when characterInput" goto [outCrypt] else b$ = "" #w.gb, "setfocus" ' incorrect code #w.tb "code incorrect" timer 400, [t] end if else if len(b$)>3 then ' secret code creation ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) #w.tb "Code créé" #w.tb "!disable" #w.gb "when characterInput" #w.edi "!cls" #w.add "!enable" end if end if WAIT [outCrypt] ' decryption of the file if okfile then Dec$ ="" randomize rdz for i =1 to len(Source$) f =int(256*rnd(1)) ch =f xor asc(mid$(Source$,i,1)) Dec$ =Dec$+chr$(ch) next i DO ' calc number of records totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) LOOP UNTIL record$="" REDIM array$(totalRec+80) REDIM titre$(totalRec+80) totalRec = 0 DO ' load dec$ into array$() etc... totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) if record$<>"" then array$(totalRec) = record$ titre$(totalRec) = word$(record$,1,sepField$) end if LOOP UNTIL record$="" totalRec = totalRec - 1 #w.total, totalRec;" records." #w.list "reload" #w.list "setfocus" current = 1 #w.list "selectindex ";current goto [select] end if WAIT '********************************* DATABASE Management ******************************** [add] timer 0 #w.titre "" #w.titre "!setfocus" #w.edi "!cls" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [modif] timer 0 modif = 1 #w.titre "!setfocus" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [valid] ' Add or Modif #w.titre "!contents? varTitre$" if varTitre$<>"" then if modif = 1 then Rec = current else totalRec = totalRec + 1 current = totalRec Rec = totalRec end if titre$(Rec) = varTitre$ #w.edi "!contents? varEdit$" if varEdit$ = "" then varEdit$ = "-" array$(Rec) = titre$(Rec) + sepField$ + varEdit$ ' record #w.list "reload" modif = 0 #w.total, totalRec;" records." #w.list "selectindex ";current #w.list "setfocus" else #w.add "!enable" end if #w.val "!disable" goto [select] wait [del] #w.modif "!disable" #w.add "!disable" #w.del "!disable" confirm "DELETE THIS RECORD ?"; answer$ if answer$ = "yes" then for nRec=current to totalRec array$(nRec) = array$(nRec+1) titre$(nRec) = word$(array$(nRec),1,sepField$) next if current = totalRec then current = current - 1 totalRec = totalRec - 1 #w.total totalRec;" records." #w.list "reload" #w.list "selectindex ";current #w.list "setfocus" end if goto [select] wait [select] ' show the current record in the listbox timer 0 #w.list "selectionindex? current" #w.titre titre$(current) #w.edi "!cls" #w.edi mid$(array$(current),len(titre$(current))+2) #w.list "selectindex ";current #w.list "setfocus" #w.add "!enable" tofind$ = "" #w.tb "search" #w.tb "!disable" #w.gb "when characterInput" if totalRec>0 then #w.modif "!enable" #w.del "!enable" #w.val "!disable" end if if totalRec>1 then #w.find "!enable" else #w.find "!disable" wait [findButton] timer 0 #w.tb "!enable" tofind$ = "" #w.tb tofind$ #w.gb "setfocus" #w.gb "when characterInput [find]" wait [find] ' Search into titre$() only. timer 0 key$ = Inkey$ select case case instr(enter$+esc$,key$)>0 : goto [waitAgain] case instr(up$+down$,right$(key$,1))>0 : goto [select] case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = backspace$ tofind$ = left$(tofind$,len(tofind$)-1) 'strip last letter case else tofind$ = tofind$ + key$ 'add next letter end select #w.tb tofind$ 'put into textbox for us to see if tofind$>"" then gosub [findData] #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on wait [findData] for rec = 1 to totalRec if instr(lower$(titre$(rec)),lower$(tofind$))>0 then current = rec #w.list "selectindex ";current #w.titre titre$(current) #w.edi "!cls" #w.edi mid$(array$(current),len(titre$(current))+2) exit for end if next return FUNCTION fileExists(path$, filename$) files path$, filename$, info$( fileExists = val(info$(0, 0)) END FUNCTION [quit] timer 0 if rdz>0 then randomize rdz r = rnd(1) Enc$ =left$( str$(r) +"000000000000", 12) if fileExists(DefaultDir$, "BDDC.bak") then kill "BDDC.bak" if fileExists(DefaultDir$, filename$) then NAME filename$ AS "BDDC.bak" if totalRec>0 then ' make Source$ with array$() Source$ = "" for nRec = 1 to totalRec Source$ = Source$ + array$(nRec) + sep$ next randomize rdz ' Encrytpion of data for i = 1 to len(Source$) f =int(256*rnd(1)) ch =asc(mid$(Source$,i,1)) Enc$ =Enc$+chr$(f xor ch) next i open filename$ for output as #o #o Enc$; close #o end if end if close #w end
Edité par cassiope01 Le 29/01/2013 à 13h26
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Alors, on reprend, a jeun, avec la nouvelle version:
J'entre le code,--> "enter"-->"Add" s'allume.
Deux possibiltés:
Soit j'entre le texte
Soit je clique "Add"
J'entre le texte, à la pogne ( il se mets en bas), je clique "Add"-->"Validate" s'allume, je clique.
Au dossier: rien
---------------------------
J'entre le code,--> "enter"-->"Add" s'allume. Je le clique
"Validate" s'allume .
Je rerentre le code,--> "enter"--> "Mod", "Add" et "Del" s'allument.
J'entre le texte à la pogne, je clique "Add".
Au dossier: rien
-------------------------
J'entre le code,--> "enter"--> et...Saperlipopette !
le code apparait cette fois en clair, au milieu et en surbrillance en haut, tandis que: "Mod", Add" et "Del" s'allument.
Pensant à une bavure, je ferme le prog et l'éditeur.
je réouvre l'éditeur et relance le prog.
Même manip--> même réaction.
------------------------
Je referme, réouvre, relance.
Mais cette fois j'entre un code différent.-->Code érroné
------------------------
Je referme, réouvre, relance.
j'entre le premier code--> retour à la case départ.
Mhmf !, pmhought !, bloub !, blop, glooop, glou..glou..glou. ......blip........tuuuuuuuuuuuuuuuuuuuuu
J'entre le code,--> "enter"-->"Add" s'allume.
Deux possibiltés:
Soit j'entre le texte
Soit je clique "Add"
J'entre le texte, à la pogne ( il se mets en bas), je clique "Add"-->"Validate" s'allume, je clique.
Au dossier: rien
---------------------------
J'entre le code,--> "enter"-->"Add" s'allume. Je le clique
"Validate" s'allume .
Je rerentre le code,--> "enter"--> "Mod", "Add" et "Del" s'allument.
J'entre le texte à la pogne, je clique "Add".
Au dossier: rien
-------------------------
J'entre le code,--> "enter"--> et...Saperlipopette !

le code apparait cette fois en clair, au milieu et en surbrillance en haut, tandis que: "Mod", Add" et "Del" s'allument.
Pensant à une bavure, je ferme le prog et l'éditeur.
je réouvre l'éditeur et relance le prog.
Même manip--> même réaction.
------------------------
Je referme, réouvre, relance.
Mais cette fois j'entre un code différent.-->Code érroné
------------------------
Je referme, réouvre, relance.
j'entre le premier code--> retour à la case départ.
Mhmf !, pmhought !, bloub !, blop, glooop, glou..glou..glou. ......blip........tuuuuuuuuuuuuuuuuuuuuu
____________________
Roro
Roro
____________________
Roro
Roro
Aaah! ben je suis pas le seul à gémir, et je ne suis pas mécontent de voir que TSH73 te fais la mème suggestion que moi, à savoir: fournir une description du déroulement des opérations.
Et il n'est pas réputé pour être mou du crâne...comme moi.
Et il n'est pas réputé pour être mou du crâne...comme moi.
____________________
Roro
Roro
Je n'ai rien compris à ton organigramme, mais en tout cas tu as fait un sacré boulot !!
Comme je l'ai dit à tsh73, ce petit programme était à l'origine pour mon usage perso, donc pas de soucis pour les modalités d'utilisation.
Il vaut mieux prendre la dernière version.
Donc :
- Première utilisation : taper le mot de passe dans le textbox central, puis Entrer.
Bouton Add est seul accessible.
Cliquer dessus.
Taper un texte. Ce sera le titre de la fiche, destiné à être listé dans le listbox du haut.
Puis éventuellement du texte dans la grande fenêtre du texteditor du bas.
Puis "Validate".
et voilà.
Edité par cassiope01 Le 29/01/2013 à 11h21
Comme je l'ai dit à tsh73, ce petit programme était à l'origine pour mon usage perso, donc pas de soucis pour les modalités d'utilisation.
Il vaut mieux prendre la dernière version.
Donc :
- Première utilisation : taper le mot de passe dans le textbox central, puis Entrer.
Bouton Add est seul accessible.
Cliquer dessus.
Taper un texte. Ce sera le titre de la fiche, destiné à être listé dans le listbox du haut.
Puis éventuellement du texte dans la grande fenêtre du texteditor du bas.
Puis "Validate".
et voilà.
Edité par cassiope01 Le 29/01/2013 à 11h21
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Salut Cassiope,
Tu sais , moi, pour cacher un texte, genre mot de passe; j'ai une méthode simple.
Je prends une image, j'ouvre le fichier avec un éditeur, je mets le texte dedans et basta.
Sûreté du procédé:
1)- il faut déjà imaginer ou savoir qu'un texte se trouve dans un fichier image .
2)- il faut trouver qu'elle image contient le texte.. Et Dieu sait que dans un pc, les images, c'est pas ce qui manque....Bonjour la recherche...
3)- Des fichiers images, il y en a de trés gros...Bonjour la roulette...
4)- si en plus tu prends un fichier avec des lignes longues, et que tu mets le texte en bout de ligne, la manip de recherche tourne au délire .
Les trucs les plus simples sont parfois les meilleurs... ...à+
PS: Je me doute bien que tu a fais cette base pour le fun...
Edité par Roland Le 30/01/2013 à 14h05
Tu sais , moi, pour cacher un texte, genre mot de passe; j'ai une méthode simple.
Je prends une image, j'ouvre le fichier avec un éditeur, je mets le texte dedans et basta.
Sûreté du procédé:
1)- il faut déjà imaginer ou savoir qu'un texte se trouve dans un fichier image .
2)- il faut trouver qu'elle image contient le texte.. Et Dieu sait que dans un pc, les images, c'est pas ce qui manque....Bonjour la recherche...
3)- Des fichiers images, il y en a de trés gros...Bonjour la roulette...
4)- si en plus tu prends un fichier avec des lignes longues, et que tu mets le texte en bout de ligne, la manip de recherche tourne au délire .
Les trucs les plus simples sont parfois les meilleurs... ...à+
PS: Je me doute bien que tu a fais cette base pour le fun...

Edité par Roland Le 30/01/2013 à 14h05
____________________
Roro
Roro
Salut,
Il ne va pas un peu vite Pendl, quand il dit que pour casser "9904", il ne faut que 9905 essais ?
Déjà, il faut être sûr que le "mot" ne comporte que des chiffres, et que quatre chiffres, sinon, on se retrouve avec une belle factorielle.
On manque de matheux sur ce forum....
Ensuite il parle de nanoseconde. ça c'est en théorie, parce qu'en pratique, il faut la mettre en place le "force brute"..
Si le prog est compilé=>.création d'une macro qui ouvre le prog, place les chiffres, teste, stocke le résultat, referme le prog.
Je veux bien que les proc soient rapides, mais la nano me semble un peu courte.
On manque de hackers sur ce forum.....
Il ne va pas un peu vite Pendl, quand il dit que pour casser "9904", il ne faut que 9905 essais ?
Déjà, il faut être sûr que le "mot" ne comporte que des chiffres, et que quatre chiffres, sinon, on se retrouve avec une belle factorielle.
On manque de matheux sur ce forum....
Ensuite il parle de nanoseconde. ça c'est en théorie, parce qu'en pratique, il faut la mettre en place le "force brute"..
Si le prog est compilé=>.création d'une macro qui ouvre le prog, place les chiffres, teste, stocke le résultat, referme le prog.
Je veux bien que les proc soient rapides, mais la nano me semble un peu courte.
On manque de hackers sur ce forum.....
____________________
Roro
Roro
Oui c'est vrai que Stefan a des raccourcis intellectuel quelques fois surprenant
C'est plutôt la réponse de tsh73 qui m'inquiète plus pour l'instant...
Je cherche.

C'est plutôt la réponse de tsh73 qui m'inquiète plus pour l'instant...
Je cherche.
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Le problème du cryptage, c'est que: à partir du moment ou l'on voit un prog qui ressembe à une base cryptée; ça donne envie de chercher à casser.
Le plus efficace, c'est de mettre la séquence de cryptage et la saisie, dans un prog qui a une autre fonction
Avec un accès à la fonction cachée, par une combinaison de clics à des endroits précis de la fenêtre.
Une fois que le prog est compilé. Tu peux toujours t'accrocher pour le casser.
Et toujours pareil, il y a le prérequis de savoir qu'un prog contient une fonction cachée.
Edité par Roland Le 31/01/2013 à 13h22
Le plus efficace, c'est de mettre la séquence de cryptage et la saisie, dans un prog qui a une autre fonction
Avec un accès à la fonction cachée, par une combinaison de clics à des endroits précis de la fenêtre.
Une fois que le prog est compilé. Tu peux toujours t'accrocher pour le casser.
Et toujours pareil, il y a le prérequis de savoir qu'un prog contient une fonction cachée.
Edité par Roland Le 31/01/2013 à 13h22
____________________
Roro
Roro
La simplicité d'utilisation Roland.
Je clique sur l'icône.
Je tape mon code, puis "Entrer".
J'accède à mes infos.
Point.
Pour le moment j'ai juste un soucis avec le résultat renvoyé par la fonction VAL(), et le fait que JB n'affiche QUE 9 décimales voire en format expo, si on ne lui fait pas faire autrement.
Edité par cassiope01 Le 31/01/2013 à 15h12
Je clique sur l'icône.
Je tape mon code, puis "Entrer".
J'accède à mes infos.
Point.
Pour le moment j'ai juste un soucis avec le résultat renvoyé par la fonction VAL(), et le fait que JB n'affiche QUE 9 décimales voire en format expo, si on ne lui fait pas faire autrement.
Edité par cassiope01 Le 31/01/2013 à 15h12
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Dernière version valide et fiable :
Code VB :
Edité par cassiope01 Le 12/02/2013 à 11h52
Code VB :
' By cassiope01 on January 2013 ' based on : ' -PASSWORD WITH A MASK ' original by by laz on April 1, 2002 ' modified by tsh73 July 2011 ' -XORcoding by tenochtitlanuk (John F) nomainwin WindowWidth = 500 : WindowHeight= 440 UpperLeftX = int((DisplayWidth-WindowWidth)/2) 'center the window UpperLeftY = int((DisplayHeight-WindowHeight)/4) mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc" ' mois$ = "January February March April May June July August September October November December" 'US format today$ = date$("mm/dd/yyyy") j = date$(today$) jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1) ' jsem$ = word$("Tue Wed Thu x Fri Sat x Sun Mon",int((j/7-int(j/7))*10)+1) 'US format date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+left$(time$(),5)'right$(today$,4) ' date$ = jsem$+" "+word$(mois$, val(today$))+", "+mid$(today$,1,2)+" "+left$(time$(),5)'right$(today$,4) ' US format DIM info$(1,1), titre$(11), array$(11) global nbrnd enter$ = chr$(_VK_RETURN) : backspace$ = chr$(_VK_BACK) esc$ = chr$(27) : up$ = chr$(_VK_UP) : down$ = chr$(_VK_DOWN) nbrnd = 5 : start$ = "Tapez votre code" filename$ = "BDDC.cry" sep$="|" ' records separator sepField$="¤" ' fields separator in a record graphicbox #w.gb, 0,0,0,0 'this graphicbox is used to capture key input LISTBOX #w.list, titre$(), [select], 5, 5, 480, 110 textbox #w.tb, 85,120,160,25 button #w.find, "Find", [findButton], UL, 10, 120, 60, 25 TEXTBOX #w.titre, 5, 150, 465, 28 TEXTEDITOR #w.edi, 5, 180, 480, 165 button #w.modif, "Mod", [modif], UL, 280, 120, 40, 25 button #w.add, "Add", [add],UL, 350,120,40,25 button #w.del, "Del", [del],UL, 420,120,40,25 button #w.val, "Validate", [valid], UL, 370, 355, 90, 25 statictext #w.total, ".. records.", 40, 360, 200, 25 open "Base de données cryptée"+space$(20)+date$ for window_nf as #w #w "trapclose [quit]" if fileExists(DefaultDir$, filename$) then okfile = 1 open filename$ for input as #i Source$ =input$( #i, lof( #i)) close #i cle$ = left$(Source$,18) Source$ = mid$(Source$,19) else #w.edi chr$(13)+" Création du code secret."+chr$(13)+chr$(13)+_ " 4 caractères minimum, 6 maximum."+chr$(13)+chr$(13)+_ " Attention, vous ne pourrez pas le modifier..." end if #w "font courier_new 11 bold" #w.gb "setfocus" #w.gb "when characterInput [letter]" #w.tb start$ #w.list "singleclickselect" #w.val "!disable" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" [waitAgain] timer 400, [t] '!!! faster , as,60, will break [OK] button (will not fire at all) wait [t] 'redirect key presses to graphicbox #w.gb, "setfocus" wait [letter] timer 0 'set timer off so it didn't fire key$ = Inkey$ 'get the key pressed. It's single char for ordinary keys 'or (somerhing)(keyCode) for special keys select case case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = enter$ : goto [ok] case key$ = esc$ : goto [quit] case key$ = backspace$ b$ = left$(b$,len(b$)-1) 'strip last letter case else b$ = b$ + key$ 'add next letter end select fill$ = left$("***********************************************", len(b$)) ' Mask if len(b$)=0 then fill$ = start$ #w.tb fill$ 'put thet fill$ into textbox for us to see #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on WAIT [ok] ' when you tape "Enter" timer 0 if okfile then ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) r = cle(rdz) if using("#.################",r) = cle$ then badcode = 0 #w.tb "Code correct" #w.tb "!disable" #w.gb "when characterInput" goto [outCrypt] else badcode = badcode + 1 b$ = "" #w.gb, "setfocus" ' incorrect code #w.tb "code incorrect" timer 400, [t] end if else if len(b$)>3 then ' secret code creation badcode = 0 ascB$ = "" for c=1 to len(b$) : ascB$ = ascB$ + str$(asc(mid$(b$,c,1))) : next rdz = val("0."+ascB$) #w.tb "Code créé" #w.tb "!disable" #w.gb "when characterInput" #w.edi "!cls" #w.add "!enable" end if end if WAIT [outCrypt] ' decryption of the file if okfile then Dec$ ="" randomize rdz for i =1 to len(Source$) f =int(256*rnd(1)) ch =f xor asc(mid$(Source$,i,1)) Dec$ =Dec$+chr$(ch) next i DO ' calc number of records totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) LOOP UNTIL record$="" REDIM array$(totalRec+80) REDIM titre$(totalRec+80) totalRec = 0 DO ' load dec$ into array$() etc... totalRec = totalRec + 1 record$ = word$(Dec$,totalRec,sep$) if record$<>"" then array$(totalRec) = record$ titre$(totalRec) = word$(record$,1,sepField$) end if LOOP UNTIL record$="" totalRec = totalRec - 1 #w.total, totalRec;" records." #w.list "reload" #w.list "setfocus" current = 1 #w.list "selectindex ";current goto [select] end if WAIT '********************************* DATABASE Management ******************************** [add] timer 0 #w.titre "" #w.titre "!setfocus" #w.edi "!cls" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [modif] timer 0 modif = 1 #w.titre "!setfocus" #w.modif "!disable" #w.add "!disable" #w.del "!disable" #w.find "!disable" #w.val "!enable" wait [valid] ' Add or Modif #w.titre "!contents? varTitre$" if varTitre$<>"" then if modif = 1 then Rec = current else totalRec = totalRec + 1 current = totalRec Rec = totalRec end if titre$(Rec) = varTitre$ #w.edi "!contents? varEdit$" if varEdit$ = "" then varEdit$ = "-" array$(Rec) = titre$(Rec) + sepField$ + varEdit$ ' record #w.list "reload" modif = 0 #w.total, totalRec;" records." #w.list "selectindex ";current #w.list "setfocus" else #w.add "!enable" end if #w.val "!disable" goto [select] wait [del] #w.modif "!disable" #w.add "!disable" #w.del "!disable" confirm "DELETE THIS RECORD ?"; answer$ if answer$ = "yes" then for nRec=current to totalRec array$(nRec) = array$(nRec+1) titre$(nRec) = word$(array$(nRec),1,sepField$) next if current = totalRec then current = current - 1 totalRec = totalRec - 1 #w.total totalRec;" records." #w.list "reload" #w.list "selectindex ";current #w.list "setfocus" end if goto [select] wait [select] ' show the current record in the listbox timer 0 #w.list "selectionindex? current" #w.titre titre$(current) #w.edi "!cls" #w.edi mid$(array$(current),len(titre$(current))+2) #w.list "selectindex ";current #w.list "setfocus" #w.add "!enable" tofind$ = "" #w.tb "search" #w.tb "!disable" #w.gb "when characterInput" if totalRec>0 then #w.modif "!enable" #w.del "!enable" #w.val "!disable" end if if totalRec>1 then #w.find "!enable" else #w.find "!disable" wait [findButton] timer 0 #w.tb "!enable" tofind$ = "" #w.tb tofind$ #w.gb "setfocus" #w.gb "when characterInput [find]" wait [find] ' Search into titre$() only. timer 0 key$ = Inkey$ select case case instr(enter$+esc$,key$)>0 : goto [waitAgain] case instr(up$+down$,right$(key$,1))>0 : goto [select] case len(key$)>1 : goto [waitAgain] 'ignore all special (two-character) sequences case key$ = backspace$ tofind$ = left$(tofind$,len(tofind$)-1) 'strip last letter case else tofind$ = tofind$ + key$ 'add next letter end select #w.tb tofind$ 'put into textbox for us to see if tofind$>"" then gosub [findData] #w.gb "setfocus" 'set focus to graphic box, so next key presses was intersepted by it goto [waitAgain] 'set timer back on wait [findData] for rec = 1 to totalRec if instr(lower$(titre$(rec)),lower$(tofind$))>0 then current = rec #w.list "selectindex ";current #w.titre titre$(current) #w.edi "!cls" #w.edi mid$(array$(current),len(titre$(current))+2) exit for end if next return FUNCTION cle(rd) randomize rd : for f = 1 to nbrnd :cle = rnd(1) :next END FUNCTION FUNCTION fileExists(path$, filename$) files path$, filename$, info$( fileExists = val(info$(0, 0)) END FUNCTION [quit] timer 0 if rdz>0 and badcode = 0 then r = cle(rdz) Enc$ = using("#.################",r) if fileExists(DefaultDir$, "BDDC.bak") then kill "BDDC.bak" if fileExists(DefaultDir$, filename$) then NAME filename$ AS "BDDC.bak" if totalRec>0 then ' make Source$ with array$() Source$ = "" for nRec = 1 to totalRec Source$ = Source$ + array$(nRec) + sep$ next randomize rdz ' Encrytpion of data for i = 1 to len(Source$) f =int(256*rnd(1)) ch =asc(mid$(Source$,i,1)) Enc$ =Enc$+chr$(f xor ch) next i open filename$ for output as #o #o Enc$; close #o end if end if close #w end
Edité par cassiope01 Le 12/02/2013 à 11h52
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Pas mal :-D
PS : bravo Roland pour ta monté au grade de libertynaute incollable :-))
PS : bravo Roland pour ta monté au grade de libertynaute incollable :-))
____________________
Si le meilleurs langage de programmation existe, alors le Just Basic est loin devant.
Ne me tappez pas dessus ! Je débute
Si le meilleurs langage de programmation existe, alors le Just Basic est loin devant.
Ne me tappez pas dessus ! Je débute

Web
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie