Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Drakaris

#91
Este post debería de estar en la categoria de Programación > Desarrollo Web

Te recomiendo que mires este videotutorial en Youtube
[youtube=640,360]https://www.youtube.com/watch?v=IHVQX52W-LQ[/youtube]

CitarSe trataría de que, según el valor de un campo de la base de datos (mysql), mostrar una imagen u otra en la web. También he pensado en crear un sistema de notificaciones: si un campo mysql tiene determinado valor enviar una notificación al usuario.
Para este caso, lo que quieres hacer se tiene que utilizar AJAX para permitir enviar datos obtenidos con jquery a un archivos PHP para procesarlo.

Aquí te dejo unos enlaces que te serán útiles:
https://api.jquery.com/jquery.ajax/#jQuery-ajax-url-settings

[youtube=640,360]https://www.youtube.com/watch?v=_ybgWmSCAu8[/youtube]
Recomiendo mucho ver los videos de Platzi (Plataforma de educacion online)

[youtube=640,360]https://www.youtube.com/watch?v=woJTmWmFWvc[/youtube]
[youtube=640,360]https://www.youtube.com/watch?v=bmF0m9BrW20[/youtube]

Espero que te haya ayudado, y suerte en tu trabajo!! :D
#92
Buenas, estoy haciendo un servidor proxy con Python3. La idea es la siguiente:

1 . Primero, capturo el puerto especificado en el primer argumento:


if len(sys.argv) == 2:
        pass
else:
        sys.exit()


# CONSTANTS GLOBALS
global PORT_LISTEN, BUFFER_RECV, CONNECTIONS
PORT_LISTEN = int(sys.argv[1])
BUFFER_RECV = 8192
CONNECTIONS = 5


2. Después con el puerto especificado, creo una conexion socket servidor bind(), y obtengo los datos recibidos, con ello, ejecuto un hilo, donde paso los datos de la conexion y datos a la funcion get_data.

print("[*] Listening Port "+str(PORT_LISTEN)+"....")
lister = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
lister.bind(("",PORT_LISTEN))
lister.listen(CONNECTIONS)
while True:
        try:
                conn, addr = lister.accept()
                data = conn.recv(BUFFER_RECV)
                thread_data = threading.Thread(target=get_data, name="get_data", args=(conn, addr, data))
                thread_data.start()
        except KeyboardInterrupt:
                conn.close()
                lister.close()
                print("\n[\033[1;31m!\033[0m] Exiting Proxy Server....")
                sys.exit()


3. En la funcion get_data, obtengo la url, donde cogeré dominio donde estoy visitando

        #get url
        url = str(data).split('\\n')[0]
        url = str(url).split(' ')[1]

        #get FQDN
        website = url.replace("http://","")
        website = website.split("/")[0]


4. Una vez sé en que dominio estoy haciendo la petición, si el dominio contiene ":" cogeré el puerto especificado. Por defecto el puerto es 80, si no se detecto ":" en el dominio.

        port = 80
        if website.count(":") == 1:
                list = website.split(":")
                website = list[0]
                port = list[1]
                port = int(port)
        print("\n\033[1;32mwebsite\033[0m: "+str(website)+" \033[1;32mport\033[0m: "+str(port))


5. Finalmente ejecuto la funcion send_data con sus argumentos, para que me haga una conexion socket cliente al servidor y envie los datos, con un bucle.

send_data(website, int(port), conn, data, addr, True)

def send_data(site, port, conn, data, addr):
    sender = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sender.connect((site,port))
    sender.send(data)
    while True:
            reply = sender.recv(8192)
            if len(reply) > 0:
                conn.send(reply)
            else:
                break
    sender.close()
    conn.close()


Esto funciona correctamente en sitios web HTTP, pero como cabe esperar, el HTTPS no, por los certificados ssl.

Así que modifiqué el apartado 5. Y con una condicional, si el puerto es 443, ejecutará lo siguiente:

        if port == 443:
                send_data(website, int(port), conn, data, addr, True)
        else:
                send_data(website, int(port), conn, data, addr, False)

def send_data(site, port, conn, data, addr, SSL):
        sender = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        sender.connect((site,port))
        sender.send(data)
        while True:
                reply = sender.recv(BUFFER_RECV)
                if len(reply) > 0:
                        conn.send(reply)
                else:
                        break
        sender.close()
        conn.close()



En send_data añadí un argumento booleano llamada SSL, que antes de hacer nada, si este es True, sería https, lo que no sé muy bien, es que hacer aquí.


