资产认定方法和计算机设备转让专利

申请号 : CN202311526504.2

文献号 : CN117278521B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚亮华聂海洲赵立

申请人 : 烽台科技(北京)有限公司

摘要 :

本申请公开了一种资产认定方法和计算机设备,属于计算机技术领域。该方法包括:获取待认定的网络地址;采用二分法从第一序列中确定目标值,第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,目标值为第一序列中满足预设条件的第一极限点;从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的;根据网络地址对应的待认定数值和目标内网地址区间,确定认定结果。无需遍历各个内网地址段,提高了资产认定效率。

权利要求 :

1.一种资产认定方法,其特征在于,所述方法包括:

获取待认定的网络地址,所述网络地址为目标设备的网络地址;

采用二分法从第一序列中确定目标值,所述第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,所述目标值为所述第一序列中满足预设条件的第一极限点;

从多个内网地址区间中,确定根据所述目标值构建的目标内网地址区间,所述多个内网地址区间由所述第一序列与第二序列依次一一对应构建得到的,所述第二序列是根据各个内网地址段的第二极限点进行排序得到的;所述各个内网地址段之间存在重叠和包含,所述多个内网地址区间中存在与所述内网地址段不一致的内网地址区间;

根据所述网络地址对应的待认定数值和所述目标内网地址区间,确定认定结果,所述认定结果指示所述目标设备是否属于所述目标对象的资产;

其中,所述采用二分法从第一序列中确定目标值之前,所述方法还包括:对所述网络地址进行映射,得到所述网络地址的待认定键值对;

根据所述待认定键值对的值对应的目标索引,在已知资产库的键值对中,确定与所述目标索引相同的索引所对应的至少一个目标键值对;所述已知资产库存储有至少一个已认定设备的网络地址;

若所述待认定键值对的键与所述至少一个目标键值对中任一键值对的键相同,则比对结果指示所述目标设备属于所述目标对象的已知资产;

若所述待认定键值对的键与所述至少一个目标键值对的键均不同,则所述比对结果指示所述目标设备不属于所述目标对象的已知资产;

在所述比对结果指示所述目标设备不属于所述目标对象的已知资产的情况下,执行采用二分法从第一序列中确定目标值的步骤。

2.如权利要求1所述的方法,其特征在于,所述方法还包括:

获取所述目标对象的所述多个内网地址段;

根据所述多个内网地址段中各个内网地址段的第一极限点构建第一数组,以及根据所述各个内网地址段的第二极限点构建第二数组;

对所述第一数组包括的多个第一极限点进行排序,得到所述第一序列,以及对所述第二数组包括的多个第二极限点进行排序,得到所述第二序列;

以所述第一序列中的第一极限点作为第一端点、所述第二序列中的第二极限点作为第二端点,依次一一对应构建所述多个内网地址区间。

3.如权利要求2所述的方法,其特征在于,所述根据所述多个内网地址段中各个内网地址段的第一极限点构建第一数组,以及根据所述各个内网地址段的第二极限点构建第二数组之前,所述方法还包括:对各个内网地址段的下限地址和上限地址分别进行整数类型转换,得到各个内网地址段的第一极限点和第二极限点;

其中,所述多个内网地址段包括第一内网地址段;

所述对各个内网地址段的下限地址和上限地址分别进行整数类型转换,得到各个内网地址段的第一极限点和第二极限点之前,所述方法还包括:若所述第一内网地址段仅包括一个内网地址,则将所述内网地址分别作为所述第一内网地址段的下限地址和上限地址;

若所述第一内网地址段的格式是常规格式,则将所述第一内网地址段的起始网络地址和终止网络地址分别作为所述第一内网地址段的下限地址和上限地址,所述常规格式指示从起始地址到终止地址的内网地址段;

若所述第一内网地址段的格式是子网掩码格式,则将所述第一内网地址段转换为所述常规格式,得到所述第一内网地址段的起始网络地址和终止网络地址,将所述第一内网地址段的起始网络地址和终止网络地址分别作为所述第一内网地址段的下限地址和上限地址。

4.如权利要求1‑3任一项所述的方法,其特征在于,所述采用二分法从第一序列中确定目标值,包括:确定所述第一序列的中间值作为所述目标值;

所述根据所述网络地址对应的待认定数值和所述目标内网地址区间,确定认定结果,包括:若所述待认定数值位于所述目标内网地址区间,则确定所述目标设备属于所述目标对象的资产;

若所述待认定数值不位于所述目标内网地址区间,且所述目标值是所述第一序列的目标极值,则确定所述目标设备不属于所述目标对象的资产;

若所述待认定数值不位于所述目标内网地址区间,且所述目标值不是所述目标极值,则将从所述目标值到所述目标极值的剩余序列的中间值作为下一个目标值,并返回至从所述多个内网地址区间中,确定根据所述目标值构建的目标内网地址区间的步骤。

5.如权利要求1‑3任一项所述的方法,其特征在于,所述采用二分法从第一序列中确定目标值,包括:根据所述网络地址对应的待认定数值,采用二分法从所述第一序列中确定所述目标值;其中,所述目标值是所述第一序列中小于或等于所述待认定数值的第一极限点中的最大值,或者所述第一序列中大于或等于所述待认定数值的第一极限点中的最小值;

所述根据所述网络地址对应的待认定数值和所述目标内网地址区间,确定认定结果,包括:若所述待认定数值位于所述目标内网地址区间内,则确定所述目标设备属于所述目标对象的资产;

若所述待认定数值不位于所述目标内网地址区间内,则确定所述目标设备不属于所述目标对象的资产。

6.如权利要求1‑3任一项所述的方法,其特征在于,所述方法还包括:获取至少一个已认定设备的网络地址;

对所述至少一个已认定设备的网络地址进行映射,得到至少一个键值对;所述至少一个键值对中各个值对应各自的索引,所述至少一个键值对中各个键分别对应于各个已认定设备的网络地址;

根据所述至少一个键值对,确定所述目标对象的已知资产库。

7.如权利要求1‑3任一项所述的方法,其特征在于,所述采用二分法从第一序列中确定目标值之前,所述方法还包括:根据预设地址规则对所述网络地址进行检查,确定检查结果;

在所述检查结果指示所述网络地址符合所述预设地址规则的情况下,执行采用二分法从第一序列中确定目标值的步骤;

在所述检查结果表示所述网络地址不符合预设地址规则的情况下,生成错误日志信息。

8.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1‑7任一项所述的方法。

说明书 :

资产认定方法和计算机设备

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种资产认定方法和计算机设备。

背景技术

[0002] 随着计算机技术的快速发展,服务器、个人计算机(Personal Computer,PC)等在各企业中使用越来越普遍,这些都构成了企业的资产。在实际应用中,需要对一个新的网络地址(Internet Protocol,IP)信息进行资产认定,判断该IP信息是否是企业的资产,从而实现资产管理。
[0003] 通常已知一个企业所申请的全部内网IP段,会根据设备发送的日志数据获取IP信息,通过判断IP信息是否在该企业的内网IP段中,从而对IP信息所属的设备是否属于该企业的资产进行认定。但内网IP段通常是很多IP段、甚至是单个IP组合起来的,如果每次从日志数据中获取到的IP信息都需要遍历全部内网IP段进行判断,将会耗费大量的资源性能,导致资产认定效率较低。

发明内容

