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

What is the internal format of .Xauthority file?

嗯,正题。

我搜索了很多,但不幸的是,一无所获。有没有描述这种格式的文件?或者需要从 xauth 源文件中提取结构?

可能不完全是您要查找的内容,但仅针对格式设置给出答案。

.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;

你可能仍然需要能够解码每个条目——如果没有别的,通过源码苦读:Xauth.h

例如:

$ od -xc --endian=big .Xauthority | more
0000000    0100    0007    6d61    7869    6d75    7300    0130    0012
        001  [=11=]  [=11=]  \a   m   a   x   i   m   u   s  [=11=] 001   0  [=11=] 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  [=11=] 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  [=11=]  [=11=]  \a   m   a   x   i   m   u   s  [=11=]

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

下一个short是0x0007表示地址的长度

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

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

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

下一个short是0x0012,十进制18,名字的长度

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

下一个short是0x0010,十进制16,数据的长度

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

然后重新开始。

这里有一些文档供您参考。

Cookie-based 访问(.Xauthority 文件)遵循 Inter-Client Exchange (ICE) Protocol and implemented in Inter-Client Exchange Library,您将在附录会话中找到更多格式详细信息。

例如,Appendix B 描述了常见的 MIT-MAGIC-COOKIE-1 身份验证方法。