Software similarity searching
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.
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.