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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12
41  Informática / Hardware / Soportará la raspberry pi 3 b+ con servicio FTP para 10 clientes? en: 1 Octubre 2019, 12:52 pm
Hola, el verano pasado, tuve la idea de crearme un servidor "personal" para la FP 2º GM SMX, guardar mis recursos, directamente en el servidor, sin depender de un USB. Por despiste y comodidad.

Por lo cual, me compré una raspberry pi 3 b+, le instalé Raspbian (sin interfaz gráfica) e instalé servicio HTTP, FTP, SSH. con NAT, ip estatica...

Al empezar lo probé la primera semana y me funciona todo correctamente, la rp3 tiene 3 mini-disipadores (9mm*1, 14mm*2) y un ventilador con 3.3V de entrada, la miníma, fuente de alimientación de 5V, la carcasa es como de plástico-cristal y es montable. La marca es smraza. La temperatura que tiene habitualmente es de 39,704ºC, si se trabaja a largo plazo puede estar a 40,242ºC y muy raramente 42ºC. Lo tengo situado en mi escritorio, No encima.

Tuvimos problemas en clase sobre compartir recursos ya que no tenemos el moodle por la cual les planteé la idea de yo compartir un usuario de mi FTP con la clase.

En la clase somos 10. Hay posibilidad de que la raspberry soporte posiblemente tantos clientes? Si aumentará la temp. También teniendo en cuenta los otros servicios.

Cual es la temperatura que se considera un sobrecalentamiento?

P.D: En el manual que me venia con la RP3 pone que no hay que colocarlo en un superficie conductora a la electricidad. La localización es buena?

Atentamente Drakaris.
42  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
43  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

44  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!!
45  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.
46  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
47  Informática / Hardware / Fallo en instalación de Ubuntu 18.04 LTS en disco duro externo 500GB en: 8 Diciembre 2018, 19:42 pm
Hola, estoy intentando instalar el ubuntu 18.04 LTS en un disco duro externo de 500GB (era de un portatil antiguo que tenía).
El disco duro externo tiene estas particiones.
https://drive.google.com/file/d/1GX0_DDiV6H1RHUVTmDkCRU4BkBs_9pBp/view?usp=sharing
Lo quiero instalar desde una USB booteable que tengo con la imagen iso de cuyo S.O, arranque el usb desde la BIOS, y me sale el asistente de instalación.

https://drive.google.com/file/d/1Yp3PbCKBSiLw2Vdebri0SbHXU2o7zchs/view?usp=sharing
Me sale que tipo de instalación hago y le doy a 'Más opciones'

Allí me sale todas las particiones y discos duros que tengo y voy a
Citar
/dev/sdd
que es mi disco duro externo lo elimino todo, y creo una partición que le pongo 482,3 GB, que sea primaria, utilizar como sistema de archivos ext4 transaccional y el punto de montaje es '/'.

https://drive.google.com/file/d/1ZiHl7-saZCq5Gl_WW_cn7F1oqVB1472E/view?usp=sharing

Después creo otra partición con el espacio sobrante (6,1GB), la particion lo pongo como logica y como area de intercambio

https://drive.google.com/file/d/15slSnlBNWOP8LScOIVSlFWXnE-3MZZAM/view?usp=sharing

Le doy a continuar y me dice esto. cosa que me extraña solamente tendría que formatear las particion 1 sdd como ext4 y partición 5 como intercambio y no las otras como intercambio

https://drive.google.com/file/d/1ARvluMLI-xjq-3HidF2yBUO1PvCbgQOs/view?usp=sharing

Después le doy a instalar y me dice
Citar
creando el sistema de ficheros ext4 para / en la partición #1 de SCSI8 (0,0,0) (sdd)

https://drive.google.com/file/d/1z_9P_D2y8yCFb3Rzk_KDdpikJQD7i8I6/view?usp=sharing

Tarda un rato no cambia a 'copiando archivos...' y me sale
Citar
Falló la creación del sistema de ficheros ext4 en la partición #1 de SCSI8 (0,0,0) (sdd)

He probado de ponerle más GB a la area de intercambio (6GB y 20GB) y nada. No sé que este este error y como solucionarlo, ¿alguien me puede echar una mano?

Gracias de antemano

PD
Mi disco duro externo es este:

https://drive.google.com/file/d/1DqpM495n9xoqG24XgPpw16qaFbubcsOd/view?usp=sharing
48  Programación / PHP / ¿Porque mi hosting web se suspende temporalmente? en: 3 Diciembre 2018, 10:48 am
Hola, estoy alojado en un hosting web gratuito (260MB), por la cual estoy trabajando en un proyecto web, el problema es que cada X dias, me dice que mi cuenta de hosting esta suspendida temporalmente, y me muestra unos gráficos, por la cual me dice que el uso de la CPU es mayor al uso maximo, exactamente me dice lo siguiente:

Citar
Su cuenta de alojamiento gratuito está suspendida por alcanzar un límite diario de recursos. Tenga en cuenta que cada cuenta de alojamiento gratuito tiene límites diarios de CPU, hits, RAM, E / S y proceso de entrada. Durante cada día grabamos todas estas estadísticas de uso. Es bastante normal que un sitio web utilice límites diarios, ya que los scripts PHP usan una gran cantidad de recursos del servidor, especialmente si tiene múltiples scripts PHP y sitios web en su cuenta de alojamiento gratuito.

El límite diario que alcanzó fue su límite diario de CPU .

La cosa es que me paso del limite del uso de la CPU y no sé que es lo que esta causando este problema, y como poder solucionarlo. Actualmente estoy haciendo un mini chat online, y tiene bastante código PHP de unas 1944 lineas, ¿Puede esto estar cuando la suspensión continua de mi hosting?Como solucionarlo?

https://drive.google.com/open?id=1jU6bILu-lw7oFmAJJF_-_wTP2h6rU4fO

Gracias
49  Programación / PHP / Validar si un archivo subo el md5 esta repetido en otro archivo subido (DB) en: 11 Noviembre 2018, 11:49 am
estoy haciendo subida de archivos en PHP ($_FILES), y antes de que me lo suba al servidor, quisiera que me compruebe si el archivo es una copia, por la cual hice lo que hice es que al insertar los datos se me cree un codigo md5 que sera el documento y sera unico en cada documento, imagen, video, y audio, ya que lo que hace es leer el archivo con file_get_contents() y después le crea un md5, hasta ahí bien pero, lo que quiera es que después del upload, me haga un filtro con if, que si el md5, con la hora actual, que acabo de subir es igual a otro md5 que se ha subido, significa que es el mismo archivo (con snombre diferente), y me elimina el archivo con la hora mas reciente.

Lo que no acabo de saber es como hacer este if, por ahora he hecho esto:

Código
  1.                $conexion = new mysqli("privado","privado","privado","privado");
  2.                if (!$conexion) {
  3.                    die("Error al conectar con la DB: ".$conexion->connect_error);
  4.                }
  5.                $ruta = $_SERVER['DOCUMENT_ROOT']."/plugins/mensajeria/archivos/chat_do/videos";
  6.                $url = $ruta."/".$_FILES['archivo']['name'];
  7.                move_uploaded_file($_FILES['archivo']['tmp_name'],$url);
  8.                date_default_timezone_set('Europe/Madrid');
  9.                $fecha = date("d/m/Y");
  10.                $hora = date("G:i");
  11.                $mensaje = $_POST['mensaje_text'];
  12.                mysqli_real_escape_string($conexion,$mensaje);
  13.                $name_file = $_FILES['archivo']['name'];
  14.                $size_file = $_FILES['archivo']['size'];
  15.                $type_file = $_FILES['archivo']['type'];
  16.                $url1 = file_get_contents($url);
  17.                $md5 = md5($url1);
  18.                $enlace = $_SERVER['SERVER_NAME']."/plugins/mensajeria/archivos/chat_do/videos/".$_FILES['archivo']['name'];
  19.                $insertar = "INSERT INTO chat_do (md5,Clase,Mensaje,Multimedia,NombreArchivo,TamanoArchivo,TipoArchivo,Fecha,Hora) VALUES ('".$md5."','1A','".$mensaje."','".$enlace."','".$name_file."','".$size_file."','".$type_file."','".$fecha."','".$hora."')";
  20.                $mostrar = "SELECT md5 FROM chat_do WHERE Fecha != '".$hora."'";
  21.                $result = $conexion->query($mostrar);
  22.                $row = $result->fetch_assoc();
  23.                if ($md5 != $mostrar) {
  24.                    if ($conexion->query($insertar) === TRUE) {
  25.                        echo "1 video";
  26.                    }else{
  27.                        echo "error video";
  28.                    }  
  29.                }else{
  30.                    unlink($url);
  31.                    echo "archivo_copiado";
  32.                }
  33.  

El problema es que no se porque no funciona, creo que es $md5 != $mostrar, lo que esta mal. No se. Lo que quisiera hacer es que me diga si el $md5 es igual al primer dato de la DB md5, sino al segundo, al tercero... así consecutivamente hasta que consida con uno y me salte el else. La caso es que tiene que ser automático, no puedo hacerlo manualmente, sino no funcionará.

Código
  1.                if ($md5 != $mostrar) {
  2.                    if ($conexion->query($insertar) === TRUE) {
  3.                        echo "1 video";
  4.                    }else{
  5.                        echo "error video";
  6.                    }  
  7.                }else{
  8.                    unlink($url);
  9.                    echo "archivo_copiado";
  10.                }
  11.  

Gracias de antemano
50  Foros Generales / Dudas Generales / Como funciona las arañas de Google? En que lenguaje estan basados? en: 7 Noviembre 2018, 11:14 am
Hola, tengo la curiosidad de como funcionan las arañas de google y en que lenguaje estan hechos.

Gracias.
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines