um mapa mental interativo no estilo OSINT Framework, utilizando a biblioteca streamlit-tree-select. A árvore deve ser baseada nos tópicos da ISO/IEC 27037, contendo as principais categorias: Identificação, Coleta, Aquisição e Preservação. Cada categoria deve conter subcategorias correspondentes, como "Cadeia de custódia", "Cópia forense", "Autenticidade", etc. O app deve permitir seleção de nós e, ao clicar, exibir informações descritivas sobre o item selecionado.
To upload files, please first save the app
import streamlit as st
import pandas as pd
from streamlit_tree_select import tree_select
st.set_page_config(page_title="ISO/IEC 27037 Framework", layout="wide")
st.title("ISO/IEC 27037 Framework Interativo")
st.markdown("""
Este mapa mental interativo apresenta os principais tópicos da norma ISO/IEC 27037,
que fornece diretrizes para identificação, coleta, aquisição e preservação de evidências digitais.
""")
# Definição da estrutura de árvore para o framework ISO/IEC 27037
nodes = [
{
"label": "Identificação",
"value": "identificacao",
"children": [
{
"label": "Reconhecimento de Evidência Digital",
"value": "reconhecimento-evidencia"
},
{
"label": "Priorização de Evidências",
"value": "priorizacao-evidencias"
},
{
"label": "Identificação de Dispositivos",
"value": "identificacao-dispositivos"
},
{
"label": "Documentação da Cena",
"value": "documentacao-cena"
}
]
},
{
"label": "Coleta",
"value": "coleta",
"children": [
{
"label": "Dispositivos Ligados vs. Desligados",
"value": "dispositivos-status"
},
{
"label": "Coleta de Dados Voláteis",
"value": "dados-volateis"
},
{
"label": "Coleta de Dispositivos Móveis",
"value": "coleta-moveis"
},
{
"label": "Coleta de Dispositivos de Rede",
"value": "coleta-rede"
},
{
"label": "Cadeia de Custódia",
"value": "cadeia-custodia"
}
]
},
{
"label": "Aquisição",
"value": "aquisicao",
"children": [
{
"label": "Cópia Forense",
"value": "copia-forense"
},
{
"label": "Aquisição de Memória RAM",
"value": "aquisicao-ram"
},
{
"label": "Aquisição de Armazenamento",
"value": "aquisicao-armazenamento"
},
{
"label": "Aquisição Remota",
"value": "aquisicao-remota"
},
{
"label": "Triagem de Dados",
"value": "triagem-dados"
}
]
},
{
"label": "Preservação",
"value": "preservacao",
"children": [
{
"label": "Integridade dos Dados",
"value": "integridade-dados"
},
{
"label": "Autenticidade",
"value": "autenticidade"
},
{
"label": "Reprodutibilidade",
"value": "reprodutibilidade"
},
{
"label": "Não Interferência",
"value": "nao-interferencia"
},
{
"label": "Documentação",
"value": "documentacao"
}
]
}
]
# Informações detalhadas sobre cada nó
node_info = {
# Identificação
"identificacao": """
# Identificação
A identificação é o processo de reconhecer e localizar potenciais evidências digitais. Este é o primeiro passo
crítico no processo forense digital, pois determina quais itens devem ser coletados para análise posterior.
A ISO/IEC 27037 fornece diretrizes específicas para identificar corretamente dispositivos e dados que possam
conter evidências digitais relevantes para uma investigação.
""",
"reconhecimento-evidencia": """
## Reconhecimento de Evidência Digital
Processo de identificar o que pode constituir evidência digital em um cenário investigativo:
* Dispositivos de armazenamento (HDs, SSDs, pendrives)
* Dispositivos móveis (smartphones, tablets)
* Sistemas em rede (servidores, dispositivos IoT)
* Dispositivos de computação (desktops, laptops)
* Serviços em nuvem e dados online
Este reconhecimento requer treinamento adequado para distinguir entre itens relevantes e irrelevantes.
""",
"priorizacao-evidencias": """
## Priorização de Evidências
A priorização envolve determinar quais evidências são mais críticas, especialmente quando:
* O tempo disponível para coleta é limitado
* Há grande volume de potenciais evidências
* Existem dados voláteis que podem ser perdidos
A ISO 27037 recomenda considerar:
1. Volatilidade dos dados
2. Relevância aparente para a investigação
3. Esforço necessário para coleta
4. Risco de alteração ou perda
""",
"identificacao-dispositivos": """
## Identificação de Dispositivos
Procedimentos para identificar corretamente os dispositivos que contêm evidências digitais:
* Rotulagem única e precisa de cada dispositivo
* Fotografia e documentação do estado físico
* Registro de números de série, modelos e fabricantes
* Identificação de conexões de rede e periféricos
* Mapeamento de relacionamentos entre dispositivos
A norma enfatiza a importância de documentar a localização e o estado físico dos dispositivos.
""",
"documentacao-cena": """
## Documentação da Cena
A documentação completa da cena onde as evidências digitais são identificadas é crucial:
* Fotografias do ambiente e posicionamento dos dispositivos
* Desenhos e diagramas da cena
* Notas sobre o estado operacional dos sistemas
* Registro de pessoas presentes e suas atividades
* Documentação de condições ambientais relevantes
Esta documentação serve como referência para todo o processo forense subsequente.
""",
# Coleta
"coleta": """
# Coleta
A coleta refere-se ao processo de recolher dispositivos físicos que podem conter evidências digitais.
Isso envolve procedimentos específicos para garantir que as evidências sejam preservadas em seu estado
original tanto quanto possível.
A ISO/IEC 27037 define protocolos rigorosos para a coleta de diferentes tipos de dispositivos em diversos cenários.
""",
"dispositivos-status": """
## Dispositivos Ligados vs. Desligados
A decisão de desligar ou manter um dispositivo ligado durante a coleta é crítica:
### Dispositivos Ligados:
* Permitem acesso a dados voláteis (RAM, processos em execução)
* Podem conter informações sobre conexões ativas e usuários
* Requerem procedimentos especiais para minimizar alterações
### Dispositivos Desligados:
* Preservam o estado do disco sem alterações adicionais
* Eliminam riscos de programas de autodestruição ou limpeza
* Podem perder dados voláteis importantes
A ISO 27037 fornece árvores de decisão para determinar a abordagem mais apropriada.
""",
"dados-volateis": """
## Coleta de Dados Voláteis
Procedimentos para coletar dados que existem apenas na memória ou estados temporários:
* Captura de memória RAM
* Conexões de rede ativas
* Processos em execução
* Usuários logados
* Dados armazenados em cache
A coleta deve seguir a "ordem de volatilidade" - dos dados mais voláteis para os menos voláteis.
Ferramentas especializadas e procedimentos documentados são necessários para preservar estes dados.
""",
"coleta-moveis": """
## Coleta de Dispositivos Móveis
Considerações especiais para smartphones, tablets e outros dispositivos móveis:
* Isolamento de rede (modo avião, bloqueadores de sinal)
* Prevenção de bloqueio ou limpeza remota
* Documentação de estado de carga e conexões
* Manutenção da energia para dispositivos ligados
* Considerações sobre dados armazenados em cartões de memória
A coleta deve considerar características específicas como criptografia, bloqueios biométricos e conexões com a nuvem.
""",
"coleta-rede": """
## Coleta de Dispositivos de Rede
Procedimentos para coletar evidências de roteadores, switches, firewalls e outros dispositivos de rede:
* Captura de tabelas de roteamento e logs
* Documentação de conexões físicas
* Preservação de configurações e registros de eventos
* Coleta de dados de tráfego quando relevante
* Identificação de relações com outros dispositivos
A norma recomenda o envolvimento de especialistas em redes quando necessário.
""",
"cadeia-custodia": """
## Cadeia de Custódia
Processo formal para documentar o histórico cronológico da evidência:
* Documentação de quem coletou a evidência
* Registro de data, hora e local da coleta
* Documentação de cada transferência de posse
* Métodos de armazenamento e selo
* Registros de acesso à evidência
A cadeia de custódia deve ser ininterrupta e completamente documentada para garantir a admissibilidade legal.
""",
# Aquisição
"aquisicao": """
# Aquisição
A aquisição é o processo de criação de uma cópia digital das evidências encontradas em dispositivos
físicos. Este processo deve ser realizado de maneira que preserve a integridade dos dados originais
e produza uma cópia exata para análise.
A ISO/IEC 27037 estabelece métodos e procedimentos específicos para diferentes cenários de aquisição.
""",
"copia-forense": """
## Cópia Forense
Processo de criação de uma cópia bit-a-bit (imagem) de dispositivos de armazenamento:
* Uso de bloqueadores de escrita para proteger os originais
* Verificação através de funções hash (MD5, SHA-1, SHA-256)
* Documentação de métodos e ferramentas utilizadas
* Criação de cópias de trabalho para análise
* Armazenamento seguro das imagens master
A cópia forense deve capturar todos os dados, incluindo espaço não alocado, arquivos excluídos e metadados.
""",
"aquisicao-ram": """
## Aquisição de Memória RAM
Técnicas para capturar o conteúdo da memória volátil:
* Uso de ferramentas especializadas de captura de memória
* Priorização baseada na volatilidade dos dados
* Minimização do impacto no sistema em execução
* Documentação do ambiente e estado do sistema
* Verificação de integridade quando possível
A aquisição de RAM pode revelar senhas, chaves de criptografia, malware em execução e outras evidências não disponíveis no armazenamento persistente.
""",
"aquisicao-armazenamento": """
## Aquisição de Armazenamento
Métodos para adquirir dados de diferentes tipos de dispositivos de armazenamento:
* Discos rígidos (HDDs) - aquisição física completa
* Unidades de estado sólido (SSDs) - considerações sobre garbage collection
* Armazenamento em rede (NAS, SAN) - protocolos específicos
* Armazenamento em nuvem - desafios jurisdicionais e técnicos
* Dispositivos com criptografia - estratégias para acesso
A ISO 27037 define procedimentos para casos quando a aquisição completa não é possível (aquisição lógica seletiva).
""",
"aquisicao-remota": """
## Aquisição Remota
Procedimentos para adquirir evidências através de conexões de rede:
* Requisitos para documentação adicional
* Considerações sobre confiabilidade da conexão
* Verificação de integridade através da rede
* Limitações legais e jurisdicionais
* Uso de canais seguros e criptografados
A aquisição remota deve ser considerada apenas quando o acesso físico não é possível ou prático.
""",
"triagem-dados": """
## Triagem de Dados
Processo de avaliação inicial para determinar relevância e prioridade:
* Busca por palavras-chave e padrões específicos
* Filtragem por tipo de arquivo ou metadados
* Identificação de dados protegidos ou privilegiados
* Avaliação de relevância temporal
* Estratégias para grandes volumes de dados
A triagem deve ser conduzida de forma a minimizar o risco de alteração dos dados originais.
""",
# Preservação
"preservacao": """
# Preservação
A preservação envolve a proteção das evidências digitais contra alteração ou deterioração.
Este processo garante que as evidências permaneçam confiáveis e utilizáveis durante toda a investigação
e possíveis processos legais subsequentes.
A ISO/IEC 27037 estabelece diretrizes para preservar a integridade, autenticidade e admissibilidade das evidências digitais.
""",
"integridade-dados": """
## Integridade dos Dados
Métodos para garantir que os dados não sejam alterados durante e após a coleta:
* Uso de funções hash criptográficas (MD5, SHA-1, SHA-256)
* Armazenamento em mídia write-once (WORM)
* Uso de assinaturas digitais
* Verificações periódicas de integridade
* Procedimentos para detecção de alterações
A integridade é fundamental para a admissibilidade das evidências em processos legais.
""",
"autenticidade": """
## Autenticidade
Processos para garantir que as evidências sejam o que alegam ser:
* Documentação da fonte original
* Manutenção da cadeia de custódia ininterrupta
* Verificação da origem dos dados
* Correlação com outras evidências
* Testemunho de especialistas quando necessário
A autenticidade estabelece a confiança de que a evidência digital é genuína e não foi fabricada ou alterada.
""",
"reprodutibilidade": """
## Reprodutibilidade
Capacidade de repetir os processos de aquisição com os mesmos resultados:
* Documentação detalhada de todos os procedimentos
* Uso de ferramentas verificáveis e confiáveis
* Manutenção de registros de configurações e parâmetros
* Transparência metodológica
* Testes de validação quando apropriado
A reprodutibilidade permite que outros especialistas verifiquem independentemente as evidências e conclusões.
""",
"nao-interferencia": """
## Não Interferência
Princípio de minimizar alterações nos dados originais:
* Uso de bloqueadores de escrita de hardware
* Ferramentas forenses validadas para minimizar impacto
* Documentação de qualquer alteração inevitável
* Priorização de métodos menos invasivos
* Justificativa para alterações necessárias
A não interferência protege a integridade da evidência e fortalece sua admissibilidade.
""",
"documentacao": """
## Documentação
Registros abrangentes de todos os aspectos do processo forense:
* Procedimentos realizados e sua sequência
* Ferramentas e metodologias utilizadas
* Pessoas envolvidas e suas qualificações
* Cronologia de eventos
* Justificativas para decisões tomadas
A documentação completa é essencial para estabelecer a credibilidade do processo e das evidências coletadas.
"""
}
# Layout com duas colunas
col1, col2 = st.columns([1, 2])
with col1:
st.subheader("Navegação por Tópicos")
# Componente de árvore para navegação
return_select = tree_select(nodes=nodes, check=False)
selected = return_select["selected"]
with col2:
st.subheader("Informações Detalhadas")
if not selected:
# Mostrar informações gerais se nenhum nó for selecionado
st.markdown("""
## ISO/IEC 27037
A ISO/IEC 27037 é uma norma internacional que fornece diretrizes para atividades específicas relacionadas à
identificação, coleta, aquisição e preservação de evidências digitais potenciais. Esta norma foi desenvolvida
para orientar os profissionais que lidam com evidências digitais em contextos forenses e investigativos.
### Objetivos da Norma:
- Fornecer orientação para o manuseio de evidências digitais
- Estabelecer metodologias para preservar a integridade das evidências
- Padronizar procedimentos para garantir admissibilidade legal
- Facilitar a troca de evidências entre jurisdições
### Selecione um tópico na árvore à esquerda para ver informações detalhadas.
""")
else:
# Mostrar informações do nó selecionado
selected_node = selected[0] if isinstance(selected, list) and selected else selected
if selected_node in node_info:
st.markdown(node_info[selected_node])
else:
# Encontrar o nó pai se a informação específica não estiver disponível
for parent in nodes:
if parent["value"] == selected_node:
st.markdown(node_info[parent["value"]])
break
for child in parent.get("children", []):
if child["value"] == selected_node:
if selected_node in node_info:
st.markdown(node_info[selected_node])
else:
st.markdown(node_info[parent["value"]])
break
# Rodapé com informações sobre a aplicação
st.markdown("---")
st.markdown("""
<div style="text-align: center">
<p>Mapa Mental ISO/IEC 27037 - Aplicação para fins educacionais</p>
<p>Este framework interativo foi desenvolvido para auxiliar no estudo e compreensão da norma ISO/IEC 27037.</p>
</div>
""", unsafe_allow_html=True)
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?