Linux基础
1 前言
一个问题,一篇文章,一出故事。
最近发现Oracle Linux的“/var/log/audit/audit.log”的日志是编码过的,范例如下:
type=PATH msg=audit(1770942123.541:476518800): item=1 name=2F6D79686F6D652F57575720434D44532043484F4F4C204F524720446174615F4C6973742E786C7378 inode=22020365 dev=fc:02 mode=0100666 ouid=1198203174 ogid=1198200513 rdev=00:00 obj=unlabeled nametype=CREATE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0OUID="will@cmdschool.org" OGID=646F6D61696E207573657273407361652E62697A
本章目是寻求该日志的解码方法。
2 最佳实践
python3 -c 'import binascii; name="2F6D79686F6D652F57575720434D44532043484F4F4C204F524720446174615F4C6973742E786C7378"; print(binascii
.unhexlify(name).replace(b"\x00", b" ").decode("utf-8","replace"))'
可见如下显示,
/myhome/WWW CMDS CHOOL ORG Data_List.xlsx
范例解析如下:
- 代码实现将十六进制字符串转UTF-8文本
- 方法“binascii.unhexlify(name)”将十六进制字符串转为二进制字节串
- 方法“replace(b"\x00", b" ")”替换空字节为空格(这里实际无空字节,仅为兼容处理)
- 方法“decode("utf-8","replace")”将字节串解码为UTF-8字符串,无法解码的字符用?替代
参阅文档
===========
https://docs.python.org/3/library/binascii.html
没有评论