[0004] 本申请提供了一种资产认定方法和计算机设备,提高了资产认定效率。所述技术方案如下:
[0005] 第一方面,提供了一种资产认定方法,所述方法包括:获取待认定的网络地址,所述网络地址为目标设备的网络地址;采用二分法从第一序列中确定目标值,所述第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,所述目标值为所述第一序列中满足预设条件的第一极限点;从所述多个内网地址区间中,确定根据所述目标值构建的目标内网地址区间,所述多个内网地址区间由所述第一序列与第二序列依次一一对应构建得到的,所述第二序列是根据各个内网地址段的第二极限点进行排序得到的;根据所述网络地址对应的待认定数值和所述目标内网地址区间,确定认定结果,所述认定结果指示所述目标设备是否属于所述目标对象的资产。
[0006] 第二方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的方法。
[0007] 本申请实施例提供了一种资产认定方法和计算机设备,根据本申请提供的方案,获取待认定的网络地址,网络地址为目标设备的网络地址;采用二分法从第一序列中确定目标值,第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,目标值为第一序列中满足预设条件的第一极限点;目标值可以是第一序列的中间值,或者,是第一序列中用于构建内网地址区间中最有可能包含待认定数值的值。从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的;根据网络地址对应的待认定数值和目标内网地址区间,确定认定结果,认定结果指示目标设备是否属于目标对象的资产。对于目标值是第一序列的中间值的情况,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则继续采用二分法在第一序列中查找下一个目标值,直至判断出其是目标对象的资产或者查找到第一序列的极值。对于目标值是第一序列中用于构建内网地址区间中最有可能包含待认定数值的值的情况,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则说明目标设备不属于目标对象的资产,完成认定过程。即,先找到一个最有可能包含待认定数值的内网地址区间的起始点或终止点,然后再判断待认定数值是否在以起始点或终止点构建的目标内网地址区间内。假设目标对象申请了N个内网IP段,N为正整数,传统资产认定过程,每次待认定的网络IP都需要遍历N个内网IP段,其时间复杂度为O(n),本方案无需遍历N个内网地址段,时间复杂度为O(lgn),从而降低了资源消耗,提高了资产认定效率。

附图说明

