GuardianUnivalle-Benito-Yucra 0.1.53__tar.gz → 0.1.54__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of GuardianUnivalle-Benito-Yucra might be problematic. Click here for more details.
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py +25 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py +23 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/criptografia/kdf.py +23 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py +13 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py +7 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py +10 -0
- guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py +15 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra.egg-info/PKG-INFO +1 -1
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra.egg-info/SOURCES.txt +7 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/PKG-INFO +1 -1
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/pyproject.toml +1 -1
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/__init__.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/detectores/detector_keylogger.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra/utilidades.py +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra.egg-info/dependency_links.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra.egg-info/requires.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/GuardianUnivalle_Benito_Yucra.egg-info/top_level.txt +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/LICENSE +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/README.md +0 -0
- {guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/setup.cfg +0 -0
guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Cifrado simétrico autenticado: AES-GCM y ChaCha20-Poly1305
|
|
3
|
+
"""
|
|
4
|
+
from cryptography.hazmat.primitives.ciphers.aead import AESGCM, ChaCha20Poly1305
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
def cifrar_aes_gcm(mensaje: bytes, clave: bytes) -> dict:
|
|
8
|
+
aes = AESGCM(clave)
|
|
9
|
+
nonce = os.urandom(12)
|
|
10
|
+
ciphertext = aes.encrypt(nonce, mensaje, None)
|
|
11
|
+
return {"nonce": nonce, "ciphertext": ciphertext}
|
|
12
|
+
|
|
13
|
+
def descifrar_aes_gcm(cipher: dict, clave: bytes) -> bytes:
|
|
14
|
+
aes = AESGCM(clave)
|
|
15
|
+
return aes.decrypt(cipher["nonce"], cipher["ciphertext"], None)
|
|
16
|
+
|
|
17
|
+
def cifrar_chacha20(mensaje: bytes, clave: bytes) -> dict:
|
|
18
|
+
cipher = ChaCha20Poly1305(clave)
|
|
19
|
+
nonce = os.urandom(12)
|
|
20
|
+
ciphertext = cipher.encrypt(nonce, mensaje, None)
|
|
21
|
+
return {"nonce": nonce, "ciphertext": ciphertext}
|
|
22
|
+
|
|
23
|
+
def descifrar_chacha20(cipher: dict, clave: bytes) -> bytes:
|
|
24
|
+
cipher_obj = ChaCha20Poly1305(clave)
|
|
25
|
+
return cipher_obj.decrypt(cipher["nonce"], cipher["ciphertext"], None)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Gestión de intercambio de claves con ECDH y derivación HKDF.
|
|
3
|
+
"""
|
|
4
|
+
from cryptography.hazmat.primitives.asymmetric import ec
|
|
5
|
+
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
|
|
6
|
+
from cryptography.hazmat.primitives import hashes
|
|
7
|
+
|
|
8
|
+
def generar_claves_ecdh():
|
|
9
|
+
"""Genera clave privada y pública ECDH"""
|
|
10
|
+
clave_privada = ec.generate_private_key(ec.SECP384R1())
|
|
11
|
+
clave_publica = clave_privada.public_key()
|
|
12
|
+
return clave_privada, clave_publica
|
|
13
|
+
|
|
14
|
+
def derivar_clave_secreta(clave_privada, clave_publica):
|
|
15
|
+
"""Deriva una clave compartida usando HKDF"""
|
|
16
|
+
shared_key = clave_privada.exchange(ec.ECDH(), clave_publica)
|
|
17
|
+
derived_key = HKDF(
|
|
18
|
+
algorithm=hashes.SHA256(),
|
|
19
|
+
length=32,
|
|
20
|
+
salt=None,
|
|
21
|
+
info=b'guardianclave'
|
|
22
|
+
).derive(shared_key)
|
|
23
|
+
return derived_key
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Wrappers para derivación de claves segura: PBKDF2 y Argon2
|
|
3
|
+
"""
|
|
4
|
+
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
|
|
5
|
+
from argon2 import PasswordHasher
|
|
6
|
+
from cryptography.hazmat.primitives import hashes
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
def pbkdf2_derivar_clave(password: str, salt: bytes = None) -> bytes:
|
|
10
|
+
"""Deriva clave usando PBKDF2"""
|
|
11
|
+
salt = salt or os.urandom(16)
|
|
12
|
+
kdf = PBKDF2HMAC(
|
|
13
|
+
algorithm=hashes.SHA256(),
|
|
14
|
+
length=32,
|
|
15
|
+
salt=salt,
|
|
16
|
+
iterations=100_000,
|
|
17
|
+
)
|
|
18
|
+
return kdf.derive(password.encode()), salt
|
|
19
|
+
|
|
20
|
+
def argon2_derivar_clave(password: str) -> str:
|
|
21
|
+
"""Deriva clave usando Argon2"""
|
|
22
|
+
ph = PasswordHasher()
|
|
23
|
+
return ph.hash(password)
|
guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Middleware base para frameworks web (Django/Flask/FastAPI)
|
|
3
|
+
"""
|
|
4
|
+
from ..detectores.detector_sql import detectar_inyeccion_sql
|
|
5
|
+
from ..detectores.detector_xss import detectar_xss
|
|
6
|
+
|
|
7
|
+
def middleware_proteccion(request):
|
|
8
|
+
# Simulación de protección de entrada
|
|
9
|
+
if detectar_inyeccion_sql(request.get("query", "")):
|
|
10
|
+
return {"error": "SQL Injection detectado"}
|
|
11
|
+
if detectar_xss(request.get("input", "")):
|
|
12
|
+
return {"error": "XSS detectado"}
|
|
13
|
+
return {"ok": True}
|
guardianunivalle_benito_yucra-0.1.54/GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Fórmula compuesta S para puntuar la amenaza global
|
|
3
|
+
"""
|
|
4
|
+
def calcular_puntuacion(detecciones_sql=0, detecciones_xss=0, intentos_csrf=0,
|
|
5
|
+
procesos_keylogger=0, tasa_dos=0,
|
|
6
|
+
w_sql=1.5, w_xss=1.2, w_csrf=1.0, w_keylogger=2.0, w_dos=2.5,
|
|
7
|
+
limite_dos=100) -> float:
|
|
8
|
+
S = (
|
|
9
|
+
w_sql * detecciones_sql +
|
|
10
|
+
w_xss * detecciones_xss +
|
|
11
|
+
w_csrf * intentos_csrf +
|
|
12
|
+
w_keylogger * procesos_keylogger +
|
|
13
|
+
w_dos * (tasa_dos / limite_dos)
|
|
14
|
+
)
|
|
15
|
+
return S
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GuardianUnivalle-Benito-Yucra
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.54
|
|
4
4
|
Summary: Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask
|
|
5
5
|
Author-email: Andres Benito Calle Yucra <benitoandrescalle035@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -10,11 +10,18 @@ GuardianUnivalle_Benito_Yucra.egg-info/dependency_links.txt
|
|
|
10
10
|
GuardianUnivalle_Benito_Yucra.egg-info/requires.txt
|
|
11
11
|
GuardianUnivalle_Benito_Yucra.egg-info/top_level.txt
|
|
12
12
|
GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py
|
|
13
|
+
GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py
|
|
14
|
+
GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py
|
|
15
|
+
GuardianUnivalle_Benito_Yucra/criptografia/kdf.py
|
|
13
16
|
GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py
|
|
14
17
|
GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py
|
|
15
18
|
GuardianUnivalle_Benito_Yucra/detectores/detector_keylogger.py
|
|
16
19
|
GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py
|
|
17
20
|
GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py
|
|
21
|
+
GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py
|
|
22
|
+
GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py
|
|
23
|
+
GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py
|
|
24
|
+
GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py
|
|
18
25
|
guardianunivalle_benito_yucra.egg-info/PKG-INFO
|
|
19
26
|
guardianunivalle_benito_yucra.egg-info/SOURCES.txt
|
|
20
27
|
guardianunivalle_benito_yucra.egg-info/dependency_links.txt
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GuardianUnivalle-Benito-Yucra
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.54
|
|
4
4
|
Summary: Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask
|
|
5
5
|
Author-email: Andres Benito Calle Yucra <benitoandrescalle035@gmail.com>
|
|
6
6
|
License: MIT
|
{guardianunivalle_benito_yucra-0.1.53 → guardianunivalle_benito_yucra-0.1.54}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "GuardianUnivalle-Benito-Yucra" # usar mayúsculas consistente
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.54"
|
|
8
8
|
description = "Middleware y detectores de seguridad (SQLi, XSS, CSRF, DoS, Keylogger) para Django/Flask"
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "Andres Benito Calle Yucra", email = "benitoandrescalle035@gmail.com" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|