Especialização em Sistemas com Python 3.12+ • Capítulo 04


🎯 Demonstração Prática: Sistema de Segurança de Arquivos e Formatação com F-Strings

O exemplo abaixo combina a eficiência de computação em nível de bits com manipulação e formatação avançada de strings:

  • Emprego de enum.IntFlag para implementar um controle de privilégios e permissões no padrão POSIX/Unix.
  • Auditoria de pacotes e decodificação de cabeçalhos binários.
  • F-Strings com especificadores de largura, alinhamento, formatação de binários (:08b) e depuração (=).
"""
demonstracao_bitwise_e_strings.py
Controle de Acessos com IntFlag, Máscaras de Bits e Formatação Avançada de F-Strings.
Compatível com Python 3.12+ (PEP 701).
"""

from __future__ import annotations

from enum import IntFlag, auto
from typing import Final

# ==============================================================================
# 1. PERMISSÕES E FLAGS BITWISE
# ==============================================================================
class PermissaoRecurso(IntFlag):
    NENHUMA = 0
    LEITURA = auto()       # 1 << 0 = 0b00000001 (1)
    ESCRITA = auto()       # 1 << 1 = 0b00000010 (2)
    EXECUCAO = auto()      # 1 << 2 = 0b00000100 (4)
    EXCLUSAO = auto()      # 1 << 3 = 0b00001000 (8)
    AUDITORIA = auto()     # 1 << 4 = 0b00010000 (16)
    ADMINISTRADOR = auto() # 1 << 5 = 0b00100000 (32)

    # Perfis pré-compostos
    PERFIL_CONSULTA = LEITURA | AUDITORIA
    PERFIL_OPERADOR = LEITURA | ESCRITA | EXECUCAO
    PERFIL_ROOT = LEITURA | ESCRITA | EXECUCAO | EXCLUSAO | AUDITORIA | ADMINISTRADOR

# ==============================================================================
# 2. AUDITOR E GERENCIADOR DE RECURSOS
# ==============================================================================
class AuditoriaSeguranca:
    @staticmethod
    def checar_acesso(mascara_usuario: PermissaoRecurso, permissao_necessaria: PermissaoRecurso) -> bool:
        """Verifica se todos os bits da permissão requerida estão ativos na máscara do usuário."""
        return (mascara_usuario & permissao_necessaria) == permissao_necessaria

    @staticmethod
    def conceder(mascara_usuario: PermissaoRecurso, nova_permissao: PermissaoRecurso) -> PermissaoRecurso:
        """Ativa novos bits através do operador OR (|)."""
        return mascara_usuario | nova_permissao

    @staticmethod
    def revogar(mascara_usuario: PermissaoRecurso, permissao_remover: PermissaoRecurso) -> PermissaoRecurso:
        """Desativa bits específicos através do operador AND com complemento invertido (& ~)."""
        return mascara_usuario & ~permissao_remover

    @staticmethod
    def alternar(mascara_usuario: PermissaoRecurso, permissao_toggle: PermissaoRecurso) -> PermissaoRecurso:
        """Inverte o estado dos bits especificados através do operador XOR (^)."""
        return mascara_usuario ^ permissao_toggle

# ==============================================================================
# 3. MANIPULAÇÃO E SANITIZAÇÃO DE TEXTO
# ==============================================================================
def sanitizar_chave_acesso(token_bruto: str) -> str:
    """Higieniza token removendo pontuações, espaços e convertendo em maiúsculas."""
    caracteres_limpos: list[str] = [c.upper() for c in token_bruto if c.isalnum()]
    return "".join(caracteres_limpos)

# ==============================================================================
# 4. EXECUÇÃO DEMONSTRATIVA E FORMATAÇÃO COM F-STRINGS
# ==============================================================================
if __name__ == "__main__":
    # Criação de um usuário operacional
    usuario_operador: PermissaoRecurso = PermissaoRecurso.PERFIL_OPERADOR

    print("=" * 80)
    print("      SISTEMA DE AUDITORIA DE SEGURANÇA E BITS (PYTHON 3.12+)")
    print("=" * 80)

    # Exibição binária formatada com F-Strings
    print(f"Perfil Operador (Decimal) : {usuario_operador.value}")
    print(f"Representação Binária     : 0b{usuario_operador.value:08b}")
    print(f"Representação Hexadecimal : 0x{usuario_operador.value:04X}")
    print("-" * 80)

    # Matriz de Testes de Permissão
    testes: list[tuple[str, PermissaoRecurso]] = [
        ("Leitura de Arquivos", PermissaoRecurso.LEITURA),
        ("Gravação e Edição", PermissaoRecurso.ESCRITA),
        ("Execução de Scripts", PermissaoRecurso.EXECUCAO),
        ("Exclusão Definitiva", PermissaoRecurso.EXCLUSAO),
        ("Acesso Administrativo", PermissaoRecurso.ADMINISTRADOR),
    ]

    print(f"{'Operação Solicitada':<25} | {'Bitmask':<10} | {'Resultado da Autorização':<25}")
    print("-" * 80)

    for nome_teste, flag in testes:
        autorizado: bool = AuditoriaSeguranca.checar_acesso(usuario_operador, flag)
        status_str: str = "AUTORIZADO" if autorizado else "ACESSO NEGADO"
        print(f"{nome_teste:<25} | 0b{flag.value:08b} | [{status_str:^15}]")

    print("-" * 80)
    print(">> Atualizando privilégios do operador...")

    # Concessão e Revogação
    usuario_operador = AuditoriaSeguranca.conceder(usuario_operador, PermissaoRecurso.AUDITORIA)
    usuario_operador = AuditoriaSeguranca.revogar(usuario_operador, PermissaoRecurso.ESCRITA)

    print(f"Nova Máscara após ajustes : 0b{usuario_operador.value:08b}")
    print(f"Possui Auditoria?         : {AuditoriaSeguranca.checar_acesso(usuario_operador, PermissaoRecurso.AUDITORIA)}")
    print(f"Ainda possui Escrita?     : {AuditoriaSeguranca.checar_acesso(usuario_operador, PermissaoRecurso.ESCRITA)}")

    # Demonstração de Recursos Modernos da PEP 701 (Python 3.12)
    dados_sessao: dict[str, str | float] = {
        "usuario": "carlos.silva",
        "duracao_horas": 4.75,
        "consumo_memoria_mb": 128.456,
        "chave_bruta": "  usr-sec-984_ab@29  "
    }

    chave_processada: str = sanitizar_chave_acesso(str(dados_sessao["chave_bruta"]))

    print("\n" + "=" * 80)
    print("      METADADOS DA SESSÃO FORMATADOS COM PEP 701")
    print("=" * 80)
    # No Python 3.12, podemos reutilizar aspas duplas dentro das f-strings
    print(f"Usuário Ativo     : {dados_sessao['usuario'].upper()}")
    print(f"Duração Conexão   : {dados_sessao['duracao_horas']:>10.2f} horas")
    print(f"Memória Alocada   : {dados_sessao['consumo_memoria_mb']:>10.1f} MB")
    print(f"Token Sanitizado  : {chave_processada}")
    print("=" * 80)