Me he mirado el funcionamiento de los sitios HTTPS en youtube.
[youtube=640,360]https://www.youtube.com/watch?v=uNrh0zoItGI[/youtube]

En el minuto 2:16, explica con más profundidad como trabaja este protocolo. He pensado, si hay alguna forma de obtener el certificado que me da el servidor para obtener la llave publica.... pero no se muy bien.

Miré este enlace: https://soursop-dev.blogspot.com/2020/05/creacion-de-un-servidor-web-proxy-en.html

Donde te explica como hacer una conexion ssl con el modulo ssl.

Así que modifique la funcion send_data:

def send_data(site, port, conn, data, addr, SSL):
        if SSL == True:
                server_cert = "./ssl/sechome.csr"
                client_cert = "./ssl/sechome.crt"
                client_key = "./ssl/sechome.key"
                context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert)
                context.load_cert_chain(certfile=client_cert, keyfile=client_key)
                s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                sender = context.wrap_socket(s, server_side=False, server_hostname=site)
        else:
                sender = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        sender.connect((site,port))
        sender.send(data)
        while True:
                reply = sender.recv(BUFFER_RECV)
                if len(reply) > 0:
                        conn.send(reply)
                else:
                        break
        sender.close()
        conn.close()
:

Creé los certificados autofirmados:

$ cd ssl
ssl/$ openssl req -newkey rsa:2048 -nodes -keyout sechome.key -out sechome.csr -sha256
ssl/$ openssl x509 -signkey sechome.key -in sechome.csr -req -days 365 -out sechome.crt


Como bien me imaginaba esto no funciona, ya que tendría que coger el certificado que me da el dominio al hacer la peticion. No acabo de entender muy bien en las variables de crt y key, que llaves tengo que poner...


                server_cert = "./ssl/sechome.csr"
                client_cert = "./ssl/sechome.crt"
                client_key = "./ssl/sechome.key"



CODE COMPLETE:

#!/usr/bin/python3
import socket, threading, re, sys, os

if len(sys.argv) == 2:
pass
else:
sys.exit()


# CONSTANTS GLOBALS
global PORT_LISTEN, BUFFER_RECV, CONNECTIONS
PORT_LISTEN = int(sys.argv[1])
BUFFER_RECV = 8192
CONNECTIONS = 5

def send_data(site, port, conn, data, addr, SSL):
if SSL == True:
server_cert = "./ssl/sechome.csr"
client_cert = "./ssl/sechome.crt"
client_key = "./ssl/sechome.key"
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert)
context.load_cert_chain(certfile=client_cert, keyfile=client_key)
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sender = context.wrap_socket(s, server_side=False, server_hostname=site)
else:
sender = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sender.connect((site,port))
sender.send(data)
while True:
reply = sender.recv(BUFFER_RECV)
if len(reply) > 0:
conn.send(reply)
else:
break
sender.close()
conn.close()


def get_data(conn, addr, data):
#get url
url = str(data).split('\\n')[0]
url = str(url).split(' ')[1]

#get FQDN
website = url.replace("http://","")
website = website.split("/")[0]
port = 80
if website.count(":") == 1:
list = website.split(":")
website = list[0]
port = list[1]
port = int(port)
print("\n\033[1;32mwebsite\033[0m: "+str(website)+" \033[1;32mport\033[0m: "+str(port))
if port == 443:
send_data(website, int(port), conn, data, addr, True)
else:
send_data(website, int(port), conn, data, addr, False)


print("[*] Listening Port "+str(PORT_LISTEN)+"....")
lister = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
lister.bind(("",PORT_LISTEN))
lister.listen(CONNECTIONS)
while True:
try:
conn, addr = lister.accept()
data = conn.recv(BUFFER_RECV)
thread_data = threading.Thread(target=get_data, name="get_data", args=(conn, addr, data))
thread_data.start()
except KeyboardInterrupt:
conn.close()
lister.close()
print("\n[\033[1;31m!\033[0m] Exiting Proxy Server....")
sys.exit()
#93
Buenas. Como hago para ve por la terminal, la transferencia que tiene una descarga desde internet.

Es decir, descargo desde internet cualquier cosa en mi pc (localmente), y al conectarme desde fuera por ssh a cuyo pc. Como hago para ver cuanto tiempo falta la descarga? A traves de la terminal.

Graicas
#94
Tendrás que mirar de creartelo por ti mismo. No creo que exista algo parecido para Linux.

Los lenguajes más usados para estos casos son: C/C++ o Python.
#95
Hola, estoy haciendo un servicio linux,sobre prevención de ataques de fuerza bruta por ssh. Lo tengo todo finalizado.

