ログに出てくる16進文字列の逆引き

UTF-8と書いておけばエクセルバカが寄ってくる。もう異常な時代である。今年もエクセル屋の粗大ゴミと五大バカ(バイナリ、文字コード、UTF-8、改行、エンディアン)が大乱舞しそうである。

能もなくVBAも知らないこんなバカ連中がなぜそんなことをやりたがるのか、世界七不思議に匹敵するほどの怪奇現象である(笑)。小学校程度のアタマしかない者が微分方程式を解こうとするのに似ている。

エクセルバカのようなドシロウトが「16進文字列」などを目にするのはログファイルしかない。
LOG
153.228.19.215 [11/Sep/2021:02:48:03] ipc_0079 16進文字列 バイナリ 変換 vba
133.202.229.222 [08/Aug/2014:05:33:32] vba UTF8 16進数文字列 逆引き方法
121.1.191.84 [22/Jun/2014:13:42:31] excel VBA 16進文字列 → 文字
これはログの逆引きである。
121.1.191.84 [22/Jun/2014:13:46:00] excel VBA 16進文字列
202.246.252.97 [09/May/2017:11:41:39] ANSI 文字 16進 変換
この変化形は「バイト(BYTE) ワード(WORD) 変換」「バイナリ テキスト 変換」「バイナリ アスキー変換」などがある。エクセルバカの世界ではすべて同じことを意味している。エクセルバカは言葉を知らない言語障害児だからである。要するに、ログファイルに出てくる「16進文字列の逆引き」をしたいわけである。エクセルバカにとっては「バイト=16進数=バイナリ」なのである(笑)。

具体的には、このオトコのやりたいことはログに出てくる16進文字列の逆引きである。下記のようなログファイルの赤字の部分を人間がわかるような「文字」にしたいということである。

ログ画像

PerlやPHPはさすがにWEBプログラムに特化しているから、こういう「逆引き」は簡単である。それに対して、Excel は「縦横計算/罫線引き/色塗りソフト」である。そういうことをするのには向いていない。しかし、エクセルバカの世界には Excel しかない。それで上のような「願望キーワード」になるのである(笑)。

それにしても、こういう単調なことしか書けないエクセルバカは、「VBA」と書いていてもそんなものは知らない。「そんなものを使えばできるかもしれない」ということをどこかで聞いてきただけである。エクセルバカは何も知らないと言ってもいいだろう。

また、「16進文字列」といっても、それだけでは誰にも意味は通じない。それにはさまざまなものがあるからである。その文字列が、Shift_JISを表す16進数でできているのか、UTF-8を表す16進数なのか、もっと別の文字コードでの16進数なのか、文字とは無関係なデータを示した16進数なのか、それが明確にわからないかぎり、何の意味もない。しかし、エクセルバカにはそんなことは当然わからない。なんせ「16進文字列」という言葉だけしか知らないのであるから、もうどうしようもない。無知は度し難い。
LOG
126.253.194.121 [17/Oct/2014:15:39:41] ipc_0011 Excel %E3
ログの逆引きであることが明白である。Excelなどお呼びでないのにエクセルバカの世界では出てくる(笑)。

しかし、それではここでの「お遊び」が前に進まない。
ここではログ(ファイル)に最も多く使われているUTF-8だということを前提にして、子供のオモチャのExcel/VBAでひとまず作ってみよう。
もっとも、こういうログの逆引きはPerlやPHPの方が格段に便利で実用的でもある。しかし、エクセルバカにはそんな言語的能力はないのである。


UTF-8の16進文字列の逆引き

ログファイルに出てくるUTF-8の16進文字列の逆引きツールである(SourceLibrary:vba_0276)。

ツール
LogDecoder.frm@Topic1.xlsm
逆引きしたいところだけをコピーして入力するのがわかりやすい。


このオトコはこんなことを入力していた、ということがわかる。


必要部分の抽出(切り出し)が面倒な場合は、1行分のログ全体をコピーしてきてもよい。
この場合は、ムダな部分が多数出てくることになるので、目的の可読化したい部分を探すのにやや手間がかかる。


下記は、上のように入力した場合をこのツールで可読化したところ。


念のため、もうひとつ確認しておこう。


- 2014/06/22 -



こんなものはPerl/PHPで飽き飽きするほどやってきた陳腐な骨董ネタである。いま屋上屋を架す必要はない。ただ、BASICまたはExcel/VBAでもそんなことができるのだろうかという興味のほうがわいてきて、それで思い立ってやってみただけのことである。Excel/VBAは子供のオモチャだが、これで今日は頭の体操ができて丸一日遊べた。

これにちょっと手を加えれば、ログファイル全体を読み込んで、各行ごとに逆引きしてファイルに保存することも当然できることになる。それは簡単なことである。要するに頭は使わない手作業にすぎない。それこそヒマなときにでもしよう。





愚民列伝(b1)


LogDecoder.frm(exc_0082)
LogDecoder.frm(vba_0276)
Topic1.xlsmに同梱のHelperUTF8.bas内のDecodeUTF8関数(プロシージャー)を使用する。


タコの殿堂
UTF-8なんて書いてたらまた能のないエクセルバカが大挙して押しかけてくるわよ。

Unicode,UTF-8,UTF-16,Big,Little,Endian,LE,BE,Shift_JIS,SJIS,CR,LF,CRLF,byte,bit,word,CSV,BOM,Encode,Decode,ANSI, Binary,Open,Byte,Get,Put,Input,InputB,Asc,AscB,AscW,Chr,ChrB,ChrW,Hex,Mod,EOF,LOF,Loc,FreeFile,ReDim,Encoding, Left,LeftB,Right,RightB,Mid,MidB,Len,LenB,InStr,InStrB,FileSystemObject,FSO,CreateTextFile,OpenTextFile, バイナリ,テキスト,文字列,文字コード,16進コード,16進文字列,変換,ビッグ,リトル,エンディアン,ユニコード,改行,サンプル, バイト,ビット,ヘキサ,2進数,16進数,読み込み,書き込み,エンコード,デコード,解析,変換,判定,判別,バイナリエディタ, 全角,半角,カタカナ,ひらがな,漢字,