关于短文件名

8.3

8.3是一种限制对文件名称的长度的方法,这在DOS和Microsoft Windows的Windows 95及Windows NT 3.5以的前版本中,在FAT文件系统中的常用方法。在以前的CP/M及某些的通用数据和迪吉多微型电脑操作系统中使用。
8.3文件名称最多只可以含有8个字符,跟着最多3个字符的扩展名,利用‘.’号将两者连接起来。文件及目录名称是全部使用大写字母的。

对于8.3与长档名的兼容性

VFAT,是对于FAT系统中的加强版,在Windows 95和Windows NT 3.5加入。VFAT文件系统可允许比传统的8.3档名,支持更长、而且能大小写混合的长档名(LFN)。
要维持对以前的应用程序(例如DOS和Windows 3.1)中的向下兼容性,每一个长档名便会自动产生一个相应的8.3文件名称,可容许文件可以继续更名、删除或打开。
由于这对于一个长档名没有一个必然的算法创建一个8.3档名,Windows会使用以下的常规以决定一个8.3文件名称是如何产生:
如果长档名是8.3大写字母,在磁盘上不会存储任何长档名。
例如:”TEXTFILE.TXT”
如果长档名是8.3大小写混合字母,那么长档名会存储大小写混合字母的档名,在8.3的名称会存储它的大写字母版本。
例如:”TextFile.Txt”会转换成”TEXTFILE.TXT”。
长档名只会保留基本名称的首6位半角字符,以一个~号连接着,再以一个数字作结尾以作识别,最后以扩展名的首3位字符作退出。从这个结果中再对无法使用的字符再作删除,像(+)号会转换成(_)号,另外这也会转成全大写字母。
例如:”TextFile1.Mine.txt”会转换成”TEXTFI~1.TXT”;”附属应用程序”会转换成”附属应~1″(或如果”TEXTFI~1.TXT”已经存在的情况下,会存储作”TEXTFI~2.TXT”)。”ver +1.2.text”会转换成”VER_12~1.TEX”。
从Windows 2000开始,如果最少4个文件或文件夹的短档名的首6个字符是相同的话,该长档名会另行将档名转作基本名称的首2位字符(或如果基本名称只有1个字符的话,便全取文件名称1个字符),再以4位十六进制的文件名称的切细值连接上,接着~号,再接着一位的数字及.号,最后以首3位的扩展名作为结尾。结果,相比之中,这档名是已经分拆及改用全大写字母。
例如:”TextFile.Mine.txt”会转换成”TE021F~1.TXT”。
在Windows NT family中的NTFS文件系统本身已经对长档名作出支持,但8.3的名称仍然会保留,供旧有的应用程序使用。这可以选择性地关上这个功能以增加性能。

以上来源于维基百科

为了支持兼容性,NTFS文件系统也提供了一个可选的特性:8.3兼容性格式。Windows中这个特性默认是on,也就是说每当建立一个长文件名的对象的同时,系统的NTFS驱动模块会自动创建一个合适的8.3格式短名称指向这个对象。需要指出的是,这个特性并不像FAT文件系统中那样是强制执行的,因此不同的磁盘实用程序或者操作系统可能有不同的执行方式。

PS:关于短文件名漏洞:

攻击者通过iis返回的错误信息推断文件名,如果统一处理错误返回信息,将对攻击起到很好的防御作用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据