|
P兄,再次建议改变一下定义下一级目录的特殊字符为$,或者其他。
http://en.wikipedia.org/wiki/Uniform_Resource_Identifier 请翻看一下这个连接,重点内容如下
A URI reference is another type of string that represents a URI, and (in turn) the resource identified by that URI. Informal usage does not often maintain the distinction between a URI and a URI reference, but protocol documents should not allow for ambiguity.
A URI reference may take the form of a full URI, or just the scheme-specific portion of one, or even some trailing component thereof – even the empty string. An optional fragment-identifier, preceded by "#", may be present at the end of a URI reference. The part of the reference before the "#" indirectly identifies a resource, and the fragment identifier identifies some portion of that resource.
#被用于fragment identifier 这一点与0PE某些文件的命名冲突。目前,非所有厂商的网卡严格按照Intel的PXE标准做,也不一定遵循URI,标准判断#的存在。换而言之,如果0PE所依赖的PXE Stack依照URI判断#,则类似@0#NET_.WIM的文件下载会失败,反而不判断#的PXE Stack到可以下载成功。其实这是个“反面”的例子。但是,确实目前大部分厂商网卡的PXE Stack不判断#的存在,我们可以理解为“存在既有道理”,但谁又能预测将来的会不会有越来越多的厂商在编码PXE Stack将URI规范纳入呢? 甚至将来所有的网卡可以PXE引导,通过HTTP或其他高级协议下载引导文件,来完善TFTP不稳定传输(UDP)无认证的缺陷。 然而,HTTP由于充分标准化,网站上的文件名都不会包含#,虽然这一初始判断在客户端完成,有关这点可以试着访问一下
http://down5.flashget.com/flashget3.3.0.1092en.exe
http://down5.flashget.com/flashget3.3.0.1092en###.exe
http://down5.flashget.com/flashget3.3.0.1092en.exe#
http://down5.flashget.com/flashget3.3.0.1092en.exe$
看看返回结果是什么,可以抓包看一下 (结果是#后的内容全部被忽略)
总之,希望在那个时候,像0PE一样的优秀作品已经准备好了
另外,P兄,我昨天试图修改相关0PE的文件,以改变#的特殊定义,在未完全测试情况下,应该是取得成功。需要修改的文件应该并不算多,简述如下
改名@0#NET_.WIM =》 @0$NET_.WIM (如有其他含#的WIM文件,将#改为$)
0PE\BUFXP\menu.gz (2003的也做相应修改)
0PE\KERNEL\auto_exe.bat
0PE\KERNEL\system\autorun_.cmd
0PE\KERNEL\system32\TOOLS\自动挂载.cmd (判断#的关键文件)
0PE\KERNEL\udtomem.ini
[ 本帖最后由 朗月繁星 于 2009-12-29 19:36 编辑 ] |
|