A system to automatically gather attribute data about elements such as networks,
network interface cards, operating systems, device types, installed software, processes
in execution, financial data, etc. in an organization or a designated subset of
the organization. Fingerprint files are used, each fingerprint file corresponding
to an element of a specific type and each containing a list of attributes that
will be found if that element exists in the system. Each fingerprint contains or
points to one or more collection instructions which control a data collector process
to attempt to gather attribute data. Each fingerprint contains or points to rules
that are used to analyze the attribute data gathered to calculate the probability
that the element exists. The rules can be fired sequentially, in if-then-else fashion
or can be incorporated in a script in loops and with mathematical manipulations,
tests and branching for more sophisticated analysis. Fingerprints can be turned
on and off by configuration data and can be used in a logical order to do discovery
without any prior knowledge of the systems being analyzed. A refresh schedule and
collection calendar control how often the fingerprints are used in some embodiments,
and collected data is stored with time stamps to enable analysis of changes in
the data over time.