Inicio
Buscar
Ingresar
Registrarse
Starfield: el juego que revolucionará el espacio y la tecnología
Hack x Crack - Comunidad de Seguridad informática
»
Programación
»
Scripting
»
Perl
»
Tutorial construyendo "Kidnapping Trending Topics" (0verKTT v0.2)
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Tutorial construyendo "Kidnapping Trending Topics" (0verKTT v0.2) (Leído 2104 veces)
The X-C3LL
{ L1 } Newbie
Mensajes: 66
Sólo la muerte te salva de la vida
Tutorial construyendo "Kidnapping Trending Topics" (0verKTT v0.2)
«
en:
Marzo 02, 2012, 10:43:11 pm »
Saludos,
Antes que nada quiero aclarar que yo no soy programador, y que por ello la gente que sí se dedique a la programación quizás se encuentre muchos errores básicos en el script. Mi única intención con este breve tutorial es acercar un poco el cómo pasar de una idea abstracta en la cabeza a una herramienta. Dejando esto claro, continúo.
La idea de la herramienta que tenía era la de un bot spammer automático que twiteara un mensaje de spam en los Trending Topics del momento, y que además esta herramienta se pudiera coordinar con otros ordenadores que también la tuvieran corriendo, para realizar de esta forma un floodeo con el mismo mensaje. Por lo tanto teníamos que resolver los siguientes problemas:
1) Conseguir loguearnos en Twitter y poder escribir tweets
2) Averiguar los TTs del momento
3) Coordinar el ataque
--[0x01 Trabajar con Twitter: misión API]---->
Lo primero que tuve que hacer fue investigar cómo diablos poder autenticarnos desde una aplicación en twitter y tener acceso a la API, respuesta que encontré en
un documento
de la sección de twitter para desarrolladores. De ahí pude sacar en claro que para poder postear tweets era necesario previamente una autenticación 0auth, consistente en un par de claves asignadas a la herramienta y otro par de claves asignado al usuario. Para poder obtener dichas claves se debe de registrar previamente el proyecto de la herramienta en Twitter Developers (cuentas falsas, cof cof), donde tendremos que seleccionar qué permisos queremos darle a la herramienta.
Una vez descubierto cómo tener acceso a la API de twitter sólo restaba averiguar si tenía que hacer todas las conexiones en crudo o existía algún wrapper que me permitiera agilizar las operaciones, por lo que hice una búsqueda en CPAN y me encontré con que existía un módulo llamado Net::Twitter para tal fin. Consultando su documentación podía verse que para la autenticación no había ningún misterio, simplemente asignar a las variables necesarias:
Código: Perl
use
Net
::
Twitter
;
my
$nt
=
Net
::
Twitter
->
new
(
traits
=>
[
qw
/
OAuth API
::
REST
/
]
,
consumer_key
=>
$consumer_key
,
consumer_secret
=>
$consumer_secret
,
access_token
=>
$token
,
access_token_secret
=>
$token_secret
,
)
;
$consumer_key y el resto de variables son las claves que nos dieron al registrar el proyecto de la herramienta.
--[0x02 Extraer los TTs del momento]---->
El siguiente paso lógico es averiguar cuales son los TTs para poder postear en ellos. Los TTs podemos encontrarlos en formato JSON en la URL
http://api.twitter.com/1/trends/1.json
, por lo que para poder extraer los datos que nos interesan tenemos que tirar de regexp o usar un módulo, que en este caso se llama JSON y permite el trabajo con los datos de estos ficheros de forma sencilla. Luego en resumidas cuentas tenemos que lanzar una petición GET al archivo 1.json y después extraer de él los datos que nos interesan:
Código: Perl
use
LWP
::
UserAgent
;
use
JSON
;
sub
sacarTT
{
$nav
=
LWP
::
UserAgent
->
new
;
$nav
=
$nav
->
get
(
'http://api.twitter.com/1/trends/1.json'
)
;
$nav
=
$nav
->
decoded_content
;
$json_result
=
from_json
(
$nav
)
;
return
$json_result
;
}
Como podemos comprobar estoy usando una subrutina que me devolverá el contenido de 1.json decodificado.
--[0x03 Coordinar el ataque]---->
El siguiente problema a resolver es encontrar una forma simple y efectiva de poder coordinar todas las herramientas, de tal forma que todas posteen el mismo mensaje, además de que en caso de que el mensaje cambie, la herramienta detecte este cambio y postee el nuevo mensaje. Tras pensarlo detenidamente he creído sacar en claro que la manera que aporta más ventajas es a través de .txt localizados en algún servidor. Es decir, se colocaría un .txt con la frase en un servidor, y todos los usuarios de la herramienta tendrían que pasar como parámetro la URL donde se encuentra el mensaje. Las ventajas que encuentro a este sistema es que es independiente de las herramientas, puede modificarse el .txt rápidamente, pesa poco y se puede ir cambiando la localización de éste en distintos servidores. Si se quiere rizar el rizo se podría aplicar algún tipo de encriptación, pero en mi caso no lo he hecho.
Por lo tanto con que la herramienta haga una simple petición GET al archivo .txt y lea el contenido será suficiente:
Código: Perl
sub
actu
{
$nav
=
LWP
::
UserAgent
->
new
;
$nav
=
$nav
->
get
(
$_
[
0
]
)
;
$nav
=
$nav
->
decoded_content
;
return
$nav
;
}
--[0x04 Twitteando que es gerundio]---->
Habiendonos autenticado ya, extraído cuales son los TTs, y conociendo qué mensaje queremos dar, sólo nos queda twittear. Para ello tiraremos de un bucle foreach que aplicaremos a lo que nos devuelva la subrutina &sacarTT para ir sacando los hashtags, los cuales serán añadidos al mensaje de SPAM, e ir actualizando nuestro estado:
Código: Perl
$TT
=
&sacarTT
;
foreach
$trend
(
@
{
$TT
->
[
0
]
->
{
'trends'
}
}
)
{
$xc
=
$trend
->
{
'name'
}
;
print
$xc
.
"
\n
"
;
$spam
=
$Tweet
.
" "
.
$xc
;
$nt
->
update
(
$spam
)
;
sleep
45
;
}
}
Podeis ver que no tiene misterio alguno ya que gracias al uso de módulos todo el código se resume en apenas unas pocas líneas.
--[0x05 Detalles finales]---->
Por último sólo nos queda atar algunos cabos sueltos, como es que la herramienta sea "automática", o en otras palabras, que trabaje en un bucle infinito:
Código: Perl
while
(
true
)
{
Código que se tiene que repetir
}
Además de comprobar si se le ha pasado el argumento con la URL:
Código: Perl
$ARGC
=
@
ARGV
;
if
(
$ARGC
!=
1
)
{
print
"
\n
Uso: 0verKTT.pl <url del txt>"
;
exit
(
0
)
;
}
--[0x06 Código completado]---->
El source de la herramienta una vez integrado todo sería el siguiente:
Código: Perl
#Tutorial para CPH
#Codeado por The X-C3LL
#http://0verl0ad.blogspot.com
use
Net
::
Twitter
;
use
LWP
::
UserAgent
;
use
JSON
;
my
$consumer_key
=
""
;
my
$consumer_secret
=
""
;
my
$token
=
""
;
my
$token_secret
=
""
;
$ARGC
=
@
ARGV
;
if
(
$ARGC
!=
1
)
{
print
"
\n
Uso: 0verKTT.pl <url del txt>"
;
exit
(
0
)
;
}
print
q
(
-===
Kidnapping Trending Topics v0
.
2 Public
===-
By The X
-
C3LL
)
;
print
"[-->] Autenticandonos en Twitter...
\n
"
;
my
$nt
=
Net
::
Twitter
->
new
(
traits
=>
[
qw
/
OAuth API
::
REST
/
]
,
consumer_key
=>
$consumer_key
,
consumer_secret
=>
$consumer_secret
,
access_token
=>
$token
,
access_token_secret
=>
$token_secret
,
)
;
while
(
true
)
{
print
"[-->] Conectando con el servidor ["
.
$ARGV
[
0
]
.
"]...
\n
"
;
$Tweet
=
&actu
(
$ARGV
[
0
]
)
;
print
"[-->] Tweet actual... "
.
$Tweet
.
"
\n
"
;
print
"[-->] Trends Spammed...
\n
\n
"
;
$TT
=
&sacarTT
;
foreach
$trend
(
@
{
$TT
->
[
0
]
->
{
'trends'
}
}
)
{
$xc
=
$trend
->
{
'name'
}
;
print
$xc
.
"
\n
"
;
$spam
=
$Tweet
.
" "
.
$xc
;
$nt
->
update
(
$spam
)
;
sleep
45
;
}
}
sub
sacarTT
{
$nav
=
LWP
::
UserAgent
->
new
;
$nav
=
$nav
->
get
(
'http://api.twitter.com/1/trends/1.json'
)
;
$nav
=
$nav
->
decoded_content
;
$json_result
=
from_json
(
$nav
)
;
return
$json_result
;
}
sub
actu
{
$nav
=
LWP
::
UserAgent
->
new
;
$nav
=
$nav
->
get
(
$_
[
0
]
)
;
$nav
=
$nav
->
decoded_content
;
return
$nav
;
}
--[0x07 Comentario final]---->
Esta herramienta está diseñada para aprender, no para ser usada, con esto quiero decir que espero que no sea usada por la jauría de Skiddies para jugar a los Anonymous. Como dije al principio no soy programador, por lo que habré errado en cosas simples, y probablemente habré hecho las cosas de la forma menos eficiente, pero si a alguien le sirve, bienvenido sea.
En línea
Sígueme en Twitter (@TheXC3LL)
The_GanGsTar
{ L4 } Geek
Mensajes: 391
Me gustan los panqueques
Re: Tutorial construyendo "Kidnapping Trending Topics" (0verKTT v0.2)
«
Respuesta #1 en:
Marzo 05, 2012, 08:42:14 am »
Mira no soy programador y no soy un skiddie. Tampoco voy a utilizar a esta tool ya que no me interesa en nada twitter ni siquiera tengo cuenta xD
Pero lo que me gusto de esto es que mostraste como desarrollaste un soft apartir de una idea la tranformaste en codigo. La verdad que estoy aprendiendo perl y me gusta mucho este lenguaje y tu post me sirvio muchisimo para comprender mejor esto de los modulos y de como organizar una idea para hacerla script.
Muchas gracias
salu2!
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
Hack x Crack - Comunidad de Seguridad informática
»
Programación
»
Scripting
»
Perl
»
Tutorial construyendo "Kidnapping Trending Topics" (0verKTT v0.2)
Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso...
OK
Learn more