[0008] 图1是本申请实施例提供的一种资产认定方法的流程图;
[0009] 图2是本申请实施例提供的另一种资产认定方法的流程图;
[0010] 图3是本申请实施例提供的再一种资产认定方法的流程图;
[0011] 图4是本申请实施例提供的又一种资产认定方法的流程图;
[0012] 图5是本申请实施例提供的又一种资产认定方法的流程图;
[0013] 图6是本申请实施例提供的又一种资产认定方法的流程图;
[0014] 图7为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0015] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0016] 应当理解的是,本申请提及的“多个”是指两个或两个以上。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0017] 在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景和相关技术予以说明。
[0018] 传统资产认定(也可以称为资产发现)的方案中,通常都是根据日志数据中的IP信息与企业所申请的全部内网IP段进行对比,如果IP信息在内网IP段中,将会自动将该IP信息对应的设备认定为企业的内部资产。但传统的资产认定过程,每次IP信息的认定都需要遍历内网IP段,其时间复杂度为O(n),非常影响程序的性能,导致资产认定效率较低。
[0019] 本申请实施例提供的资产认定方案可以应用于态势感知的业务中,可以在已知全部内网IP段时,快速判断一个新的IP信息是否在内网IP段中。
[0020] 本申请实施例提供了一种资产认定方法,如图1所示,图1是本申请实施例提供的一种资产认定方法的流程图,应用于计算机设备中,该资产认定方法包括:
[0021] S101、获取待认定的网络地址,网络地址为目标设备的网络地址。
[0022] 待认定的网络地址是一个新的IP信息,网络地址可以是源IP或目的IP。源IP表示该条信息是来自于哪个设备,目的IP表示该条信息是去往哪个设备。
[0023] 本申请实施例中,用于执行该资产认定方法的计算机设备获取日志信息,可以通过IP对应的正则表达式,尝试从日志信息获取源IP信息或目的IP信息。若日志信息没有源IP信息或目的IP信息,则直接跳过。若从日志信息获取到源IP信息或目的IP信息,则执行资产认定过程。
[0024] 在一些实施例中,在 S101之后,该资产认定方法还可以包括以下步骤:对网络地址进行整数(int)类型转换,得到待认定数值。
[0025] 由于下述的第一序列和第二序列是int数组排序后得到的,其包括int数值,因此,在获取网络地址之后,将网络地址转换成int类型。有利于后续对待认定数值和第一序列中的int数值进行比较,从而查找到目标值,以及有利于后续对待认定数值与内网地址区间的端点进行比较。并且,第一序列和第二序列采用int数值的形式进行存储,可以减少占用资源,提高资源利用率。
[0026] S102、采用二分法从第一序列中确定目标值,第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,目标值为第一序列中满足预设条件的第一极限点。
[0027] 本申请实施例中,目标对象可以是企业、公司等需要使用内网IP段的用户,这些用户通常会申请一个或多个内网IP段。内网IP段表示内部网络地址段,一个内网IP段包括多个连续的内网IP,例如,172.13.1.1‑192.12.12.12。
[0028] 考虑到内网IP段的连续性,可以将内网IP段中下限IP和上限IP转换成int类型,从而将内网IP段转换成int数组的集合。第一极限点可以表示内网IP段的下限地址转换的int数值,或者表示内网IP段的上限地址转换的int数值。将目标对象所申请的多个内网IP段中各个内网IP段的第一极限点集合在一起,构成int数组,并对int数组中的int数值进行升序或降序排列,得到第一序列。
[0029] 采用二分法从第一序列中确定目标值,目标值可以是第一序列的中间值。或者,目标值是第一序列中用于构建内网地址区间中最有可能包含待认定数值的值。示例性的,若第一序列是排序后的下限地址集合,第一极限点为下限点,则目标值是第一序列中小于或等于待认定数值的第一极限点(其为int数值)中的最大值。若第一序列是排序后的上限地址集合,第一极限点为上限点,则目标值是第一序列中大于或等于待认定数值的第一极限点(其为int数值)中的最小值。
[0030] 预设条件可以是指目标值是待查找序列的中间值,待查找序列可以是第一序列,或者,是从目标值到第一序列的最大值构成的剩余序列,或者,是从目标值到第一序列的最小值构成的剩余序列。预设条件可以是指目标值是第一序列中小于或等于待认定数值中的最大值,或者,目标值是第一序列中大于或等于待认定数值中的最小值。
[0031] S103、从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的。
[0032] 将各个内网IP段的第二极限点集合在一起,构成int数组,并对int数组中的int数值进行升序或降序排列,得到第二序列。
[0033] 第一极限点和第二极限点是两个相反的极限点。一种情况下,第一极限点表示内网IP段的下限地址转换的int数值,第二极限点表示内网IP段的上限地址转换的int数值;相对应的,第一序列是将各个内网IP段的最小值(Min)排序后得到的,第二序列是将各个内网IP段的最大值(Max)排序后得到的。另一种情况下,第一极限点表示内网IP段的上限地址转换的int数值,第二极限点表示内网IP段的下限地址转换的int数值;相对应的,第一序列是将各个内网IP段的Max值排序后得到的,第二序列是将各个内网IP段的Min值排序后得到的。
[0034] 第一序列所包括的第一极限点与第二序列所包括的第二极限点,两者的排序方式和数量一致。在构建第一序列和第二序列之后,以第一序列中排序后的第一极限点为第一端点,以第二序列中排序后的第二极限点为第二端点,一一对应构建内网地址区间。例如,第一序列中的第一个点与第二序列中的第一个点构建一个内网地址区间,以此类推,可以构建多个内网地址区间。
[0035] 其中,作为一个示例,构建的内网地址区间包括以下两种实现情况:
[0036] 第一种实现情况,第一极限点是下限点、第二极限点是上限点,第一端点是内网地址区间的起始点,第二端点是内网地址区间的终止点。第二种实现情况,在第一极限点是上限点、第二极限点是下限点的情况下,第一端点是内网地址区间的终止点,第二端点是内网地址区间的起始点。
[0037] 目标值是第一序列中的第一极限点,在多个内网地址区间中,确定以目标值为第一端点的目标内网地址区间。
[0038] 作为一个示例,目标内网地址区间包括以下两种实现情况:
[0039] 第一种实现情况,第一极限点是下限点、第二极限点是上限点,相对应的,第一端点是起始点,在多个内网地址区间中确定以目标值为起始点的内网地址区间,将其作为目标内网地址区间。第二种实现情况,第一极限点是上限点、第二极限点是下限点,相对应的,第一端点是终止点,在多个内网地址区间中确定以目标值为终止点的内网地址区间,将其作为目标内网地址区间。
[0040] S104、根据网络地址对应的待认定数值和目标内网地址区间,确定认定结果,认定结果指示目标设备是否属于目标对象的资产。
[0041] 对网络地址进行整数类型转换,得到待认定数值。通过判断待认定数值和目标内网地址区间的第二端点之间的关系,判断待认定数值是否在目标内网地址区间。
[0042] 作为一个示例,根据网络地址对应的待认定数值和目标内网地址区间,确定认定结果包括以下两种实现情况:
[0043] 第一种实现情况:在第一极限点是下限点、第二极限点是上限点的情况下,第一端点是内网地址区间的起始点,第二端点是内网地址区间的终止点。该情况下,当待认定数值小于或等于目标内网地址区间的第二端点时,判断出待认定数值在目标内网地址区间内,确定目标设备属于目标对象的资产的认定结果;当待认定数值大于目标内网地址区间的第二端点时,判断出待认定数值不在目标内网地址区间内,确定目标设备不属于目标对象的资产的认定结果。
[0044] 第二种实现情况:在第一极限点是上限点、第二极限点是下限点的情况下,第一端点是内网地址区间的终止点,第二端点是内网地址区间的起始点。该情况下,当待认定数值大于或等于目标内网地址区间的第二端点时,判断出待认定数值在目标内网地址区间内,确定目标设备属于目标对象的资产的认定结果;当待认定数值小于目标内网地址区间的第二端点时,判断出待认定数值不在目标内网地址区间内,确定目标设备不属于目标对象的资产的认定结果。
[0045] 作为一个示例,认定过程包括以下两种实现情况:
[0046] 第一种实现情况:在第一序列中采用二分法查找目标值,目标值是第一序列的中间值,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则继续采用二分法在第一序列中查找下一个目标值,判断待认定数值是否在下一个目标值构建的目标内网地址区间内,直至判断出其是目标对象的资产或者查找到第一序列的极值。
[0047] 第二种实现情况:目标值是第一序列中用于构建的内网地址区间中最有可能包含待认定数值的值,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则说明目标设备不属于目标对象的资产,完成认定过程。即,先找到一个最有可能包含待认定数值的内网地址区间的起始点或终止点,然后再判断待认定数值是否在以起始点或终止点构建的目标内网地址区间内。
[0048] 假设目标对象申请了N个内网IP段,N为正整数,传统资产认定过程,每次待认定的网络IP都需要遍历N个内网IP段,其时间复杂度为O(n)。本方案无需遍历N个内网地址段,上述第一种实现情况,采用二分法每次查找目标值,判断待认定数值是否在目标值所构建的目标内网地址区间内,以此循环查找和判断步骤,直至判断出其是目标对象的资产或者查找到第一序列的极值,时间复杂度为O(lgn)。上述第二种实现情况,采用二分法直接查找到一个目标值,进而判断待认定数值是否在目标值所构建的目标内网地址区间内,时间复杂度为O(lgn) ,降低了查找复杂度。从而降低了资源消耗,提高了资产认定效率。
[0049] 本示例通过将IP与int类型进行结合,将内网IP段转换成int数组,通过对int数组重新定义,即,对包括最小值的int数组以及包括最大值的int数组分别进行升序或降序排列,得到第一序列和第二序列。然后使用二分查找法对排序后的数组(即,序列)进行快速的检索,确定新的IP信息(即待认定的网络地址)是否在内网IP段中,使程序的时间复杂度从O(n)降到了O(lgn),大大提升了程序的运行效率。
[0050] 根据本申请提供的方案,获取待认定的网络地址,网络地址为目标设备的网络地址;采用二分法从第一序列中确定目标值,第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的,目标值为第一序列中满足预设条件的第一极限点;目标值可以是第一序列的中间值,或者,是第一序列中用于构建内网地址区间中最有可能包含待认定数值的值。从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的;根据网络地址对应的待认定数值和目标内网地址区间,确定认定结果,认定结果指示目标设备是否属于目标对象的资产。对于目标值是第一序列的中间值的情况,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则继续采用二分法在第一序列中查找下一个目标值,直至判断出其是目标对象的资产或者查找到第一序列的极值。对于目标值是第一序列中用于构建内网地址区间中最有可能包含待认定数值的值的情况,若待认定数值位于目标内网地址区间内,则说明目标设备属于目标对象的资产;若待认定数值不位于目标内网地址区间内,则说明目标设备不属于目标对象的资产,完成认定过程。即,先找到一个最有可能包含待认定数值的内网地址区间的起始点或终止点,然后再判断待认定数值是否在以起始点或终止点构建的目标内网地址区间内。假设目标对象申请了N个内网IP段,N为正整数,传统资产认定过程,每次待认定的网络IP都需要遍历N个内网IP段,其时间复杂度为O(n)。本方案无需遍历N个内网地址段,时间复杂度为O(lgn),从而降低了资源消耗,提高了资产认定效率。
[0051] 在一些实施例中,该资产认定方法还包括多个内网地址区间的构建过程。如图2所示,图2是本申请实施例提供的另一种资产认定方法的流程图。
[0052] S201、获取目标对象的多个内网地址段。
[0053] 多个内网地址段是目标对象申请的内网地址段,内网地址段可以包括多个内网IP,内网地址段可以是单个内网IP,其长度为1。
[0054] 在一些实施例中,在S201之后,该多个内网地址区间的构建过程还包括以下步骤:对各个内网地址段的下限地址和上限地址分别进行整数类型转换,得到各个内网地址段的第一极限点和第二极限点。
[0055] 对每个内网地址段的下限地址进行整数(int)类型的转换,以及对每个内网地址段的上限地址进行int类型的转换。
[0056] 作为一个示例,第一极限点和第二极限点包括以下两种实现情况:
[0057] 第一种实现情况,第一极限点可以是由内网IP段的下限地址转换得到的,是Min值,相对应的,第二极限点可以是由内网IP段的上限地址转换得到的,是Max值。也就是说,对各个内网地址段的下限地址进行整数类型转换,得到各个内网地址段的第一极限点,对各个内网地址段的上限地址分别进行整数类型转换,得到各个内网地址段的第二极限点。
[0058] 第二种实现情况,第一极限点可以是由内网IP段的上限地址转换得到的,是Max值,相对应的,第二极限点可以是由内网IP段的下限地址转换得到的,是Min值。也就是说,对各个内网地址段的上限地址进行整数类型转换,得到各个内网地址段的第一极限点,对各个内网地址段的下限地址分别进行整数类型转换,得到各个内网地址段的第二极限点。
[0059] 对于每个内网地址段,由于int数组关注的是Min值和Max值,第一序列和第二序列是对多个下限点和多个上限点进行排序后的序列,不关注内网IP段的中间点。因此,只需要对内网地址段的下限地址和上限地址分别进行整数类型转换即可,减少数据处理量,提高效率。
[0060] 在一些实施例中,多个内网地址段包括第一内网地址段;第一内网地址段是多个内网地址段中任一内网地址段。在确定第一极限点和第二极限点之前,该多个内网地址区间的构建过程还包括确定下限地址和上限地址的步骤,在此列举三个示例进行说明。示例一、若第一内网地址段仅包括一个内网地址,则将内网地址分别作为第一内网地址段的下限地址和上限地址;示例二、若第一内网地址段的格式是常规格式,则将第一内网地址段的起始网络地址和终止网络地址分别作为第一内网地址段的下限地址和上限地址,常规格式指示从起始地址到终止地址的内网地址段;示例三、若第一内网地址段的格式是子网掩码格式,则将第一内网地址段转换为常规格式,得到第一内网地址段的起始网络地址和终止网络地址,将第一内网地址段的起始网络地址和终止网络地址分别作为第一内网地址段的下限地址和上限地址。
[0061] 若第一内网IP段是单个内网IP,其长度为1,则将单个内网IP分别作为第一内网IP段的下限地址和上限地址。例如,若内网IP段格式为“172.13.1.122”,则将172.13.1.122分别作为下限地址和上限地址。
[0062] 若第一内网IP段是常规格式,即,包括多个连续的内网IP,常规格式指示从起始地址到终止地址的内网地址段,则将多个连续的内网IP的起始网络地址作为第一内网IP段的下限地址,将多个连续的内网IP的终止网络地址作为第一内网IP段上限地址。例如,内网IP段格式为“172.13.1.1‑192.12.12.12”,则将‘‑’左边的值(即,172.13.1.1)作为下限地址,将右边的值(即,192.12.12.12)作为上限地址。
[0063] 若第一内网IP段是子网掩码格式,则先将其转换成常规格式。第一内网IP段还可以是子网掩码的形式表示,例如,内网IP段格式是172.16.82.0/24,表示二进制的前24位不动,表示的IP范围为172.16.82.0‑172.16.82.255。例如,内网IP段格式是172.13.1.1/16,表示二进制的前16位不动,表示的IP范围为172.13.1.1‑172.13.255.255。若内网IP段格式为“172.13.1.1/16”,则先将其转换为以‘‑’划分的格式,也就是转换成172.13.1.1‑172.13.255.255,172.13.1.1作为下限地址,将172.13.255.255作为上限地址。
[0064] 本申请实施例中,内网地址段可以是常规格式、子网掩码格式,内网地址段还可以是单个内网IP。在构建第一序列和第二序列时,对特殊的内网地址段进行转换,将其转换成常规格式,使得第一序列和第二序列所包括的int数值的数量一致,以便继续执行构建多个内网地址区间的步骤,提高了应用场景的适用性。
[0065] S202、根据多个内网地址段中各个内网地址段的第一极限点构建第一数组,以及根据各个内网地址段的第二极限点构建第二数组。
[0066] 将各个内网地址段的第一极限点集合在一起,构建第一数组;将各个内网地址段的第二极限点集合在一起,构建第二数组。
[0067] 作为一个示例,第一数组和第二数组包括以下两种实现情况:
[0068] 第一种实现情况,第一极限点是由内网IP段的下限地址转换得到的、第二极限点是由内网IP段的上限地址转换得到的;相对应的,第一数组是Min值的集合,第二数组是Max值的集合。第二种实现情况,第一极限点是由内网IP段的上限地址转换得到的、第二极限点是由内网IP段的下限地址转换得到的;相对应的,第一数组是Max值的集合,第二数组是Min值的集合。
[0069] S203、对第一数组包括的多个第一极限点进行排序,得到第一序列,以及对第二数组包括的多个第二极限点进行排序,得到第二序列。
[0070] 对第一数组包括的多个第一极限点进行升序或降序排列,得到第一序列。对第二数组包括的多个第二极限点进行升序或降序排列,得到第二序列。第一序列和第二序列的排序方式一致,第一序列和第二序列所包括的极限点的数量一致。
[0071] 作为一个示例,第一序列和第二序列包括以下两种实现情况:
[0072] 第一种实现情况,第一数组是Min值的集合、第二数组是Max值的集合;相对应的,第一序列是将各个内网IP段的Min值排序后得到的,第二序列是将各个内网IP段的Max值排序后得到的。第二种实现情况,第一数组是Max值的集合、第二数组是Min值的集合;相对应的,第一序列是将各个内网IP段的Max值排序后得到的,第二序列是将各个内网IP段的Min值排序后得到的。
[0073] S204、以第一序列中的第一极限点作为第一端点、第二序列中的第二极限点作为第二端点,依次一一对应构建多个内网地址区间。
[0074] 在构建第一序列和第二序列之后,以第一序列中排序后的第一极限点为第一端点,以第二序列中排序后的第二极限点为第二端点,一一对应构建内网地址区间。例如,第一序列中的第一个点与第二序列中的第一个点构建一个内网地址区间,以此类推,可以构建多个内网地址区间。
[0075] 其中,作为一个示例,第一端点和第二端点包括以下两种实现情况:
[0076] 第一种实现情况,第一极限点是下限点、第二极限点是上限点,第一端点是内网地址区间的起始点,第二端点是内网地址区间的终止点。第二种实现情况,在第一极限点是上限点、第二极限点是下限点的情况下,第一端点是内网地址区间的终止点,第二端点是内网地址区间的起始点。
[0077] 示例性,以第一极限点是下限点、第二极限点是上限点、升序排序为例对构建多个内网地址区间进行说明。初始化两个int类型的切片(即,数组):ip Segment Collect Min和ip Segment Collect Max,ip Segment Collect Min用来存放多个内网IP段中每一内网IP段的最小值,ip Segment Collect Max用来存放多个内网IP段中每一内网IP段的最大值。从数据库中获取企业内网IP段(即,目标对象的多个内网地址段),以map数组的形式进行存储,每一个map都是企业的某一内网IP段信息。遍历map数组,若内网IP段格式为常规格式,例如,“172.13.1.1‑192.12.12.12”,则将‘‑’左边的值转换成int类型,加入ip Segment Collect Min中,将‘‑’右边的值转换成int类型,加入ip Segment Collect Max中。若内网IP段格式为单个内网IP,例如,“172.13.1.122”,则将该值转换成int类型,并分别存放到ip Segment Collect Min和ip Segment Collect Max中。若内网IP段为子网掩码格式,例如,“172.13.1.1/16”,则先将其转换为以‘‑’划分的格式,也就是转换成172.13.1.1‑172.13.255.255,然后将‘‑’左边的值转换成int类型,加入ip Segment Collect Min中,将‘‑’右边的值转换成int类型,加入ip Segment Collect Max中。在遍历完全部的map数组之后,对ip Segment Collect Min切片与ip Segment Collect Max切片分别进行升序排序操作,得到第一序列和第二序列。排序完成后,初始化一个二维数组AraAsset Ip Segment,长为ip Segment Collect Min切片的长度(ip Segment Collect Min切片的长度和ip Segment Collect Max切片的长度相同),宽为2。将排序后的ip Segment Collect Min(即,第一序列)和排序后的ip Segment Collect Max(即,第二序列)的数据依次存放到其中,虽然这个过程中用到了排序,但只是在程序初始化时进行的操作,并不会影响程序运行时的性能。
[0078] 本示例中是对多个内网IP段的下限地址和上限地址进行int类型的转换后进行存储,减少了存储地址的数量,并以int类型存储,减少了存储空间,提高了资源利用率。
[0079] 本申请提供的快速进行资产认定的算法思路是考虑到内网IP段的连续性,可以将内网IP段的IP转换成int类型,从而将内网IP段转换成int数组的集合。其中,单个内网 IP也可以认为是一个长度为1的int数组。通过对int数组的集合进行排序,结合上述快速资产认定的算法,使其时间复杂度能够降低到O(lgn),能够将每次的识别时间大大缩短,从而提高程序的性能。
[0080] 在一些实施例中,基于图1,如图3所示,图3是本申请实施例提供的再一种资产认定方法的流程图,包括S301‑S308。
[0081] S301、获取待认定的网络地址,网络地址为目标设备的网络地址。
[0082] 本示例中S301与上述图1中S101一致,其实现过程和所达到的技术效果可参见上述图1,在此不再赘述。
[0083] S302、确定第一序列的中间值作为目标值;第一序列是根据目标对象的多个内网地址段中各个内网地址段的第一极限点进行排序得到的。
[0084] 采用二分法在第一序列中查找目标值,在第一次查找时,将第一序列的中间值作为目标值。如果第一序列所包括第一极限点的数量是偶数时,查找的中间值的数量是两个。一种方式,将这两个中间值均作为目标值,相对应的,目标内网地址区间的数量为两个。另一种方式,选择这两个中间值任一中间值作为目标值。再一种方式,将两个中间值中与待认定数值相差较多的中间值作为目标值。对此本申请实施例不做限制。
[0085] S303、从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的。
[0086] 本示例中S303与上述图1中S103一致,其实现过程和所达到的技术效果可参见上述图1,在此不再赘述。
[0087] S304、判断待认定数值是否位于目标内网地址区间。
[0088] 若是,则执行S305,若否,则执行S306。
[0089] S305、若待认定数值位于目标内网地址区间,则确定目标设备属于目标对象的资产。
[0090] 其中,认定结果指示目标设备属于目标对象的资产。
[0091] 作为一个示例,认定过程包括以下两种实现情况:
[0092] 第一种实现情况,第一极限点是下限点、第二极限点是上限点,第一端点是内网地址区间的起始点,第二端点是内网地址区间的终止点。目标内网地址区间是以目标值为第一端点的内网地址区间。该情况下,当待认定数值小于或等于目标内网地址区间的第二端点时,说明待认定数值在目标内网地址区间内,认定结果指示目标设备属于目标对象的资产;当待认定数值大于目标内网地址区间的第二端点时,说明待认定数值不在目标内网地址区间内,认定结果指示目标设备不属于目标对象的资产。
[0093] 第二种实现情况,在第一极限点是上限点、第二极限点是下限点的情况下,第一端点是内网地址区间的终止点,第二端点是内网地址区间的起始点。目标内网地址区间是以目标值为第二端点的内网地址区间。该情况下,当待认定数值大于或等于目标内网地址区间的第二端点时,说明待认定数值在目标内网地址区间内,认定结果指示目标设备属于目标对象的资产;当待认定数值小于目标内网地址区间的第二端点时,说明待认定数值不在目标内网地址区间内,认定结果指示目标设备不属于目标对象的资产。
[0094] S306、判断目标值是否是第一序列的目标极值。
[0095] 若是,则执行S307,若否,则执行S308。
[0096] S307、若待认定数值不位于目标内网地址区间,且目标值是第一序列的目标极值,则确定目标设备不属于目标对象的资产。
[0097] 其中,认定结果指示目标设备不属于目标对象的资产。
[0098] 目标极值可以是第一序列中第一个第一极限点或最后一个第一极限点,即,目标极值可以是第一序列中多个第一极限点中的最小值或最大值。当待认定数值不位于目标内网地址区间内、且目标值是第一序列的目标极值时,说明已经没有可以查找的内网地址区间,可以认定目标设备不属于目标对象的资产。
[0099] S308、若待认定数值不位于目标内网地址区间,且目标值不是目标极值,则将从目标值到目标极值的剩余序列的中间值作为下一个目标值,并返回至从多个内网地址区间中,确定根据目标值构建的目标内网地址区间的步骤,即,返回至S303。
[0100] 在一些实施例中,在目标值小于待认定数值的情况下,目标极值为第一序列的最大值;在目标值大于待认定数值的情况下,目标极值为第一序列的最小值。
[0101] 当待认定数值不位于目标内网地址区间内、且目标值不是第一序列的目标极值时,说明还存在可以查找的内网地址区间。基于此,继续从目标值到目标极值的剩余序列中查找下一个目标值,下一个目标值是剩余序列的中间值。重复执行上述S303‑S308。
[0102] 其中,在目标值小于待认定数值时,目标极值为第一序列的最大值,剩余序列表示从目标值到第一序列的最大值构成的序列。在目标值大于待认定数值时,第一序列的剩余序列表示从第一序列的最小值到目标值构成的序列。
[0103] 上述S305、S307和S308是并列方案,在S303之后,可以执行S305,或者执行S307,或者执行S308。
[0104] 本示例中,获取待认定的网络地址;确定第一序列的中间值作为目标值;在多个内网地址区间中确定以目标值作为第一端点的第一内网地址区间。根据待认定数值和第一内网地址区间的第二端点确定认定结果;在认定结果指示目标设备不属于目标对象的资产的情况下,继续根据目标值和待认定数值之间的大小关系,在第一序列的剩余序列中确定下一个目标值。在多个内网地址区间中确定以下一个目标值作为第一端点的第二内网地址区间;根据待认定数值和第二内网地址区间的第二端点确定认定结果,直至达到预设条件。其中,目标内网地址区间包括第一内网地址区间和第二内网地址区间。预设条件为认定结果指示目标设备属于目标对象的资产,或者,待认定数值不在以第一序列的最小值作为第一端点的内网地址区间内,或者,待认定数值不在以第一序列的最大值作为第一端点的内网地址区间内。本示例无需遍历N个内网地址段,时间复杂度为O(lgn),从而降低了资源消耗,提高了资产认定效率。
[0105] 在一些实施例中,基于图1,如图4所示,图4是本申请实施例提供的又一种资产认定方法的流程图,包括S401‑S406。
[0106] S401、获取待认定的网络地址,网络地址为目标设备的网络地址。
[0107] 本示例中S401与上述图1中S101一致,其实现过程和所达到的技术效果可参见上述图1,在此不再赘述。
[0108] S402、根据网络地址对应的待认定数值,采用二分法从第一序列中确定目标值;其中,目标值是第一序列中小于或等于待认定数值的第一极限点中的最大值,或者第一序列中大于或等于待认定数值的第一极限点中的最小值。
[0109] 在一些实施例中,在第一极限点为下限点、第二极限点为上限点的情况下,目标值是第一序列中小于或等于待认定数值的第一极限点中的最大值;在第一极限点为上限点、第二极限点为下限点的情况下,目标值为第一序列中大于或等于待认定数值的第一极限点中的最小值。
[0110] 作为一个示例,构建的目标内网地址区间包括以下两种实现情况:
[0111] 第一种实现情况,第一极限点为下限点、第二极限点为上限点,在第一序列采用二分法查找与待认定数值最接近、且小于或等于待认定数值的目标值。进而在多个内网地址区间找到以目标值为第一端点(作为起始点)构建的目标内网地址区间,然后判断待认定数值是否位于目标内网地址区间内。
[0112] 第二种实现情况,第一极限点为上限点、第二极限点为下限点,在第一序列采用二分法查找与待认定数值最接近、且大于或等于待认定数值的目标值。进而在多个内网地址区间找到以目标值为第一端点(作为终止点)构建的目标内网地址区间,然后判断待认定数值是否位于目标内网地址区间内。
[0113] 上述两种实现方式均无需遍历目标对象的所有内网地址段,降低了查找复杂度,提高了资产认定效率。
[0114] S403、从多个内网地址区间中,确定根据目标值构建的目标内网地址区间,多个内网地址区间由第一序列与第二序列依次一一对应构建得到的,第二序列是根据各个内网地址段的第二极限点进行排序得到的。
[0115] 本示例中S403与上述图1中S103一致,其实现过程和所达到的技术效果可参见上述图1,在此不再赘述。
[0116] S404、判断待认定数值是否位于目标内网地址区间。
[0117] 若是,则执行S405,若否,则执行S406。
[0118] S405、若待认定数值位于目标内网地址区间内,则确定目标设备属于目标对象的资产。
[0119] S406、若待认定数值不位于目标内网地址区间内,则确定目标设备不属于目标对象的资产。
[0120] 本示例中S405与S406为并列方案,在S403之后,可以执行S405或执行S406。
[0121] 作为一个示例,认定过程包括以下两种实现情况:
[0122] 第一种实现情况,第一极限点是下限点、第二极限点是上限点,第一端点是内网地址区间的起始点,第二端点是内网地址区间的终止点。目标内网地址区间是以目标值为第一端点的内网地址区间。该情况下,当待认定数值小于或等于目标内网地址区间的第二端点时,说明待认定数值在目标内网地址区间内,认定结果指示目标设备属于目标对象的资产;当待认定数值大于目标内网地址区间的第二端点时,说明待认定数值不在目标内网地址区间内,认定结果指示目标设备不属于目标对象的资产。
[0123] 第二种实现情况,在第一极限点是上限点、第二极限点是下限点的情况下,第一端点是内网地址区间的终止点,第二端点是内网地址区间的起始点。目标内网地址区间是以目标值为第二端点的内网地址区间。该情况下,当待认定数值大于或等于目标内网地址区间的第二端点时,说明待认定数值在目标内网地址区间内,认定结果指示目标设备属于目标对象的资产;当待认定数值小于目标内网地址区间的第二端点时,说明待认定数值不在目标内网地址区间内,认定结果指示目标设备不属于目标对象的资产。
[0124] 本示例中,通过二分法查找和一次判断即可完成认定过程,需遍历N个内网地址段,时间复杂度由O(n)变为O(lgn),降低了查找复杂度,降低了资源消耗,提高了资产认定效率。
[0125] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
[0126] 示例性的,以上述二维数组AraAsset Ip Segment为例进行说明,将内网IP段转换成一个二维int数组(即,AraAsset Ip Segment),这个二维数组代表着AraAsset Ip Segment[m][0]是第m个内网IP段的最小值,AraAsset Ip Segment[m][1]是第m个内网IP段的最大值。当内网IP段的最小值按照升序排序时,内网IP段的最大值也同样按照升序排序。
[0127] 内网IP段的Min值和Max值的排序方式一致、且两者分别进行升序的技术效果,可以通过对比以下方案进行说明。如果只有内网IP段的Min值或Max值升序,并存储Min值和Max值之间对应关系,会存在一个问题。例如,对于二维数组:1‑200、5‑10、10‑60,待认定数值是70,待认定数值应该是在1‑100这个数组中,但是采用二分法之后,先是在5‑10里面找,没找到,70比5大,所以接下来是在10‑60里面找,还是找不到,认定其不是企业资产。本示例中,将内网IP段的最小值按照升序排序,并且内网IP段的最大值按照升序排序,上述二维数组应是:1‑10、5‑60、10‑200,待认定数值是70,采用二分查找法进行查询,先是在5‑60里面找,没找到,70比5大,所以接下来是在10‑200里面找,可以认定其是企业资产,不会出现错误。
[0128] 接下来,以上述二维数组AraAsset Ip Segment为例进行说明,采用二分法(即,二分查找法)实现的资产认定方法的步骤如下所示,其时间复杂度为O(lgn)。
[0129] //查询给定的IP值是否在范围内
[0130] func isInTheRange(ipInt*big.Int,ipSegmentCollect[][2]*big.Int)bool{[0131] //二分法查找,效率更高
[0132] left:=0
[0133] right:=len(ipSegmentCollect)‑1
[0134] for{
[0135] if left<=right{
[0136] //取中间的数
[0137] mid:=left+( right‑left)>>1
[0138] //ipInt比这个地方的最小值小,找左边
[0139] if ipInt.Cmp(ipSegmentCollect[mid][0])<0{
[0140] right=mid‑1
[0141] } else If ipInt.Cmp(ipSegmentCollect[mid][1])<0{
[0142] // ipInt比这个地方的最大值大,找右边
[0143] left=mid+1
[0144] }else :ture
[0145] } else :false
[0146] }
[0147] }
[0148] 本示例中,以上述二维数组AraAsset Ip Segment为例进行说明,作为一个示例,认定过程包括以下两种实现情况:
[0149] 第一种实现情况,采用二分法在升序后的Min值的里面找中间值(即,目标值),判断待认定数值是否在以中间值为第一端点构成的内网IP区间中。若是,则待认定数值对应的目标设备属于目标对象的资产;若否,根据待认定数值和中间值之间的大小关系继续在上游或下游找下一个中间值(即,下一个目标值),判断待认定数值是否在以下一个中间值为第一端点构成的内网IP区间中,以此循环,直至判断出目标设备属于目标对象的资产,或者查找到升序后的Min值中的最大值或最小值。
[0150] 第二种实现情况,采用二分法在升序后的Min值的里面直接找到最接近、且小于或等于待认定数值的值,然后判断待认定数值是否在以该值为第一端点构成的内网IP区间中。 若是,则说明目标设备属于目标对象的资产;若否,则说明目标设备不属于目标对象的资产。
[0151] 其中,在查找下一个目标值时,是通过比较待认定数值与目标值之间的大小关系进行查找,若待认定数值大于目标值,则在下游进行下一个目标值的查找,即,待认定数值(ipInt)比这个地方的最大值大,找右边。若待认定数值小于目标值,则在上游进行下一个目标值的查找,即,待认定数值(ipInt)比这个地方的最小值小,找左边。
[0152] 需要说明的,上述两种实现方式也可以反着来,即从升序后的Max值的里面去找。上述Min值和Max值的排序方式也可以是降序。对此本申请实施例不做限制。
[0153] 上述两种实现方式的时间复杂度均为O(lgn),均降低了查找复杂度,提高了资产认定效率。进一步的,对于遍历的同时还进行判断(即,一次循环过程包括:查找中间值和判断是否在网络IP区间)的资产认定方式,还具有以下技术效果:可以减少遍历的次数。例如,对于待认定数值是50,二维数组包括:1‑10、5‑60、7‑100,第一次是在5‑60中判断,即可判断为企业资产,相较于先遍历到一个目标值、后进行判断的资产认定方式,需要先遍历到7‑100,然后判断其为企业资产。由于遍历所耗费资源比判断所耗费资源多,因此,该遍历的同时还进行判断的方式还降低了资源消耗。但是,对于先遍历到一个目标值、后进行判断的资产认定方式,可以减少判断次数,也可以提高资产认定效率。
[0154] 在一些实施例中,在上述图1中S102之后、或者上述图3中S302之后、或者图4中S402之后,该资产认定方法还可以包括以下步骤:若目标值等于待认定数值,则确定目标设备属于目标对象的资产。
[0155] 本申请实施例中,如果目标值等于待认定数值,无需执行后续的S103‑S104、后续的S303‑S308、后续的S403‑S406,直接确定目标设备属于目标对象的资产,提高了资产认定效率。当然,如果目标值等于待认定数值,也可以按照图1、图3和图4的流程顺序执行,图1、图3和图4的技术方案具有普适性。
[0156] 在一些实施例中,基于图1‑图4,如图5所示,图5是本申请实施例提供的又一种资产认定方法的流程图。在上述图1中S102之前、或者上述图3中S302之前、或者图4中S402之前,该资产认定方法还可以包括以下步骤。
[0157] S501、将网络地址与目标对象的已知资产库进行比对,得到比对结果;比对结果指示目标设备是否属于目标对象的已知资产,已知资产库存储有至少一个已认定设备的网络地址。
[0158] 在一些实施例中,上述图5中S501可以通过以下方式实现。对网络地址进行映射,得到网络地址的待认定键值对;根据待认定键值对的值对应的目标索引,在已知资产库的键值对中,确定与目标索引相同的索引所对应的至少一个目标键值对;若待认定键值对的键与至少一个目标键值对中任一键值对的键相同,则比对结果指示目标设备属于目标对象的已知资产;若待认定键值对的键与至少一个目标键值对的键均不同,则比对结果指示目标设备不属于目标对象的已知资产。
[0159] 本示例中,目标对象的已知资产库是通过以下方式构建:将目标对象的每个已认定内网地址进行映射得到哈希值,然后对各个哈希值建立索引(例如,根据哈希值计算出对应的数组下标),一个索引可以对应多个哈希值。已知资产库可以采用键值对的方式进行存储,键表示已认定内网地址,即,键与已认定内网地址相对应,值表示哈希值,并以索引的形式存储在map数组中。
[0160] 在对一个新的IP信息(即,待认定的网络地址)与已知资产库进行比对时,对该IP信息进行映射,确定IP信息的键值对(即,待认定键值对)。对待认定键值对的值建立索引(例如,根据待认定键值对的值计算出对应的数组下标),得到目标索引。在已知资产库中,找到与目标索引相同的索引,为便于区别,将该索引对应的键值对称为目标键值对。遍历该索引所对应的至少一个目标键值对,判断是否有与待认定键值对的键一致的目标键值对,若至少一个目标键值对中存在与待认定键值对的键一致的目标键值对,则说明IP信息为目标对象的资产。若至少一个目标键值对中不存在与待认定键值对的键一致的目标键值对,则说明IP信息不是目标对象的资产。
[0161] 以上实现方式,可以在新的IP信息来临时,以O(1)的时间复杂度快速查询该IP信息是否为已知资产,若为已知资产,则不需要在和目标对象的多个内网地址段进行对比判断,直接进行下一个新的IP信息的认定过程,提高认定效率。
[0162] S502、在比对结果指示目标设备不属于目标对象的已知资产的情况下,执行采用二分法从第一序列中确定目标值的步骤。
[0163] 当比对结果指示目标设备不属于目标对象的已知资产时,继续执行上述图1中S102‑S104,或者执行上述图3中S302‑S308,或者执行上述图4中S402‑S406。
[0164] 将已认定的网络地址作为目标对象的已知资产,基于此,可以构建目标对象的已知资产库。在对一个新的IP信息(即,待认定的网络地址)进行资产认定之前,先将网络地址与已知资产库中的已知资产进行比对,判断网络地址是否已经被认定过了。如果该网络地址被认定过了(属于目标对象的已知资产),就不需要再次重复执行认定过程,直接进行下一个新的IP信息的认定过程。如果该网络地址未被认定过(不属于目标对象的已知资产),再对该网络地址执行认定过程。通过与已知资产库的对比过程,可以减少重复认定,提高认定效率。
[0165] 在一些实施例中,该资产认定方法还可以包括目标对象的已知资产库的构建过程。获取至少一个已认定设备的网络地址;对至少一个已认定设备的网络地址进行映射,得到至少一个键值对;至少一个键值对中各个值对应各自的索引,至少一个键值对中各个键分别对应于各个已认定设备的网络地址;根据至少一个键值对,确定目标对象的已知资产库。
[0166] 本申请实施例中,已认定设备的网络地址(以下称为已认定网络地址)用于指示已被认定为目标对象的资产的内网地址。目标对象的已认定设备的网络地址的数量可以是一个或多个。已知资产库可以是一个map数组,是对一个或多个已认定网络进行map方法的运算后得到的。
[0167] 本示例中,在构建目标对象的已知资产库时,可以对已认定网络地址进行哈希运算(Hash Function),将已认定网络地址映射为键值对,一个键值对中的键表示已认定网络地址。对各个键值对中的值(也就是哈希值)建立索引(例如,根据哈希值计算出对应的数组下标),一个索引可以对应多个哈希值。对于索引相同的多个键值对,其索引可以是1、0等,索引1或0表示网络地址是已认定的网络地址。将一个或多个键值对以索引的形式存储在已知资产库中。
[0168] 示例性的,从数据库中读取企业已知的IP信息(即目标对象的一个或多个已认定内网地址),存放到一个map[string]int8中,map的名称可以为Ara Asset Detail,键是已知资产的IP信息,值对应的索引可以为1,代表该IP信息为企业的已知资产。上述map是多个键值对的集合,map[string]int表示一个字符串到整型的映射,map中的值是整型类型的,8
int8表示二进制位数,int8表示从0到2‑1。
[0169] 通过将已知的IP信息存放在内存(即已知资产库)中,可以在新的IP信息来临时,以O(1)的时间复杂度快速查询该IP信息是否为已知资产,提高资产认定效率。
[0170] 示例性的,以下以已知资产库存放在map为例对存储过程进行说明。map实现以O(1)时间复杂度进行查询的底层逻辑如下:map的数据结构是数组+链表的形式。map在初始化时会构建一个长度为8的数组,在插入一个新的键值对时,对键进行哈希算法,得到一个哈希值,根据哈希值计算出对应的数组下标(即,值对应的索引)。若数组下标对应的位置没有值,则在这个位置构建一个链表,并将这个键值对插入到链表头的位置;若数组下标对应的位置有值,则将这个键值对插入到对应链表的尾部;因此,一个数组下标可以对应多个键值对,也即,一个索引可以对应多个值。当链表达到一定长度时,会对数组长度进行扩容,从长度为8扩容到长度16,并对数组中的所有元素重新计算哈希值以及新的数组下标。
[0171] 当判断一个键(即,待认定键值对的键)是否存在于map中时,根据哈希算法对待认定的网络地址进行哈希运算,获取哈希值。并根据哈希值计算对应的数组下标,找到数组下标后,遍历对应位置的链表,查看每一个键值对中的键是否有与要判断的键(即,待认定键值对的键)一致。如果存在有一致的键,说明存在该键值对(即,待认定的网络地址是目标对象的已知资产)。如果遍历完链表也没有一致的键,说明不存在该键值对(即,待认定的网络地址不是目标对象的已知资产),此时就需要继续判断IP信息是否存在于目标对象的内网地址段中,即,继续执行上述图1中S102‑S104,或者执行上述图3中S302‑S308,或者执行上述图4中S402‑S406。
[0172] 在一些实施例中,在将至少一个已认定内网地址存储在已知资产库之前,还可以对至少一个已认定内网地址进行去重操作,得到去重后的已认定内网地址。根据去重后的已认定内网地址,确定目标对象的已知资产库。通过去重操作,提高获取数据的准确性。
[0173] 需要说明的是,如果对目标对象所申请的内网IP段均进行映射后存储在已知资产库中,会占用较大的存储空间。也即,由于如果将所有的内网IP段添加到map中,那么内网IP段中的每一个IP都需要添加到map中,对于内存空间的消耗将会极其庞大,因此,不能将所有的内网IP段都添加到map中。本示例中,将已被认定过的内网IP存储在已知资产库中,占用较少的存储空间,提高资源利用率。
[0174] 在一些实施例中,在上述图5中S501之后,该资产认定方法还包括以下步骤。在比对结果指示目标设备属于目标对象的已知资产的情况下,将网络地址添加在目标对象的已知资产库中。
[0175] 本示例中,在确定网络地址所对应的目标设备是目标对象的资产之后,将网络地址添加在目标对象的数据库中,并添加到目标对象的已知资产库中,重新开始执行获取下一网络地址的认定过程,提高已知资产库的全面性。
[0176] 在一些实施例中,基于图1‑图5,在上述图1中S102之前、或者上述图3中S302之前、或者图4中S402之前,该资产认定方法还可以包括以下步骤。根据预设地址规则对网络地址进行检查,确定检查结果;在检查结果指示网络地址符合预设地址规则的情况下,执行采用二分法从第一序列中确定目标值的步骤;在检查结果表示网络地址不符合预设地址规则的情况下,生成错误日志信息。
[0177] 在获取新的IP信息(即,待认定的网络地址)之后,还可以对该IP信息进行是否合理的判断,也就是检查该IP信息是否为一个合理的IP。本示例中,预设地址规则包括IPv4和IPv6的地址规则,通过判断网络地址是否符合预设地址规则,从而判断该IP信息是否属于IPv4或IPv6,确定检查结果。
[0178] 示例性的,对于IPv4,其对应的内网IP段是0.0.0.0‑255.255.255.255,可以通过判断IP信息是否存在于该内网IP段中。若存在,则说明该IP信息符合预设地址规则,是合理的IP,检查结果指示网络地址符合预设地址规则,继续执行资产认定过程。若不存在,则说明该IP信息不符合预设地址规则,是不合理的IP,检查结果指示网络地址不符合预设地址规则,生成错误日志信息。错误日志信息用于辅助运维人员进行判断,无需执行后续的认定过程。对于IPv6,其具有自己的地址规则,可以通过调用函数的方式判断IP信息是否符合预设地址规则,若符合IPv6的地址规则,则说明该IP信息是合理的IP;若不符合IPv6的地址规则,则说明该IP信息不是合理的IP。
[0179] 需要说明的是,本申请实施例还可以不仅判断日志信息中是否包括待认定的网络地址,还判断待认定的网络地址是否属于目标对象的已知资产,以及判断待认定的网络地址是否是合理的IP。在日志信息中包括待认定的网络地址的情况下,在判断出待认定的网络地址不属于目标对象的已知资产之后,还判断待认定的网络地址是否是合理的IP;或者,在判断出待认定的网络地址是合理的IP之后,还判断待认定的网络地址是否属于目标对象的已知资产。在判断出待认定的网络地址不属于目标对象的已知资产、且待认定的网络地址是合理的IP的情况下,执行上述图1、图3或图4所描述的资产认定方法。
[0180] 接下来,以名称为Ara Asset Detail的map数组进行说明,本示例可以通过以下程序代码实现对至少一个已认定内网地址的存储过程。
[0181] //GetAssetDetail 获取已知资产,即,获取至少一个已认定内网地址。
[0182] func(asset Detail Service*Asset Detail Service) Get Asset Detail () (result map[string]int8){
[0183] //初始化result
[0184] result = make(map[string]int8)
[0185] //资产以切片形式存储,其中,键为IP,值为IP的值
[0186] var asset []map[string]interface{}
[0187] //SQL语句(查出来的IP进行去重,虽然正常来说不会有重复,以防万一)[0188] Sql:=“select distinct ip from public.asset_detail”
[0189] //查询结果
[0190] if err:=global.AraPgsql.Raw(sql).Scan(&assets).Error;err!=nil{[0191] global. AraLog.Error(msg:“SQL语句执行错误,请检查”)
[0192] return result:nil
[0193] }else{
[0194] //结果绑定到assets上了,将其放到result上
[0195] for_,asset:=range assets{
[0196] //取出ip的值
[0197] if ipDetail,ok:=asset[“ip”];ok{
[0198] global. AraLog.Error(msg:“这个字段中没有IP的值,不合理,请检查”)[0199] return result:nil
[0200] }else{
[0201] //将interface类型转换为string类型,并保存到result中
[0202] result[fmt.Sprintf(“#{ipDetail}”)]=1
[0203] }
[0204] }
[0205] //返回结果
[0206] return result
[0207] }
[0208] }
[0209] 本示例中,从数据库中读取企业已知的IP信息(即目标对象的一个或多个已认定内网地址),对其进行去重之后,判断已知的IP信息是否是合理地址。若是合理地址,则将IP信息转换成字符串(string)类型,也就是映射成键值对的形式,存放到一个map[string]int8中,map的名称为Ara Asset Detail,键是已知资产的IP信息,值为1,代表该IP信息为企业的已知资产,从而构建map数组形式的已知资产库。
[0210] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
[0211] 示例性的,如图6所示,图6是本申请实施例提供的又一种资产认定方法的流程图。
[0212] S601、获取日志信息。
[0213] S602、判断是否存在源IP与目的IP。
[0214] 判断日志信息中是否存在源IP信息与目的IP信息。若不存在,直接跳过,重新执行获取日志信息的步骤,即,结束本次资产认定过程,重新执行下一个日志信息的资产认定过程。若日志信息中存在源IP信息或目的IP信息,将其作为新的IP信息(即,待认定的网络地址),执行S603。
[0215] S603、判断是否为已知资产。
[0216] 判断IP信息是否为目标对象的已知资产。若是已知资产,则直接跳过,不再执行以下步骤,即,结束本次资产认定过程。若否,则执行S604。
[0217] 进一步的,若IP信息不是目标对象的已知资产,则先判断IP信息是否为合理的IP地址(判断IP信息是否是属于IPv4或IPv6)。若IP信息不是合理的IP地址,输出错误信息供运维人员进行判断;若IP信息是合理的IP地址,则将其转换为int类型的值(即,待认定数值),根据int类型的值执行S604。
[0218] S604、获取内网IP段二维数组。
[0219] 示例性的,程序进行初始化,获取企业已知资产信息(即,目标对象的已认定设备的网络地址)存放到已知资产map(即,已知资产库)中。获取企业内网IP段信息(即,目标对象的多个内网地址段),转换成int数组类型,对各IP段最小值与最大值分别进行升序或降序排列后组合成一个二维数组,二维数组包括第一序列和第二序列。
[0220] S605、以二分法查找IP信息是否在某个内网IP段内。
[0221] 若不存在,则说明该IP信息所对应的设备不是企业的资产(即,目标设备不属于目标对象的资产)。若存在,则说明该IP信息所对应的设备是企业的资产(即,目标设备属于目标对象的资产)。
[0222] 在确定该IP信息所对应的设备是企业的资产之后,执行S606。
[0223] S606、将IP信息添加到已知资产map(即,已知资产库)中。
[0224] 将IP信息添加在企业资产的数据库中,并添加到企业已知资产信息的map中(即,将该网络地址添加在目标对象的已知资产库中),结束本次资产认定过程,重新开始执行获取下一条日志信息的认定过程。
[0225] 本示例中,如果从日志信息中获取到源IP信息或目的IP信息,先判断其是否为已知资产,通过查询Ara Asset Detail可以在O(1)的时间复杂度内得到比对结果。若是已知资产,则不进行任何操作;若不是已知资产,先判断其是否为一个合理的IP地址(包括IPv4和IPv6)。若不是合理的IP地址,则输出一条错误日志并返回至下一条IP信息的资产认定过程;若是合理的IP地址,此时需要判断其是否在内网IP段,采用二分查找法在AraAsset Ip Segment进行查询。资产认定过程可参见上述图1‑图5的描述,其时间复杂度为O(lgn),提高了资产认定效率。
[0226] 基于上述实施例提供的资产认定方法,图7为本申请实施例提供的一种计算机设备的结构示意图,如图7所示,计算机设备70包括:处理器701、存储器702以及存储在存储器702中并可在处理器701上运行的计算机程序703,处理器701执行计算机程序703时实现上述实施例中的资产认定方法中的步骤。
[0227] 计算机设备70可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备70可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备70的类型。本领域技术人员可以理解,图7仅仅是计算机设备70的举例,并不构成对计算机设备70的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
[0228] 处理器701可以是中央处理单元(Central Processing Unit,CPU)或微处理器,或者也可以是任何常规的处理器。
[0229] 存储器702在一些实施例中可以是计算机设备70的内部存储单元,比如计算机设备70的硬盘或内存。
[0230] 本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
[0231] 本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
[0232] 本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
[0233] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0234] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0235] 以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。