| CPC G06F 8/36 (2013.01) [G06F 8/70 (2013.01)] | 20 Claims |

|
1. A computer system comprising:
one or more non-transitory computer readable storage devices configured to store a plurality of computer readable instructions; and
one or more processors configured to execute the plurality of computer readable instructions to cause the computer system to perform operations comprising:
receiving a query code snippet identifying code to be matched;
determining one or more fingerprints of the query code snippet;
searching, using at least the one or more fingerprints of the query code snippet, a database of fingerprints of a plurality of portions of a set of software programs to determine a set of matching portions of the set of software programs;
removing, from the set of matching portions, any matching portions that match a fingerprint of blacklisted code to generate an updated set of matching portions;
coalescing the updated set of matching portions into a software match list; and
ranking the software on the software match list to determine a ranked software match list, the ranking indicative of how well the fingerprints of the software on the software match list matches fingerprints of the query code snippet.
|