HTTP的上传文件实例分析
由于论坛不支持Word写文章发帖。
首先就是附件发送怎么搞,这个必须解决。论坛是php的。我用Chrome类浏览器跟踪请求,但是上传的文件流怎么发过去没找到,估计流可能多或者什么的不好显示,只知道发送了文件名字。需要实际了解下post文件,不能只会后台或界面不了解前台数据处理和协议怎么传送数据。
图中:有些相关文章 HTTP请求中的form data和request payload的区别 AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
Multipart/form-data POST文件上传详解 《RFC 1867 -Form-based File Upload in HTML》
结构和我曾经通过Smtp提交带有软件BUG附件的形式相似。。。有边界。。。
所以使用抓包工具,如WireShark。机器64位。Ip = 118.192.48.35.
WireShark过滤下好看。前两个是删除文件,后两个才是上传,可以看到有个GIF89a字样。
然后选择后两个其中一个右键菜单-选择Follow TCP Stream,做的事情就是TCP数据包重组。弹出对话框如下:
流的内容出现的顺序同他们在网络中出现的顺序一致。从A到B的通信标记为红色,从B到A的通信标记为蓝色。即请求request为红色,response为蓝色。
从中看出有两次完整来回交互,其中第二个才是文件流。
GIF89a.......^K..w............h......!..NETSCAPE2.0.....!...d...,..........&h..*0.%....1,...u..a...U.X.....f. *Mo$.!.......,...........XS....I. ....!.......,..............A.H...!.......,...........XS....9..%..!.......,...........X.;.PEFk..!.......,...........XS....9..%..!.......,...........X.;.PEFk..!.......,...........XS....9..%..!.......,...........X.;.PEFk..!.......,...........XS....9..%..!.......,...........X.;.PEFk..!.......,...........XS....9..%..!.......,...........X.;.PEFk..!.......,...........X.V.....!.......,............U
..;
文件内容格式Content-Type为image/gif,然后是流数据(标头+回车换行(0x0d+0x0a)+文件二进制),这里ASCII展示了,不可打印字符为点号表示。
这里把选中内容直接复制出来到WinHex粘贴不行,复制到点号时就不行了。
需要点选Save As保存Raw形式文件,然后到winhex打开找到它。
步骤是Ctrl+F输入gif。
继续找到目标,然后选择目标内容,ODOA(出车换行)开始和结束,如图。
选中后就会一直选中,在任意位置右键保存到文件就可以dump出来了。文件为。
对于后面的html以gzip编码一样,步骤dump出来,保存为windows保存为zip后缀吧,这样直接rar打开。
至http解压出文件结束。