1. A computer-implemented method for identifying software component versions on a file system the method comprising: scanning, by a computer, a plurality of target files to obtain content-based file identifiers; comparing, by the computer, each content-based file identifier to identifiers in a reference library to determine a plurality of candidate versions of software components, each candidate version corresponding to at least one of the content-based file identifiers; identifying a subset of candidate versions from the plurality of candidate versions as present on the file system by, for each candidate version in the plurality of candidate versions: determining, using the reference library, whether the content-based file identifiers uniquely identify the candidate version, a content-based file identifier uniquely identifying the candidate version responsive to the content-based file identifier matching an identifier in the reference library that is associated with the candidate version but is not associated with other candidate versions; and responsive to the content-based file identifiers uniquely identifying the candidate version, determining that the candidate version is present on the file system; and producing a report including the subset of candidate versions identified as present on the file system.
8. The method of claim 1 , wherein the reference library comprises a plurality of the identifiers, and: wherein the plurality of candidate versions of software components are determined by comparing the content-based file identifiers to only a subset of the plurality of the identifiers in the reference library, and wherein the content-based file identifiers are determined to uniquely identify the candidate version by comparing the content-based file identifiers to all of the plurality of the identifiers in the reference library.