From 41efb691858a3cec8d60ededd69f80248c847e62 Mon Sep 17 00:00:00 2001 From: Yash Kumar Saini <115717039+yashksaini-coder@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:26:55 +0530 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=F0=9F=A4=96=20Add=20package.ico?= =?UTF-8?q?=20file=20for=20chrome=20tab=20icon=20(#200)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 🤖 Add package.ico file for chrome tab icon ✅ Closes: #196 * Delete docs/assets/logo.png --- docs/assets/package.ico | Bin 0 -> 67646 bytes mkdocs.yml | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/assets/package.ico diff --git a/docs/assets/package.ico b/docs/assets/package.ico new file mode 100644 index 0000000000000000000000000000000000000000..471333806c0d2b0b45d2e2985232886ebcce80c3 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index eacad4b..0ca1c16 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,13 @@ site_name: Sneaky Package repo_name: AmateursLeague/sneaky-package repo_url: https://github.com/AmateursLeague/sneaky-package -theme: material +theme: + name: material + favicon: assets/package.ico + features: + - navigation.tabs + - navigation.tabs.sticky + include_sidebar: true From fa53c0633538c5c8058bc72d4dd8cd1372271242 Mon Sep 17 00:00:00 2001 From: this-is-yaash Date: Sun, 3 Nov 2024 14:35:43 +0530 Subject: [PATCH 2/6] bold header update; docs --- docs/CHANGELOG.md | 2 +- docs/LICENSE.md | 2 +- docs/index.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 7191076..e9c155a 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changelog +# **Changelog** ## [Stable-Release] ## v1.0.1 - 19-10-2024 diff --git a/docs/LICENSE.md b/docs/LICENSE.md index eea6761..16ec016 100644 --- a/docs/LICENSE.md +++ b/docs/LICENSE.md @@ -1,3 +1,3 @@ -# License +# **License** The project works by highlighting and improving security measures by demonstrating potential vulnerabilities when the system is connected with pip. It is licensed under the [GPL 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), allowing you to sneakily use and modify it as needed. diff --git a/docs/index.md b/docs/index.md index bebaad3..6684021 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -## Getting Started +# **Home** ### **[What is Sneaky Package?](index.md)** A ready-to-deploy Python package designed to 🕵️‍♂️ stealthily integrate files within a machine, ensuring 🛡️ discreet and seamless file operations without detection. From b9f335248dc54586f38a6bae5d8198881b85b49a Mon Sep 17 00:00:00 2001 From: Tannu Choudhary <142585725+tannuiscoding@users.noreply.github.com> Date: Sun, 3 Nov 2024 16:02:00 +0530 Subject: [PATCH 3/6] Offline updated file structure (#203) * updated offline features * updated file stucture --- package/clip.py | 64 --------------- package/display.py | 10 --- package/offline/__init__.py | 0 package/offline/clip.py | 8 ++ package/offline/show.py | 12 +++ package/offline/support/__init__.py | 0 package/offline/support/copy_to_clipboard.py | 22 +++++ package/offline/support/display.py | 25 ++++++ package/offline/support/list_snippets.py | 11 +++ package/offline/write.py | 22 +++++ package/show.py | 84 -------------------- package/test.py | 5 -- package/write.py | 36 --------- 13 files changed, 100 insertions(+), 199 deletions(-) delete mode 100644 package/clip.py delete mode 100644 package/display.py create mode 100644 package/offline/__init__.py create mode 100644 package/offline/clip.py create mode 100644 package/offline/show.py create mode 100644 package/offline/support/__init__.py create mode 100644 package/offline/support/copy_to_clipboard.py create mode 100644 package/offline/support/display.py create mode 100644 package/offline/support/list_snippets.py create mode 100644 package/offline/write.py delete mode 100644 package/show.py delete mode 100644 package/test.py delete mode 100644 package/write.py diff --git a/package/clip.py b/package/clip.py deleted file mode 100644 index 11524a8..0000000 --- a/package/clip.py +++ /dev/null @@ -1,64 +0,0 @@ -import os -import subprocess -import sys -import shutil -from datetime import datetime -import glob - - -def display(snippet_name, password): - current_time = datetime.now().strftime("%H%M") - if str(password).zfill(4) != current_time: - raise ValueError("Invalid password") - - base_dir = os.path.dirname(__file__) - snippets_dir = os.path.join(base_dir, "stash") - pattern = os.path.join(snippets_dir, f"{snippet_name}.*") - - matching_files = glob.glob(pattern) - - if not matching_files: - raise FileNotFoundError("No file found with the name.") - elif len(matching_files) > 1: - raise ValueError("Multiple files found with the given name.") - - snippet_path = os.path.join(snippets_dir, matching_files[0]) - - try: - with open(snippet_path, "r") as file: - source_code = file.read() - - # Call the copy to clipboard function - copy_to_clipboard(source_code) - - except FileNotFoundError: - print("File not found") - raise - - -def copy_to_clipboard(text): - # Linux - if "linux" in sys.platform: - # Check if xclip is installed - if shutil.which("xclip") is None: - print("Error: xclip not found. Install it.", file=sys.stderr) - return - # If xclip is installed, proceed with copying text - subprocess.run( - ["xclip", "-selection", "clipboard"], - input=text.strip().encode(), - check=True, - ) - - # Windows - elif "win32" in sys.platform: - subprocess.run( - ["C:\\Windows\\System32\\clip.exe"], input=text.strip().encode(), check=True - ) - - # macOS - elif "darwin" in sys.platform: - subprocess.run(["/usr/bin/pbcopy"], input=text.strip().encode(), check=True) - - else: - raise OSError("Unsupported operating system") diff --git a/package/display.py b/package/display.py deleted file mode 100644 index acc3190..0000000 --- a/package/display.py +++ /dev/null @@ -1,10 +0,0 @@ -from package.show import display -from package.write import plot - - -def write(snippet_name, password): - return plot(snippet_name, password) - - -def show(snippet_name, password, clipboard=None): - return display(snippet_name, password, clipboard=None) diff --git a/package/offline/__init__.py b/package/offline/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/package/offline/clip.py b/package/offline/clip.py new file mode 100644 index 0000000..cbfc254 --- /dev/null +++ b/package/offline/clip.py @@ -0,0 +1,8 @@ +import os +from package.offline.support import copy_to_clipboard +from package.offline.support import display + + + +def clip(snippet_name, password): + display(snippet_name, password, action="copy") \ No newline at end of file diff --git a/package/offline/show.py b/package/offline/show.py new file mode 100644 index 0000000..fda3780 --- /dev/null +++ b/package/offline/show.py @@ -0,0 +1,12 @@ +import os +from package.offline.support import list_snippets, display +from package.password import valid_password + +def show(snippet_name=None, password=None): + if snippet_name is None and password is None: + base_dir = os.path.dirname(__file__) + snippets_dir = os.path.join(base_dir, "stash") + list_snippets(snippets_dir) + return + + display(snippet_name, password, action="display") \ No newline at end of file diff --git a/package/offline/support/__init__.py b/package/offline/support/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/package/offline/support/copy_to_clipboard.py b/package/offline/support/copy_to_clipboard.py new file mode 100644 index 0000000..795fae3 --- /dev/null +++ b/package/offline/support/copy_to_clipboard.py @@ -0,0 +1,22 @@ +import subprocess +import sys +import shutil + + +def copy_to_clipboard(text): + try: + if "linux" in sys.platform: + if shutil.which("xclip") is None: + raise RuntimeError("xclip not found. Install it.") + subprocess.run(["xclip", "-selection", "clipboard"], input=text.strip().encode(), check=True) + + elif "win32" in sys.platform: + subprocess.run(["C:\\Windows\\System32\\clip.exe"], input=text.strip().encode(), check=True) + + elif "darwin" in sys.platform: + subprocess.run(["/usr/bin/pbcopy"], input=text.strip().encode(), check=True) + + else: + raise OSError("Unsupported operating system") + except subprocess.CalledProcessError: + print("Error: Failed to copy to clipboard.") \ No newline at end of file diff --git a/package/offline/support/display.py b/package/offline/support/display.py new file mode 100644 index 0000000..41bc6bc --- /dev/null +++ b/package/offline/support/display.py @@ -0,0 +1,25 @@ +import os +from package.offline.support import copy_to_clipboard +from package.password import valid_password + +def display(snippet_name, password, action): + if not isinstance(password, int) or not valid_password(password): + raise ValueError("Incorrect password") + + base_dir = os.path.dirname(__file__) + snippets_dir = os.path.join(base_dir, "stash") + + try: + snippet_path = os.path.join(snippets_dir, snippet_name) + with open(snippet_path, "r") as file: + content = file.read() + + if action == "display": + print(content) + elif action == "copy": + copy_to_clipboard(content) + print("Snippet copied to clipboard.") + except FileNotFoundError: + print("Error: No file found with the specified name.") + except Exception as e: + print(f"Error: {e}") \ No newline at end of file diff --git a/package/offline/support/list_snippets.py b/package/offline/support/list_snippets.py new file mode 100644 index 0000000..3b18432 --- /dev/null +++ b/package/offline/support/list_snippets.py @@ -0,0 +1,11 @@ +import os + +def list_snippets(snippets_dir): + try: + contents = os.listdir(snippets_dir) + for file in contents: + print(file) + except FileNotFoundError: + print("Error: Stash directory not found.") + except Exception as e: + print(f"Error: {e}") \ No newline at end of file diff --git a/package/offline/write.py b/package/offline/write.py new file mode 100644 index 0000000..a4a21ef --- /dev/null +++ b/package/offline/write.py @@ -0,0 +1,22 @@ +import shutil +import os +from package.password import valid_password + + +def write(snippet_name, password): + if not isinstance(password, int) or not valid_password(password): + raise ValueError("Incorrect password") + + base_dir = os.path.dirname(__file__) + snippets_dir = os.path.join(base_dir, "stash") + + try: + snippet_path = os.path.join(snippets_dir, snippet_name) + output_path = os.path.join(base_dir, snippet_name) + + shutil.copyfile(snippet_path, output_path) + print(f"File '{snippet_path}' copied successfully to '{output_path}'.") + except FileNotFoundError: + print("Error: No file found with the specified name.") + except Exception as e: + print(f"Error: {e}") \ No newline at end of file diff --git a/package/show.py b/package/show.py deleted file mode 100644 index 3d8315f..0000000 --- a/package/show.py +++ /dev/null @@ -1,84 +0,0 @@ -import os -import shutil -import subprocess -import sys -from datetime import datetime -import glob - - -def display(snippet_name=None, password=None, clipboard=None): - - if snippet_name is None and password is None and clipboard is None: - ls("/package/stash") # Enter stash directory - return - - current_time = datetime.now().strftime("%H%M") - - if snippet_name is None or password is None: - print("Both snippet_name and password must be provided") - return - - if str(password).zfill(4) != current_time: - raise ValueError("syntax error: incorrect password") - try: - base_dir = os.path.dirname(__file__) - snippets_dir = os.path.join(base_dir, "stash") - pattern = os.path.join(snippets_dir, f"{snippet_name}.*") - - matching_files = glob.glob(pattern) - - if not matching_files: - raise FileNotFoundError("No file found with the name.") - elif len(matching_files) > 1: - raise ValueError("Multiple files found with the given name.") - - snippet_path = os.path.join(snippets_dir, matching_files[0]) - - # If clipboard argument is passed as 1, copy content to clipboard - if clipboard == 1: - with open(snippet_path, "r") as file: - content = file.read() - copy_to_clipboard(content) - print("Content copied to clipboard.") - else: - # regular - with open(snippet_path, "r") as file: - content = file.read() - print(content) - - except Exception as e: - print(f"Syntax Error: {e}") - - -def copy_to_clipboard(text): - # Linux - if "linux" in sys.platform: - # Check if xclip is installed - if shutil.which("xclip") is None: - print("Error: xclip not found. Install it.", file=sys.stderr) - return - # If xclip is installed, proceed with copying text - subprocess.run( - ["xclip", "-selection", "clipboard"], - input=text.strip().encode(), - check=True, - ) - - # Windows - elif "win32" in sys.platform: - subprocess.run( - ["C:\\Windows\\System32\\clip.exe"], input=text.strip().encode(), check=True - ) - - # macOS - elif "darwin" in sys.platform: - subprocess.run(["/usr/bin/pbcopy"], input=text.strip().encode(), check=True) - - else: - raise OSError("Unsupported operating system") - - -def ls(directory_path): - contents = os.listdir(directory_path) - for files in contents: - print(files) diff --git a/package/test.py b/package/test.py deleted file mode 100644 index edc06f5..0000000 --- a/package/test.py +++ /dev/null @@ -1,5 +0,0 @@ -from scrap.grab import write, show, clip - -write("fghd", "text.txt") -show("fghd") -clip("fghd") diff --git a/package/write.py b/package/write.py deleted file mode 100644 index d984697..0000000 --- a/package/write.py +++ /dev/null @@ -1,36 +0,0 @@ -import os -import shutil -from datetime import datetime -import glob - - -def plot(snippet_name, password): - current_time = datetime.now().strftime("%H%M") - if str(password).zfill(4) != current_time: - raise ValueError("syntax error: incorrect password") - - try: - base_dir = os.path.dirname(__file__) - snippets_dir = os.path.join(base_dir, "stash") - pattern = os.path.join(snippets_dir, f"{snippet_name}.*") - - matching_files = glob.glob(pattern) - - if not matching_files: - raise FileNotFoundError("No file found with the name.") - elif len(matching_files) > 1: - raise ValueError("Multiple files found with the given name.") - - snippet_path = matching_files[0] - snippet_extension = os.path.splitext(snippet_path)[1] - output_path = os.path.join(base_dir, f"{snippet_name}{snippet_extension}") - - shutil.copyfile(snippet_path, output_path) - print(f"File '{matching_files[0]}' copied successfully to {output_path}.") - - except FileNotFoundError: - print("File is not found") - except ValueError: - print("The given values are not supported") - except Exception as e: - print(f"Error: {e}") From 51ebcdfe3e1d761b17542e163ee5a995611e9edd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Nov 2024 10:32:12 +0000 Subject: [PATCH 4/6] style: format code with Black --- package/offline/clip.py | 3 +-- package/offline/show.py | 3 ++- package/offline/support/copy_to_clipboard.py | 14 +++++++++++--- package/offline/support/display.py | 7 ++++--- package/offline/support/list_snippets.py | 3 ++- package/offline/write.py | 4 ++-- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/package/offline/clip.py b/package/offline/clip.py index cbfc254..342973b 100644 --- a/package/offline/clip.py +++ b/package/offline/clip.py @@ -3,6 +3,5 @@ from package.offline.support import display - def clip(snippet_name, password): - display(snippet_name, password, action="copy") \ No newline at end of file + display(snippet_name, password, action="copy") diff --git a/package/offline/show.py b/package/offline/show.py index fda3780..138a182 100644 --- a/package/offline/show.py +++ b/package/offline/show.py @@ -2,6 +2,7 @@ from package.offline.support import list_snippets, display from package.password import valid_password + def show(snippet_name=None, password=None): if snippet_name is None and password is None: base_dir = os.path.dirname(__file__) @@ -9,4 +10,4 @@ def show(snippet_name=None, password=None): list_snippets(snippets_dir) return - display(snippet_name, password, action="display") \ No newline at end of file + display(snippet_name, password, action="display") diff --git a/package/offline/support/copy_to_clipboard.py b/package/offline/support/copy_to_clipboard.py index 795fae3..66d96df 100644 --- a/package/offline/support/copy_to_clipboard.py +++ b/package/offline/support/copy_to_clipboard.py @@ -8,10 +8,18 @@ def copy_to_clipboard(text): if "linux" in sys.platform: if shutil.which("xclip") is None: raise RuntimeError("xclip not found. Install it.") - subprocess.run(["xclip", "-selection", "clipboard"], input=text.strip().encode(), check=True) + subprocess.run( + ["xclip", "-selection", "clipboard"], + input=text.strip().encode(), + check=True, + ) elif "win32" in sys.platform: - subprocess.run(["C:\\Windows\\System32\\clip.exe"], input=text.strip().encode(), check=True) + subprocess.run( + ["C:\\Windows\\System32\\clip.exe"], + input=text.strip().encode(), + check=True, + ) elif "darwin" in sys.platform: subprocess.run(["/usr/bin/pbcopy"], input=text.strip().encode(), check=True) @@ -19,4 +27,4 @@ def copy_to_clipboard(text): else: raise OSError("Unsupported operating system") except subprocess.CalledProcessError: - print("Error: Failed to copy to clipboard.") \ No newline at end of file + print("Error: Failed to copy to clipboard.") diff --git a/package/offline/support/display.py b/package/offline/support/display.py index 41bc6bc..92176a6 100644 --- a/package/offline/support/display.py +++ b/package/offline/support/display.py @@ -2,18 +2,19 @@ from package.offline.support import copy_to_clipboard from package.password import valid_password + def display(snippet_name, password, action): if not isinstance(password, int) or not valid_password(password): raise ValueError("Incorrect password") base_dir = os.path.dirname(__file__) snippets_dir = os.path.join(base_dir, "stash") - + try: snippet_path = os.path.join(snippets_dir, snippet_name) with open(snippet_path, "r") as file: content = file.read() - + if action == "display": print(content) elif action == "copy": @@ -22,4 +23,4 @@ def display(snippet_name, password, action): except FileNotFoundError: print("Error: No file found with the specified name.") except Exception as e: - print(f"Error: {e}") \ No newline at end of file + print(f"Error: {e}") diff --git a/package/offline/support/list_snippets.py b/package/offline/support/list_snippets.py index 3b18432..7cefa27 100644 --- a/package/offline/support/list_snippets.py +++ b/package/offline/support/list_snippets.py @@ -1,5 +1,6 @@ import os + def list_snippets(snippets_dir): try: contents = os.listdir(snippets_dir) @@ -8,4 +9,4 @@ def list_snippets(snippets_dir): except FileNotFoundError: print("Error: Stash directory not found.") except Exception as e: - print(f"Error: {e}") \ No newline at end of file + print(f"Error: {e}") diff --git a/package/offline/write.py b/package/offline/write.py index a4a21ef..fb26c87 100644 --- a/package/offline/write.py +++ b/package/offline/write.py @@ -9,7 +9,7 @@ def write(snippet_name, password): base_dir = os.path.dirname(__file__) snippets_dir = os.path.join(base_dir, "stash") - + try: snippet_path = os.path.join(snippets_dir, snippet_name) output_path = os.path.join(base_dir, snippet_name) @@ -19,4 +19,4 @@ def write(snippet_name, password): except FileNotFoundError: print("Error: No file found with the specified name.") except Exception as e: - print(f"Error: {e}") \ No newline at end of file + print(f"Error: {e}") From 9897cab47c536967b1b8826d05af5d95079e8709 Mon Sep 17 00:00:00 2001 From: Tannu Choudhary <142585725+tannuiscoding@users.noreply.github.com> Date: Sun, 3 Nov 2024 16:48:40 +0530 Subject: [PATCH 5/6] reduced password redundant code (#204) --- package/password.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 package/password.py diff --git a/package/password.py b/package/password.py new file mode 100644 index 0000000..d4dcdf8 --- /dev/null +++ b/package/password.py @@ -0,0 +1,5 @@ +from datetime import datetime + +def valid_password(password: int) -> bool: + current_time = int(datetime.now().strftime("%H%M")) + return password == current_time From 0c7b7d9ad872ced1e735318493804cf964a5d1b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Nov 2024 11:18:54 +0000 Subject: [PATCH 6/6] style: format code with Black --- package/password.py | 1 + 1 file changed, 1 insertion(+) diff --git a/package/password.py b/package/password.py index d4dcdf8..4d2a73a 100644 --- a/package/password.py +++ b/package/password.py @@ -1,5 +1,6 @@ from datetime import datetime + def valid_password(password: int) -> bool: current_time = int(datetime.now().strftime("%H%M")) return password == current_time