一种生成dns查询包的方法_2

文档序号:9891477阅读:来源:国知局
被重复利用的模板。相对应地,可W把DNS报文中的问题字段作为动态 部分,并且根据需求生成相应的查询名、选择查询类型和查询类(其中,查询类通常为1,用 于表示互联网地址,因此也可W根据需求而不必生成查询类)。被区分的DNS查询包的固定 部分和动态部分可W分别实现,W达到简化生成查询包的操作,并且能够快速地生成不同 的查询包的效果。
[0043] 针对分别实现的DNS查询包的固定部分和动态部分,发明人还认为,可W快速地生 成动态部分,并与固定部分组合成不同的DNS查询包。可W首先利用预处理的字符串并选择 顶级域的域名来组成随机域名,并且按照RFC1035的标准规范,将该随机域名格式化为查询 包所需的格式并设置查询类和查询类型。由此通过运样简单的操作,能够快速地生成不同 的动态部分,W用于随后与固定部分合并成不同的查询包。
[0044] 根据上述考虑,在本发明中,可W生成查询包的固定部分的固定包模板,经过预处 理形成所需数量的随机字符串,并准备所需数量的顶级域名和查询类型;然后通过随机组 合字符串作为二级域,选择顶级域后生成随机域名,并把该域名格式化为DNS查询包的格 式,来生成查询包的动态部分;最后把查询包的固定部分和动态部分组合在一起生成不同 的DNS查询包。由此,快速地生成DNS查询包。
[0045] 根据本发明的一个实施例,参考图1,生成DNS查询包的方法包括:
[0046] S1:进行预处理,确定需要的字符串、查询类型、顶级域。将初始的DNS查询包的数 量设置为0个。
[0047] 可W在预处理阶段生成不同的字符串W作为初始字符串,所需要的初始字符串的 数量关
其中,C表示在每秒中所需要的不同DNS查询包的数量,T表示需 要在时间T内不允许有重复的查询包,打表示查询类型的数量,Cd表示顶级域的数量。现有的 查询类型包括73种,其中包括部分特殊的查询类型,运些特殊的查询类为通过IP来查询域 名的PTR(反向查询)类型,因而不能用于本发明的通过预处理的字符串来生成域名的方法 中去。使用者可W避免采用特殊的查询类型,并确定所使用的查询类型的数量打。此外,使 用者还可W根据捜集的可用顶级域的数量来决定所采用的顶级域的数量Cd。
[004引根据本发明的一个实施例,为了能够生成不同的域名,每个初始字符串可W由数 字和大小写字母构成。例如,为了使得生成的域名更加随机,W防止DNS服务器对相同类型 的域名进行限速,可W使得初始字符串中的一半字符为数字,另一半字符为字母;如果初始 字符串的长度为奇数,则可W使字母数比数字数多一个。假设每个初始字符串的长度为M,M 的最小值由字符串的数量V决定,那么Μ的最小值Mmin满足数字和字母的组合数应该大于所 需字符串的数量,即满足表达5
。其中,巧为组合数运算 (a>b,巧?二X …UO ; 10表示' 0-9 '的10种数字,52表示'a-z '和' A-Z '的52种大小 写字母;当每个初始字符串由一半数字字符和一半大小写字母字符母组成时,所抽取的数 字数目Ln等于Mmin/2,所抽取的字母数目Ll等于Mmin/2。在运种情况下,可W从可存在的全部 砖、/ <邊种组合中选出V个初始字符串,W用于在随后的步骤中生成大量的不重复的随机 域名。
[0049] 根据本发明的一个实施例,可W将全部V个初始字符串分成两组(例如随机地平均 分组)。在随后的步骤中,可W从该两组初始字符串中分别抽取字符串并重新组合成新的用 于生成二级域的字符串,W用于生成大量的不重复的随机域名。
[0050] 根据本发明的一个实施例,可W从RFC1035对DNS规定的文件中,选择Ct个查询类 型(例如A、CNAME、S0A、NS等等),由于查询类型的种类为73种,因此打应小于74。并且,准备CD 个顶级域(例如com、cn、edu等等)。
[0051] S2:确定DNS查询包的固定部分,包括:标识、标志、问题数、资源记录数、授权资源 记录数和额外资源中的至少一个。
[0052] 参考DNS包的格式,标识、标志、问题数、资源记录数、授权资源记录数和额外资源 记录数的6个字段的字节数是固定的,因此可W将它们中的一个或多个作为DNS查询包的固 定部分。固定部分的所述6个字符均占2个字节。根据RFC1035的规定,可W为它们分别赋值:
[0053] 根据本发明的一个实施例,标识用于标识查询是否与响应匹配,其范围是0~ 65535,从该范围内选择标识的赋值。
[0054] 根据本发明的一个实施例,分别为标志所包含W下字段赋值:
[0055] QR字段Qbit),用于标识报文是查询还是响应。如果其作为查询报文则为0,如果 是响应报文则为1。由于本发明的方法用于生成的DNS查询包,所W为QR字段赋值1。
[0056] opcode字段(4bit),用于标识正向或反向查询。如果其作为标准查询,则为0,如果 是反向查询则为1,如果是服务器状态请求则是2。
[0057] AA字段(Ibit),用于标识是否为授权回答。如授权回答则为1,如否则为0。
[005引TC字段Qbit)用于标识数据包是否可W截断。如响应已超过512字节并已被截断 则为1,如否则为0。
[0059] RD字段Ubit)用于标识是否期望递归。如果期望递归查询则为1,如否则为0。
[0060] RA字段(Ibit)用于标识是否是递归;得到递归响应则为1,如否则为0。
[0061] 0字段(3bit),将其赋值为0。
[0062] 保留字段(4bit),即rcode字段,是表示响应的差错状态的返回码,通常为0和3。各 取值含义如下:
[0063] 0表示无差错;
[0064] 1表示格式差错;
[0065] 2表示问题在域名服务器上;
[0066] 3表示域参照问题;
[0067] 4表示查询类型不支持;
[0068] 5表示在管理上被禁止;
[0069] 6 到15 保留。
[0070] W上各个字段可W根据需求来赋值。
[0071] 查询问题数是查询问题的个数,其理论上的最大值为65535,最小值为1。根据本发 明的一个实施例,将查询问题数赋值为1。
[0072] 资源记录数为应答包的中响应的个数,根据本发明的一个实施例,将其赋值为0。
[0073] 授权资源记录数为权威域服务器响应的资源,根据本发明的一个实施例,因为是 查询包,将其赋值为0。
[0074] 额外资源记录数为其它应答的资源,根据本发明的一个实施例,因为是查询包,将 其赋值为0。
[0075] 本领域的技术人员应理解,生成DNS查询包的固定部分的步骤(即上述步骤S2)不 依赖于进行预处理的步骤(即上述步骤S1)的结果。因此在本发明的其它实施例中,还可W 不必在步骤S2前实施步骤S1,而仅在下文所将描述的将固定部分和动态部分合成DNS查询 包的步骤S5前完成步骤S2即可。
[0076] S3:判断当前查询包的个数是否达到所需要的个数,如果未达到所需的个数,则继 续步骤S4。
[0077] S4:确定DNS查询包的动态部分,即问题部分的查询类、查询类型、查询名。
[0078] 查询类通常是1,表示互联网类。在某些需求里会要求使用某种查询类型,如果没 有要求,则使用者自己决定使用73种查询类型中的哪几种。由此确定问题部分的查询类和 查询类型。
[0079] 根据本发明的一个实施例,为了生成问题部分的查询名,可W首先将在步骤S1中 确定的V个初始字符串所分成的两组中分别随机选取一个字符串,将运两个初始字符串连 接起来作为域名(查询名)的二级域,从而组成一个随机字符串。例如,将2000
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1