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 - Once

#161
Supongo que la prinmer función la sacaste de You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y ahí mismo te esplican que lo que te interesa es el primer elemento de la lista. Lo que puede confundir un poco es el uso del modulo You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, básicamente está diciendo que lea siete enteros de un byte y 21 enteros de 4 bytes. El resultado es una lista con los valores.

La segunda obtiene el keepalive del socket.

Ten encuenta bro, que cuando haces un recv() y recibes un string vacío es porque se desconectó el socket.

Saludos!
#162
Es simple, los que conocemos algo de este mundo somo así simplemente porque sabemos lo que se puede hacer y no sólo eso, sino la relativa facilidad con la que se puede hacer. Así que es mucho más fácil desconfiar de todos al principio.

Otro claro ejemplo, es lo que sucede con el software, apenas te das cuenta lo "fácil" que es burlar un antivirus descargar software no es lo mismo, por eso en muchos foros (incluido este) hay usuarios que saben analizar el software para saber si es malicioso o no.

En pocas palabras es una paranoia MUY bien fundamentada que a la larga nos evita muchos problemas.

Saludos!
#163
Python / Re:Base64 encode
Septiembre 13, 2014, 12:48:27 PM
Muy bueno bro, primer vez que veo un Base64 usando operaciones binarias.

Saludos!
#164
Hacking / Re:Soundcloud Downloader
Septiembre 13, 2014, 01:14:37 AM
Muy bueno bro, te dejo +1

A ver si luego nos explicas cómo funciona.

Saludos!

#165
Las expresiones regulares son muy sensibles, si no publicas el html no te puedo ayudar.

Saludos!
#166
Ok bro, lo primero que veo es que usas Python 3x

Para sacar el html de una web, como te decía antes, debes usar la libreria urllib (urllib2 no existe en python 3x)

Código: python,2,8

import urllib.request
import re

url = "http://python.org/"
response = urllib.request.urlopen(url)
html = str(response.read())

print(re.findall("<title>(.*?)</title>", html))


Las líneas que te resalté en el código, son en las que se saca la etiqueta (expresión regular). Ya solo te queda acomodar este código a lo que necesitas.
Saludos!
#167
¿Puedes postear lo que tienes?



Puedes usar la libreria urllib o urllib2 para abrir una url y obtener el código.
Para sacar la etiqueta, puedes usar expresiones regulares (módulo re)
Para modificar la url, puedes usar el formateo de cadenas mira un ejemplo:
Código: python
for x in "abcd":
    print "http://www.localhost.es/ejemplo/35885.html?Code={0}&Find_Number=35&RegID2=0".format(x)


No te puedo ayudar más porque la información que das no es suficiente. Si puedes ser un poco más específico te puedo ayudar mucho más.

Saludos!
#168
Python / SmartCSS
Agosto 30, 2014, 09:00:06 PM

SmartCSS
uso

CSS entrada

CSS salida


Si alguien alguna vez ha tenido que modificar el diseño de una web (CSS) se podra dar cuenta que si en CSS hubieran variables, el diseño sería mucho  más fácil ya que si en algún momento hay que modificar el color de la web (o alguna otra propiedad) hay que cambiarlo todo a mano. El script lo programé cuando estaba modificando el diseño del foro y lo dejo acá por si a alguien le interesa, solo uso un par de expresiones regulares muy sencillas y no tiene control de errores.

Código: python
import re
import os
import sys


variables = []
diccionario = {}

def reemplazar(x):
    x = x.group()
    print "reemplazando:", diccionario[x[1:]]
    return diccionario[x[1:]]
   
def armar(x):
    x = x.group()
    variables.extend(re.findall("(.*?):(.*?);", x))
    for variable in variables:
        diccionario.update(dict([map(lambda x: x.strip(), variable)]))
    return "/*Generado por SmartCSS - Once*/"

if len(sys.argv) > 2:
    css_source =  sys.argv[1]
    css_final = sys.argv[2]
    if not os.path.isfile(css_source):
        print "archivo ingresado incorrecto"
        exit()

with open(css_source) as archivo:
    css = archivo.read()

encontrar = re.compile(r"(vars.*?{.*?})", re.MULTILINE | re.DOTALL)
salida = encontrar.sub(armar, css)

expresion = "!" + "|!".join(diccionario.keys())

final = re.sub("(%s)" % expresion, reemplazar, salida)

with open(css_final, "w") as css_final:
    css_final.write(final)


El funcionamiento es simple, Las variables se declaran en un bloque vars {} usando la misma sintaxis de CSS y se invoca la variable donde se quiere usar anteponiendo al nombre de la variable un !

Saludos!
#169
Sólo tienes que saber algo de JS:

Código: javascript
<html>
<head>
<script type="text/javascript" >
function comprobar() {
var p1 = document.formulario.p1.value;
var p2 = document.formulario.p2.value;

if (p1 != p2) {
document.getElementById("mensaje").innerHTML = "Las pass no coinciden";
} else {
document.getElementById("mensaje").innerHTML = "";
}
}
</script>
</head>
<body>
<form name="formulario">
<input type="password" name="p1"/> <div id="mensaje"></div>
<input type="password" name="p2" onkeyup="comprobar();"/>
</form>
</body>
</html>


Saludos!
#170
Python / Re:SMF Incorrect Flood Filter Headers
Agosto 23, 2014, 01:46:04 PM
Genial brother, esto lo usé hace algún tiempo para ganar un concurso en otro foro. Aunque no es necesario complicarse con el X-Forwarded-For, este es el code que usé (lo probé acá en Underc0de y aún funciona) por si le sirve a alguien más para algo.

Código: python

import time
import urllib2


class Pvisits(object):
    def __init__(self, url, nvisitas, delay=0):
        headers = {
            "Referer": url,
            "User-Agent": "Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00",
        }
   
        for x in xrange(nvisitas):
            time.sleep(delay)
            request = urllib2.Request(url, headers=headers)
            obj_web = urllib2.urlopen(request)
            codigo = obj_web.code
            if codigo == 200:
                print obj_web.geturl(), codigo, nvisitas - x
            elif codigo >= 400:
                print "Ocurrio un error:", codigo
                return


Pvisits("http://underc0de.org/foro/index.php?topic=22799.0", 20, 0)


Saludos!
#171
Python / Re:Ninja IDE: Un IDE Pensado para Python
Agosto 12, 2014, 01:35:05 AM
Muy bueno brother, yo antes de comenzar algún proyecto, siempre reviso todos los IDES que puedo, y me quedo con el que más me guste y este lo usé por algunos meses, ahora soy más de Spyder y IEP

PD: Acá hay una recopilación de IDES You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Saludos!
#172
Python / Re:Videotutoriales Django
Julio 24, 2014, 03:08:53 PM
Gracias por el link bro, te recomiendo que le eches un vistazo a "el libro de django" a mi me sirvió mucho cuando necesité usar Django.

Saludos!
#173
Python / Re:Crawler
Julio 24, 2014, 03:00:44 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Genio Once!!!!!!!
Con cambio de nick y todo!

Saludos!
ANTRAX

Jajjaja, así es bro, con cambio de nick y todo.

Saludos!
#174
Python / Crawler
Julio 23, 2014, 11:04:53 PM

Este es un pequeño crawler que busca archivos según su extensión.

Una vez instaciada la clase, se pueden cambiar ciertos atributos, como los headers HTTP que se envian a la web (atributo headers). También se puede consultar la lista de links que apuntan a otra url.

Código: python
from urlparse import urlparse
from urlparse import urljoin

import urllib2
import copy
import zlib
import sys
import re


class OpenUrl(object):
    headers = {"User-Agent":
        "Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201"}
    def open(self, url):
        try:
            request = urllib2.Request(url, headers=self.headers)
            obj_web = urllib2.urlopen(request)
            response = obj_web.info()
            data = obj_web.read()
           
            if response.has_key("Content-Encoding"):
                if "gzip" in response["Content-Encoding"]:
                    print "Codificado"
                    buffer = zlib.decompress(data, 16 + zlib.MAX_WBITS)
            else:
                buffer = data
        except Exception as e:
            print "({0}) Error: {1}".format(url, e)
            return False
        else:
            return buffer


class Crawler(OpenUrl):
    def __init__(self, url, buscar):
        self.host = "http://" + urlparse(url).hostname
        self.headers["Referer"] = self.host
        self.revisar = set([url])
        self.revisados = set()
        self.permitidos = ("html", "php", "php5")
        self.buscar = buscar
        self.externos = set()
        self.cola = set()
        self.expresion = re.compile(
            "(href|src|src)\s*?=\s*?[\"\'](.*?)[\"\']", re.I | re.S)

        self.encontrados = dict(map(lambda x: (x, set()), buscar))

    def crawl(self, profundidad):
        if profundidad > 0:
            self.revisar = self.revisar | self.cola
            if self.revisar:
                print "Preparando para abrir:", len(self.revisar), "links"
                for url in copy.copy(self.revisar):
                    if url in self.revisados:
                        pass
                    print "Abriendo:", url
                    self.revisados.add(url)
                    self.revisar.remove(url)
                    data = self.open(url)
                    if data:
                        self.parsear(url, data)
                self.crawl(profundidad - 1)
   
    def parsear(self, location, data):       
        for link in self.expresion.findall(data):
            absoluto = self.paths(location, link[1])
           
            if absoluto:
                partes = urlparse(absoluto).path
                extension = partes.split(".")[-1]
                if extension in self.buscar:
                    self.encontrados[extension].add(absoluto)
                elif extension in self.permitidos:
                    self.cola.add(absoluto)
   
    def paths(self, relative, path):
        if path.startswith(self.host):
            return path
        elif path.startswith("http"):
            self.externos.add(path)
            return False
        else:
            return urljoin(relative, path)
           

def mostrar(objeto):
    for tag in objeto.encontrados:
        print "\r\n" + tag
        print "\r\n".join(list(objeto.encontrados[tag]))
   

def info():
    print "Uso: crawler.py <host> <profundidad> <extensiones>"
    print "La lista de extensiones a buscar debe estar separada por , (coma)"

try:
    parametros = sys.argv[1:]
    url = parametros[0]
    profundidad = int(parametros[1])
    buscar = "".join(parametros[2:])
    buscar = buscar.split(",")
except:
    info()
    exit()


a = Crawler(url, buscar)
try:
    a.crawl(profundidad)
except KeyboardInterrupt:
    mostrar(a)
    exit()
else:
    mostrar(a)


Saludos!
#175
Off Topic / Re:Votá al troll del año!
Julio 22, 2014, 05:27:41 PM
El mio va sin duda para Jimeno, eso es trollear con estilo  :P

Saludos!
#176
Python / Re:Neurona Artificial Simple en Python
Julio 15, 2014, 11:15:24 PM
Muy interesante bro, apenas tenga tiempo, le echo un buen vistazo al code. Gracias.

Saludos!
#177
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Muchísimas gracias todo solucionado! La verdad es que me he instalado hoy mismo Arch Linux y voy bastante perdido perdón por las molestias causadas, intentaré fijarme mejor para la proxima vez y una última cosa, ¿si conocen algún blog o página web en español donde pueda ir avanzando mis conocimientos básicos sobre arch (como por ejemplo este fallo tan tonto como una dependencia)?

De nuevo muchas gracias y saludos 11Sep

No es ninguna molestia bro, el foro está para preguntar. No conozco ningún blog o web pero si aprendes cómo funciona el siste (Linux en general) y sabes usar pacman, yaourt y compilar programas desde el código, no deberias tener problemas con Arch.

Saludos!
#178
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Bien Jimeno al ejecutar gem install pcaprub -v '0.11.3' me arroja lo siguiente:



Saludos

Si usas ArchLinux y no sabes resolver dependencias, vas a tener muchos problemas.

Ahí te lo dice, falta la libreria pcap.h y en la página de You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login de pcaprub te dicen que uno de los requerimientos es tener instalado libpcap

Instala libpcap e intenta de nuevo y avisa si tienes algún otro problema.

Saludos!
#179
Off Topic / Re:Cambio de carrera
Julio 05, 2014, 03:20:05 PM
Acabo de pasar por lo mismo, en agosto comienzo la nueva carrera. Siempre da un poco de susto, pero explicales que economía no es lo tuyo y que no puedes seguir estudiando y eventuamente trabajar en algo que no te gusta solo porque cuando escogiste qué estudiar tomaste la desición que creiste correcta. Ellos deberían entender.

Saludos!
#180
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
¡Todos a Tor! ;) Bah, ni siquiera, AnonymoX y listo xD

O simplemente OpenDNS o DNSCrypt

Saludos!