Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Shrick en 8 Julio 2008, 15:11 pm



Título: [SOURCE] Joiner hecho en Python!
Publicado por: Shrick 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.


Título: Re: [SOURCE] Joiner hecho en Python!
Publicado por: ~~ 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 ;)


Título: Re: [SOURCE] Joiner hecho en Python!
Publicado por: Shrick 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)