commit 49b89e22c6e6a3a3c677d13a0e9532c32fc56a5d
parent 303a9cafc9a1b985eb4e7438faf8b2848c11508d
Author: Michael Constantine Dimopoulos <31562759+MichaelDim02@users.noreply.github.com>
Date: Wed, 24 Jan 2018 22:26:03 +0000
Delete colloide09.py
Diffstat:
| D | colloide09.py | | | 342 | ------------------------------------------------------------------------------- |
1 file changed, 0 insertions(+), 342 deletions(-)
diff --git a/colloide09.py b/colloide09.py
@@ -1,342 +0,0 @@
-#!/usr/bin/python
-#
-# MCD's Colloide v0.9
-# Thessaloniki, GREECE 2017 - greekhacking.gr
-# Michael Constantine Dimopoulos
-# GNU General Public Lisence
-# Pronounced: Kow Lawd
-#
-# DO NOT USE FOR MALICIOUS PURPOSES!
-# THE DEVELOPER HAS NO RESPONSIBLITY FOR ANY DAMAGE CAUSED!
-#
-#
-# _.:' VERSION DIARY ':._
-#
-# In version 0.1:
-# Program is working!
-# In version 0.2:
-# Minor bugs fixed
-# Updated the links file
-# In version 0.3:
-# Major bug fixed
-# Minor bugs fixed as well
-# Updated the links file
-# Added option / argument parsing
-# Added legals
-# In version 0.4:
-# Minor bugs fixed
-# General stracture has been updated
-# Wordlist option added - Only links.txt could be used before this update
-# Added ASCII logo
-# Added the sexy ASCII wolf
-# In version 0.5 MAJOR RELEASE
-# Minor bugs fixed
-# Major bug fixed
-# Updated ASCII logo
-# Updated ASCII wolf
-# Program has been released to the masses!
-# In version 0.6:
-# Minor bugs fixed
-# Option to save the pages into a txt page added
-# Added some comments to help contributors read the code
-# Added a function that checks whether the URL is valid or not
-# In version 0.7:
-# One major bug fixed
-# Minor bugs fixed as well
-# In version 0.8:
-# Added colors
-# In version 0.8.5
-# Added status code next to links
-# Added more link wordlists, more specific to each language
-# In version 0.9:
-# Added status code method
-#
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-#
-# Project on GitHub:
-# http://yamechanic.com/C3vc
-# Website:
-# http://yamechanic.com/C41V
-#
-# Report bugs: anivsante2@gmail.com
-# or /issues if you use github
-#
-# # # # # # # # # # # # # # # # # # # # # # # #
-
-# MODULES / LIBRARIES:
-
-from __future__ import print_function #because some print functions print quotation marks and commas
-import sys
-import argparse
-import httplib
-import os
-import socket
-from urllib2 import Request, urlopen, URLError, HTTPError
-import colorama
-from colorama import Fore, Back, Style
-
-# CODE:
-
-def banner(): #banner with logo - patorjk.com
- print("MCD's")
- print("_________ .__ .__ .__ .___ ")
- print("\_ ___ \ ____ | | | | ____ |__| __| _/____ ")
- print("/ \ \/ / _ \| | | | / _ \| |/ __ |/ __ \ ")
- print("\ \___( <_> ) |_| |_( <_> ) / /_/ \ ___/")
- print(" \______ /\____/|____/____/\____/|__\____ |\___ >")
- print(" \/ \/ \/ ")
- print("MCD's")
- print("Colloide v 0.9")
- print("Michael C. Dimopoulos 2017")
- print("www.greekhacking.gr\n\n")
-def opts():
- print(" --status Use the HTTP status code method (Faster)")
- print(" --urlerror Use the HTTP/URL error method (More reliable)\n")
- print(" -h --help Display the help panel (Shown right now)")
- print(" -u --URL The URL to the website")
- print(" -p --pages Path to the wordlist with the page names / links")
- print(" -l --legals License & legal disclaimer")
- print(" -s --save Save pages on a text file (name of the file)")
- print(" -L --limit Add limit to the pages (Integer)")
- print(" -v --verbose Show all attempts\n\n")
-def legals():
- #License
- print("MCD's Colloide version 0.9 is free software. It can be re-distributed ")
- print("and / or modified under the terms of the GNU General Public License")
- print("as published by the Free Software Foundation; For more information")
- print("read the GNU General Public License that comes")
- print("along with this program.\n\n")
- #Disclaimer
- print("[!] Legal Disclaimer [!]")
- print("Information distributed by this tool may be used maliciously.")
- print("The developer has no responsibility for any damage caused by")
- print("this script or any unauthorized use of it.\n")
-def wolf():
- #prints the ASCII colloide wolf
- print(" ___________________ , ,")
- print("[ COLLOIDE MISSION! ] |\---/| __--__")
- print(" / [ ,:',. (`. ")
- print(" __.-'| / | `'_. .|")
- print(" __ ___.-' \__) | _ : () _ |")
- print(" .-' ' : : _/ | . . |")
- print(" / , . . _ | ':_) ,_|'")
- print(" : ; : : _/ -- ")
- print(" | | .' __: / ")
- print(" | : /'----'| \ | __________")
- print(" \ |\ | | /| |_______,-----'")
- print(" '.'| /__,----| \ | ")
- print("_______| /|.' '.l \\\_")
- print(" || || '-'")
- print(" '-''-'\n")
-def scan_start():
- print(Fore.RED + Style.BRIGHT + "[!] Report bugs: anivsante2@gmail.com \n" + Style.RESET_ALL)
- #OR https://github.com/MichaelDim02/colloide.py/issues
- print(Fore.RED + Style.BRIGHT + "[!] Press Ctrl + C to terminate the process.\n" + Style.RESET_ALL)
-
-def check_names(infile): #Checking the path to the wordlist
- if os.path.exists(infile):
- if status_method:
- banner() #calls the banner function
- wolf() #calls the sexy ASCII wolf wallpaper
- statusfindAdmin() #calls the function that basically does the job
- elif error_method:
- banner()
- wolf()
- findAdmin()
- else: #in case wordlist cant be found
- banner()
- opts()
- print(Fore.RED + Style.BRIGHT + "[-] Invalid path to the wordlist. File could not be found.\n" + Style.RESET_ALL)
-# THIS IS THE STATUS CODE METHOD
-def statusfindAdmin():
- if txt:
- tfilename = txt
- f = open(str(tfilename) ,'w+')
- f.write("MCD's Colloide v0.9\n")
- f.write("Michel Constantine Dimopoulos\n")
- f.write("Thessaloniki, Greece 2017\n")
- f.write("greekhacking.gr\n")
- print("\n")
- scan_start()
- try:
- IP = socket.gethostbyname(URL)
- print(Fore.RED + Style.BRIGHT + "[!] Attacking host: ", IP, " - ", URL, "\n" + Style.RESET_ALL)
- if txt:
- f.write("Attacking:\n")
- f.write("\n")
- f.write(str(URL))
- f.write("\n")
- f.write(str(IP))
- f.write("\n\n")
- except socket.gaierror:
- print(Fore.RED + Style.BRIGHT + "[!] Invalid URL address. Connection could not be established;\n" + Style.RESET_ALL)
- sys.exit(0)
- fi = open(links,"r");
- found = 0
- while (found <= int(limit)):
- try:
- con_ = httplib.HTTPConnection(str(URL))
- sub_link = fi.readline() #Page name
- if not sub_link:
- break
- link = URL #website name
- req_link = "http://"+link+"/"+sub_link #Final link for attempt
- req = Request(req_link)
- con_link = link + "/" + sub_link
- con_.request("GET", "/" + str(sub_link))
- int_status_code_ = con_.getresponse().status
- status_code_ = str(int_status_code_)
- if ver:
- notworking = "[ATTEMPT] - "+ status_code_ + " - " + req_link
- #notworking.rstrip() So it does not print lines between attempt output line
- #identifies links that show up HTTP error
- if status_code_.startswith("4"):
- print(Fore.GREEN + notworking.rstrip() + Style.RESET_ALL)
- else:
- if ver != True:
- print("[+] Link Found" + " - " + status_code_ +" -"+ " -> " + req_link + "")
- # if verbose if off
- if ver:
- print("\n[+] Link Found" + " - " + status_code_ +" -"+ " -> " + req_link + "")
- #because in verbose mode failed attempts don't have \n at the end
- found = found + 1
- if txt:
- f = open(str(tfilename) ,'a')
- f.write(req_link + "\n")
- else:
- pass
- except KeyboardInterrupt:
- print(Fore.RED + Style.BRIGHT + "\n[!] Process has been terminated - Ctrl + C has been pressed.\n" + Style.RESET_ALL)
- if txt:
- print("All working pages have been saved at: ", tfilename, "\n")
- sys.exit(0)
- if found > int(limit):
- print(Fore.RED + Style.BRIGHT + "[!] Process has been terminated due to the limitation that has been set\n" + Style.RESET_ALL)
- if txt:
- print("All working pages have been saved at: ", tfilename, "\n")
- f.close()
-# THIS IS THE HTTP/URL ERROR METHOD
-def findAdmin():
- if txt:
- tfilename = txt
- f = open(str(tfilename) ,'w+')
- f.write("MCD's Colloide v0.9\n")
- f.write("Michel Constantine Dimopoulos\n")
- f.write("Thessaloniki, Greece 2017\n")
- f.write("greekhacking.gr\n")
- print("\n")
- scan_start()
- try:
- IP = socket.gethostbyname(URL)
- print(Fore.RED + Style.BRIGHT + "[!] Attacking host: ", IP, " - ", URL, "\n" + Style.RESET_ALL)
- if txt:
- f.write("Attacking:\n")
- f.write("\n")
- f.write(str(URL))
- f.write("\n")
- f.write(str(IP))
- f.write("\n\n")
- except socket.gaierror:
- print(Fore.RED + Style.BRIGHT + "[!] Invalid URL address. Connection could not be established;\n" + Style.RESET_ALL)
- sys.exit(0)
- fi = open(links,"r");
- found = 0
- while (found <= int(limit)):
- try:
- con_ = httplib.HTTPConnection(str(URL))
- sub_link = fi.readline() #Page name
- if not sub_link:
- break
- link = URL #website name
- req_link = "http://"+link+"/"+sub_link #Final link for attempt
- req = Request(req_link)
- con_link = link + "/" + sub_link
- con_.request("GET", "/" + str(sub_link))
- int_status_code_ = con_.getresponse().status
- status_code_ = str(int_status_code_)
- if ver:
- notworking = "[ATTEMPT] - "+ status_code_ + " - " + req_link
- #notworking.rstrip() So it does not print lines between attempt output line
- #identifies links that show up HTTP error
- try:
- response = urlopen(req)
- except HTTPError as e:
- if ver:
- print(Fore.GREEN + notworking.rstrip() + Style.RESET_ALL)
- continue
- except URLError as e:
- if ver:
- print(Fore.GREEN + notworking.rstrip() + Style.RESET_ALL)
- continue
- else: #prints working link
- if ver != True:
- print("[+] Link Found" + " - " + status_code_ +" -"+ " -> " + req_link + "")
- # if verbose if off
- if ver:
- print("\n[+] Link Found" + " - " + status_code_ +" -"+ " -> " + req_link + "")
- #because in verbose mode failed attempts don't have \n at the end
- found = found + 1
- if txt:
- f = open(str(tfilename) ,'a')
- f.write(req_link + "\n")
- else:
- pass
- except KeyboardInterrupt:
- print(Fore.RED + Style.BRIGHT + "\n[!] Process has been terminated - Ctrl + C has been pressed.\n" + Style.RESET_ALL)
- if txt:
- print("All working pages have been saved at: ", tfilename, "\n")
- sys.exit(0)
- if found > int(limit):
- print(Fore.RED + Style.BRIGHT + "[!] Process has been terminated due to the limitation that has been set\n" + Style.RESET_ALL)
- if txt:
- print("All working pages have been saved at: ", tfilename, "\n")
-
-#Argument parsing
-parser = argparse.ArgumentParser()
-parser.add_argument("--status", action="store_true", help="Use the HTTP status code method")
-parser.add_argument("--urlerror", action="store_true", help="Use the HTTP/URL error method")
-parser.add_argument("-u", "--URL", help="The URL to the website")
-parser.add_argument("-p", "--pages", help="Path to the wordlist with the page names / links")
-parser.add_argument("-l", "--legals", action='store_true', help="License & legal disclaimer")
-parser.add_argument("-s", "--save", help="Save all working pages on a text file")
-parser.add_argument("-L", "--limit", help="Add limit to the pages. Integer", default="10")
-parser.add_argument("-v", "--verbose", help="Show all attempts", action="store_true")
-
-#Declaring Argument Variables
-args = parser.parse_args()
-status_method = args.status
-error_method = args.urlerror
-links = args.pages
-URL = args.URL
-txt = args.save
-limit = args.limit
-ver = args.verbose
-
-if error_method:
- status_method = False
-else:
- status_method = True
-if args.URL and args.pages:
- check_names(links)
-elif args.legals:
- banner()
- legals()
-else:
- banner()
- opts()
-print("Usage: python colloide.py -u [URL] -p [WORDLIST] -s [TEXT FILE] -L [NUMBER]")
-
-#
-# MCD's
-# Colloide v0.9
-# Can be modified
-# Can be distributed commercially
-# Can be distributed non-commercially
-# Under the terms of the GNU general public license (2007)
-# Michael Constantine Dimopoulos
-# Project on GitHub:
-# http://yamechanic.com/C3vc
-# Website:
-# http://yamechanic.com/C41V
-#
-# # # # # # # # # # # # # # # # # # # # # # # # #