QRadarGetCorrelationLogs Deprecated

Deprecated. Use the **QRadarCorrelationLog** playbook instead. Return the QRadar Correlation logs if exist

python · IBM QRadar

Source

import demistomock as demisto
from CommonServerPython import *


def get_query(cre_name_null):
    if cre_name_null == "True":
        query = "select RULENAME({0}), sourceip, destinationip, eventcount, sourceport, " \
                "username, starttime, destinationport, magnitude, identityip, CATEGORYNAME(category), " \
                "PROTOCOLNAME(protocolid), LOGSOURCENAME(logsourceid){1} from " \
                "events where \"CRE Name\" IS NULL AND INOFFENSE({2}) START '{3}'"
    else:
        query = "select RULENAME({0}), sourceip, destinationip, eventcount, " \
                "sourceport, username, starttime, destinationport, magnitude, " \
                "identityip, CATEGORYNAME(category), PROTOCOLNAME(protocolid), " \
                "LOGSOURCENAME(logsourceid){1} from events " \
                "where \"CRE Name\" <> NULL AND INOFFENSE({2}) START '{3}'"
    return query


def main():
    d_args = demisto.args()
    is_cre_name_null = demisto.args().get("is_cre_name_null", "True")
    QUERY = get_query(is_cre_name_null)

    offense_id = demisto.get(d_args, 'offenseID')
    start_time = demisto.get(d_args, 'startTime')
    correlation_id = demisto.get(d_args, 'qid')
    additional_query_fields = demisto.get(d_args, 'additionalQueryFields')
    # Try converting from date string to timestamp
    try:
        start_time = date_to_timestamp(str(start_time), '%Y-%m-%dT%H:%M:%S.%f000Z')
    except Exception:
        pass

    d_args["query_expression"] = QUERY.format(correlation_id, additional_query_fields, offense_id, start_time)

    resp = demisto.executeCommand('QRadarFullSearch', d_args)
    if isError(resp[0]):
        demisto.results(resp)
    else:
        data = demisto.get(resp[0], 'Contents.events')

        if not data:
            resp[0]['HumanReadable'] = "No logs were found for correlation id {0}".format(correlation_id)
        else:
            data = data if isinstance(data, list) else [data]

            QRadar = {
                'Log': []
            }  # type: Dict

            for corr in data:

                keys = corr.keys()
                log = {
                    "QID": correlation_id,
                    "SourceIP": demisto.get(corr, "sourceip")
                }  # type: Dict
                # Standardized known keys
                keys.remove("sourceip") if "sourceip" in keys else None

                log["DestinationPort"] = demisto.get(corr, "destinationport")
                keys.remove("destinationport") if "destinationport" in keys else ""

                log["SourcePort"] = demisto.get(corr, "sourceport")
                keys.remove("sourceport") if "sourceport" in keys else ""

                log["EventCount"] = demisto.get(corr, "eventcount")
                keys.remove("eventcount") if "eventcount" in keys else ""

                log["DestinationIP"] = demisto.get(corr, "destinationip")
                keys.remove("destinationip") if "destinationip" in keys else ""

                log["Category"] = demisto.get(corr, "categoryname_category")
                keys.remove("categoryname_category") if "categoryname_category" in keys else ""

                log["IdentityIP"] = demisto.get(corr, "identityip")
                keys.remove("identityip") if "identityip" in keys else ""

                log["Username"] = demisto.get(corr, "username")
                keys.remove("username") if "username" in keys else ""

                log["StartTime"] = demisto.get(corr, "starttime")
                keys.remove("starttime") if "starttime" in keys else ""

                log["Magnitude"] = demisto.get(corr, "magnitude")
                keys.remove("magnitude") if "magnitude" in keys else ""

                log["ProtocolName"] = demisto.get(corr, "protocolname_protocolid")
                keys.remove("protocolname_protocolid") if "protocolname_protocolid" in keys else ""

                # Push to context rest of the keys (won't be shown in 'outputs')
                for key in keys:
                    log[''.join(x for x in key.title() if not x.isspace())] = demisto.get(corr, key)

                QRadar['Log'].append(log)

            context = {"QRadar": QRadar}
            resp[0]['EntryContext'] = context

    demisto.results(resp)


# python2 uses __builtin__ python3 uses builtins
if __name__ in ('__builtin__', 'builtins'):
    main()