elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [SOURCE] Joiner hecho en Python!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE] Joiner hecho en Python!  (Leído 3,143 veces)
Shrick

Desconectado Desconectado

Mensajes: 259


Yo no se nada, sino ¿porque pregunto?


Ver Perfil
[SOURCE] Joiner hecho en Python!
« en: 8 Julio 2008, 15:11 pm »

Siguiendo el tutorial de E0N para Visual Basic decidí hacerlo para Python, y conseguí esto:

Funcionamiento:

Código
  1. python Joiner.py archivo_principal lugar_destino

El "archivo.txt" debe contener los nombres de los ejecutables.

Ejemplo:

Código:
gui.exe
cepillo.exe
juego.exe

Joiner.py:

Código:
import string
import os
import sys

archivo = sys.argv[1] # Metemos el archivo principal
extraccion = sys.argv[2] # Donde queremos que se guarde
archivos_leidos = [] # Va a contener todas las direcciones
f = open('archivos.txt', 'r') # Abrimos para lectura de archivos
i = 0 # Lo usamos para asignar dinamicamente strings a archivos_leidos
ruta = os.getcwd()
ruta = ruta.split('\\')
ruta = os.getcwd()
j = len(f.readlines())
f.seek(0)
while i < j:
    c = f.readline()
    d = c.split('\n')
    d = d[0]
    archivos_leidos.append(i)
    archivos_leidos[i] = d
    i+=1
f.close()
def Juntar():
    Firma = "[**-_-**]"
    SubFirma = "^^_~~_^^"

    os.system('copy stub.dll stub.exe')
    print archivos_leidos
    n = 0
    p = ''
    while n < i:
        p = archivos_leidos[n]
        o = open(p, 'rb')
        archivo = o.read()
        o.close()

        f = open('stub.exe', 'ab')
        f.write(Firma)
        f.write(archivo+SubFirma)
        f.write(archivos_leidos[n]+SubFirma)
        f.write(extraccion+SubFirma)
        f.write('Si')
        f.close()
        n +=1
Juntar()

Utiliza un .txt para obtener las direcciones de los archivos.

Stub.py:

Código:
import string
import os
import sys

def Ruta():
    print os.path.dirname + '\\'+ os.path.basename

Archivo = ''
Nombre = ''
RutaExt = ''
Ejecutar = ''

Firma = '[**-_-**]'
SubFirma = '^^_~~_^^'

f = open(ruta(), 'rb')

Todo = f.read()

f.close()

Partes = Todo.split(Firma)

n=1

while n < len(Partes):
    SubPartes = Partes.split(SubFirma)
    i=0
    for i in len(SubPartes):
        if i == 0:
            Archivo = SubPartes(i)
        elif i == 1:
            Nombre = SubPartes(i)
        elif i == 2:
            RutaExt = SubPartes(i)
        elif i == 3:
            Ejecutar = Subpartes(i)

    f = open(RutaExt + '\\' + Nombre, 'wb')
    f.write(Archivo)
    f.close()
    #i += 1

Todavía estoy portandolo, me queda mirar, deducir y escribir algunas cosillas :rolleyes: .

Definitivamente Python es potente

Funciona con el Stub.dll de E0N programado en Visual Basic, para pasar de .py a .exe utilizar el cx_freeze.


« Última modificación: 8 Julio 2008, 22:15 pm por Shrick » En línea

Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: [SOURCE] Joiner hecho en Python!
« Respuesta #1 en: 10 Julio 2008, 02:04 am »

Citar
Definitivamente Python es potente

Hombre, solo se necesita poder tratar archivos xD Ahora ha hacerte también el stub, muy buen trabajo ;)


En línea

Shrick

Desconectado Desconectado

Mensajes: 259


Yo no se nada, sino ¿porque pregunto?


Ver Perfil
Re: [SOURCE] Joiner hecho en Python!
« Respuesta #2 en: 11 Julio 2008, 17:07 pm »

Tras varias de estudio, dedicación y cambios veo que es imposible hacer el stub en python, porque al pasar de .py a .exe el código se queda estático cualquier cambio por pequeño que sea da error de un archivo necesario al crear el .exe. Os dejo el código fuente de lo que hice:

Joiner.py

Código
  1. import string
  2. import os
  3. import sys
  4.  
  5. archivo = sys.argv[1] # Metemos el archivo principal
  6. extraccion = sys.argv[2] # Donde queremos que se guarde
  7. archivos_leidos = [] # Va a contener todas las direcciones
  8. f = open('archivos.txt', 'r') # Abrimos para lectura de archivos
  9. i = 0 # Lo usamos para asignar dinamicamente strings a archivos_leidos
  10. ruta = os.getcwd()
  11. ruta = ruta.split('\\')
  12. ruta = os.getcwd()
  13. j = len(f.readlines())
  14. f.seek(0)
  15. while i < j:
  16.    c = f.readline()
  17.    d = c.split('\n')
  18.    d = d[0]
  19.    archivos_leidos.append(i)
  20.    archivos_leidos[i] = d
  21.    i+=1
  22. f.close()
  23.  
  24. def Juntar():
  25.    Firma = "[**-_-**]"
  26.    SubFirma = "^^_~~_^^"
  27.  
  28.    os.system('copy Stub.dll Stub.exe')
  29.    n = 0
  30.    p = ''
  31.    while n < i:
  32.        p = archivos_leidos[n]
  33.        o = open(p, 'rb')
  34.        archivo = o.read()
  35.        o.close()
  36.  
  37.        f = open('stub.exe', 'ab')
  38.        f.write(Firma)
  39.        f.write(archivo+SubFirma)
  40.        a = archivos_leidos[n].split('\\')
  41.        archivos_leidos[n] = a[(len(a)-1)]
  42.        f.write(archivos_leidos[n]+SubFirma)
  43.        f.write(extraccion+SubFirma)
  44.        f.write('Si')
  45.        f.close()
  46.        n +=1
  47. Juntar()

Stub.py:

Código
  1. import string
  2. import os
  3. import sys
  4.  
  5. Ruta = os.getcwd() + '\\' + os.path.basename(sys.argv[0])
  6.  
  7. Archivo = ''
  8. Nombre = ''
  9. RutaExt = ''
  10. Ejecutar = ''
  11.  
  12. Firma = '[**-_-**]'
  13. SubFirma = '^^_~~_^^'
  14.  
  15. f = open(Ruta, 'rb')
  16.  
  17. Todo = f.read()
  18.  
  19. f.close()
  20.  
  21. Partes = Todo.split(Firma)
  22.  
  23. n=1
  24. i=0
  25.  
  26. while n < len(Partes):
  27.    SubPartes = Partes[n].split(SubFirma)
  28.    while i < len(SubPartes):
  29.        if i == 0:
  30.            Archivo = SubPartes[i]
  31.        elif i == 1:
  32.            Nombre = SubPartes[i]
  33.        elif i == 2:
  34.            RutaExt = SubPartes[i]
  35.        elif i == 3:
  36.            Ejecutar = Subpartes[i]
  37.        i += 1
  38.    f = open(RutaExt + '\\' + Nombre, 'wb')
  39.    f.write(Archivo)
  40.    f.close()
  41.    n += 1
  42.    if Ejecutar == 'Si':
  43.        os.system(RutaExt + '\\' + Nombre)
En línea

Ubuntu User
Pascal (2008/2009)
C/C++ (2009/¿?)
8080 Assembler (2009/2010)
MIPS I Assembler (2010/¿?)

Todo lo que yo haga o diga esta bajo:



No pertenece ni a mi ni a nadie :P .
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines