IP Library Granted Patent US 9,720,925
Granted Patent B1
US 9,720,925 · App. 13/840,871 · Granted Aug 1, 2017

Software similarity searching

Inventor: Nathaniel J. Lawson (Oakland, CA)
Assignee: ORCHARD VALLEY MANAGEMENT LLC
G06F17/301G06F17/2211G06F21/105
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,720,925
App. No.
13/840,871
Granted
Aug 1, 2017
Kind
B1
Abstract

Similarity analysis of software is disclosed. An input file is received. Pairs of files that consist of the input file and files included in a corpus are categorized into one of a possible match and a mismatch. Those pairs classified as possible matches are analyzed using a pairwise component analysis.

Claims (65)

1. A computing device, comprising:

at least one processor; and

at least one memory storing instructions that, when executed by the at least one processor, cause the computing device to:

receive an input binary file;

categorize, into a possible match or a mismatch, pairs of binary files consisting of (i) the input binary file, and (ii) a selected binary file included in a corpus of files;

analyze each of the pairs of binary files classified as a possible match using a pairwise component analysis that involves:

carrying out a first process that involves exact-matching a first pair of binary files to generate a first comparison value, and

when the first comparison value satisfies a threshold value of matching:

preventing the first pair of binary files from being further analyzed,

carrying out a second process that involves exact-matching a second pair of binary files to generate a second comparison value, and

when the second comparison value does not satisfy the threshold value of matching:

 carrying out a third process that involves approximate-matching the second pair of binary files to produce a respective similarity score for the second pair of binary files; and

output the respective similarity score for at least one of the pairs of binary files.

2. The computing device of claim 1 , wherein the input binary file is an archive that comprises a plurality of files.

3. The computing device of claim 1 , wherein the input binary file is included in an archive that comprises a plurality of files.

4. The computing device of claim 1 , wherein, when the first comparison value satisfies the threshold value of matching, the at least one processor further causes the computing device to:

prevent outputting the respective similarity score for the first pair of binary files.

5. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

provide, as an output, a report that indicates that the input binary file includes open source software.

6. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

provide, as an output, a report that indicates that the input binary file is subject to a license.

7. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

display a monetary charge associated with the input binary file.

8. The computing device of claim 1 , wherein, as a result of the pairwise component analysis, a forensic determination is made as to whether particular code is common in the pairs of binary files.

9. The computing device of claim 1 , wherein the pairwise component analysis is performed with respect to subsets of the pairs of binary files.

10. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

provide, as an output, a report that establishes a correspondence between at least one of: (i) code, and (ii) data items for one of the pairs of binary files.

11. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

provide, as an output, a report that correlates source code with matching subsets of one of the pairs of binary files.

12. The computing device of claim 1 , wherein the at least one processor further causes the computing device to:

automatically generate at least one report in response to a continual supply of input binary files.

13. At least one non-transitory computer readable storage medium storing instructions that, when executed by at least one processor included in a computing device, cause the computing device to:

receive an input binary file;

categorize, into a possible match or a mismatch, pairs of binary files consisting of (i) the input binary file, and (ii) a selected binary file included in a corpus of files;

analyze each of the pairs of binary files classified as a possible match using a pairwise component analysis that involves:

carrying out a first process that involves exact-matching a first pair of binary files to generate a first comparison value, and

when the first comparison value satisfies a threshold value of matching:

preventing the first pair of binary files from being further analyzed,

carrying out a second process that involves exact-matching a second pair of binary files to generate a second comparison value, and

when the second comparison value does not satisfy the threshold value of matching:

carrying out a third process that involves approximate-matching the second pair of binary files to produce a respective similarity score for the second pair of binary files; and

output the respective similarity score for at least one of the pairs of binary files.

14. The at least one non-transitory computer readable storage medium of claim 13 , wherein, when the first comparison value satisfies the threshold value of matching, the at least one processor further causes the computing device to:

prevent outputting the respective similarity score for the first pair of binary files.

15. The at least one non-transitory computer readable storage medium of claim 13 , wherein the at least one processor further causes the computing device to:

display a monetary charge associated with the input binary file.

16. The at least one non-transitory computer readable storage medium of claim 13 , wherein the at least one processor further causes the computing device to:

automatically generate at least one report in response to a continual supply of input binary files.

17. A method, comprising:

receiving an input binary file;

categorizing, into a possible match or a mismatch, pairs of binary files consisting of (i) the input binary file, and (ii) a selected binary file included in a corpus of files;

analyzing each of the pairs of binary files classified as a possible match using a pairwise component analysis that involves:

carrying out a first process that involves exact-matching a first pair of binary files to generate a first comparison value, and

when the first comparison value satisfies a threshold value of matching:

preventing the first pair of binary files from being further analyzed,

carrying out a second process that involves exact-matching a second pair of binary files to generate a second comparison value, and

when the second comparison value does not satisfy the threshold value of matching:

carrying out a third process that involves approximate-matching the second pair of binary files to produce a respective similarity score for the second pair of binary files; and

outputting the respective similarity score for at least one of the pairs of binary files.

18. The method of claim 17 , wherein, when the first comparison value satisfies the threshold value of matching, the method further comprises:

prevent outputting the respective similarity score for the first pair of binary files.

19. The method of claim 17 , further comprising:

displaying a monetary charge associated with the input binary file.

20. The method of claim 17 , further comprising:

automatically generating at least one report in response to a continual supply of input binary files.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 039384 FRAME: 0478. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER EFFECTIVE DATE 05/26/2016. Recorded Aug 10, 2016
From: RIDDLE CAPITAL LLC
To: ORCHARD VALLEY MANAGEMENT LLC
Reel/Frame 039645/0059 →
MERGER Recorded Aug 9, 2016
From: SOURCEDNA, INC.
To: RIDDLE CAPITAL LLC
Reel/Frame 039384/0302 →
MERGER Recorded Aug 9, 2016
From: RIDDLE CAPITAL LLC
To: ORCHARD VALLEY MANAGEMENT LLC
Reel/Frame 039384/0478 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2013
From: LAWSON, NATHANIEL J.
To: SOURCEDNA, INC.
Reel/Frame 030730/0253 →
Continuity (3)
Provisional Application 61623514 · Apr 12, 2012
Provisional Application 61623519 · Apr 12, 2012
Provisional Application 61623524 · Apr 12, 2012