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

#111
Cita de: adrianmendezRap en 20 Abril 2012, 15:32 PM
Mañana colgare el código original y las herramientas para poder ofuscarlo.

Gracias 0x5d por tu código, voy a analizarlo y a intentar implantarlo en mi código ;)

Por cierto, ahora que me acuerdo, vi hace tiempo un mensaje diciendo un buen método para ofuscar el código, aquí te dejo el mensaje:
Cita de: OTRAWEB
pero te digo un truquito , si tu programa se llama keygen.py crea un archivo llamado keygen_start.py en el cual unicamente escribis import keygen y despues ejecutas el keygen_start.py , despues de que termines de ejecutarlo python te va a crear un archivo llamado keygen.pyc ,el cual contiene tu codigo pero escrito en codigo exclusivo para el interpretador asi que no tiene mucho sentido para los seres humanos , eso si te recomiendo quites uno que otro comentario
de tu codigo porque me ha tocado ver que algunos comentarios se quedan intactos a la hora de que se crea el archivo .pyo cuando vayas a compartir tu programa asegurate de que en la carpeta unicamente este : keygen.pyc (es tu codigo compilado en bytecode) y keygen_start.py
#112
Cita de: 0x5d en 20 Abril 2012, 03:41 AM
Calculadora ofuscada :
Código (python) [Seleccionar]

import base64
def v5Wd(Abh5Wd):
    Abh5Wd=base64.b64encode(Abh5Wd)
    Abz9GZ=[Abh5Wd]
    for w2clJHd in Abz9GZ[0]:
            Abz9GZ.append(w2clJHd)
    Abz9GZ.reverse()
    AbvJHdhV3Y=""
    for Qaz9GZ in Abz9GZ:
            AbvJHdhV3Y+=Qaz9GZ
    return AbvJHdhV3Y.replace(Abh5Wd,"")
def z9GZ(Qah5Wd):
    Qaz9GZ=[Qah5Wd]
    for k2clJHd in Qaz9GZ[0]:
        Qaz9GZ.append(k2clJHd)
    Qaz9GZ.reverse()
    QavJHdhV3Y=""
    for k0clJHd in Qaz9GZ:
        QavJHdhV3Y+=k0clJHd
    return base64.b64decode(QavJHdhV3Y.replace(Qah5Wd,""))
QP="++QP"
x8mbnl2c="--wK"
kGdsVXb="6MXZg42bpNWYjlGbwlGdsVXTgEGT"
ozbyVWb15EIyVWbpJHUX=raw_input(z9GZ("==ozbyVWb15EIyVWbpJHU"))
QP=QP.replace("+","=")
y8mbnl2c="==SXQL".translate(None,"SX")
Qa2lGZ="6MXZg42bpNXa2lGZgEGT"
x8mbnl2c=x8mbnl2c.replace("-",z9GZ(QP))
z8mbnl2c="==.wL"
mcl1WdOBybk5WdnV2U=raw_input(z9GZ("68mcl1WdOBybk5WdnV2U"))
z8mbnl2c=z8mbnl2c.split(".")
ozbyVWb15EIyVWbpJHUX=v5Wd(ozbyVWb15EIyVWbpJHUX)
mbnl2c="==geeK"
EGdzVmc="6MXZgEGdzVmUgEGT"
mcl1WdOBybk5WdnV2U=v5Wd(mcl1WdOBybk5WdnV2U)
exec "QYtV3c=%s%s%s;"%(z9GZ(ozbyVWb15EIyVWbpJHUX),z9GZ(x8mbnl2c.replace("-",z9GZ(QP))),z9GZ(mcl1WdOBybk5WdnV2U))
QYtV3c2="=ozclBSYtV3UgEGT"
print z9GZ(QYtV3c2),QYtV3c
exec "EGdzVmc2=%s%s%s;"%(z9GZ(ozbyVWb15EIyVWbpJHUX),z9GZ(y8mbnl2c),z9GZ(mcl1WdOBybk5WdnV2U))
z8mbnl2c="CPH"+z8mbnl2c[0]+z8mbnl2c[1]
print z9GZ(EGdzVmc),EGdzVmc2
exec "Qa2lGZ2=%s%s%s;"%(z9GZ(ozbyVWb15EIyVWbpJHUX),z9GZ(z8mbnl2c.translate(None,"HCP")),z9GZ(mcl1WdOBybk5WdnV2U))
print z9GZ(Qa2lGZ),Qa2lGZ2
exec "kGdsVXb2=%s%s%s;"%(z9GZ(ozbyVWb15EIyVWbpJHUX),z9GZ(mbnl2c.replace("e","H").translate(None,"H")),z9GZ(mcl1WdOBybk5WdnV2U))
print z9GZ(kGdsVXb),kGdsVXb2

