A process for discovering the existence of elements in an organization without having any prior knowledge about the structure of the organization, said elements each being defined by a fingerprint that defines the attributes the element will have and includes a pointer to a set of collection instructions to collect attribute data that define an instance of the element , comprising the steps of:
- 1) starting with a network fingerprint for a possible network that might exist in the organization, executing a collection instruction contained in or pointed to by said network fingerprint to attempt to collect network attribute data for the type of network defined by said network fingerprint;
- 2) using one or more rules pointed to by the network fingerprint rule selected in step 1 to process any attribute data collected using said network fingerprint collection instructions, and calculating the probability that each type of network element exists, and making an entry in element and data structures at least for each network type element that is found to exist and storing the collected attribute data of any network element found to exist including the range of its valid addresses;
- 3) repeating this process of steps 1 and 2 for each other network fingerprint available
- 4) next, using a fingerprint for a network interface card element, executing a collection instruction(s) for each valid address on a first one of the networks found in steps 1 through 3 to attempt to collect network interface card (hereafter NIC) attribute data for the type of network interface card defined by said network interface card fingerprint at each valid address of a first network, said collection instruction being contained in the fingerprint or pointed to thereby;
- 5) for each NIC that responded and from which attribute data was collected, using one or more fingerprint rules in said network interface card fingerprint to process the collected attribute data to calculate the probability that a network interface card of the type defined by said NIC fingerprint exists at each valid address of the network probed in step 4 from which a response was received and making a NIC instance entry in the element and data tables for each NIC found by steps 4 and 5 ;
- and recording the attribute data of each said NIC in the instance record thereof;
- 6) repeating steps 4 and 5 for every other network interface card fingerprint available at every valid network address of the same network probed in step 4, and then repeat steps 4, 5 and 6 for each other network found in steps 1 through 3;
- 7) for each NIC found in steps 4 through 6, select an operating system fingerprint from the operating system fingerprints and execute a collection instruction contained in said fingerprint or pointed to thereby to attempt to determine what type of operating system is being executed by the computer to which said NIC is coupled;
- 8) repeating step 7 for every other type of operating system fingerprint for each NIC for which the operating system of the NIC's host computer is unknown until all operating systems are known or no further knowledge about the type of operating system can be gained;
- 9) for each different type of operating system found, use the appropriate fingerprints for each different type of element of interest about the computer or files or applications programs thereon and execute collection instructions to invoke the proper function calls of the operating system to collect the attribute data of the elements of interest;
- 10) then, for each set of gathered attribute data for a particular element of interest gathered from a particular computer, apply the appropriate fingerprint rule or rules for elements of that type on a computer of the type of said particular computer executing the type operating system said particular computer is executing to calculate the probability of existence of an element of that type on said particular computer from which the attribute data was collected, and make an instance entry for an element of that type including its attribute data in a data table showing the proper relationship to the network, NIC and operating system instance entries for the computer on which the element was found.