Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - blozzter

#41
Había estado leyendo sobre el envío de información a través de formularios html desde Python, y bueno, mi amigo Snifer me dio una mano con un script suyo. así que haremos una prueba de concepto sobre el tema. partimos con el formulario en php al cual le enviaremos los datos.

Código: php

<html>

<?php
        if (isset($boton) && $nombre != ""){
                echo "<h1>Bienvenido $nombre</h1>";}
        else{
?>

<form action = "" method = "post">
        <input type="text" name="nombre" value="">
        <input type="submit" name="boton" value="enviar">
</form>

<?php }  ?>

</html>



ahora cómo sería el script en python:

Código: Python

# PoC interactuando con formularios html desde Python
# blozzter  ||  [email protected]
# saludos a snifer  ||  sniferl4bs.blogspot.com

import urllib

datos = urllib.urlencode({'nombre':'blozzter', 'boton':'enviar'})
source = urllib.urlopen("http://localhost/prueba.php", datos).read()

print source



una captura:

#42
especifica tu tarjeta de  red inalámbrica y cómo instalaste  BT. lo instalaste con una conexión a internet?
#43
Python / Re:[Python] Phising Gen By Doddy H
Octubre 20, 2011, 03:55:13 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola, podrias explicar un poco el funcionamiento? :P
Saludos.-


te lo explico yo.
si hacemos:
Código: php
phising.py http://www.facebook.com/index.php yeah.php


el script escribirá el archivo "yeah.php" que al ser ejecutado en un servidor con soporte para php, quedaría:



en palabras, obtiene el código fuente de una pagina y lo escribe en un archivo.
así es como se empiezan los proyectos de  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


buen trabajo, Doddy.
#44
Python / [Codigo] Geolocalización por ip
Octubre 19, 2011, 04:37:03 PM
Existen webs como No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que brindan servicios de geolocalización a partir de una dirección ip.
Sabiendo del modo en que se realiza la consulta y se devuelve el resultado, podemos automatizar una tool.

Código: python
# Geolocalizaci0n usando el servicio de geoiptool.com
# blozzter  ||  [email protected]
# underc0de.org  ||  hackxcrack.es  ||  undersecurity.net

import urllib2, re

# se hace la solicitud usando cierta ip
ip = (raw_input('[+]IP: '))
h = {"User-Agent": "Mozilla/5.0 (compatible; Konqueror/3.5.8; Linux)"}
r = urllib2.Request("http://www.geoiptool.com/es/?IP=" + ip, headers=h)
source = urllib2.urlopen(r).read()

# se buscan expresiones regulares
aux, pais = re.findall("<img src='/flags/(.*)' alt=\"(.*)\" align=\"absmiddle\" ></td>", source)[0]
aux, region = re.findall("<td align=\"left\" class=\"arial_bold\"><a href=\"http://en.wikipedia.org/wiki/(.*)\" target=\"_blank\">(.*)</a></td>", source)[0]
infoList = re.findall("<td align=\"left\" class=\"arial_bold\">(.*)</td>", source)
longitud = infoList[-2]
latitud = infoList[-1]

# se muestra la informaci0n
print 'pais: ' + pais
print 'region: ' + region
print 'longitud: ' + longitud
print 'latitud: ' + latitud[/url]



una captura:

#45
Python / Encriptador md5/sha1 version GUI
Octubre 19, 2011, 11:28:51 AM
dejo mi primer GUI en python. encripta en md5 y sha1.

Código: python
# mi primer Gui
# aplicacion que encripta en md5 y sha1
# diseñda con Qt Designer
# blozzter || [email protected]
# mitm.cl  ||  underc0de.org  ||hackxcrack.es  || portalhacker.net   ||  undersecurity.net