Hace un tiempo la programé :D

0x5d no quería ver más códigos ofuscados simplemente saber como conseguís hacerlo xD.

Tu calculadora está en base64 así si que sé hacerlo, pero no entiendo la ofuscación del otro compañero :)
#113
Sé que mi respuesta no va con tu petición, pero como conseguís ofuscar los codes de python? XD

Un saludo :)
#114
Scripting / Re: [Python] Cliente Ftp Tkinter
18 Abril 2012, 14:51 PM
Cita de: 0x5d en 18 Abril 2012, 04:48 AM
Jajaja yo uso Debian 6 y no me deja correrlo ! :P

Pues raro es, lo he probado en opensuse y en la misma versión de debian que tu y si me funciona XD

Un saludo :)
#115
Scripting / Re: [Python] Cliente Ftp Tkinter
16 Abril 2012, 19:13 PM
No si yo lo corro en ubuntu :), no hace falta windows para nada, tkinter es un módulo standar  ;-)

De todas formas aquí te dejo un screen:

#116
Cita de: Stakewinner00 en 13 Abril 2012, 23:13 PM
comenze usando miarroba, pero acabe con la web 000webhost.com creo k es batante mejor.

Para mi el mejor hosting gratuito es 000webhost.com.

Opino lo mismo que tú, sin embargo para registrarse me parece lo peor, porque de 3 cuentas que he intentado registrar me han enviado la confirmación solo a 1, por ello me decanto más hacia
byethost.com :)
#117
PHP / Re: Problemas con PHP
15 Abril 2012, 14:55 PM
Cita de: javirk en 15 Abril 2012, 14:01 PM
Código (php) [Seleccionar]
<!- buscador.php ->
<html>
<head>
<title> Buscador de antiguos alumnos </title>
</head>
<body>
<?php
$dbcnx 
= @mysql_connect("localhost""root""tubititu");
if (!
$dbcnx) {
echo ( 
"<p>No es posible establecer conexión. " "con el servidor. Inténtelo más tarde.</p>" );
exit();
}
if (! @
mysql_select_db("alumnos") ) {
echo ( 
"<p>No es posible conectar con la base de datos.</p>" );
exit();
}
?>

<p> Introduce el apellido del antiguo alumno que estás buscando:</p>
<blockquote>
<?php
$result 
= @mysql_query("SELECT ID, nombre, apellido, nacimiento, email FROM alumnos WHERE apellido LIKE "$busca"");
if (!
$result) {
echo (
"<p>Error performing query: " mysql_error() . "</p>");
exit();
}
while ( 
$row mysql_fetch_array($result) ) {
echo(
"<p>" $row["nombre"] ." " $row["apellido"] . " ".$row["email"] . " "$row["nacimiento"] . "</p>");
}
$busca=0
?>

<form action="<?=$PHP_SELF?>" method="post">
<p><br />
Apellido: <input type="text" name="busca" size="20" maxlength="255" /><br />
<input type="submit" name="submit" value="BUSCA" />
</p>
</form>
</body>
</html>


Hola, primero he copiado el código para que sea más legible.

Tu error está en la línea 21, que has usado mal las comillas antes de $busca, si te fijas has abierto el SELECT con ", y al llegar ahí lo has cerrado poniendo otra vez ", prueba a poner:
Código (php) [Seleccionar]
$result = @mysql_query("SELECT ID, nombre, apellido, nacimiento, email FROM alumnos WHERE apellido LIKE '$busca'");

Así tampoco le funcionará, si no me equivoco, quítale directamente las comillas, ya que en PHP aunque las variables estén insertadas dentro de comillas siguen devolviendo el valor que se le asigna, siempre que sean comillas dobles claro está, con comillas simples en vez de devolver el valor, devuelve el nombre de la variable $busca, cosa que tu no quieres.

Haz la consulta sin añadir ninguna comilla dentro de ella, es decir, así:

Código (php) [Seleccionar]
$result = @mysql_query("SELECT ID, nombre, apellido, nacimiento, email FROM alumnos WHERE apellido LIKE $busca");

Abriendo y cerrando las comillas solo al principio y final de la consulta.

Espero que te haya servido, un saludo :)
#118
Te aconsejo Tkinter, es muy facil de aprender y lo puedes usar con cualquier IDE :).

Luego cuando sepas de lo que van las interfaces usa PyQt :)
#119
Scripting / [Python] Cliente Ftp Tkinter
15 Abril 2012, 00:16 AM
Buenas compañeros, me ha dado por aplicarle interfaz a un viejo programa que cree, un cliente ftp.
Aún le faltan algunas cosas como una opción para retroceder de directorio y otra para subir archivos. Algún día de estos lo añadiré que me voy a la cama :).
Os recomiendo que lo guardéis en .pyw así no se ejecuta por detrás la ventana de comandos.
EDIT: Le he añadido nuevas opciones, la posibilidad de abrir nuevas más clientes en diferentes ventanas, guardar registros de tus movimientos en un txt, subir archivos y cerrar la conexión limpiando directorios y archivos, ahora cuando tenga tiempo le añado, la de retroceder, renombrar y eliminar, y con eso finalizaré :).

EDIT2: Bueno ya le he añadido las opciones que le faltaban y en mi opinión ya está terminado. Si encontráis algún bug, reportadmelo y lo corrijo gustosamente :)

Os dejo el código:

Código (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-   
#Copyright 2012 jose <jose@jose-desktop>
from Tkinter import *
import ftplib,tkMessageBox
class Ftp_Client:

def __init__(self,root):
self.root = root
self.root.title("ClientFtp")
self.top=Menu(self.root)
self.root.config(menu=self.top)
self.file = Menu(self.top)
self.about = Menu(self.top)
self.about.add_command(label="Sobre mi",command=self.informacion,underline=0)
self.file.add_command(label="Abrir nueva ventana",command=self.ventana_x,underline=0)
self.file.add_command(label="Cerrar conexion",command=self.close_conection,underline=0)
self.file.add_command(label="Registro en txt",command=self.guardar_txt,underline=0)
self.top.add_cascade(label="File",menu=self.file)
self.top.add_cascade(label="About",menu=self.about)
self.root.configure(bg="black")
self.root.maxsize("700","550")
self.root.minsize("700","550")
self.url = StringVar()
self.listadescarga = []
self.listasubida = []
self.listaeliminados = []
self.listanombres = []
self.listarenombres = []
self.directorio = StringVar()
Label(self.root,fg="green",bg="black",text="Introduce tu servidor Ftp",justify="center",font=("Helvetica",18)).grid(padx=200)
self.entrada = Entry(self.root,width="40",textvariable=self.url)
self.entrada.grid(pady=15)
self.conectar = Button(self.root,text="Conectar",command=self.conect_Ftp)
self.conectar.grid(pady=15)
Label(self.root,fg="green",bg="black",text="Directorios",font=("Helvetica",16)).grid(pady=15)
self.listbox = Listbox(self.root,width="60")
self.listbox.grid(row=4,column=0)
self.directorios = Entry(self.root,textvariable=self.directorio,width="30")
self.directorios.grid(pady=15)
self.download = Button(self.root,text="Download",command=self.panel_descarga)
self.download.grid(row=7)
self.delete = Button(self.root,text="Eliminar",command=self.eliminar)
self.delete.grid(row=7,padx=465,columnspan=500)
self.avanzar = Button(self.root,text="Avanzar",command=self.avanzar)
self.avanzar.grid(row=6,column=0,padx=380,columnspan=270)
self.renombrar = Button(self.root,text="Rename",command=self.rename)
self.renombrar.grid(row=6,padx=380,columnspan=750)
self.retroceder = Button(self.root,text="Retroceder",command=self.retroceder)
self.retroceder.grid(row=6,pady=10)
self.upload = Button(self.root,text="Upload",command=self.panel_subida)
self.upload.grid(row=7,column=0,padx=290,columnspan=260)

def conect_Ftp(self):
try:
self.conectftp = ftplib.FTP(self.entrada.get())
self.window = Tk()
self.window.maxsize("300","280")
self.window.minsize("300","280")
self.window.title("Conectar Con Servidor")
self.window.configure(bg="black")
Label(self.window,fg="green",bg="black",text="Panel de Logueo",font=("Helvetica",15)).grid(padx=70)
self.user = StringVar()
self.password = StringVar()
Label(self.window,fg="green",bg="black",text="Usuario").grid(pady=10)
self.usuario = Entry(self.window,width="20",textvariable=self.user)
self.usuario.grid(pady=10)
Label(self.window,fg="green",bg="black",text="Password").grid(pady=10)
self.enpassword = Entry(self.window,width="20",textvariable=self.password)
self.enpassword.grid(pady=10)
self.logueo = Button(self.window,text="Loguear",command=self.log_Ftp)
self.logueo.grid(pady=15)
self.window.mainloop()
except:
tkMessageBox.showinfo("Error","No existe el servidor")

def log_Ftp(self):
try:
self.conectftp.login(self.usuario.get(),self.enpassword.get())
self.datos = [self.usuario.get(),self.enpassword.get()]
self.window.destroy()
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","User y Pass Incorrectos")

def listar_directorios(self):
self.listbox.delete(0,END)
self.listadir = []
self.listbox.insert(END,"----Directorios----")
for self.directorio in self.conectftp.nlst():
self.listbox.insert(END,self.directorio)
self.listadir.append(self.directorio)

def avanzar(self):
try:
self.conectftp.cwd(self.directorios.get())
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","No existe el directorio")

def panel_descarga(self):
self.paneldescarga = Tk()
self.paneldescarga.maxsize("300","200")
self.paneldescarga.minsize("300","200")
self.paneldescarga.title("Download")
self.paneldescarga.configure(bg="black")
Label(self.paneldescarga,text="Introduce el nombre para guardar el archivo",bg="black",fg="green").grid(pady=10)
self.nombre = StringVar()
self.nombreguardado = Entry(self.paneldescarga,textvariable=self.nombre)
self.nombreguardado.grid(pady=10)
self.guardar = Button(self.paneldescarga,text="Guardar",command=self.descarga)
self.guardar.grid(pady=10)
self.paneldescarga.mainloop()
def descarga(self):
try:
self.listadescarga.append(self.directorios.get())
self.archivolocal = open(self.nombreguardado.get(),'wb')
except:
tkMessageBox.showinfo("Error","No se ha podido guardar el archivo")
self.paneldescarga.destroy()
try:
self.conectftp.retrbinary('RETR '+self.directorios.get(),self.archivolocal.write)
self.paneldescarga.destroy()
except:
tkMessageBox.showinfo("Error","No existe el archivo")

def informacion(self):
tkMessageBox.showinfo("Sobre Mi","ClienteFtp 1.0 By Rune, alumno de 2 bachiller en el centro EPLA de valencia")

def ventana_x(self):
self.root2 = Tk()
self.instancia = ventana_2(self.root2)

def guardar_txt(self):
try:
self.archivodatos = open("Backup"+self.entrada.get()+".txt","a")
self.archivodatos.write("-------------------------------------------\n")
self.archivodatos.write("Conexion con: "+self.entrada.get()+"\n")
self.archivodatos.write("Usuario--->" +self.datos[0] +"\n")
self.archivodatos.write("Password--->" + self.datos[1] + "\n")
self.archivodatos.write("---Directorios Visualizados Del Servidor---\n")
for self.direct in self.listadir:
self.archivodatos.write(self.direct+"\n")
self.archivodatos.write("\n---Archivos Descargados---\n")
for self.archiv in self.listadescarga:
self.archivodatos.write(self.archiv + "\n")
self.archivodatos.write("\n---Archivos Subidos---\n")
for self.archivo in self.listasubida:
self.archivodatos.write(self.archivo + "\n")
self.archivodatos.write("\n---Archivos Renombrados---\n")
for self.nombre in self.listanombres:
self.archivodatos.write(self.nombre)
for self.renombre in self.listarenombres:
self.archivodatos.write("----->"+self.renombre+"\n")
self.archivodatos.write("\n---Archivos Eliminados---\n")
for self.eliminado in self.listaeliminados:
self.archivodatos.write(self.eliminado)
self.archivodatos.close()
except:
tkMessageBox.showinfo("Error","Compruebe que ha inicializado alguna conexion")

def panel_subida(self):
self.panelsubida = Tk()
self.panelsubida.maxsize("350","200")
self.panelsubida.minsize("350","200")
self.panelsubida.title("Upload")
self.panelsubida.configure(bg="black")
Label(self.panelsubida,text="Introduce el nombre del archivo junto con su directorio",bg="black",fg="green").grid(pady=10)
self.nombrex = StringVar()
self.nombrex2 = StringVar()
self.nombreguardados = Entry(self.panelsubida,textvariable=self.nombrex)
self.nombreguardados.grid(pady=10)
Label(self.panelsubida,text="Introduce el nombre para guardar el archivo",bg="black",fg="green").grid(pady=10)
self.nombresubir = Entry(self.panelsubida,textvariable=self.nombrex2)
self.nombresubir.grid(pady=10)
self.subir = Button(self.panelsubida,text="Subir",command=self.subida)
self.subir.grid(pady=10)
self.panelsubida.mainloop()

def subida(self):
try:
self.archivo_origen = open(self.nombreguardados.get(),"rb")
except:
tkMessageBox.showinfo("Error","El archivo no existe")
try:
self.conectftp.storbinary('STOR ' + self.nombresubir.get(),self.archivo_origen)
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","No se ha podido subir el archivo")
self.listasubida.append(self.nombreguardados.get())
self.panelsubida.destroy()

def close_conection(self):
try:
self.conectftp.close()
self.listbox.delete(0,END)
except:
tkMessageBox.showinfo("Error","Compruebe que ha inicializado una conexion")
def retroceder(self):
try:
self.conectftp.cwd("..")
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","Compruebe que ha inicializado una conexion")
def rename(self):
self.window_rename = Tk()
self.window_rename.configure(bg="black")
self.window_rename.title("Rename")
Label(self.window_rename,text="Introduce el nombre para renombrar",bg="black",fg="green").grid()
self.renombre = StringVar()
self.renombrar = Entry(self.window_rename,textvariable=self.renombre)
self.renombrar.grid()
self.acept = Button(self.window_rename,text="Renombrar",command=self.ejec_rename)
self.acept.grid()

def ejec_rename(self):
self.fromname = self.directorios.get()
self.toname = self.renombrar.get()
try:
self.conectftp.rename(self.fromname,self.toname)
self.listanombres.append(self.fromname)
self.listarenombres.append(self.toname)
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","No existe el archivo")
self.window_rename.destroy()

def eliminar(self):
try:
self.conectftp.delete(self.directorios.get())
self.listaeliminados.append(self.directorios.get())
self.listar_directorios()
except:
tkMessageBox.showinfo("Error","No existe el archivo")


class ventana_2(Ftp_Client):
pass

if __name__ == "__main__":
root = Tk()
instance = Ftp_Client(root)
root.mainloop()
 


Un saludo :)
#120
Cita de: seba123neo en 13 Abril 2012, 20:04 PM
espera un poco, ¿ donde carajo me rei yo de vos y donde dije que no sabes programar ?,no pongas cosas que yo no dije por favor.

por si no entendiste lo que quise decir, lo que dije fue en general para todos, normalmente siempre llegan usuarios preguntando esto y que dicen "dominar" como 5 o 6 lenguajes y aun asi no saben que hacer, mi recomendacion es dejar de aprender tantos lenguajes y enfocarse a los mas conocidos y pedidos por las empresas.

Ah, vale lo entendí mal, mis disculpas :).

El caso es que quería aprender por lo menos una buena base en diferentes lenguajes para empezar la carrera que estoy aun en 2 de bachiller, pero bueno reitero mis disculpas.

Un saludo :)