-
-
Save resource-not-found/7ab20247e37eafbee70e43998deeea99 to your computer and use it in GitHub Desktop.
Appendix 3: gophish_create_compaigns.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import re | |
from gophish import Gophish | |
from gophish.models import Group, Page, Template, SMTP, Campaign, User | |
import urllib3 | |
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) | |
def create_campaign(url, params): | |
campaign = Campaign( | |
name='{} {} <{}> ({})'.format(params['first_name'], params['last_name'], params['email'], params['position']), | |
groups=[Group(name=params['email'])], | |
url=url, | |
template = Template(name='KnowBe4'), | |
smtp = SMTP(name='ZOHOKnowbe4') | |
) | |
campaign = api.campaigns.post(campaign) | |
print('Compaign created: {}'.format(campaign.name)) | |
def parse_parameters(param_str): | |
param_str = param_str.strip() | |
pattern = re.compile(r'(\w+)="([^"]*)"') | |
matches = pattern.findall(param_str) | |
result_dict = dict(matches) | |
return result_dict | |
key = '[GOPHISH_API_KEY]' | |
api = Gophish(key, host='https://127.0.0.1:3333', verify=False) | |
groups = api.groups.get() | |
campaigns = api.campaigns.get() | |
file_name = sys.argv[2] | |
with open(file_name, 'r') as file: | |
for line in file: | |
line = line.rstrip() | |
url = line.split(' ; ')[0] | |
params = line.split(' ; ')[1] | |
params = parse_parameters(params) | |
if params['email'] in [g.name for g in groups]: | |
tmp = '{} {} <{}> ({})'.format(params['first_name'], params['last_name'], params['email'], params['position']) | |
if tmp not in [c.name for c in campaigns]: | |
create_campaign(url, params) | |
else: | |
print('Warning: Group not found for email: %s' % params['email']) | |
# Example run: python3 gophish_create_compaigns.py urls_0.txt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment