
Biblioteca baseada em C para analisar, editar e salvar metadados EXIF de imagens JPEG, com foco na exploração da CVE-2016-6328 para Android 10.
libexif -------
libexif é uma biblioteca para análise, edição e salvamento de dados EXIF. Ela pretende substituir muitas implementações redundantes em utilitários de linha de comando e programas com interfaces gráficas.
libexif suporta análise, edição e salvamento de dados EXIF. Além disso, possui suporte a gettext. Todas as tags EXIF descritas no padrão EXIF 2.1 (e a maioria das 2.2) são suportadas. Muitas notas de fabricante das câmeras Canon, Casio, Epson, Fuji, Nikon, Olympus, Pentax e Sanyo também são suportadas.
libexif é escrito em C puro e não requer nenhuma biblioteca adicional. O GNU gettext será usado para tradução de idiomas, se disponível.
libexif só consegue lidar com algumas notas de fabricante, e mesmo essas não muito bem. Mais trabalho precisa ser feito. Note que o libmnote foi mesclado ao libexif - ele não é mais necessário.
Documentamos a API do libexif usando doxygen e disponibilizamos os resultados em http://libexif.sourceforge.net/api/
Os pequenos programas de teste no diretório test ilustram como criar dados EXIF válidos do zero, como salvar dados EXIF e como carregar dados EXIF a partir de dados na memória. Existem também alguns programas de exemplo simples disponíveis no diretório contrib/examples/. Não hesite em nos contatar em [email protected] se tiver dúvidas sobre como usar o libexif.
Para vincular o libexif ao seu próprio pacote, recomendamos usar o utilitário pkgconfig (cf. http://www.freedesktop.org/wiki/Software/pkg-config/ Para sua conveniência, o libexif fornece tanto libexif-uninstalled.pc quanto instala libexif.pc.
Atualmente, conheço os seguintes frontends para libexif:
Se você deseja migrar seu programa para usar libexif ou adicionar suporte EXIF a ele, não hesite em contatar os autores.
Conheço as seguintes bibliotecas que usam ou foram inspiradas pelo libexif:
Realmente depende do seu ambiente o que fazer para compilar o libexif. Compilar a partir do tarball de origem geralmente envolve os comandos:
./configure make sudo make install
Ao compilar a partir do código fonte do CVS, algo como o seguinte será necessário:
gettextize mv po/Makevars.template po/Makevars aclocal -I auto-m4 -I m4m autoheader libtoolize --force automake --add-missing autoconf ./configure make
Ou, provavelmente apenas:
autoreconf -i ./configure make
Além dos argumentos padrão, o configure aceita vários específicos do libexif:
--disable-docs Para desabilitar a produção de documentação --enable-internal-docs Compilar documentação interna do código se Doxygen estiver disponível --enable-ship-binaries Para incluir DLLs do Windows em 'make dist'
Certas aplicações especializadas podem reduzir o tamanho do binário do libexif definindo uma ou ambas das seguintes macros na variável de ambiente CPPFLAGS no momento da configuração. Cada uma remove certos tipos de strings de texto e constantes do binário. Aplicações que precisam acessar tags EXIF específicas e conhecidas e sabem de antemão o significado de seus dados não precisam dessas strings e podem economizar espaço considerável eliminando-as.
-DNO_VERBOSE_TAG_STRINGS Nomes e descrições das tags EXIF, mensagens de debug, campos EXIF obrigatórios (desabilitando auto-tag-fixup) -DNO_VERBOSE_TAG_DATA Nomes dos conteúdos enumerados dos dados da tag
As traduções do libexif são feitas por voluntários trabalhando por conta própria, seja diretamente com o projeto libexif ou através de um dos dois sites de coordenação de tradução, o Translation Project http://translationproject.org/domain/libexif.html e o Launchpad https://translations.edge.launchpad.net/ubuntu/precise/+source/libexif/+pots/libexif-12. Quaisquer atualizações nas traduções de idiomas coordenadas pelo Translation Project devem ser feitas através do seu site, mas todos os outros idiomas podem ser atualizados através do Launchpad (preferido) ou enviando atualizações diretamente para a lista de e-mails dos desenvolvedores do libexif. No momento desta escrita, os seguintes idiomas devem ser atualizados através do Translation Project: cs da de es fr it ja nl pl sk sv uk vi
Se você estiver interessado em traduzir o libexif para um novo idioma, recomendamos que você se junte a um dos grupos de tradução acima e aproveite os sistemas que eles construíram para ajudá-lo. Um aviso de tradução NÃO é necessário para o libexif no Translation Project; ao fazer uma tradução, você concorda implicitamente em fornecê-la sob os mesmos termos de licença do restante do libexif (LGPL).
libexif foi originalmente escrito por Curtis Galloway [email protected]. Devido ao design original não suportar edição e salvamento, Lutz Mueller [email protected] reescreveu o libexif do zero. Desde então, muitas outras pessoas contribuíram para o libexif.
Alguns links que você pode querer conferir se estiver interessado em mais informações sobre EXIF.