/var/run/utmp ファイル内容の意味の説明

/var/run/utmp ファイル内容の意味の説明

次のファイルシステムの内容を理解したいと思います/var/run/utmpodコマンドを使用して開くと、次のようになります。

[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制御文字を含むファイルを表示します。

バイナリファイルが画面に表示されると、ファイルの制御文字はワークステーションに望ましくないモードを設定でき、出力が明確に表示されない(歪みなど)、ワークステーションが応答を停止する可能性があります。バイナリの手がかりを見つけるには(つまり、安全な方法で表示するために)catodまたはコマンドを使用できます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行を次に変換します。"3.10.0-693.11.1.el7.x86_64"

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

おすすめ記事