from PyQt4 import QtCore, QtGui
import sys, md5, hashlib

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.setEnabled(True)
        Form.resize(400, 300)
        Form.setWindowOpacity(0.95)
        Form.setLayoutDirection(QtCore.Qt.LeftToRight)
        Form.setAutoFillBackground(False)
        self.texto = QtGui.QLabel(Form)
        self.texto.setGeometry(QtCore.QRect(30, 30, 161, 31))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("arial"))
        font.setPointSize(20)
        self.texto.setFont(font)
        self.texto.setCursor(QtCore.Qt.CrossCursor)
        self.texto.setMouseTracking(False)
        self.texto.setTextFormat(QtCore.Qt.AutoText)
        self.texto.setObjectName(_fromUtf8("texto"))
        self.campoEntrada = QtGui.QLineEdit(Form)
        self.campoEntrada.setGeometry(QtCore.QRect(30, 80, 341, 20))
        self.campoEntrada.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.campoEntrada.setObjectName(_fromUtf8("campoEntrada"))
        self.campoSalida = QtGui.QLineEdit(Form)
        self.campoSalida.setEnabled(True)
        self.campoSalida.setGeometry(QtCore.QRect(30, 220, 341, 20))
        self.campoSalida.setObjectName(_fromUtf8("campoSalida"))
        self.botonMd5 = QtGui.QPushButton(Form)
        self.botonMd5.setGeometry(QtCore.QRect(30, 130, 75, 23))
        self.botonMd5.setObjectName(_fromUtf8("botonMd5"))
        self.botonSha1 = QtGui.QPushButton(Form)
        self.botonSha1.setGeometry(QtCore.QRect(120, 130, 75, 23))
        self.botonSha1.setObjectName(_fromUtf8("botonSha1"))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.botonMd5, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.toMd5)
        QtCore.QObject.connect(self.botonSha1, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.toSha1)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(QtGui.QApplication.translate("Form", "# Encriptador", None, QtGui.QApplication.UnicodeUTF8))
        self.texto.setText(QtGui.QApplication.translate("Form", "Encriptar:", None, QtGui.QApplication.UnicodeUTF8))
        self.botonMd5.setText(QtGui.QApplication.translate("Form", "Md5", None, QtGui.QApplication.UnicodeUTF8))
        self.botonSha1.setText(QtGui.QApplication.translate("Form", "Sha1", None, QtGui.QApplication.UnicodeUTF8))

def convert_md5(text):
        encriptado = md5.new()
        encriptado.update(text)
        return encriptado.hexdigest()
       
def convert_sha1(palabra):
    return hashlib.sha1(palabra).hexdigest()
   
