83 lines
3.2 KiB
Python
83 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Name generation utility for c2itall deployments
|
|
Generates verb-animal names similar to FourEyes with shared deployment IDs
|
|
"""
|
|
|
|
import random
|
|
import os
|
|
|
|
def load_word_list(filename):
|
|
"""Load words from a text file, one word per line"""
|
|
try:
|
|
# Check if we have FourEyes word lists
|
|
foureyes_path = os.environ.get('FOUREYES_PATH', '')
|
|
if os.path.exists(foureyes_path):
|
|
file_path = os.path.join(foureyes_path, filename)
|
|
if os.path.exists(file_path):
|
|
with open(file_path, 'r') as f:
|
|
words = [line.strip().lower() for line in f if line.strip()]
|
|
return [word for word in words if word] # Remove empty strings
|
|
except Exception:
|
|
pass
|
|
|
|
# Fallback word lists if FourEyes not available
|
|
if 'verbs' in filename:
|
|
return [
|
|
"blazing", "soaring", "charging", "prowling", "hunting", "stalking",
|
|
"striking", "rushing", "dashing", "racing", "flying", "diving",
|
|
"leaping", "climbing", "sliding", "spinning", "rolling", "sneaking",
|
|
"roaming", "wandering", "running", "jumping", "swimming", "crawling",
|
|
"fighting", "defending", "attacking", "scanning", "searching", "finding"
|
|
]
|
|
else: # animals
|
|
return [
|
|
"wolf", "eagle", "tiger", "falcon", "bear", "lion", "shark", "hawk",
|
|
"panther", "cobra", "viper", "rhino", "bull", "fox", "raven", "crow",
|
|
"spider", "scorpion", "mantis", "dragon", "phoenix", "griffin",
|
|
"badger", "wolverine", "lynx", "jaguar", "cheetah", "leopard"
|
|
]
|
|
|
|
def _generate_verb_animal():
|
|
"""Generate a verb-animal combination"""
|
|
verbs = load_word_list('verbs.txt')
|
|
animals = load_word_list('animals.txt')
|
|
|
|
verb = random.choice(verbs)
|
|
animal = random.choice(animals)
|
|
return f"{verb}{animal}"
|
|
|
|
def generate_deployment_id():
|
|
"""Generate a deployment ID using verb-animal combination"""
|
|
return _generate_verb_animal()
|
|
|
|
def generate_attack_box_name(deployment_id):
|
|
"""Generate attack box name with a- prefix using shared deployment ID"""
|
|
return f"a-{deployment_id}"
|
|
|
|
def generate_redirector_name(deployment_id):
|
|
"""Generate redirector name with r- prefix using shared deployment ID"""
|
|
return f"r-{deployment_id}"
|
|
|
|
def generate_c2_name(deployment_id):
|
|
"""Generate C2 server name with s- prefix using shared deployment ID"""
|
|
return f"s-{deployment_id}"
|
|
|
|
def generate_phishing_name(deployment_id):
|
|
"""Generate phishing server name with p- prefix using shared deployment ID"""
|
|
return f"p-{deployment_id}"
|
|
|
|
def generate_tracker_name(deployment_id):
|
|
"""Generate tracker name with t- prefix using shared deployment ID"""
|
|
return f"t-{deployment_id}"
|
|
|
|
if __name__ == "__main__":
|
|
# Test the name generation
|
|
deployment_id = generate_deployment_id()
|
|
print(f"Testing shared deployment ID: {deployment_id}")
|
|
print(f"Attack Box: {generate_attack_box_name(deployment_id)}")
|
|
print(f"Redirector: {generate_redirector_name(deployment_id)}")
|
|
print(f"C2 Server: {generate_c2_name(deployment_id)}")
|
|
print(f"Phishing: {generate_phishing_name(deployment_id)}")
|
|
print(f"Tracker: {generate_tracker_name(deployment_id)}")
|