Quick Start =========== Installation ------------ Python 2.7+ is a prerequisite for using the ThreatConnect Python SDK. Typically, Python comes pre-installed on Linux/OS X/Unix systems, so additional steps to install Python are usually not required. To ensure you have python installed and to check the version, type ``python --version`` into the command line/command prompt. The ThreatConnect Python SDK can be installed using `python pip `_ as shown below: .. code-block:: shell pip install threatconnect .. note:: If you get a ``Permission denied`` error, you may have to install the threatconnect package with escalated privileges: ``sudo pip install threatconnect``. .. warning:: If you are using Python 2, you will also need to install the `enum34 `_ package using: ``pip install enum34``. Configuration ------------- Any script using the ThreatConnect Python SDK needs access to a configuration file which is laid out as follows: .. code-block:: text [threatconnect] # note -- do not use any quotes... # # api access id - ENTER API ACCESS ID # api_access_id = 12345678900987654321 # # api org - ENTER API DEFAULT ORG # api_default_org = Test Owner # # api secret key - ENTER API SECRET KEY # api_secret_key = aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz!@#$%^&*()-= # # api base url - ENTER API BASE URL (e.g. https://api.threatconnect.com) # api_base_url = https://api.threatconnect.com Update the configuration file as follows: 1. Replace the ``api_access_id`` and ``api_secret_key`` with your credentials. 2. Update the ``api_default_org`` with your organization's name as it appears in ThreatConnect. 3. Change the ``api_base_url`` as needed (see the note below if you are using the ThreatConnect **sandbox**). .. note:: If you are working with the ThreatConnect **sandbox**, the ``api_base_url`` should be: ``https://sandbox.threatconnect.com/api/``. What hath God wrought! (a.k.a. Hello World) ------------------------------------------- Assuming that you have installed the ThreatConnect Python SDK and have created a configuration file with the correct information, we are now ready to test the SDK. To test the SDK: 1. Create a folder in a convenient location on your computer. 2. Copy the configuration file from the previous, **Configuration** step into the new folder and name it ``tc.conf``. 3. Copy and paste the following code into a file and save it in the new folder with the name ``tc_test.py``. This code will print all of the owners in ThreatConnect which you have permission to see. .. no-test .. code-block:: python try: import ConfigParser except: import configparser as ConfigParser import sys from threatconnect import ThreatConnect config = ConfigParser.RawConfigParser() config.read('./tc.conf') try: api_access_id = config.get('threatconnect', 'api_access_id') api_secret_key = config.get('threatconnect', 'api_secret_key') api_default_org = config.get('threatconnect', 'api_default_org') api_base_url = config.get('threatconnect', 'api_base_url') except ConfigParser.NoOptionError: print('Could not read configuration file.') sys.exit(1) tc = ThreatConnect(api_access_id, api_secret_key, api_default_org, api_base_url) # instantiate Owners object owners = tc.owners() try: # retrieve the Owners owners.retrieve() except RuntimeError as e: print('Error: {0}'.format(e)) sys.exit(1) # iterate through the Owners for owner in owners: print(owner.id) print(owner.name) print(owner.type) print('') 4. In the command line/command prompt, run ``python tc_test.py``. This should print the ID number, name, and type of the owners which you have permission to see. Standard Script Heading ----------------------- Every script that communicates to the ThreatConnect Python SDK should begin with the same, basic code: .. no-test .. code-block:: python try: import ConfigParser except: import configparser as ConfigParser import sys from threatconnect import ThreatConnect config = ConfigParser.RawConfigParser() config.read('./tc.conf') try: api_access_id = config.get('threatconnect', 'api_access_id') api_secret_key = config.get('threatconnect', 'api_secret_key') api_default_org = config.get('threatconnect', 'api_default_org') api_base_url = config.get('threatconnect', 'api_base_url') except ConfigParser.NoOptionError: print('Could not read configuration file.') sys.exit(1) For the sake of brevity, the configuration code above will be summarized with ``...`` in all of code snippets in this documentation. In other words, any time you see ``...`` in a code snippet, it can be replaced with the code above. Next Steps ---------- From here, find a topic that interests you and dig in! If you don't know where to start, retrieving indicators is a good place to start. .. hint:: There are some **good examples** using this SDK here: `https://github.com/ThreatConnect-Inc/threatconnect-python/tree/master/examples `__ .. hint:: When using this documentation, it will be helpful to have a basic understanding of the `ThreatConnect Data Model `_.