Bytes hexadecimais de lixo no arquivo wtmp

1

Eu tenho tentado extrair o histórico de inicialização e login para um PC de teste executando o RHEL 5.8 com algumas atualizações do kernel. Comecei usando last -f /var/log/wtmp e notei alguns resultados estranhos. Investigações posteriores mostraram que há grandes blocos de dados hexadecimais gravados no arquivo que não correspondem ao formato utmp.

Esses blocos parecem ser valores ASCII, pois há várias centenas de bytes com valores ASCII. por exemplo. 0a30 7831 6234 6636 3762 652c 0930 7839 3562 3037 , que é 0x1b4f67be,.0x95b07 dos 20 bytes finais não utilizados na estrutura.

Eu continuei investigando e o texto ASCII corresponde a parte do texto que é impresso durante a inicialização - parece a saída de dmesg . Também texto que é impresso na tela quando meu programa é iniciado e vi excertos de um arquivo de configuração que é lido durante a inicialização.

Eu suspeito que as seções nulas são produzidas por agetty na porta serial, pois o arquivo wtmp cresce a cada minuto. Se eu comentar a linha em i/etc/inittab

7:2345:respawn:/sbin/agetty -h -t 60 ttyS0 115200 vt102

depois o wtmp pára de crescer.

Poderia haver uma colisão no sistema de arquivos. Eu olhei para os i-nodes e eles não parecem ser compartilhados.

A estrutura utmp contém alguns valores de string, mas parece ser definida como zero.

O que causaria essas entradas? Significa que o wtmp não pode ser invocado? Existe alguma maneira de decifrar essas entradas se elas são genuínas?

Abaixo estão algumas extrações do arquivo wtmp colado de um editor hexadecimal,

A última entrada sensata com saída de acordo com last :

root tty1 Fri Nov 29 10:19 - crash (00:03)

00312300: 0700 0000 850b 0000 7474 7931 0000 0000  ........tty1....
00312310: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312320: 0000 0000 0000 0000 3100 0000 726f 6f74  ........1...root
00312330: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312340: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312350: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312360: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312370: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312380: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312390: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003123f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312400: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312410: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312420: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312430: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312440: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312450: 0000 0000 3e6a 9852 89b0 0000 0000 0000  ....>j.R........
00312460: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312470: 0000 0000 0000 0000 0000 0000 0000 0000  ................

as entradas são inteiramente nulas e não são exibidas por last :

00312480: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312490: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003124f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312500: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312510: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312520: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312530: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312540: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312550: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312560: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312570: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312580: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312590: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003125f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

até que pareça haver um bloco de dados ASCII gravados no arquivo. Isso começa no meio de uma estrutura utmp e também não é resultado de last

00312f00: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f10: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f20: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f30: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f40: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f50: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f80: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312f90: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312fa0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312fb0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312fc0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312fd0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312fe0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00312ff0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00313000: 0930 7862 3130 3264 6131 332c 0a30 7830  .0xb102da13,.0x0
00313010: 3939 6264 3532 392c 0930 7863 6634 3364  99bd529,.0xcf43d
00313020: 3936 312c 0930 7838 3235 6336 3331 662c  961,.0x825c631f,
00313030: 0930 7863 6233 6662 3130 372c 0a30 7865  .0xcb3fb107,.0xe
00313040: 3336 3265 3739 392c 0930 7866 3231 3362  362e799,.0xf213b
00313050: 3730 642c 0930 7830 3133 6537 3465 622c  70d,.0x013e74eb,
00313060: 0930 7832 3039 3539 6335 652c 0a30 7865  .0x20959c5e,.0xe
00313070: 3166 6663 6631 642c 0930 7865 6532 6438  1ffcf1d,.0xee2d8

seguido por mais bytes ASCII, que é interpretado por last da seguinte forma.

27dba1f, 4f6fe3c,*0xe 0xed51abc6,*0xf Sun Oct 8 21:09 - crash (6626+14:13)