class Myform(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
       
    def toMd5(self):
        entrada = str(self.ui.campoEntrada.text())
        entradaEncriptada = convert_md5(entrada)
        self.ui.campoSalida.setText(entradaEncriptada)
       
    def toSha1(self):
        entrada = str(self.ui.campoEntrada.text())
        entradaEncriptada = convert_sha1(entrada)
        self.ui.campoSalida.setText(entradaEncriptada)
       
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = Myform()
    myapp.show()
    sys.exit(app.exec_())


y una captura:



saludos.
#46
Python / 15 ultimas noticias de fayerwayer movil
Octubre 17, 2011, 04:40:17 PM
Esta vez mostraré una de las tantas utilidades que se pueden hacer con los módulos urllib2 y re de Python.

el módulo urllib2 sirve para trabajar con páginas web, obteniendo el código fuente de una web; mientras que re nos permite buscar ciertos patrones en ese código fuente.

tomaremos como ejemplo la web movil de fayerwayer, viendo su código fuente buscamos el modo en que se presentan las noticias, que sería de la forma:

<a class="h2" href="link_de_la_noticia">título_de_la_noticia</a>


por lo tanto la expresión regular para asociar el link y la noticia sería:

link, noticia = <a class=\"h2\" href=\"(.*)\">(.*)</a>

conociendo esto y el uso de los módulos, hacemos el script que lista las noticias y sus respectivos links:

Código: python
# rescatando noticias de fayerwayer
# 15 ultimas noticias desde la version movil
# by blozzter || [email protected]

import urllib2, re

url = "http://m.fayerwayer.com/"
source = urllib2.urlopen(url).read()

links = [] # lista donde se almacenarAn los links
news = [] # lista donde se almacenarAn los titulares

for linkNew, new in re.findall("<a class=\"h2\" href=\"(.*)\">(.*)</a>\n", source):
    links.append(linkNew) # se agrega nuevo link
    news.append(new) # se agrega nuevo titular
   
for i in range(15):
    print 'titular: ' + news[i]
    print 'link: ' + links[i]
    print '-' * 30 + '\n'



saludos.
#47
que yo sepa ese password no queda almacenado en ninguna parte, así que ese método no serviriía.  ;D
#48
Dudas y pedidos generales / Re:ayuda con un proble
Septiembre 03, 2011, 01:51:14 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
gracias amigos ,estoy trabajando con el bifrost voy a probarlo con una vm,ya logre infectarme ,una pregunta como puedo saber q puertos tengo abiertos,estoy utilizando modem usb


tu cliente del troyano queda a la escucha del server, él se encarga de abrir el puerto que tu elijas.

para ver las conexiones en windows teclea en la cmd: netstat -an
#49
el ultimo ejemplo tiene un error y el ante-penúltimo también.

especifico el ultimo: olvidan ponerle $ a las variables y olvidan también cerrar las comillas del último print.
quedaría así:

Código: perl
#!/usr/bin/perl
$var1 = 3;
$var2 = 2;
if ($var1 == $var2){
print "la variable 1 tiene el mismo valor que la variable 2";
}
else {
print "No tienen un mismo valor las 2 variables";
}
#Claramente el resultado seria No tienen un mismo valor las 2 variables.



es un post viejo y perdón por revivirlo, pero si es Perl desde 0 se debe tener más cuidado con esos detalles.

#50
buenas compañeros,
estaba incursionando en el manejo de bases de datos MySQL en Python y encontré pocos ejemplos prácticos. así que hice una guía sencilla que sirve de Introducción al tema y que lleva un código simple de ejemplo.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


saludos.
#51
buenas,
me puse a buscar sobre diferentes tipos de ficheros que pudiesen servir para el almacenamiento de datos y que pudieran ser manipulados en python. así fue como llegué al tipo de ficheros csv, el cual me pareció interesante y útil.
vemos un resumen de su definicion (wikipedia) :

CitarLos ficheros CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas  y las filas por saltos de línea.

un ejemplo:

Código: php
987,juan,87345,10 norte 342
876,pedro,43649,8 oriente 342
123,jorge,03342,av. libertad 23
69,vicente,61560,valencia nº183



python trae incorporado un modulo para manejar este tipo de archivos, el modulo csv que se importa como cualquier otro.

algunos apuntes de como manejar el módulo:

para abrir un archivo csv con el permiso correspondiente:

archivo = csv.reader(open("datos_agenda.csv", "rb"))   ==>> abrimos con permiso de solo lectura

archivo = csv.writer(open("datos_agenda.csv", "ab"))   ==>> abrimos con permiso append (agregar al final)

archivo = csv.writer(open("datos_agenda.csv", "wb"))  ==>> abrimos con permiso de escritura, si no existe, lo crea.



escribiendo en un fichero csv:

archivo.writerow([nombre, numero, email])  =>> en donde le pasamos en una lista lo que queremos insertar.


lo que me llamó la atención es que estos archivos no necesitan ser cerrados a diferencia de cuando abrimos un .txt por ejemplo.
para terminar, dejo simple ejemplo de la manipulación de estos archivos.

el ejemplo trata de una agenda (nada nuevo, lo sé, pero sirve para entender el manejo).
he hecho 2 funciones, una que agrega un contacto al archivo datos_agenda.csv y otra función que recorre todo el archivo mostrado los datos de los contactos.

la documentación que he encontrado ha sido escasa, si alguien se interesa podría postear una función que elimine los datos de un contacto pre-almacenado; o que permita modificar la información. así aprendemos todos.


Código: python

#aprendiendo manejo de archivos csv en Python
#comunidad Underc0de

import csv, sys, os

def mostrar_contactos():
    archivo = csv.reader(open("datos_agenda.csv", "rb"))
    for index,row in enumerate(archivo):
        print "contacto: " + str(index+1)
        print "-------------------"
        print "nombre: " + row[0] + "  || numero: " + row[1] + "  || email: " + row[2]
        print "\n"
       
def agregar_contacto(nombre, numero, email):
    archivo = csv.writer(open("datos_agenda.csv", "ab"))
    archivo.writerow([nombre, numero, email])
       
def mostrar_menu():
    print "gestion de contactos"
    print "[1] mostrar contactos."
    print "[2] agregar contacto."
    print "[3] salir."
   
salir = False

if not os.path.exists('datos_agenda.csv'):
    archivo = csv.writer(open("datos_agenda.csv", "wb"))
   

while (salir == False):
    mostrar_menu()
    opcion = input("==> opcion: ")
    if opcion == 1:
        mostrar_contactos()
    elif opcion == 2:
        nombre = raw_input("==> nombre: ")
        numero = raw_input("==> numero: ")
        email = raw_input("==> email: ")
        agregar_contacto(nombre, numero, email)
    elif opcion == 3:
        sys.exit()


#52
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Funciones, son muy buenas; de esto hablaré en el curso III de PHP pero ANTRAX me dijo lo siguiente:

Cita de: antrax
No lo posties el 22, postealo hasta el 15.

Por lo tanto tengo que seguir sus órdenes, sigue así.


ok, Xt3mP, ese curso de php está siendo una muy buena fuente de aprendizaje. estoy ansioso por la próxima entrega.


saludos.
#53
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Nice, yo hice uno para otro foro que mostraba los ultimos 5 post's
Te recomiendo eso si hacer un try / except al tomar la url
ya que como es un bucle infinito (while True) en un momento
dará error


acabo de hacer uno que muestra los ultimos 5 post, lo tengo implementado en una bot.
gracias por la recomendación.

saludos.
#54
Python / Re:[codigo]simple chat
Agosto 29, 2011, 04:21:39 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ese code anda dando vueltas por todos los foros XD
Yo ando trabajando uno con Python + PHP

Saludos.

yo nunca lo he visto. al menos no modificado para que las dos partes puedan hablar.
#55
he estado utilizando los módulos urllib2 y re de python. y aquí dejo un script que imprime por pantalla cuando hay un nuevo post en el foro (nuevo post, no nueva respuesta) imprime el título y el link.

Código: python

#monitoreando nuevos post en underc0de.org
#by blozzter.

import re, urllib2
from time import sleep

def monitorear_posts():
    contenido = urllib2.urlopen("http://www.underc0de.org/foro/index.php?action=recent").read()
    ultimo_registrado = re.findall("rel=\"nofollow\">(.*)</a></h5>\n", contenido)[0] #cogemos el ultimo post
    while True:
        sleep(60)        #luego de un minuto
        contenido = urllib2.urlopen("http://www.underc0de.org/foro/index.php?action=recent").read()
        ultimo_post = re.findall("rel=\"nofollow\">(.*)</a></h5>\n", contenido)[0]#lo cogemos de nuevo
        ultimo_link = re.findall("\s<a href=\"(.*)\"\srel=\"nofollow\">", contenido)[0]
   
        if ultimo_post != ultimo_registrado and ultimo_post[:3] != "RE:": #si son distintos, mostramos el post y el link
            print "\t nuevo post en Underc0de!"
            print "%s >> %s" % (ultimo_post, ultimo_link)
            ultimo_registrado = ultimo_post
   
monitorear_posts()



seria linda una bot con esta función  ::)
saludos.

