Uip webserver数组数据分析

来源:互联网 发布:海口Java招聘 编辑:程序博客网 时间:2024/05/19 20:57

Uip 1.0 webserver中将html文件转换为数组后存储在fsdata.c文件中。

先分析fsdata_file这个结构体:

struct fsdata_file  {

  const struct fsdata_file *next;  //下一个网页地址

  const char *name;  //本网页的名称

  const char *data;  //本网页的数据,也就是上边所说的数组

  const int len;  //网页实质内容的长度,分析为:数组的长度-网页名称长度

};

   这里必须提一下:*data所指的数组与使用winhex打开html文件的区别。使用winhex打开html文件,直接为html具体的内容的源码。但是*data数组还包括一些必要的信息。我理解为:网页名+92个固定长度字节+html内容的源码。

  这里92个固定长度字节是uip协议的信息,每一个网页名称不同,但这92个字节是相同的,具体内容为:

    0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,

0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d,

0x0a,0x53,0x65,0x72,0x76,0x65,0x72,0x3a,

0x20,0x75,0x49,0x50,0x2f,0x30,0x2e,0x39,

0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,

0x2f,0x64,0x75,0x6e,0x6b,0x65,0x6c,0x73,

0x2e,0x63,0x6f,0x6d,0x2f,0x61,0x64,0x61,

0x6d,0x2f,0x75,0x69,0x70,0x2f,0x29,0x0d,

0x0a,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74,

0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74,

0x65,0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c,

0x0d,0x0a,0x0d,0x0a

转换为ASCII就是:HTTP/1.0200 OK Server: uIP/0.9 (http://dunkels.coj/adaj/uip/) Content-type: text/html

理解了这个结构问题,对于才能定位网页中的具体数据,对于动态网页中修改的数据可以直接使用指针+偏移量进行修改了。

  本协议中http将网页数据分包发送出去,每个包最大长度为1500,使用抓包工具捕捉的数据为网页的封装数据,加上了MAC协议及IP协议等信息(54个字节)。

0 0
原创粉丝点击