Português (Brasil)

Imagens e fotos · Ferramenta de privacidade de metadados de imagens

Como um navegador lê EXIF de um JPEG sem fazer upload

· Como funciona

exif privacidade de imagem processamento do navegador formatos de arquivo

Uma fotografia transformando-se em bytes locais, segmentos JPEG e campos EXIF legíveis dentro de um navegador
Ilustração vetorial original ToolAcre

Um passo a passo do que realmente acontece entre colocar um JPEG na página e ver seus metadados: os bytes são lidos localmente, o segmento APP1 é localizado e os diretórios TIFF dentro dele são decodificados em JavaScript, sem nenhum servidor envolvido.

A afirmação a ser testada: 'nada foi carregado' — por que um inspetor de metadados só precisa ler os bytes que já possui e como confirmar que nenhuma solicitação sai da guia

A alegação de que uma fotografia não foi carregada é testável e não decorativa. A ferramenta lê o arquivo selecionado em um ArrayBuffer, converte-o em bytes e passa esses bytes diretamente para o leitor de metadados. Sua declaração de privacidade limita cuidadosamente a promessa: a fotografia é analisada na guia do navegador, nenhuma cópia é armazenada e as solicitações de análise divulgadas são separadas do caminho do código que gerencia o arquivo.

Lendo o arquivo localmente com o Arquivo API — como o navegador entrega à ferramenta um ArrayBuffer da sua foto sem que os bytes saiam do dispositivo

Um seletor de arquivos fornece um objeto Arquivo do navegador e file.arrayBuffer() disponibiliza seu conteúdo para JavaScript já em execução na página. ToolAcre impõe um limite máximo de 50 MB e, em seguida, identifica JPEG, PNG ou WebP a partir dos próprios bytes. Essa leitura local não precisa de envio de formulário ou endpoint de upload de imagem, e o teste de isolamento de rede exercita todos os três formatos suportados sem registrar uma solicitação.

Encontrar o segmento APP1 - caminhar pelos marcadores JPEG de SOI até o cabeçalho 'Exif' e pular segmentos que carregam ICC ou XMP

Para JPEG, o leitor começa após o marcador de início de imagem e percorre os segmentos do marcador até o marcador de início de varredura. Ele reconhece cargas úteis APP1 começando com Exif e as analisa, enquanto XMP é detectado apenas para remoção e ICC é deliberadamente retido como dados de renderização. Tudo, desde o marcador de varredura em diante, pertence ao caminho da imagem compactada, e não ao relatório EXIF.

Decodificando o cabeçalho TIFF e IFDs - ordem de bytes (II ou MM), o deslocamento para IFD0 e as entradas de 12 bytes que apontam para os subdiretórios Exif e GPS

Uma carga útil EXIF contém um bloco TIFF. O analisador lê o marcador de ordem de bytes II ou MM, verifica o valor mágico TIFF e segue o deslocamento para IFD0. Cada entrada de diretório fornece uma tag, tipo, contagem e um valor embutido ou um deslocamento. De IFD0 o código segue apenas os ponteiros de subdiretório Exif e GPS, mantendo a travessia limitada em vez de perseguir todas as estruturas privadas possíveis.

Transformando valores brutos de tags em campos legíveis — IDs de tags, tipos de dados, racionais e strings ASCII e por que alguns valores precisam de uma tabela de pesquisa

Os valores brutos tornam-se úteis somente depois que seus tipos e tags são interpretados. Os campos ASCII tornam-se strings, os tipos numéricos usam a ordem de bytes TIFF e os pares racionais tornam-se números após a leitura do numerador e do denominador. Um dicionário de tags rotula a marca da câmera, o modelo, os carimbos de data e hora, o software, os campos seriais e os valores GPS e, em seguida, classifica a localização e a identidade do dispositivo antes dos campos técnicos menos confidenciais.

Exemplo resolvido: uma foto de telefone analisada no tópico principal

A pasta de trabalho descreveu este exemplo como sendo executado em um Web Worker, mas o painel enviado chama readMetadata diretamente após aguardar file.arrayBuffer(); nenhum trabalhador participa deste caminho. Um telefone JPEG selecionado é, portanto, lido e analisado no thread principal da página, após o qual qualquer latitude e longitude são impressas como números e a tabela de campos completa é renderizada. A correção é importante porque o processamento local e o processamento do trabalhador são reivindicações diferentes.

O que isso não cobre: ​​componentes internos do MakerNote, formatos RAW, HEIC e contêineres de vídeo estão fora deste passo a passo e fora da ferramenta

O leitor está intencionalmente incompleto. Ele não decodifica componentes internos do MakerNote, campos de miniatura IFD1, conteúdo JPEG XMP ou contêineres RAW, HEIC, AVIF, TIFF, GIF e SVG não suportados. Um segmento EXIF corrompido é ignorado e não pode bloquear a remoção posterior. Um relatório vazio significa apenas que este analisador limitado não encontrou campos legíveis, e não que todos os canais de informação possíveis estão ausentes.

Conclusão: a leitura de metadados é um trabalho local, em nível de byte – a ferramenta de privacidade de metadados de imagem faz exatamente isso, para que você possa inspecionar antes de comcomcompartilhar sem confiar em um servidor

A leitura de metadados é um trabalho local em nível de byte quando a implementação mantém os bytes selecionados na guia e não executa nenhuma solicitação com eles. Use o relatório para identificar o que esse analisador pode ver e, em seguida, use a ação de remoção separada quando for necessária uma cópia limpa. A inspeção nunca altera a fotografia original, e o código-fonte e o teste de isolamento de rede fornecem evidências mais fortes do que um crachá genérico de processamento de navegador.