edito: al momento de estar posteando esto dejé corriendo el script y tomé una captura. eso si falta limpiar un poco la url para que no la tire con tanta basura:



#56
Python / [Codigo] Simple chat
Agosto 29, 2011, 01:45:14 PM
buenas,
estaba leyendo el libro"python para todos" y me encontré con un ejemplo de sockets que me pareció interesante. el ejercicio constaba de 2 scripts, uno era un cliente y otro un servidor; en el cliente podíamos escribir texto y luego ese texto era mostrado en el servidor. decidí modificarlo un poco para que ambos scripts pudiesen ir alternando la función cliente-servidor, es decir, hacer una especie de chat que permitiese simular una conversación simple del siguiente modo:  escribe usuario1, lee usuario2, escribe usuario2, lee usuario1; y así sucesivamente.

dejo los scripts:

k1.py

Código: python

#uso:  python k1.py ip_a_comunicar (se admite 127.0.0.1)
# by blozzter.

import sys, socket

ip = sys.argv[1]

def enviar():
s = socket.socket()
s.connect((ip, 9998))  #se conecta a esa ip
mensaje = raw_input("[>] ")
s.send(mensaje)
if mensaje == "quit":
print 'bye bye'
s.close()
sys.exit()

def recibir():
s = socket.socket()
s.bind(("", 9999))
s.listen(1)
sc, addr = s.accept()

recibido = sc.recv(1024)
if recibido == "quit":
print 'bye bye'
sc.close()
s.close()
sys.exit()
print "Recibido:", recibido
sc.send(recibido)

def cambiar(word):
if word == 'enviar':
word = 'recibir'
elif word == 'recibir':
word = 'enviar'
return word

accion = 'enviar'

while True:
if accion == 'enviar':
enviar()
elif accion == 'recibir':
recibir()
accion = cambiar(accion)



k2.py

Código: python

#uso: python k2.py ip_a_comunicar (se admite 127.0.0.1)
# by blozzter.

import sys, socket

ip = sys.argv[1]

def enviar():
s = socket.socket()
s.connect((ip, 9999))  #se conecta a esa ip
mensaje = raw_input("[>] ")
s.send(mensaje)
if mensaje == "quit":
print 'bye bye'
s.close()
sys.exit()

def recibir():
s = socket.socket()
s.bind(("", 9998))
s.listen(1)
sc, addr = s.accept()

recibido = sc.recv(1024)
if recibido == "quit":
print 'bye bye'
sc.close()
s.close()
sys.exit()
print "Recibido:", recibido
sc.send(recibido)

def cambiar(word):
if word == 'enviar':
word = 'recibir'
elif word == 'recibir':
word = 'enviar'
return word

