/var/run/utmp 파일 내용의 의미에 대한 설명

/var/run/utmp 파일 내용의 의미에 대한 설명

다음 파일 시스템의 내용을 이해하고 싶습니다 /var/run/utmp. od명령을 사용하여 열면 다음이 표시됩니다 .

[john@iceman ~]$ od -c /var/run/utmp 
0000000 002  \0  \0  \0  \0  \0  \0  \0   ~  \0  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040  \0  \0  \0  \0  \0  \0  \0  \0   ~   ~  \0  \0   r   e   b   o
0000060   o   t  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   3   .   1   0
0000120   .   0   -   6   9   3   .   1   1   .   1   .   e   l   7   .
0000140   x   8   6   _   6   4  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000160  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

이 숫자/문자는 무엇을 의미하나요? 어떤 인코딩 시스템으로 작성되었나요? 그리고 그것을 의미 있는 텍스트로 번역하는 방법은 무엇입니까?

답변1

텍스트 파일에는 문자만 포함되지만바이너리 파일다음을 포함하여 가능한 모든 문자 값을 포함합니다.제어 문자od플래그 -c(od로 표시) 가 있는 명령은 octal dump제어 문자가 포함된 파일을 표시합니다.

바이너리 파일이 화면에 표시될 때 파일의 제어 문자는 워크스테이션에 원치 않는 모드를 설정할 수 있으며 출력이 명확하지 않게 나타나거나(예: 왜곡) 워크스테이션이 응답을 중지할 수도 있습니다. 바이너리에 대한 단서를 찾으려면(즉, 안전한 방법으로 표시하기 위해) cat, od또는 명령을 사용할 수 있습니다 hexdump.

주문하다cat -v이렇게 하면 제어 문자가 안전한 방식으로 표시되고 화면이 이상한 모드로 전환되지 않습니다. 이 명령은 캐럿(^)과 해당 인쇄 가능한 문자로 각 제어 문자를 나타냅니다.

주문하다od파일이나 파이프의 모든 단어를 8진수로 표시하는 8진수 덤프를 나타냅니다 the base eight numbering system. 예를 들어, 이 명령은 시스템 파일을 다음과 같이 od표시합니다 ./var/run/utmp

$ od /var/run/utmp
0000000 000002 000000 000000 000000 000176 000000 000000 000000
0000020 000000 000000 000000 000000 000000 000000 000000 000000
0000040 000000 000000 000000 000000 077176 000000 062562 067542
0000060 072157 000000 000000 000000 000000 000000 000000 000000
0000100 000000 000000 000000 000000 000000 000000 027063 030061
0000120 030056 033055 031471 030456 027061 027061 066145 027067
0000140 034170 057466 032066 000000 000000 000000 000000 000000
0000160 000000 000000 000000 000000 000000 000000 000000 000000
. . . . 
. . . . 
. . . . 
. . . . 

이제 -b명령에 플래그(-b는 8진수 바이트 선택을 의미)를 추가하면 od각 단어가 2바이트 또는 문자로 분할됩니다. 예를 들어 앞의 텍스트는 다음과 같이 표시됩니다.

$ od -b /var/run/utmp
0000000 002 000 000 000 000 000 000 000 176 000 000 000 000 000 000 000
0000020 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
0000040 000 000 000 000 000 000 000 000 176 176 000 000 162 145 142 157
0000060 157 164 000 000 000 000 000 000 000 000 000 000 000 000 000 000
0000100 000 000 000 000 000 000 000 000 000 000 000 000 063 056 061 060
0000120 056 060 055 066 071 063 056 061 061 056 061 056 145 154 067 056
0000140 170 070 066 137 066 064 000 000 000 000 000 000 000 000 000 000
0000160 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
. . . . 
. . . . 
. . . . 
. . . . 

사람이 말했듯이 ASCII(7)위 표의 숫자를 ASCII와 일치시켜 보겠습니다.

  • 000방법 null.
  • 002방법start of text
  • 첫 번째 줄에서 숫자는 176문자를 나타냅니다.~

ASCII(7)그리고 각 숫자는 테이블에 인코딩됩니다.

반면에 -c명령에 플래그를 추가하면(인쇄 가능한 문자 또는 백슬래시 이스케이프 선택) od출력에 인쇄 가능한 문자가 모두 표시됩니다. 이전 예는 다음과 같습니다.

$ od -c /var/run/utmp
0000000 002  \0  \0  \0  \0  \0  \0  \0   ~  \0  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040  \0  \0  \0  \0  \0  \0  \0  \0   ~   ~  \0  \0   r   e   b   o
0000060   o   t  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   3   .   1   0
0000120   .   0   -   6   9   3   .   1   1   .   1   .   e   l   7   .
0000140   x   8   6   _   6   4  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000160  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
. . . . 
. . . . 
. . . . 
. . . . 

위의 표를 의미 있는 텍스트로 변환하려면 이 명령을 사용하면 strings길이가 약 4자 이상인 인쇄 가능한 문자열을 찾을 수 있습니다. 예를 들어, 위의 표에서:

  • 행<0000040>문자가 포함되어 있습니다 r e b o.
  • 행<0000060>문자가 포함되어 o t있으므로 명령은 strings이러한 문자를 단어로 변환합니다."reboot".

비슷하게,

  • 행<0000100>포함하다 3 . 1 0.
  • 행<0000120>포함하다 . 0 - 6 9 3 . 1 1 . 1 . e l 7 ..
  • 행<0000140>포함하다 x 8 6 _ 6 4.

이 명령은 string이 세 줄을 다음으로 변환합니다."3.10.0-693.11.1.el7.x86_64"

$ strings  /var/run/utmp 
reboot
3.10.0-693.11.1.el7.x86_64
. . . . 
. . . . 
. . . . 
. . . . 

답변2

od -c /var/run/utmp가능한 경우 파일을 문자별로 일반 텍스트로 인쇄하고, 불가능할 경우 이진/8진수 표현으로 파일을 인쇄하여 의미 있는 텍스트를 출력하도록 최선을 다하십시오. od여러 옵션을 설정하여 동작에 영향을 줄 수 있습니다 . utmp고정된 레코드가 있는 바이너리 파일이므로 번역/해석/형식을 지정하지 않고 실제로 내용을 읽을 가능성은 낮습니다.

답변3

이 파일에 기록된 내용을 보려면 를 확인하세요 utmpdump /var/run/utmp.

여기에서 사람이 읽을 수 있는 형식으로 모든 utmp 항목을 볼 수 있습니다.

관련 정보