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
Análise de arquivo : Metadados, Digest e EXIF

Análise de cores
Análise de cores : conversão espacial, projeção PCA, histogramas e estatísticas

Inspeção visual
Inspeção visual : lupa, ajustes de imagem e comparação de evidências

Análise JPEG
Análise JPEG : tabelas de quantização, fantasmas de compressão e análise de nível de erro

Luminância / Ruído
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

  1. Download and install Anaconda (one can also install miniconda, no GUI but is smaller)
  2. Install Xinerama library: sudo apt-get install libxcb-xinerama0
  3. 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]
  4. After install ends, type in the same console conda activate sherloq to activate the env and leave the console open

Launch program

  1. Clone the repository content into a local folder
  2. Change current directory to the gui folder inside sherloq
  3. Execute pip install -r requirements.txt
  4. 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!