GuardianUnivalle-Benito-Yucra 0.1.34__tar.gz → 0.1.36__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.

Files changed (26) hide show
  1. guardianunivalle_benito_yucra-0.1.36/GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +46 -0
  2. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/detectores/detector_keylogger.py +9 -22
  3. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra.egg-info/PKG-INFO +1 -1
  4. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/PKG-INFO +1 -1
  5. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/pyproject.toml +1 -1
  6. guardianunivalle_benito_yucra-0.1.34/GuardianUnivalle_Benito_Yucra/auditoria/registro_auditoria.py +0 -9
  7. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/__init__.py +0 -0
  8. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/criptografia/cifrado_aead.py +0 -0
  9. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/criptografia/intercambio_claves.py +0 -0
  10. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/criptografia/kdf.py +0 -0
  11. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/detectores/detector_csrf.py +0 -0
  12. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/detectores/detector_dos.py +0 -0
  13. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/detectores/detector_sql.py +0 -0
  14. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/detectores/detector_xss.py +0 -0
  15. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/middleware_web/middleware_web.py +0 -0
  16. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/mitigacion/limitador_peticion.py +0 -0
  17. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/mitigacion/lista_bloqueo.py +0 -0
  18. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/puntuacion/puntuacion_amenaza.py +0 -0
  19. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra/utilidades.py +0 -0
  20. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra.egg-info/SOURCES.txt +0 -0
  21. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra.egg-info/dependency_links.txt +0 -0
  22. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra.egg-info/requires.txt +0 -0
  23. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/GuardianUnivalle_Benito_Yucra.egg-info/top_level.txt +0 -0
  24. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/LICENSE +0 -0
  25. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/README.md +0 -0
  26. {guardianunivalle_benito_yucra-0.1.34 → guardianunivalle_benito_yucra-0.1.36}/setup.cfg +0 -0
@@ -0,0 +1,46 @@
1
+ import datetime
2
+ import json
3
+ import os
4
+
5
+ # Archivo donde se guardarán los eventos
6
+ LOG_FILE = "auditoria_guardian.log"
7
+
8
+
9
+ def registrar_evento(
10
+ tipo: str,
11
+ descripcion: str = "",
12
+ severidad: str = "MEDIA",
13
+ extra: dict | None = None,
14
+ ):
15
+ """
16
+ Registra un evento de auditoría en un archivo.
17
+ :param tipo: Tipo de evento (DoS, CSRF, XSS, SQLi, etc.)
18
+ :param descripcion: Descripción detallada del evento
19
+ :param severidad: Nivel de severidad (BAJA, MEDIA, ALTA)
20
+ :param extra: Datos adicionales opcionales
21
+ """
22
+ try:
23
+ evento = {
24
+ "fecha": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
25
+ "tipo": tipo,
26
+ "descripcion": descripcion,
27
+ "severidad": severidad,
28
+ "extra": extra or {},
29
+ }
30
+
31
+ # Asegurar que el archivo exista
32
+ os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
33
+
34
+ with open(LOG_FILE, "a", encoding="utf-8") as f:
35
+ f.write(json.dumps(evento, ensure_ascii=False) + "\n")
36
+
37
+ except Exception as e:
38
+ print(f"[Auditoría] Error al registrar evento: {e}")
39
+
40
+
41
+ def generar_reporte() -> str:
42
+ """Devuelve todo el contenido del archivo de auditoría."""
43
+ if not os.path.exists(LOG_FILE):
44
+ return "No hay registros aún."
45
+ with open(LOG_FILE, "r", encoding="utf-8") as f:
46
+ return f.read()
@@ -108,33 +108,22 @@ def detectar_archivos_sospechosos() -> List[str]:
108
108
 
109
109
  def detectar_programas_instalados() -> list[str]:
110
110
  """
111
- Analiza programas instalados en Windows para detectar software potencialmente malicioso.
112
- Funciona incluso si WMIC está en otra ruta o no está disponible.
111
+ Detecta software potencialmente malicioso en Windows usando PowerShell.
113
112
  """
114
113
  hallazgos = []
115
114
  if platform.system() != "Windows":
116
115
  return hallazgos
117
116
 
118
- # Rutas posibles de WMIC
119
- posibles_rutas = [
120
- "C:\\Windows\\System32\\wbem\\WMIC.exe",
121
- "C:\\Windows\\SysWOW64\\wbem\\WMIC.exe",
122
- "C:\\Windows\\System32\\WMIC.exe",
123
- ]
124
-
125
- wmic_path = None
126
- for ruta in posibles_rutas:
127
- if os.path.exists(ruta):
128
- wmic_path = ruta
129
- break
130
-
131
- # Si no se encontró ruta, intenta usarlo directamente (PATH)
132
- if wmic_path is None:
133
- wmic_path = "wmic"
117
+ ps_command = (
118
+ "Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*,"
119
+ "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Select-Object DisplayName"
120
+ )
134
121
 
135
122
  try:
136
123
  salida = subprocess.check_output(
137
- [wmic_path, "product", "get", "name"], stderr=subprocess.DEVNULL, shell=True
124
+ ["powershell", "-Command", ps_command],
125
+ stderr=subprocess.DEVNULL,
126
+ shell=True,
138
127
  ).decode("utf-8", errors="ignore")
139
128
 
140
129
  for linea in salida.splitlines():
@@ -143,10 +132,8 @@ def detectar_programas_instalados() -> list[str]:
143
132
  hallazgos.append(nombre)
144
133
  registrar_evento("Keylogger", f"Software sospechoso: {nombre}")
145
134
 
146
- except FileNotFoundError:
147
- logger.warning("WMIC no encontrado. No se puede listar programas instalados.")
148
135
  except Exception as e:
149
- logger.error("Error al listar programas instalados: %s", e)
136
+ logger.error("Error al listar programas instalados con PowerShell: %s", e)
150
137
 
151
138
  return hallazgos
152
139
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GuardianUnivalle-Benito-Yucra
3
- Version: 0.1.34
3
+ Version: 0.1.36
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GuardianUnivalle-Benito-Yucra
3
- Version: 0.1.34
3
+ Version: 0.1.36
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
@@ -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.34"
7
+ version = "0.1.36"
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" }
@@ -1,9 +0,0 @@
1
- import datetime
2
-
3
- def registrar_evento(tipo: str, mensaje: str):
4
- with open("auditoria_guardian.log", "a", encoding="utf-8") as f:
5
- f.write(f"[{datetime.datetime.now()}] {tipo}: {mensaje}\n")
6
-
7
- def generar_reporte() -> str:
8
- with open("auditoria_guardian.log", "r", encoding="utf-8") as f:
9
- return f.read()