IP Library Granted Patent US 9,304,980
Granted Patent B1
US 9,304,980 · App. 12/252,326 · Granted Apr 5, 2016

Identifying versions of file sets on a computer system

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,304,980
App. No.
12/252,326
Granted
Apr 5, 2016
Kind
B1
Abstract

Target files in a search space are scanned to identify which versions of software components are present in the search space. A reference library is populated with indicia such as source code fragments of known versions of software components. A file scanner reads file data used to identify matches between the reference library content and target files, and a version detector determines which match candidates represent unique component versions. Once a component version is identified, a vulnerability module determines based on data in a vulnerabilities database what vulnerabilities are associated with the identified version, and a license module identifies which if any licensing schemes are applicable to the identified version. In one embodiment a report is automatically produced providing an indication of all matched files, their versions, vulnerabilities, and licensing schemes.

Claims (63)

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.

2. The method of claim 1 , wherein the content based file identifiers comprise MD5 digests.

3. The method of claim 1 , wherein the content based file identifiers comprise code fingerprints.

4. The method of claim 1 , wherein determining that the candidate version is present on the file system further comprises:

determining whether a directory structure of the scanned target files matches a directory structure of at least one release of the candidate version; and

responsive to the content-based file identifiers uniquely identifying the candidate version and the directory structure matching the at least one release of the candidate version, determining that the candidate version is present on the file system.

5. The method of claim 1 , wherein producing a report comprises:

comparing the subset of candidate versions to a vulnerabilities database, the vulnerabilities database including vulnerability information for a plurality of versions of components; and

producing a vulnerability report including vulnerability information for the subset of candidate versions based on the comparison.

6. The method of claim 1 , wherein producing a report comprises:

comparing the subset of candidate versions to a licensing database, the licensing database including licensing information for a plurality of versions of components; and

producing a licensing report including licensing information for the subset of candidate versions based on the comparison.

7. The method of claim 1 , wherein determining that the candidate version is present on the file system comprises:

determining whether the content-based file identifiers uniquely identify at least one release of the candidate version; and

responsive to whether the content-based file identifiers uniquely identify the candidate version and whether the content-based file identifiers uniquely identify the at least one release of the candidate version, determining that the candidate version is 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.

9. A computer program product for identifying software component versions on a file system, the computer program product comprising a non-transitory computer readable medium having computer executable code for performing the steps of:

scanning a plurality of target files to obtain content-based file identifiers;

comparing 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 whether the content-based file identifiers uniquely identify the candidate version using the reference library, 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.

10. The computer program product of claim 9 , wherein the content based file identifiers comprise MD5 digests.

11. The computer program product of claim 9 , wherein the content based file identifiers comprise code fingerprints.

12. The computer program product of claim 9 , wherein determining that the candidate version is present on the file system further comprises:

determining whether a directory structure of the scanned target files matches a directory structure of at least one release of the candidate version; and

responsive to the content-based file identifiers uniquely identifying the candidate version and the directory structure matching the at least one release of the candidate version, determining that the candidate version is present on the file system.

13. The computer program product of claim 9 , wherein producing a report comprises:

comparing the subset of candidate versions to a vulnerabilities database, the vulnerabilities database including vulnerability information for a plurality of versions of components; and

producing a vulnerability report including vulnerability information for the subset of candidate versions based on the comparison.

14. The computer program product of claim 9 , wherein producing a report comprises:

comparing the subset of candidate versions to a licensing database, the licensing database including licensing information for a plurality of versions of components; and

producing a licensing report including licensing information for the subset of candidate versions based on the comparison.

15. The computer program product of claim 9 , wherein determining that the candidate version is present on the file system comprises:

determining whether the content-based file identifiers uniquely identify at least one release of the candidate version; and

responsive to whether the content-based file identifiers uniquely identify the candidate version and whether the content-based file identifiers uniquely identify the at least one release of the candidate version, determining that the candidate version is present on the file system.

16. A system for identifying software component versions on a file system, the system comprising:

a processor; and

a non-transitory computer-readable medium having executable code, the executable code executed by the processor to perform steps of:

scanning a plurality of target files to obtain content-based file identifiers;

comparing 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 whether the content-based file identifiers uniquely identify the candidate version using the reference library, 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.

17. The system of claim 16 , wherein determining that the candidate version is present on the file system comprises:

determining whether a directory structure of the scanned target files matches a directory structure of at least one release of the candidate version; and

responsive to the content-based file identifiers uniquely identifying the candidate version and the directory structure matching the at least one release of the candidate version, determining that the candidate version is present on the file system.

18. The system of claim 16 , wherein producing a report comprises:

comparing the subset of candidate versions to a vulnerabilities database, the vulnerabilities database including vulnerability information for a plurality of versions of components; and

producing a vulnerability report including vulnerability information for the subset of candidate versions based on the comparison.

19. The system of claim 16 , wherein producing a report comprises:

comparing the subset of candidate versions to a licensing database, the licensing database including licensing information for a plurality of versions of components; and

producing a licensing report including licensing information for the subset of candidate versions based on the comparison.

Assignments (12)
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS - REEL/FRAME 045441/ 0499 Recorded Aug 25, 2025
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
Reel/Frame 072552/0558 →
SECURITY INTEREST Recorded Aug 15, 2025
From: REVULYTICS INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 072034/0509 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Apr 18, 2024
From: JEFFERIES FINANCE LLC
To: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
Reel/Frame 067636/0534 →
SECOND LIEN SECURITY AGREEMENT Recorded Mar 3, 2021
From: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 055487/0354 →
RELEASE OF SECOND LIEN SECURITY INTEREST Recorded Feb 28, 2020
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION; RIGHTSCALE, INC.; RISC NETWORKS, LLC
Reel/Frame 052049/0560 →
SECOND LIEN SECURITY AGREEMENT Recorded Feb 27, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045451/0499 →
TERMINATION OF 2ND LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 040626/0561 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: PALAMIDA, INC.
Reel/Frame 045447/0979 →
TERMINATION OF 1ST LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 040692/0874 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: PALAMIDA, INC.
Reel/Frame 045447/0310 →
FIRST LIEN SECURITY AGREEMENT Recorded Feb 26, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045441/0499 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 16, 2016
From: PALAMIDA, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 040626/0561 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 16, 2016
From: PALAMIDA, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 040692/0874 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2008
From: HARTSOOK, LAWRENCE DOUGLAS; SMITH, ROBERT KENNETH
To: PALAMIDA, INC.
Reel/Frame 021971/0154 →