Crea tu propio Generador de Contraseñas Seguras con VBNet en solo 3 Pasos

Iniciado por 79137913, Octubre 15, 2019, 10:50:38 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

HOLA!!!

Hoy veremos como crear un Generador de Contraseñas Seguras con No tienes permitido ver enlaces. Registrate o Entra a tu cuenta!

1)Primero crearemos el proyecto


2)Luego en el Form1 Realizar la siguente interfaz (respetando los nombres de los controles):

y luego poner las propiedades .Text de la siguiente forma:


3)Vamos a la seccion de codigo del formulario y pegamos lo siguiente:
Código: vbnet

'By 79137913 for http://underc0de.org
Module ControlArray
    'creamos un Array de controles con los botones asi es mas facil manejarlos.
    Public Chars() As Button = {Form1.Char1, Form1.Char2, Form1.Char3, Form1.Char4, Form1.Char5, Form1.Char6, Form1.Char7, Form1.Char8, Form1.Char9, Form1.Char10, Form1.Char11, Form1.Char12, Form1.Char13, Form1.Char14, Form1.Char15, Form1.Char16}
End Module
Public Class Form1
    Dim Sym() As String = Split("/ \ ! · $ % & / ( ) = ' "" ¡ ¿ ? < > . , : ; - _ * +") 'Simbolos
    Private Function PalabrasPronunciables7913(Letras As Long) As String
        Dim Aux As Long 'Caracteres restantes
        Dim Act As Long 'Variable para hacer aleatorio el select
        Dim Ret As String = "" 'Variable de retorno
        Dim Uno() As String : Dim Dos() As String 'Variables de almacenamiento de silabas
        Dim Tre() As String : Dim Tr2() As String : Dim Tr3() As String 'Variables de almacenamiento de silabas
        Dim Cua() As String : Dim Cu2() As String : Dim Cin() As String 'Variables de almacenamiento de silabas
        Randomize() 'Utilizado para que las combinaciones siempre sean diferentes
        Uno = Split("a e i o u")
        Dos = Split("ab ad ak al am an ar as az ba be bi bo bs bu da de di do du ed ef ek el em en er es fa fe fi fo fu ga ge gi go gu ia id ie im in ir is iz ja je ji jo ju ka que ki ko ku la le li lo lu ma me mi mo mu na ne ni nn no nu ña ñe ñi ño ñu ob oi ok ol on op or os pa pe pi po pu qa ra re ri ro ru sa se si so ss su ta te ti to tu ud ue ui uk ul um un ur us xa xe xi xo xu ya ye yi yo yu za ze zi zo")
        Tre = Split("abs bad bal ban bar bas bea bed bel ben ber bes bia bid bie bik bil bin bir bis bla ble bli blo boa boi bol bom bor bos boz bra bre bri bro bru bue bui bul bur bus cha che chi cho chu dad dak dam dan dar das dea ded del den der des dez dia did die dir dis doa doi don dop dor dos dra dre dri dro dru dua due duk dum duo dur duz eks fad fak fal fan far fas fek fen fer fes fia fid fie fil fin fir fis fla flo flu fon for fra fre fri fue fui fun gad gal gan gar gas gem gen ger ges gia gid gie gil gir gis gla gle glo gol gon gor gos gra gre gri gro gru gua gue güi gun guo gus ian ias ier ils ins jad jak jal jan jar jas jaz jed jem jen jer jes jia jid jie jir jis jon jor jos jue")
        Tr2 = Split("jun jus juz kad kal kam kan kar kas kea kel ken kes kez kia kie kin kis kla kle kli klo klu koe kol kom kon kor kos kot kra kre kri kro kru kua kue kui kul kum kun kuo kur lad lan lar las lea led lek len ler les lez lia lie lim lin lir lis lla lle lli llo lom lon lor los lua lud lue lum lun lus lus mad mak mal man mar mas mea med mek men mer mes mez mia mid mie mil min mir mis miz mon mor mos mue mui mul mun nad nal nan nar nas naz nea ned nen ner nes net nez nia nid nie nin nir nis nom nor nos noz nua nue nui nun nuo ñad ñak ñan ñar ñas ñed ñen ñes ñia ñir ñis ñol ñor ños oia oid oim oir ois pad pak pal pan par pas paz pea pek pel pen per pes pez pia pie pin pis pla ple")
        Tr3 = Split("pli plo pon por pos pra pre pri pro pru pue pul pun pur pus rad rak ral ran rar ras raz rea red rek ren res rez ria rid rie rir ris roa roe ron ros rra rre rri rro rru run sad sak sal san sar sas saz sea sed sek sem sen sep ser ses sia sie sig sil sim sin sir sis soi sol son sor sos sua sub sul sun sur sus tad tal tam tan tar tas tea ted tek tem ten ter tes tia tid tie tin tir tis toi ton tor tos tra tre tri tro tru tua tud tue tui tum tun tuo tur tus tut ueb uel ues uia uid uin uir uis xak xan xar xas xed xen xer xes xia xid xie xir xis xue xun yad yan yar yas yek yen yer yes yor yos yun zad zad zam zan zar zas zea zed zen zep zer zes zia zid zie zin zir zis zit zon zos")
        Cua = Split("bean beas biad bian biar bias biem bien bier bies blad blan blar blas blen bles blos brad bran brar bras bren bres bria brid brie bril brin brir bris bron bros buel buen buia buid buir buis chad chan char chas chen ches chis chos deas diad dial dian diar dias dien dies diez doem doin drad dran drar dras dren dres dria drid dron duad duan duar duas duen duer dues fiad fian fiar fias fien fies flek flik flui fran fras fren fres fria frie frir fron fuel fuen fuer fuis giad giar gias gien gies glad glan glar glas glen gles grad gran grar gras gren gres gris gros guad gual guan guar guas guen gues guez jiad jian jiar jias jien jies joan juez kear kers kiad kian kiar kief kien kier kies king klad klan klar klas klea klen kles klos klui koin kons krea kred kren krer kres krez kria krie kruz kuad kual kuam kuan kuar kuas kuel kuen kuer kues kuns lead")
        Cu2 = Split("lean lear leas lian liar lias lien lies llad llan llar llas llen lles llon llos luar mean mear meas mian mias miem mien mier muer mues neas nian nias nien nuad nuan nuar nuas nuen nues nuia nuid nuir nuis nuks ñias oian oias pers piad pian piar pias pien pier pies plan plas plea plen ples plid plie plir plis plus prad prak pran prar pras pren prer pres prie prin proe proi prok prue puer pues reas riad rial rian riar rias rien ries rins rrad rran rrar rras rrea rred rrek rren rrer rres rria rrid rrie rrin rrir rris rrom rrue sead sean sear seas sian sias siem sien soft sual tead tean tear teas teks ters tial tian tias tiem tien tlan trad tral tram tran trar tras tren tres trol tros tros trui truk tuad tual tuan tuar tuas tuen tuer tues tuia tuid tuir tuis uian uias xian xias xien zead zean zear zeas ziad zial zian ziar zias ziem zien zier zies")
        Cin = Split("brean brian brias buian buias drian drias fluen fluia fluid fluir fluis frian frias frien fries kluia kluid kluir kluis kread krean krear kreas kriad krian kriar krias krien kries nuian nuias plead plean plear pleas plian plias plien rreak rreal rrian rriar rrias rrien rries trans truia truid truir truis tuian tuias fluian fluias kluian kluias truian truias")
        Do
            Aux = Letras - Ret.Length
            If Aux <= 0 Then Return Ret
            If Aux > 5 Then
                Act = Int(Rnd() * 5) + 1
            Else
                Act = Int(Rnd() * Aux) + 1
            End If
            Select Case Act
                Case 1
                    Ret = Ret & Uno(Int(Rnd() * 5))
                Case 2
                    Ret = Ret & Dos(Int(Rnd() * 130))
                Case 3
                    Select Case Int(Rnd() * 3)
                        Case 0
                            Ret = Ret & Tre(Int(Rnd() * 170))
                        Case 1
                            Ret = Ret & Tr2(Int(Rnd() * 170))
                        Case 2
                            Ret = Ret & Tr3(Int(Rnd() * 170))
                    End Select
                Case 4
                    Select Case Int(Rnd() * 2)
                        Case 0
                            Ret = Ret & Cua(Int(Rnd() * 171))
                        Case 1
                            Ret = Ret & Cu2(Int(Rnd() * 171))
                    End Select
                Case 5
                    Ret = Ret & Cin(Int(Rnd() * 59))
            End Select
        Loop
    End Function
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each bt As Button In Me.Controls.OfType(Of Button)()
            'Poner los event handlers de cada boton en el mismo sub.
            AddHandler bt.Click, AddressOf ButtonChar_Click
        Next
        Password.Text = MakePass()
    End Sub
    Private Sub ButtonChar_Click(sender As Object, e As EventArgs)
        Dim bt = DirectCast(sender, Button)
        'Cambiamos el Texto del boton
        Select Case bt.Text
            Case "A"
                bt.Text = "a"
            Case "a"
                bt.Text = "Aa"
            Case "Aa"
                bt.Text = "0"
            Case "0"
                bt.Text = "$"
            Case "$"
                bt.Text = "X"
            Case "X"
                bt.Text = "A"
        End Select
        Password.Text = MakePass() 'Creamos una contraseña
    End Sub
    Private Function MakePass() As String
        Dim AuxString As String = ""
        Dim AuxPass As String = "xxxxxxxxxxxxxxxx"
        Dim FlagProcesar As Boolean = False
        For x = 0 To 15
            'Armar Pass
            Select Case Chars(x).Text
                Case "A"
                    AuxString = AuxString & Chars(x).Text
                Case "a"
                    AuxString = AuxString & Chars(x).Text
                Case "Aa"
                    'Elegir aleatoriamente mayuscula o minuscula
                    If Int(Rnd() * 2) Then
                        AuxString = AuxString & "A"
                    Else
                        AuxString = AuxString & "a"
                    End If
                Case "0"
                    'Elegimos aleatoriamente el numero
                    Mid(AuxPass, x + 1, 1) = Int(Rnd() * 10)
                    FlagProcesar = True
                Case "$"
                    'Elegimos aleatoriamente el simbolo
                    Mid(AuxPass, x + 1, 1) = Sym(Int(Rnd() * 26))
                    FlagProcesar = True
                Case "X"
                    FlagProcesar = True
            End Select
            If FlagProcesar Then
                Mid(AuxPass, x + 1 - AuxString.Length, AuxString.Length) = PalabrasPronunciables7913(AuxString.Length)
                For y = 1 To AuxPass.Length
                    If Mid(AuxString, y, 1) = "A" Then
                        Mid(AuxPass, x - AuxString.Length + y, 1) = UCase(Mid(AuxPass, x - AuxString.Length + y, 1))
                    End If
                Next
                AuxString = ""
                FlagProcesar = False
                If Chars(x).Text = "X" Then
                    AuxPass = Mid(AuxPass, 1, x)
                    Exit For
                End If
            End If
        Next
        Return AuxPass
    End Function
End Class


Cuando ya colocamos el codigo solo queda iniciar (apretar F5) y empezar a usarlo solo clickeamos los botones para elegir el patron de texto que queremos para nuestra contraseña y la magia comienza:


Descargar Source: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Hecho y redactado por 79137913

Agradecimientos @Antrax

Para los curiosos:
En esta edicion tenemos 2 cosas muy interesantes, la primera, como crear arrays de controles y como unir los handlers a un solo sub y la segunda es la funcion PalabrasPronunciables7913 que te permite obtener palabras pronunciables de cualquier largo, puede ser muy util si son creativos.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver enlaces. Registrate o Entra a tu cuenta