Windows下DNS ID欺骗的原理与实现

80酷酷网    80kuku.com

  

  域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53 端口监听,并返回用户所需的相关信息。
  一.DNS协议的相关数据结构

  DNS数据报:

  typedef struct dns
{
  unsigned short id;
  //标识,通过它客户端可以将DNS的请求与应答相匹配;
  unsigned short flags;
  //标志:[QR | opcode | AA| TC| RD| RA | zero | rcode ]
  unsigned short quests;
  //问题数目;
  unsigned short answers;
  //资源记录数目;
  unsigned short author;
  //授权资源记录数目;
  unsigned short addition;
  //额外资源记录数目;
}DNS,*PDNS;

  在16位的标志中:QR位判断是查询/响应报文,opcode区别查询类型,AA判断是否为授权回答,TC判断是否可截断,RD判断是否期望递归查询,RA判断是否为可用递归,zero必须为0,rcode为返回码字段。

  DNS查询数据报:

  typedef struct query
{
  unsinged char *name;
  //查询的域名,这是一个大小在0到63之间的字符串;
  unsigned short type;
  //查询类型,大约有20个不同的类型
  unsigned short classes;
  //查询类,通常是A类既查询IP地址。
}QUERY,*PQUERY;



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: