mirror of
https://github.com/bellingcat/octosuite.git
synced 2026-06-12 21:38:34 +03:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
162d36d741 | ||
|
|
49490ed95b | ||
|
|
78966551ee | ||
|
|
a939b89d23 | ||
|
|
f79ce44bc9 | ||
|
|
7e45fa5669 | ||
|
|
f55e1b3895 | ||
|
|
1ea78c2e0b | ||
|
|
2272e7ff81 | ||
|
|
44ce7799f4 | ||
|
|
6c6fc477f8 | ||
|
|
d7060e33dd | ||
|
|
b47b073af4 | ||
|
|
4f196660bc | ||
|
|
e073d63845 |
63
README.md
63
README.md
@@ -4,65 +4,76 @@
|
|||||||

|

|
||||||

|

|
||||||

|

|
||||||
|

|
||||||

|

|
||||||

|
|
||||||

|

|
||||||
|
|
||||||
> *Simply gather OSINT on Github users and organizations like a god🔥*
|
> *Simply gather OSINT on Github users and organizations like a god🔥*
|
||||||
|
|
||||||
|
|
||||||
# INSTALLATION
|
# INSTALLATION
|
||||||
**clone project**:
|
**clone project**:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ git clone https://github.com/rly0nheart/octosuite.git
|
git clone https://github.com/rly0nheart/octosuite.git
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cd octosuite
|
cd octosuite
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
# USAGE
|
# USAGE
|
||||||
**Linux**:
|
**Linux**:
|
||||||
```
|
```
|
||||||
$ sudo chmod +x octosuite
|
sudo chmod +x octosuite
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ./octosuite
|
sudo ./octosuite
|
||||||
```
|
```
|
||||||
|
|
||||||
**Windows**:
|
**Windows**:
|
||||||
```
|
```
|
||||||
$ python3 octosuite
|
python3 octosuite
|
||||||
|
```
|
||||||
|
|
||||||
|
**Mac**:
|
||||||
|
```
|
||||||
|
python3 octosuite
|
||||||
```
|
```
|
||||||
|
|
||||||
# AVAILABLE COMMANDS
|
# AVAILABLE COMMANDS
|
||||||
| Command | Usage|
|
| Command | Usage|
|
||||||
| ------------- |:---------:|
|
| ------------- |:---------:|
|
||||||
| <code>orginfo</code> | *get organization info* |
|
| ``orginfo`` | *get organization info* |
|
||||||
| <code>userinfo</code> | *get user profile info* |
|
| ``userinfo`` | *get user profile info* |
|
||||||
| <code>repoinfo</code> | *get repository info* |
|
| ``repoinfo`` | *get repository info* |
|
||||||
| <code>pathcontents</code> | *get contents of a path from a specified repository* |
|
| ``pathcontents`` | *get contents of a path from a specified repository* |
|
||||||
| <code>orgrepos</code> | *get a list of repositories owned by a specified organization* |
|
| ``orgrepos`` | *get a list of repositories owned by a specified organization* |
|
||||||
| <code>userrepos</code> | *get a list of repositories owned by a specified user* |
|
| ``userrepos`` | *get a list of repositories owned by a specified user* |
|
||||||
| <code>usergists</code> | *get a list of gists owned by a specified user* |
|
| ``usergists`` | *get a list of gists owned by a specified user* |
|
||||||
| <code>userfollowers</code> | *get a list of a user's followers* |
|
| ``userfollowers`` | *get a list of a user's followers* |
|
||||||
| <code>userfollowing</code> | *check whether user A follows user B* |
|
| ``userfollowing`` | *check whether user A follows user B* |
|
||||||
| <code>usersearch</code> | *search user(s)* |
|
| ``usersearch`` | *search user(s)* |
|
||||||
| <code>reposearch</code> | *search repositor(y)(ies)* |
|
| ``reposearch`` | *search repositor(y)(ies)* |
|
||||||
| <code>topicsearch</code> | *search topics(s)* |
|
| ``topicsearch`` | *search topics(s)* |
|
||||||
| <code>issuesearch</code> | *search issue(s)* |
|
| ``issuesearch`` | *search issue(s)* |
|
||||||
| <code>commitsearch</code> | *search commit(s)* |
|
| ``commitsearch`` | *search commit(s)* |
|
||||||
| <code>usersearch</code> | *search user(s)* |
|
| ``usersearch`` | *search user(s)* |
|
||||||
| <code>update</code> | *check for/download updates* |
|
| ``update`` | *update octosuite* |
|
||||||
| <code>author</code> | *show author info* |
|
| ``changelog`` | *show changelog* |
|
||||||
| <code>help</code> | *show usage/help* |
|
| ``author`` | *show author info* |
|
||||||
| <code>exit</code> | *exit session* |
|
| ``help`` | *show usage/help* |
|
||||||
|
| ``exit`` | *exit session* |
|
||||||
|
|
||||||
|
|
||||||
# NOTE
|
# NOTE
|
||||||
* *octosuite automatically logs network and minor user activity. The logs are saved by date and time in .logs folder*
|
* *octosuite automatically logs network and minor user activity. The logs are saved by date and time in .logs folder*
|
||||||
* *octosuite has only been tested on **Termux** *and* **Kali Linux** (for now), please be sure to let me know how it works on **Windows***
|
* *Although octosuite was developed to work on **Mac**, **Windows**, or any **Linux** *Distribution*, it has only been tested on **Termux** *and* **Kali Linux***
|
||||||
|
|
||||||
# LICENSE
|
# LICENSE
|
||||||

|

|
||||||
|
|||||||
@@ -7,7 +7,7 @@ banner = f'''{red}
|
|||||||
░ ████▓▒░▒ ▓███▀ ░ ▒██▒ ░ ░ ████▓▒░▒██████▒▒▒█████▓ ░██░ ▒██▒ ░ ░▒████▒
|
░ ████▓▒░▒ ▓███▀ ░ ▒██▒ ░ ░ ████▓▒░▒██████▒▒▒█████▓ ░██░ ▒██▒ ░ ░▒████▒
|
||||||
░ ▒░▒░▒░ ░ ░▒ ▒ ░ ▒ ░░ ░ ▒░▒░▒░ ▒ ▒▓▒ ▒ ░░▒▓▒ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
|
░ ▒░▒░▒░ ░ ░▒ ▒ ░ ▒ ░░ ░ ▒░▒░▒░ ▒ ▒▓▒ ▒ ░░▒▓▒ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
|
||||||
░ ▒ ▒░ ░ ▒ ░ ░ ▒ ▒░ ░ ░▒ ░ ░░░▒░ ░ ░ ▒ ░ ░ ░ ░ ░
|
░ ▒ ▒░ ░ ▒ ░ ░ ▒ ▒░ ░ ░▒ ░ ░░░▒░ ░ ░ ▒ ░ ░ ░ ░ ░
|
||||||
░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░░░ ░ ░ ▒ v1.1.0
|
░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░░░ ░ ░ ▒ v1.3.0
|
||||||
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
|
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
|
||||||
░ {white}— Advanced Github {red}OSINT{white} Framework{reset}
|
░ {white}— Advanced Github {red}OSINT{white} Framework{reset}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Colors will be unavailable on non-linux machines
|
||||||
colors = True
|
colors = True
|
||||||
machine = sys.platform # Detecting the os
|
machine = sys.platform
|
||||||
if machine.lower().startswith(("os", "win", "darwin")):
|
if machine.lower().startswith(("os", "win", "darwin")):
|
||||||
colors = False # Colors will not be displayed
|
colors = False
|
||||||
|
|
||||||
if not colors:
|
if not colors:
|
||||||
reset = red = white = green = ""
|
reset = red = white = green = ""
|
||||||
|
|||||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
tqdm
|
||||||
|
requests
|
||||||
40
src/main.py
40
src/main.py
@@ -1,18 +1,13 @@
|
|||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
import requests
|
||||||
import platform
|
import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
from tqdm import tqdm
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from lib import colors,banner
|
from lib import colors,banner
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
try:
|
|
||||||
import requests
|
|
||||||
except ImportError:
|
|
||||||
print(f'{colors.white}[{colors.green}*{colors.white}] Installing requirement(s). Please wait...{colors.reset}')
|
|
||||||
subprocess.run(['pip', 'install', 'requests'],shell=False)
|
|
||||||
exit(f'{colors.white}[{colors.green}+{colors.white}] Installation complete. Re-run octosuite.{colors.reset}')
|
|
||||||
|
|
||||||
|
|
||||||
class octosuite:
|
class octosuite:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -155,9 +150,6 @@ class octosuite:
|
|||||||
# Author dictionary
|
# Author dictionary
|
||||||
self.author_dict = {'Alias': 'rly0nheart',
|
self.author_dict = {'Alias': 'rly0nheart',
|
||||||
'Country': 'Zambia, Africa',
|
'Country': 'Zambia, Africa',
|
||||||
'Github': 'https://github.com/rly0nheart',
|
|
||||||
'Twitter': 'https://twitter.com/rly0nheart',
|
|
||||||
'Facebook': 'https://fb.me/rly0nheart',
|
|
||||||
'About.me': 'https://about.me/rly0nheart'}
|
'About.me': 'https://about.me/rly0nheart'}
|
||||||
|
|
||||||
def on_start(self):
|
def on_start(self):
|
||||||
@@ -200,6 +192,8 @@ class octosuite:
|
|||||||
self.commits_search()
|
self.commits_search()
|
||||||
elif command == 'update':
|
elif command == 'update':
|
||||||
self.update()
|
self.update()
|
||||||
|
elif command == 'changelog':
|
||||||
|
print(self.changelog())
|
||||||
elif command == 'author':
|
elif command == 'author':
|
||||||
self.author()
|
self.author()
|
||||||
elif command == 'help':
|
elif command == 'help':
|
||||||
@@ -410,10 +404,9 @@ class octosuite:
|
|||||||
|
|
||||||
# Update program
|
# Update program
|
||||||
def update(self):
|
def update(self):
|
||||||
logging.info('Checking for update(s)...')
|
logging.info('Fetching updates...')
|
||||||
files_to_update = ['src/main.py','lib/banner.py','lib/colors.py','octosuite','LICENSE','README.md']
|
files_to_update = ['src/main.py','lib/banner.py','lib/colors.py','octosuite','LICENSE','README.md','requirements.txt']
|
||||||
print(f'\n{colors.white}[{colors.green}*{colors.white}] Fetching update(s). Please wait...{colors.reset}',end='')
|
for file in tqdm(files_to_update,desc=f'{colors.white}[{colors.green}*{colors.white}] Fetching updates...{colors.reset}'):
|
||||||
for file in files_to_update:
|
|
||||||
data = urllib.request.urlopen(f'https://raw.githubusercontent.com/rly0nheart/octosuite/master/{file}').read()
|
data = urllib.request.urlopen(f'https://raw.githubusercontent.com/rly0nheart/octosuite/master/{file}').read()
|
||||||
with open(file, 'wb') as code:
|
with open(file, 'wb') as code:
|
||||||
code.write(data)
|
code.write(data)
|
||||||
@@ -423,6 +416,20 @@ class octosuite:
|
|||||||
exit(f'\n{colors.white}[{colors.green}+{colors.white}] Update complete. Re-run octosuite.{colors.reset}')
|
exit(f'\n{colors.white}[{colors.green}+{colors.white}] Update complete. Re-run octosuite.{colors.reset}')
|
||||||
|
|
||||||
|
|
||||||
|
# Show changelog
|
||||||
|
def changelog(self):
|
||||||
|
# lol yes the changelog is hard coded
|
||||||
|
changelog_text = '''
|
||||||
|
v1.3.0 Changelog:
|
||||||
|
|
||||||
|
• Adjusted to work on Mac
|
||||||
|
• Added changelog command
|
||||||
|
• Added progress bar when fetching updates
|
||||||
|
• Minor bug fixes
|
||||||
|
'''
|
||||||
|
return changelog_text
|
||||||
|
|
||||||
|
|
||||||
# Author info
|
# Author info
|
||||||
def author(self):
|
def author(self):
|
||||||
print(f'\n{colors.white}Richard Mwewa (Ritchie){colors.reset}')
|
print(f'\n{colors.white}Richard Mwewa (Ritchie){colors.reset}')
|
||||||
@@ -448,7 +455,8 @@ usage:
|
|||||||
topicsearch --> Search topic(s)
|
topicsearch --> Search topic(s)
|
||||||
issuesearch --> Search issue(s)
|
issuesearch --> Search issue(s)
|
||||||
commitsearch --> Search commit(s)
|
commitsearch --> Search commit(s)
|
||||||
update --> Check for/download update(s)
|
update --> Update octosuite
|
||||||
|
changelog --> Show changelog
|
||||||
author --> Show author info
|
author --> Show author info
|
||||||
help --> Show usage/help
|
help --> Show usage/help
|
||||||
exit --> Exit session
|
exit --> Exit session
|
||||||
@@ -456,5 +464,5 @@ usage:
|
|||||||
return help
|
return help
|
||||||
|
|
||||||
|
|
||||||
# Set to automatically monitor and log network and user activity to .log folder
|
# Set to automatically monitor and log network and user activity into the .logs folder
|
||||||
logging.basicConfig(filename=f'.logs/{datetime.now()}.log',format='[%(asctime)s] %(message)s',level=logging.DEBUG)
|
logging.basicConfig(filename=f'.logs/{datetime.now()}.log',format='[%(asctime)s] %(message)s',level=logging.DEBUG)
|
||||||
|
|||||||
Reference in New Issue
Block a user