Solamente me hace falta crear el servicio y un script para añadirlo en /etc/init.d/ y configurarlo (/etc/rc?.d/) para que al inicar el equipo, se inicie.

Creo el servicio, creando un archivo con extension .service en /etc/systemd/system/sshield.service


[Unit]
Description=Service for protect attacks of brute force ssh's

[Service]
Type=simple
ExecStart=/etc/sshield/sshield.sh
ExecStop=/etc/sshield/sshield.sh stop
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target


Le especifico que el tipo de proceso es en segundo plano:

Type=simple

Ejecuto el servicio en segundo plano:

ExecStart=/etc/sshield/sshield.sh

Especifico el script para detener el servicio:

ExecStop=/etc/sshield/sshield.sh stop


el problema esta en la detención del servicio, le especifico el mismo script pero pasandole un argumento "stop".

En el script sshield.sh, hay un condicional filtrando el argumento y si existe cuyo argumento, matará el proceso.

if [[ $1 == "stop" ]];then
       kill -9 $$
fi


El problema que creo que es, es que estoy matando cuyo proceso y el systemctl al ver que el proceso fue detenido por la señal SIGKILL pues lo detecta como "failed" cuando se hace un status (systemctl status sshield)
IMAGEN: https://drive.google.com/file/d/1i0QVUjnFRzL3nlGjLqs1khXANPZowV_b/view?usp=sharing

Normalmente que señal se le envia a un servicio para detenerlo?

Gracias

Y. Este método para detener el servicio, se consideraría correcto?
#96
#######################################################
GITHUB repositorio:  https://github.com/cleanet/GTE
#######################################################
#######################################################
  SITIO WEB: cleanet.260mb.net
#######################################################
Software con licencia MIT

Esta aplicación web, es free software y open source.

Se creó con la finalidad de un uso educativo, facilitando la gestión de tareas dentro de las aulas. Tanto para el profesorado como el alumnado.

Cada aula tiene su lugar en la web, donde hay un calendario, para añadir eventos independientes de otras aulas. Además también pueden añadir tanto enlaces como actividades interactivas embebidos para que puedan practicar lo aprendido.

El profesorado, podrá añadir vacaciones a los calendarios. Asi como añadir actividades interactivas.

Título: Gestión de Tareas Escolares Autor: cleanet Año: 2020

DEMO: https://g-t-e.260mb.net
RENEW: https://drive.google.com/file/d/1_mbPIpySLnDxil9uZNNkUCmLKV7tuaD6/view?usp=sharing

En la carpeta root está el PDF 'guia.pdf', donde explica el funcionamiento y la utilización del proyecto. Y en la carpeta 'instalacion' esta el pdf 'instalacion.pdf' in español, donde explica paso a paso como levantar un servidor Linux y configuar el proyecto en él.

Cualquier duda o reporte, no duden en contactarme por correo o aquí mismo.
#97
Cita de: AlbertoBSD en  3 Enero 2020, 19:31 PM
Creas un proyecto nuevo y subes tu codigo, asi de facil.

Saludos!

Eso ya lo tengo hecho en github.com/cleanet/GTE

En elhacker.net hay algun apartado especifico para exponer proyectos?
#98
Cita de: #!drvy en  3 Enero 2020, 19:22 PM
Precisamente Github además de control de versiones es un medio para compartir proyectos.

Saludos

Como compartirlo? Con GIthub Pages?
#99
Hola, acabé un proyecto web, lo tengo subido en github: https://github.com/cleanet/GTE/

Me gustaría publicarlo en algún sitio, existen portales donde puedas subir proyectos tuyos y exponerlos?

Gracias de antemano.
#100
Hola. Me reparé un pc viejo que tenia, compré componentes nuevos e instalé el Ubuntu 18.04.3 LTS, va todo bien pero se me cuelga el teclado y raton, y unicamente para solucionarlo, reseteo el pc.

La placa madre es ASROCK AliveNF6G-GLAN, es decir. Enciendo el ordenador, todo va bien, pero de repende, al estar encendido un rato se deshabilita el teclado y raton. Observe los procesos de la CPU y van muy disparado. Puede darse el caso de que al tener mucho porcentaje de CPU, algo lo bloqueara?

A mí me huele que es problema de la CPU o fuente de alimentación de 400W (creo), además el equipo tiene una tarjeta de red TK-LINK, 16GB de ram (4x8GB) y un ssd de 1TB, y así y todo va lento, al abrir el navegador, programa... sobretodo al principio. Después va normal.

Puede ser que sea el CPU que cause esta lentitud?