Archivo

Posts Tagged ‘Bot Spammer’

C# Spam Bot [ Tutorial Parte 02 ]

octubre 10, 2008 2 comentarios

Teniendo la Idea del post Anterior ahora vamos a crear nuestro Bot Spamer.

Lo haremos en una aplicacion de Consola, Lo Podemos hacer de varias formas, usando Sockets, WebClient, HttpWebRequest, etc. Para este Tutorial usaremos HttpWebRequest y HttpWebResponse que se encuentran en System.Net.

Aca el Codigo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/*

Autor: Por Esteban Fuentealba
Url: http://estebanfuentealba.net/

*/


/*
Importamos NET para poder usar HttpWebRequest y HttpWebResponse
*/
using System.Net;
/*
tambien Importamos IO para poder leer de forma mas facil la respuesta del servidor
*/
using System.IO;

namespace EstebanFuentealbaSpamBot
{
    class Program
{
/*
Declaramos las Variables que Ocuparemos
HttpWebRequest se encargara de hacer la peticion al servidor
*/
static HttpWebRequest peticion;
/*
HttpWebResponse se encarga de devolvernos la respuesta del servidor
*/
static HttpWebResponse respuesta;
/*
Stream va a leer esa respuesta
*/
static Stream stream;
/*
Stream reader va a hacer mucho mas facil la lectura de Stream
*/
static StreamReader read;

static void Main(string[] args)
{
    IPHostEntry host;
            string localIP = "";
            host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily.ToString() == "InterNetwork")
                {
                    localIP += "[IP: "+ip.ToString()+"] ";
                }
            }
/*
cadena_post es la cadena de todos los valores  de los names del form, seran los datos       que Postearemos
*/
            String cadena_post = "comment_parent=0&comment_post_ID=97&author=Esteban Fuentealba&redirect_to=/2008/10/09/primera-aplicacion-grails/&email=contacto@estebanfuentealba.net&url=https://estebanfuentealba.wordpress.com/&comment=Bot Spammer By Esteban Fuentealba >:D " + DateTime.Now + " " + localIP + " &submit=Enviar comentario&genseq=" + DateTime.Now.Millisecond;
/*
creamos la peticion con el link del action
*/
peticion = (HttpWebRequest)HttpWebRequest.Create(new Uri("https://estebanfuentealba.wordpress.com/wp-comments-post.php"));
/*
le decimos al programa que el metodo de nuestra peticion va a ser un post
*/
peticion.Method = "POST";
/*
seteamos un useragent , es como un navegador, en este caso firefox 3.0 para pasar piola
*/
peticion.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3";
/*
le decimos al programa que nuestra peticion es de tipo form osea formulario
*/
peticion.ContentType = "application/x-www-form-urlencoded";
/*
Aqui vamos a calcular el total de caracteres que va a tener nuestro posteo
*/
byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(cadena_post);
peticion.ContentLength = ByteQuery.Length;
Stream QueryStream = peticion.GetRequestStream();
QueryStream.Write(ByteQuery, 0, ByteQuery.Length);
QueryStream.Close();
/*
pedimos al servidor la respuesta a nuestro posteo de datos y se lo entregamos al atributo respuesta
*/
respuesta = (HttpWebResponse)peticion.GetResponse();
/*
Vamos a leer la respuesta con un stream
*/
stream = respuesta.GetResponseStream();
/*
para hacer mas facil la lectura le pasamos el stream al streamReader
*/
read = new StreamReader(stream);
/*
seteamos una variable String que tendrá toda la respuesta del servidor
*/
String respuesta_string="";
/*
hacemos un while hasta que obtengamos toda la informacion
*/
while (!read.EndOfStream)
{
/*
Leemos solo una linea de la respuesta y la guardamos en una variable string
*/
String lee =read.ReadLine();
/*
yo solo quiero tener la cabecera de la respuesta del servidor asi que vere cuando tenga una linea vacia y si es asi parare el programa y mostrare los datos de lo que tengo leido hasta el momento
*/
if (lee != "\r\n")
{
    Console.WriteLine(lee);
return;
}
respuesta_string += lee;
}
/*
pongo un readLine para que el programa no se cierre
*/
Console.ReadLine();
}
}
}

Este Programa solo Postea a una entrada que tiene la id 97 =P, es tarea de ustedes hacer que postee a todas las entradas del blog, pero les dare una ayuda:
solo tienen que
1º entrar al blog con HttpWebRequest
2º sacar las id de todos las entradas que estan en portada
3º postear cada uno de esas ids que estan en portada

Saludos, espero que les sirva

Categorías:.NET Etiquetas: , , , ,

C# Spam Bot [ Tutorial Parte 01 ]

octubre 10, 2008 3 comentarios

Hola nuevamente hoy escribiré como hacer un spam bot para spamear sitios con word press y dejar en lso comentarios nuestros spam xD.

Lo primero es saber un poco sobre conexiones y el protocolo HTTP.

Cada vez que ponemos la direccion de una web en algun navegador éste se conecta al host de esa direccion y si la conexion es exitosa comienza una transaccion ClienteServidor usando el protocolo HTTP.

al conectar a una web nosotros (Cliente) , debemos obligatoriamente enviar un encabezado seguido, por una línea en blanco y algún dato ( opcional)

para hacer estas solicitudes hay dos metodos: GET y POST

El Methodo GET le dice al servidor que quiere obtener algun recurso especifico de ese servidor y el metodo POST envia datos (casi siempre de formularios web) para obtener respuesta.

Si queremos solicitar la pagina:

http://www.ejemplo.com/index.php

Un ejemplo simple de encabezado HTTP usando el methodo GET seria algo asi:

 GET /index.php HTTP/1.1
 Host: www.ejemplo.com
 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
 [Línea en blanco]

y si queremos postear o enviar datos la cabecera seria diferente…
Para postear datos necesitamos saber que datos pide el formulario que contiene los datos que enviaremos, para eso necesitamos ver el codigo de fuente de la pagina.
Aqui tengo el form de los comentarios de mi blog:

<form action="http://estebanfuentealba.net/blog/wordpress/wp-comments-post.php" method="post" id="commentform">
	<input name="author" id="author" value="Esteban Fuentealba" size="28" tabindex="1" class="inputbox" type="text">
	<input name="redirect_to" value="/blog/wordpress/2008/10/09/primera-aplicacion-grails/" type="hidden">
	<input name="email" id="email" value="contacto@estebanfuentealba.net" size="28" tabindex="2" class="inputbox" type="text">
	<input name="url" id="url" value="http://estebanfuentealba.net/" size="28" tabindex="3" class="inputbox" type="text">
	<textarea name="comment" id="comment" cols="70" rows="15" tabindex="4"></textarea>
	<input name="submit" tabindex="6" value="Post" class="pushbutton-wide" type="submit">
        <input name="comment_post_ID" value="97" type="hidden">
</form>

Como podemos leer dice que el metodo del formulario es POST y el action sera http://estebanfuentealba.net/blog/wordpress/wp-comments-post.php
y los datos que postearemos seran todos los valores de “name.
La cabecera para ese formulario seria algo asi:

POST /blog/wordpress/wp-comments-post.php HTTP/1.1
Host: estebanfuentealba.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Content-Type: application/x-www-form-urlencoded
Content-Length: [aca el numero total de caracteres que se enviaran]
[Línea en blanco]
author=Esteban Fuentealba&redirect_to=/blog/wordpress/2008/10/09/primera-aplicacion-grails/&email=contacto@estebanfuentealba.net&url=http://estebanfuentealba.net/&comment=Bot Spammer By Esteban Fuentealba >:D&submit=Post&comment_post_ID=97
[Línea en blanco]

Teniendo eso encuenta empezaremos a programar nuestro codigo en c#.

Categorías:.NET Etiquetas: , , , ,