Forum Liberty Basic France

Le 27/01/2013 à 14h54

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
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 :
' 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."

Web    
Le 27/01/2013 à 15h29

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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 !
____________________
Roro

   
Le 27/01/2013 à 15h52

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
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:
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."

Web    
Le 27/01/2013 à 16h30

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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"
____________________
Roro

   
Le 27/01/2013 à 16h34

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Hey, mais j'ai entré le texte avec la fonction "édit" du menu pardine
avec un bon Copié/Collé des familles.


Bien sûr. :top
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 :siffle



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."

Web    
Le 27/01/2013 à 16h54

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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 faire Béta Testeur Testeur Bebête.



Edité par Roland Le 27/01/2013 à 16h57
____________________
Roro

   
Le 27/01/2013 à 17h35

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Bon, j'entre le code, je fais "enter", "Add" s'allume, je le clique, "Validate" s'allume, je le clique: rien.
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!

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 faire Béta Testeur Testeur Bebête.

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."

Web    
Le 27/01/2013 à 18h20

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Citation:
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

   
Le 28/01/2013 à 11h52

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
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 :
' 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."

Web    
Le 28/01/2013 à 15h38

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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 ! :heink
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

   
Le 28/01/2013 à 16h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Regarde voir l'organigramme de ton code, et dit si c'est cohérent.





Edité par Roland Le 02/02/2013 à 01h43
____________________
Roro

   
Le 28/01/2013 à 18h12

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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.
____________________
Roro

   
Le 29/01/2013 à 11h20

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
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
____________________
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 30/01/2013 à 13h59

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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
____________________
Roro

   
Le 31/01/2013 à 09h39

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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.....
____________________
Roro

   
Le 31/01/2013 à 12h57

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oui c'est vrai que Stefan a des raccourcis intellectuel quelques fois surprenant :siffle
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."

Web    
Le 31/01/2013 à 13h19

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
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
____________________
Roro

   
Le 31/01/2013 à 15h11

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
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
____________________
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 01/02/2013 à 19h09

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Dernière version valide et fiable :

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."

Web    
Le 11/02/2013 à 21h17

Libertynaute Avancé

Groupe: Membre

Inscrit le: 08/06/2012
Messages: 270
Pas mal :-D

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 :D

Web    

 |  |

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