什么软件可以吧MRPsor文件格式转换的软件或游戏转换成sorsor文件格式转换的?

v_v 日志收藏 - v_v的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
“未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比***重要,情商比智商重要! ”
 ——清华大学校长留给毕业生的一段话
以google搜索的提示ajax作为基础,介绍了针对这种情况下的AJAX脚本开发思路和案例
tudou地址:
播放列表地址:
下载地址:
关键技术:
ajax原理,http协议捕获,录制选项调整适应ajax,关联获得ajax,参数小应用
脚本如下:
&web_url("", &&"URL=/", &&"Resource=0", &&"RecContentType=text/html", &&"Referer=", &&"Snapshot=t1.inf", &&"Mode=HTTP", &&LAST);
&web_url("porridgeday10-hp.gif", &&"URL=/logos/porridgeday10-hp.gif", &&"Resource=1", &&"RecContentType=image/gif", &&"Referer=/", &&"Snapshot=t2.inf", &&LAST);
&web_url("cn_icp.gif", &&"URL=/intl/zh-CN_cn/images/cn_icp.gif", &&"Resource=1", &&"RecContentType=image/gif", &&"Referer=/", &&"Snapshot=t3.inf", &&LAST);
&web_url("4nkMpw1Qe4k.js", &&"URL=/extern_js/f/CgV6aC1DThICY24rMAo4UEACLCswDjgLLCswETgTLCswFjgXLCswFzgFLCswGDgFLCswGTgSLCswJTjJiAEsKzAmOAksKzAnOAQsKzA8OAIsKzBFOAEs/4nkMpw1Qe4k.js", &&"Resource=1", &&"RecContentType=text/javascript", &&"Referer=/", &&"Snapshot=t4.inf", &&LAST);
&web_url("favicon.ico", &&"URL=/favicon.ico", &&"Resource=1", &&"RecContentType=image/x-icon", &&"Referer=", &&"Snapshot=t5.inf", &&LAST);
&web_url("nav_logo7.png", &&"URL=/images/nav_logo7.png", &&"Resource=1", &&"RecContentType=image/png", &&"Referer=/", &&"Snapshot=t6.inf", &&LAST);
&web_url("toolbar_animation_.png", &&"URL=/intl/zh-CN/images/toolbar_animation_.png", &&"Resource=1", &&"RecContentType=image/png", &&"Referer=/", &&"Snapshot=t7.inf", &&LAST);
&web_url("csi", &&"URL=/csi?v=3&s=webhp&action=&e=,,23337&ei=hyBZS-KsBMyTkAWDpLzrBA&rt=prt.234,xjsls.281,ol.734,xjses.734,xjsee.812,xjs.890", &&"Resource=0", &&"RecContentType=text/html", &&"Referer=/", &&"Mode=HTTP", &&LAST);
//lr_save_var()&web_reg_save_param("searchid",&&"LB=[\"",&&"RB=\",",&&"Ord=ALL",&&"Search=Body",&&LAST);
&web_url("search_7", &&"URL=/complete/search?hl=zh-CN&xhr=t&q=loadrunner&cp=10", &&"Resource=1", &&"RecContentType=application/json", &&"Referer=/", &&"Snapshot=t14.inf", &&LAST);
&&& lr_save_string(lr_paramarr_random("searchid"),"temp");
&lr_think_time(6);
&web_url("search_8", &&"URL=/search?hl=zh-CN&source=hp&q={temp}&aq=2&oq=loadrunner", &&"Resource=0", &&"RecContentType=text/html", &&"Referer=/", &&"Snapshot=t15.inf", &&"Mode=HTTP", &&LAST);
&web_url("nav_logo7.png_2", &&"URL=/images/nav_logo7.png", &&"Resource=1", &&"RecContentType=image/png", &&"Referer=/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner", &&"Snapshot=t16.inf", &&LAST);
&web_url("gen_204", &&"URL=/gen_204?mgmhp=shp1&ct=v&cd=false", &&"Resource=0", &&"RecContentType=text/html", &&"Referer=/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner", &&"Mode=HTTP", &&LAST);
&web_url("csi_2", &&"URL=/csi?v=3&s=web&action=&e=,,&ei=kCBZS5elFM6OkQXJttj2BA&rt=prt.343,xjses.405,xjsee.452,xjsls.452,xjs.577,ol.858", &&"Resource=0", &&"RecContentType=text/html", &&"Referer=/search?hl=zh-CN&source=hp&q=loadrunner+%E6%98%AF%E4%BB%80%E4%B9%88&aq=2&oq=loadrunner", &&"Mode=HTTP", &&LAST);
&return 0;}
前面的测试针对移动网关对HTTP头识别处理已经出现了几次比较麻烦的问题,这里简单做下总结。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域 值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。  典型的请求消息:
  GET http://download.microtool.de:80/somedata.exe  Host: download.microtool.de  Accept:*/*  Pragma: no-cache  Cache-Control: no-cache  Referer: http://download.microtool.de/  User-Agent:Mozilla/4.04[en](Win95;I;Nav)  Range:bytes=554554-