00313080: 3232 382c 0930 7865 3466 3666 6533 632c  228,.0xe4f6fe3c,
00313090: 0930 7865 6139 6531 6135 322c 0a30 7862  .0xea9e1a52,.0xb
003130a0: 3035 3935 6366 372c 0930 7863 3237 6462  0595cf7,.0xc27db
003130b0: 6131 662c 0930 7865 6339 3866 3162 612c  a1f,.0xec98f1ba,
003130c0: 0930 7835 6135 3465 3261 632c 0a30 7865  .0x5a54e2ac,.0xe
003130d0: 6435 3161 6263 362c 0930 7866 6536 3361  d51abc6,.0xfe63a
003130e0: 3364 352c 0930 7866 3932 3161 3831 352c  3d5,.0xf921a815,
003130f0: 0930 7837 3732 3239 6262 662c 0a30 7837  .0x77229bbf,.0x7
00313100: 3032 3230 3363 392c 0930 7861 6337 6166  02203c9,.0xac7af
00313110: 3635 392c 0930 7834 3632 6639 3338 362c  659,.0x462f9386,
00313120: 0930 7863 3562 3834 3630 622c 0a30 7862  .0xc5b8460b,.0xb
00313130: 6231 6166 3862 382c 0930 7839 3238 3065  b1af8b8,.0x9280e
00313140: 6161 622c 0930 7861 3361 3265 3639 332c  aab,.0xa3a2e693,
00313150: 0930 7861 3565 3231 3361 362c 0a30 7832  .0xa5e213a6,.0x2
00313160: 6130 6262 3861 322c 0930 7865 6639 3362  a0bb8a2,.0xef93b
00313170: 3061 632c 0930 7835 3936 3537 3530 352c  0ac,.0x59657505,
00313180: 0930 7839 3066 6632 6366 362c 0a30 7864  .0x90ff2cf6,.0xd
00313190: 3931 3564 6438 322c 0930 7864 6135 3061  915dd82,.0xda50a
003131a0: 3337 332c 0930 7834 6338 3936 3137 612c  373,.0x4c89617a,
003131b0: 0930 7834 6435 3465 3832 662c 0a30 7865  .0x4d54e82f,.0xe
003131c0: 3237 6161 6537 322c 0930 7839 6230 6237  27aae72,.0x9b0b7
003131d0: 6234 312c 0930 7830 3264 6263 3863 352c  b41,.0x02dbc8c5,
003131e0: 0930 7865 3134 6532 6139 372c 0a30 7831  .0xe14e2a97,.0x1
003131f0: 6234 6636 3762 652c 0930 7839 3562 3037  b4f67be,.0x95b07

Este bloco continua até que os seguintes blocos utmp sejam capturados, o que é mostrado por last as

reboot system boot 2.6.30.9 Fri Nov 29 10:23 (340+04:17)

00315900: 0800 0000 2302 0000 0000 0000 0000 0000  ....#...........
00315910: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315920: 0000 0000 0000 0000 7369 0000 0000 0000  ........si......
00315930: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315940: 0000 0000 0000 0000 0000 0000 322e 362e  ............2.6.
00315950: 3330 2e39 0000 0000 0000 0000 0000 0000  30.9............
00315960: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315970: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315980: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315990: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
003159f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a00: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a10: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a20: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a30: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a40: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a50: 0000 0000 1f6b 9852 b481 0600 0000 0000  .....k.R........
00315a60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315a70: 0000 0000 0000 0000 0000 0000 0000 0000  ................

00315a80: 0200 0000 0000 0000 7e00 0000 0000 0000  ........~.......
00315a90: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315aa0: 0000 0000 0000 0000 7e7e 0000 7265 626f  ........~~..rebo
00315ab0: 6f74 0000 0000 0000 0000 0000 0000 0000  ot..............
00315ac0: 0000 0000 0000 0000 0000 0000 322e 362e  ............2.6.
00315ad0: 3330 2e39 0000 0000 0000 0000 0000 0000  30.9............
00315ae0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315af0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b00: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b10: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b20: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b30: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b40: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b50: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b60: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b70: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b80: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315b90: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315ba0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315bb0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315bc0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315bd0: 0000 0000 1f6b 9852 ce16 0700 0000 0000  .....k.R........
00315be0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00315bf0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

As entradas são sensíveis novamente por algum tempo e exibem dados ASCII similares.

    
por DanS 05.11.2014 / 13:56

3 respostas

0

Eu finalmente rastreei isso.

O sistema possui um watchdog que reinicializa o sistema se não puder entrar em contato com determinados processos. O problema era que meu aplicativo estava sendo morto com SIGTERM ou SIGKILL e não desconectou do watchdog primeiro, o que acontece se o SIGINT for usado.

Esta reinicialização durante o desligamento grava esses bytes no wtmp. Eu já escrevi scripts de inicialização e desligamento em /etc/init.d e configurei links em rc # .d usando o chkconfig e o problema desapareceu /

    
por 27.01.2015 / 10:34
1

Esse é um arquivo binário que é lido, por exemplo, last (o padrão é /var/log/wtmp , você também pode especificar outro destino com -f ).

Portanto, se há uma última entrada sensata depende completamente de como a última implementa o acesso ao arquivo e como ele os usa (um número fixo de registros com um tamanho fixo acessado em uma rodada acessada de maneira robin é, por exemplo, uma opção) .

    
por 05.11.2014 / 14:36
0

Os arquivos wtmp e utmp são arquivos binários - não ASCII. Portanto, você esperaria ver dados não ASCII. Se você quiser lê-los, use o comando last . Se esse comando funcionar, então o arquivo está OK.

Um exemplo do formato pode ser encontrado em man 5 wtmp , que pode ser lido aqui .

Essa página também menciona isso:

Note that the utmp struct from libc5 has changed in libc6. Because of this, binaries using the old libc5 struct will corrupt /var/run/utmp and/or /var/log/wtmp.

Se last falhar, talvez isso possa explicar o seu hexdump truncado?

    
por 05.11.2014 / 14:37

Tags