@Aploium6年前
gzip文件格式中有一个有趣的记录了当前操作系统的OS位:
offset:9 length:1 byte OS type
2 bytes optional part number (second part=1)
(完整参考: http://www.onicos.com/staff/iz/formats/gzip.html)
而gzip被广泛地应用于http中, 服务器响应的gzip原始内容中包含这个OS位, 所以可以根据它来判断web服务器的操作系统
例如 windows: (来源页面: https://login.live.com/)
gzip头中的OS 位是0x00, 表示服务器的系统是windows
非零的extra_flags 不知道是表示什么意思
以及linux (ubuntu 16.04 apache 2.4.18)
gzip头中的OS 位是0x03, 表示服务器的系统是unix(linux)
但是也存在不准确的情况下, 例如 apache(XAMPP) on windows, 尽管是windows, OS位也会被设置成0x03(UNIX)
这种方式的实际可用性还有待验证, 但是个人感觉还是挺不错的.
在web指纹识别的时候可以作为备用手段判断目标服务器的操作系统
同时, 除了OS位以外, 其他位可能也会包含有用的信息
例如七牛CDN (栗子文件链接 https://o5o245x8j.qnssl.com/ctt/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css 本站的一个静态文件)
它的OS位是0xFF (UNKNOWN), 但是modification_time是一个非常迷的值(2042/7/14 9:4:0)
o(╯□╰)o
此文章还有待更新细节