.Xauthority 文件的内部格式是什么?

joh*_*und 6 linux x11

嗯,正题。

我进行了很多搜索,但不幸的是,什么也没找到。有没有一些文档描述这种格式?或者需要从 xauth 源文件中提取结构?

Way*_*erg 7

可能不完全是您正在寻找的内容,但只是为了格式化而输入答案。

.Xauthority 是一个结构数组:

typedef struct xauth {
    unsigned short   family;
    unsigned short   address_length;
    char            *address;
    unsigned short   number_length;
    char            *number;
    unsigned short   name_length;
    char            *name;
    unsigned short   data_length;
    char        *data;
} Xauth;
Run Code Online (Sandbox Code Playgroud)

您可能仍然需要能够解码每个条目——如果没有别的办法,可以通过源代码进行解码:Xauth.h

例如:

$ od -xc --endian=big .Xauthority | more
0000000    0100    0007    6d61    7869    6d75    7300    0130    0012
        001  \0  \0  \a   m   a   x   i   m   u   s  \0 001   0  \0 022
0000020    4d49    542d    4d41    4749    432d    434f    4f4b    4945
          M   I   T   -   M   A   G   I   C   -   C   O   O   K   I   E
0000040    2d31    0010    c0ac    9e9c    ee82    ef59    f406    b7f9
          -   1  \0 020 300 254 236 234 356 202 357   Y 364 006 267 371
0000060    b745    254e    0100    0007    6d61    7869    6d75    7300
        267   E   %   N 001  \0  \0  \a   m   a   x   i   m   u   s  \0

Run Code Online (Sandbox Code Playgroud)

第一个短值是 0x100 表示家族

下一个短字节是0x0007,表示地址的长度

接下来的 7 个字节是地址:maximus

下一个短是0001,座位号的长度

下一个字节是30,ascii 0,座位号

接下来的短字符是0x0012,十进制18,名称的长度

接下来的 18 个字节是名称:MIT-MAGIC-COOKIE-1

接下来的short是0x0010,十进制16,数据的长度

接下来的 16 个字节是数据:0xc0ac 到 0x254e。

然后一切重新开始。