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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25
111  Programación / Scripting / Re: Re: Sublistas en bash? en: 12 Septiembre 2019, 23:29 pm
Saludos,

- Como todo lenguaje, cada uno tiene mejores prestaciones para hacer una u otra cosa. Bash es bastante poderoso, aunque en Listas y SubListas me parece que resalta un poco más Python.

- Teniendo en cuenta esto y entendiendo Listas y SubListas de Bash como las que tiene Python: http://elclubdelautodidacta.es/wp/2011/09/python-capitulo-18-creacion-de-sublistas/, en Bash serías algo así el manejo de SubListas:

Código
  1. EdSon@EdePC ~
  2. $ ARRAY=( zero one two three four five)
  3.  
  4. EdSon@EdePC ~
  5. $ echo ${ARRAY[0]}
  6. zero
  7.  
  8. EdSon@EdePC ~
  9. $ echo ${ARRAY[4]}
  10. four
  11.  
  12. EdSon@EdePC ~
  13. $ echo ${ARRAY[*]}
  14. zero one two three four five
  15.  
  16. EdSon@EdePC ~
  17. $ echo ${ARRAY[*]:2}
  18. two three four five
  19.  
  20. EdSon@EdePC ~
  21. $ echo ${ARRAY[*]:2:1}
  22. two
  23.  
  24.  

- Para crear una Lista (Array) cuyo nombre sea el valor de una variable:

Código
  1. EdSon@EdePC ~
  2. $ NOMBRE="arrayName"
  3.  
  4. EdSon@EdePC ~
  5. $ echo $NOMBRE
  6. arrayName
  7.  
  8. EdSon@EdePC ~
  9. $ eval $NOMBRE=\(1 2 3 4\)
  10.  
  11. EdSon@EdePC ~
  12. $ echo ${arrayName[*]}
  13. 1 2 3 4
  14.  
  15. EdSon@EdePC ~
  16. $ echo ${arrayName[2]}
  17. 3
  18.  

- Referencias:
-- Array en Bash (Advanced Bash-Scripting Guide)
http://tldp.org/LDP/abs/html/arrays.html
Gracias por la solución

Enviado desde mi VTR-L09 mediante Tapatalk
112  Programación / Scripting / Sublistas en bash? en: 11 Septiembre 2019, 19:48 pm
Hola, estoy haciendo un script para linux, en la cual se necesitarían sublistas (no impresindibles)
Sabrían si existe algo parecido? O si es posible

Si no existe. Como puedo crear una lista cuyo nombre es el valor de otra variable?

Gracias
113  Informática / Hardware / Re: Re: Nas o barebone para pequeño servidor web y almacenamiento en casa? en: 17 Julio 2019, 22:07 pm
Yo para servidor web personal utilizo un notebook de 100€ desde hace 10 años. Le hice un underclock de 1'6ghz a 1'2ghz y reducí todas las frecuencias.

De sistema le metí un ubuntu server con linux, apache y node.js. Para controlarlo uso webmin por el puerto 10.000. Configurar por ejemplo un LAMP Linux, Apache, MySQL y PHP de 0 con un disco duro vacio no tardas ni 15minutos en tenerlo funcionando online sirviendo tu web. También le tengo ftp usando la versión cifrada. Puedes ponerle un xfce o algo por el estilo si quiered interfaz gráfica, pero es menos que necesaria.

Es bastante banal el proceso, abrir puertos, configurar un par de archivos y poco más. A mi me gusta usar notebooks por el hecho de que se pueden mover de forma sencilla y con la batería para incluso utilizar una red pública de wi-fi con más bandswitch o que te proporcionan más privacidad.

También puedes contratar un VPS por más o menos 3 euros al mes. Todo depende de seguridad, estimación de tráfico, servicios, uso...
Cuando te refieres a un notebook te refieres a un barebone de Apple? Es que quisiera un dispositivo sin pantalla ni teclado ni raton solamente un torre pequeña de 24x21cm (barebone) Gracias, se podria hacer igualmente con un barebone o NAS?

Enviado desde mi VTR-L09 mediante Tapatalk
114  Informática / Hardware / Nas o barebone para pequeño servidor web y almacenamiento en casa? en: 17 Julio 2019, 20:09 pm
Hola, me gustaría tener un servidor donde yo pueda guardar mi proyecto web y scripts, en mi casa (y no depender de externos, en caso de desarrollo web) para ello cualquier pc serviría? Siempre y cuando instales XAMPP o Wampp. Que es más recomendable un barebone o un NAS?

