From 856c431e59397d481abdad57111573d5169d8f55 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Thu, 18 Mar 2021 01:39:41 -0600 Subject: [PATCH 01/11] Add nef functions to get the list of instances --- hackslabs.py | 89 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 81 insertions(+), 8 deletions(-) diff --git a/hackslabs.py b/hackslabs.py index 3e9f6f4..31713ce 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -16,9 +16,6 @@ CYYAN = Fore.LIGHTCYAN_EX RESETT = Fore.RESET - - - client = b3.client('ec2') #amiregiosn = { @@ -26,6 +23,7 @@ # "us-east-2" : "ami-0671b2fb0bfa2a568" #} + parser = argp.ArgumentParser( description=__doc__, prog="hackslabs", @@ -37,6 +35,8 @@ remember that any unauthorized computer attack is considered a cyber crime ''') + + launch_instance = parser.add_argument_group('Launch instance') launch_instance.add_argument("-l", "--launch",dest="launch", choices=("aws","gcp","azure"), @@ -57,6 +57,8 @@ launch_instance.add_argument( "-k", "--keypair", dest="keys", help="Name of your Key Pair in AWS (ssh keys)") + + instances_state = parser.add_argument_group('State of instance') instances_state.add_argument("--stop", dest="stop", help="Stop the instance or instances") @@ -67,6 +69,8 @@ help=""" Terminate the instance or instances this option will delete the instances take care""") + + otheropt = parser.add_argument_group('Other Options') otheropt.add_argument("-in" , "--getinfo", dest="getinfo", type=str, @@ -75,13 +79,66 @@ type=str, help="This option can generate a ssh key in aws, and return information that you need save") otheropt.add_argument("-ds", "--describe", dest="awsdescribe", - type=str, - help="Return all ssh keys stored in your AWS account") + type=str,help="Return all ssh keys stored in your AWS account") + + + +instance_status = parser.add_argument_group('Filter Instances for') +instance_status.add_argument("-sr", "--runnig", dest="running", + help="", type=str) +instance_status.add_argument("-st", "--terminated", dest="terminated", + help="", type=str) +instance_status.add_argument("-sp", "--pending", dest="pending", + help="", type=str) +instance_status.add_argument("-se", "--stopped", dest="stopped", + help="", type=str) + versions = parser.add_argument_group('version of script') versions.add_argument("-v", "--version", version='%(prog)s 0.1.0', action='version') + + + + + +class InstaceState(): + """[summary]This contain all functions that we need to do to get all information + about instances. + """ + + @staticmethod + def state_running(): + resp_run = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['running'] + }]) + + + @staticmethod + def state_stopped(): + resp_stopped = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['stopped'] + }]) + + + @staticmethod + def state_pending(): + resp_pending = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['pending'] + }]) + + @staticmethod + def state_terminated(): + resp_terminated = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['terminated'] + }]) + + class Instance: """ In this class we define the basic functions of EC2 instances like: @@ -200,7 +257,7 @@ def getinfo_instances(): 'Values': ['running'] }]) - print(resp) + #print(resp) tprint('Resume') @@ -297,6 +354,7 @@ def describe_ssh_keys(): print("Key Fingerprint: " + CYYAN + str(key['KeyFingerprint']) + RESETT) print("-------------------------" * 3 + "\n") + awsargp = parser.parse_args() AWSIMAGE = "ami-050184d2d97a1193f" @@ -305,6 +363,7 @@ def describe_ssh_keys(): AWSMIN = awsargp.minvm AWSKEYPAIR = awsargp.keys + awsintances = Instance(AWSIMAGE, AWSTYPE, AWSMAX, AWSMIN, AWSKEYPAIR) @@ -314,14 +373,28 @@ def describe_ssh_keys(): if len(sys.argv) < 2: print(Fore.LIGHTGREEN_EX + """ - usage mode: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] + basic commands: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] [-l LAUNCH] [--stop STOP] [-s START] [-t TERMINATE] [-ls LIST] [-in GETINFO] - """ + RESETT) + + print(CYYAN + + """ + Usage Mode: + Launch Instances: + python3 hackslabs.py -l aws -z t2.micro -mx 1 -mn 1 -k KaliLinux + + Get help: + python3 hackslabs.py --help/-h + + termibate instances + python3 hackslabs.py --terminate/t + """ + RESETT) + sys.exit(1) + if awsargp.launch and awsargp.size and awsargp.maxvm and awsargp.minvm and awsargp.keys: main() try: From c1b9f07783b20187436da64419f823fc6196e38c Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Thu, 18 Mar 2021 23:04:50 -0600 Subject: [PATCH 02/11] Mega update #0 --- .travis.yml | 4 +- README.md | 6 +- hackslabs.py | 380 ++++++++++++++++++++++++++++++++--------------- requirements.txt | 2 + 4 files changed, 272 insertions(+), 120 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5ebaed5..cd8341c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,4 +9,6 @@ before_install: - docker ps script: - - docker exec -ti awshacks python3 hackslabs.py --help \ No newline at end of file + - docker exec -ti awshacks python3 hackslabs.py --help + - docker exec -ti awshacks python3 hackslabs.py -it show + - docker exec -ti awshacks python3 hackslabs.py --version \ No newline at end of file diff --git a/README.md b/README.md index 752c2a8..a10be4e 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,10 @@ python3 hackslabs.py -l aws -z t2.micro -mx 1 -mn 1 -k KaliLinux | -in | --getinfo | all information of vm | | -v | --version | get version of script | | -ds | --describe | get info of sshkeys | +| -ds | --intances-types| get info instances and types | + + + ## [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/?nc1=h_ls) | Instance | vCPU* | CPU Credits / hour | Mem GiB| Storage | Network Performance | @@ -85,7 +89,7 @@ python3 hackslabs.py -l aws -z t2.micro -mx 1 -mn 1 -k KaliLinux | t2.medium | 2 | 24 | 4 | EBS-Only | Low to Moderate | | t2.large | 2 | 36 | 8 | EBS-Only | Low to Moderate | | t2.xlarge | 4 | 54 | 16 | EBS-Only | Moderate | -| t2.medium | 8 | 81 | 32 | EBS-Only | Moderate | +| t2.2xlarge | 8 | 81 | 32 | EBS-Only | Moderate | ## Use docker to deploy this tool diff --git a/hackslabs.py b/hackslabs.py index 31713ce..7acce46 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -5,18 +5,23 @@ import boto3 as b3 import argparse as argp +from argparse_color_formatter import ColorHelpFormatter +from rich.console import Console +from rich.table import Column, Table from art import tprint from colorama import Fore import botocore.exceptions import sys VERDE = Fore.LIGHTGREEN_EX +BBLUE = Fore.LIGHTBLUE_EX RRED = Fore.LIGHTRED_EX YELLOW = Fore.LIGHTYELLOW_EX CYYAN = Fore.LIGHTCYAN_EX RESETT = Fore.RESET client = b3.client('ec2') +console = Console() #amiregiosn = { # "us-west-1" : "ami-050184d2d97a1193f", @@ -27,7 +32,7 @@ parser = argp.ArgumentParser( description=__doc__, prog="hackslabs", - formatter_class=argp.RawDescriptionHelpFormatter, + formatter_class=ColorHelpFormatter, #argp.RawDescriptionHelpFormatter epilog=''' The purpose of this script is to be able to start an instance of Kali linux in AWS in which we can perform security tests in controlled environments. @@ -38,20 +43,20 @@ launch_instance = parser.add_argument_group('Launch instance') -launch_instance.add_argument("-l", "--launch",dest="launch", +launch_instance.add_argument("-l", "--launch", dest="launch", choices=("aws","gcp","azure"), help=""" This option requires the next attr: --awstype, --maxvm, --minvm, --keypair """) -launch_instance.add_argument("-z", "--awstype", dest="size", +launch_instance.add_argument("-z", "--awstype", dest="size", help="""choose the sice of your vm in aws, types: t2.micro, t2.small, t2.medium, t2.large, t2.xlarge. Remember visit aws.com to see the cost for each vm""") -launch_instance.add_argument("-mx", "--maxvm", dest="maxvm", +launch_instance.add_argument("-mx", "--maxvm", dest="maxvm", help="Max number of the same instances", type=int) -launch_instance.add_argument("-mn", "--minvm", dest="minvm", +launch_instance.add_argument("-mn", "--minvm", dest="minvm", help="Min number of the same instances default 1", type=int) launch_instance.add_argument( "-k", "--keypair", dest="keys", @@ -60,16 +65,36 @@ instances_state = parser.add_argument_group('State of instance') -instances_state.add_argument("--stop", dest="stop", +instances_state.add_argument("--stop", dest="stop", help="Stop the instance or instances") -instances_state.add_argument("-s", "--start", dest="start", +instances_state.add_argument("-s", "--start", dest="start", help="Start the instance or instances") -instances_state.add_argument("-t", "--terminate",dest="terminate", +instances_state.add_argument("-t", "--terminate", dest="terminate", type=str, help=""" Terminate the instance or instances this option will delete the instances take care""") +instance_status = parser.add_argument_group('Filter Instances for') +instance_status.add_argument("-sr", "--state-runnig", dest="running", + help="Return a list of the instances with status running", type=str) +instance_status.add_argument("-st", "--state-terminated", dest="terminated", + help="Return a list of the instances with status terminated", type=str) +instance_status.add_argument("-sp", "--state-pending", dest="pending", + help="Return a list of the instances with status pending", type=str) +instance_status.add_argument("-se", "--state-stopped", dest="stopped", + help="Return a list of the instances with status stopped", type=str) + + +versions = parser.add_argument_group('version of script') +versions.add_argument("-v", "--version", + version='%(prog)s 0.1.0', + action='version') +versions.add_argument("-at","--author", dest="authors", + type=str, + help="Information about the author") + + otheropt = parser.add_argument_group('Other Options') otheropt.add_argument("-in" , "--getinfo", dest="getinfo", @@ -80,25 +105,12 @@ help="This option can generate a ssh key in aws, and return information that you need save") otheropt.add_argument("-ds", "--describe", dest="awsdescribe", type=str,help="Return all ssh keys stored in your AWS account") - - - -instance_status = parser.add_argument_group('Filter Instances for') -instance_status.add_argument("-sr", "--runnig", dest="running", - help="", type=str) -instance_status.add_argument("-st", "--terminated", dest="terminated", - help="", type=str) -instance_status.add_argument("-sp", "--pending", dest="pending", - help="", type=str) -instance_status.add_argument("-se", "--stopped", dest="stopped", - help="", type=str) - - -versions = parser.add_argument_group('version of script') -versions.add_argument("-v", "--version", - version='%(prog)s 0.1.0', - action='version') - +otheropt.add_argument("-kn", "--key-name", dest="kgname", + type=str, + help="Name of the file where the will be save it, by default is saved without extension") +otheropt.add_argument("-it", "--intances-types",dest="inatnces", + type=str, + help="Show the table of instances") @@ -110,34 +122,59 @@ class InstaceState(): @staticmethod def state_running(): - resp_run = client.describe_instances(Filters=[{ - 'Name':'instance-state-name', - 'Values': ['running'] - }]) - + #resp_run = client.describe_instances(Filters=[{ + # 'Name':'instance-state-name', + # 'Values': ['running'] + #}]) + + tprint('Runnung') @staticmethod def state_stopped(): - resp_stopped = client.describe_instances(Filters=[{ - 'Name':'instance-state-name', - 'Values': ['stopped'] - }]) - + #resp_stopped = client.describe_instances(Filters=[{ + # 'Name':'instance-state-name', + # 'Values': ['stopped'] + #}]) + tprint('Stopped') + + #for reservation in resp_stopped['Reservations']: + # for stoppped in reservation['Instances']: + # print("Instance ID: {}" + VERDE + stoppped['InstanceId'] + RESETT) + # print("Time: " + VERDE + stoppped['LaunchTime'] + RESETT) + # print("Availability Zone: " + VERDE + stoppped['Placement']['AvailabilityZone'] + RESETT) + @staticmethod def state_pending(): - resp_pending = client.describe_instances(Filters=[{ - 'Name':'instance-state-name', - 'Values': ['pending'] - }]) - + #resp_pending = client.describe_instances(Filters=[{ + # 'Name':'instance-state-name', + # 'Values': ['pending'] + #}]) + + tprint('Pending') + + #for reservation in resp_pending['Reservations']: + # for pendingin in reservation['Instances']: + # print("Instance ID: {}" + VERDE + pendingin['InstanceId'] + RESETT) + # print("Time: " + VERDE + pendingin['LaunchTime'] + RESETT) + # print("Availability Zone: " + VERDE + pendingin['Placement']['AvailabilityZone'] + RESETT) + + + @staticmethod def state_terminated(): - resp_terminated = client.describe_instances(Filters=[{ - 'Name':'instance-state-name', - 'Values': ['terminated'] - }]) + #resp_terminated = client.describe_instances(Filters=[{ + # 'Name':'instance-state-name', + # 'Values': ['terminated'] + #}]) + tprint('Pending') + + #for reservation in resp_terminated['Reservations']: + # for tertminated in reservation['Instances']: + # print("Instance ID: {}" + VERDE + tertminated['InstanceId'] + RESETT) + # print("Time: " + VERDE + tertminated['LaunchTime'] + RESETT) + # print("Availability Zone: " + VERDE + tertminated['Placement']['AvailabilityZone'] + RESETT) class Instance: """ @@ -213,9 +250,9 @@ def start_instances(self, instanceid): aws_start = client.start_instances(InstanceIds=[self.instanceid]) for instances in aws_start['StartingInstances']: - print("Instance ID: {}".format(instances['InstanceId'])) - print("Code ID: {}".format(instances['CurrentState']['Code'])) - print("State ID: {}".format(instances['CurrentState']['Name'])) + print(" [+] Instance ID: {}".format(instances['InstanceId'])) + print(" [+] Code ID: {}".format(instances['CurrentState']['Code'])) + print(" [+] State ID: {}".format(instances['CurrentState']['Name'])) def stop_instances(self,instanceid): """[summary] @@ -223,14 +260,14 @@ def stop_instances(self,instanceid): instanceid ([str]): [stop the instance in aws] """ self.instanceid = instanceid - print("The next instance will be stop for few seconds: {}".format(self.instanceid)) + print(" [+] The next instance will be stop for few seconds: {}".format(self.instanceid)) aws_stop = client.stop_instances(InstanceIds=[self.instanceid]) for instances in aws_stop['StoppingInstances']: - print("Stop instance ID: {}".format(instances['InstanceId'])) - print("Code: {}".format(instances['CurrentState']['Code'])) - print("Code: {}".format(instances['CurrentState']['Name'])) + print(" [+] Stop instance ID: {}".format(instances['InstanceId'])) + print(" [+] Code: {}".format(instances['CurrentState']['Code'])) + print(" [+] Code: {}".format(instances['CurrentState']['Name'])) def terminate_instances(self,instanceid): """[summary] @@ -241,9 +278,9 @@ def terminate_instances(self,instanceid): aws_terminate = client.terminate_instances(InstanceIds=[self.instanceid]) for instances in aws_terminate['TerminatingInstances']: - print("Stopping instance ID: " + RRED + instances['InstanceId'] + RESETT) - print("Code: {}".format(instances['CurrentState']['Code'])) - print("Status: " + CYYAN + instances['CurrentState']['Name'] + RESETT) + print(" [+] Stopping instance ID: " + RRED + instances['InstanceId'] + RESETT) + print(" [+] Code: {}".format(instances['CurrentState']['Code'])) + print(" [+] Status: " + CYYAN + instances['CurrentState']['Name'] + RESETT) @staticmethod def getinfo_instances(): @@ -272,35 +309,35 @@ def getinfo_instances(): for reserved in resp['Reservations']: for info in reserved['Instances']: - print(Fore.LIGHTBLUE_EX + "Image ID: {}".format(info['ImageId'] + Fore.RESET)) - print("Instance ID: {}".format(info['InstanceId'])) - print("SSH Keys AWS: {}".format(info['KeyName'])) - print(info['LaunchTime']) - print(info['Monitoring']['State'] + "\n") + print(BBLUE + "Image ID: {}".format(info['ImageId'] + RESETT)) + print(" [+] Instance ID: {}".format(info['InstanceId'])) + print(" [+] SSH Keys AWS: {}".format(info['KeyName'])) + print(" [+] Launch time: " + info['LaunchTime']) + print(" [+] Monitoring state: " + info['Monitoring']['State'] + "\n") print(RRED + "------" *10 + Fore.RESET) for getinfo2 in resp['Reservations']: for info2 in getinfo2['Instances']: - print("Availability Zone: {}".format(info2['Placement']['AvailabilityZone'])) - print("Group name: {}".format(info2['Placement']['GroupName'])) - print("Tenancy: {}".format(info2['Placement']['Tenancy'] + "\n")) + print(" [+] Availability Zone: {}".format(info2['Placement']['AvailabilityZone'])) + print(" [+] Group name: {}".format(info2['Placement']['GroupName'])) + print(" [+] Tenancy: {}".format(info2['Placement']['Tenancy'] + "\n")) for publicinfo in resp['Reservations']: for pbl in publicinfo['Instances']: print(RRED + "------" *6 + RESETT) print(VERDE + "\n\t\tPublic options\n" + RESETT) - print("Your Public DNSname: " + VERDE + pbl['PublicDnsName'] + RESETT ) - print("Your Public IP: " + VERDE + pbl['PublicIpAddress'] + RESETT ) - print("Your Arch: {}".format(pbl['Architecture'])) - print("State Name: {}".format(pbl['State']['Name'])) - print("State code: " + VERDE + str(pbl['State']['Code']) + RESETT) - print("Subnet ID: {}".format(pbl['SubnetId'])) - print("VPC ID: " + VERDE + pbl['VpcId'] + RESETT) + print(" [+] Your Public DNSname: " + VERDE + pbl['PublicDnsName'] + RESETT ) + print(" [+] Your Public IP: " + VERDE + pbl['PublicIpAddress'] + RESETT ) + print(" [+] Your Arch: {}".format(pbl['Architecture'])) + print(" [+] State Name: {}".format(pbl['State']['Name'])) + print(" [+] State code: " + VERDE + str(pbl['State']['Code']) + RESETT) + print(" [+] Subnet ID: {}".format(pbl['SubnetId'])) + print(" [+] VPC ID: " + VERDE + pbl['VpcId'] + RESETT) for bdm in pbl['BlockDeviceMappings']: - print("Device Name: " + CYYAN + bdm['DeviceName'] + RESETT) + print(" [+] Device Name: " + CYYAN + bdm['DeviceName'] + RESETT) print(CYYAN + "------" *5 + RESETT) for element in pbl['ProductCodes']: @@ -321,24 +358,57 @@ def main(): tprint('hAcksWlabS') print(Fore.GREEN + "\tBy: Moises Tapia\t" + RESETT + VERDE + "Github: https://github.com/MoisesTapia/" + RESETT) -def ssh_key_gen(keyssh): +def print_help(): + print(Fore.LIGHTGREEN_EX + + """ + basic commands: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] + [-l LAUNCH] [--stop STOP] [-s START] [-t TERMINATE] + [-ls LIST] [-in GETINFO] + """ + + RESETT) + + print(CYYAN + + """ + Usage Mode: + Launch Instances: + python3 hackslabs.py -l aws -z t2.micro -mx 1 -mn 1 -k KaliLinux + + Get help: + python3 hackslabs.py --help/-h + + termibate instances + python3 hackslabs.py --terminate/t + """ + RESETT) + + +def ssh_key_gen(keyssh, ssh_keyname): """[summary] Args: keyssh ([str]): [create a new ssh keys in aws] """ - keypair = client.create_key_pair(KeyName=keyssh) - - print("Name of the SSH Key: " + VERDE + keypair.get('KeyName') + RESETT) - print("Key Pair ID: " + RRED + keypair.get('KeyPairId') + RESETT) - - print("The Key Finger Print: " + CYYAN + str(keypair.get('KeyFingerprint')) + RESETT) - - print("Copy the next string inside of anywhere txt file: \n") - - print(CYYAN + keypair.get('KeyMaterial') + RESETT) - - print(RRED + "------" *10 + RESETT) - + try: + file_name = ssh_keyname + keypair = client.create_key_pair(KeyName=keyssh) + encode_key = keypair.get('KeyMaterial') + + print("[✔]" + "Name of the SSH Key: " + VERDE + keypair.get('KeyName') + RESETT) + print("[✔]" + "Key Pair ID: " + RRED + keypair.get('KeyPairId') + RESETT) + print("[✔]" + "The Key Finger Print: " + CYYAN + str(keypair.get('KeyFingerprint')) + RESETT) + + print(" [+] Your key was generated and saved in the file named : \n") + + f= open(file_name,"w+") + f.writelines(encode_key) + print(" [✔] file name: " + VERDE + f.name + RESETT + "\n") + f.close() + print(RRED + "------" *10 + RESETT) + + except botocore.exceptions.ClientError as e: + if e.response['Error']['Code'] == 'InvalidKeyPair.Duplicate': + print(RRED + "\n\t\t[X] " + CYYAN + "Error occurred the keys already exist" + RESETT + "\n") + print(VERDE + "\t\tList the existent Keys with: " + BBLUE + " -ds" + RESETT + "\n") + + def describe_ssh_keys(): """get the all information about ssh keys stored in aws""" rep_describe = client.describe_key_pairs() @@ -349,11 +419,80 @@ def describe_ssh_keys(): for key in rep_describe['KeyPairs']: print(YELLOW + "\t\t Information of Key \n" + RESETT) - print("Key Fingerprint: " + RRED + str(key['KeyName']) + RESETT) - print("Key ID: " + VERDE + str(key['KeyPairId']) + RESETT) - print("Key Fingerprint: " + CYYAN + str(key['KeyFingerprint']) + RESETT) + print(" [✔] Key Fingerprint: " + RRED + str(key['KeyName']) + RESETT) + print(" [✔] Key ID: " + VERDE + str(key['KeyPairId']) + RESETT) + print(" [✔] Key Fingerprint: " + CYYAN + str(key['KeyFingerprint']) + RESETT) print("-------------------------" * 3 + "\n") +def types_instances(): + + authors = Table(show_header=True, header_style="bold green") + authors.add_column("Type", style="dim", justify="center") + authors.add_column("vCPU*", style="dim", justify="center") + authors.add_column("CPU Credits / hour", style="dim", justify="center") + authors.add_column("Mem GiB", style="dim", justify="center") + authors.add_column("Storage", style="dim", justify="center") + authors.add_column("Network Performance", style="dim", justify="center") + authors.add_row( + "t2.nano", + "1", + "3", + "0.5", + "EBS-Only", + "Low" + ) + authors.add_row( + "t2.micro", + "1", + "6", + "1", + "EBS-Only", + "Low to Moderate" + ) + authors.add_row( + "t2.small", + "1", + "12", + "2", + "EBS-Only", + "Low to Moderate" + ) + authors.add_row( + "t2.medium", + "2", + "24", + "4", + "EBS-Only", + "Low to Moderate" + ) + authors.add_row( + "t2.large", + "2", + "36", + "8", + "EBS-Only", + "Low to Moderate" + ) + authors.add_row( + "t2.xlarge", + "4", + "54", + "16", + "EBS-Only", + "Moderate" + ) + authors.add_row( + "t2.2xlarge", + "8", + "81", + "32", + "EBS-Only", + "Moderate" + ) + console.print(authors) + +def script_authors(): + pass awsargp = parser.parse_args() @@ -366,35 +505,14 @@ def describe_ssh_keys(): awsintances = Instance(AWSIMAGE, AWSTYPE, AWSMAX, AWSMIN, AWSKEYPAIR) - +getstatus = InstaceState() #print(awsargp) debugging argparse commands if len(sys.argv) < 2: - print(Fore.LIGHTGREEN_EX + - """ - basic commands: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] - [-l LAUNCH] [--stop STOP] [-s START] [-t TERMINATE] - [-ls LIST] [-in GETINFO] - """ - + RESETT) - - print(CYYAN + - """ - Usage Mode: - Launch Instances: - python3 hackslabs.py -l aws -z t2.micro -mx 1 -mn 1 -k KaliLinux - - Get help: - python3 hackslabs.py --help/-h - - termibate instances - python3 hackslabs.py --terminate/t - """ + RESETT) - + print_help() sys.exit(1) - if awsargp.launch and awsargp.size and awsargp.maxvm and awsargp.minvm and awsargp.keys: main() try: @@ -403,17 +521,43 @@ def describe_ssh_keys(): except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == 'InvalidKeyPair.NotFound': print(RRED + "\tSSH Keys not found, you need a key to connect to your instances" + RESETT) +elif awsargp.launch and awsargp.size and awsargp.maxvm and awsargp.minvm and not awsargp.keys: + print(RRED + "\n\t\tSet your AWS SSH Keys ... " + RESETT) + print(RRED + """ + \n\t\tIf you do not have ssh keys you can generate a new ssh keys... + python3 hackslabs.py -kg -kn name.txt/.pem + """ + RESETT) +elif awsargp.launch and not awsargp.size and awsargp.maxvm and awsargp.minvm and awsargp.keys: + print(RRED + "\n\t\tSet the type of instance ... " + RESETT + "\n") + print("\t\tSee more in: " + VERDE + "https://aws.amazon.com/ec2/instance-types/" + RESETT) elif awsargp.start: awsintances.start_instances(awsargp.start) elif awsargp.stop: awsintances.stop_instances(awsargp.stop) elif awsargp.terminate: awsintances.terminate_instances(awsargp.terminate) -elif awsargp.getinfo: +elif awsargp.getinfo == "vm": awsintances.getinfo_instances() -elif awsargp.sshkeygen: +elif awsargp.sshkeygen and awsargp.kgname: print(RRED + "\n\t\tGenerating your new SSH Key " + RESETT) - print("\tSave this key: \n") - ssh_key_gen(awsargp.sshkeygen) -elif awsargp.awsdescribe: - describe_ssh_keys() \ No newline at end of file + ssh_key_gen(awsargp.sshkeygen, awsargp.kgname) +elif awsargp.sshkeygen and not awsargp.kgname: + print(RRED + "\n\t\tPlease Set the name of your File ... " + RESETT) + print(CYYAN + "\n\t\tusage mode: python3 hackslabs.py -kg -kn name.txt/.pem" + RESETT + "\n") +elif awsargp.awsdescribe == "list": + describe_ssh_keys() +elif awsargp.running == "vm": + getstatus.state_running() +elif awsargp.terminated == "vm": + getstatus.state_terminated() +elif awsargp.pending == "vm": + getstatus.state_pending() +elif awsargp.inatnces == "show": + types_instances() +elif awsargp.authors == "list": + script_authors() +else: + print("\n" + "▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀" * 4) + tprint('Error 404', font="knob") + print("▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀" * 4 + "\n") + print_help() diff --git a/requirements.txt b/requirements.txt index d26f9bd..7da813c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,5 @@ argparse==1.4.0 boto3==1.17.25 awscli==1.19.27 rsa>=4.7 # not directly required, pinned by Snyk to avoid a vulnerability +argparse-color-formatter==1.2.2.post2 +rich==9.13.0 \ No newline at end of file From 79480b0f17e45f10e1ee3b0c8bc8fc9e912fd7ef Mon Sep 17 00:00:00 2001 From: Moises Tapia Date: Fri, 19 Mar 2021 08:30:54 -0600 Subject: [PATCH 03/11] update Banner --- img/hackslabs1.png | Bin 0 -> 29589 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/hackslabs1.png diff --git a/img/hackslabs1.png b/img/hackslabs1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0a07ccca86e95db4d504b346748df41a3cd595 GIT binary patch literal 29589 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 literal 0 HcmV?d00001 From f3ceeb714922d3f46b87987644c5ffbb49cc8910 Mon Sep 17 00:00:00 2001 From: Moises Tapia Date: Fri, 19 Mar 2021 08:34:19 -0600 Subject: [PATCH 04/11] add new banner --- img/hackslabs2.png | Bin 0 -> 29159 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/hackslabs2.png diff --git a/img/hackslabs2.png b/img/hackslabs2.png new file mode 100644 index 0000000000000000000000000000000000000000..4fdcffa201b1d3660753f29d39ec2c546185dd19 GIT binary patch literal 29159 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 Ai~s-t literal 0 HcmV?d00001 From bab7bbd285c5c6d626475526ad838a22bcc71433 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Fri, 19 Mar 2021 08:35:26 -0600 Subject: [PATCH 05/11] Update new Banner --- img/hackslabs.png | Bin 12258 -> 29159 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/img/hackslabs.png b/img/hackslabs.png index c54ec438bd1dd48f407b4857695bfd1594eb553c..4fdcffa201b1d3660753f29d39ec2c546185dd19 100644 GIT binary patch literal 29159 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 Ai~s-t literal 12258 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 From 8695451ec2fc3b529ac8bf84cdb2fd0774143330 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Fri, 19 Mar 2021 22:34:43 -0600 Subject: [PATCH 06/11] Finished the first version 0.1.0 --- hackslabs.py | 84 +++++++++++++++++++++++++-------------------- img/hackslabs1.png | Bin 29589 -> 0 bytes img/hackslabs2.png | Bin 29159 -> 0 bytes 3 files changed, 46 insertions(+), 38 deletions(-) delete mode 100644 img/hackslabs1.png delete mode 100644 img/hackslabs2.png diff --git a/hackslabs.py b/hackslabs.py index 7acce46..6c27981 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -108,7 +108,7 @@ otheropt.add_argument("-kn", "--key-name", dest="kgname", type=str, help="Name of the file where the will be save it, by default is saved without extension") -otheropt.add_argument("-it", "--intances-types",dest="inatnces", +otheropt.add_argument("-it", "--intances-types",dest="instances", type=str, help="Show the table of instances") @@ -122,59 +122,64 @@ class InstaceState(): @staticmethod def state_running(): - #resp_run = client.describe_instances(Filters=[{ - # 'Name':'instance-state-name', - # 'Values': ['running'] - #}]) + resp_run = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['running'] + }]) tprint('Runnung') - + + for reservation in resp_run['Reservations']: + for instances in reservation['Instances']: + print(" [🏃] Id of instances: {}".format(instances['InstanceId'])) + print(" [🏃] Date: ", instances['LaunchTime']) + print(" [🏃] Availability Zone: {}".format(instances['Placement']['AvailabilityZone'])) + @staticmethod def state_stopped(): - #resp_stopped = client.describe_instances(Filters=[{ - # 'Name':'instance-state-name', - # 'Values': ['stopped'] - #}]) + resp_stopped = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['stopped'] + }]) tprint('Stopped') - #for reservation in resp_stopped['Reservations']: - # for stoppped in reservation['Instances']: - # print("Instance ID: {}" + VERDE + stoppped['InstanceId'] + RESETT) - # print("Time: " + VERDE + stoppped['LaunchTime'] + RESETT) - # print("Availability Zone: " + VERDE + stoppped['Placement']['AvailabilityZone'] + RESETT) + for reservation in resp_stopped['Reservations']: + for instances in reservation['Instances']: + print(" [ 🛑 ] Id of instances: {}".format(instances['InstanceId'])) + print(" [ 🛑 ] Date: ", instances['LaunchTime']) + print(" [ 🛑 ] Availability Zone: {}".format(instances['Placement']['AvailabilityZone'])) @staticmethod def state_pending(): - #resp_pending = client.describe_instances(Filters=[{ - # 'Name':'instance-state-name', - # 'Values': ['pending'] - #}]) + resp_pending = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['pending'] + }]) tprint('Pending') - #for reservation in resp_pending['Reservations']: - # for pendingin in reservation['Instances']: - # print("Instance ID: {}" + VERDE + pendingin['InstanceId'] + RESETT) - # print("Time: " + VERDE + pendingin['LaunchTime'] + RESETT) - # print("Availability Zone: " + VERDE + pendingin['Placement']['AvailabilityZone'] + RESETT) - + for reservation in resp_pending['Reservations']: + for instances in reservation['Instances']: + print(" [⌛] Id of instances: {}".format(instances['InstanceId'])) + print(" [⌛] Date: ", instances['LaunchTime']) + print(" [⌛] Availability Zone: {}".format(instances['Placement']['AvailabilityZone'])) - @staticmethod def state_terminated(): - #resp_terminated = client.describe_instances(Filters=[{ - # 'Name':'instance-state-name', - # 'Values': ['terminated'] - #}]) + resp_terminated = client.describe_instances(Filters=[{ + 'Name':'instance-state-name', + 'Values': ['terminated'] + }]) - tprint('Pending') + tprint('Terminated') - #for reservation in resp_terminated['Reservations']: - # for tertminated in reservation['Instances']: - # print("Instance ID: {}" + VERDE + tertminated['InstanceId'] + RESETT) - # print("Time: " + VERDE + tertminated['LaunchTime'] + RESETT) - # print("Availability Zone: " + VERDE + tertminated['Placement']['AvailabilityZone'] + RESETT) + for reservation in resp_terminated['Reservations']: + for instances in reservation['Instances']: + print(" [⚰️ ] Id of instances: {}".format(instances['InstanceId'])) + print(" [⚰️ ] Date: ", instances['LaunchTime']) + print(" [⚰️ ] Availability Zone: {}".format(instances['Placement']['AvailabilityZone'])) + print("---" * 15 + "\n") class Instance: """ @@ -312,7 +317,7 @@ def getinfo_instances(): print(BBLUE + "Image ID: {}".format(info['ImageId'] + RESETT)) print(" [+] Instance ID: {}".format(info['InstanceId'])) print(" [+] SSH Keys AWS: {}".format(info['KeyName'])) - print(" [+] Launch time: " + info['LaunchTime']) + print(" [+] Date: ", info['LaunchTime']) print(" [+] Monitoring state: " + info['Monitoring']['State'] + "\n") print(RRED + "------" *10 + Fore.RESET) @@ -378,6 +383,7 @@ def print_help(): termibate instances python3 hackslabs.py --terminate/t + """ + RESETT) @@ -548,11 +554,13 @@ def script_authors(): describe_ssh_keys() elif awsargp.running == "vm": getstatus.state_running() +elif awsargp.stopped == "vm": + getstatus.state_stopped() elif awsargp.terminated == "vm": getstatus.state_terminated() elif awsargp.pending == "vm": getstatus.state_pending() -elif awsargp.inatnces == "show": +elif awsargp.instances == "show": types_instances() elif awsargp.authors == "list": script_authors() diff --git a/img/hackslabs1.png b/img/hackslabs1.png deleted file mode 100644 index cb0a07ccca86e95db4d504b346748df41a3cd595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29589 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 diff --git a/img/hackslabs2.png b/img/hackslabs2.png deleted file mode 100644 index 4fdcffa201b1d3660753f29d39ec2c546185dd19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29159 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 Ai~s-t From 86c49da270f76a19164f2f614f6b2230f27e8bdc Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Sat, 20 Mar 2021 13:22:59 -0600 Subject: [PATCH 07/11] Update .py to approve the sintax --- hackslabs.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/hackslabs.py b/hackslabs.py index 6c27981..775f15c 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -122,6 +122,9 @@ class InstaceState(): @staticmethod def state_running(): + """Return all Vm with status running + 'Values': ['running'] + """ resp_run = client.describe_instances(Filters=[{ 'Name':'instance-state-name', 'Values': ['running'] @@ -137,6 +140,9 @@ def state_running(): @staticmethod def state_stopped(): + """Return all Vm with status stopped + 'Values': ['stopped'] + """ resp_stopped = client.describe_instances(Filters=[{ 'Name':'instance-state-name', 'Values': ['stopped'] @@ -152,6 +158,9 @@ def state_stopped(): @staticmethod def state_pending(): + """Return all Vm with status pending + 'Values': ['pending'] + """ resp_pending = client.describe_instances(Filters=[{ 'Name':'instance-state-name', 'Values': ['pending'] @@ -167,6 +176,9 @@ def state_pending(): @staticmethod def state_terminated(): + """Return all Vm with status terminated + 'Values': ['terminated'] + """ resp_terminated = client.describe_instances(Filters=[{ 'Name':'instance-state-name', 'Values': ['terminated'] @@ -364,6 +376,7 @@ def main(): print(Fore.GREEN + "\tBy: Moises Tapia\t" + RESETT + VERDE + "Github: https://github.com/MoisesTapia/" + RESETT) def print_help(): + """ Print the first Main is the srcrip do not recive some argument""" print(Fore.LIGHTGREEN_EX + """ basic commands: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] @@ -386,7 +399,6 @@ def print_help(): """ + RESETT) - def ssh_key_gen(keyssh, ssh_keyname): """[summary] Args: @@ -414,9 +426,8 @@ def ssh_key_gen(keyssh, ssh_keyname): print(RRED + "\n\t\t[X] " + CYYAN + "Error occurred the keys already exist" + RESETT + "\n") print(VERDE + "\t\tList the existent Keys with: " + BBLUE + " -ds" + RESETT + "\n") - def describe_ssh_keys(): - """get the all information about ssh keys stored in aws""" + """Get the all information about ssh keys stored in aws""" rep_describe = client.describe_key_pairs() # print(rep_describe) debugging response @@ -431,7 +442,9 @@ def describe_ssh_keys(): print("-------------------------" * 3 + "\n") def types_instances(): - + """Print: + The table with all instances types in aws in wich you can deploy your Kali Linux VM + """ authors = Table(show_header=True, header_style="bold green") authors.add_column("Type", style="dim", justify="center") authors.add_column("vCPU*", style="dim", justify="center") @@ -498,7 +511,19 @@ def types_instances(): console.print(authors) def script_authors(): - pass + """Print the all contributors""" + authors = Table(show_header=True, header_style="bold green") + authors.add_column("Username", style="dim", justify="center") + authors.add_column("Name", style="dim", justify="center") + authors.add_column("Twitter", style="dim", justify="center") + authors.add_column("Url", style="dim", justify="center") + authors.add_row( + "moisestapia", + "Moises Tapia", + "@equinockx", + "https://github.com/MoisesTapia" + ) + console.print(authors) awsargp = parser.parse_args() From 0a0485948ca04099131718009ae23105f3c2c9f2 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Sat, 20 Mar 2021 13:28:11 -0600 Subject: [PATCH 08/11] Fix identation --- hackslabs.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hackslabs.py b/hackslabs.py index 775f15c..6969afd 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -122,7 +122,8 @@ class InstaceState(): @staticmethod def state_running(): - """Return all Vm with status running + """ + Return all Vm with status running 'Values': ['running'] """ resp_run = client.describe_instances(Filters=[{ @@ -140,7 +141,8 @@ def state_running(): @staticmethod def state_stopped(): - """Return all Vm with status stopped + """ + Return all Vm with status stopped 'Values': ['stopped'] """ resp_stopped = client.describe_instances(Filters=[{ @@ -158,7 +160,8 @@ def state_stopped(): @staticmethod def state_pending(): - """Return all Vm with status pending + """ + Return all Vm with status pending 'Values': ['pending'] """ resp_pending = client.describe_instances(Filters=[{ @@ -176,7 +179,8 @@ def state_pending(): @staticmethod def state_terminated(): - """Return all Vm with status terminated + """ + Return all Vm with status terminated 'Values': ['terminated'] """ resp_terminated = client.describe_instances(Filters=[{ From 07e0a7ccbf4408098d22594ccb48d8841d1a8b43 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Sat, 20 Mar 2021 13:31:28 -0600 Subject: [PATCH 09/11] Fix identation #3 --- hackslabs.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hackslabs.py b/hackslabs.py index 6969afd..c07ff09 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -123,8 +123,8 @@ class InstaceState(): @staticmethod def state_running(): """ - Return all Vm with status running - 'Values': ['running'] + Return all Vm with status running + 'Values': ['running'] """ resp_run = client.describe_instances(Filters=[{ 'Name':'instance-state-name', @@ -142,8 +142,8 @@ def state_running(): @staticmethod def state_stopped(): """ - Return all Vm with status stopped - 'Values': ['stopped'] + Return all Vm with status stopped + 'Values': ['stopped'] """ resp_stopped = client.describe_instances(Filters=[{ 'Name':'instance-state-name', @@ -161,8 +161,8 @@ def state_stopped(): @staticmethod def state_pending(): """ - Return all Vm with status pending - 'Values': ['pending'] + Return all Vm with status pending + 'Values': ['pending'] """ resp_pending = client.describe_instances(Filters=[{ 'Name':'instance-state-name', @@ -180,8 +180,8 @@ def state_pending(): @staticmethod def state_terminated(): """ - Return all Vm with status terminated - 'Values': ['terminated'] + Return all Vm with status terminated + 'Values': ['terminated'] """ resp_terminated = client.describe_instances(Filters=[{ 'Name':'instance-state-name', @@ -380,7 +380,7 @@ def main(): print(Fore.GREEN + "\tBy: Moises Tapia\t" + RESETT + VERDE + "Github: https://github.com/MoisesTapia/" + RESETT) def print_help(): - """ Print the first Main is the srcrip do not recive some argument""" + """Print the first Main is the srcrip do not recive some argument""" print(Fore.LIGHTGREEN_EX + """ basic commands: hackslabs.py [-h] [-z SIZE] [-mx MAXVM] [-mn MINVM] [-k KEYS] From 4b7258d925d407f924be00d2a7abcf28c04640e0 Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Sat, 20 Mar 2021 13:34:43 -0600 Subject: [PATCH 10/11] Remove the unused module --- hackslabs.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hackslabs.py b/hackslabs.py index c07ff09..bed4d87 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -7,7 +7,6 @@ import argparse as argp from argparse_color_formatter import ColorHelpFormatter from rich.console import Console -from rich.table import Column, Table from art import tprint from colorama import Fore import botocore.exceptions @@ -417,7 +416,7 @@ def ssh_key_gen(keyssh, ssh_keyname): print("[✔]" + "Key Pair ID: " + RRED + keypair.get('KeyPairId') + RESETT) print("[✔]" + "The Key Finger Print: " + CYYAN + str(keypair.get('KeyFingerprint')) + RESETT) - print(" [+] Your key was generated and saved in the file named : \n") + print("\n[+] Your key was generated and saved in the file named : \n") f= open(file_name,"w+") f.writelines(encode_key) From d81126511e840716d11b855286a0718f60af6b4e Mon Sep 17 00:00:00 2001 From: MoisesTapia Date: Sat, 20 Mar 2021 13:36:47 -0600 Subject: [PATCH 11/11] Remove the unused module #2 --- hackslabs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/hackslabs.py b/hackslabs.py index bed4d87..1bddd37 100644 --- a/hackslabs.py +++ b/hackslabs.py @@ -7,6 +7,7 @@ import argparse as argp from argparse_color_formatter import ColorHelpFormatter from rich.console import Console +from rich.table import Column, Table from art import tprint from colorama import Fore import botocore.exceptions