Como uso o dmtxread para ler uma matriz de dados digitalizados?

1

Estou tentando ler uma matriz de dados que geramos de uma chave RSA criptografada de 2096 bits privada.

A chave foi gerada usando gpg e impressa em PDF com o seguinte comando:

gpg --export-secret-key MY_PRIVATE_KEY_ID | paperkey --output-type raw | dmtxwrite -e 8 -f PDF > ~/key.pdf

Eu então imprimi key.pdf e escaneei, produzindo o seguinte arquivo jpg:

Agoraeuqueriausaroseguintecomandopararecriarminhachaveprivada:

dmtxread/path/to/image.jpg|paperkey--pubring~/.gnupg/pubring.gpg>my-regenerated-private-key.gpg

Noentanto,ocomandodmtxreadnãoimprimenadaemstdouteretorna1.Eutenteimexercomacorreçãodeerrousando-C10000,reduzindoatolerânciapararotaçãousando-q5eaumentandootamanhodateladaimagemparaaumentaronúmerodepixelsembrancoàesquerdaeàdireitadamatriz.Eutambémtenteicomumavarreduraderesoluçãomaior(nãoconheçooDPI,mastinha4MBeosquadradosestavambemdefinidos)eajusteiatolerânciaaocontrasteusando-t20e-t5,todoscomomesmoresultado(emboraEutivequepularpixelsusando-S5comessearquivograndeparaqueeleterminasseem<30minutos).

Eutenteiusar--verbose,masnadafoiimpressoemstdout(ouqualquerarquivodediagnóstico,atéondeeusabia).

Eutambémtenteiaopção-Dparaproduzirumaimagemdediagnóstico.Eunãotenhocertezadoquefazercomoresultado:

É óbvio que está lutando com alguns dos limites, mas não sei por que ou como tornar dmtxread mais robusto.

Meu próximo passo seria tentar descriptografar um arquivo fictício usando a chave privada recuperada, mas obviamente eu não cheguei tão longe.

É decepcionante que isso seja tão difícil; Se não houver uma maneira fácil de fazer isso com a linha de comando libdmtx tools, talvez haja outra ferramenta que possa fazer isso para mim fora da caixa?

Importante : não é preciso dizer que eu nunca usaria essa chave privada para qualquer criptografia real, agora que a compartilhei on-line. Você nunca deve compartilhar sua chave privada.

    
por quant 03.01.2016 / 05:29

2 respostas

2

Parece que consegui obter dados da sua imagem.
Eu fiz o seguinte:

  1. Abrir com o GIMP
  2. Cores - > Limite
  3. Posicione o controle deslizante ao redor do centro (não me lembro do valor exato que escolhi) e clique em OK
  4. Imagem - > Tamanho da tela
  5. Escolha porcentagens
  6. Tamanho da tela: largura: 160%
  7. Tamanho da tela: Altura: 120%
  8. Offset: clique em "Center"
  9. Clique em Redimensionar
  10. Ferramentas - > Ferramentas de Transformação - > Rodar ferramenta
  11. Ângulo: -0,50 e clique em Girar (é útil adicionar um guia vertical antes de fazer isso)
  12. Arquivo - > Exportar como
  13. Escolha o nome do arquivo e clique em Exportar e depois em Exportar (com todos os padrões)

Aqui está a imagem que obtive depois de todas essas etapas:

Aexecuçãodedmtxreadforneceumresultadoinstantâneo(menosdeumsegundo):
dmtxread--shrink=2c8wcN1B.jpg>quant.paperkey
Otamanhoéde1428bytes,doisprimeirosoctetosseparecemcomformatobináriodepaperkey.
Paraverificaro arquivo resultante , você pode baixá-lo aqui .

    
por 11.02.2016 / 06:24
0

Estou usando o dmxtread para decodificar códigos de barras de matriz de dados muito mais simples, 22x22 ou 26x26. Eu encontrei com estes que a definição do parâmetro -S skip pixels ajuda se definido para -S2 (pule cada segundo pixel), mas pular qualquer número maior reduz a capacidade de decodificação de minhas imagens (fotos de um código de barras impresso em plástico).

dmtxread -n -v -S2 -N1 -D imagename.png 

é um comando típico para mim onde -N diz que parar de cuidar de você decodifica uma string (já que meus códigos de barras contêm apenas um). Como você descobriu uma falha na decodificação, não há nada além de uma nova linha de prompt de comando.

Olhando sua imagem de diagnóstico, eu notaria que há pouca atividade nas margens mais escuras do LH e do fundo - é onde o dmtx encontra um código de barras, depois se move para o centro do espaço e começa a ler pixels. Minhas imagens tendem a ter mais atividade nessas bordas escuras.

Sua imagem parece nítida o suficiente para que o parâmetro -t não faça muito e eu achei que este parâmetro não ajudou na decodibilidade das minhas imagens.

Estou assumindo que seu comando pretende decodificar o dmtxread e, em seguida, gravar a chave no arquivo .gpg que você especificar. Por enquanto eu removeria isso e obteria o dmtxread apenas para exportar para o shell ou um arquivo de texto simples para eliminar isso como uma possível fonte de erro.

    
por 07.01.2016 / 06:40