Además como estaría las 24h encendido, ¿cual haría menos ruido? ya que estaría en mi habitación. Y el tema de refrigeramiento, ¿cual se calendaría menos? (Si tiene un SSD, tendría menos), además no tengo pensado en un uso continuo solo para almacenar, y poderme conectar por FTP y por el navegador, por la cual tendría un Ubuntu Server instalado.

Gracias de antemano

115  Seguridad Informática / Hacking / Re: [Ayuda] Encontrar Vulnerabilidades en: 10 Julio 2019, 21:46 pm
Saludos, soy nuevo en el foro y no se si estoy poniendo el post en una zona equivocada. Lo que si se es que no encuentro otro sitio donde ponerlo ya que esta es la sección de Bugs y Exploits.

Bien, mi pregunta es si hay algun programa que encuentre las vulnerabilidades de una página web y poder "infiltrarte por ese fallo". He estado buscando pero no encuentro ninguno bueno.

También pediría ayuda para intentar "Hackear" una página web... En realidad no es hackear, sino, como he dicho antes, aprovechar un fallo y hacer modificaciones en la web, sin embargo, no quiero hacer daño a la web, sino cambiar unos parámetros en mi cuenta, que yo no puedo hacer y que lo tendría que hacer un Admin o acceder a la Base de Datos

Quien quiera ayudarme que contacte conmigo.

Gracias y Feliz Año Nuevo !!  ;D

Hola, para querer aprender a hackear una web, cambiando datos de tu cuenta en esa web, primero debes de saber desarrollo web, y todo el funcionamiento de sesiones php y logins,DB's,etc...

Tienes que saber muy bien DB, consultas, y como los programadores hacen para evitar ataques sql (inyeccion sql ) con funciones como mysqli_real_escape() (ya no tan recomendable, mas recomendable consultas preparadas), saber hacer consultas  a DB (base de datos) inserción,eliminacion,modificacion.

En conclusión saber hacer una aplicacion web básica con conexion de DB y Sessiones php.

Después de saber hacer todo esto (es recomendable). ya te puedes plantear aprender hacking ético orientado en este caso a hacking web.

