Skip to main content

Search for Common Platform Enumeration (CPE) strings using software names and titles.

Project description

cpe_search

Search for Common Platform Enumeration (CPE) strings using software names and titles.

About

cpe_search can be used to search for Common Platform Enumeration (CPE) strings using software names and titles. For example, if some tool discovered a web server running Apache 2.4.39, you can use this tool to easily and quickly retrieve the corresponding CPE 2.3 string cpe:2.3:a:apache:http_server:2.4.39:*:*:*:*:*:*:*. Thereafter, the retrieved CPE string can be used to accurately search for vulnerabilities, e.g. via the Online NVD or the search_vulns tool.

Installation

You can install cpe_search via pip directly:

pip3 install cpe_search

You can also clone this repository and run:

pip3 install .

Note that when cpe_search is used for the first time, it invokes a small setup routine that downloads all available CPEs from the NVD's official API and precomputes the data utilized for searches in all subsequent runs. This may take a couple of minutes initially but is only done once. To speed this process up, you can provide an NVD API key if you have one (it's free). The API key can be provided with the -k argument or specified in an environment variable called NVD_API_KEY. You can also set up and provide a configuration file, see config.json.

Usage

cpe_search's usage information is shown in the following:

usage: cpe_search [-h] [-u] [-k API_KEY] [-n NUMBER] [-q QUERY] [-v] [-c CONFIG]

Search for CPEs using software names and titles -- Created by Dustin Born (ra1nb0rn)

options:
  -h, --help            show this help message and exit
  -u, --update          Update the local CPE database
  -k API_KEY, --api-key API_KEY
                        NVD API key to use for updating the local CPE dictionary
  -n NUMBER, --number NUMBER
                        The number of CPEs to show in the similarity overview (default: 3)
  -q QUERY, --query QUERY
                        A query, i.e. textual software name / title like 'Apache 2.4.39' or 'Wordpress 5.7.2'
  -v, --verbose         Be verbose and print status information
  -c CONFIG, --config CONFIG
                        A config file to use (default: config.json)

Note that when querying software with -q you have to put the software information in quotes if it contains any spaces. Also, you can use -q multiple times to make multiple queries at once. Moreover, the output can be piped to be directly useable with other tools. Here are some examples:

  • Query Sudo 1.8.2 to retrieve its CPE 2.3 string:
    $ cpe_search -q "Sudo 1.8.2"
    cpe:2.3:a:sudo_project:sudo:1.8.2:*:*:*:*:*:*:*
    [('cpe:2.3:a:sudo_project:sudo:1.8.2:*:*:*:*:*:*:*', 0.8660254037844385),
     ('cpe:2.3:a:sudo_project:sudo:1.3.0:*:*:*:*:*:*:*', 0.5773502691896256),
     ('cpe:2.3:a:cryptography.io:cryptography:1.8.2:*:*:*:*:*:*:*',
      0.4714045207910316)]
    
  • Make a query and pipe the retrieved CPE to another tool:
    $ cpe_search -q "Windows 10 1809" | xargs echo
    cpe:2.3:o:microsoft:windows_10:1809:*:*:*:*:*:*:*
    
  • Make two queries at once:
    $ cpe_search -q "Apache 2.4.39" -q "Wordpress 5.7.2"
    cpe:2.3:a:apache:http_server:2.4.39:*:*:*:*:*:*:*
    [('cpe:2.3:a:apache:http_server:2.4.39:*:*:*:*:*:*:*', 0.6666664603674289),
    ('cpe:2.3:a:apache:apache-airflow-providers-apache-spark:-:*:*:*:*:*:*:*',
      0.600000153741923),
    ('cpe:2.3:a:apache:apache-airflow-providers-apache-hive:-:*:*:*:*:*:*:*',
      0.600000153741923)]
    
    cpe:2.3:a:wordpress:wordpress:5.7.2:*:*:*:*:*:*:*
    [('cpe:2.3:a:wordpress:wordpress:5.7.2:*:*:*:*:*:*:*', 0.9805804786431419),
    ('cpe:2.3:a:wordpress:wordpress:-:*:*:*:*:*:*:*', 0.7071067811865475),
    ('cpe:2.3:a:adenion:blog2social:5.7.2:*:*:*:*:wordpress:*:*',
      0.6859944446591075)]
    

License

cpe_search is licensed under the MIT license, see here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cpe_search-0.1.2.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cpe_search-0.1.2-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file cpe_search-0.1.2.tar.gz.

File metadata

  • Download URL: cpe_search-0.1.2.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cpe_search-0.1.2.tar.gz
Algorithm Hash digest
SHA256 15544757f2fcec426c74faea90549a15ef32bef15eaad127e274d1c25df8a537
MD5 7dabc103ff06c5c639cd774f23733bd3
BLAKE2b-256 9abf7d336f15d8a36a41e1f4d7b568d4f7544c67a375bf2c834c7d4b89cd3466

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpe_search-0.1.2.tar.gz:

Publisher: publish_pypi_package_on_new_release.yml on ra1nb0rn/cpe_search

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cpe_search-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cpe_search-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cpe_search-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f7346870b9fc260d46702facabdb00715c9d09c3e1dc5521e6f128b785210891
MD5 9558f7bc91ee78a73f19898bb2aa0231
BLAKE2b-256 bb37938c553dca6eedb40c1aac25a9d5b24e496e718ee2fab9d92a04e0ea46fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for cpe_search-0.1.2-py3-none-any.whl:

Publisher: publish_pypi_package_on_new_release.yml on ra1nb0rn/cpe_search

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page