|
151
|
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 !! 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.
|
|
|
152
|
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: 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.
|
|
|
153
|
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: <iframe src="sitio1.com"></iframe> info: https://www.w3schools.com/tags/tag_iframe.aspLo que no acabo de entender es esto. 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: Lo que hace esto, es que no puedan seleccionar ningún texto, en toda la web.
|
|
|
154
|
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
|
|
|
155
|
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
|
|
|
156
|
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 #!/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 #!/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 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 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=sharingUna vez hecho este paso, modifique un el codigo cliente-servidor para la conexion. Servidor.py 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 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 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 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!!
|
|
|
158
|
Sistemas Operativos / GNU/Linux / Re: ¿Linux Parrot es mejor que kali?
|
en: 25 Marzo 2019, 09:12 am
|
Hola. Esto es gusto de cada uno, el parrot es verdad que tiene unos colores muy atractivos (me encanta el loro multicolor de fondo de escritorio), y hay muchas herramientas. Pero en cambio Kali linux, tiene un arsenal de herramientas, tanto de hacking cómo forenses. Yo creo que los profesionales utilizan Kali Linux, por su gran cantidad de herramientas.
Enviado desde mi VTR-L09 mediante Tapatalk
|
|
|
159
|
Comunicaciones / Redes / ¿Se puede sacar la sumascara de una ip?
|
en: 24 Marzo 2019, 16:24 pm
|
Hola, estoy haciendo un firewall con python, y estoy en el proceso de bloquear una web, y he pensado de hacer subnetting, pero, yo solamente sé la IP de un sitio web, y no me bridan el prefijo [lo obtengo de nslookup]. Al hacer subneteo se puede hacer cuando tienes: - 1. El numeros de hosts de cada subred
- 2. El numero de subredes
- 2. La IP con el prefijo de red.
¿Pero es posible saber el prefijo de red para después hacer el subneteo? o hacer subneteo solamente con IP. Esto me gustaría hacerlo, ya que si se la IP de una web, y mediante subneteo saber la IP de red de cada subred, podría bloquear todas las IP's que dan acceso a cuya web. Gracias de antemano.
|
|
|
160
|
Informática / Hardware / Porque mi ubuntu 18.04 en un disco duro externo XFS no arranca en mi windows 10?
|
en: 20 Diciembre 2018, 20:19 pm
|
Hola, he instalado ubuntu 18.04 LTS en mi disco duro externo, durante la instalación en las particiones no me dejaba crear con el sistema de archivo ext2/3/4 y ZFS, por la cual instale con el sistema de archivos XFS, me fue todo bien, lo instalé en un ordenador que tenia instalado Ubuntu (uno viejo que tenia). pero, al arrancar mi disco duro externom en mi windows 10, no me arranca.
Me he informado y el sistema de archivos XFS, no es compatible con windows, puede ser por eso? Auque no es raro ya que estoy arrancando desde un disco duro externo, y no depende de windows?
Gracias
|
|
|
|
|
|
|