14 comentarios sobre “9ea9552db3343564a84bc2b3bf3d6529”
9ea9552db3343564a84bc2b3bf3d6529 a tí también …y 96aa01f0c3679071e28fce43e058fc6f
definitivamente no se sabe quien es mas geek, tu que pones el mensaje, o nosotros que lo entendemos xD
Pues después de probar y probar y probar a mano sin éxito llegué a la conclusión de que era mejor hacer un script para sacar el mensaje y desempolvar mis ruby skills.
Os lo dejo para aquellos que no son muy buenos adivinando o los que piensan que «aquello que puede hacer una máquina que no lo repita el hombre».
#!/usr/bin/env ruby
require 'digest/md5'
require 'pp'
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
encontrado = ''
# choose y append_all tomados prestados de semergence.com
def choose(n, k)
return [[]] if n.nil? || n.empty? && k == 0
return [] if n.nil? || n.empty? && k > 0
return [[]] if n.size > 0 && k == 0
c2 = n.clone
c2.pop
new_element = n.clone.pop
choose(c2, k) + append_all(choose(c2, k-1), new_element)
end
def append_all(lists, element)
lists.map { |l| l << element }
end
(1...words.length).each do |n|
choose(words,n).each do |msgarr|
msgstr = msgarr.join(' ')
# puts msgstr
msgmd5 = Digest::MD5.hexdigest(msgstr)
# puts msgmd5
if msgmd5 == sergiomd5
encontrado = msgstr
end
end
end
print "El mensaje de Sergio Hernando para esta Navidad "
if !encontrado.nil?
puts "es:", encontrado
else
puts "quedará oculto para siempre"
end
Si alguien se aburre que incluya además la posibilidad de comprobar las mismas palabras en mayúsculas (todo, sólo la primera de cada palabra, la primera de la frase, etc.).
Feliz año, Sergio.
chmeee,
Feliz año también para tí, y para todos claro :) Como hay muchos que no comprenderán tu método, os dejo el fácil:
He mejorado un poco el script (aún es chungo pero tampoco estoy para muchos trotes…) y ahora también encuentra el mensaje de Ricardo :). También he reducido las palabras eliminando aquelas que me parecía que no iban a estar.
Y además termina cuando los ha encontrado a los dos sin tener que pasar por todas las posibilidades.
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
#words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
encontradosergio = ''
encontradorick = ''
# choose y append_all tomados prestados de semergence.com
def choose(n, k)
return [[]] if n.nil? || n.empty? && k == 0
return [] if n.nil? || n.empty? && k > 0
return [[]] if n.size > 0 && k == 0
c2 = n.clone
c2.pop
new_element = n.clone.pop
choose(c2, k) + append_all(choose(c2, k-1), new_element)
end
def append_all(lists, element)
lists.map { |l| l << element }
end
def check_msg(msg, md5)
msgmd5 = Digest::MD5.hexdigest(msg)
if msgmd5 == md5
return true
end
return false
end
def print_msg(name, msg)
print "El mensaje de #{name} para esta Navidad "
if msg != ''
puts "es:", msg
else
puts "quedará oculto para siempre"
end
end
catch (:found) do
(1...words.length).each do |n|
perm = Permutation.new(n)
choose(words,n).each do |msgarrsrc|
perm.map { |p| p.project(msgarrsrc) }.each do |msgarr|
msgstr = msgarr.join(' ')
# puts msg
if check_msg(msgstr, sergiomd5)
encontradosergio = msgstr
elsif check_msg(msgstr, rickmd5)
encontradorick = msgstr
end
if encontradosergio != '' and encontradorick != ''
throw :found
end
end
end
end
end
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
#words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
encontradosergio = ''
encontradorick = ''
Pues no, no hace gran cosa. No debe estar definido en el CSS del theme el comportamiento de los tags «code».
Sorry. ¿Qué resultados arroja el script para el hash de Ricardo? :D
Ya había usado el <code> para los comentarios anteriores pero parece que sin un <pre> no queda indentado, aunque supongo que nada que un poco de CSS magic no pueda arreglar.
Respecto al resultado del script, es el siguiente:
feliz
navidad
2008
año
felices
fiestas
próspero
nuevo
feliz navidad
navidad feliz
feliz 2008
2008 feliz
navidad 2008
2008 navidad
feliz año
año feliz
navidad año
año navidad
2008 año
año 2008
feliz felices
felices feliz
navidad felices
felices navidad
2008 felices
felices 2008
año felices
felices año
feliz fiestas
fiestas feliz
navidad fiestas
fiestas navidad
2008 fiestas
fiestas 2008
año fiestas
fiestas año
felices fiestas
fiestas felices
feliz próspero
próspero feliz
navidad próspero
próspero navidad
2008 próspero
próspero 2008
El mensaje de Sergio para esta Navidad es:
felices fiestas
El mensaje de Ricardo para esta Navidad es:
próspero 2008
Pues debe ser la códificación de caracteres para la tilde. Parece que Ricardo y Ruby usan la misma :).
Lo siguiente es la salida del intérprete en línea de comando de ruby (puedes usarlo on-line si no lo tienes instalado en http://tryruby.hobix.com/)
¿Ein? Así que me imagino que debe ser que hay diferencias en cómo tratan los caracteres unicode el md5sum y el digest/md5 en ruby. Lo he buscado pero no he encontrado nada al respecto.
Ya está, parece ser que no es nada tan esotérico (yo y mis conspiranoias sobre las codificaciones de caracteres que me vuelven loco a veces). Es el \n de final de cadena.
He aquí la prueba:
9ea9552db3343564a84bc2b3bf3d6529 a tí también …y 96aa01f0c3679071e28fce43e058fc6f
definitivamente no se sabe quien es mas geek, tu que pones el mensaje, o nosotros que lo entendemos xD
Pues después de probar y probar y probar a mano sin éxito llegué a la conclusión de que era mejor hacer un script para sacar el mensaje y desempolvar mis ruby skills.
Os lo dejo para aquellos que no son muy buenos adivinando o los que piensan que «aquello que puede hacer una máquina que no lo repita el hombre».
#!/usr/bin/env ruby
require 'digest/md5'
require 'pp'
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
encontrado = ''
# choose y append_all tomados prestados de semergence.com
def choose(n, k)
return [[]] if n.nil? || n.empty? && k == 0
return [] if n.nil? || n.empty? && k > 0
return [[]] if n.size > 0 && k == 0
c2 = n.clone
c2.pop
new_element = n.clone.pop
choose(c2, k) + append_all(choose(c2, k-1), new_element)
end
def append_all(lists, element)
lists.map { |l| l << element }
end
(1...words.length).each do |n|
choose(words,n).each do |msgarr|
msgstr = msgarr.join(' ')
# puts msgstr
msgmd5 = Digest::MD5.hexdigest(msgstr)
# puts msgmd5
if msgmd5 == sergiomd5
encontrado = msgstr
end
end
end
print "El mensaje de Sergio Hernando para esta Navidad "
if !encontrado.nil?
puts "es:", encontrado
else
puts "quedará oculto para siempre"
end
Si alguien se aburre que incluya además la posibilidad de comprobar las mismas palabras en mayúsculas (todo, sólo la primera de cada palabra, la primera de la frase, etc.).
Feliz año, Sergio.
chmeee,
Feliz año también para tí, y para todos claro :) Como hay muchos que no comprenderán tu método, os dejo el fácil:
http://us.md5.crysm.net/find?md5=9ea9552db3343564a84bc2b3bf3d6529
¿Nadie se atreve con el hash de Ricardo?
He mejorado un poco el script (aún es chungo pero tampoco estoy para muchos trotes…) y ahora también encuentra el mensaje de Ricardo :). También he reducido las palabras eliminando aquelas que me parecía que no iban a estar.
Y además termina cuando los ha encontrado a los dos sin tener que pasar por todas las posibilidades.
Os lo posteo por si alguien quiere conocerlo:
#!/usr/bin/env ruby
require 'digest/md5'
require 'rubygems'
require 'permutation'
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
#words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
encontradosergio = ''
encontradorick = ''
# choose y append_all tomados prestados de semergence.com
def choose(n, k)
return [[]] if n.nil? || n.empty? && k == 0
return [] if n.nil? || n.empty? && k > 0
return [[]] if n.size > 0 && k == 0
c2 = n.clone
c2.pop
new_element = n.clone.pop
choose(c2, k) + append_all(choose(c2, k-1), new_element)
end
def append_all(lists, element)
lists.map { |l| l << element }
end
def check_msg(msg, md5)
msgmd5 = Digest::MD5.hexdigest(msg)
if msgmd5 == md5
return true
end
return false
end
def print_msg(name, msg)
print "El mensaje de #{name} para esta Navidad "
if msg != ''
puts "es:", msg
else
puts "quedará oculto para siempre"
end
end
catch (:found) do
(1...words.length).each do |n|
perm = Permutation.new(n)
choose(words,n).each do |msgarrsrc|
perm.map { |p| p.project(msgarrsrc) }.each do |msgarr|
msgstr = msgarr.join(' ')
# puts msg
if check_msg(msgstr, sergiomd5)
encontradosergio = msgstr
elsif check_msg(msgstr, rickmd5)
encontradorick = msgstr
end
if encontradosergio != '' and encontradorick != ''
throw :found
end
end
end
end
end
print_msg('Sergio', encontradosergio)
print_msg('Ricardo', encontradorick)
Por cierto, Sergio, ¿alguna forma de insertar código en comentarios que quede bonito?
chmeee,
Yo creo que encerrando el código entre tags «code» debería verse algo, pruebo con tu código:
#!/usr/bin/env ruby
require 'digest/md5'
require 'rubygems'
require 'permutation'
sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
#words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
encontradosergio = ''
encontradorick = ''
Pues no, no hace gran cosa. No debe estar definido en el CSS del theme el comportamiento de los tags «code».
Sorry. ¿Qué resultados arroja el script para el hash de Ricardo? :D
Ya había usado el <code> para los comentarios anteriores pero parece que sin un <pre> no queda indentado, aunque supongo que nada que un poco de CSS magic no pueda arreglar.
Respecto al resultado del script, es el siguiente:
feliz
navidad
2008
año
felices
fiestas
próspero
nuevo
feliz navidad
navidad feliz
feliz 2008
2008 feliz
navidad 2008
2008 navidad
feliz año
año feliz
navidad año
año navidad
2008 año
año 2008
feliz felices
felices feliz
navidad felices
felices navidad
2008 felices
felices 2008
año felices
felices año
feliz fiestas
fiestas feliz
navidad fiestas
fiestas navidad
2008 fiestas
fiestas 2008
año fiestas
fiestas año
felices fiestas
fiestas felices
feliz próspero
próspero feliz
navidad próspero
próspero navidad
2008 próspero
próspero 2008
El mensaje de Sergio para esta Navidad es:
felices fiestas
El mensaje de Ricardo para esta Navidad es:
próspero 2008
Un saludo
próspero 2008: 173d73414adc477c27fb951ef1c87bce
prospero 2008: fcab467b035f801b4fc1cd17a3c59076
Hash de Ricardo: 96aa01f0c3679071e28fce43e058fc6f
Algo sigue fallando :)
Pues debe ser la códificación de caracteres para la tilde. Parece que Ricardo y Ruby usan la misma :).
Lo siguiente es la salida del intérprete en línea de comando de ruby (puedes usarlo on-line si no lo tienes instalado en http://tryruby.hobix.com/)
irb(main):001:0> require ‘digest/md5’
=> true
irb(main):002:0> msg = «próspero 2008»
=> «pr\303\263spero 2008»
irb(main):003:0> Digest::MD5.hexdigest(msg)
=> «96aa01f0c3679071e28fce43e058fc6f»
Pensaba que era por el Unicode, pero el siguiente resultado me ha dejado confundido:
irb(main):001:0> file = File.new(«p2008», «w»)
=> #
irb(main):002:0> msg = «próspero 2008»
=> «pr\303\263spero 2008»
irb(main):003:0> file.puts msg
=> nil
irb(main):004:0> file.close
=> nil
irb(main):005:0> quit
$ md5sum p2008
75848c93c1fef976ddc735ee6a1ce394 p2008
¿Ein? Así que me imagino que debe ser que hay diferencias en cómo tratan los caracteres unicode el md5sum y el digest/md5 en ruby. Lo he buscado pero no he encontrado nada al respecto.
Ya está, parece ser que no es nada tan esotérico (yo y mis conspiranoias sobre las codificaciones de caracteres que me vuelven loco a veces). Es el \n de final de cadena.
He aquí la prueba:
$ echo «próspero 2008″|md5sum
75848c93c1fef976ddc735ee6a1ce394 –
$ echo -n «próspero 2008″|md5sum
96aa01f0c3679071e28fce43e058fc6f –
Vaya lo que va a dar de si una felicitación navideña :), quién lo iba a decir.
Misterio resuelto :)
Vaya lo que va a dar de si una felicitación navideña :), quién lo iba a decir.
¿Y lo que nos hemos divertido haciendo el gamba? :D
jejej si efectivamente somos muy geek xD
¡Vaya!, no había seguido la pequeña batalla entre chmeee, Sergio, ruby y las felicitaciones navideñas…me he divertido mucho…pero fue otro día ;-P
¡felices fiestas y próspero 2008 a los dos!