请求部分一般问题不大,只是在而测试的时候要注意是否支持GET和POST两种方式的兼容。
  典型的响应消息:
  HTTP/1.0200OK  Date:Mon,31Dec:57GMT  Server:Apache/1.3.14(Unix)  Content-type:text/html  Last-modified:Tue,17Apr:28GMT  Etag:”a030f020ac7c01:1e9f”  Content-length:  Content-range:bytes80
现在发现的几个问题都是在响应部分,必须注意有两点:
1.content-length和content-type必须要带,不然很多地区的运营商网关会无法识别,导致手机终端可以正常发包到我们的服务端,但我们的服务端响应无法正常返回到终端的情况;
2.除了消息头外,我们有些服务的响应是不带消息体的,这种情况测试中也发现有问题,最好的解决办法就是带了一段附带的消息体(即使是无效的)。
再简单介绍下content-type和content-length的概念:
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型。此参数是与请求中Accept字段对应的。
Content-Length表示实际传送的字节数。
由于一些地区的运营商网关对HTTP头的要求和限制比较严格,不制定类型会出现HTTP无法解析的情况,导致了我们服务异常的出现,由于各个开发人员的编程习惯不同,也没有对头域格式进行统一,上面的问题还是比较普遍的存在,各位同学以后测试的时候注意检查判断。
前几天一个关于网站安全的紧急发布, 这里分享一下测试过程.by六太@紧急发布的内容如下.为了防止某些钓鱼网站, 服务器针对某些页面的referrer进行了校验, 必须是https以及其他一些关键字组成, 否则判定为钓鱼网站, 这样针对referrer的初级校验, 能够防止绝大部分低级钓鱼. 但是由于有一些页面referrer为空值, 而程序中认为空值也是非法的, 所以的导致了部分用户无法付款, 所以紧急发布的内容就是, 如果referrer为空, 默认无风险.&代码实现起来容易, 但是测试比较困难, 因为你无法用firebug去修改referrer值, 因为referrer是只读属性. 使用中间页面跳转, 成本太大.&而loadrunner就非常轻易的就解决了这个测试难点, 脚本录制好后, 你很容易发现, referrer值就在脚本里面, 你想改什么就改成什么.&web_url("Test",  "URL=/",  "Resource=0",  "RecContentType=text/html",  "Referer=",  "Snapshot=t1.inf",  "Mode=HTTP",  LAST);
这次要测试的是一个下载平台的项目,信令采用在HTTP协议里封装自定义协议的方式实现,由于自定义信令较为复杂,初始采用了LR中的socket方式来编写接口测试脚本,如下所示:
#include "lrs.h"
&int ActucalN&&
&lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=172.16.11.101:9999",& LrsLastArg);&lrs_send("socket0", "buf0", LrsLastArg);&lrs_receive("socket0", "buf1", LrsLastArg);&ActucalNumber=lrs_get_last_received_buffer_size("socket0");&&&&lrs_save_param_ex("socket0","received",NULL,0,ActucalNumber,"ascii","param1");&lrs_save_searched_string("socket0",NULL,"param2","LB/BIN=\\xb9\\x00",NULL,1,29,4);&&&&&&//搜索protocol-id\xb9\x00字符串,并截取该字符串出现后固定位数的特殊字符串code.&lrs_save_searched_string("socket0",NULL,"param3","LB/BIN=\\xb9\\x00",NULL,1,37,4);&&&&& //搜索protocol-id\xb9\x00字符串,并截取该字符串出现后固定位数的特殊字符串respcode.&lrs_hex_string_to_int(lr_eval_string("¶m2&"),strlen(lr_eval_string("¶m2&")),&code);&lrs_hex_string_to_int(lr_eval_string("¶m3&"),strlen(lr_eval_string("¶m3&")),&rspcode);&lrs_send("socket0", "buf2", LrsLastArg);&lrs_close_socket("socket0");
&lr_output_message("-----------------------------------INFO---------------------------------------");&lr_output_message("The length of resp is %d", ActucalNumber);&lr_output_message("The content of resp is %s", lr_eval_string("¶m1&"));&lr_output_message("The content of code is %s", lr_eval_string("¶m2&"));&lr_output_message("The content of rspcode is %s", lr_eval_string("¶m3&"));&lr_output_message("code is %i",code);&lr_output_message("rspcode is %i",rspcode);
&return 0;}
data.ws部分:
;WSRData 2 1send& buf0 244&"POST / HTTP/1.1\r\n"&"User-Agent: Jakarta Commons-HttpClient/3.1\r\n"&"Host: 172.16.11.101:9999\r\n"&"Content-Length: 102\r\n"&"Content-Type: application/saip\r\n"&"\r\n"
&"婍滙~2\xb9\x00"&&&&&&&&&&//protocol-id(8)&"\x01\x00\x00\x66"&&&&&&&//basic ver+length(4)&"\x10\x60\x01\x2c"&&&&&&&//srcmodule+dstmodule(4)&"3456"&&&&&&&//transaction(16)&"\x00\x00\x00\x00"&&&&&&&//type+reserved(4)&"\x00\x01\x8e\x72"&&&&&&&//code=102002&"\x00\x00\x00\x3a"&&&&&&&//datalength(4)
&"\x00\x01"&&&&&&&&&&&&&&&//count&"\x02"&&&&&&&&&&&&&&&&&& //type&"\x00\x00\x00\x00"&&&&&&&//ver=0&"\x00\x04\x97\xef"&&&&&&&//id=301039&"\x00\x00\x00\x00"&&&&&&&//offset&"\x00\x02\x9b\xe5"&&&&&&&//fileSize&"\x00\x02\x9b\xe5"&&&&&&&//Size&"./applist2/app/329.mrp\x00"&&&&//fileURL
recv& buf1 171194
脚本上与前面一篇socket协议脚本不同之处是使用了lrs_save_searched_string函数,在服务端返回的数据包里搜索自定义协议标识protocol-id,并以此为基础,截取后面包中我们所需要的字段,转换后打印出来,从而实现了自定义接口测试的需求。
在功能测试后进行性能测试,为保证性能测试的效率,需去除各种逻辑判断语句,而只保留,打开冰箱门,把大象塞进去,看看大象的反应,关上冰箱门这四部分。
#include "lrs.h"
lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=172.16.11.155:9999",& LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);lrs_receive("socket0", "buf1", LrsLastArg);
lrs_close_socket("socket0");return 0;}
当然也可以采用HTTP协议方式实现该功能,在后面的性能测试中,因为现有的license采用socket协议只能实现一台机器100Vuser的并发,我们该脚本略做修改采用了HTTP协议方式编写,从而实现了1000Vuser的HTTP并发。
眆、贇,文本输入测试时未曾想到特定汉字会报错,会显示乱码!测试文本输入时考虑了特殊字符、考虑了边界值等等,但是就是从未考虑过特定的汉字!归根到底还是经验不足,引以为戒!
输入:输入员工姓名包含(眆、贇)这两个字,能够正常显示,此时点击【保存】结果:文字无法正确显示,显示为乱码
这是一个HTTP接口测试中经常会碰到的问题,目前的服务器采用的都是UTF-8编码方式,而我们的客户机Windows系统一般默认采用的编码方式是GBK,这正是我们采用录制方式的时候会发现许多中文乱码的原因。
Loadrunner录制的时候可以通过在Virtual User Gen的Tools-&Recoding Options -& Advanced -& Support charset -& UTF-8的设置规避(其实也只是部分规避),下面我们讨论在手写测试脚本时如何解决UTF-8转码的问题。
实践一:在脚本中直接采用中文明文进行请求
&&web_custom_request("web_custom_request",&&"URL=http://172.16.4.191/list?id=环球影院",&&"Method=GET",&&"TargetFrame=",&&"Resource=0",&&"Referer=",&&"Body=",&&LAST);结果:服务端返回404错误,找不到相应的资源id,明显服务端不能正确响应非UTF8编码方式的请求。
为解决这个问题,最关键的是要把本地GBK编码的汉字转换成UTF-8编码格式的信息,为此我们引进loadrunner自带的编码函数lr_convert_string_encoding
Converts a string to a different encoding.
C Language
int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
sourceString
The string to convert
fromEncoding
The encoding of the sourceString
toEncoding
The encoding to convert of the string saved in parameter paramName
The name of the parameter in which the destination string will be saved
lr_convert_string_encoding converts a string encoding between the following encodings: System locale, Unicode, and UTF-8. The function saves the result string, including its terminating NULL, in the parameter paramName.
lr_convert_string_encoding is added manually to a script. when needed. It is not recorded.
Possible values for 'fromEncoding' and 'toEncoding' :
LR_ENC_SYSTEM_LOCALE
LR_ENC_UTF8
LR_ENC_UNICODE
根据函数说明,我们编写测试脚本如下
&lr_convert_string_encoding( "环球影院",& LR_ENC_SYSTEM_LOCALE,& LR_ENC_UTF8,& "str" );&web_custom_request("web_custom_request",& "URL=http://172.16.4.191/list?id={str}",& "Method=GET",& "TargetFrame=",& "Resource=0",& "Referer=",& "EncType=text/charset=UTF-8",& "Body=",& LAST);
使用lr_convert_string_encoding函数,将中文转换成UTF-8编码以后,作为参数传递给请求,并发送。
测试结果:仍然返回404错误,查看loadrunner日志信息“环球影院”已经正确转换成UTF8编码方式,那为什么还是请求失败呢?
再次查看日志如下
Action.c(7): t=825ms: 223-byte request headers for "=鐜?悆褰遍櫌" (RelFrameId=1)Action.c(7):&&&& GET /list?id=鐜?悆褰遍櫌\x00 HTTP/1.1\r\nAction.c(7):&&&& Content-Type: text/charset=UTF-8\r\nAction.c(7):&&&& User-Agent: Mozilla/4.0 ( MSIE 6.0; Windows)\r\nAction.c(7):&&&& Accept-Encoding: gzip, deflate\r\nAction.c(7):&&&& Accept: */*\r\nAction.c(7):&&&& Connection: Keep-Alive\r\nAction.c(7):&&&& Host: 172.16.4.191\r\nAction.c(7):&&&& \r\n
发现在请求地址“/list?id=鐜?悆褰遍櫌”后面还带了一个\x00,这正是lr_convert_string_encoding函数说明中标红的说明:The function saves the result string, including its terminating NULL, in the parameter paramName.
也就是说,我转换成UTF-8之后,如果直接作为变量传到代码之中的话,在最后的字符串之中,会多出来一个“NULL”,在C语言中NULL是一个字符串的结束,而正是这个null字节的存在导致了服务端识别id出错。
&char tmp[50];&lr_convert_string_encoding( "环球影院",&&LR_ENC_SYSTEM_LOCALE,&&LR_ENC_UTF8,&&"str" );&&&strcpy(tmp,lr_eval_string("{str}"));
lr_log_message("str is %s",tmp);&lr_save_string(tmp,"sorvalue");&web_custom_request("web_custom_request",&&"URL=http://172.16.4.191/list?id={sorvalue}",&&"Method=GET",&&"TargetFrame=",&&"Resource=0",&&"Referer=",&&"Body=",&&LAST);
通过lr_eval_string函数取参数值时会自动去掉\x00,测试结果正常,正确返回HTTP响应内容。
个人品质常用词汇 able 有才干的,能干的     & &adaptable 适应性强的active 主动的,活跃的      aggressive 有进取心的ambitious 有雄心壮志的      amiable 和蔼可亲的amicable 友好的          analytical 善于分析的apprehensive 有理解力的 aspiring 有志气的,有抱负的audacious 大胆的,有冒险精神的 capable 有能力的,有才能的careful 办理仔细的      candid 正直的competent 能胜任的          constructive 建设性的cooperative 有合作精神的 creative 富创造力的dedicated 有奉献精神的      dependable 可靠的diplomatic 老练的,有策略的 disciplined 守纪律的dutiful 尽职的 w       ell--educated 受过良好教育的efficient 有效率的           energetic 精力充沛的expressivity 善于表达       faithful 守信的,忠诚的frank 直率的,真诚的       generous 宽宏大量的genteel 有教养的            gentle 有礼貌的humorous 有幽默           impartial 公正的independent 有主见的      industrious 勤奋的ingenious 有独创性的      motivated 目的明确的intelligent 理解力强的 learned 精通某门学问的logical 条理分明的      methodical 有方法的modest 谦虚的           objective 客观的precise 一丝不苟的       punctual 严守时刻的realistic 实事求是的       responsible 负责的sensible 明白事理的       sporting 光明正大的steady 踏实的           systematic 有系统的purposeful 意志坚强的 sweet-tempered 性情温和的temperate 稳健的           tireless 孜孜不倦的教育程度常用词汇education 学历          educational history 学历educational background 教育程度 curriculum 课程major 主修 minor 副修educational highlights 课程重点部分         curriculum included 课程包括specialized courses 专门课程 courses taken 所学课程special training 特别训练    social practice 社会实践part-time jobs 业余工作     summer jobs 暑期工作vacation jobs 假期工作     refresher course&&进修课程extracurricular activities 课外活动               physical activities 体育活动recreational activities&&娱乐活动              academic activities 学术活动social activities 社会活动 rewards 奖励scholarship 奖学金 excellent League member 优秀团员excellent leader 优秀干部 student council 学生会off-job training 脱产培训 in-job training 在职培训educational system 学制 academic year 学年semester 学期(美) term 学期(英)supervisor 论文导师 pass 及格fail 不及格 marks 分数examination 考试 degree 学位post doctorate 博士后 doctor(Ph.D) 博士master 硕士       bachelor 学士graduate student 研究生 abroad student 留学生abroad student 留学生 undergraduate 大学肆业生government-supported student&&公费生 commoner 自费生extern 走读生        intern 实习生prize fellow 奖学金生   boarder 寄宿生graduate 毕业生     guest student 旁听生(英)auditor 旁听生(美) day-student 走读生工作经历常用词汇work experience 工作经历 occupational history 工作经历professional history 职业经历 specific experience 具体经历responsibilities 职责      second job 第二职业achievements 工作成就,业绩 administer 管理assist 辅助          adapted to 适应于accomplish 完成(任务等) appointed 被认命的adept in 善于 analyze 分析authorized 委任的;核准的 behave 表现break the record 打破纪录     breakthrough 关键问题的解决control 控制            conduct 经营,处理cost 成本;费用        create 创造demonstrate 证明,示范 decrease 减少design 设计            develop 开发,发挥devise 设计,发明        direct 指导double 加倍,翻一番       earn 获得,赚取effect 效果,作用      eliminate 消除enlarge 扩大            enrich 使丰富exploit 开发(资源,产品)        enliven 搞活establish 设立(公司等);使开业 evaluation 估价,评价execute 实行,实施       expedite 加快;促进generate 产生 good at&&擅长于guide 指导;操纵       improve 改进,提高initiate 创始,开创       innovate 改革,革新invest 投资          integrate    使结合;使一体化justified 经证明的;合法化的     launch 开办(新企业)maintain 保持;维修      modernize 使现代化negotiate 谈判      nominated 被提名;被认命的overcome 克服        perfect 使完善;改善perform 执行,履行     profit 利润be promoted to 被提升为    be proposed as   被提名(推荐)为realize 实现(目标)获得(利润) reconstruct 重建recorded 记载的            refine 精练,精制registered 已注册的 regenerate 更新,使再生replace 接替,替换 retrieve 挽回revenue 收益,收入 scientific 科学的,系统的self-dependence 自力更生 serve 服务,供职settle 解决(问题等) shorten 减低……效能simplify 简化,精简 spread 传播,扩大standard 标准,规格 supervises 监督,管理supply 供给,满足 systematize 使系统化test 试验,检验 well-trained 训练有素的valuable 有价值的        target 目标,指标working model 劳动模范 advanced worker 先进工作者个人资料常用词汇name 姓名 in. 英寸pen name 笔名 ft. 英尺alias 别名 street 街Mr. 先生 road 路Miss *** district 区Ms (***或太太) house number 门牌Mrs. 太太 lane 胡同,巷age 年龄 height 身高bloodtype 血型 weight 体重address 地址 born 生于permanent address 永久住址       birthday 生日province 省 birthdate 出生日期city 市 birthplace 出生地点county 县 home phone 住宅***prefecture 专区     office phone 办公***autonomous region 自治区     business phone 办公***nationality 民族;国籍 current address 目前住址citizenship 国籍    date of birth 出生日期native place 籍贯     postal code 邮政编码duel citizenship 双重国籍    marital status 婚姻状况family status 家庭状况       married 已婚single 未婚           divorced 离异separated 分居       number of children 子女人数health condition 健康状况        health 健康状况excellent (身体)极佳     short-sighted 近视far-sighted 远视       ID card ***date of availability  可到职时间 membership 会员、资格president 会长 vice-president 副会长director 理事 standing director 常务理事society 学会 association 协会secretary-general 秘书长 research society 研究会应聘职位objective 目标       position desired 希望职位job objective 工作目标 employment objective 工作目标career objective 职业目标   position sought 谋求职位position wanted 希望职位 position applied for&&申请职位离职原因 for more specialized work 为更专门的工作             for prospects of promotion 为晋升的前途for higher responsibility 为更高层次的工作责任        for wider experience 为扩大工作经验due to close-down of company 由于公司倒闭        due to expiry of employment 由于雇用期满sought a better job 找到了更好的工作             to seek a better job 找一份更好的工作
前文请看:
Q:广播是什么原理?广播地址又是什么?这次的实例中,广播地址是多少?A:一个主机要向网上的所有其他主机发送帧,这就是广播。主机对由信道传送过来帧的过滤过程:网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧。一共有四种I P广播地址1.受限的广播:受限的广播地址是255.255.255.255。2.指向网络的广播:地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。3.指向子网的广播:主机号为全1且有特定子网号的地址。作为子网直接广播地址的I P地址需要了解子网的掩码。4.指向所有子网的广播:也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。在本实例中,只能看出广播地址的MAC地址是ff:ff:ff:ff:ff:ff,而无法看出IP地址属于哪一种广播地址。待解决。如下图参考资料:
Q:ARP请求和应答包的格式什么?包含哪些内容?A:书中关于ARP格式的如下图所示:其中:帧类型表示后面数据的类型。硬件类型表示硬件地址的类型。协议类型表示要映射的协议地址类型。硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。op是操作字段,指出四种操作类型:A R P请求(值为1)、A R P应答(值为2)、R A R P请求(值为3)和R A R P应答(值为4)。其他字段很好理解。从Ethereal工具中分别截取ARP请求和应答包内容,如下图:和ARP格式图示相比较:以太网首部:以太网目的地址是广播地址(全1),以太网源地址是本机的MAC地址,帧类型是ARP的标志值0x0806。28字节ARP请求/应答:硬件类型是以太网标志值0001,协议类型是I P地址标志值0800,硬件地址长度是6,协议地址长度是4,操作字段是ARP请求标志值0001,发送端以太网地址是本机的MAC地址,发送段IP地址是本机的IP地址(176),目标以太网地址还没有获取到,所以为全0,目标IP地址是远程机的IP地址(5)。
和ARP格式图示相比较:以太网首部:以太网目的地址是本机的MAC地址,以太网源地址是远程机的MAC地址,帧类型是ARP的标志值0x0806。Trailer是什么?待解决。28字节ARP请求/应答:硬件类型是以太网标志值0001,协议类型是I P地址标志值0800,硬件地址长度是6,协议地址长度是4,操作字段是ARP应答标志值0002(与ARP请求区别开来),发送端以太网地址是远程机的MAC地址,发送端IP地址是远程机的IP地址(5),目标以太网地址是本机的MAC地址,目标IP地址是本机的IP地址(176)。由此看来,ARP请求和应答包非常相似,标志性的区别在操作字段的不同。
Q:为什么需要在本机DOS中先运行arp –d 清除arp缓存,才能抓到ARP协议包?A:&A R P高效运行的关键是由于每个主机上都有一个A R P高速缓存。这个高速缓存存放了最近I n t e r n e t地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为2 0分钟,起始时间从被创建时开始算起。可以用a r p命令来检查ARP高速缓存。参数-a的意思是显示高速缓存中所有的内容,如下图所示:其中包括了远程机(5)的MAC映射记录。一般情况下,当系统收到A R P请求或发送A R P应答时,都要把请求端的硬件地址和I P地址存入A R P高速缓存。在获取目标机的MAC地址时,会先从ARP高速缓冲中查找是否存在,如果存在,则可以不用进行ARP请求过程。为了确保可以抓到ARP的请求数据包,因此,先用命令arp –d清除掉本地的MAC地址映射。
下文请看:
Sub ReportInformation(filename)' create the Excel objectSet ExcelObj = CreateObject("Excel.Application")' add a new Workbooks and a new SheetExcelObj.Workbooks.AddSet NewSheet = ExcelObj.Sheets.Item(1)NewSheet.Name = "Page Information"&' customize the Sheet layoutNewSheet.Cells(1,1).Value = "Tom"NewSheet.Cells(2,1).Value = "Sohu"NewSheet.Hyperlinks.Add NewSheet.Cells(1,1), ""NewSheet.Hyperlinks.Add NewSheet.Cells(2,1), ""&' save the Excel file&&&&& ExcelObj.ActiveWorkbook.SaveAs filename&&&&& ' close the application and clean the object&&&&& ExcelObj.Quit&&&&& Set ExcelObj = Nothing&& End Subcall ReportInformation("c:\test.xls")

参考资料

 

随机推荐