ShadowB 0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ShadowB/Core/fileorg.py +38 -0
- ShadowB/Core/randwords.py +76 -0
- ShadowB/GetD/make_cookies.py +27 -0
- ShadowB/GetD/my_data.py +86 -0
- ShadowB/GetD/my_ip.py +12 -0
- ShadowB/GetD/scan.py +72 -0
- ShadowB/Image/check_image.py +39 -0
- ShadowB/Image/export_metadata.py +96 -0
- ShadowB/Image/extr_hidden_files.py +44 -0
- ShadowB/Image/extr_hidden_text.py +39 -0
- ShadowB/Image/makeFile.py +48 -0
- ShadowB/Image/makeText.py +41 -0
- ShadowB/Image/remove_metadata.py +48 -0
- ShadowB/Mail/make_mail.py +36 -0
- ShadowB/Mail/res_msj.py +44 -0
- ShadowB/Mail/send_msj.py +13 -0
- ShadowB/Qrcode/generate.py +35 -0
- ShadowB/Qrcode/scan.py +26 -0
- ShadowB/Safe/clean.py +127 -0
- ShadowB/Safe/cleanText.py +37 -0
- ShadowB/Safe/ext.py +5 -0
- ShadowB/Safe/filename.py +6 -0
- ShadowB/Safe/safeFile.py +171 -0
- ShadowB/__init__.py +44 -0
- ShadowB/captcha.py +73 -0
- ShadowB/core.py +106 -0
- ShadowB/getD.py +28 -0
- ShadowB/image.py +31 -0
- ShadowB/mail.py +21 -0
- ShadowB/passwords.py +47 -0
- ShadowB/qrcode.py +10 -0
- ShadowB/safe.py +80 -0
- ShadowB/search.py +50 -0
- shadowb-0.1.dist-info/LICENSE +21 -0
- shadowb-0.1.dist-info/METADATA +200 -0
- shadowb-0.1.dist-info/RECORD +38 -0
- shadowb-0.1.dist-info/WHEEL +5 -0
- shadowb-0.1.dist-info/top_level.txt +1 -0
ShadowB/core.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import time
|
|
2
|
+
from ShadowB.Core.randwords import randw
|
|
3
|
+
from ShadowB.Core.fileorg import florg
|
|
4
|
+
try:
|
|
5
|
+
from colorama import init, Fore
|
|
6
|
+
except ImportError:
|
|
7
|
+
import os
|
|
8
|
+
os.system("pip install colorama")
|
|
9
|
+
from colorama import init, Fore
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def start():
|
|
13
|
+
init()
|
|
14
|
+
while True:
|
|
15
|
+
try:
|
|
16
|
+
print(Fore.GREEN + "="*50)
|
|
17
|
+
time.sleep(1)
|
|
18
|
+
print("** welcome to ShadowBoys **")
|
|
19
|
+
time.sleep(1)
|
|
20
|
+
print("[1]. Generating random words")
|
|
21
|
+
time.sleep(1)
|
|
22
|
+
print("[2]. Organizing files")
|
|
23
|
+
time.sleep(1)
|
|
24
|
+
print("[3]. Exit")
|
|
25
|
+
time.sleep(1)
|
|
26
|
+
print("** Write here what you need, like 3 , 2 or 1 **")
|
|
27
|
+
inp = input(">> ")
|
|
28
|
+
if inp == "3":
|
|
29
|
+
print(f"** Closed ** \n {'='*50}")
|
|
30
|
+
break
|
|
31
|
+
|
|
32
|
+
elif inp == "1":
|
|
33
|
+
others_chars = ""
|
|
34
|
+
rep = int(input("** How many slots do you want to create? : "))
|
|
35
|
+
if rep > 5:
|
|
36
|
+
print("-- The maximum number of slots you can reach is 5 --")
|
|
37
|
+
if rep < 2:
|
|
38
|
+
print("-- The smallest number of digits possible is 2 --")
|
|
39
|
+
numbers = input("** Do you want to use numbers? (y/n) : ")
|
|
40
|
+
if numbers in ["n","no"]:
|
|
41
|
+
numbers = False
|
|
42
|
+
else:
|
|
43
|
+
numbers = True
|
|
44
|
+
symbols = input("** Do you want to use symbols? (y/n) : ")
|
|
45
|
+
if symbols in ["n","no"]:
|
|
46
|
+
symbols = False
|
|
47
|
+
else:
|
|
48
|
+
symbols = True
|
|
49
|
+
letters = input("** Do you want to use letters? (y/n) : ")
|
|
50
|
+
if letters in ["n","no"]:
|
|
51
|
+
letters = False
|
|
52
|
+
else:
|
|
53
|
+
letters = True
|
|
54
|
+
form = input("** Do you want to use only uppercase letters (maj), only lowercase letters (min), or both uppercase and lowercase letters (all)? (min/maj/all) : ")
|
|
55
|
+
filename = input("** Please write the name of the file where you will save the attempts (like pass or passwords)(only the name) : ")
|
|
56
|
+
other_char = input("** Do you have any special words, numbers, or dates you want to add? (y/n) : ")
|
|
57
|
+
while not other_char in ["y","n"]:
|
|
58
|
+
other_char = input("** Do you have any special words, numbers, or dates you want to add? (y/n) : ")
|
|
59
|
+
if other_char == "y":
|
|
60
|
+
n = int(input("** How many special words do you want to enter? : (1 or 10 or 88...)"))
|
|
61
|
+
for i in range(n):
|
|
62
|
+
char = input(f"** Enter the word number {i+1} : ")
|
|
63
|
+
others_chars += char
|
|
64
|
+
randw(filename,rep,others_chars,numbers,symbols,letters,form)
|
|
65
|
+
time.sleep(1)
|
|
66
|
+
print("="*50)
|
|
67
|
+
break
|
|
68
|
+
|
|
69
|
+
elif inp == "2":
|
|
70
|
+
path = input("** The folder path whose files we are going to organize: ")
|
|
71
|
+
florg(path)
|
|
72
|
+
print("="*50)
|
|
73
|
+
break
|
|
74
|
+
else:
|
|
75
|
+
print("-- They was an error, pls try again! --")
|
|
76
|
+
except:
|
|
77
|
+
print("-- They was an error, pls try again! --")
|
|
78
|
+
break
|
|
79
|
+
|
|
80
|
+
def owner():
|
|
81
|
+
print("Adem mzoughi")
|
|
82
|
+
print("Github : https://github.com/erec2smith")
|
|
83
|
+
|
|
84
|
+
def vr():
|
|
85
|
+
print("0.1")
|
|
86
|
+
|
|
87
|
+
def team():
|
|
88
|
+
print("Adem")
|
|
89
|
+
print("Shadow")
|
|
90
|
+
print("Berlin")
|
|
91
|
+
|
|
92
|
+
def hp():
|
|
93
|
+
print("""
|
|
94
|
+
1. At the beginning, you should call core like this: from ShadowB import core \n
|
|
95
|
+
2. After that, it calls the main function core , like that : core.owner() \n
|
|
96
|
+
3. Call any function you want, like (owner to get info about the library owner, or team to get \n info about the Shadow Boys team) example: core.owner() \n
|
|
97
|
+
4. All the functions currently available:\n
|
|
98
|
+
owner() : To find out information about making the library \n
|
|
99
|
+
team() : To find out information about the wamithe team \n
|
|
100
|
+
start() : To start generating random words or organizing files \n
|
|
101
|
+
hp() : To find out information about the library \n
|
|
102
|
+
Example : from ShadowB import core \n
|
|
103
|
+
core.start() \n
|
|
104
|
+
2026/06/17 python https://github.com/erec2smith
|
|
105
|
+
""")
|
|
106
|
+
|
ShadowB/getD.py
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from ShadowB.GetD.my_data import make_file
|
|
2
|
+
from ShadowB.GetD.make_cookies import cookies
|
|
3
|
+
from ShadowB.GetD.my_ip import ip
|
|
4
|
+
from ShadowB.GetD.scan import scan
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
def my_data():
|
|
8
|
+
make_file()
|
|
9
|
+
return ""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def my_ip():
|
|
14
|
+
ip()
|
|
15
|
+
return ""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_cookies(filename="cookies"):
|
|
19
|
+
return cookies(filename)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def scan_open_ports(ip):
|
|
23
|
+
return scan(ip)
|
|
24
|
+
|
|
25
|
+
def whm():
|
|
26
|
+
current_path = Path.cwd()
|
|
27
|
+
print(current_path)
|
|
28
|
+
return current_path
|
ShadowB/image.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from ShadowB.Image.check_image import check
|
|
2
|
+
from ShadowB.Image.export_metadata import exp
|
|
3
|
+
from ShadowB.Image.remove_metadata import remove
|
|
4
|
+
from ShadowB.Image.makeText import hide_text_in_img
|
|
5
|
+
from ShadowB.Image.makeFile import hide_file_in_img
|
|
6
|
+
from ShadowB.Image.extr_hidden_files import extract_file_from_img
|
|
7
|
+
from ShadowB.Image.extr_hidden_text import extract_text_from_img
|
|
8
|
+
|
|
9
|
+
def check_img(image):
|
|
10
|
+
return check(image)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def expMetadata(image):
|
|
14
|
+
return exp(image)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def removeMetadata(image):
|
|
18
|
+
return remove(image)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def hide_text(image,text):
|
|
22
|
+
return hide_text_in_img(image,text)
|
|
23
|
+
|
|
24
|
+
def hide_file(image,file):
|
|
25
|
+
return hide_file_in_img(image,file)
|
|
26
|
+
|
|
27
|
+
def extr_file(image):
|
|
28
|
+
return extract_file_from_img(image)
|
|
29
|
+
|
|
30
|
+
def extr_text(image):
|
|
31
|
+
return extract_text_from_img(image)
|
ShadowB/mail.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from ShadowB.Mail.make_mail import create_temp_email
|
|
2
|
+
from ShadowB.Mail.res_msj import get_messages
|
|
3
|
+
from ShadowB.Mail.send_msj import send_email
|
|
4
|
+
|
|
5
|
+
def create_email():
|
|
6
|
+
return create_temp_email()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def get_msj(token):
|
|
10
|
+
if token:
|
|
11
|
+
return get_messages(token)
|
|
12
|
+
else:
|
|
13
|
+
return "Entering the token is mandatory!"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def send_msj(sender, app_password, to, subject, body):
|
|
18
|
+
if sender and app_password and to and subject and body:
|
|
19
|
+
return send_email(sender, app_password, to, subject, body)
|
|
20
|
+
else:
|
|
21
|
+
return "(sender, app_password, to, subject, body) must be entered compulsorily!"
|
ShadowB/passwords.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import string
|
|
2
|
+
import secrets
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def create_password():
|
|
7
|
+
length = 20
|
|
8
|
+
all_characters = string.ascii_letters + string.punctuation + string.digits
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
password = "".join(secrets.choice(all_characters) for _ in range(length))
|
|
12
|
+
|
|
13
|
+
return password
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def check_strength(password):
|
|
18
|
+
pass_list = ["azerty","azerty22","1234","google","insta","yamal","123456789","password","mot passe","abcdefghijklmnopqrstuvwxyz","pass123","password123","pass","password","ronaldo","cr7ronaldo","ronaldo2008","messi","fcmessi","itsme","hacker","azertyuiopmlkjhgfdsqwxcvbn","azertyuiopqsdfghjklmwxcvbn"]
|
|
19
|
+
|
|
20
|
+
length_error = len(password) < 8
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
lowercase_error = re.search(r"[a-z]", password) is None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
uppercase_error = re.search(r"[A-Z]", password) is None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
digit_error = re.search(r"\d", password) is None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
symbol_error = re.search(r"[ !@#$%^&*(),.?\":{}|<>_\-+=\[\]\\/`~;']", password) is None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
errors = [length_error, lowercase_error, uppercase_error, digit_error, symbol_error]
|
|
36
|
+
passed_conditions = errors.count(False)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
if len(password) >= 12 and passed_conditions == 5 and password not in pass_list:
|
|
40
|
+
print("Strong")
|
|
41
|
+
return ""
|
|
42
|
+
elif len(password) >= 8 and passed_conditions >= 3 and password not in pass_list:
|
|
43
|
+
print("Medium")
|
|
44
|
+
return ""
|
|
45
|
+
else:
|
|
46
|
+
print("Weak")
|
|
47
|
+
return ""
|
ShadowB/qrcode.py
ADDED
ShadowB/safe.py
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
from ShadowB.Safe.filename import real_filename
|
|
2
|
+
from ShadowB.Safe.ext import real_ext
|
|
3
|
+
from ShadowB.Safe.cleanText import is_clean
|
|
4
|
+
from ShadowB.Safe.clean import cleann
|
|
5
|
+
from ShadowB.Safe.safeFile import is_safe
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def name(file):
|
|
10
|
+
name = real_filename(file)
|
|
11
|
+
return name
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def ext(file):
|
|
15
|
+
e = real_ext(file)
|
|
16
|
+
return e
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def extR(file):
|
|
20
|
+
e = real_ext(file)
|
|
21
|
+
return e.replace(".","")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def cleanText(text,check_list=None):
|
|
25
|
+
if check_list and check_list is not None:
|
|
26
|
+
clean = is_clean(text,check_list)
|
|
27
|
+
else:
|
|
28
|
+
clean = is_clean(text)
|
|
29
|
+
if clean:
|
|
30
|
+
print("true")
|
|
31
|
+
return "true"
|
|
32
|
+
else:
|
|
33
|
+
print("false")
|
|
34
|
+
return "false"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def clean(file,check_list=None):
|
|
39
|
+
e = real_ext(file)
|
|
40
|
+
if e not in ["pdf",".pdf",".txt","txt"]:
|
|
41
|
+
print("Currently, the accepted files are .pdf and .txt")
|
|
42
|
+
return "Currently, the accepted files are .pdf and .txt"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if check_list and check_list is not None:
|
|
46
|
+
c = cleann(file,check_list)
|
|
47
|
+
else:
|
|
48
|
+
c = cleann(file)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
if c:
|
|
52
|
+
print("true")
|
|
53
|
+
return "true"
|
|
54
|
+
else:
|
|
55
|
+
print("false")
|
|
56
|
+
return "false"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def size(file):
|
|
61
|
+
try:
|
|
62
|
+
size_bytes = os.path.getsize(file)
|
|
63
|
+
size_mb = size_bytes / (1024 * 1024)
|
|
64
|
+
print(size_mb)
|
|
65
|
+
return size_mb
|
|
66
|
+
|
|
67
|
+
except Exception as e:
|
|
68
|
+
print(e)
|
|
69
|
+
print("error!")
|
|
70
|
+
return "error!"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def safeFile(file):
|
|
74
|
+
safe = is_safe(file)
|
|
75
|
+
if safe:
|
|
76
|
+
print("true")
|
|
77
|
+
return "true"
|
|
78
|
+
else:
|
|
79
|
+
print("false")
|
|
80
|
+
return "false"
|
ShadowB/search.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
try:
|
|
5
|
+
import requests
|
|
6
|
+
except ImportError:
|
|
7
|
+
os.system(f"{sys.executable} -m pip install requests")
|
|
8
|
+
import requests
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def search_by_username(app, username):
|
|
12
|
+
platforms = {
|
|
13
|
+
".insta": {
|
|
14
|
+
"url": f"https://www.instagram.com/{username}/",
|
|
15
|
+
"error_indicators": ["this page isn't available", "page not found", "cannot find"]
|
|
16
|
+
},
|
|
17
|
+
".fc": {
|
|
18
|
+
"url": f"https://www.facebook.com/{username}",
|
|
19
|
+
"error_indicators": ["this page isn't available", "page not found", "content not found"]
|
|
20
|
+
},
|
|
21
|
+
".yt": {
|
|
22
|
+
"url": f"https://www.youtube.com/@{username}",
|
|
23
|
+
"error_indicators": ["this page isn't available", "404 not found", "does not exist"]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if app not in platforms:
|
|
28
|
+
return "false"
|
|
29
|
+
|
|
30
|
+
target = platforms[app]
|
|
31
|
+
headers = {
|
|
32
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
33
|
+
"Accept-Language": "en-US,en;q=0.9"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
response = requests.get(target["url"], headers=headers, timeout=10, allow_redirects=True)
|
|
38
|
+
|
|
39
|
+
if response.status_code == 404:
|
|
40
|
+
return "false"
|
|
41
|
+
|
|
42
|
+
page_content = response.text.lower()
|
|
43
|
+
for indicator in target["error_indicators"]:
|
|
44
|
+
if indicator in page_content:
|
|
45
|
+
return "false"
|
|
46
|
+
print(f"url : {target['url']}")
|
|
47
|
+
return "true"
|
|
48
|
+
|
|
49
|
+
except Exception:
|
|
50
|
+
return "false"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adem mzoughi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ShadowB
|
|
3
|
+
Version: 0.1
|
|
4
|
+
Summary: ShadowB is an all-in-one Python toolkit that bundles a wide range of everyday utilities — system info, image steganography, temporary email, QR codes, CAPTCHA generation, password tools, file safety checks, and more — into a single, easy-to-import package.
|
|
5
|
+
Author-email: Adem mzoughi <ademzoughi1312@gmail.com>
|
|
6
|
+
Requires-Python: >=3.8
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
|
|
10
|
+
# ShadowB
|
|
11
|
+
|
|
12
|
+
**ShadowB** is an all-in-one Python toolkit that bundles a wide range of everyday utilities — system info, image steganography, temporary email, QR codes, CAPTCHA generation, password tools, file safety checks, and more — into a single, easy-to-import package.
|
|
13
|
+
|
|
14
|
+
Instead of installing and learning a dozen different libraries for a dozen small tasks, `ShadowB` collects the most commonly needed helper functions in one place.
|
|
15
|
+
|
|
16
|
+
> 100% open source. No telemetry, no analytics, no external server. Every function runs **locally** on the user's own machine — nothing is collected or transmitted by the library's maintainers.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install ShadowB
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Table of Contents
|
|
29
|
+
|
|
30
|
+
- [core](#core)
|
|
31
|
+
- [getD](#getd)
|
|
32
|
+
- [search](#search)
|
|
33
|
+
- [captcha](#captcha)
|
|
34
|
+
- [qrcode](#qrcode)
|
|
35
|
+
- [mail](#mail)
|
|
36
|
+
- [safe](#safe)
|
|
37
|
+
- [image](#image)
|
|
38
|
+
- [passwords](#passwords)
|
|
39
|
+
- [Responsible Use](#-responsible-use)
|
|
40
|
+
- [License](#-license)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## `core`
|
|
45
|
+
|
|
46
|
+
Basic package metadata and bootstrapping.
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from ShadowB import core
|
|
50
|
+
|
|
51
|
+
core.start() # run core app fro : create passwords or usernames / organize the working files
|
|
52
|
+
core.owner() # -> "Adem mzoughi"
|
|
53
|
+
core.team() # -> "Adem mzoughi, Berlin, Shadow"
|
|
54
|
+
core.hp() # print help / usage info
|
|
55
|
+
core.vr() # print current version
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## `getD`
|
|
61
|
+
|
|
62
|
+
Local system & network diagnostics — useful for things like monitoring your own machine's load, debugging your own network setup, or quick scripting.
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from ShadowB import getD
|
|
66
|
+
|
|
67
|
+
getD.my_ip() # your public IP address
|
|
68
|
+
getD.my_data() # IP, country, and basic PC specs (CPU/RAM, etc.)
|
|
69
|
+
getD.get_cookies(filename) # export your own browser's cookies to a local .txt file
|
|
70
|
+
getD.scan_open_ports() # check which ports are open on a given website
|
|
71
|
+
getD.whm() # print the current working directory (e.g. C:/Users/Pc/Desktop)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> ⚠️ `get_cookies()` reads cookies from **your own** browser profile and `scan_open_ports()` should only be run against hosts you own or are authorized to test. See [Responsible Use](#-responsible-use).
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## `search`
|
|
79
|
+
|
|
80
|
+
Look up whether a username exists on a given platform.
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
from ShadowB import search
|
|
84
|
+
|
|
85
|
+
search.forgot.search_by_username(app, username)
|
|
86
|
+
# returns True (and prints the profile link) or False
|
|
87
|
+
# app: ".insta" | ".fc" | ".yt"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## `captcha`
|
|
93
|
+
|
|
94
|
+
Generate CAPTCHA images.
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from ShadowB import captcha
|
|
98
|
+
|
|
99
|
+
captcha.generate_captcha("captcha") # image name
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## `qrcode`
|
|
105
|
+
|
|
106
|
+
Generate and read QR codes.
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from ShadowB import qrcode
|
|
110
|
+
|
|
111
|
+
qrcode.generate_qrcode(text, "qr") # create a QR code image
|
|
112
|
+
qrcode.scan_qrcode("qr.png") # -> decoded text (str)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## `mail`
|
|
118
|
+
|
|
119
|
+
Disposable email creation and sending (Gmail SMTP).
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
from ShadowB import mail
|
|
123
|
+
|
|
124
|
+
mail.create_email() # -> email, password, token
|
|
125
|
+
mail.get_msj(token) # -> list of received messages (id, subject, body, ...)
|
|
126
|
+
mail.send_msj(sender, app_password, to, subject, body) # send via Gmail SMTP
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## `safe`
|
|
132
|
+
|
|
133
|
+
File inspection and sanitation helpers.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from ShadowB import safe
|
|
137
|
+
|
|
138
|
+
safe.safeFile(file) # -> True / False
|
|
139
|
+
safe.size(file) # -> file size
|
|
140
|
+
safe.name(file) # -> file name
|
|
141
|
+
safe.ext(file) # -> file extension
|
|
142
|
+
safe.clean(file, check_list) # -> True / False
|
|
143
|
+
safe.cleanText(text, check_list) # -> True / False
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## `image`
|
|
149
|
+
|
|
150
|
+
Metadata and steganography utilities.
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
from ShadowB import image
|
|
154
|
+
|
|
155
|
+
image.expMetadata(img) # read EXIF / metadata
|
|
156
|
+
image.check_img(img) # -> True / False (contains hidden text/file)
|
|
157
|
+
image.extr_file(img) # extract a hidden file from the image
|
|
158
|
+
image.extr_text(img) # extract hidden text from the image
|
|
159
|
+
image.removeMetadata(img) # strip metadata (useful before sharing photos)
|
|
160
|
+
image.hide_text(img, text) # embed hidden text into the image
|
|
161
|
+
image.hide_file(img, file) # embed a hidden file into the image
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## `passwords`
|
|
167
|
+
|
|
168
|
+
```python
|
|
169
|
+
from ShadowB import passwords
|
|
170
|
+
|
|
171
|
+
passwords.check_strenght(password) # rate password strength
|
|
172
|
+
passwords.create_password() # generate a strong password
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## ⚖️ Responsible Use
|
|
178
|
+
|
|
179
|
+
`ShadowB` is a general-purpose utility library, similar in spirit to combining tools like `requests`, `browser_cookie3`, `psutil`, `python-nmap`, and `Pillow`-based steganography helpers into one package. It performs no network exfiltration on its own and contacts no third-party server.
|
|
180
|
+
|
|
181
|
+
That said, several functions are powerful and should be used responsibly:
|
|
182
|
+
|
|
183
|
+
- Only run `get_cookies()` against your **own** browser profile.
|
|
184
|
+
- Only use `scan_open_ports()` on systems/websites you **own** or are explicitly authorized to test.
|
|
185
|
+
- Respect each platform's Terms of Service and applicable privacy laws when using `search.forgot.search_by_username`.
|
|
186
|
+
- Don't use the steganography functions (`hide_text`, `hide_file`) to conceal malicious payloads or to deceive other people.
|
|
187
|
+
|
|
188
|
+
You are responsible for complying with local laws and the terms of any service you interact with through this library.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 📄 License
|
|
193
|
+
|
|
194
|
+
This project is licensed under the [MIT License](./LICENSE).
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 👤 Author
|
|
199
|
+
|
|
200
|
+
**Adem mzoughi** — 2026/23/06
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
ShadowB/__init__.py,sha256=64nyKYQ2Nb7ryAO13777RNzqEzFM2kTk14Zz6kIUZcU,977
|
|
2
|
+
ShadowB/captcha.py,sha256=A5GX8uumLsgvCb5POhicMTLSXpdZCj6QX0DL5Ta8d_U,2336
|
|
3
|
+
ShadowB/core.py,sha256=JZ2Xq_TC_pX3sjYCSjIowwJYDQPdi5oAkMGiFIP9ga8,4456
|
|
4
|
+
ShadowB/getD.py,sha256=X1gLgaiE1nmEZnl78PpoihHK-gra7AK6XrdQgKsyQLo,499
|
|
5
|
+
ShadowB/image.py,sha256=E3YcNAtlHx45aQAD3bw25valerXZx_YKp5xuYPXgfJI,816
|
|
6
|
+
ShadowB/mail.py,sha256=iivGLz7uw7v7_pigwS3bffNTIufC4iv_pAPJb0VqucM,646
|
|
7
|
+
ShadowB/passwords.py,sha256=6GkqLCnn3ppCRHtLbwkmXCTLbFeTKfRjgNcd0LzQ06Y,1439
|
|
8
|
+
ShadowB/qrcode.py,sha256=vGu4lBIhVyrs9evNq-KKI4FVRI1nOKJshdRiwX98F5Q,210
|
|
9
|
+
ShadowB/safe.py,sha256=vI7JL9gC4q-gykl8sFQUKt9j9JzX0CMsBHOHogKEYGk,1680
|
|
10
|
+
ShadowB/search.py,sha256=1zpflijUJffPKyKXSxaPvmWfIcxIC5H_yw8VUdIEcpo,1586
|
|
11
|
+
ShadowB/Core/fileorg.py,sha256=LuHPNwKp7CqFDm0OKcoFzF2l3Lxg3yBHiX_is9Vpam0,1280
|
|
12
|
+
ShadowB/Core/randwords.py,sha256=cOJ5x4KtUJuw06BvJ4xJLggOMF0P320yRVYqCZdmQTE,2965
|
|
13
|
+
ShadowB/GetD/make_cookies.py,sha256=teQF0BT_AAENLRVGFfhyll-QYtP1v1KHsb4O3BvWT64,842
|
|
14
|
+
ShadowB/GetD/my_data.py,sha256=RcK066rc-lv9tHUAA7V1_AXudZ5pmF7S7TkYBG947v0,2489
|
|
15
|
+
ShadowB/GetD/my_ip.py,sha256=c41XVHky--U0NfI4GmIFQ86z3rk0Pn872ldwhAW1MZY,285
|
|
16
|
+
ShadowB/GetD/scan.py,sha256=IQBnMIQkeRlRdo-O4o9m37JIEtDsMf0ruyb4R5R-5qg,2043
|
|
17
|
+
ShadowB/Image/check_image.py,sha256=UXNJohgg50vYybt8Si4qlHhTEsCpp8F0AjjSaJ0LVLo,900
|
|
18
|
+
ShadowB/Image/export_metadata.py,sha256=shI16Npbeb0r8shw2TlXIrs_BXdXz_2WnLqOmOOjK_Y,3198
|
|
19
|
+
ShadowB/Image/extr_hidden_files.py,sha256=K4TWowX9wZ4SJk-f-GVEtmPxvKpspNx3rN4TT0iLi-k,1358
|
|
20
|
+
ShadowB/Image/extr_hidden_text.py,sha256=jEZk7e0xk15BYc1ed07KqOEHMBOP3EysPsNpeKVejbM,1067
|
|
21
|
+
ShadowB/Image/makeFile.py,sha256=cp5kuos4icHeHKCTyVW49GUdmKqDN9EZXFcM037rhdc,1557
|
|
22
|
+
ShadowB/Image/makeText.py,sha256=nimXdRJeU1n-7dpBsUN9RT61SVzeA6nHcuLxbTcpRzQ,1147
|
|
23
|
+
ShadowB/Image/remove_metadata.py,sha256=2xJtGqDBY9JfoJnrzBeTa1p4Z-iEX8YXBhsUoE75TwA,1383
|
|
24
|
+
ShadowB/Mail/make_mail.py,sha256=qHWl1yKLX3NvxaN1r6glOPirnL1s9tz1S9o-7k62dd8,1007
|
|
25
|
+
ShadowB/Mail/res_msj.py,sha256=10fQuGs4L1jV1yG4v5m6JhToskgfY--DOj-VMepgSic,1135
|
|
26
|
+
ShadowB/Mail/send_msj.py,sha256=wxrRkrPylT48xBMtTN0NlatL7BKj617aNtfV43C_IQY,360
|
|
27
|
+
ShadowB/Qrcode/generate.py,sha256=j4RvEXasEJBFcQK5whRGNwenbpNwxnDjBXKNgbcs2g0,811
|
|
28
|
+
ShadowB/Qrcode/scan.py,sha256=8cSCsF7i9rh9K7r_eB3WEeSQDIVddwHR58FfqaX8nyE,556
|
|
29
|
+
ShadowB/Safe/clean.py,sha256=-DJOhA5HTk-AFyIekWFtGWtjo9-pCy7dLJ59-bUKRiw,3176
|
|
30
|
+
ShadowB/Safe/cleanText.py,sha256=FY-MdaJ8TwhldAmokuByyY9LCGqibRw2S79c6mu6syo,1178
|
|
31
|
+
ShadowB/Safe/ext.py,sha256=ZRwNv2UmqKai0yXm4jVgHe-fMkoCv1vH0CaUpGd17E0,93
|
|
32
|
+
ShadowB/Safe/filename.py,sha256=JqbZAPecfJx-pYNOMnvWEaosCjjJGiXpwNe6lFyf1rE,119
|
|
33
|
+
ShadowB/Safe/safeFile.py,sha256=M_IVDdjmppqS33Sf878n2b0oIRpp3nrcRONbRKiJlVQ,4649
|
|
34
|
+
shadowb-0.1.dist-info/LICENSE,sha256=S_b4SfEqucyYPdy-YlOD9_oYeV0R0UVboe91jg_3k30,1069
|
|
35
|
+
shadowb-0.1.dist-info/METADATA,sha256=7wpnlrD2OR8x5NXWTTqgbN3ZVi72TjoiGIdhLKieB5c,5998
|
|
36
|
+
shadowb-0.1.dist-info/WHEEL,sha256=BNRMDyzLkkcmlv0J8ppDQkk2VED33SesJDynr9ED1gc,91
|
|
37
|
+
shadowb-0.1.dist-info/top_level.txt,sha256=JWFMWpuhlb6-_wmOs4KrLgXGKhTP1OQgbF5XabVT8a8,8
|
|
38
|
+
shadowb-0.1.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ShadowB
|