WireShark网络抓包实验.docx

上传人:b****6 文档编号:7277629 上传时间:2023-01-22 格式:DOCX 页数:14 大小:660.46KB
下载 相关 举报
WireShark网络抓包实验.docx_第1页
第1页 / 共14页
WireShark网络抓包实验.docx_第2页
第2页 / 共14页
WireShark网络抓包实验.docx_第3页
第3页 / 共14页
WireShark网络抓包实验.docx_第4页
第4页 / 共14页
WireShark网络抓包实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

WireShark网络抓包实验.docx

《WireShark网络抓包实验.docx》由会员分享,可在线阅读,更多相关《WireShark网络抓包实验.docx(14页珍藏版)》请在冰豆网上搜索。

WireShark网络抓包实验.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1