tag 标签: 格式

相关博文
  • 热度 19
    2016-2-22 08:56
    2324 次阅读|
    1 个评论
        C中格式字符串的一般形式为: % 类型, 其中方括号 ; printf("%*.*s\n",m,n,ch); 前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。 今天(06.6.9)又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例: int slen; printf("hello world%n", slen); 执行后变量被赋值为11。 又查了一下, 看到一篇文章( 查看 )说这种格式输出已经确认为一个安全隐患,并且已禁用。再搜搜果然这种用法都被用来搞什么溢出、漏洞之类的,随便找了一个:格式化字符串攻击笔记 特别注意下%*.*s这种用法  
  • 热度 17
    2014-2-18 22:02
    1542 次阅读|
    0 个评论
    Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件.   记录格式   一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式.   :llaaaatt cc   每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述.   :冒号 是每一条Intel HEX记录的开始   ll 是这条记录的长度域,他表示数据(dd)的字节数目.   aaaa 是地址域,他表示数据的起始地址 如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址, 对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址   tt 这个域表示这条HEX记录的类型,他有可能是下面这几种类型 00 ----数据记录  01 ----文件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录   dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以 查看ll域的说明   cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对   不包括本效验字和冒号 所表示的十六进制数字 一对字母表示一个十六进制数,这样的一个十六进制数为一个字节   都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc. 例如: :0300000002005E9D cc=0x01+NOT((0x03+0x00+0x00+0x00+0x02+0x00+0x5E)%0x100)=0x01+0x9C=0x9D   C语言描述: UCHAR cc; cc=(UCHAR)~(0x03+0x00+0x00+0x00+0x02+0x00+0x5E); cc++; 数据记录   Intel HEX文件由若干个数据记录组成,一个数据记录以一个回车和一个换行结束 回车为0x0d换行为0x0a   比如下面的一条数据记录 :10246200464C5549442050524F46494C4500464C33   10 是此行记录数据的字节数目 2462 是数据在内存将要烧写的eprom地址中的起始地址 00 是记录类型00(是一个数据记录) 464C 到 464C 是数据 33 是此行记录的效验和   扩展线性地址记录(HEX386) 扩展线性地址记录也可称为 32位地址记录 和 HEX386记录,这个纪录包含高16(16-31位)位数据地址,这种扩展的线性记录总是有两个字节数据,像下面这样:   :02000004FFFFFC 02 是记录的数据字节数目 0000 是地址域这在扩展地址记录中总是0000 04 是记录类型04(扩展地址记录) FFFF 是高16位地址 FC 是记录效验和,计算方法如下: 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh)   当一个扩展线性地址记录被读到后,扩展线性地址记录的数据区域将被保存 并应用到后面从Intel HEX文件中读出的记录,这个扩展线性记录一直有效, 直到读到下一个扩展线性记录.     绝对内存地址 = 数据记录中的地址 + 移位后的扩展线性地址     下面举例说明这个过程   从数据记录的地址域得到地址 2462 从扩展线性地址记录的地址域得到地址 FFFF 绝对内存地址 FFFF2462   扩展段地址记录 (HEX86)    扩展段地址记录也被称为 HEX86记录, 包含 4-19位的数据地址段, 这个扩展段地址记录总是有两字节数据,如下:   :020000021200EA 02 是 记录中的数据字节数目 0000 是地址域,在扩展段地址记录中,这个域总是0000 02 是记录类型02(扩展段地址的标示) 1200 是该段的地址 EA 是效验和 计算如下: 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).   当扩展段地址记录被读后,扩展段地址将被存储并应用到以后从Intel HEX文件读出的记录,这个段地址一直有效直到读到下一个扩展段地址记录   绝对内存地址 = 数据记录中的地址 + 移位后的扩展段地址     数据记录中的地址域 移位后扩展段地址记录中的地址域   下面举例说明这个过程   从数据记录的地址域得到地址 2 4 6 2 从扩展段地址记录的地址域得到地址 1 2 0 0 绝对内存地址 0 0 0 1 4 4 6 2   文件结束记录(EOF) 一个Intel HEX文件必须有一个文件结束记录,这个记录的类型域必须是01, 一个EOF记录总是这样: :00000001FF 00是记录中数据字节的数目 0000这个地址对于EOF记录来说无任何意义 01记录类型是01(文件结束记录标示) FF是效验和计算如下 01h + NOT(00h + 00h + 00h + 01h). ========================   总结     形如 :BBAAAATTHHHH...HHHHCC   BB: Byte AAAA:数据记录的开始地址,高位在前,地位在后 因为这个格式只支持8bits,地址被倍乘 所以,为了得到实际的PIC的地址,需要将 地址除以2 TT: Type 00 数据记录 01 记录结束 04 扩展地址记录(表示32位地址的前缀,当然这种只能在 INHX32) HHHH:一个字(Word)的数据记录,高Byte在前,低Byte在后 TT之后,总共有 BB/2 个字 的数据 CC: 一个Byte的CheckSum     因为PIC16F873A只有4K的程序空间   所以,不会有 TT=04的 Linear Address Record
  • 热度 21
    2013-5-19 09:50
    1680 次阅读|
    0 个评论
       IP数据包网络层位于TCP/IP模型的第三层,在网络通信中,网络层提供了两个最重要的作用:路由和选址。网络层负责定义数据通过网络流动所经过的路径。它定义了基于IP协议的逻辑地址;选择数据通过网络的最佳路径;链接不同的媒介类型。   一个完整IP数据包应该包括13个部分,才能进行网络上进行传输。 (1)版本(version):包含IP地址的版本号,4比特。 (2)首部长度(header length):表示IP数据报头长度,4比特。 (3)优先级与服务器类型(priority and type of service):用于表示数据包的优先级**务器类型,8比特。 (4)总长度(total length):表示整个IP数据包的长度,16比特。 (5)标识符(identification):用于表示IP数据包的标识符,16比特。 (6)标志(flags):标志字段,3比特。 (7)段偏移量(fragment  offset):用于表示段的偏移量。 (8)TTL(time to time):表示IP数据包的生命周期,8比特。当TTL位0时,该数据包将被丢弃。TTL还对应一个数据报通过的路由器数目。一个数据报每经过一个路由器,TTL值就减一。 (9)协议号(protocol):协议字段,8比特,表示IP数据段封装的协议,是TCP还是UDP,TCP协议号是6,UDP的协议号是17. (10)首部校验和(header chechsum):用于表示校验和,16比特。 (11)源地址(SA,source ip address):表示数据包的源地址,32比特。   (12)目的地址(DA,destination ip address):表示数据报的目的地址,32比特。 (13)可选项。
  • 热度 19
    2012-8-17 09:39
    4154 次阅读|
    2 个评论
      一、HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: ① 请求方法 URI 协议/版本 ② 请求头(Request Header) ③ 请求正文 下面是一个HTTP请求的例子: GET/sample.Jsp HTTP/1.1 Accept:image/gif.image/jpeg,*/* Accept-Language:zh-cn Connection:Keep-Alive Host:localhost User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0) Accept-Encoding:gzip,deflate   username=jinqiaopassword=1234   (1)请求方法URI协议/版本 请求的第一行是“方法URL协议版本”:GET/sample.jsp HTTP/1.1 以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。 根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。 URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。 (2)请求头(Request Header) 请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。 Accept:image/gif.image/jpeg.*/* Accept-Language:zh-cn Connection:Keep-Alive Host:localhost User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0) Accept-Encoding:gzip,deflate. (3) 请求正文 请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文 。请求正文中可以包含客户提交的查询字符串信息: username=jinqiaopassword=1234 在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。 四、HTTP请求方法:GET POST 1)GET方法 GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如 Http://127.0.0.1/login.jsp?Name=zhangshiAge=30Submit=%cc%E+%BD%BB 从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大 2)POST方法 POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。 从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。 方法 描述 GET 对服务器资源的简单请求 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 POST 用于发送包含用户提交数据的请求 PUT 传说当前请求文档的一个版本 DELETE 发送一个用来删除指定文档的请求 TRACE 发送请求的一个副本,以跟踪其处理进程 OPTIONS 返回所有可用的方法;可检查服务器支持哪些方法 CONNECT 用于ssl隧道的基于代理的请求  
相关资源