Saber hackear no es como en las peliculas. Sabiendo todo lo anterior, debes saber manejarte muy bien en el entorno Linux (sobre todo manejarte muy bien en la terminal), después no solamente saber hacer programacion Web (HTML, CSS, JS/jQuery PHP Mysql/PDO) si no tambien programacion orientada a hacking (bash/Linux, Python) el .sh que es bash linux es archivos de ejecucion de lotes como .bat en windows, y python es un gran lenguaje de programacion (muy recomendable para hacking, AI, etc...). Tambien C++ (en caso de C++ para hacking web no hace falta). Y después saber utilizar Kali Linux y su mayoria de herramientas como sqlmap (entrar en DB's) hydra (Fuerza bruta).

Con todo ello, no vas a encontrar un programa que te haga todo el trabajo en todo caso deberás aprender y con todo el conocimiento de proramacion puedes crear tu propio programa.
116  Programación / Scripting / Re: Conexion sockets en python con IP publica en: 29 Mayo 2019, 16:53 pm
En conexion directa es el cliente el que envia la conexion al servidor.
Tienes que abrir el puerto a la maquina que recobe la conexion.
El router no es adivino y en el caso de tener muchos equipos comectados al mismo router, como sabe el router cual de esos equipo recibira la conexion? Para eso tienes que seleccionar la ip publica (que identifica al equipo que recibe la conexion y abrir los puertos para que el equipo pueda estar en modo escucha a la espera de tu conexion desde el cliente.

En caso de que la conexion sea inversa, es el servidor el que se configura para establecer la conexion con el cliente. Entonces si tienes que abrir los puertos de tu router hacia el equipo en el que estas ejecutando el cliente.a

Imagino que no has escrito tu el codigo. En este caso es el servidor el cual está a la escucha.
Solucion 1: Abre el puerto del router domde estas ejecutando la aplicacion servidor. (Maquina a ser controlada) Cierra el puerto de tu router de tu casa.

Solucion 2: Utiliza otra aplicacion que establezca la conexion desde el equipo que quieres controlar al tuyo.
Es probable que tengas una ip-dinamica (cambia cada x tiempo o si apagas el router un rato.)
Puedes comprobarlo, mira tu ip apaga el router 10 segundos y vuelve a mirar tu ip. Si cambia la ip que configuraste en la aplicacion no coincidira con tu ip actual por lo que no te llegara la conexion desde el equipo a controlar a tu casa. Para solicionar ese problema tiemes que usar un servicio de terceros como.no-ip. Entonces configuras la ip de NO-IP en la aplicacion servidor instalada en la maquina a cpntrolar. Al tener la aplicacion de no-ip abierta en el pc de tu casa, esta envia tu ip actual, y si esta cambia el programa envia la nueva direccion ip. Desde el servidor otorgado por no-ip se redirecciona la conexion del servidor a tu equipo. Por lo que siempre te llegara la conexion desde el equipo a controlar a tu equipo.

No instales ningun programa que te permita controlar un equipo si autorizacion por escrito del duenho del equipo y/o del administrador/propietario de la red local.
En caso contrario estaras cometiendo un delito.
El desconocimiento del codigo penal no exime de su cumplimiento.
Consulta las penas multas del pais en el que resides y tambien del pais en donde esta el servidor en caso de que no este en el mismo que desde donde te encuentras.

Hay muchos manuales. Si te interesa el tema instala algun servidor en el pc con virtualbox usando manuales y experimenta desde tu movil desde tu casa y la casa de un amigo que tenga wi-fi o algun bar/centro comercial.
Esta chulo el tema.

Muchas gracias, por la explicación, probaré lo que comentaste sobre un server en virtualbox, y no te preocupes por esto:
Citar
No instales ningun programa que te permita controlar un equipo si autorizacion por escrito del duenho del equipo y/o del administrador/propietario de la red local.
En caso contrario estaras cometiendo un delito.
El desconocimiento del codigo penal no exime de su cumplimiento.
Consulta las penas multas del pais en el que resides y tambien del pais en donde esta el servidor en caso de que no este en el mismo que desde donde te encuentras.

Mis objetivos no son dañinos sino solamente para aprender y entender. Solamente la conexion sockets lo copie de internet pero lo demás lo desarrollé yo, esto permite funciones como transferir archivos del servidor al ciente y viceversa. Como también moverse por las carpetas, y ver sus archivos (con funciones cd, ls, ls -l ...). Solamente disimular un posible funcionamiento de un backdoor.
117  Programación / Desarrollo Web / Re: Permitir iframe solo desde un determinado dominio en: 2 Mayo 2019, 19:24 pm
Hola, necesito ayuda.
Tengo dos sitios web, ejemplo sitio1.com y sitio2.com
En sitio1.com necesito insertar un iframe de sitio2.com, pero quiero que sitio2.com solo permita que se inserte por iframe de sitio1.com y no me lo roben de otros sitios.
Qué script debería poner en sitio2.com?
Muchas gracias

Hola, para poner un iframe es:
Código:
<iframe src="sitio1.com"></iframe>
info: https://www.w3schools.com/tags/tag_iframe.asp

Lo que no acabo de entender es esto.
Citar
pero quiero que sitio2.com solo permita que se inserte por iframe de sitio1.com y no me lo roben de otros sitios
A que te refieres? Quieres decir que en el iframe no puedan copiar el sitio web, que no puedan selecionar texto?*. O ha que te refieres?

* Si es eso, solamente es el sitio web inserta este css:
Código:
*{
   user-select:none;

Lo que hace esto, es que no puedan seleccionar ningún texto, en toda la web.
118  Comunicaciones / Redes / Re: Re: ¿Se puede sacar la sumascara de una ip? en: 4 Abril 2019, 10:01 am
No. Bien que te puedes guiar por cada una de la clase de la IP, pero ese método es antiguo y poco fiable. Una IP 192.168.1.13 (Clase C) puede ser /24 (255.255.255.0) o cualquier otra que le ponga yo, dado a que es privada. No se claramente si es esta tu pregunta...
Y al no poder averiguarlo, se puede saber los tipos de prefijos de una ip de sitio web, a traves de algun comando wn la terminal Linux/GNU?

Enviado desde mi VTR-L09 mediante Tapatalk
119  Comunicaciones / Redes / Re: Re: ¿Se puede sacar la sumascara de una ip? en: 4 Abril 2019, 09:58 am
No. Bien que te puedes guiar por cada una de la clase de la IP, pero ese método es antiguo y poco fiable. Una IP 192.168.1.13 (Clase C) puede ser /24 (255.255.255.0) o cualquier otra que le ponga yo, dado a que es privada. No se claramente si es esta tu pregunta...
Ok gracias

Enviado desde mi VTR-L09 mediante Tapatalk
120  Programación / Scripting / Conexion sockets en python con IP publica en: 26 Marzo 2019, 23:54 pm
Hola, estoy haciendo un cliente-servidor, para transferencias de archivos,entre el instituto y mi casa.

Servidor.py

Código:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#Se importa el módulo
"""
FUNCIONA EL DOWNLOAD -F
FUNCIONA EL DOWNLOAD -D
"""
import socket, os, getpass, shutil, shlex, commands, tarfile, subprocess, numpy
from pexpect import pxssh
import signal
from subprocess import Popen, PIPE
name_host_server = getpass.getuser()
carpeta_actual_server = os.getcwd()
#instanciamos un objeto para trabajar con el socket
ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = "192.168.8.100" #inti
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
signal.signal(signal.SIGTSTP, handler)
#Puerto y servidor que debe escuchar
ser.bind((server, port))
#Aceptamos conexiones entrantes con el metodo listen. Por parámetro las conexiones simutáneas.
ser.listen(1)
 
#Instanciamos un objeto cli (socket cliente) para recibir datos
cli, addr = ser.accept() 
while True:
    #creamos comandos especiales para el servidor-cliente
    recibido = cli.recv(1073741824) # 1GB
    cd_recibido = recibido.startswith("cd")
    text_recibido = recibido.startswith("-t")
    ventana_error_recibido = recibido.startswith("-m --error") #ok
    ventana_info_recibido = recibido.startswith("-m --info") #ok
    ventana_input_recibido = recibido.startswith("-m --input") #ok
    ventana_question_recibido = recibido.startswith("-m --question") #ok
    ventana_warning_recibido = recibido.startswith("-m --alert") #ok
    ventana_notification_recibido = recibido.startswith("-m --notification") #ok
    descargar_archivo = recibido.startswith("download -f")
    descargar_carpeta = recibido.startswith("download -d")
    recibido_eliminar_tmp = recibido.startswith("Eliminar download")
    copiar_archivo_listo = recibido.startswith("copy -f ready")
    copiar_carpeta_listo = recibido.startswith("copy -d ready")
    sudo = recibido.startswith("sudo")
    instalar = recibido.startswith("install ready")
    desinstalar = recibido.startswith("uninstall ready")
    fb = recibido.startswith("fb")
    #ejecucion de cuyos comandos
    if text_recibido == 1:
        texto_filtro = recibido.replace("-t ","")
        print(texto_filtro)
        cli.send(texto_filtro)
    elif cd_recibido == 1:
        texto_filtro = recibido.replace("cd ","")
        os.chdir(texto_filtro)
        cli.send(texto_filtro)
    elif ventana_input_recibido == 1:
        texto_filtro = recibido.replace("-m --input ","")
        comando = commands.getoutput("zenity --entry --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando)
    elif ventana_error_recibido == 1:
        texto_filtro = recibido.replace("-m --error ","")
        comando = commands.getoutput("zenity --error --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando)
    elif ventana_info_recibido == 1:
        texto_filtro = recibido.replace("-m --info ","")
        comando = commands.getoutput("zenity --info --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando)
    elif ventana_notification_recibido == 1:
        texto_filtro = recibido.replace("-m --notification ","")
        comando = commands.getoutput("zenity --notification --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando + "\n")
    elif ventana_warning_recibido == 1:
        texto_filtro = recibido.replace("-m --alert ","")
        comando = commands.getoutput("zenity --warning --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando)
    elif ventana_question_recibido == 1:
        texto_filtro = recibido.replace("-m --question ","")
        comando = commands.getoutput("zenity --question --title '' --text %s --display :0" % texto_filtro)
        cli.send(comando)
    elif recibido == "python":
        cli.send("error sintaxis")
    elif recibido == "nano":
        cli.send("error sintaxis")
    elif descargar_archivo == 1:
        archivo_filtro = recibido.replace("download -f ","")
        lista_nombre_archivo = archivo_filtro.split("/")
        ultimo_item_lista = len(lista_nombre_archivo)
        item_nombre = ultimo_item_lista - 1
        nombre_archivo = lista_nombre_archivo[item_nombre]
        nombre_archivo1 = "".join(nombre_archivo.split())
        abrir_archivo = open(archivo_filtro,"rb")
        archivo_bin = abrir_archivo.read()
        cli.send("download -f ready|"+ nombre_archivo1+"|"+ archivo_bin)
    elif descargar_carpeta == 1:
        filtro = recibido.replace("download -d ","")
        lista = filtro.split("/")
        directorio = len(lista) -1
        directorio_fin = lista[directorio]
        directorio_fin1 = "".join(directorio_fin.split())
        destino_gz = "/tmp/"+directorio_fin1
        ruta_comprimida = "/tmp/"+directorio_fin1+".tar.bz2"
        archivo_gz = shutil.make_archive(destino_gz, "bztar",filtro)
        archivo = open(ruta_comprimida,"rb")
        archivo_bin = archivo.read()
        cli.send("download -d ready |"+archivo_bin+" | "+ruta_comprimida)
    elif recibido_eliminar_tmp:
        filtro = recibido.replace("Eliminar download ","")
        os.system("shred -u "+filtro)
    elif copiar_archivo_listo == 1:
        filtro = recibido.replace("copy -f ready |","")
        lista = filtro.split(" | ")
        archivo = lista[0]
        destino = lista[1]
        nombre = lista[2]
        ruta = destino+"/"+nombre
        abrir = open(ruta,"w")
        abrir.write(archivo)
        cli.send("\033[1;32m"+"[+]"+"\033[1;37m"+" Archivo copiado correctamente a"+"\033[1;31m"+":"+"\033[1;37m"+ruta)
        abrir.close()
    elif copiar_carpeta_listo == 1:
        filtro = recibido.replace("copy -d ready |","")
        lista = filtro.split(" | ")
        archivo = lista[0]
        destino = lista[1]
        carpeta = lista[2]
        ruta = "/tmp/"+carpeta+".tar.bz2"
        abrir = open(ruta,"w")
        abrir.write(archivo)
        abrir.close()
        os.system("mkdir "+destino+"/"+carpeta)
        extraer_destino = destino+"/"+carpeta
        desempaquetar = tarfile.open(ruta)
        desempaquetar.extractall(path=extraer_destino)
        os.system("shred -u "+ruta)
        cli.send("Eliminar copy "+ruta)
        #si no hay comandos especiales para ejecutar, se ejecutará los comandos de linux
    elif sudo == 1:
        filtro_c = recibido.replace("sudo ","")
        filtro = recibido.split(" | ")
        comando = filtro[0]
        contrasena = filtro[1]
        command = commands.getoutput("echo "+contrasena+" | sudo -u root -S "+comando)
    elif instalar == 1:
        filtro = recibido.replace("install ready ","")
        lista = filtro.split(" | ")
        comando = lista[0]
        contrasena = lista[1]
        comando = commands.getoutput("echo "+contrasena+" | sudo -u root -S apt-get install -y "+comando)
    elif desinstalar == 1:
        filtro = recibido.replace("uninstall ready ","")
        lista = filtro.split(" | ")
        comando = lista[0]
        contrasena = lista[1]
        comando = commands.getoutput("echo "+contrasena+" | sudo -u root -S apt-get --purge remove -y "+comando)
    elif fb == 1:
        s = pxssh.pxssh()
        ssh = recibido.replace("fb ","")
        lista = ssh.split()
        localhost = lista[0]
        usuario = lista[1]
        comando = commands.getoutput("crunch 1 12 abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ0123456789 -c 100")
        dic = comando.split("\n")
        del dic[0:7]
        for diccionario in dic:
            try:
                s.login(localhost,usuario,diccionario)
                cli.send("La contrasena es: "+diccionario)
                break;
            except:
                cli.send("Buscando contrasena: "+diccionario)
    else:
        salida = commands.getoutput(recibido)
        cli.send(salida + "\n")           
if ser == True:
    print("Conexion cerrada")
#Cerramos la instancia del socket cliente y servidor
cli.close()
ser.close()

Y el cliente.py

Código:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#Variables
import socket, os, signal, sys, tarfile, shutil, getpass
host = "192.168.8.100" #casa
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
    sys.exit()
signal.signal(signal.SIGTSTP, handler)
obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Conexion con el servidor. Parametros: IP (puede ser del tipo 192.168.1.1 o localhost), Puerto
obj.connect((host, port))
name_host_server = socket.gethostname()
carpeta_actual_server = os.getcwd()
print("\033[1;32m"+"[+]"+"\033[1;37m"+" conexion establecida")
 
#Creamos un bucle para retener la conexion
while True:
    #Instanciamos una entrada de datos para que el cliente pueda enviar mensajes
    mens = raw_input("\033[1;31m"+host+"\033[1;32m"+"@"+name_host_server+":"+"\033[1;37m"+"$ ")
    if mens == "close":
            os.system("fuser -k -n tcp %s" % port)
            break
    #Con el metodo send, enviamos el mensaje
    obj.send(mens)
    data = obj.recv(1073741824)
    descargar_archivo = data.startswith("download -f ready")
    descargar_carpeta_listo = data.startswith("download -d ready")
    copiar_archivo = mens.startswith("copy -f")
    copiar_carpeta = mens.startswith("copy -d")
    eliminar_copiar_carpeta = data.startswith("Eliminar copy")
    sudo = mens.startswith("root")
    instalar = mens.startswith("install")
    desinstalar = mens.startswith("uninstall")
    #descargar un archivo del servidor al cliente
    if descargar_archivo == 1:
            ruta = raw_input("ruta absoluta, donde se descargará el archivo >>\n")
            archivo_filtro = data.replace("download -f ready|","")
            lista_archivo = archivo_filtro.split("|")
            nombre_archivo = lista_archivo[0]
            restante = nombre_archivo+"|"
            archivo_filtro2 = archivo_filtro.replace(restante,"")
            crear_ruta = ruta+"/"+nombre_archivo
            archivo_descargar = open(crear_ruta,"a")
            archivo_descargar.write(archivo_filtro2)
            archivo_descargar.close()
            print("\033[1;32m"+"[+]"+"\033[1;37m"+"archivo descargado correctamente")
    #copiar un archivo del cliente al servidor
    elif descargar_carpeta_listo == 1: #descargar carpeta del servidor al cliente
            ruta = raw_input("ruta absoluta donde descargarás el directorio >>\n")
            filtro = data.replace("download -d ready |","")
            lista = filtro.split(" | ")
            archivo = lista[0]
            ruta_tmp = lista[1]
            lista_ruta = ruta_tmp.split("/")
            ultimo = len(lista_ruta) -1
            nombre = lista_ruta[ultimo]
            nombre_dir = nombre.split(".")
            nombre_directorio = nombre_dir[0]
            abrir = open(ruta_tmp,"w")
            abrir.write(archivo)
            abrir.close()
            os.system("mkdir "+ruta+"/"+nombre_directorio)
            desempaquetar = tarfile.open(ruta_tmp)
            desempaquetar.extractall(path=ruta+"/"+nombre_directorio+"/")
            eliminar = open(ruta_tmp,"w")
            eliminar.write("00000000")
            eliminar.close()
            os.system("shred -u "+ruta_tmp)
            obj.send("Eliminar download "+ruta_tmp)
            print("\033[1;32m"+"[+]"+"\033[1;37m"+"carpeta descargada correctamente")
    elif copiar_archivo == 1:
            destino_servidor = raw_input("ruta absoluta, donde se copiará el archivo al servidor >>\n")
            filtro = mens.replace("copy -f ","")
            abrir = open(filtro,"rb")
            leer = abrir.read()
            lista = filtro.split("/")
            lon_lista = len(lista)
            ultim_lista = lon_lista-1
            nombre = lista[ultim_lista]
            nombre1 = "".join(nombre.split())
            obj.send("copy -f ready |"+leer+" | "+destino_servidor+" | "+nombre1)
    elif copiar_carpeta == 1:
            destino_servidor = raw_input("ruta absoluta, donde se copiará la carpeta al servidor >>\n")
            filtro = mens.replace("copy -d ","")
            lista = filtro.split("/")
            lon_lista = len(lista)
            ultim_lista = lon_lista-1
            directorio = lista[ultim_lista]
            directorio1 = "".join(directorio.split())
            tmp = "/tmp/"+directorio1
            tar = "/tmp/"+directorio1+".tar.bz2"
            comprimir = shutil.make_archive(tmp,"bztar",filtro)
            abrir = open(tar,"rb")
            leer = abrir.read()
            obj.send("copy -d ready |"+leer+" | "+destino_servidor+" | "+directorio1)
            print("\033[1;32m"+"[+]"+"\033[1;37m"+" Directorio copiado correctamente")
    elif  eliminar_copiar_carpeta == 1:
            filtro = data.replace("Eliminar copy ","")
            os.system("shred -u "+filtro)
    elif sudo == 1:
        contrasena = getpass.getpass("Contraaseña del usuario root: ")
        mensaje = mens.replace("root ","")
        obj.send("sudo "+mensaje+" | "+contrasena)
    elif instalar == 1:
        contrasena = getpass.getpass("Contraseña del usuario root: ")
        mensaje = mens.replace("install ","")
        obj.send("install ready "+mensaje+" | "+contrasena)
        while data == "error sudo install":
            contrasena = getpass.getpass("Contraseña del usuario root: ")
            pass
    elif desinstalar == 1:
        contrasena = getpass.getpass("Contraseña del usuario root: ")
        mensaje = mens.replace("uninstall ","")
        obj.send("uninstall ready "+mensaje+" | "+contrasena)
    elif mens == "man":
        print("""
            """+"\033[1;31m"+"""-t"""+"\033[1;37m"+""" [texto] : Envía un mensaje por la terminal.\n
            """+"\033[1;31m"+"""-m --error"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de error.\n
            """+"\033[1;31m"+"""-m --info"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de información.\n
            """+"\033[1;31m"+"""-m --input"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de entrada de texto.\n
            """+"\033[1;31m"+"""-m --question"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de pregunta.\n
            """+"\033[1;31m"+"""-m --alert"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de alerta.\n
            """+"\033[1;31m"+"""-m --notification"""+"\033[1;37m"+""" "[texto]" : Muestra un diálogo de notificación.\n
            """+"\033[1;31m"+"""download -f"""+"\033[1;37m"+""" [ruta del archivo del servidor a descargar] : Descarga un archivo del servidor al cliente.\n
                Cuando lo ejecutes, te preguntará donde quieres que se guarde el archivo.\n
                    """+"\033[1;31m"+"""$"""+"\033[1;37m"+""" download -f /home/administrador/Imágenes/cleanet.png
                    ruta absoluta, donde se descargará el archivo """+"\033[1;31m"+""">>"""+"\033[1;37m"+"""
                    /home/administrador/Escritorio\n
                    [!]
            """+"\033[1;31m"+"""download -d"""+"\033[1;37m"+""" [ruta del directorio del servidor a descargar] : Descarga un directorio del servidor al cliente.\n
                Cuando lo ejecutes, te preguntará donde quieres que se guarde el directorio.\n
                    """+"\033[1;31m"+"""$"""+"\033[1;37m"+""" download -d /home/administrador/scripts\n
                    ruta absoluta, donde descargarás el directorio """+"\033[1;31m"+""">>"""+"\033[1;37m"+"""
                    /home/administrador/Escritorio\n
            """+"\033[1;31m"+"""copy -f"""+"\033[1;37m"+""" [ruta del archivo del cliente para copiarlo al servidor] : copia un archivo del cliente al servidor.\n
                Cuando lo ejecutes, te preguntará donde quieres que se guarde el archivo.\n
                    """+"\033[1;31m"+"""$"""+"\033[1;37m"+""" copy -f /home/administrador/conexion.py\n
                    ruta absoluta, donde se copiará el archivo al servidor"""+"\033[1;31m"+""">>"""+"\033[1;37m"+"""
                    /home/administrador/Documentos\n
            """+"\033[1;31m"+"""copy -d"""+"\033[1;37m"+""" [ruta del directorio del cliente para copiarlo al servidor] : copia un directorio del cliente al servidor.\n
                Cuando lo ejecutes, te preguntará donde quieres que se guarde el archivo.\n
                    """+"\033[1;31m"+"""$"""+"\033[1;37m"+""" copy -d /home/administrador/actividades \n
                    ruta absoluta, donde se copiará el archivo al servidor"""+"\033[1;31m"+""">>"""+"\033[1;37m"+"""
                    /home/administrador/Documentos \n

                [!] Cuando se haga una transferencia de archivo el tamaño máximo es de 1GB
                [!] Al introducir las rutas, no deben de tener un '/' al final         
            """)
    else:
        print(data)
#Cerramos la instancia del objeto servidor
obj.close()
#Imprimimos la palabra Adios para cuando se cierre la conexion
print("Conexion cerrada")

En el servidor.py, la variable server lo pongo vacio y le asigno el puerto 8000
Código:
import socket, os, getpass, shutil, shlex, commands, tarfile, subprocess, numpy
from pexpect import pxssh
import signal
from subprocess import Popen, PIPE
name_host_server = getpass.getuser()
carpeta_actual_server = os.getcwd()
#instanciamos un objeto para trabajar con el socket
ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = "" #inti
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
signal.signal(signal.SIGTSTP, handler)
#Puerto y servidor que debe escuchar
ser.bind((server, port))
#Aceptamos conexiones entrantes con el metodo listen. Por parámetro las conexiones simutáneas.
ser.listen(1)
y en el cliente, la ip 127.0.0.1 (localhost) y el puerto 8000
Código:
import socket, os, signal, sys, tarfile, shutil, getpass
host = "127.0.0.1" #casa
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
    sys.exit()
signal.signal(signal.SIGTSTP, handler)
obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Conexion con el servidor. Parametros: IP (puede ser del tipo 192.168.1.1 o localhost), Puerto
obj.connect((host, port))
name_host_server = socket.gethostname()
carpeta_actual_server = os.getcwd()
print("\033[1;32m"+"[+]"+"\033[1;37m"+" conexion establecida")

El funcionamiento va bien, en LAN, pero mi objetivo, es que funcione a traves de ip's publicas (WAN), (siempre y cuando el cliente-servidor esten encendidos). Para ello me informe de que se necesitaba abrir puertos en mi router.

Yo tengo un HUAWEI B315, aquí la imagen del puerto abierto:
https://drive.google.com/file/d/1i2-nF3wRkw8H93MIIXdY9O6OMBZrcDGO/view?usp=sharing

Una vez hecho este paso, modifique un el codigo cliente-servidor para la conexion.
Servidor.py
Código:
import socket, os, getpass, shutil, shlex, commands, tarfile, subprocess, numpy
from pexpect import pxssh
import signal
from subprocess import Popen, PIPE
name_host_server = getpass.getuser()
carpeta_actual_server = os.getcwd()
#instanciamos un objeto para trabajar con el socket
ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = "85.119.xxx.xxx" #inti
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
signal.signal(signal.SIGTSTP, handler)
#Puerto y servidor que debe escuchar
ser.bind((server, port))
#Aceptamos conexiones entrantes con el metodo listen. Por parámetro las conexiones simutáneas.
ser.listen(1)
 
#Instanciamos un objeto cli (socket cliente) para recibir datos
cli, addr = ser.accept() 

Cliente.py
Código:
import socket, os, signal, sys, tarfile, shutil, getpass
host = "176.87.xxx.xxx" #casa
port = 8000
def handler(signum, frame):
    os.system("fuser -k -n tcp %s" % port)
    sys.exit()
signal.signal(signal.SIGTSTP, handler)
obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Conexion con el servidor. Parametros: IP (puede ser del tipo 192.168.1.1 o localhost), Puerto
obj.connect((host, port))
name_host_server = socket.gethostname()
carpeta_actual_server = os.getcwd()
print("\033[1;32m"+"[+]"+"\033[1;37m"+" conexion establecida")
 

El caso es que lo probé (ambos PC's encendidos) y no me funcionaba, me daba el error

Servidor
Citar
Traceback (most recent call last):
  File "servidor.py", line 22, in <module>
    ser.bind((server, port))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

Cliente
Citar
Traceback (most recent call last):
  File "servidor.py", line 22, in <module>
    ser.bind((server, port))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

El caso, es que lo que puede estar pasando es que, el router de mi casa tiene el puerto abierto, pero el otro posiblemente no lo tenga?

Gracias de antemano!!
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines