Introdução
“A Análise Forense em Imagem é a aplicação da ciência da imagem e do conhecimento de domínio para interpretar o conteúdo de uma imagem e/ou a própria imagem em questões jurídicas. As principais subdisciplinas da Análise Forense em Imagem com aplicativos de aplicação da lei incluem: fotogrametria, comparação fotográfica, análise de conteúdo, e autenticação de imagem “. (Grupo de Trabalho Científico sobre Tecnologias de Imagem)
Sherloq é um projeto de pesquisa pessoal sobre a implementação de um ambiente totalmente integrado para análise forense de imagens digitais. Não se destina a ser uma ferramenta automática que decide se uma imagem é falsificada ou não (provavelmente essa ferramenta nunca existirá …), mas como uma companheira na experimentação de vários algoritmos encontrados nos últimos trabalhos de pesquisa e workshops.
Embora muitas soluções comerciais tenham altos preços de varejo e geralmente sejam reservadas apenas para órgãos policiais e governamentais, esse conjunto de ferramentas visa ser uma estrutura extensível e um ponto de partida para qualquer pessoa interessada em fazer experimentos nessa aplicação específica de processamento de sinal digital.
Eu acredito firmemente que segurança por obscuridade é a maneira errada de oferecer qualquer tipo de serviço forense (por exemplo, “Usando este software proprietário, garanto que esta foto é primitiva … e você precisa confiar em mim!”). Seguindo a filosofia de código-fonte aberto, todos devem poder experimentar várias técnicas por conta própria, adquirir conhecimento e compartilhá-lo com a comunidade … ainda melhor se contribuírem com melhorias de código! 🙂
História
A primeira versão foi escrita em 2015 usando o C ++ 11 para criar um utilitário de linha de comando com muitas opções, mas logo se tornou muito complicado e pouco interativo. Essa versão pode ser compilada com o CMake após a instalação das bibliotecas OpenCV, Boost e AlgLib. Essa primeira prova de conceito ofereceu cerca de 80% dos recursos planejados (veja abaixo a lista completa).
Embora também inclua novos algoritmos, a versão de 2017 adicionou principalmente uma GUI de várias janelas baseada em Qt para fornecer uma melhor experiência ao usuário. Várias análises podem ser exibidas na tela e um rápido visualizador de zoom / rolagem foi implementado para facilitar a navegação pela imagem. Esse projeto pode ser compilado com o Qt Creator com o Qt 5 e o OpenCV 3 e abrange cerca de 70% dos recursos planejados.
Avanço rápido para 2020, quando decidi portar tudo em Python (PySide2 + Matplotlib + OpenCV) para facilitar o desenvolvimento e a implantação. Embora essa iteração esteja apenas começando e eu ainda não tenha portado todo o código anterior na nova plataforma, acho que essa será a “forma” final do projeto (desde que alguém não se voluntarie para desenvolver um bom aplicativo da Web! )
É um prazer compartilhar meu código e entrar em contato com qualquer pessoa interessada em aprimorá-lo ou testá-lo, mas lembre-se de que este repositório não se destina à distribuição de um produto final. Meu objetivo é apenas acompanhar publicamente o desenvolvimento de um programa educacional despretensioso ferramenta , então espere bugs, código não polido e recursos ausentes! 😉
Recursos
Esta lista contém as funções que o Sherloq (espero!) Fornecerá quando o estágio beta for atingido.
Interface
- GUI moderna baseada em Qt com gerenciamento de múltiplas janelas de ferramentas
- Suporte para vários formatos (JPEG, PNG, TIFF, BMP, WebP, PGM, PFM, GIF)
- Visualizador de imagens altamente responsivo com panorâmica e zoom em tempo real
- Muitos algoritmos de última geração para testar interativamente
- Ajuda on-line abrangente com explicações e tutoriais sobre ferramentas
- Exportar resultados de análise visual e textual
Ferramentas
Geral
- Imagem original : exibe a imagem de referência inalterada para inspeção visual
- File Digest : recupera informações físicas de arquivos, criptografia e hashes perceptivos
- Editor hexadecimal : abra um editor hexadecimal externo para mostrar e editar bytes brutos
- Pesquisa semelhante : procure serviços de pesquisa on-line para encontrar imagens visualmente semelhantes
Metadados
- Estrutura do cabeçalho : despeja a estrutura do cabeçalho do arquivo e exibe uma exibição interativa
- EXIF Full Dump : digitalize os metadados do arquivo e colete todas as informações disponíveis
- Análise de miniaturas : extraia miniatura incorporada opcional e compare com a original
- Dados de geolocalização : recupere dados opcionais de localização geográfica e mostre-os no mapa mundial
Inspeção
- Ampliador de aumento: lupa com aprimoramentos para identificar melhor falsificações
- Histograma de canal : exibe canais de cor única ou histograma interativo composto de RGB
- Ajustes globais : aplique ajustes de imagem padrão (brilho, matiz, saturação, …)
- Comparação de referência : abra uma visualização dupla sincronizada para comparação com outra imagem
Detalhe
- Gradiente de luminância : analise as variações de brilho horizontal / vertical na imagem
- Filtro de borda de eco : use filtros derivados para revelar regiões fora de foco artificiais
- Limite de wavelet : reconstrua a imagem com diferentes limiares de coeficiente de wavelet
- Gráfico de correlação : explora padrões de correlação espacial entre pixels vizinhos
Cores
- Gráficos RGB / HSV : exibe gráficos interativos em 2D e 3D dos valores de pixels RGB e HSV
- Conversão de espaço : converta canais RGB em espaços HSV / YCbCr / Lab / Luv / CMYK / Gray
- Projeção PCA : use o PCA colorido para projetar pixels nos componentes mais salientes
- Estatísticas de pixel : calcule valores RGB mínimo / máximo / médio para cada pixel
Barulho
- Separação de ruído : estimar e extrair diferentes tipos de componentes de ruído de imagem
- Desvio mínimo / máximo : destaque os pixels que divergem das estatísticas mínimas / máximas baseadas em blocos
- Divisão de frequência : divide a luminância da imagem em componentes de alta e baixa frequência
- Valores de planos de bits : mostra planos de bits individuais para encontrar padrões de ruído inconsistentes
JPEG
- Análise de nível de erro : mostra a diferença no nível de pixel em relação aos níveis fixos de compactação
- Estimativa da qualidade : extrair tabelas de quantização e estimar a última qualidade JPEG salva
- Compactação múltipla : use resíduos para detectar compactação múltipla em diferentes níveis
- Mapa de ondulações do DCT : analise artefatos de quantização periódicos introduzidos por dispositivos
Violação
- Aprimoramento de contraste : analise a distribuição de cores para detectar aprimoramentos de contraste
- Falsificação de copiar-mover : use descritores de recursos invariantes para detecção de área clonada
- Emenda composta : explore as estatísticas do DCT para detectar automaticamente a zona de emenda
- Reamostragem de imagem : estimar interpolação de pixel 2D para detectar traços de reamostragem
Vários
- Filtragem mediana : detecta traços de processamento deixados pela filtragem mediana não linear
- Mapa do Iluminante : estimar a direção da luz local da cena em superfícies 3D estimadas
- Identificação PRNU : explore o ruído do padrão do sensor introduzido por diferentes câmeras
- Decodificador de Estereograma : decodifique imagens 3D ocultas em autostereogramas de olhos cruzados
Screenshots
Aqui estão algumas capturas de tela da GUI C ++ Qt anterior (a ser atualizada com a nova versão):
Análise de arquivo : Metadados, Digest e EXIF
Análise de cores : conversão espacial, projeção PCA, histogramas e estatísticas
Inspeção visual : lupa, ajustes de imagem e comparação de evidências
Análise JPEG : tabelas de quantização, fantasmas de compressão e análise de nível de erro
Luminância e Ruído : Gradiente de Luz, Borda do Eco, Desvio Mín / Máx e Consistência SNR
Instalação
Criar ambiente virtual
Linux
Install package manager
$ sudo apt install python3-distutils python3-dev python3-testresources subversion
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
Setup virtual environments
$ sudo pip install virtualenv virtualenvwrapper
$ echo -e "\n# Python Virtual Environments" >> ~/.bashrc
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
$ source ~/.bashrc
$ mkvirtualenv sq -p python3
MacOS
1) Open Terminal and enter `python3 --version` to install the interpreter and other command line tools
2) Once installed, proceed similarly to Linux installation:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
$ sudo pip install virtualenv virtualenvwrapper
$ echo -e "\n# Python Virtual Environments" >> ~/.bash_profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bash_profile
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bash_profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bash_profile
$ source ~/.bash_profile
3) $ mkvirtualenv sq -p python3
Windows
You can follow this guide (the Flask installation is optional).
Conda
- Download and install Anaconda (one can also install miniconda, no GUI but is smaller)
- Install Xinerama library:
sudo apt-get install libxcb-xinerama0
- Open a console to create a Python environment (on Windows one must start a Conda Console or
sth
from the Start menu):conda create --copy -n sherloq python
[enter Yes when it prompts] - After install ends, type in the same console
conda activate sherloq
to activate the env and leave the console open
Launch program
- Clone the repository content into a local folder
- Change current directory to the
gui
folder insidesherloq
- Execute
pip install -r requirements.txt
- Launch the program with
python sherloq.py
Bibliography
- Black Hat Briefings DC. (2008) “A Picture’s Worth: Digital Image Analysis and Forensics” [White paper]. Washington, DC. Retrieved from http://blackhat.com/presentations/bh-dc-08/Krawetz/Whitepaper/bh-dc-08-krawetz-WP.pdf
- “Noiseprint: a CNN-based camera model fingerprint” (Davide Cozzolino, Luisa Verdoliva)
- “Exposing Digital Forgeries by Detecting Traces of Re-sampling” (Alin C. Popescu and Hany Farid)
- “Two Improved Forensic Methods of Detecting Contrast Enhancement in Digital Images” (Xufeng Lin, Xingjie Wei and Chang-Tsun Li)
Você pode baixar a ferramenta aqui: https://github.com/GuidoBartoli/sherloq
Aprenda mais no curso CFID
Gostou do artigo? Conheça o curso Computação Forense e Investigação Digital.
Este curso tem como objetivo apresentar os conceitos da Computação Forense e métodos de Investigação Digital, sendo baseado no conteúdo apresentado nas certificações mais conhecidas do mercado.
Hospedagem de site
digitalocean, excelente custo benefício.
Clique abaixo e aproveite!