Volver

PC Protector

¿No tenés una llave de seguridad pero sí un Pendrive? No hay problema.

BackEnd 2025 v0.9-beta

Sobre el Proyecto

PCProtector es un sistema de protección de estación de trabajo basado en la presencia de un dispositivo USB autorizado como “llave física”, diseñado para restringir el acceso y forzar bloqueo cuando el token no está conectado o no valida.

Visión del producto

Evolucionar hacia una solución robusta “endpoint lock & unlock”, con administración simple, huella verificable del dispositivo USB, secretos protegidos localmente (DPAPI) y un flujo de operación consistente (modo vigilancia / modo llave).

Para quién está pensado

Está pensado para usuarios individuales, pymes y entornos semi-controlados (oficinas, depósitos, locales, notebooks corporativas, equipos compartidos) donde el riesgo principal no es un atacante sofisticado de laboratorio, sino:

  • Acceso indebido por terceros cercanos (empleados, visitas, familiares);
  • pérdida/robo de una notebook con sesión activa o reanudable;
  • uso no autorizado fuera de horario o sin supervisión.

Valor que aporta

El valor que aporta es claro: convertir el acceso a Windows en una experiencia “key-based”, con una capa adicional persistente (servicio) que opera incluso si la app no está abierta, y una pantalla de bloqueo propia que centraliza la validación del token y la credencial.

Qué Problemas Resuelve

Dolor específico que ataca

La necesidad de garantizar que el equipo sólo sea utilizable si está presente un factor físico (USB específico) y/o una clave asociada, reduciendo la exposición a accesos casuales o oportunistas.

Situación previa sin la solución

En un esquema tradicional, el acceso depende sólo de:

Impacto real de implementarlo

Explicación Técnica

Stack detallado

Organización lógica de componentes

CommonLib

Encapsula piezas reutilizables:

Flujo interno de funcionamiento

Seguridad

Arquitectura del Sistema

Flujo de Arquitectura General

Diagrama de Arquitectura del sistema
×

Estado del Desarrollo

Roadmap

v0.9-pre_release

Actualmente estamos trabajando en la optimización de la base de datos y preparando el lanzamiento de la v1.0.

    Arquitectura modular

  • Separación en tres componentes:
    • PCProtectorService
    • PCProtectorAdministrator
    • CommonLib
  • Eliminación de lógica duplicada mediante centralización en librería común.
  • Modelo de funcionamiento definido

  • Implementación conceptual de:
    • Modo Vigilancia Continua
    • Modo Llave de Acceso
  • Flujo --lock para invocar la pantalla de bloqueo desde el servicio.
  • Persistencia estructurada

  • Archivos separados en AppData:
    • key
    • mode
    • path
  • Eliminación de rutas hardcodeadas (el servicio lee path dinámicamente).
  • Validación USB

  • Clase USBValidator desacoplada.
  • Uso de IsReady para robustez.
  • Detección dinámica de unidades USB en la app.
  • Pantalla de bloqueo funcional

  • LockScreenForm integrada.
  • Cierre automático al detectar USB autorizado.


  • Cosas a realizar

    Realizar un correcta comunicación entre PCProtector Service y Administrator:

    Objetivo

    Implementar un mecanismo de comunicación robusto entre PCProtectorService y PCProtectorAdministrator, permitiendo que el servicio pueda:

    • Disparar la pantalla de bloqueo (LockScreenForm)
    • Mantener sincronizado el estado del sistema

    Esto se espera desde el arranque del sistema, no esperando a que el usuario tenga que siempre ejecutar el Administrator.

    Problema Actual

    Actualmente, la aplicación funciona correctamente cuando el Administrator está ejecutándose, ya que en ese contexto sí puede interactuar con el servicio.

    Sin embargo, al reiniciar el sistema ocurre lo siguiente:

    • El Servicio de Windows inicia correctamente
    • El servicio detecta el estado del USB
    • Pero no puede ejecutar el Administrator dentro de la sesión del usuario activo

    Esto sucede debido a una limitación estructural del sistema operativo Windows:

    Session 0 Isolation

    Los Servicios de Windows se ejecutan en Session 0, mientras que las aplicaciones de usuario se ejecutan en sesiones interactivas separadas.

    Por diseño de seguridad:

    • Un servicio no puede mostrar interfaz gráfica directamente.
    • No puede lanzar procesos interactivos en la sesión del usuario sin mecanismos específicos.
    • No puede simplemente “ejecutar un .exe” esperando que aparezca en pantalla.

    Esta restricción no es un error del proyecto, sino una política de seguridad del sistema operativo.


    Próxima Etapa

    Voy a implementar IPC mediante Named Pipes, permitiendo así:

    • Comunicación bidireccional
    • Envío de comandos (LOCK, UNLOCK, STATUS)
    • Evitar dependencia de archivos compartidos
    • Mantener arquitectura limpia y profesional

    Nota:

    El desafío actual no es funcional sino arquitectónico. La lógica del sistema ya está correctamente implementada. El siguiente salto evolutivo consiste en resolver la comunicación interproceso bajo las restricciones del modelo de seguridad de Windows.

Instalación y Uso Local

Actualmente el proyecto se encuentra en etapa de desarrollo y todavía no cuenta con instalador / ejecutables finales. Para ejecutarlo localmente, el flujo recomendado es correrlo desde Visual Studio, ya que se compone de tres proyectos relacionados: PCProtectorAdministrator, PCProtectorService y la librería compartida CommonLib.

Requisitos

Instalación (modo desarrollo)

# Clonar el repositorio
    # Administrator:
git clone https://github.com/JESMexe/PCProtectorAdministrator.git
    # Service:
git clone https://github.com/JESMexe/PCProtectorService.git
    # CommonLib:
git clone https://github.com/JESMexe/CommonLib.git

# Abrir la solución en Visual Studio o Rider
#    y restaurar dependencias NuGet
#    Build > Restore NuGet Packages

# Verificar referencias (Muy importante)
#    PCProtectorAdministrator → referencia a CommonLib
#    PCProtectorService       → referencia a CommonLib
            

Ejecución

El sistema se compone de un servicio (enforcement) y una aplicación de administración (UI + LockScreen). En desarrollo se recomienda este orden:

1) Ejecutar PCProtectorAdministrator

2) Ejecutar / instalar PCProtectorService

Uso del LockScreen

Para pruebas, el lockscreen puede ejecutarse manualmente iniciando el Administrator con el parámetro:

PCProtectorAdministrator.exe --lock

Estado actual de instalación

El proyecto aún no cuenta con un instalador final porque se está finalizando la comunicación entre el servicio y la UI bajo las restricciones de seguridad de Windows (Session 0 Isolation). Una vez completada esa integración, se publicará un instalador para una ejecución màs simple.