Título: Personal Algorythm + Source Publicado por: illuminat3d en 5 Diciembre 2009, 18:14 pm Bueno este proyecto lo tenía parado, un dia se me ocurrió la idea de hacer un programa que cree un modulo para proyectos de VB6 (Visual Basic 6) con la función de cifrar y descifrar datos, lo que hice fue un programa con la opción de hacer un algoritmo personal, sustituyendo carácteres por otros.
(http://3.bp.blogspot.com/_xxF89K0kLKg/SxqRExx3o6I/AAAAAAAAAFY/yUH4SMwkE30/s320/pAlgorythm.PNG) Forma de uso : Para llamar a la función de cifrar 'cifrado = Encrypt(Datos, Contraseña)' Para llamar a la función de descifrar 'descifrado = Decrypt(Datos, Contraseña)' Descargar Personal Algorythm (Binario) (http://www.4shared.com/file/166152489/799886c0/Personal_Algorythm__Binario_.html) Descargar Personal Algorythm (Source) (http://www.4shared.com/file/166152740/aeb7cf31/Personal_Algorythm__Source_.html) Contraseña de los ficheros : SCB Lab's Saludos! :D Título: Re: Personal Algorythm + Source Publicado por: BlackZeroX en 5 Diciembre 2009, 22:04 pm Sin animos de ofender pero deberias ponerle "Encryptación Personal" por que de "Algoritmo personal" no tiene nada, con referencia a las definiciones.
Aquí un error logico Código
Código
Dulces Lunas Título: Re: Personal Algorythm + Source Publicado por: illuminat3d en 5 Diciembre 2009, 22:17 pm Código
Que podría pasar?, yo lo veo normal. Gracias por tomarte el tiempo de ver el source ;-) Título: Re: Personal Algorythm + Source Publicado por: BlackZeroX en 5 Diciembre 2009, 23:17 pm es logico que el primer elemento es identico alprimer elemento y dentro de tus bucles hay una comparación para no hacer nada si el elemento a es igual a B es decir 1=1 no hacer nada y es lo mismo en lo ultimo
En si hay dos bucles Muertos Título: Re: Personal Algorythm + Source Publicado por: cobein en 6 Diciembre 2009, 04:37 am Primero que nada, esto no es para ofender ni nada por el estilo pero me parecio constructivo el hecho de mencionar o resaltar algunas cosas de este source.
Me tome la livertad de descargar esto para ver de que se trataba y el porque de los comentarios y decidi hacer este mini review porque hay muchas cosas que no tienen sentido. Primero, para el que se pregunta que es esto? es simplemente un "Substitution cipher" o quiere serlo. Vamos a destripar el source =D Código: For x = 0 To 75 En la funcion principal encontramos esto que es simplemente un check para ver si algun textbox tiene como texto comillas. Esto no tiene absolutamente sentido por que se puede validar dinamicamente con el evento Validate del textbox. Código: Private Sub txtChr_Validate(Index As Integer, Cancel As Boolean) Código: For a = 0 To 75 Aca esta el de la discoridia!!! Bien, este es uno de los que menos sentido tiene, son dos loops anidados que tienen como objetivo verificar si algun textbox tiene un texto con mas de un caracter y si hay dos textos repetidos. Primero que nada, para que verificar si algun textbox tiene mas de un caracter? simplemente se pone la propiedad MaxLength = 1 y listo. Una aclaracion aca para ░▒▓BlackZeroҖ▓▒░ en estos dos loops anidados se esta comparando una matriz con sigo misma por ende se van a producir tantas coliciones como objetos haya, en este caso 76. Vamos con los elementos duplicados, mi pregunta es, vale la pena pasar por el proceso de "validacion" una y otra vez? cuando todo esto se puede hacer on the fly? Por ejemplo podriamos usar una coleccion para ver si el elemento existe y validarlo con el evento validate, algo asi. Código:
Este es para verificar si se produjo un error durante la validacion..... Código: For a = 0 To 75 totalmente innecesario, se puede tener un flag en la validacion y evitar esto, no hay necesidad de utilizar un loop en lo absoluto. Código: With CD Este...bueno lo podriamos perdonar pero esta mal implementado tambien. Al principio de la funcion se resetea el filename " CD.FileName = """ luego se abre el dialogo y se valida con esto "If CD.FileName <> "" Then" ... NO, el common dialog tiene una propiedad que se llama CancelError y esta ahi para poder determinar si se cancelo o no. Bien estamos llegando al cuore de la funcion, el generador de algoritmos... no lo pego completo poque no me entra ni en 3 paginas. Código: Open CD.FileName For Output As #File Que demonios es esto? simplemente un template de la funcion principal que se parcha con los nuevos valores. Mas alla de que todo esto se podria reducir a unas 5 lineas de codigo... vamos a lo interesante Esto es simplemente substitucion de caracteres pero hay algo llamativo en como esta implementado. Vamos a sacar un pedazo del algoritmo generado y a ver que pasa. If InStr(Data, "0") Then Data = Replace(Data, "0", "1") If InStr(Data, "1") Then Data = Replace(Data, "1", "T") Este es mi texto original: 01 Vamos a "encriptarlo" .. Primer paso reeemplazamos los 0s con 1s nos queda algo asi 11 segundo paso reeemplazamos los 1s con Ts Resultado: TT Como tarea para el hogar les dejo intentar recobrar el texto original If InStr(Data, "1") Then Data = Replace(Data, "1", "0") If InStr(Data, "T") Then Data = Replace(Data, "T", "1") PD: si alguno se esta preguntando que funcion cumple el password en todo esto... simplemente mera decoracion. Título: Re: Personal Algorythm + Source Publicado por: BlackZeroX en 6 Diciembre 2009, 06:14 am Una aclaracion aca para ░▒▓BlackZeroҖ▓▒░ en estos dos loops anidados se esta comparando una matriz con sigo misma por ende se van a producir tantas coliciones como objetos haya, en este caso 76. lo que decia es que no tiene caso comparar el elemento de la matriz 0 con el elemento de la matrx misma es decir no tiene caso realmente y es lo mismo con el ultimo en si si hay un "if then" que hace muerto un bucle no hay caso de iniciar ambos en 0 yq que hay un "if then" que no dejara hacer nada en lo absoluto y es lo mismo al termino (75) P.D.: Se que hay 76 elementos... se que cuentan desde LBound() hasta Ubound() es decir 0-75 = 76 elementos... ¬¬# y me da peresa ver ese codigo la verdad xP por tanto Print #File, " Dulces Lunas!¡. Título: Re: Personal Algorythm + Source Publicado por: cobein en 6 Diciembre 2009, 07:18 am lo que decia es que no tiene caso comparar el elemento de la matriz 0 con el elemento de la matrx misma es decir no tiene caso realmente y es lo mismo con el ultimo en si si hay un "if then" que hace muerto un bucle no hay caso de iniciar ambos en 0 yq que hay un "if then" que no dejara hacer nada en lo absoluto y es lo mismo al termino (75) P.D.: Se que hay 76 elementos... se que cuentan desde LBound() hasta Ubound() es decir 0-75 = 76 elementos... ¬¬# y me da peresa ver ese codigo la verdad xP por tanto Print #File, " Dulces Lunas!¡. No me exprese correctamente parece, lo que quiero decir es que no son 2 coliciones las que hay sino 76, cada elemento es comparado con sigo mismo una vez, asi como el primero y el ultimo que mencionas, todos los demas en el medio tambien. Título: Re: Personal Algorythm + Source Publicado por: BlackZeroX en 6 Diciembre 2009, 08:19 am solo para aclarar a lo que yo decia:
La lista de elementos no excluidos son si y solo si son Diferentes, tomando en considereción una misma matrix de de LBound = 0 a Ubound=2) donde Se excluyen los elementos de la misma indexación Es decir: 0 , 0 ' Excluido 0 , 1 0 , 2 1 , 0 1 , 1 ' Excluido 1 , 2 2 , 0 2 , 1 2 , 2 ' Excluido por la razon anterior Desde i = 0 to 2 - 1 Desde a = 1 to 2 Si a direfente de i entonces Imprimir a , i Los resultados serían '//- 0 , 0 ' Nunca se Analisa ya que aun que analisara se excluiria 0 , 1 0 , 2 //-- 1 , 0 ' Ya fue analisado //-- 1 , 1 ' Se exluye 1 , 2 //-- 2 , 0 ' Ya fue analisado //-- 2 , 1 ' Ya fue analisado //-- 2 , 2 ' Nunca se Analisa ya que aun que analisara se excluiria El resultado Neto seria (las indexaciones posibles en una comparación): 0 , 1 0 , 2 1 , 2 Simples 3 Comparacióne Como Nota curiosa para aquel lector la cantidad de resultados en una comparación sin repetir es dada por una ecuación matemática Por ello defiendo mi punto de vista!¡. Dulces Lunas!¡ Título: Re: Personal Algorythm + Source Publicado por: cobein en 6 Diciembre 2009, 09:53 am Entiendo lo que planteas, pero la solucion no es correcta. Tendrias que hacer algo asi:
For a = 0 To 4 For x = a + 1 To 4 Ahi no hay no se excluyen ni repiten comparaciones. Título: Re: Personal Algorythm + Source Publicado por: BlackZeroX en 6 Diciembre 2009, 09:56 am Entiendo lo que planteas, pero la solucion no es correcta. Tendrias que hacer algo asi: For a = 0 To 4 For x = a + 1 To 4 Ahi no hay no se excluyen ni repiten comparaciones. La forma Correcta es asi solo para evitar el ultimo bucle madre que no serviria de nada. For a = 0 To 4 - 1 For x = a + 1 To 4 Pero igual ya se entendio. Dulces Lunas!¡. Título: Re: Personal Algorythm + Source Publicado por: cobein en 6 Diciembre 2009, 09:57 am xD asi si es divertido
Título: Re: Personal Algorythm + Source Publicado por: illuminat3d en 6 Diciembre 2009, 12:57 pm JAJAJA Me arrastraron por los suelos :-X
Un poco más y vienen a mi casa me pegan dos bofetadas y me dicen esto está maaall... (es broma xD) Esto me aclarará varias cosas. Saludos! Título: Re: Personal Algorythm + Source Publicado por: raul338 en 6 Diciembre 2009, 14:40 pm Vaya, leyendo discuciones entre 2
No sabia que se podia hacer un for con valor inicial que contenta una variable (for i = a + 1) En cuanto a los bucles, todavia no entendi el problema (igual ya vere en la "practica" ;)) Asi que bueno, gracias por estas "Lecciones" maravillosas ;-) ;-) Título: Re: Personal Algorythm + Source Publicado por: seba123neo en 8 Diciembre 2009, 17:27 pm Primero que nada, esto no es para ofender ni nada por el estilo pero me parecio constructivo el hecho de mencionar o resaltar algunas cosas de este source. Me tome la livertad de descargar esto para ver de que se trataba y el porque de los comentarios y decidi hacer este mini review porque hay muchas cosas que no tienen sentido. Primero, para el que se pregunta que es esto? es simplemente un "Substitution cipher" o quiere serlo. Vamos a destripar el source =D Código: For x = 0 To 75 En la funcion principal encontramos esto que es simplemente un check para ver si algun textbox tiene como texto comillas. Esto no tiene absolutamente sentido por que se puede validar dinamicamente con el evento Validate del textbox. Código: Private Sub txtChr_Validate(Index As Integer, Cancel As Boolean) Código: For a = 0 To 75 Aca esta el de la discoridia!!! Bien, este es uno de los que menos sentido tiene, son dos loops anidados que tienen como objetivo verificar si algun textbox tiene un texto con mas de un caracter y si hay dos textos repetidos. Primero que nada, para que verificar si algun textbox tiene mas de un caracter? simplemente se pone la propiedad MaxLength = 1 y listo. Una aclaracion aca para ░▒▓BlackZeroҖ▓▒░ en estos dos loops anidados se esta comparando una matriz con sigo misma por ende se van a producir tantas coliciones como objetos haya, en este caso 76. Vamos con los elementos duplicados, mi pregunta es, vale la pena pasar por el proceso de "validacion" una y otra vez? cuando todo esto se puede hacer on the fly? Por ejemplo podriamos usar una coleccion para ver si el elemento existe y validarlo con el evento validate, algo asi. Código:
Este es para verificar si se produjo un error durante la validacion..... Código: For a = 0 To 75 totalmente innecesario, se puede tener un flag en la validacion y evitar esto, no hay necesidad de utilizar un loop en lo absoluto. Código: With CD Este...bueno lo podriamos perdonar pero esta mal implementado tambien. Al principio de la funcion se resetea el filename " CD.FileName = """ luego se abre el dialogo y se valida con esto "If CD.FileName <> "" Then" ... NO, el common dialog tiene una propiedad que se llama CancelError y esta ahi para poder determinar si se cancelo o no. Bien estamos llegando al cuore de la funcion, el generador de algoritmos... no lo pego completo poque no me entra ni en 3 paginas. Código: Open CD.FileName For Output As #File Que demonios es esto? simplemente un template de la funcion principal que se parcha con los nuevos valores. Mas alla de que todo esto se podria reducir a unas 5 lineas de codigo... vamos a lo interesante Esto es simplemente substitucion de caracteres pero hay algo llamativo en como esta implementado. Vamos a sacar un pedazo del algoritmo generado y a ver que pasa. If InStr(Data, "0") Then Data = Replace(Data, "0", "1") If InStr(Data, "1") Then Data = Replace(Data, "1", "T") Este es mi texto original: 01 Vamos a "encriptarlo" .. Primer paso reeemplazamos los 0s con 1s nos queda algo asi 11 segundo paso reeemplazamos los 1s con Ts Resultado: TT Como tarea para el hogar les dejo intentar recobrar el texto original If InStr(Data, "1") Then Data = Replace(Data, "1", "0") If InStr(Data, "T") Then Data = Replace(Data, "T", "1") PD: si alguno se esta preguntando que funcion cumple el password en todo esto... simplemente mera decoracion. (http://realblogging.com/wp-content/uploads/2009/01/mohammed_ali.jpg) ojala esto sirva para mejorar el codigo en el futuro, ya que aca hay gente que sabe, no es como otros foros que nadie sabe nada y si posteas cualquier cosa todos te filicitan y alaban y ni les importa si es bien o no. Título: Re: Personal Algorythm + Source Publicado por: ssccaann43 © en 8 Diciembre 2009, 18:29 pm Jajajajaja... Lo que pense escribir, seba lo hizo graficamente...! Jajaja...
Grande Cobein!!! Grande..!!! Título: Re: Personal Algorythm + Source Publicado por: APOKLIPTICO en 8 Diciembre 2009, 18:59 pm Aparte, sin ofender, el algoritmo lo puede crackear cualquiera que haya leido el escarabajo de oro de Edgar Allan Poe en un rato y con un papel y un lapiz, un simple algoritmo de sustitucion puede ser atacado y crackeado con un analisis de frecuencias. Investigá sobre algoritmos de cifrado simetricos/asimetricos, con contraseña, con llave y tambien lee sobre hashes.
Un abrazo APOKLIPTICO Título: Re: Personal Algorythm + Source Publicado por: MCKSys Argentina en 8 Diciembre 2009, 23:00 pm Sólo para meter la cuchara....
Podrías usar el password para hacer un "corrimiento" cíclico. El cual, sumado a la sustitución, puede hacer las cosas un poco más interesantes. Aunque, aún sigue siendo algo bastante "crackeable"... :P Saludos! |