Skip to content

Instantly share code, notes, and snippets.

@brevityinmotion
brevityinmotion / brevity-recon-httpx.py
Last active July 28, 2021 04:36
Modular httpx script to install, load, normalize, and process output data
import io, json
import brevitycore.core
def prepareHttpx(programName,inputBucketName, fileName):
# Anything other than initial will default to this
gospiderPath = programName + '-urls-mod.txt'
# If operation is initial, it will be domains-new as filename
diffPath = programName + '-domains-new.csv'
@brevityinmotion
brevityinmotion / brevity-program-load.py
Created July 28, 2021 04:02
Example code to load a program via POST request to Lambda
import json, boto3, os
import brevityprogram.programs
import brevityscope.scope
def lambda_handler(event, context):
eventinput = json.loads(event['body'])
if eventinput['program'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing program name."})}
@brevityinmotion
brevityinmotion / brevity-programs-dynamodb.py
Created July 28, 2021 03:50
Example AWS DynamoDB program loads.
import boto3
import botocore
from botocore.exceptions import ClientError
from dynamodb_json import json_util as dynjson
def create_program(programName):
try:
program = {
'ProgramName': programName
}
@brevityinmotion
brevityinmotion / brevity-scope-parse.py
Created July 28, 2021 03:27
Lambda function to parse and normalize scope data
import ast
import re
import urllib.request, json
from urllib.parse import urlparse
def parseScopeIn(scopeIn):
targetData = []
if not scopeIn:
return targetData
smallAll = str(scopeIn)[1:-1]
@brevityinmotion
brevityinmotion / brevity-programs-bulk.py
Created July 28, 2021 03:22
Bulk load bug bounty programs
import json, boto3
import ast
import urllib.request
import pandas as pd
import numpy as np
import brevityscope.scope
import brevityprogram.programs
def lambda_handler(event, context):
@brevityinmotion
brevityinmotion / brevity-recon-lambda.py
Created July 28, 2021 02:56
Lambda function to initiate step functions
import json, boto3, os
def lambda_handler(event, context):
# This section validates whether the expected query parameters exist.
if event['queryStringParameters']['program'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing program name."})}
if event['queryStringParameters']['operation'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing operation name."})}
programName = str(event['queryStringParameters']['program'])
operationName = str(event['queryStringParameters']['operation'])
@brevityinmotion
brevityinmotion / stepfunctionsinitiatefromlambda.py
Created July 1, 2021 06:15
This Lambda will retrieve parameters from an API gateway request and then initiate a Step Functions workflow
import json, boto3, os
def lambda_handler(event, context):
if event['queryStringParameters']['program'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing program name."})}
if event['queryStringParameters']['operation'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing operation name."})}
programName = str(event['queryStringParameters']['program'])
operationName = str(event['queryStringParameters']['operation'])
@brevityinmotion
brevityinmotion / exampleStepFunctionCallbackScript.py
Created July 1, 2021 05:36
Example script to generate a callback script to run
def generateScriptStepFunctions(programName, taskToken, operationName):
secretName = 'exampleSecretsManager'
regionName = 'us-east-1'
secretRetrieved = brevitycore.core.get_secret(secretName,regionName)
secretjson = json.loads(secretRetrieved)
awsAccessKeyId = secretjson['AWS_ACCESS_KEY_ID']
awsSecretKey = secretjson['AWS_SECRET_ACCESS_KEY']
stateInput = '{"program":"' + programName + '","operation":"' + operationName + '","statusCode":200}'
fileBuffer = io.StringIO()
@brevityinmotion
brevityinmotion / brevity-stepfunctioncallbacklambda.py
Created July 1, 2021 05:33
This example shows the receiving code within a Python Lambda to retrieve the task token for a callback
import json, boto3, os, re
def lambda_handler(event, context):
if event['program'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing program name."})}
if event['operation'] is None:
return {"isBase64Encoded":False,"statusCode":400,"body":json.dumps({"error":"Missing operation name."})}
else:
operationName = str(event['operation'])
@brevityinmotion
brevityinmotion / brevity-parser.py
Created June 9, 2021 04:58
Functions to parse and normalize URLs and domains
import tldextract
import pandas as pd
def parseRootDomains(refinedBucketPath, programName):
storePathInitial = refinedBucketPath + programName + '/' + programName + '-domains.csv'
dfAllDomains = pd.read_csv(storePathInitial)
allDomains = dfAllDomains['domain'].unique().tolist()
domainEdges = []
for val in allDomains:
domainEdges.append(processDomainRoots(val))