accion = 'recibir'

while True:
if accion == 'enviar':
enviar()
elif accion == 'recibir':
recibir()
accion = cambiar(accion)



primero se debe ejecutar el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ya que este comienza con la función que "escucha", y luego ejecutar el No tienes permitido ver los links. Registrarse o Entrar a mi cuenta que es el que se conecta y empieza a "hablar", luego se van alternando de modo automático.


saludos.
#57
Back-end / Parse command line parameters + MD5
Agosto 29, 2011, 11:49:36 AM
he estado leyendo sobre php y me ha llamado la atención lo simple que es pasar parámetros al momento de la ejecución y la facilidad que presenta en el uso de algunas de sus funciones.
hice un código que convierte una palabra a MD5 pasándola como parametro; aquí el código:


Código: php

<?php
/*  encriptando con php desde la linea de comandos
     en windows es posible compilarlo con bamcompile de la forma:
C:\bamcompile>bamcompile.exe archivo.php
*/

function convertToMd5($cadena){
$encriptado = md5($cadena);
return $encriptado;
}

if($argc != 2) {
echo "\t[!] uso: ".$argv[0]." palabra\n";
return false;
}

$palabra = ($argv[1]);
$encriptado = convertToMd5($palabra);
echo "\t[+] ".$palabra." --> ".$encriptado."\n";
?>


saludos.
#58
gracias por la ayuda, horrorc0re.

había olvidado postear, pero recibí ayuda en el canal #python del mismo servidor de #underc0de.

el problema radicaba en que al recuperar la lista de usuarios la estaba rescatando como una cadena. la solución que me dieron fue usar json, quedando el código de la función así:

Código: python

def agregar_admin(NuevoAdmin):
    fichero = open("config.py", "r") #fichero de configuracion
    contenido = fichero.read()
    fichero.close()
    admins_originales = re.findall("admins = (.*)", contenido)[0] 
    admins = json.loads(admins_originales)
    admins.append(NuevoAdmin)
    nuevo = json.dumps(admins)
    contenido_modificado = contenido.replace(admins_originales, nuevo)
    fichero = open("config.py", "w")
    fichero.writelines(contenido_modificado)
    fichero.close()



y con respecto a lo que dices:

CitarEstoy tambien liao con el  pero tengo problemas al guardarlos. Como tu los guardas si te fijas te sustituye el contenido entero del fichero por lo que tengas, se carga el config.py   


como yo lo guardo no me sustituye el fichero entero. el procedimiento es el siguiente:
- abro el archivo y almaceno TODO el contenido en la variable contenido.
- busco la lista de los admins que ya están en la configuración y lo almaceno en la variable admins_originales.
- creo una nueva variable llamada "nuevo" que contendrá los admins_originales + el admin nuevo
- remplazo en la variable 'contenido' la parte donde están los admins originales por "nuevo"
- vuelvo a crear el documento en blanco abriéndolo con permiso "w" e incerto la variable 'contenido'   :)

acá un articulo que describe el procedimiento: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

saludos
agradezco tu aporte, siempre es bueno ver más de una solución.
#59
Python / Re:Calculadora de Ecuaciones Cuadraticas
Agosto 26, 2011, 12:36:10 AM

Yo doy fe de que este código lo hizo ANTRAX, nos topamos en el IRC aquel día y lo ayudé con algunos detalles.  ;D
#60
buenas, necesito hacer lo siguente:
diseñar una función que reciba como parámetro un nick, que busque una lista que contendrá los nicks de los admins en fichero y modifique dicha lista agregando el nick recibido.

tengo mas o menos la idea, pero creo que tengo un problema al momento de buscar la lista con los admins en el archivo.

el archivo de configuracion se llama No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y contiene algo como:


Código: php
servidor = ""
admins = ["blozzter"]
bla bla
...


y el codigo en python es:

Código: python
import re

def agregar_admin(NuevoAdmin):
    fichero = open("config.py", "r") #fichero de configuracion
    contenido = fichero.read()
    fichero.close()
    admins_originales = re.findall("admins = (.*)", contenido)[0]  #creo que el error esta entre esta
    admins_nuevos = [admins_originales] + [NuevoAdmin]    #y esta linea
    contenido_modificado = contenido.replace(admins_originales, admins_nuevos)
    fichero = open("config.py", "w")
    fichero.writelines(contenido_modificado)
    fichero.close()
   
nick = "angelion"  #nick que se desea agregar al fichero de configuración
agregar_admin(nick)



saludos.
espero ayuda.