📄 packetdns.cs
字号:
mNode1.Nodes.Add( FlagsArray[ i ] );
mNode.Nodes.Add( mNode1 );
Tmp = "Questions :" + Function.ReFormatString( PDns.Questions , null );
mNode.Nodes.Add( Tmp );
Tmp = "Answer RRS :" + Function.ReFormatString( PDns.AnswerRRS , null );
mNode.Nodes.Add( Tmp );
Tmp = "Authority RRS :" + Function.ReFormatString( PDns.AuthorityRRS , null );
mNode.Nodes.Add( Tmp );
Tmp = "Additional RRS :" + Function.ReFormatString( PDns.AdditionalRRS , null );
mNode.Nodes.Add( Tmp );
if( PDns.Questions > 0 )
{
mNode1 = new TreeNode();
mNode1.Text = "QUERIES";
for( i = 1; i <= PDns.Questions; i ++ )
{
mNode2 = new TreeNode();
mNode2.Text = "Query Record " + i.ToString();
Tmp = "Name :" + PDns.QuestionObject[i-1].Name;
mNode2.Nodes.Add( Tmp );
Tmp = "Type : " + Function.ReFormatString( PDns.QuestionObject[i-1].Type , PDns.QuestionObject[i-1].TypeStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Class : " + Function.ReFormatString( PDns.QuestionObject[i-1].Class , PDns.QuestionObject[i-1].ClassStr );
mNode2.Nodes.Add( Tmp );
mNode1.Nodes.Add( mNode2 );
}
mNode.Nodes.Add( mNode1 );
}
if( PDns.AnswerRRS > 0 )
{
mNode1 = new TreeNode();
mNode1.Text = "ANSWER RECORDS";
for( i = 1; i <= PDns.AnswerRRS; i ++ )
{
mNode2 = new TreeNode();
mNode2.Text = "Answer Record " + i.ToString();
Tmp = "Name :" + PDns.AnswerObject[i-1].Name;
mNode2.Nodes.Add( Tmp );
Tmp = "Type : " + Function.ReFormatString( PDns.AnswerObject[i-1].Type , PDns.AnswerObject[i-1].TypeStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Class : " + Function.ReFormatString( PDns.AnswerObject[i-1].Class , PDns.AnswerObject[i-1].ClassStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Time to Live : " + Function.ReFormatString( PDns.AnswerObject[i-1].TimeToLive , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Data Length : " + Function.ReFormatString( PDns.AnswerObject[i-1].DataLength , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Ip Address :" + PDns.AnswerObject[i-1].IpAddress;
mNode2.Nodes.Add( Tmp );
mNode1.Nodes.Add( mNode2 );
}
mNode.Nodes.Add( mNode1 );
}
if( PDns.AuthorityRRS > 0 )
{
mNode1 = new TreeNode();
mNode1.Text = "AUTHORITY RECORDS";
for( i = 1; i <= PDns.AuthorityRRS; i ++ )
{
mNode2 = new TreeNode();
mNode2.Text = "Authority Record " + i.ToString();
Tmp = "Name :" + PDns.AuthorityObject[i-1].Name;
mNode2.Nodes.Add( Tmp );
Tmp = "Type : " + Function.ReFormatString( PDns.AuthorityObject[i-1].Type , PDns.AuthorityObject[i-1].TypeStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Class : " + Function.ReFormatString( PDns.AuthorityObject[i-1].Class , PDns.AuthorityObject[i-1].ClassStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Time to Live : " + Function.ReFormatString( PDns.AuthorityObject[i-1].TimeToLive , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Data Length : " + Function.ReFormatString( PDns.AuthorityObject[i-1].DataLength , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Primary Name Server : " + PDns.AuthorityObject[i-1].PrimaryNameServer;
mNode2.Nodes.Add( Tmp );
Tmp = "Responsible Authority's Mailbox : " + PDns.AuthorityObject[i-1].ResponsibleAuthoritysMailBox;
mNode2.Nodes.Add( Tmp );
Tmp = "Serial Number : " + Function.ReFormatString( PDns.AuthorityObject[i-1].SerialNumber , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Refresh Interval : " + Function.ReFormatString( PDns.AuthorityObject[i-1].RefreshInterval , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Retry Interval : " + Function.ReFormatString( PDns.AuthorityObject[i-1].RetryInterval , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Expiration Limit : " + Function.ReFormatString( PDns.AuthorityObject[i-1].ExpirationLimit , null );
mNode2.Nodes.Add( Tmp );
Tmp = "Minimum TTL : " + Function.ReFormatString( PDns.AuthorityObject[i-1].MinimumTTL , null );
mNode2.Nodes.Add( Tmp );
mNode1.Nodes.Add( mNode2 );
}
mNode.Nodes.Add( mNode1 );
}
if( PDns.AdditionalRRS > 0 )
{
mNode1 = new TreeNode();
mNode1.Text = "Additional Records";
for( i = 1; i <= PDns.AdditionalRRS; i ++ )
{
mNode2 = new TreeNode();
mNode2.Text = "Additional Record " + i.ToString();
Tmp = "Name :" + PDns.AdditionalObject[i-1].Name;
mNode2.Nodes.Add( Tmp );
Tmp = "Type : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Type , PDns.AdditionalObject[i-1].TypeStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Class : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Class , PDns.AdditionalObject[i-1].ClassStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Time to Live : " + Function.ReFormatString( PDns.AdditionalObject[i-1].TimeToLive , PDns.AdditionalObject[i-1].TimeToLiveStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Data Length : " + Function.ReFormatString( PDns.AdditionalObject[i-1].DataLength , null );
mNode2.Nodes.Add( Tmp );
mNode2 = new TreeNode();
mNode2.Text = "Flags :" + Function.ReFormatString( PDns.AdditionalObject[i-1].Flags , null );
for( i = 0; i < 2; i ++ )
mNode2.Nodes.Add( Flags2Array[ i ] );
mNode1.Nodes.Add( mNode2 );
Tmp = "Flags : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Class , PDns.AdditionalObject[i-1].ClassStr );
mNode2.Nodes.Add( Tmp );
Tmp = "Address : " + Function.ReFormatString( PDns.AdditionalObject[i-1].Address , PDns.AdditionalObject[i-1].AddressStr );
mNode2.Nodes.Add( Tmp );
mNode1.Nodes.Add( mNode2 );
}
mNode.Nodes.Add( mNode1 );
}
return mNode;
}
public PACKET_DNS GetDNSPart( byte [] PacketData , ref int Index )
{
int i = 0;
PDns.TransactionId = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.Flags = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.Questions = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AnswerRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AdditionalRRS = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
if( PDns.Questions > 0 )
{
PDns.QuestionObject = new QUESTION_ITEM[ PDns.Questions ];
for( i = 0; i < PDns.Questions; i ++ )
{
PDns.QuestionObject[i].Name = "";
while( PacketData[ Index ] != 0 )
PDns.QuestionObject[i].Name += (char) PacketData[ Index ++ ];
Index ++;
PDns.QuestionObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.QuestionObject[i].TypeStr = GetTypeString( PDns.QuestionObject[i].Type );
PDns.QuestionObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.QuestionObject[i].ClassStr = GetClassString( PDns.QuestionObject[i].Class );
}
}
if( PDns.AnswerRRS > 0 )
{
PDns.AnswerObject = new ANSWER_ITEM[ PDns.AnswerRRS ];
for( i = 0; i < PDns.AnswerRRS; i ++ )
{
PDns.AnswerObject[i].Name = "";
while( PacketData[ Index ] != 0 )
PDns.AnswerObject[i].Name += (char) PacketData[ Index ++ ];
Index ++;
PDns.AnswerObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AnswerObject[i].TypeStr = GetTypeString( PDns.AnswerObject[i].Type );
PDns.AnswerObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AnswerObject[i].ClassStr = GetClassString( PDns.AnswerObject[i].Class );
PDns.AnswerObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
PDns.AnswerObject[i].DataLength = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AnswerObject[i].IpAddress = "";
PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString() + ".";
PDns.AnswerObject[i].IpAddress += PacketData[ Index ++ ].ToString();
}
}
if( PDns.AuthorityRRS > 0 )
{
PDns.AuthorityObject = new AUTHORITY_ITEM[ PDns.AuthorityRRS ];
for( i = 0; i < PDns.AuthorityRRS; i ++ )
{
PDns.AuthorityObject[i].Name = "";
while( PacketData[ Index ] != 0 )
PDns.AuthorityObject[i].Name += (char) PacketData[ Index ++ ];
Index ++;
PDns.AuthorityObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].TypeStr = GetTypeString( PDns.AuthorityObject[i].Type );
PDns.AuthorityObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].ClassStr = GetClassString( PDns.AuthorityObject[i].Class );
PDns.AuthorityObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].DataLength = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].PrimaryNameServer = "";
while( PacketData[ Index ] != 0 )
PDns.AuthorityObject[i].PrimaryNameServer += (char) PacketData[ Index ++ ];
PDns.AuthorityObject[i].ResponsibleAuthoritysMailBox = "";
while( PacketData[ Index ] != 0 )
PDns.AuthorityObject[i].ResponsibleAuthoritysMailBox += (char) PacketData[ Index ++ ];
PDns.AuthorityObject[i].SerialNumber = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].RefreshInterval = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].RetryInterval = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].ExpirationLimit = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AuthorityObject[i].MinimumTTL = Function.Get4Bytes( PacketData , ref Index , Const.NORMAL );
}
}
if( PDns.AdditionalRRS > 0 )
{
PDns.AdditionalObject = new ADDITIONAL_ITEM[ PDns.AdditionalRRS ];
for( i = 0; i < PDns.AdditionalRRS; i ++ )
{
PDns.AdditionalObject [i].Name = "";
while( PacketData[ Index ] != 0 )
PDns.AdditionalObject[i].Name += (char) PacketData[ Index ++ ];
Index ++;
PDns.AdditionalObject[i].Type = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AdditionalObject[i].TypeStr = GetTypeString( PDns.AdditionalObject[i].Type );
PDns.AdditionalObject[i].Class = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AdditionalObject[i].ClassStr = GetClassString( PDns.AdditionalObject[i].Class );
PDns.AdditionalObject[i].TimeToLive = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
PDns.AdditionalObject[i].TimeToLiveStr = PDns.AdditionalObject[i].TimeToLive.ToString() + " sn";
PDns.AdditionalObject[i].Flags = Function.Get2Bytes( PacketData , ref Index , Const.NORMAL );
PDns.AdditionalObject[i].FlagsStr = "";
PDns.AdditionalObject[i].Address = Function.Get4Bytes( PacketData , ref Index , Const.VALUE );
Index -= 4;
PDns.AdditionalObject[i].AddressStr = "";
PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ] + ".";
PDns.AdditionalObject[i].AddressStr += (char) PacketData[ Index ++ ];
}
}
return PDns;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -