WireShark网络抓包实验.docx
- 文档编号:7277629
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:14
- 大小:660.46KB
WireShark网络抓包实验.docx
《WireShark网络抓包实验.docx》由会员分享,可在线阅读,更多相关《WireShark网络抓包实验.docx(14页珍藏版)》请在冰豆网上搜索。
WireShark网络抓包实验
计算机网络管理
姓名:
姚建国
班级:
网络工程
学号:
080510101
一.实验目的
學會使用snmpb分析mibtree,使用wireshark抓包以及分析該包。
根據snmp協定,分析抓包軟體抓出的結果。
二.实验内容
1.使用Snmp
1)安装snmpb
2)实验步骤
3)点击mibtree分析各结点
2.使用wireshark抓包
1)安装WireShark,中间会提示安装WinPcap,一切都是默认。
2)实验前先关掉联网的软件,防止产生一些不必要的流量,以利于实验分析。
3)打开WireShark,选择"Capture>>Interfaces",选择自己的网卡。
选择"Start"开始监控流量。
UDP协议分析,选择一个包单击,结果如下
抓包过程中发现TCP组播、HTTP组播等。
A.组播分析.
EthernetII帧,
Src:
RealtekS_46:
f2:
4f(00:
e0:
4c:
46:
f2:
4f),Dst:
IPv4mcast_66:
74:
6e(01:
00:
5e:
66:
74:
6e)。
源地址RealtekS,目的地址IPv4mcast_66:
74:
6e。
InternetProtocol(IP数据包),
UserDatagramProtocol(UDP数据包),SrcPort:
irisa(11000),DstPort:
irisa(11000)。
B.ARP广播。
EthernetII帧,
Src:
FujianSt_f8:
ec:
eb(00:
d0:
f8:
f8:
ec:
eb)[锐捷网络的交换机,这里显示"福建实达网络"],Dst:
Broadcast(ff:
ff:
ff:
ff:
ff:
ff)
AddressResolutionProtocol(request)(ARP数据包)
SenderMACaddress:
FujianSt_f8:
ec:
eb(00:
d0:
f8:
f8:
ec:
eb)
SenderIPaddress:
10.1.10.254(10.1.10.254)
TargetMACaddress:
00:
00:
00_00:
00:
00(00:
00:
00:
00:
00:
00)
TargetIPaddress:
10.1.10.135(10.1.10.135)
ARP是一个三层的协议,直接跑在Frame之上
4)再次启动WireShark,打开网页[url][/url],抓包。
C.HTTP数据包分析。
EthernetIIFrame,
Src:
Elitegro_59:
a7:
88(00:
16:
ec:
59:
a7:
88)【VIA的网卡,这里显示Elitegro】,
Dst:
FujianSt_f8:
ec:
eb(00:
d0:
f8:
f8:
ec:
eb)
InternetProtocol,
Src:
10.1.10.157(10.1.10.157),Dst:
203.208.33.100(203.208.33.100)
【G的IP地址】
TransmissionControlProtocol,
SrcPort:
hppronetman(3908),DstPort:
http(80),Seq:
0,Len:
0
从抓的包中可以看到TCP的连接建立过程(Three-wayHandshake).[syn][syn,ack][ack]
3.报文构造代码
voidBindSequenceOf_TLV(unsignedchar*return_tlv_bind,int&return_tlv_bind_len,messageMSG)//namevaluenamevalue
{for(inti=0;i<6;i++)//
{//getreturn_tlv_bind
unsignedcharreturn_tlv[50];intreturn_tlv_len=0;
unsignedchartlv_name[10];inttlv_name_len=0;
unsignedchartlv_value[10];inttlv_value_len=0;//for
if(MSG.pdu.variable_bindings[i].name.length()==0)continue;
else
{Objectidentifier_TLV(tlv_name,tlv_name_len,MSG.pdu.variable_bindings[i].name);
Sequence_TLV(return_tlv,return_tlv_len,tlv_name,tlv_name_len);
if(MSG.pdu.pdutype==2)//SET_REQUEST
{Null_TLV(tlv_value,tlv_value_len,25);
}else
{Null_TLV(tlv_value,tlv_value_len,-1);
}//((*(MSG.pdu.variable_bindings+i)).name);
Sequence_TLV(return_tlv,return_tlv_len,tlv_value,tlv_value_len);
SequenceOf_TLV(return_tlv_bind,return_tlv_bind_len,return_tlv,return_tlv_len);
}}}
voidPduSequence_TLV(unsignedchar*return_tlv_Pdu,int&return_tlv_Pdu_len,messageMSG)//pdutypeid00bind//,TLV&return_tlv_bind
{switch(MSG.pdu.pdutype)
{case0:
return_tlv_Pdu[0]=160;break;//A0H"10100000"request
case1:
return_tlv_Pdu[0]=161;break;//A1H"10100001"next_request
case2:
return_tlv_Pdu[0]=163;break;//A3H"10100011"set_request
case3:
return_tlv_Pdu[0]=162;break;//A2H"10100010"response
case4:
return_tlv_Pdu[0]=164;break;//A4H"10100100"
default:
break;
}
unsignedcharTLV_request_id[5];intTLV_request_id_len=0;
unsignedcharTLV_error_status[5];intTLV_error_status_len=0;
unsignedcharTLV_error_index[5];intTLV_error_index_len=0;
Integer_TLV(TLV_request_id,TLV_request_id_len,MSG.pdu.request_id);Pdu_Sequence_TLV(return_tlv_Pdu,return_tlv_Pdu_len,TLV_request_id,TLV_request_id_len);Integer_TLV(TLV_error_status,TLV_error_status_len,MSG.pdu.error_status);//error_status;Pdu_Sequence_TLV(return_tlv_Pdu,return_tlv_Pdu_len,TLV_error_status,TLV_error_status_len);Integer_TLV(TLV_error_index,TLV_error_index_len,MSG.pdu.error_index);//error_index;Pdu_Sequence_TLV(return_tlv_Pdu,return_tlv_Pdu_len,TLV_error_index,TLV_error_index_len);
unsignedcharreturn_tlv_bind[50];intreturn_tlv_bind_len=0;//
BindSequenceOf_TLV(return_tlv_bind,return_tlv_bind_len,MSG);//varBind*variable_bindings;
Pdu_Sequence_TLV(return_tlv_Pdu,return_tlv_Pdu_len,return_tlv_bind,return_tlv_bind_len);
}voidMessSequence_TLV(unsignedchar*return_tlv_message,int&return_tlv_message_len,messageMSG)//versioncommunitysnmppdu,TLV&return_tlv_Pdu
{unsignedcharTLV_version[10];intTLV_version_len=0;
unsignedcharTLV_community[10];intTLV_community_len=0;
Integer_TLV(TLV_version,TLV_version_len,MSG.version);//versionSequence_TLV(return_tlv_message,return_tlv_message_len,TLV_version,TLV_version_len);OctetString_TLV(TLV_community,TLV_community_len,MSG.community);//communitySequence_TLV(return_tlv_message,return_tlv_message_len,TLV_community,TLV_community_len);unsignedcharreturn_tlv_Pdu[150];intreturn_tlv_Pdu_len=0;
PduSequence_TLV(return_tlv_Pdu,return_tlv_Pdu_len,MSG);//PDUspdu;Sequence_TLV(return_tlv_message,return_tlv_message_len,return_tlv_Pdu,return_tlv_Pdu_len);
}voidcreatemessage(char*Buffer,char*pdutype,int&leng_buffer)
{usingstd:
:
cout;
usingstd:
:
cin;
usingstd:
:
endl;
unsignedcharreturn_tlv_message[300];
intreturn_tlv_message_len=0;
messageMSG;
inti=0;
MSG.pdu.pdutype=atoi(pdutype);
cout<<"chooseinputthecommunity"< cin>>MSG.community; cout<<"chooseinputthename,maxsize: 6"< MSG.pdu.variable_bindings=newstructvarBind[6]; stringinput;//forinput cin>>input; while(input! ="send") {MSG.pdu.variable_bindings[i++].name=input; cin>>input; }MSG.version=0; //MSG.community="public"; MSG.pdu.error_index=0; MSG.pdu.error_status=0; MSG.pdu.request_id=abs(rand());//90...32767 MessSequence_TLV(return_tlv_message,return_tlv_message_len,MSG); leng_buffer=return_tlv_message_len; for(intl=0;l {cout<<(int)return_tlv_message[l]<<""; Buffer[l]=return_tlv_message[l];//(int) //cout<<(int)Buffer[l]<<""; }cout< 解析和解码代码如下: voidstrcpyTLV(chartemp_INTEGER[],charget_pdu[],intk,intlen)//字符串拷贝,拷贝value部分 {intbegin=k; for(intp=0;p {temp_INTEGER[p]=get_pdu[begin++]; }temp_INTEGER[len]=0; }voidprinout(chartemp_INTEGER[],boolchange_line)//输出整数value部分 {if(change_line) {std: : cout<<(int)temp_INTEGER[0]< }elsestd: : cout<<(int)temp_INTEGER[0];} voidprintout_OBJE(chartemp_name[],intlen)//输出标识符 {std: : cout<<"1.3.";inti=1;while(i {std: : cout<<(int)temp_name[i++]<<"."; }std: : cout< voidDcode_version(chartemp_INTEGER[],intlen)//version解析 {std: : cout<<"version: "< prinout(temp_INTEGER,true);} voidDcode_OCTETSTRING(chartemp_OCTETSTRING[],intlen)//community解析 {std: : cout<<"community: "< voidDcode_PDUTYPE(intTlv_T)//pdutype解析 {std: : cout<<"pdutype: "< voidDcode_resid(chartemp_INTEGER[],intlen)//requestid解析 {for(intg=0;g {temp_INTEGER[g]<<=(len-1-g)*8;}intsum=temp_INTEGER[0]; for(inth=1;h {sum|=temp_INTEGER[h]; }std: : cout<<"requestid: "< voidDcode_errorstatus(chartemp_INTEGER[],intlen)//errorstatus解析 {std: : cout<<"errorstatus: "< prinout(temp_INTEGER,false); switch(temp_INTEGER[0]) {case0: std: : cout<<"NoError"< std: : cout<<"TooBig"< std: : cout<<"NoSuchname"< case3: std: : cout<<"BadValue"< case4: std: : cout<<"ReadOnly"< std: : cout<<"genErr"< break;}} voidDcode_errorindex(chartemp_INTEGER[],intlen)//errorindex解析 {std: : cout<<"errorindex: "< prinout(temp_INTEGER,false); if(temp_INTEGER[0]! =0) {std: : cout<<"The"<<(int)temp_INTEGER[0]<<"nameiswrong"< }elsestd: : cout< }voidDcode_name(chartemp_name[],inttotal_name,intlen)//标识符解析 {std: : cout<<"name: "< printout_OBJE(temp_name,len);} voidDcode_value_INTEGER(chartemp_INTEGER[],inttotal_name,intlen)//value解析 {std: : cout<<"value: "< prinout(temp_INTEGER,true);} voidDcode_Null(intlen)//Null类型解析 {std: : cout<<"value: "< voidDcode_IpAddress(chartemp_ipaddress[],intlen)//ipaddress解析 {std: : cout<<"Ipaddress: "< for(intmm=0;mm {std: : cout< voidDecode_pdu(charget_pdu[])//主函数 {std: : cout<<"parasing"<<"type"<<""<<"len"<<""<<"value"<<""< inttotal_INTEGER=0;inttotal_name=0; intlen=0;intlen1=0;intlen2=0;intlen3=0;intlen4=0;//定义各length值 intlen7=0;intlen6=0;intlen5=0;intlen8=0; inti=2;while(i {intTlv_T=0;Tlv_T=(int)get_pdu[i]; switch(Tlv_T) {caseINTEGER: //2 ++total_INTEGER; if(total_INTEGER==1)//vertion {len=(int)get_pdu[i+1]; chartemp_INTEGER[10];// strcpyTLV(temp_INTEGER,get_pdu,i+2,len); Dcode_version(temp_INTEGER,len); i=i+len+1;//i=i+len+1+1; }elseif(total_INTEGER==2)//requestId {len1=(int)get_pdu[i+1]; chartemp_INTEGER[100];// strcpyTLV(temp_INTEGER,get_pdu,i+2,len1); Dcode_resid(temp_INTEGER,len1);i=i+len1+1;}elseif(total_INTEGER==3)//errorstatus {len2=(int)get_pdu[i+1]; chartemp_INTEGER[5];// strcpyTLV(temp_INTEGER,get_pdu,i+2,len2); Dcode_errorstatus(temp_INTEGER,len2); i=i+len2+1;}elseif(total_INTEGER==4)//errorIndex {len3=(int)get_pdu[i+1]; chartemp_INTEGER[5];// strcpyTLV(temp_INTEGER,get_pdu,i+2,len3); Dcode_errorindex(temp_INTEGER,len3); i=i+len3+1;}else//其他 {len4=(int)get_pdu[i+1]; chartemp_INTEGER[100];// strcpyTLV(temp_INTEGER,get_pdu,i+2,len4); Dcode_value_INTEGER(temp_INTEGER,total_name,len4); i=i+len4+1;//} break; caseOCTETSTRING: //4字符 len5=(int)get_pdu[i+1]; chartemp_OCTETSTRING[50];// strcpyTLV(temp_OCTETSTRING,get_pdu,i+2,len5); Dcode_OCTETSTRING(temp_OCTETSTRING,len5); i=i+len5+1;break; caseGetResponse: //pdutype //intlen=get_pdu[i+1]; Dcode_PDUTYPE(Tlv_T);i=i+2-1;break;caseTrap: //intl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WireShark 网络 实验