# DedSec Project — official bilingual website and learning library
> DedSec Project provides a free Android/Termux and Linux toolkit, documentation, programming lessons, troubleshooting, and defensive security education. Public toolkit: https://github.com/dedsec1121fk/DedSec. Ethical and authorized use only.
## Website pages / Σελίδες ιστοσελίδας
### DedSec Linux venv & Paths [en]
Source-URL: https://ded-sec.space/Assistance/dedsec-linux-venv-paths.html
DedSec Linux venv & Paths
Understand the Linux environment and file locations DedSec uses so you can troubleshoot without editing the wrong folders.
Quick Summary
Understand the Linux environment and file locations DedSec uses so you can troubleshoot without editing the wrong folders.
Project Environment
Desktop Linux uses a local .venv inside the DedSec repository. Run ./Run.sh instead of manually mixing global Python packages with the project.
Check The Environment
cd ~/DedSec pwd ./.venv/bin/python --version printf "%s\n" "$PATH"
Compatibility Layer
Compat/bin provides desktop-safe replacements or shims for commands expected by portable scripts. Run.sh adds it automatically.
Downloads
Portable tools normally save under ~/Downloads/ on Ubuntu, Kali Linux, and Linux Mint. Exact per-tool paths are listed on the Learn About The Tools page.
Shell Files
Ubuntu and Linux Mint commonly use ~/.bashrc. Kali may use ~/.zshrc. Termux uses $PREFIX/etc/bash.bashrc.
Next Steps
For platform-specific save paths, use Learn About The Tools. For other setup or runtime problems, return to Assistance.
Learn About The ToolsAll Assistance Guides
### Fix Broken DedSec Install [en]
Source-URL: https://ded-sec.space/Assistance/fix-dedsec-broken-install.html
Fix Broken DedSec Install
Diagnose a DedSec Project install on Termux or supported Linux desktops when modules, paths, updates, environments, or storage stop working.
Quick Answer
Diagnose a DedSec Project install that stopped working after missing modules, wrong folders, failed updates, or storage problems.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
BrokenDedSecInstall
Before You Run Anything
Back up personal settings, outputs, modified scripts, and saved data before reinstalling or updating.
Confirm the exact DedSec folder and current Git state instead of cloning another nested copy.
Preserve the full first error rather than replacing the entire installation immediately.
Diagnostic Or Setup Commands
Back up personal DedSec settings and outputs first. Confirm the current DedSec folder before copying or running the block.
Copy commands
pwd ls python -m py_compile script.py python script.py
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls` — Lists files, names, and permissions.
`python -m py_compile script.py` — Checks Python syntax without starting the complete program.
What Success Looks Like
The intended DedSec launcher starts from the documented folder.
Personal settings and saved output remain present after the repair or update.
A second launch works without repeating installation steps.
Safe Next Steps
Identify whether the failure is a folder, dependency, Git, permission, or saved-data problem.
Repair only that layer and run the smallest DedSec entry-point test.
Compare changed files before replacing local modifications.
Keep a dated backup after confirming the repaired version starts correctly.
Common Mistakes
Deleting the existing DedSec folder before copying personal settings and outputs.
Creating repeated nested clones such as `DedSec/DedSec/DedSec`.
Running a replacement command from the wrong language or project folder.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Repair DedSec Linux Setup [en]
Source-URL: https://ded-sec.space/Assistance/fix-dedsec-linux-setup.html
Repair DedSec Linux Setup
Repair the desktop environment without deleting the whole project or touching unrelated system Python packages.
Quick Summary
Repair the desktop environment without deleting the whole project or touching unrelated system Python packages.
Check Required Packages
sudo apt update sudo apt install -y git python3 python3-venv python3-pip
Rebuild Only The Project Environment
cd ~/DedSec rm -rf .venv bash Setup.sh --update-only ./Run.sh
The rm -rf command above targets only the DedSec project's local .venv. Confirm you are inside the DedSec directory first.
If Your Clone Is Elsewhere
Use the actual clone path instead of ~/DedSec. Run pwd and git status before changing files.
Android-Specific Tools
Do not try to repair Termux-only utilities as Linux services. Android App Launcher, Mobile Desktop, Termux Backup/Restore, Termux Repair Wizard, and Mobile Developer Setup are intentionally not applicable on desktop Linux.
Next Steps
For platform-specific save paths, use Learn About The Tools. For other setup or runtime problems, return to Assistance.
Learn About The ToolsAll Assistance Guides
### GitHub SSH/Auth [en]
Source-URL: https://ded-sec.space/Assistance/fix-github-ssh-authentication-termux.html
GitHub SSH/Auth
Set up GitHub authentication in Termux using HTTPS tokens or SSH keys without confusing it with normal passwords.
Quick Answer
Set up GitHub authentication in Termux using HTTPS tokens or SSH keys without confusing it with normal passwords.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Permission denied (publickey)Host key verification failedAuthentication failed
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
pkg install openssh git -y ssh-keygen -t ed25519 -C "you@example.com" cat ~/.ssh/id_ed25519.pub ssh -T git@github.com
What The Commands Tell You
`pkg install openssh git -y` — Installs the listed Termux packages and dependencies.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix Localhost Server Not Opening On Android [en]
Source-URL: https://ded-sec.space/Assistance/fix-localhost-server-not-opening-android.html
Fix Localhost Server Not Opening On Android
Fix local server browser problems in Termux by checking host binding, port, folder, firewall-like Android behavior, and correct URL.
Quick Answer
Fix local server browser problems in Termux by checking host binding, port, folder, firewall-like Android behavior, and correct URL.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Connection refusedThis site can’t be reachedERR_CONNECTION_REFUSED
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace the example port and folder. Test the local URL on the same phone before creating a LAN address or public tunnel.
Copy commands
pwd python -m http.server 8080 --bind 127.0.0.1 # open http://127.0.0.1:8080 in the same phone browser
What The Commands Tell You
`pwd` — Prints the current working directory.
`python -m http.server 8080 --bind 127.0.0.1` — Starts a simple local HTTP server in the current folder.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Node/npm Errors [en]
Source-URL: https://ded-sec.space/Assistance/fix-node-npm-errors-termux.html
Node/npm Errors
Fix npm command not found, node-gyp build errors, package install failures, and broken JavaScript projects in Termux.
Quick Answer
Fix npm command not found, node-gyp build errors, package install failures, and broken JavaScript projects in Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
npm ERR!node-gypERESOLVEMODULE_NOT_FOUND
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Keep `package-lock.json` unless dependency versions must intentionally change. Use `npm ci` when the lock file is valid.
Copy commands
pkg update pkg install -y nodejs python make clang node -v npm -v npm cache verify test -f package-lock.json && npm ci || npm install
What The Commands Tell You
`pkg update` — Refreshes the Termux package index.
`pkg install -y nodejs python make clang` — Installs the listed Termux packages and dependencies.
`npm cache verify` — Checks npm cache without deleting the dependency lock file.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Command Not Found And Cannot Locate Package In TermuxFix Termux Repository, Mirror, GPG, And apt Update ErrorsTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix pip Errors In Termux [en]
Source-URL: https://ded-sec.space/Assistance/fix-pip-errors-termux.html
Fix pip Errors In Termux
Separate pip upgrade problems, build failures, missing wheels, compiler errors, and Termux package dependencies before installing Python libraries.
Quick Answer
Separate pip upgrade problems, build failures, missing wheels, compiler errors, and Termux package dependencies before installing Python libraries.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Installing pip is forbiddenFailed building wheelsubprocess-exited-with-errorNo matching distribution found
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Termux manages pip through the `python-pip` package. Do not run `pip install --upgrade pip`; update it with `pkg upgrade python-pip`.
Copy commands
pkg update pkg install -y python python-pip python -m pip --version python -m pip install --upgrade setuptools wheel python -m pip install PACKAGE_NAME
What The Commands Tell You
`pkg update` — Refreshes the Termux package index.
`pkg install -y python python-pip` — Installs the listed Termux packages and dependencies.
`python -m pip --version` — Shows which pip belongs to the active Python.
`python -m pip install --upgrade setuptools wheel` — Installs or updates the named Python distribution, not pip itself.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonPython Syntax ErrorsTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix ModuleNotFoundError In Termux Python [en]
Source-URL: https://ded-sec.space/Assistance/fix-python-module-not-found-termux.html
Fix ModuleNotFoundError In Termux Python
Find which Python environment runs your script, install the missing module correctly, and avoid local filename conflicts.
Quick Answer
Find which Python environment runs your script, install the missing module correctly, and avoid local filename conflicts.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
ModuleNotFoundErrorImportErrorNo module named
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
The PyPI distribution name can differ from the import name—for example, `beautifulsoup4` is imported as `bs4`.
Copy commands
python - <<'PYCODE' import sys print("Python:", sys.executable) print("Version:", sys.version) PYCODE python -m pip show DISTRIBUTION_NAME python -m pip install DISTRIBUTION_NAME python -c "import IMPORT_NAME; print('import ok')"
What The Commands Tell You
`python - <<'PYCODE'` — Runs an inline Python diagnostic.
`python -m pip show DISTRIBUTION_NAME` — Checks whether a Python distribution is installed.
`python -m pip install DISTRIBUTION_NAME` — Installs or updates the named Python distribution, not pip itself.
`python -c "import IMPORT_NAME; print('import ok')"` — Runs a small isolated Python test.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix pip Errors In TermuxPython Syntax ErrorsTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Python Syntax Errors [en]
Source-URL: https://ded-sec.space/Assistance/fix-python-syntax-errors-termux.html
Python Syntax Errors
Fix unterminated string, indentation, invalid character, copied HTML, and Python syntax errors inside Termux scripts.
Quick Answer
Fix unterminated string, indentation, invalid character, copied HTML, and Python syntax errors inside Termux scripts.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
SyntaxErrorIndentationErrorunexpected EOFline NUMBER
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
python -m py_compile script.py nano +LINE_NUMBER script.py
What The Commands Tell You
`python -m py_compile script.py` — Checks Python syntax without starting the complete program.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix apt/dpkg Lock [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-dpkg-apt-lock.html
Fix apt/dpkg Lock
Fix apt and dpkg lock errors in Termux after interrupted installs, then repair half-configured packages and restore package management safely.
Quick Answer
Fix apt and dpkg lock errors in Termux after interrupted installs, then repair half-configured packages and restore package management safely.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Could not get lockdpkg was interruptedunmet dependencies
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
ps aux | grep -E "apt|pkg|dpkg" dpkg --configure -a apt --fix-broken install pkg update
What The Commands Tell You
`pkg update` — Refreshes the Termux package index.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Command Not Found And Cannot Locate Package In TermuxFix Termux Repository, Mirror, GPG, And apt Update ErrorsTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Git Identity Error [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-git-push-email-identity.html
Git Identity Error
Fix please tell me who you are, unable to auto-detect email address, git config user.name, and user.email errors in Termux.
Quick Answer
Fix please tell me who you are, unable to auto-detect email address, git config user.name, and user.email errors in Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
IdentityError
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
git config --global user.name "dedsec1121fk" git config --global user.email "you@example.com" git config --global --list git commit -m "Update project"
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Install DedSec ProjectGitHub Clone HelpTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### No Space Left [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-no-space-left.html
No Space Left
Find what fills Termux storage, clean package cache, remove build leftovers, and move outputs safely to Android Downloads.
Quick Answer
Find what fills Termux storage, clean package cache, remove build leftovers, and move outputs safely to Android Downloads.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
No space left on deviceENOSPCDisk quota exceeded
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
df -h du -h -d 1 ~ | sort -h apt clean mkdir -p /storage/emulated/0/Download/DedSec-Exports
What The Commands Tell You
`df -h` — Shows free and used filesystem space.
`du -h -d 1 ~ | sort -h` — Measures file or folder sizes before cleanup.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Fix No Such File, Wrong Folder, And Space-In-Name Errors [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-no-such-file-or-directory.html
Fix No Such File, Wrong Folder, And Space-In-Name Errors
Find the real Termux folder, handle filenames with spaces, locate missing files, and stop path mistakes before running scripts.
Quick Answer
Find the real Termux folder, handle filenames with spaces, locate missing files, and stop path mistakes before running scripts.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
No such file or directorycan't open filenot found
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
pwd ls -la find ~ -iname "*script*.py" 2>/dev/null python "My Script.py"
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls -la` — Lists files, names, and permissions.
`find ~ -iname "*script*.py" 2>/dev/null` — Searches paths by name, size, or type.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Fix Permission Denied, chmod, And Executable Scripts In Termux [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-permission-denied-executable.html
Fix Permission Denied, chmod, And Executable Scripts In Termux
Fix executable permission problems, chmod usage, script launch errors, and safe ownership expectations in no-root Termux.
Quick Answer
Fix executable permission problems, chmod usage, script launch errors, and safe ownership expectations in no-root Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Permission deniedOperation not permittedexit status 126
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
ls -la script.sh chmod +x script.sh ./script.sh # or run Python scripts with: python script.py
What The Commands Tell You
`ls -la script.sh` — Lists files, names, and permissions.
`chmod +x script.sh` — Changes executable or access permission bits.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
First Termux SetupDedSec-Style ToolTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix Port Already In Use In Termux [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-port-already-in-use.html
Fix Port Already In Use In Termux
Find and stop the old Termux process using a local server port before restarting Flask, SocketIO, http.server, or dashboards.
Quick Answer
Find and stop the old Termux process using a local server port before restarting Flask, SocketIO, http.server, or dashboards.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Address already in useEADDRINUSEErrno 98
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace `8080` with the affected port and `PID` with the verified process ID. Send `TERM` first; do not stop an unknown process or use `KILL` unless graceful shutdown fails.
Copy commands
pkg install -y lsof lsof -i :8080 # Replace PID only after checking the process shown above ps -p PID -o pid,cmd kill -TERM PID sleep 2 ps -p PID -o pid,cmd
What The Commands Tell You
`pkg install -y lsof` — Installs the listed Termux packages and dependencies.
`lsof -i :8080` — Lists files, names, and permissions.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
JSON ErrorsFix Localhost Server Not Opening On AndroidTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix Termux Repository, Mirror, GPG, And apt Update Errors [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-repository-errors.html
Fix Termux Repository, Mirror, GPG, And apt Update Errors
Repair Termux repository errors, slow mirrors, GPG signature warnings, and package update failures on Android.
Quick Answer
Repair Termux repository errors, slow mirrors, GPG signature warnings, and package update failures on Android.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Unable to locate package404 Not FoundGPG errorRelease file
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
termux-change-repo pkg clean pkg update -y pkg upgrade -y
What The Commands Tell You
`termux-change-repo` — Opens the Termux repository and mirror selector.
`pkg update -y` — Refreshes the Termux package index.
`pkg upgrade -y` — Updates installed Termux packages.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Command Not Found And Cannot Locate Package In TermuxFix apt/dpkg LockTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### SSL / curl Errors [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-ssl-certificate-curl-errors.html
SSL / curl Errors
Fix certificate verification errors, outdated ca-certificates, failed downloads, and curl/wget connection problems.
Quick Answer
Fix certificate verification errors, outdated ca-certificates, failed downloads, and curl/wget connection problems.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CERTIFICATE_VERIFY_FAILEDcurl: (60)SSL certificate problem
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
pkg update && pkg upgrade -y pkg install ca-certificates curl wget -y update-ca-certificates curl -I https://github.com
What The Commands Tell You
`pkg update && pkg upgrade -y` — Refreshes the Termux package index.
`pkg install ca-certificates curl wget -y` — Installs the listed Termux packages and dependencies.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Command Not Found And Cannot Locate Package In TermuxFix Termux Repository, Mirror, GPG, And apt Update ErrorsTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix Termux Storage And Downloads Access [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-storage-permission.html
Fix Termux Storage And Downloads Access
Fix Termux storage permission, Downloads path access, shared storage files, and Android file visibility without root.
Quick Answer
Fix Termux storage permission, Downloads path access, shared storage files, and Android file visibility without root.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Permission denied/storage/emulated/0~/storage
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
termux-setup-storage ls -la /storage/emulated/0/Download pwd cp test.txt /storage/emulated/0/Download/ 2>/dev/null || echo "Create test.txt first"
What The Commands Tell You
`termux-setup-storage` — Requests shared-storage access and creates Termux storage shortcuts.
`ls -la /storage/emulated/0/Download` — Lists files, names, and permissions.
`pwd` — Prints the current working directory.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsUnzip Files In Termux Without Broken PathsBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Termux:Widget Help [en]
Source-URL: https://ded-sec.space/Assistance/fix-termux-widget-scripts.html
Termux:Widget Help
Fix Termux:Widget shortcuts, wrong widget folder, missing shebang, permission problems, and scripts that do not appear.
Quick Answer
Fix Termux:Widget shortcuts, wrong widget folder, missing shebang, permission problems, and scripts that do not appear.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Termux:WidgetHelp
Before You Run Anything
Confirm that Termux and any add-on came from compatible sources and signing families.
Review Android permissions, battery restrictions, and notification settings for the exact feature being tested.
Test one Android integration command directly before placing it inside a larger script or widget.
Diagnostic Or Setup Commands
Install only compatible Termux add-ons, grant the required Android permission, and test one direct command before using it in a script.
Copy commands
mkdir -p ~/.shortcuts nano ~/.shortcuts/test-widget.sh chmod +x ~/.shortcuts/test-widget.sh ~/.shortcuts/test-widget.sh
What The Commands Tell You
`chmod +x ~/.shortcuts/test-widget.sh` — Changes executable or access permission bits.
What Success Looks Like
The direct add-on, storage, widget, or background test returns the expected Android result.
The feature still works after closing and reopening Termux.
The setup does not depend on root or permissions that Android cannot grant to a normal app.
Safe Next Steps
Verify app source compatibility and install the required Termux command package.
Grant only the Android permission required by the tested command.
Run the smallest direct command and inspect its raw output.
Add it to the script, widget, or background workflow only after the direct test works.
Common Mistakes
Mixing Termux and add-ons from incompatible stores or signing sources.
Treating Android battery optimization as if it were a Python or shell error.
Expecting a no-root app to access protected system areas or bypass Android permission boundaries.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### GitHub Clone Help [en]
Source-URL: https://ded-sec.space/Assistance/github-clone-termux.html
GitHub Clone Help
Fix GitHub clone errors on Android Termux, including missing git, wrong folders, authentication confusion, and broken repository paths.
Quick Answer
Fix GitHub clone errors on Android Termux, including missing git, wrong folders, authentication confusion, and broken repository paths.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
GitHubCloneHelp
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
pkg install git -y mkdir -p ~/Projects cd ~/Projects git clone https://github.com/dedsec1121fk/DedSec.git cd DedSec pwd ls
What The Commands Tell You
`pkg install git -y` — Installs the listed Termux packages and dependencies.
`git clone https://github.com/dedsec1121fk/DedSec.git` — Creates a local copy of the specified repository.
`pwd` — Prints the current working directory.
`ls` — Lists files, names, and permissions.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Install DedSec Project [en]
Source-URL: https://ded-sec.space/Assistance/install-dedsec-project-android.html
Install DedSec Project
Step-by-step no-root Android setup for Termux, GitHub cloning, core packages, and the first clean DedSec Project run.
Quick Answer
Step-by-step no-root Android setup for Termux, GitHub cloning, core packages, and the first clean DedSec Project run.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
InstallDedSecProject
Before You Run Anything
Back up personal settings, outputs, modified scripts, and saved data before reinstalling or updating.
Confirm the exact DedSec folder and current Git state instead of cloning another nested copy.
Preserve the full first error rather than replacing the entire installation immediately.
Diagnostic Or Setup Commands
Back up personal DedSec settings and outputs first. Confirm the current DedSec folder before copying or running the block.
Copy commands
(termux-setup-storage pkg update && pkg upgrade -y pkg install python git unzip curl wget nano -y git clone https://github.com/dedsec1121fk/DedSec.git cd DedSec)
What The Commands Tell You
`pkg update && pkg upgrade -y` — Refreshes the Termux package index.
`pkg install python git unzip curl wget nano -y` — Installs the listed Termux packages and dependencies.
`git clone https://github.com/dedsec1121fk/DedSec.git` — Creates a local copy of the specified repository.
What Success Looks Like
The intended DedSec launcher starts from the documented folder.
Personal settings and saved output remain present after the repair or update.
A second launch works without repeating installation steps.
Safe Next Steps
Identify whether the failure is a folder, dependency, Git, permission, or saved-data problem.
Repair only that layer and run the smallest DedSec entry-point test.
Compare changed files before replacing local modifications.
Keep a dated backup after confirming the repaired version starts correctly.
Common Mistakes
Deleting the existing DedSec folder before copying personal settings and outputs.
Creating repeated nested clones such as `DedSec/DedSec/DedSec`.
Running a replacement command from the wrong language or project folder.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Git Identity ErrorGitHub Clone HelpTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Install DedSec Project on Linux [en]
Source-URL: https://ded-sec.space/Assistance/install-dedsec-project-linux.html
Install DedSec Project on Linux
Install DedSec on Ubuntu, Kali Linux, or Linux Mint using the shared cross-platform installer and launcher.
Quick Summary
Install DedSec on Ubuntu, Kali Linux, or Linux Mint using the shared cross-platform installer and launcher.
Requirements
Use a user account with sudo access and a working internet connection. DedSec supports Ubuntu, Kali Linux, and Linux Mint through the same desktop setup.
Install Git
sudo apt update sudo apt install -y git
Clone And Setup
git clone https://github.com/dedsec1121fk/DedSec cd DedSec bash Setup.sh
The setup installs desktop dependencies, creates .venv, and prepares Compat/bin.
Launch
./Run.sh
Use this launcher for normal desktop runs so the local environment and compatibility layer are applied.
Paths
Project Python lives in DedSec/.venv/. Compatibility commands live in DedSec/Compat/bin/. Tool outputs normally use ~/Downloads/ or the user's XDG Downloads directory.
Next Steps
For platform-specific save paths, use Learn About The Tools. For other setup or runtime problems, return to Assistance.
Learn About The ToolsAll Assistance Guides
### Keep Termux Running Without Android Killing It [en]
Source-URL: https://ded-sec.space/Assistance/keep-termux-running-background.html
Keep Termux Running Without Android Killing It
Reduce Android background kills for Termux scripts, local servers, long downloads, and DedSec workflows without root.
Quick Answer
Reduce Android background kills for Termux scripts, local servers, long downloads, and DedSec workflows without root.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
KeepTermuxRunningWithout
Before You Run Anything
Confirm that Termux and any add-on came from compatible sources and signing families.
Review Android permissions, battery restrictions, and notification settings for the exact feature being tested.
Test one Android integration command directly before placing it inside a larger script or widget.
Diagnostic Or Setup Commands
Install only compatible Termux add-ons, grant the required Android permission, and test one direct command before using it in a script.
Copy commands
termux-wake-lock nohup python server.py > server.log 2>&1 & ps -A | grep python tail -f server.log
What The Commands Tell You
`termux-wake-lock` — Requests a wake lock; Android may still enforce background limits.
What Success Looks Like
The direct add-on, storage, widget, or background test returns the expected Android result.
The feature still works after closing and reopening Termux.
The setup does not depend on root or permissions that Android cannot grant to a normal app.
Safe Next Steps
Verify app source compatibility and install the required Termux command package.
Grant only the Android permission required by the tested command.
Run the smallest direct command and inspect its raw output.
Add it to the script, widget, or background workflow only after the direct test works.
Common Mistakes
Mixing Termux and add-ons from incompatible stores or signing sources.
Treating Android battery optimization as if it were a Python or shell error.
Expecting a no-root app to access protected system areas or bypass Android permission boundaries.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
First Termux SetupFix Permission Denied, chmod, And Executable Scripts In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Browser Tips [en]
Source-URL: https://ded-sec.space/Assistance/termux-android-webview-browser-tips.html
Browser Tips
Fix local page cache, wrong browser behavior, old CSS, blocked mixed paths, and refresh problems when testing websites from Termux.
Quick Answer
Fix local page cache, wrong browser behavior, old CSS, blocked mixed paths, and refresh problems when testing websites from Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
BrowserTips
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace the example port and folder. Test the local URL on the same phone before creating a LAN address or public tunnel.
Copy commands
python -m http.server 8000 # Open a private tab or add ?v=2 to CSS/JS links # Try http://127.0.0.1:8000 and http://localhost:8000
What The Commands Tell You
`python -m http.server 8000` — Starts a simple local HTTP server in the current folder.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Backup And Restore Termux Projects Safely [en]
Source-URL: https://ded-sec.space/Assistance/termux-backup-restore-workflow.html
Backup And Restore Termux Projects Safely
Create reliable ZIP backups, avoid overwriting important files, keep repository backups clean, and restore Termux projects with checks.
Quick Answer
Create reliable ZIP backups, avoid overwriting important files, keep repository backups clean, and restore Termux projects with checks.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
BackupRestoreTermuxProjects
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
The timestamp includes seconds, so multiple backups on the same day do not share one filename.
Copy commands
mkdir -p /storage/emulated/0/Download/TermuxBackups STAMP="$(date +%Y-%m-%d_%H-%M-%S)" zip -r "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" ~/DedSec -x "*/__pycache__/*" "*.pyc" unzip -l "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" | head
What The Commands Tell You
`zip -r "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" ~/DedSec -x "*/__pycache__/*" "*.pyc"` — Creates a ZIP archive from the specified files or folder.
`unzip -l "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" | head` — Lists or extracts files from a ZIP archive.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Beginner Guide [en]
Source-URL: https://ded-sec.space/Assistance/termux-beginner-guide-android.html
Beginner Guide
A clean first path for Android users who want to learn Termux, folders, packages, Python scripts, GitHub, and DedSec Project basics.
Quick Answer
A clean first path for Android users who want to learn Termux, folders, packages, Python scripts, GitHub, and DedSec Project basics.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
BeginnerGuide
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
Read the block first, replace any example filename or folder, and run one line at a time from the location named by the guide.
Copy commands
pwd ls mkdir -p ~/Projects cd ~/Projects pkg update pkg install python git nano -y
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls` — Lists files, names, and permissions.
`pkg update` — Refreshes the Termux package index.
`pkg install python git nano -y` — Installs the listed Termux packages and dependencies.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Command Cheat SheetSafe Copy/PasteTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### DedSec-Style Tool [en]
Source-URL: https://ded-sec.space/Assistance/termux-build-dedsec-style-tool.html
DedSec-Style Tool
Plan a safe DedSec-style tool with menu, folders, logs, language toggle, help screen, and clear exit behavior.
Quick Answer
Plan a safe DedSec-style tool with menu, folders, logs, language toggle, help screen, and clear exit behavior.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
DedSec-StyleTool
Before You Run Anything
Back up personal settings, outputs, modified scripts, and saved data before reinstalling or updating.
Confirm the exact DedSec folder and current Git state instead of cloning another nested copy.
Preserve the full first error rather than replacing the entire installation immediately.
Diagnostic Or Setup Commands
Back up personal DedSec settings and outputs first. Confirm the current DedSec folder before copying or running the block.
Copy commands
mkdir -p ~/DedSecTool/{data,logs,exports} touch ~/DedSecTool/logs/run.log nano ~/DedSecTool/main.py python ~/DedSecTool/main.py
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The intended DedSec launcher starts from the documented folder.
Personal settings and saved output remain present after the repair or update.
A second launch works without repeating installation steps.
Safe Next Steps
Identify whether the failure is a folder, dependency, Git, permission, or saved-data problem.
Repair only that layer and run the smallest DedSec entry-point test.
Compare changed files before replacing local modifications.
Keep a dated backup after confirming the repaired version starts correctly.
Common Mistakes
Deleting the existing DedSec folder before copying personal settings and outputs.
Creating repeated nested clones such as `DedSec/DedSec/DedSec`.
Running a replacement command from the wrong language or project folder.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Want To Support More DedSec Development?
GitHub Sponsors is the optional support path for ongoing DedSec Project development. The public toolkit and this Assistance guide remain free.
Copy Support ReportView Sponsor Tiers
Related Assistance Guides
First Termux SetupFix Permission Denied, chmod, And Executable Scripts In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Check Broken Links And SEO Basics Locally From Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-check-broken-links-locally.html
Check Broken Links And SEO Basics Locally From Termux
Scan local HTML files for broken internal links, missing titles, missing meta descriptions, bad canonicals, and sitemap problems from a phone.
Quick Answer
Scan local HTML files for broken internal links, missing titles, missing meta descriptions, bad canonicals, and sitemap problems from a phone.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CheckBrokenLinksBasics
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
This checker validates local targets and core SEO tags. It intentionally does not request external URLs.
Copy commands
pkg install -y python python -m pip install beautifulsoup4 python - <<'PYCODE' from pathlib import Path from urllib.parse import unquote, urlsplit from bs4 import BeautifulSoup
root = Path('.').resolve() problems = [] for page in root.rglob('*.html'): soup = BeautifulSoup(page.read_text(encoding='utf-8', errors='replace'), 'html.parser') if not soup.title or not soup.title.get_text(strip=True): problems.append((page, 'missing
')) if not soup.find('meta', attrs={'name': 'description'}): problems.append((page, 'missing meta description')) if not soup.find('link', rel='canonical'): problems.append((page, 'missing canonical')) for tag, attr in [('a','href'),('img','src'),('script','src'),('link','href')]: for node in soup.find_all(tag): raw = (node.get(attr) or '').strip() if not raw or raw.startswith(('#','mailto:','tel:','data:','javascript:')): continue parsed = urlsplit(raw) if parsed.scheme or parsed.netloc: continue target = unquote(parsed.path) candidate = (root / target.lstrip('/')) if target.startswith('/') else (page.parent / target) if target.endswith('/'): candidate = candidate / 'index.html' if not candidate.resolve().exists(): problems.append((page, f'broken {attr}: {raw}')) for page, issue in problems: print(f'{page}: {issue}') print(f'Problems: {len(problems)}') PYCODE
What The Commands Tell You
`pkg install -y python` — Installs the listed Termux packages and dependencies.
`python -m pip install beautifulsoup4` — Installs or updates the named Python distribution, not pip itself.
`python - <<'PYCODE'` — Runs an inline Python diagnostic.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Clean Cache [en]
Source-URL: https://ded-sec.space/Assistance/termux-clean-cache-safely.html
Clean Cache
Free space without deleting important projects by cleaning package cache, old downloads, and temporary build files carefully.
Quick Answer
Free space without deleting important projects by cleaning package cache, old downloads, and temporary build files carefully.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CleanCache
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Review the size output first. `apt clean` removes downloaded package files, and `pip cache purge` removes cached Python downloads—not installed libraries or project files.
Copy commands
df -h du -h -d 1 ~ | sort -h apt clean command -v python >/dev/null && python -m pip cache dir command -v python >/dev/null && python -m pip cache purge
What The Commands Tell You
`df -h` — Shows free and used filesystem space.
`du -h -d 1 ~ | sort -h` — Measures file or folder sizes before cleanup.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Share Local Termux Links Safely With Cloudflared Or QR Codes [en]
Source-URL: https://ded-sec.space/Assistance/termux-cloudflared-local-link-help.html
Share Local Termux Links Safely With Cloudflared Or QR Codes
Understand local links, phone browser testing, Cloudflared tunnels, QR sharing, and safe limits for temporary Termux servers.
Quick Answer
Understand local links, phone browser testing, Cloudflared tunnels, QR sharing, and safe limits for temporary Termux servers.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
ShareLocalTermuxLinks
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Quick Tunnels are temporary testing links. Do not expose your Termux home, credentials, private repositories, or backups.
Copy commands
pkg install -y cloudflared python mkdir -p ~/PublicShare && cd ~/PublicShare python -m http.server 8080 --bind 127.0.0.1 # In a second Termux session: cloudflared tunnel --url http://127.0.0.1:8080
What The Commands Tell You
`pkg install -y cloudflared python` — Installs the listed Termux packages and dependencies.
`python -m http.server 8080 --bind 127.0.0.1` — Starts a simple local HTTP server in the current folder.
`cloudflared tunnel --url http://127.0.0.1:8080` — Creates a temporary public tunnel to a working local service.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Command Cheat Sheet [en]
Source-URL: https://ded-sec.space/Assistance/termux-command-cheat-sheet.html
Command Cheat Sheet
Essential Termux commands for moving around folders, checking files, installing packages, running Python, and avoiding beginner mistakes.
Quick Answer
Essential Termux commands for moving around folders, checking files, installing packages, running Python, and avoiding beginner mistakes.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CommandCheatSheet
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
Read the block first, replace any example filename or folder, and run one line at a time from the location named by the guide.
Copy commands
pwd ls -la cd folder_name mkdir new_folder cp file.txt copy.txt mv old.txt new.txt python script.py
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls -la` — Lists files, names, and permissions.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideSafe Copy/PasteTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### History & Aliases [en]
Source-URL: https://ded-sec.space/Assistance/termux-command-history-and-aliases.html
History & Aliases
Use Termux command history, reverse search, and safe aliases to repeat common commands faster without hiding risky actions.
Quick Answer
Use Termux command history, reverse search, and safe aliases to repeat common commands faster without hiding risky actions.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
HistoryAliases
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
history | tail echo "alias ll='ls -la'" >> ~/.bashrc source ~/.bashrc ll
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Exit Codes [en]
Source-URL: https://ded-sec.space/Assistance/termux-common-exit-codes.html
Exit Codes
Understand Termux and Linux exit codes, check $?, identify failed commands, and use non-zero statuses to debug scripts more effectively.
Quick Answer
Understand Termux and Linux exit codes, check $?, identify failed commands, and use non-zero statuses to debug scripts more effectively.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
ExitCodes
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
python script.py echo $? command_that_might_fail || echo "command failed"
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Useful No-Root Termux Script Ideas [en]
Source-URL: https://ded-sec.space/Assistance/termux-cool-script-ideas.html
Useful No-Root Termux Script Ideas
Practical safe script ideas for Termux: file organizer, offline notes, search tools, expense tracking, backups, and DedSec-style helpers.
Quick Answer
Practical safe script ideas for Termux: file organizer, offline notes, search tools, expense tracking, backups, and DedSec-style helpers.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
UsefulNo-RootTermuxScript
Before You Run Anything
Define one small goal, the inputs it accepts, the files it writes, and how the user exits safely.
Keep configuration, logs, generated output, and source code in separate paths.
Build a minimal working version before adding menus, effects, networking, or automatic installation.
Diagnostic Or Setup Commands
Use example names only in a test folder. Review generated files before moving the pattern into an existing project.
Copy commands
mkdir -p ~/TermuxIdeas/{notes,logs,exports} cat > ~/TermuxIdeas/ideas.txt < ~/MenuTool/config.json <&1 | tee debug.log tail -n 80 debug.log grep -i "error" debug.log
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### curl/wget Downloads [en]
Source-URL: https://ded-sec.space/Assistance/termux-download-with-curl-wget.html
curl/wget Downloads
Download files safely, choose output names, resume when possible, and avoid saving downloads into the wrong folder.
Quick Answer
Download files safely, choose output names, resume when possible, and avoid saving downloads into the wrong folder.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
curlwgetDownloads
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
pkg install curl wget -y cd /storage/emulated/0/Download curl -L -o file.zip "https://example.com/file.zip" wget -O file.zip "https://example.com/file.zip"
What The Commands Tell You
`pkg install curl wget -y` — Installs the listed Termux packages and dependencies.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Edit With nano [en]
Source-URL: https://ded-sec.space/Assistance/termux-edit-files-with-nano.html
Edit With nano
Beginner-friendly file editing in Termux: open files, save changes, exit nano, and avoid breaking Python indentation.
Quick Answer
Beginner-friendly file editing in Termux: open files, save changes, exit nano, and avoid breaking Python indentation.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
EditWithnano
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
cd ~/DedSec ls nano file_name.py # Save: CTRL + O, Enter # Exit: CTRL + X
What The Commands Tell You
`ls` — Lists files, names, and permissions.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Bad Interpreter [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-bash-bad-interpreter.html
Bad Interpreter
Fix bad interpreter, /bin/bash not found, CRLF line endings, wrong shebangs, and copied shell scripts that fail on Android Termux.
Quick Answer
Fix bad interpreter, /bin/bash not found, CRLF line endings, wrong shebangs, and copied shell scripts that fail on Android Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
bad interpreterNo such file or directory/bin/bash
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
head -n 1 script.sh sed -i "s|^#!/bin/bash|#!/usr/bin/env bash|" script.sh pkg install dos2unix -y dos2unix script.sh chmod +x script.sh ./script.sh
What The Commands Tell You
`pkg install dos2unix -y` — Installs the listed Termux packages and dependencies.
`chmod +x script.sh` — Changes executable or access permission bits.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Cron Alternatives [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-crontab-alternatives.html
Cron Alternatives
Understand why cron-style scheduling is unreliable on no-root Android and use safer Termux-friendly alternatives for reminders, backups, and checks.
Quick Answer
Understand why cron-style scheduling is unreliable on no-root Android and use safer Termux-friendly alternatives for reminders, backups, and checks.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CronAlternatives
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
while true; do date >> ~/termux-job.log # run your safe local command here sleep 3600 done
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### GitHub Token Auth [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-git-auth-token-github.html
GitHub Token Auth
Use GitHub personal access tokens safely in Termux when password authentication fails, without exposing tokens in commands or public files.
Quick Answer
Use GitHub personal access tokens safely in Termux when password authentication fails, without exposing tokens in commands or public files.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Authentication failedpassword authentication was removed403
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
git remote -v git push # username: your GitHub username # password: paste your token when prompted
What The Commands Tell You
`git remote -v` — Displays the configured fetch and push repository URLs.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Large File Push [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-git-large-file-push.html
Large File Push
Fix GitHub push failures caused by huge ZIPs, PDFs, videos, build folders, cache files, and accidental large commits from Termux.
Quick Answer
Fix GitHub push failures caused by huge ZIPs, PDFs, videos, build folders, cache files, and accidental large commits from Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
GH001exceeds GitHub file size limitremote rejected
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Adding a path to `.gitignore` does not remove a committed file. Older commits need a verified backup and history cleanup such as `git filter-repo`, or Git LFS/Releases.
Copy commands
find . -type f -size +50M -print git status --short git log --stat -n 3 # For a file in the latest unpushed commit: git rm --cached "PATH/TO/LARGE_FILE" git commit --amend --no-edit
What The Commands Tell You
`find . -type f -size +50M -print` — Searches paths by name, size, or type.
`git status --short` — Shows the branch, staged files, conflicts, and local changes.
`git rm --cached "PATH/TO/LARGE_FILE"` — Stops tracking a path while preserving the local file.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Fix CRLF Lines [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-line-endings-windows-crlf.html
Fix CRLF Lines
Fix bad interpreter, weird syntax, and shell script errors caused by Windows CRLF line endings in files copied to Android.
Quick Answer
Fix bad interpreter, weird syntax, and shell script errors caused by Windows CRLF line endings in files copied to Android.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
bad interpreter^MCRLF
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
pkg install dos2unix -y dos2unix script.sh dos2unix script.py chmod +x script.sh ./script.sh
What The Commands Tell You
`pkg install dos2unix -y` — Installs the listed Termux packages and dependencies.
`chmod +x script.sh` — Changes executable or access permission bits.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### PyInstaller Alternatives [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-pyinstaller-on-android-alternatives.html
PyInstaller Alternatives
Learn why PyInstaller often fails on Android Termux and use better ways to package, launch, zip, and share Python tools safely.
Quick Answer
Learn why PyInstaller often fails on Android Termux and use better ways to package, launch, zip, and share Python tools safely.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PyInstallerAlternatives
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
mkdir -p MyTool cp tool.py MyTool/ printf "pkg install python -y\npython tool.py\n" > MyTool/run.sh chmod +x MyTool/run.sh zip -r MyTool.zip MyTool
What The Commands Tell You
`chmod +x MyTool/run.sh` — Changes executable or access permission bits.
`zip -r MyTool.zip MyTool` — Creates a ZIP archive from the specified files or folder.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Python Unicode Errors [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-python-encoding-unicode-errors.html
Python Unicode Errors
Fix UnicodeDecodeError, UnicodeEncodeError, broken Greek text, special symbols, and file encoding problems in Python scripts on Termux.
Quick Answer
Fix UnicodeDecodeError, UnicodeEncodeError, broken Greek text, special symbols, and file encoding problems in Python scripts on Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PythonUnicodeErrors
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
python -c "from pathlib import Path; p=Path('test.txt'); p.write_text('Greek: καλημέρα', encoding='utf-8'); print(p.read_text(encoding='utf-8'))" python -m json.tool file.json > /dev/null
What The Commands Tell You
`python -c "from pathlib import Path; p=Path('test.txt'); p.write_text('Greek: καλημέρα', encoding='utf-8');...` — Runs a small isolated Python test.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Requests / API Errors [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-requests-ssl-and-api-errors.html
Requests / API Errors
Fix Python requests failures, API timeouts, SSL certificate errors, JSON response mistakes, and connection problems in Termux scripts.
Quick Answer
Fix Python requests failures, API timeouts, SSL certificate errors, JSON response mistakes, and connection problems in Termux scripts.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
requestsErrors
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
python -m pip install requests python -c "import requests; r=requests.get('https://api.github.com', timeout=15); print(r.status_code)"
What The Commands Tell You
`python -m pip install requests` — Installs or updates the named Python distribution, not pip itself.
`python -c "import requests; r=requests.get('https://api.github.com', timeout=15); print(r.status_code)"` — Runs a small isolated Python test.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Python Shebang [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-shebang-env-python.html
Python Shebang
Fix scripts that fail because of wrong python paths, missing env, desktop shebangs, or direct execution mistakes in Termux.
Quick Answer
Fix scripts that fail because of wrong python paths, missing env, desktop shebangs, or direct execution mistakes in Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PythonShebang
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
which python head -n 1 script.py sed -i "1s|.*|#!/usr/bin/env python|" script.py chmod +x script.py ./script.py
What The Commands Tell You
`chmod +x script.py` — Changes executable or access permission bits.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Fix Termux:API, Notifications, Clipboard, And Battery Commands [en]
Source-URL: https://ded-sec.space/Assistance/termux-fix-termux-api-not-working.html
Fix Termux:API, Notifications, Clipboard, And Battery Commands
Set up Termux:API correctly, fix notification permission on Android 13+, and test clipboard, battery, and notification commands.
Quick Answer
Set up Termux:API correctly, fix notification permission on Android 13+, and test clipboard, battery, and notification commands.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
API_ERRORcommand not foundTermux:API app is not installed
Before You Run Anything
Confirm that Termux and any add-on came from compatible sources and signing families.
Review Android permissions, battery restrictions, and notification settings for the exact feature being tested.
Test one Android integration command directly before placing it inside a larger script or widget.
Diagnostic Or Setup Commands
The command package is not enough: install the Termux:API Android add-on from the same source/signing family as Termux, then grant permissions.
Copy commands
pkg install -y termux-api command -v termux-battery-status termux-battery-status termux-clipboard-get termux-notification --title "DedSec Test" --content "Termux:API works"
What The Commands Tell You
`pkg install -y termux-api` — Installs the listed Termux packages and dependencies.
What Success Looks Like
The direct add-on, storage, widget, or background test returns the expected Android result.
The feature still works after closing and reopening Termux.
The setup does not depend on root or permissions that Android cannot grant to a normal app.
Safe Next Steps
Verify app source compatibility and install the required Termux command package.
Grant only the Android permission required by the tested command.
Run the smallest direct command and inspect its raw output.
Add it to the script, widget, or background workflow only after the direct test works.
Common Mistakes
Mixing Termux and add-ons from incompatible stores or signing sources.
Treating Android battery optimization as if it were a Python or shell error.
Expecting a no-root app to access protected system areas or bypass Android permission boundaries.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Troubleshooting ChecklistBeginner GuideUpdate GitHub Pages From Termux Without Breaking The SiteFix Broken DedSec Install
Back To All Assistance Guides
### Fix Flask App Not Loading In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-flask-app-not-loading.html
Fix Flask App Not Loading In Termux
Troubleshoot Flask apps on Android Termux: host, port, templates, static files, debug output, and browser URL mistakes.
Quick Answer
Troubleshoot Flask apps on Android Termux: host, port, templates, static files, debug output, and browser URL mistakes.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Connection refusedAddress already in useModuleNotFoundError: flask
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace the example port and folder. Test the local URL on the same phone before creating a LAN address or public tunnel.
Copy commands
python app.py 2>&1 | tee flask.log # common Flask run line inside code: # app.run(host="127.0.0.1", port=5000, debug=True)
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Git Branches [en]
Source-URL: https://ded-sec.space/Assistance/termux-git-branch-basics.html
Git Branches
Use Git branches in Termux to test edits safely, protect the main branch, compare changes, and return to a stable working version.
Quick Answer
Use Git branches in Termux to test edits safely, protect the main branch, compare changes, and return to a stable working version.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Branches
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
cd ~/DedSec git branch git switch -c test-change git status git switch main
What The Commands Tell You
`git branch` — Shows or changes Git branches.
`git status` — Shows the branch, staged files, conflicts, and local changes.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Git Pull Conflicts [en]
Source-URL: https://ded-sec.space/Assistance/termux-git-pull-conflicts.html
Git Pull Conflicts
Handle local changes, merge conflicts, stash, pull, and safe backup before updating a GitHub project from Termux.
Quick Answer
Handle local changes, merge conflicts, stash, pull, and safe backup before updating a GitHub project from Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CONFLICTcould not applyneeds merge
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
After the pull, `git stash pop` can create another conflict set. Resolve named files, stage them, and continue only when `git status` is clear.
Copy commands
cd ~/DedSec git status git stash push -u -m "backup before pull" git pull --rebase git stash pop git status
What The Commands Tell You
`git status` — Shows the branch, staged files, conflicts, and local changes.
`git stash push -u -m "backup before pull"` — Temporarily stores local changes.
`git pull --rebase` — Downloads and integrates remote commits.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Update GitHub Pages From Termux Without Breaking The Site [en]
Source-URL: https://ded-sec.space/Assistance/termux-github-pages-update-workflow.html
Update GitHub Pages From Termux Without Breaking The Site
A clean phone workflow for editing a static site, checking links, committing changes, and pushing GitHub Pages updates from Termux.
Quick Answer
A clean phone workflow for editing a static site, checking links, committing changes, and pushing GitHub Pages updates from Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
UpdateGitHubPagesFrom
Before You Run Anything
Run `git status`, `git branch --show-current`, and `git remote -v` inside the intended repository.
Back up uncommitted files before rebasing, amending, resetting, or rewriting history.
Remove tokens, private keys, and personal paths from any output you share.
Diagnostic Or Setup Commands
Run these commands only inside the intended repository. Review `git status` before every command that changes tracked files or history.
Copy commands
git status git add -A git commit -m "Update site" || echo "No changes" git push python -m http.server 8080
What The Commands Tell You
`git status` — Shows the branch, staged files, conflicts, and local changes.
`python -m http.server 8080` — Starts a simple local HTTP server in the current folder.
What Success Looks Like
`git status` shows the expected branch and no unresolved conflicts.
The configured remote points to the intended repository and authentication succeeds without exposing credentials.
The pushed commit contains only the files you expected.
Safe Next Steps
Confirm the repository, branch, remote, and working-tree state.
Use the least destructive action that addresses the exact Git message.
Review the diff and staged files before committing or pushing.
Verify the result on GitHub after the push completes.
Common Mistakes
Running Git commands one folder above or below the intended repository.
Using force push, reset, or history rewriting before creating a verified backup.
Putting access tokens directly into commands, screenshots, README files, or public logs.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Edit Web Files [en]
Source-URL: https://ded-sec.space/Assistance/termux-html-css-js-editing-from-phone.html
Edit Web Files
A phone-first workflow for editing static website files, avoiding broken CSS, checking buttons, and testing pages before GitHub Pages deploy.
Quick Answer
A phone-first workflow for editing static website files, avoiding broken CSS, checking buttons, and testing pages before GitHub Pages deploy.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
EditFiles
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
python -m http.server 8080 # open http://127.0.0.1:8080 find . -name "*.html" | wc -l
What The Commands Tell You
`python -m http.server 8080` — Starts a simple local HTTP server in the current folder.
`find . -name "*.html" | wc -l` — Searches paths by name, size, or type.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Install Common Python Libraries In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-install-common-python-libraries.html
Install Common Python Libraries In Termux
Install common Python libraries for Termux scripts in a safe order and know when a package needs system dependencies first.
Quick Answer
Install common Python libraries for Termux scripts in a safe order and know when a package needs system dependencies first.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
InstallCommonPythonLibraries
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Install system build tools only when a package needs compilation. Do not upgrade pip itself inside Termux.
Copy commands
pkg update -y pkg install -y python python-pip clang make pkg-config python -m pip install --upgrade setuptools wheel python -m pip install requests beautifulsoup4 flask rich
What The Commands Tell You
`pkg update -y` — Refreshes the Termux package index.
`pkg install -y python python-pip clang make pkg-config` — Installs the listed Termux packages and dependencies.
`python -m pip install --upgrade setuptools wheel` — Installs or updates the named Python distribution, not pip itself.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### First Termux Setup [en]
Source-URL: https://ded-sec.space/Assistance/termux-install-source-and-first-setup.html
First Termux Setup
Clean first-run setup for Android users: storage permission, package update, core tools, and safe folders before any DedSec Project script.
Quick Answer
Clean first-run setup for Android users: storage permission, package update, core tools, and safe folders before any DedSec Project script.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
FirstTermuxSetup
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
Read the block first, replace any example filename or folder, and run one line at a time from the location named by the guide.
Copy commands
pkg update && pkg upgrade -y termux-setup-storage pkg install python git unzip curl wget nano -y mkdir -p ~/DedSec ~/Downloads_Backups
What The Commands Tell You
`pkg update && pkg upgrade -y` — Refreshes the Termux package index.
`termux-setup-storage` — Requests shared-storage access and creates Termux storage shortcuts.
`pkg install python git unzip curl wget nano -y` — Installs the listed Termux packages and dependencies.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Permission Denied, chmod, And Executable Scripts In TermuxDedSec-Style ToolTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### JSON Errors [en]
Source-URL: https://ded-sec.space/Assistance/termux-json-file-errors.html
JSON Errors
Validate JSON files, find missing commas, broken quotes, invalid characters, and bad copied content from Android editors.
Quick Answer
Validate JSON files, find missing commas, broken quotes, invalid characters, and bad copied content from Android editors.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
JSONDecodeErrorExpecting valueExtra data
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
python -m json.tool data.json > /tmp/checked.json python - <<'PY' import json json.load(open("data.json", encoding="utf-8")) print("JSON OK") PY
What The Commands Tell You
`python - <<'PY'` — Runs an inline Python diagnostic.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Port Already In Use In TermuxFix Localhost Server Not Opening On AndroidTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Learn Python By Building [en]
Source-URL: https://ded-sec.space/Assistance/termux-learn-python-by-building-tools.html
Learn Python By Building
Learn Python on Android through small useful Termux projects: menus, file tools, notes, backups, logs, local pages, and JSON configs.
Quick Answer
Learn Python on Android through small useful Termux projects: menus, file tools, notes, backups, logs, local pages, and JSON configs.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
LearnPythonBuilding
Before You Run Anything
Define one small goal, the inputs it accepts, the files it writes, and how the user exits safely.
Keep configuration, logs, generated output, and source code in separate paths.
Build a minimal working version before adding menus, effects, networking, or automatic installation.
Diagnostic Or Setup Commands
Use example names only in a test folder. Review generated files before moving the pattern into an existing project.
Copy commands
python -c "name=input('Tool name: '); print(f'Building {name} from Termux')"
What The Commands Tell You
`python -c "name=input('Tool name: '); print(f'Building {name} from Termux')"` — Runs a small isolated Python test.
What Success Looks Like
The smallest version completes its main task and handles invalid input without crashing.
Generated files go to documented locations and can be removed or restored safely.
A new user can run the project by following the README without guessing hidden steps.
Safe Next Steps
Write the smallest testable function or command first.
Validate paths and user input before reading, writing, moving, or deleting files.
Add logs and clear error messages before adding visual polish.
Document installation, usage, generated files, limitations, and recovery steps.
Common Mistakes
Combining every feature into one untested block before the core task works.
Writing files into unpredictable folders or silently overwriting user data.
Hiding failures behind broad exception handling without a useful message or log.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Learning Roadmap [en]
Source-URL: https://ded-sec.space/Assistance/termux-learning-roadmap.html
Learning Roadmap
A clear learning order for Termux, Linux basics, Python scripts, GitHub, local websites, backups, and DedSec Project tools.
Quick Answer
A clear learning order for Termux, Linux basics, Python scripts, GitHub, local websites, backups, and DedSec Project tools.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
LearningRoadmap
Before You Run Anything
Define one small goal, the inputs it accepts, the files it writes, and how the user exits safely.
Keep configuration, logs, generated output, and source code in separate paths.
Build a minimal working version before adding menus, effects, networking, or automatic installation.
Diagnostic Or Setup Commands
Use example names only in a test folder. Review generated files before moving the pattern into an existing project.
Copy commands
mkdir -p ~/Learning-Termux echo "Day 1: pwd ls cd mkdir" > ~/Learning-Termux/roadmap.txt cat ~/Learning-Termux/roadmap.txt
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The smallest version completes its main task and handles invalid input without crashing.
Generated files go to documented locations and can be removed or restored safely.
A new user can run the project by following the README without guessing hidden steps.
Safe Next Steps
Write the smallest testable function or command first.
Validate paths and user input before reading, writing, moving, or deleting files.
Add logs and clear error messages before adding visual polish.
Document installation, usage, generated files, limitations, and recovery steps.
Common Mistakes
Combining every feature into one untested block before the core task works.
Writing files into unpredictable folders or silently overwriting user data.
Hiding failures behind broad exception handling without a useful message or log.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
First Termux SetupFix Permission Denied, chmod, And Executable Scripts In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Create A Local Website Or Dashboard In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-local-website-python-server.html
Create A Local Website Or Dashboard In Termux
Run a simple local web page, dashboard, or Python server from Termux, test it on Android, and avoid common port and path mistakes.
Quick Answer
Run a simple local web page, dashboard, or Python server from Termux, test it on Android, and avoid common port and path mistakes.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CreateLocalWebsiteDashboard
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace the example port and folder. Test the local URL on the same phone before creating a LAN address or public tunnel.
Copy commands
mkdir -p ~/LocalSite && cd ~/LocalSite echo "
DedSec Local Test
" > index.html python -m http.server 8080 --bind 127.0.0.1
What The Commands Tell You
`python -m http.server 8080 --bind 127.0.0.1` — Starts a simple local HTTP server in the current folder.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Performance Tips [en]
Source-URL: https://ded-sec.space/Assistance/termux-low-end-phone-performance-tips.html
Performance Tips
Make Termux smoother on low-RAM Android phones by avoiding heavy builds, controlling background loops, and keeping storage clean.
Quick Answer
Make Termux smoother on low-RAM Android phones by avoiding heavy builds, controlling background loops, and keeping storage clean.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PerformanceTips
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
df -h du -h -d 1 ~ | sort -h ps aux | head apt clean
What The Commands Tell You
`df -h` — Shows free and used filesystem space.
`du -h -d 1 ~ | sort -h` — Measures file or folder sizes before cleanup.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Large Projects On Phone [en]
Source-URL: https://ded-sec.space/Assistance/termux-manage-large-projects-on-phone.html
Large Projects On Phone
Keep large phone-built projects maintainable with folders, changelogs, TODO files, backups, test commands, and simple release ZIPs.
Quick Answer
Keep large phone-built projects maintainable with folders, changelogs, TODO files, backups, test commands, and simple release ZIPs.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
LargeProjectsPhone
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
touch README.md TODO.md CHANGELOG.md find . -maxdepth 2 -type f | sort > FILES.txt git status
What The Commands Tell You
`find . -maxdepth 2 -type f | sort > FILES.txt` — Searches paths by name, size, or type.
`git status` — Shows the branch, staged files, conflicts, and local changes.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### No Root Limits [en]
Source-URL: https://ded-sec.space/Assistance/termux-no-root-limitations.html
No Root Limits
Understand realistic no-root limits on Android so you build tools that work reliably instead of fighting the operating system.
Quick Answer
Understand realistic no-root limits on Android so you build tools that work reliably instead of fighting the operating system.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
RootLimits
Before You Run Anything
Confirm that Termux and any add-on came from compatible sources and signing families.
Review Android permissions, battery restrictions, and notification settings for the exact feature being tested.
Test one Android integration command directly before placing it inside a larger script or widget.
Diagnostic Or Setup Commands
A line beginning with `#` is a shell comment, not a diagnostic command. The example now prints the limitation.
Copy commands
whoami id termux-info printf '%s\n' "Use user-level files, shared storage, local servers, and Android-approved APIs."
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The direct add-on, storage, widget, or background test returns the expected Android result.
The feature still works after closing and reopening Termux.
The setup does not depend on root or permissions that Android cannot grant to a normal app.
Safe Next Steps
Verify app source compatibility and install the required Termux command package.
Grant only the Android permission required by the tested command.
Run the smallest direct command and inspect its raw output.
Add it to the script, widget, or background workflow only after the direct test works.
Common Mistakes
Mixing Termux and add-ons from incompatible stores or signing sources.
Treating Android battery optimization as if it were a Python or shell error.
Expecting a no-root app to access protected system areas or bypass Android permission boundaries.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
API Keys SafelyTroubleshooting ChecklistBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Offline Docs [en]
Source-URL: https://ded-sec.space/Assistance/termux-offline-documentation-folder.html
Offline Docs
Build an offline Termux documentation folder with commands, notes, PDFs, and project instructions so essential help stays available without internet.
Quick Answer
Build an offline Termux documentation folder with commands, notes, PDFs, and project instructions so essential help stays available without internet.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
OfflineDocs
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
mkdir -p ~/OfflineDocs/{Termux,DedSec,Python,Errors} nano ~/OfflineDocs/Termux/commands.txt cp ~/OfflineDocs/Termux/commands.txt /storage/emulated/0/Download/
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Fix Command Not Found And Cannot Locate Package In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-package-command-not-found.html
Fix Command Not Found And Cannot Locate Package In Termux
Understand whether a Termux command is missing, a package name is wrong, or the repository index needs repair.
Quick Answer
Understand whether a Termux command is missing, a package name is wrong, or the repository index needs repair.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
CommandFoundCannotLocate
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
pkg update -y command -v git || pkg install -y git command -v python || pkg install -y python pkg search PACKAGE_NAME
What The Commands Tell You
`pkg update -y` — Refreshes the Termux package index.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Termux Repository, Mirror, GPG, And apt Update ErrorsFix apt/dpkg LockTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Phone Coding Workflow [en]
Source-URL: https://ded-sec.space/Assistance/termux-phone-coding-workflow.html
Phone Coding Workflow
A practical Android-only workflow for writing scripts, editing websites, testing local servers, committing to GitHub, and keeping backups.
Quick Answer
A practical Android-only workflow for writing scripts, editing websites, testing local servers, committing to GitHub, and keeping backups.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PhoneCodingWorkflow
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
mkdir -p ~/Projects ~/Backups /storage/emulated/0/Download/TermuxExports cd ~/Projects ls
What The Commands Tell You
`ls` — Lists files, names, and permissions.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Project Folder Structure [en]
Source-URL: https://ded-sec.space/Assistance/termux-project-folder-structure.html
Project Folder Structure
Organize Termux scripts, data, backups, logs, configs, outputs, and website files so Android projects stay clean and easy to update.
Quick Answer
Organize Termux scripts, data, backups, logs, configs, outputs, and website files so Android projects stay clean and easy to update.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
ProjectFolderStructure
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
mkdir -p ~/MyProject/{Scripts,Data,Logs,Exports,Backups} touch ~/MyProject/README.md find ~/MyProject -maxdepth 2 -type d
What The Commands Tell You
`find ~/MyProject -maxdepth 2 -type d` — Searches paths by name, size, or type.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Python Debug Roadmap [en]
Source-URL: https://ded-sec.space/Assistance/termux-python-error-debugging-roadmap.html
Python Debug Roadmap
A practical debugging order for Python scripts in Termux: syntax, paths, modules, permissions, encoding, APIs, logs, and clean reruns.
Quick Answer
A practical debugging order for Python scripts in Termux: syntax, paths, modules, permissions, encoding, APIs, logs, and clean reruns.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PythonDebugRoadmap
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
Replace placeholders before running a line. Use Termux package names and stop at the first error instead of repeating the whole block.
Copy commands
python -m py_compile script.py pwd ls python script.py 2>&1 | tee error.log
What The Commands Tell You
`python -m py_compile script.py` — Checks Python syntax without starting the complete program.
`pwd` — Prints the current working directory.
`ls` — Lists files, names, and permissions.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Use Python Virtual Environments In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-python-virtual-environment.html
Use Python Virtual Environments In Termux
Use venv in Termux when projects need different Python packages, and avoid mixing DedSec tools with unrelated experiments.
Quick Answer
Use venv in Termux when projects need different Python packages, and avoid mixing DedSec tools with unrelated experiments.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PythonVirtualEnvironmentsTermux
Before You Run Anything
Copy the complete error, including the first package, file, module, or line number it names.
Record `termux-info`, the active language/runtime version, and the current folder before changing dependencies.
Do not delete package-manager locks or upgrade pip itself through pip in Termux.
Diagnostic Or Setup Commands
A virtual environment isolates project libraries, but Termux still supplies the base Python and packaged pip.
Copy commands
pkg install -y python python-pip python -m venv ~/venvs/project1 source ~/venvs/project1/bin/activate python -m pip install --upgrade setuptools wheel python -m pip install requests python -c "import requests; print(requests.__version__)"
What The Commands Tell You
`pkg install -y python python-pip` — Installs the listed Termux packages and dependencies.
`python -m venv ~/venvs/project1` — Creates an isolated Python environment for one project.
`python -m pip install --upgrade setuptools wheel` — Installs or updates the named Python distribution, not pip itself.
`python -c "import requests; print(requests.__version__)"` — Runs a small isolated Python test.
What Success Looks Like
The minimal version, import, syntax, path, or package test exits successfully.
The original command now fails later for a different, clearly identified reason or completes normally.
The package manager has no interrupted configuration left pending.
Safe Next Steps
Repair or update the Termux package layer before retrying a language package.
Confirm that the interpreter and its package tool belong to the same installation.
Install the missing system dependency before repeating a Python or Node build.
Retest with a minimal version, import, compile, or file command before running the full script.
Common Mistakes
Using `sudo`, Ubuntu package names, or desktop paths in a normal Termux installation.
Assuming that a Python import name always matches the distribution name on PyPI.
Deleting caches, environments, or lock files before preserving the exact error and versions.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix ModuleNotFoundError In Termux PythonFix pip Errors In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Run Python Scripts [en]
Source-URL: https://ded-sec.space/Assistance/termux-run-python-script-correctly.html
Run Python Scripts
Learn the correct order for entering a folder, checking files, installing dependencies, and running a Python script in Termux.
Quick Answer
Learn the correct order for entering a folder, checking files, installing dependencies, and running a Python script in Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
PythonScripts
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
Read the block first, replace any example filename or folder, and run one line at a time from the location named by the guide.
Copy commands
cd ~/DedSec pwd ls python --version python script_name.py
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls` — Lists files, names, and permissions.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Fix Termux Storage And Downloads AccessUnzip Files In Termux Without Broken PathsBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Safe Automation [en]
Source-URL: https://ded-sec.space/Assistance/termux-safe-automation-ideas.html
Safe Automation
Useful no-root automation ideas for Android Termux: backups, reminders, logs, cleanup, local checks, and personal workflows.
Quick Answer
Useful no-root automation ideas for Android Termux: backups, reminders, logs, cleanup, local checks, and personal workflows.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
SafeAutomation
Before You Run Anything
Define one small goal, the inputs it accepts, the files it writes, and how the user exits safely.
Keep configuration, logs, generated output, and source code in separate paths.
Build a minimal working version before adding menus, effects, networking, or automatic installation.
Diagnostic Or Setup Commands
Use example names only in a test folder. Review generated files before moving the pattern into an existing project.
Copy commands
mkdir -p ~/Automation-Logs date >> ~/Automation-Logs/daily.log df -h >> ~/Automation-Logs/daily.log cat ~/Automation-Logs/daily.log
What The Commands Tell You
`df -h >> ~/Automation-Logs/daily.log` — Shows free and used filesystem space.
What Success Looks Like
The smallest version completes its main task and handles invalid input without crashing.
Generated files go to documented locations and can be removed or restored safely.
A new user can run the project by following the README without guessing hidden steps.
Safe Next Steps
Write the smallest testable function or command first.
Validate paths and user input before reading, writing, moving, or deleting files.
Add logs and clear error messages before adding visual polish.
Document installation, usage, generated files, limitations, and recovery steps.
Common Mistakes
Combining every feature into one untested block before the core task works.
Writing files into unpredictable folders or silently overwriting user data.
Hiding failures behind broad exception handling without a useful message or log.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Safe Copy/Paste [en]
Source-URL: https://ded-sec.space/Assistance/termux-safe-copy-paste.html
Safe Copy/Paste
Avoid broken commands, invisible characters, pasted quotes, wrong line breaks, and destructive command mistakes in Termux.
Quick Answer
Avoid broken commands, invisible characters, pasted quotes, wrong line breaks, and destructive command mistakes in Termux.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
SafeCopyPaste
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
Read the block first, replace any example filename or folder, and run one line at a time from the location named by the guide.
Copy commands
pwd echo "Current folder: $(pwd)" echo "File path: /storage/emulated/0/Download/My File.zip"
What The Commands Tell You
`pwd` — Prints the current working directory.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Safe Update Routine [en]
Source-URL: https://ded-sec.space/Assistance/termux-safe-update-routine.html
Safe Update Routine
Use a weekly routine to update Termux packages, back up projects, check Git status, clean caches, and avoid breaking working tools.
Quick Answer
Use a weekly routine to update Termux packages, back up projects, check Git status, clean caches, and avoid breaking working tools.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
SafeUpdateRoutine
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
date git status pkg update && pkg upgrade -y python -m py_compile script.py
What The Commands Tell You
`git status` — Shows the branch, staged files, conflicts, and local changes.
`pkg update && pkg upgrade -y` — Refreshes the Termux package index.
`python -m py_compile script.py` — Checks Python syntax without starting the complete program.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### API Keys Safely [en]
Source-URL: https://ded-sec.space/Assistance/termux-secure-api-keys-env-file.html
API Keys Safely
Protect API keys in Termux with local .env files, safe permissions, and .gitignore rules that prevent accidental public GitHub commits.
Quick Answer
Protect API keys in Termux with local .env files, safe permissions, and .gitignore rules that prevent accidental public GitHub commits.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
KeysSafely
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
printf "API_KEY=put_key_here\n" > .env chmod 600 .env printf ".env\n" >> .gitignore git status
What The Commands Tell You
`chmod 600 .env` — Changes executable or access permission bits.
`git status` — Shows the branch, staged files, conflicts, and local changes.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
No Root LimitsTroubleshooting ChecklistBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### SEO Checklist [en]
Source-URL: https://ded-sec.space/Assistance/termux-site-seo-checklist-from-phone.html
SEO Checklist
Check titles, descriptions, sitemap, robots.txt, broken internal links, and useful content before updating a GitHub Pages site.
Quick Answer
Check titles, descriptions, sitemap, robots.txt, broken internal links, and useful content before updating a GitHub Pages site.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
Checklist
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
ls grep -R "" -n . | head grep -R "description" -n . | head python -m http.server 8000
What The Commands Tell You
`ls` — Lists files, names, and permissions.
`python -m http.server 8000` — Starts a simple local HTTP server in the current folder.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Turn This Fix Into A Repeatable Website Workflow
If you are building or publishing sites from your phone, the Build and Publish Website with AI guide connects HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback and mobile QA into one controlled process.
Copy Support ReportPreview the Website Guide
Related Assistance Guides
Install DedSec ProjectGit Identity ErrorTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Troubleshooting Checklist [en]
Source-URL: https://ded-sec.space/Assistance/termux-troubleshooting-checklist.html
Troubleshooting Checklist
A repeatable checklist for almost any Termux problem: folder, command, package, Python, storage, Git, and logs.
Quick Answer
A repeatable checklist for almost any Termux problem: folder, command, package, Python, storage, Git, and logs.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
TroubleshootingChecklist
Before You Run Anything
Create a dated backup and verify that it contains the files required for recovery.
Preview the current state with listing, status, size, or dry-run commands before changing it.
Keep generated output, cache, secrets, and source files separated.
Diagnostic Or Setup Commands
Preview paths, sizes, status, or archive contents before the command changes anything. Keep a verified backup outside the working folder.
Copy commands
pwd ls -la python --version pkg update git status df -h
What The Commands Tell You
`pwd` — Prints the current working directory.
`ls -la` — Lists files, names, and permissions.
`pkg update` — Refreshes the Termux package index.
`git status` — Shows the branch, staged files, conflicts, and local changes.
`df -h` — Shows free and used filesystem space.
What Success Looks Like
The workflow can be repeated without overwriting the previous backup or losing current work.
The result can be verified with a simple list, diff, status, checksum, or test command.
A documented rollback restores the previous state when the new result is wrong.
Safe Next Steps
Record the current state and create a recoverable backup.
Apply one controlled change or maintenance action.
Verify the result with a small command before continuing.
Document what changed, where the backup is, and how to restore it.
Common Mistakes
Using a cleanup or update command without previewing what it will change.
Keeping the only backup inside the same folder that is being replaced or deleted.
Mixing secrets, cache, generated output, and source files in the same committed directory.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Fix WebSocket And Socket.IO Errors In Termux [en]
Source-URL: https://ded-sec.space/Assistance/termux-websocket-socketio-errors.html
Fix WebSocket And Socket.IO Errors In Termux
Handle local WebSocket or Flask-SocketIO problems in Termux caused by ports, versions, CORS, mixed URLs, and background process kills.
Quick Answer
Handle local WebSocket or Flask-SocketIO problems in Termux caused by ports, versions, CORS, mixed URLs, and background process kills.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
WebSocket connection failed400 Bad Requesttransport error
Before You Run Anything
Start the server in the foreground and keep its terminal output visible.
Confirm the exact host, port, serving folder, and URL before opening the browser.
Expose only a dedicated public folder; never expose the Termux home folder, keys, backups, or private repositories.
Diagnostic Or Setup Commands
Replace the example port and folder. Test the local URL on the same phone before creating a LAN address or public tunnel.
Copy commands
python -m pip install flask flask-socketio eventlet python app.py 2>&1 | tee socketio.log
What The Commands Tell You
`python -m pip install flask flask-socketio eventlet` — Installs or updates the named Python distribution, not pip itself.
What Success Looks Like
The local URL opens on the same phone and the terminal logs the request.
Refreshing the page serves the current files rather than stale cached content.
Stopping the server releases the port and removes any temporary public tunnel.
Safe Next Steps
Verify the serving process and folder locally before changing browser or tunnel settings.
Check whether another process already owns the port.
Use `127.0.0.1` for same-phone testing and an intentional bind address for LAN testing.
Create a public tunnel only after the local URL works and remove secrets from the served folder.
Common Mistakes
Opening the wrong port or assuming `localhost` on another device points to the phone.
Starting several background servers without tracking their process IDs.
Publishing credentials, source repositories, backups, or the complete Termux home through a tunnel.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
JSON ErrorsFix Port Already In Use In TermuxTroubleshooting ChecklistBeginner Guide
Back To All Assistance Guides
### Better README [en]
Source-URL: https://ded-sec.space/Assistance/termux-write-better-readme.html
Better README
Make Termux project README files more useful with install steps, folder structure, troubleshooting, screenshots, safe disclaimers, and support links.
Quick Answer
Make Termux project README files more useful with install steps, folder structure, troubleshooting, screenshots, safe disclaimers, and support links.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
BetterREADME
Before You Run Anything
Define one small goal, the inputs it accepts, the files it writes, and how the user exits safely.
Keep configuration, logs, generated output, and source code in separate paths.
Build a minimal working version before adding menus, effects, networking, or automatic installation.
Diagnostic Or Setup Commands
Use example names only in a test folder. Review generated files before moving the pattern into an existing project.
Copy commands
printf "# My Termux Tool\n\n## Install\n\n```bash\npkg install python git -y\npython tool.py\n```\n" > README.md
What The Commands Tell You
Run the example one line or logical block at a time and compare each result with the stated goal.
What Success Looks Like
The smallest version completes its main task and handles invalid input without crashing.
Generated files go to documented locations and can be removed or restored safely.
A new user can run the project by following the README without guessing hidden steps.
Safe Next Steps
Write the smallest testable function or command first.
Validate paths and user input before reading, writing, moving, or deleting files.
Add logs and clear error messages before adding visual polish.
Document installation, usage, generated files, limitations, and recovery steps.
Common Mistakes
Combining every feature into one untested block before the core task works.
Writing files into unpredictable folders or silently overwriting user data.
Hiding failures behind broad exception handling without a useful message or log.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Beginner GuideCommand Cheat SheetTroubleshooting ChecklistUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Unzip Files In Termux Without Broken Paths [en]
Source-URL: https://ded-sec.space/Assistance/unzip-files-termux-android.html
Unzip Files In Termux Without Broken Paths
Extract ZIP files from Android Downloads into the right Termux folder, avoid nested folders, and fix long path extraction problems.
Quick Answer
Extract ZIP files from Android Downloads into the right Termux folder, avoid nested folders, and fix long path extraction problems.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
UnzipFilesTermuxWithout
Before You Run Anything
Confirm that Termux came from a maintained source and that `pkg update` finishes without an error.
Run one command at a time and stop at the first unexpected message.
Keep the working project under the Termux home folder while installing or testing it.
Diagnostic Or Setup Commands
List the archive before extraction and use an empty destination when possible. Without `-o`, unzip asks before replacing an existing file.
Copy commands
pkg install -y unzip mkdir -p ~/DedSec/Scripts unzip -l "/storage/emulated/0/Download/file.zip" | head -n 40 unzip "/storage/emulated/0/Download/file.zip" -d ~/DedSec/Scripts find ~/DedSec/Scripts -maxdepth 2 -type f | head -n 40
What The Commands Tell You
`pkg install -y unzip` — Installs the listed Termux packages and dependencies.
`unzip -l "/storage/emulated/0/Download/file.zip" | head -n 40` — Lists or extracts files from a ZIP archive.
`find ~/DedSec/Scripts -maxdepth 2 -type f | head -n 40` — Searches paths by name, size, or type.
What Success Looks Like
The command finishes without an error and you can explain which folder and file it used.
Running the same minimal test a second time gives the same result.
No reinstall or unrelated package change was needed.
Safe Next Steps
Verify the current folder with `pwd` and list exact filenames with `ls`.
Install only the package that the error actually names.
Run the smallest available test before starting the full project.
Save the working commands in the project README or a notes file.
Common Mistakes
Copying Ubuntu or desktop Linux paths without checking whether they exist in Termux.
Running an active project directly from shared Android storage.
Pasting a long block again after one line has already failed.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Update DedSec Project on Linux [en]
Source-URL: https://ded-sec.space/Assistance/update-dedsec-project-linux.html
Update DedSec Project on Linux
Update a Linux checkout without replacing the repository or bypassing the cross-platform dependency refresh.
Quick Summary
Update a Linux checkout without replacing the repository or bypassing the cross-platform dependency refresh.
Check The Working Tree
cd ~/DedSec git status
Review local modifications before pulling so you do not overwrite work you meant to keep.
Pull And Refresh
git pull bash Setup.sh --update-only ./Run.sh
Why Setup Runs Again
Setup.sh --update-only refreshes dependencies and compatibility files after project updates. The normal launcher then uses the updated .venv and Compat/bin.
Custom Clone Path
If the project is not in ~/DedSec, change into its actual directory first.
Next Steps
For platform-specific save paths, use Learn About The Tools. For other setup or runtime problems, return to Assistance.
Learn About The ToolsAll Assistance Guides
### Update DedSec Project [en]
Source-URL: https://ded-sec.space/Assistance/update-dedsec-project.html
Update DedSec Project
Update DedSec Project safely on Termux or supported Linux desktops, preserving local work and refreshing dependencies with the platform-aware setup.
Quick Answer
Update an existing DedSec Project installation in Termux without losing local files, generated outputs, personal changes, or saved work.
Use this guide only when your symptom or goal matches the indicators below. If a diagnostic command reveals a different problem, follow that evidence instead of forcing every remaining step.
Last reviewed: July 24, 2026.
Use This Guide When
UpdateDedSecProject
Before You Run Anything
Back up personal settings, outputs, modified scripts, and saved data before reinstalling or updating.
Confirm the exact DedSec folder and current Git state instead of cloning another nested copy.
Preserve the full first error rather than replacing the entire installation immediately.
Diagnostic Or Setup Commands
Back up personal DedSec settings and outputs first. Confirm the current DedSec folder before copying or running the block.
Copy commands
cd ~/Projects/DedSec git status git pull # backup first if you changed files
What The Commands Tell You
`git status` — Shows the branch, staged files, conflicts, and local changes.
`git pull` — Downloads and integrates remote commits.
What Success Looks Like
The intended DedSec launcher starts from the documented folder.
Personal settings and saved output remain present after the repair or update.
A second launch works without repeating installation steps.
Safe Next Steps
Identify whether the failure is a folder, dependency, Git, permission, or saved-data problem.
Repair only that layer and run the smallest DedSec entry-point test.
Compare changed files before replacing local modifications.
Keep a dated backup after confirming the repaired version starts correctly.
Common Mistakes
Deleting the existing DedSec folder before copying personal settings and outputs.
Creating repeated nested clones such as `DedSec/DedSec/DedSec`.
Running a replacement command from the wrong language or project folder.
Still Stuck?
Copy the support report, fill in the missing values, and include the complete terminal output. Remove passwords, tokens, private keys, exact home paths, and personal information.
Fixed This Error But Want A Repeatable Way To Diagnose The Next One?
The Complete Termux Troubleshooting Handbook gives you a structured diagnostic process for Termux, Python, Git, storage, packages, networking and recovery instead of relying on disconnected fixes.
Copy Support ReportPreview the Handbook
This solved your problem? Explore the complete free DedSec project on GitHub.
Related Assistance Guides
Run Python ScriptsFix Termux Storage And Downloads AccessBeginner GuideUpdate GitHub Pages From Termux Without Breaking The Site
Back To All Assistance Guides
### Founder's Story & Project's Vision [en]
Source-URL: https://ded-sec.space/Pages/about-founder.html
Founder's Story & Project's Vision
The story behind DedSec Project and the vision that grew from it — together in one place.
Founded October 20, 2024 · Available for Android (Termux), Ubuntu, Kali Linux and Linux Mint
From Curiosity About Digital Worlds To A Real Project Built From A Phone
Where It Started
My name is Loukas Floros. I was born on 14 August 2004, and I created DedSec Project as a practical learning project for people who want to understand Termux, Android, programming, cybersecurity, and useful phone-first workflows.
I created DedSec Project on October 20, 2024. What began as a phone-first learning effort expanded to support Android through Termux and Linux environments including Ubuntu, Kali Linux and Linux Mint. Each platform has its own setup instructions and prerequisites.
The Watch Dogs games first made me curious about technology, privacy, connected systems, and the power that digital tools can have in everyday life. That curiosity pushed me to start learning programming and experimenting with Termux and Android instead of leaving the idea inside a fictional world.
What It Became
DedSec Project grew from that learning path. It is not presented as a finished answer to everything. It is a continuously improving collection of tools, lessons, guides, experiments, and troubleshooting material designed to help other people learn by doing and understand what they run.
The project is independent and focused on education, lawful experimentation, practical problem solving, privacy awareness, and making useful technical knowledge more approachable from an Android phone.
GitHub Stats
Technologies & Skills
Technologies and practical skills demonstrated across my projects.
Languages & Data
PythonBash / ShellJavaScriptHTML5CSS3JSONMarkdownSQLite
Development & Platforms
TermuxLinux CLIGitGitHubGitHub ActionsGitHub Pages
Cybersecurity
Cybersecurity ToolingOSINTSecurity Testing & AuditingNetwork & Security ToolingFile & Metadata Analysis
AI & Local Models
Local LLMsGGUF Modelsllama.cppRAGLocal Knowledge RetrievalAI Model RoutingOffline AI
Application Development
CLI DevelopmentTUI DevelopmentAndroid / Termux DevelopmentLocal-First ApplicationsOffline-First ApplicationsResponsive Web DevelopmentAPI Integration
Automation & Project Work
Automation & ScriptingRepository AutomationBackup & RecoveryData IntegritySHA-256 VerificationTesting & QA AutomationTechnical DocumentationOpen-Source DevelopmentEnglish / Greek Localization
Contribution Streak
Most Used Languages
Project's Vision
DedSec Project is built around a simple idea: useful technology should help people understand more, depend less on black boxes, and have meaningful control over the devices and tools they use. The project aims to turn curiosity into practical ability — especially for people learning directly from an Android phone.
Practical Learning
Learning should go beyond reading commands. DedSec Project focuses on real examples, troubleshooting, repeatable workflows, and explanations that help users understand what a tool is doing before they rely on it.
Technology Within Reach
A phone can be more than a consumption device. The project is designed to show that useful technical learning, scripting, experimentation, and problem solving can begin with hardware people already own, without requiring an expensive setup first.
Control, Privacy & Transparency
Users should be able to understand what runs on their devices, make informed choices, protect their privacy, and keep reasonable control over software they install and systems they own. Security should increase confidence without unnecessarily removing openness or user choice.
Open, Free Core That Keeps Evolving
The core project should remain freely available and continue improving through new lessons, tools, fixes, documentation, and community feedback. Optional paid guides and clearly scoped adaptations can support that work, but they should complement the free project rather than replace it.
The long-term direction is simple: make technical knowledge easier to reach, easier to understand, and more useful in everyday life while keeping learning responsible, independent, and grounded in what people can actually do with their own devices.
Why DedSec Project Matters in a Changing World
This is my perspective on technology, freedom, economic pressure, and the reasons behind this independent project. These are concerns to examine critically, not claims that every institution or new technology is harmful.
Technology: Progress and Danger
Technology has evolved from simple personal tools into connected systems capable of learning, monitoring, predicting, and influencing behavior. AI, automated decisions, digital tracking, and cyberattacks can make life easier, but when abused or left without safeguards, their power can also become dangerous. People deserve understandable tools, privacy, and the skills to question what technology does.
Poverty and a Growing Digital Divide
In many places, rising living costs and unequal access to opportunity make people feel poorer even as technology advances. Paid services, expensive hardware, and limited access to training can widen that gap. DedSec Project aims to keep a useful learning path accessible to people who may only have a phone and the determination to learn.
Power, Government and Corruption
Governments and powerful organizations are not immune to corruption, secrecy, or the misuse of surveillance. That risk grows when decisions are opaque and ordinary people cannot ask questions or hold institutions accountable. My response is to support lawful research, transparency, digital literacy, and independent scrutiny—not to assume everyone in government is corrupt.
Could Physical Cash Disappear?
As contactless payments, banking apps, and cashless services expand, I worry about a future where physical cash becomes difficult or impossible to use. Cash still matters for privacy, resilience during outages, accessibility, and people who are excluded from digital banking. Digital payments can be useful, but I believe people should retain a real choice.
Learn, Adapt and Stay Independent
The answer is not to reject progress but to understand it. DedSec Project encourages ethical cybersecurity education, practical programming, local-first tools, thoughtful security practices, and informed choices. Knowledge helps people participate in the digital world instead of being powerless inside it.
Due Process, Legal Counsel, And Public Scrutiny
If any DedSec Project member, contributor, or person publicly associated with the project is detained or arrested, their fundamental rights must be respected. A detention is not automatically unlawful merely because a lawyer is not physically present at the moment of arrest, and the exact rules differ by jurisdiction. In the European Union, suspects must be given access to a lawyer without undue delay and, in principle, before police questioning, subject only to limited legal exceptions.
Every such case deserves calm, independent, evidence-based scrutiny. The public and the press should examine the stated charges, court records, treatment in custody, access to counsel, and whether due process was followed. No one should obstruct an investigation, threaten officials, expose private information, or decide guilt or innocence from headlines alone.
Security research, digital protest, and hacktivism can be politically sensitive, misunderstood, or portrayed selectively. That makes transparency and independent review especially important, but association with DedSec Project never creates immunity from a lawful investigation. The project supports legal, ethical, authorized activity, the presumption of innocence, and the right of every accused person to prepare a defence.
Rights references: EU Directive 2013/48/EU · EU Charter, Article 48.
Public Work Survives When Support Exists
DedSec Project exists so people can learn, test, protect themselves, and build from a phone. Behind that public work are real costs for device testing, writing, translation, maintenance, and fixes. Optional GitHub sponsorship helps keep the public project moving; the $25 Ultimate Supporter tier also includes the current five-ebook library in English and Greek.
View Sponsor TiersSponsor Project
Keep Android Open
This principle is part of the project's wider vision: Android should remain a platform where users can choose how they use their own devices.
User Control
People should be able to install, remove, repair, and configure software on hardware they own.
Independent Development
Independent developers and alternative app distribution should remain viable parts of the Android ecosystem.
Privacy And Choice
Security improvements should not unnecessarily remove privacy, openness, or meaningful user choice.
Visit Keep Android Open
Other projects
My public projects on GitHub. Each repository contains its own instructions and latest updates.
DedSec
Cybersecurity and automation toolkit for Android through Termux and supported Linux systems.
Praying-Project
Bilingual Orthodox prayer collection with scheduled reconstruction of its stored texts.
Save-DedSec-Project
Preserves project repositories, websites and APK dependencies through public archival services.
Offline-Survival-Project
Offline survival knowledge, household emergency planning and practical local tools.
dedsec1121fk
GitHub profile, project overview and development activity statistics.
Corrupted-Files-Project
Bilingual historical research archive for Termux, with sources, timelines and explicit uncertainty.
dedsec1121fk.github.io
Source of this bilingual website, its knowledge library and integrated GitHub discovery feature.
Pocket-AI-Project
Local bilingual AI for Android and Termux, designed for low-memory devices and offline core use.
Hacking-Guide-Project
Bilingual offline cybersecurity education with learning paths and authorized practice labs.
Language-Project
Programming language learning and practical utilities for Termux workflows.
Ghost-Project
Unofficial Call of Duty: Ghosts lore archive for Termux, with original summaries and source links.
### Your account. [en]
Source-URL: https://ded-sec.space/Pages/account.html
Your account.
Keep private TXT notes, organise folders and pins, export TXT or ZIP, and unlock scripts with three qualified referrals.
Account availability
Open the secure portal for a real Test account. This static preview does not collect personal details or passwords.
Active today— / 444
Accounts created— / 300
Use the Account button on the website to access your account.
Create accountSign inReset password
Create account
Secure account portal requiredFirst nameLast nameEmailRepeat emailDate of birthReferral code (optional)PasswordRepeat passwordI accept the account terms and privacy policy.Create account
Repeating the email prevents typing mistakes. Email verification is required for referral rewards. Accounts are available to people aged 18–130.
Sign in
Secure account portal requiredEmailPasswordSign in
Reset password
Use your saved recovery codeEmailRecovery codeNew passwordRepeat passwordRecover and sign in
Website privacy policy
Try the TXT workspace
Profile preview
This is a temporary workspace, not a signed-in account. Notes are not uploaded or backed up.
Storage used: 0 / 900 KB
900 KB per account · 400 MB total for notes. File and folder names count toward the limit.
Export selectionExport allDiscard previewDelete account permanently
Change passwordCurrent passwordNew passwordRepeat new passwordChange password
Notes storage
Cloud
Optional storage only in this browser. Clearing cache/site data, deleting the browser profile or using private browsing can permanently lose these notes. Export TXT or ZIP regularly. The app does not separately encrypt local notes.
Save in this browserTransfer local notes to cloud
The cloud keeps its previous copy while you save locally. Switching back merges both: identical files combine; differing files are renamed with “local”. Transfer proceeds only if everything fits within 900,000 bytes, 200 TXT files and 50 folders, and the service has enough total storage available.
Files and folders
All notesParent folder
Pinned items
Choose a TXT file
Note content
SaveRenameDelete
One selected TXT downloads directly. Multiple items or any folder download as a ZIP with their folder structure.
Referral rewards
Qualified friends: — / 3
Referrals are not active yet. Three eligible, verified referrals will unlock the selected sponsor scripts after activation.
Available rewards: Face Detector (English), Face Detector (Ελληνικά), Steganography (English), Steganography (Ελληνικά).
Sponsor scripts — coming soon
New TXTNew folderOpen TXT filesImport TXT folder
Pin a file or folder using its star.
+ Notes
Name
CreateCancel
### Assistance [en]
Source-URL: https://ded-sec.space/Pages/assistance.html
Assistance
Practical help for DedSec Project on Termux, Ubuntu, Kali Linux, and Linux Mint, including setup, paths, repairs, updates, Python, Git, and networking.
Beginner Guide
A clean first path for Android users who want to learn Termux, folders, packages, Python scripts, GitHub, and DedSec Project basics.
BeginnerGuide
Command Cheat Sheet
Essential Termux commands for moving around folders, checking files, installing packages, running Python, and avoiding beginner mistakes.
CommandCheat
First Termux Setup
Clean first-run setup for Android users: storage permission, package update, core tools, and safe folders before any DedSec Project script.
FirstTermux
Run Python Scripts
Learn the correct order for entering a folder, checking files, installing dependencies, and running a Python script in Termux.
PythonScripts
Safe Copy/Paste
Avoid broken commands, invisible characters, pasted quotes, wrong line breaks, and destructive command mistakes in Termux.
SafeCopy
Unzip Files In Termux Without Broken Paths
Extract ZIP files from Android Downloads into the right Termux folder, avoid nested folders, and fix long path extraction problems.
UnzipFiles
Node/npm Errors
Fix npm command not found, node-gyp build errors, package install failures, and broken JavaScript projects in Termux.
npm ERR!node-gyp
Fix pip Errors In Termux
Separate pip upgrade problems, build failures, missing wheels, compiler errors, and Termux package dependencies before installing Python libraries.
Installing pip is forbiddenFailed building wheel
Fix ModuleNotFoundError In Termux Python
Find which Python environment runs your script, install the missing module correctly, and avoid local filename conflicts.
ModuleNotFoundErrorImportError
Python Syntax Errors
Fix unterminated string, indentation, invalid character, copied HTML, and Python syntax errors inside Termux scripts.
SyntaxErrorIndentationError
Fix apt/dpkg Lock
Recover from interrupted installs, locked package manager state, and half-configured packages in Termux.
Could not get lockdpkg was interrupted
No Space Left
Find what fills Termux storage, clean package cache, remove build leftovers, and move outputs safely to Android Downloads.
No space left on deviceENOSPC
Fix No Such File, Wrong Folder, And Space-In-Name Errors
Find the real Termux folder, handle filenames with spaces, locate missing files, and stop path mistakes before running scripts.
No such file or directorycan't open file
Fix Permission Denied, chmod, And Executable Scripts In Termux
Fix executable permission problems, chmod usage, script launch errors, and safe ownership expectations in no-root Termux.
Permission deniedOperation not permitted
Fix Termux Repository, Mirror, GPG, And apt Update Errors
Repair Termux repository errors, slow mirrors, GPG signature warnings, and package update failures on Android.
Unable to locate package404 Not Found
SSL / curl Errors
Fix certificate verification errors, outdated ca-certificates, failed downloads, and curl/wget connection problems.
CERTIFICATE_VERIFY_FAILEDcurl: (60)
Fix Termux Storage And Downloads Access
Fix Termux storage permission, Downloads path access, shared storage files, and Android file visibility without root.
Permission denied/storage/emulated/0
Bad Interpreter
Fix bad interpreter, /bin/bash not found, CRLF line endings, wrong shebangs, and copied shell scripts that fail on Android Termux.
bad interpreterNo such file or directory
Fix CRLF Lines
Fix bad interpreter, weird syntax, and shell script errors caused by Windows CRLF line endings in files copied to Android.
bad interpreter^M
PyInstaller Alternatives
Learn why PyInstaller often fails on Android Termux and use better ways to package, launch, zip, and share Python tools safely.
PyInstallerAlternatives
Python Unicode Errors
Fix UnicodeDecodeError, UnicodeEncodeError, broken Greek text, special symbols, and file encoding problems in Python scripts on Termux.
PythonUnicode
Requests / API Errors
Fix Python requests failures, API timeouts, SSL certificate errors, JSON response mistakes, and connection problems in Termux scripts.
requestsErrors
Python Shebang
Fix scripts that fail because of wrong python paths, missing env, desktop shebangs, or direct execution mistakes in Termux.
PythonShebang
Install Common Python Libraries In Termux
Install common Python libraries for Termux scripts in a safe order and know when a package needs system dependencies first.
InstallCommon
JSON Errors
Validate JSON files, find missing commas, broken quotes, invalid characters, and bad copied content from Android editors.
JSONDecodeErrorExpecting value
Fix Command Not Found And Cannot Locate Package In Termux
Understand whether a Termux command is missing, a package name is wrong, or the repository index needs repair.
CommandFound
Python Debug Roadmap
A practical debugging order for Python scripts in Termux: syntax, paths, modules, permissions, encoding, APIs, logs, and clean reruns.
PythonDebug
Use Python Virtual Environments In Termux
Use venv in Termux when projects need different Python packages, and avoid mixing DedSec tools with unrelated experiments.
PythonVirtual
GitHub SSH/Auth
Set up GitHub authentication in Termux using HTTPS tokens or SSH keys without confusing it with normal passwords.
Permission denied (publickey)Host key verification failed
Git Identity Error
Fix please tell me who you are, unable to auto-detect email address, git config user.name, and user.email errors in Termux.
IdentityError
GitHub Clone Help
Fix GitHub clone errors on Android Termux, including missing git, wrong folders, authentication confusion, and broken repository paths.
GitHubClone
GitHub Token Auth
Use GitHub personal access tokens safely in Termux when password authentication fails, without exposing tokens in commands or public files.
Authentication failedpassword authentication was removed
Large File Push
Fix GitHub push failures caused by huge ZIPs, PDFs, videos, build folders, cache files, and accidental large commits from Termux.
GH001exceeds GitHub file size limit
Git Branches
Use branches on Android to test edits without damaging the main project folder or current working version.
Branches
Git Pull Conflicts
Handle local changes, merge conflicts, stash, pull, and safe backup before updating a GitHub project from Termux.
CONFLICTcould not apply
Update GitHub Pages From Termux Without Breaking The Site
A clean phone workflow for editing a static site, checking links, committing changes, and pushing GitHub Pages updates from Termux.
UpdateGitHub
Fix Broken DedSec Install
Diagnose a DedSec Project install that stopped working after missing modules, wrong folders, failed updates, or storage problems.
BrokenDedSec
Install DedSec Project
Step-by-step no-root Android setup for Termux, GitHub cloning, core packages, and the first clean DedSec Project run.
InstallDedSec
DedSec-Style Tool
Plan a safe DedSec-style tool with menu, folders, logs, language toggle, help screen, and clear exit behavior.
DedSec-StyleTool
Update DedSec Project
Update an existing DedSec Project folder without losing your local files, outputs, or saved work.
UpdateDedSec
Fix Localhost Server Not Opening On Android
Fix local server browser problems in Termux by checking host binding, port, folder, firewall-like Android behavior, and correct URL.
Connection refusedThis site can’t be reached
Fix Port Already In Use In Termux
Find and stop the old Termux process using a local server port before restarting Flask, SocketIO, http.server, or dashboards.
Address already in useEADDRINUSE
Browser Tips
Fix local page cache, wrong browser behavior, old CSS, blocked mixed paths, and refresh problems when testing websites from Termux.
BrowserTips
Share Local Termux Links Safely With Cloudflared Or QR Codes
Understand local links, phone browser testing, Cloudflared tunnels, QR sharing, and safe limits for temporary Termux servers.
ShareLocal
Fix Flask App Not Loading In Termux
Troubleshoot Flask apps on Android Termux: host, port, templates, static files, debug output, and browser URL mistakes.
Connection refusedAddress already in use
Create A Local Website Or Dashboard In Termux
Run a simple local web page, dashboard, or Python server from Termux, test it on Android, and avoid common port and path mistakes.
CreateLocal
Fix WebSocket And Socket.IO Errors In Termux
Handle local WebSocket or Flask-SocketIO problems in Termux caused by ports, versions, CORS, mixed URLs, and background process kills.
WebSocket connection failed400 Bad Request
Termux:Widget Help
Fix Termux:Widget shortcuts, wrong widget folder, missing shebang, permission problems, and scripts that do not appear.
Termux:WidgetHelp
Keep Termux Running Without Android Killing It
Reduce Android background kills for Termux scripts, local servers, long downloads, and DedSec workflows without root.
KeepTermux
Fix Termux:API, Notifications, Clipboard, And Battery Commands
Set up Termux:API correctly, fix notification permission on Android 13+, and test clipboard, battery, and notification commands.
API_ERRORcommand not found
No Root Limits
Understand realistic no-root limits on Android so you build tools that work reliably instead of fighting the operating system.
RootLimits
Useful No-Root Termux Script Ideas
Practical safe script ideas for Termux: file organizer, offline notes, search tools, expense tracking, backups, and DedSec-style helpers.
UsefulNo-Root
Create A Reliable Python Menu Script In Termux
Build Termux Python menu tools with clean choices, config JSON, logs, safe folders, input validation, and update-friendly structure.
CreateReliable
Learn Python By Building
Learn Python on Android through small useful Termux projects: menus, file tools, notes, backups, logs, local pages, and JSON configs.
LearnPython
Learning Roadmap
A clear learning order for Termux, Linux basics, Python scripts, GitHub, local websites, backups, and DedSec Project tools.
LearningRoadmap
Safe Automation
Useful no-root automation ideas for Android Termux: backups, reminders, logs, cleanup, local checks, and personal workflows.
SafeAutomation
Better README
Make Termux project README files more useful with install steps, folder structure, troubleshooting, screenshots, safe disclaimers, and support links.
BetterREADME
Install DedSec Project on Linux
Install DedSec correctly on Ubuntu, Kali Linux, or Linux Mint with apt, Setup.sh, the local .venv, and the shared Run.sh launcher.
Linux
DedSec Linux venv & Paths
Understand DedSec/.venv, Compat/bin, Downloads output paths, Bash/Zsh startup files, and where Linux tools save their files.
Linux
Repair DedSec Linux Setup
Repair a broken DedSec desktop setup by checking apt packages, recreating only the project .venv, and rerunning the safe update setup.
Linux
Update DedSec Project on Linux
Update an existing Ubuntu, Kali Linux, or Linux Mint DedSec checkout with Git, Setup.sh --update-only, and the normal Run.sh launcher.
Linux
Backup And Restore Termux Projects Safely
Create reliable ZIP backups, avoid overwriting important files, keep repository backups clean, and restore Termux projects with checks.
BackupRestore
Check Broken Links And SEO Basics Locally From Termux
Scan local HTML files for broken internal links, missing titles, missing meta descriptions, bad canonicals, and sitemap problems from a phone.
CheckBroken
Clean Cache
Free space without deleting important projects by cleaning package cache, old downloads, and temporary build files carefully.
CleanCache
History & Aliases
Use history search, repeat common commands safely, and create aliases only for harmless shortcuts.
HistoryAliases
Exit Codes
Understand why commands return non-zero status, how to check $?, and how exit codes help debug scripts.
ExitCodes
Debug Logs
Save terminal errors into a log file so you can compare problems, ask for help, or fix scripts without losing the output.
DebugLogs
curl/wget Downloads
Download files safely, choose output names, resume when possible, and avoid saving downloads into the wrong folder.
curlwget
Edit With nano
Beginner-friendly file editing in Termux: open files, save changes, exit nano, and avoid breaking Python indentation.
EditWith
Cron Alternatives
Understand why cron-style scheduling is unreliable on no-root Android and use safer Termux-friendly alternatives for reminders, backups, and checks.
CronAlternatives
Edit Web Files
A phone-first workflow for editing static website files, avoiding broken CSS, checking buttons, and testing pages before GitHub Pages deploy.
EditFiles
Performance Tips
Make Termux smoother on low-RAM Android phones by avoiding heavy builds, controlling background loops, and keeping storage clean.
PerformanceTips
Large Projects On Phone
Keep large phone-built projects maintainable with folders, changelogs, TODO files, backups, test commands, and simple release ZIPs.
LargeProjects
Offline Docs
Organize local guides, commands, notes, PDFs, and project instructions so you can work without internet.
OfflineDocs
Phone Coding Workflow
A practical Android-only workflow for writing scripts, editing websites, testing local servers, committing to GitHub, and keeping backups.
PhoneCoding
Project Folder Structure
Organize Termux scripts, data, backups, logs, configs, outputs, and website files so Android projects stay clean and easy to update.
ProjectFolder
Safe Update Routine
Use a weekly routine to update Termux packages, back up projects, check Git status, clean caches, and avoid breaking working tools.
SafeUpdate
API Keys Safely
Keep API keys out of public GitHub commits by using local environment files, chmod, and .gitignore habits.
KeysSafely
SEO Checklist
Check titles, descriptions, sitemap, robots.txt, broken internal links, and useful content before updating a GitHub Pages site.
Checklist
Troubleshooting Checklist
A repeatable checklist for almost any Termux problem: folder, command, package, Python, storage, Git, and logs.
TroubleshootingChecklist
No guides match your search.
### ButSystem.py [en]
Source-URL: https://ded-sec.space/Pages/butsystem-exclusive.html
ButSystem.py
ButSystem.py is a self-hosted, local-first private workspace for Termux that combines private communication, encrypted records, an advanced file vault, news and weather tools, and automatically generated local, Cloudflared, and Tor access links in one browser interface.
Exclusive to DedSec Project — included free
ButSystem is one of the project’s most distinctive all-in-one systems, built specifically for the DedSec Project ecosystem. Despite that exclusive positioning, the version documented here is available free through the project files and repository.
Core ButSystem Feature Areas
ButSystem.py brings chats, groups, stories, files, profiles, encrypted records, weather, news, security controls, admin tools, and flexible local or remote access together in one self-hosted interface.
Chats, Groups & Stories
Live direct messages, group chats, saved messages, GIFs, voice notes, file sharing, the discussion room, stories, and call flows where browser and device support allow it.
Security, Access & Control
User approval, device access requests, remembered-device login, optional security-question 2FA, chat PIN locks, online status, reports, admin pages, and appearance or account settings.
Profiles, Vault & Tools
Profile editing, an advanced private file vault, opt-in live locations, encrypted Profiler records with search, import, export, and combine tools, administrator bounty controls, and the built-in Face Detector.
Weather, Links & Sharing
Search weather by place or current location, view detailed forecasts for up to 14 days, and use generated HTTPS, Cloudflared, or Tor links with downloadable QR codes. Vault files can also be shared through controlled links with optional passwords, expiry, and revocation.
All Screens & Buttons (Complete)
Instead of a long button-by-button list, this section explains each ButSystem area the same way the Learn page explains tools: by feature area, what you do there, and what kind of controls you will find when you open it.
Navigation & Menu Flow
The burger menu is the main control hub of ButSystem. From there you move between chats, saved messages, discussion, groups, calls, stories, live locations, files, news, weather, profiles, Profiler, reports, notifications, admin pages, settings, help, and login or logout actions, while the language toggle keeps the interface available in both English and Greek.
Authentication & Access
ButSystem opens through its landing, loading, login, and signup flow, then adds extra access control where needed. That includes user approval, device access requests, remembered-device login, optional security-question two-factor checks, and password recovery or reset actions so access stays tied to approved users and approved devices.
Direct Messages
The DM area is built for day-to-day private conversation. You can open a chat, write and send text, edit or delete messages, search conversation content, attach media or files, use GIFs, record or play voice notes, and work with chat protections such as PIN locks and visible online status where those controls are enabled.
Discussion Room
Discussion works more like a shared stream than a one-to-one chat. It is the place for broader entries, category-based posting, search, refresh, loading more content, and opening a specific entry when you want a calmer shared space separate from normal DMs.
Groups
The Groups area lets users build shared spaces with roles and moderation controls. You can create a group, invite or add members, check the member list, manage owner or admin actions such as promote, demote, or remove, leave a group when needed, and continue the conversation through the related group chat with messages and attachments.
Calls & Live Communication
Where browser support and device permissions allow it, ButSystem includes call flows for starting, joining, accepting, denying, muting, and ending a live call. The exact experience depends on microphone permissions and the current browser environment, so the call layer is treated as a live feature area rather than a static page.
Stories & Live Locations
ButSystem also covers lighter live-sharing tools. Stories provide creation, viewing, and reaction controls, while Live Locations is reserved for opt-in location sharing with start, stop, refresh, and clear consent or warning prompts before location data is actively shared.
Files, Vault & Saved Media
The Files and Vault area works like a private server-style file manager. It supports folders and navigation, normal or chunked uploads with cancellation, search, categories, file-type filters, sorting, previews, opening and downloading, rename, move, bulk actions, deletion, comments, activity history, detailed size, MIME, and date metadata, optional SHA-256, and controlled share links with optional passwords, expiry times, and revocation.
Profile, Account & Appearance
Your own profile area handles identity and account presentation. From there users can view or edit profile data, save changes, upload or remove a profile picture, adjust account settings, control appearance options, and access stronger account actions such as account deletion or the self-destruct danger zone where that workflow is enabled.
Profiler, Bounty & Face Detector
The Profiler side is where ButSystem becomes a structured information workspace. It supports encrypted profiler entries, view and edit flows, local search, export and combine tools, bounty management where that module is enabled, and the built-in Face Detector area used for local face-detection workflows and similarity-style comparison support inside the broader ButSystem environment.
Reports, Admin & Security Settings
The control layer of ButSystem is split across reports, admin pages, and security settings. This is where users create or update reports, where admins approve or deny access and device requests, manage people and user files, and where account holders configure two-factor settings, device-login rules, password-reset paths, privacy options, and other safeguards that keep the workspace organized and controlled.
News & Topic Feed
The News area gives the workspace a dedicated place for topic-based updates without mixing them into private chats. Users can open the feed, move between available topics, refresh the current view, and read updates from the same local interface used for the rest of ButSystem.
Weather & Forecasts
Search by city, village, or postal code, use the device's current location, refresh results, and view current conditions plus forecasts for up to 14 days. The page can show current and apparent temperature, humidity, wind and gusts, precipitation, cloud cover, pressure, rain probability, UV, sunrise, and sunset. Coordinates are used for the request and are not saved by ButSystem.
Generated HTTPS, Cloudflared & Tor Links
At startup, ButSystem serves local HTTPS with a generated self-signed certificate, prints LAN and localhost URLs, and automatically attempts a Cloudflared quick tunnel and a Tor hidden service. The landing page displays whichever links are available and generates a fresh downloadable QR code for each one.
Presence, Delivery & Live State
ButSystem keeps active areas responsive with heartbeat-based online status, unread message counts, delivery and read state, polling for new direct or group messages, and live refresh paths for discussion, locations, calls, and other changing data. This makes the interface feel current without needing a separate desktop client.
Attachments, Previews & Large Uploads
Files are handled according to where they are used. Direct messages, groups, discussion, and stories support the relevant file, image, voice, or media attachments; profiles support profile pictures; and the vault adds previews, metadata, organization, sharing, and chunked transfer for larger uploads so they are not forced through one fragile request.
Local Data Protection & Persistence
Account records, settings, messages, encrypted text fields, keys, logs, and workspace data are kept in ButSystem's own local folders. The script prefers the phone's shared Homework storage when available so important app state can survive a Termux reinstall, while sensitive text and Profiler content use the built-in encryption layer.
Search, Export & Record Workflows
Several areas are designed for finding, filtering, and moving information instead of only displaying it. Users can search conversations, discussion entries, vault files, reports, and Profiler records; filter and sort the vault; open focused details; import, export, or combine Profiler records; and download attachments when a local copy is needed.
Privacy Pause, Logs & Recovery Controls
The system includes operational safeguards for moments when access must be stopped or reviewed. Privacy pause and resume actions can temporarily protect the workspace, security events are written to local logs, admins can inspect log files, and recovery tools cover forgotten passwords, approved devices, forced sign-out, account deletion, and full reset workflows.
Forgot The Password? Start ButSystem Fresh
Use this only when recovery is impossible and you accept losing every old ButSystem account, password, setting, message, vault file, key, and log. Stop ButSystem first, then run the reset command for your platform and start ButSystem.py again so it creates a completely fresh workspace.
Warning: these commands permanently delete the saved ButSystem data folders. They do not delete the ButSystem.py script itself.
Termux (Android)
Copyrm -rf "$HOME/storage/shared/Homework/ButSystem" "/storage/emulated/0/Homework/ButSystem" "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Ubuntu
Copyrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Kali Linux
Copyrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Linux Mint
Copyrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
### Contact & Credits [en]
Source-URL: https://ded-sec.space/Pages/contact-credits.html
Contact & Credits
Get in touch with our team and meet the talented people behind the DedSec Project.
Contact Us
WhatsApp
Telegram Profile
Telegram Channel
Discord Server
X X Profile
Credits
Creator: dedsec1121fk
Help By: zyxen.gr Systems Engineered
Art Artists: Christina Chatzidimitriou, 3A
Legal Documents: Lampros Spyrou
Discord Server Maintenance: Talha
Past Help: Sal Scar, gr3ysec, lamprouil, UKI_hunter.
### Frequently Asked Questions [en]
Source-URL: https://ded-sec.space/Pages/faq.html
Frequently Asked Questions
Answers to real questions about DedSec Project, its programs, installation, Assistance guides, safety, compatibility, updates, repositories, contributions and support.
Project Basics
What Is The DedSec Project?
DedSec Project is a phone-first Termux toolkit and website ecosystem for learning, organizing scripts, checking links/files, exploring OSINT awareness, and solving Android/Termux workflow problems in a legal and responsible way.
Who Created It?
DedSec Project was created by Loukas Floros. The About The Founder page explains how an interest in Watch Dogs, technology, privacy, Termux, and programming developed into the project.
Is DedSec Project Only For Programmers?
No. It is designed for people who want to learn Termux and solve real digital problems from an Android phone. Beginners should start from the Installation Guide, then Learn About The Tools, then Assistance.
Does It Require Root?
Most of the project is built for no-root Android usage through Termux. If a tool ever needs a special permission, it should explain it before use.
Website Navigation
Where Should A New User Start?
Start from the main page, open Guide For Installation, read Learn About The Tools, then use Assistance when you hit a specific Termux or DedSec problem.
What Is Assistance?
Assistance replaced the old assistant chat. It is a set of standalone SEO-friendly help pages for Termux setup, storage permission, Python modules, pip errors, GitHub clone, unzip, updates, and broken installs.
Why Is The FAQ Now Only About The Project?
Project questions stay here. Technical Termux troubleshooting moved to Assistance so each problem has its own focused page that users and search engines can understand better.
What Paid Options Are Currently Available?
Use Assistance for free focused fixes and the Termux handbook for a complete diagnostic process. GitHub Sponsors currently has $3 Sponsor, $9 Pro Supporter, and $25 Ultimate Supporter tiers; the $25 tier includes the current five-ebook library in English and Greek.
Tools, Safety & Use
Are The Tools Meant For Illegal Hacking?
No. The project should be used for learning, privacy awareness, authorized testing, diagnostics, and personal workflow improvement. Do not use any tool against systems or accounts you do not own or have permission to test.
Where Can I Learn What Each Tool Does?
Open Learn About The Tools. That page explains the tools and helps you decide what to run before you touch Termux commands.
What Is ButSystem.py?
ButSystem.py is a free, local-first, self-hosted workspace included in DedSec Project. It brings together chats, groups, stories, profiles, files, security controls, and temporary sharing links. Read its dedicated page for features, access settings, and safety guidance before installing or resetting it.
Is The Project Bilingual?
Yes. The website supports English and Greek with a language switcher, and new Assistance pages include both English and Greek text.
GitHub Sponsors & Ebook Library
Do I Have To Pay For ButSystem?
No. ButSystem is included free inside DedSec Project. Its dedicated page explains the included version and its features.
What Do The GitHub Sponsor Tiers Include?
The $3 monthly tier adds the GitHub sponsor badge, sponsor community access and the current basic private sponsor repository. The $9 Pro Supporter tier includes the $3 benefits plus the expanded private sponsor set. The $25 Ultimate Supporter tier includes everything in $9 plus all five current ebooks in English and Greek. Sponsorship billing is handled by GitHub.
View Sponsor Tiers
Which Ebooks Are Included In The $25 Tier?
The current $25 Ultimate Supporter library includes Data Analytics in Practice; Faith in the Digital Age; The Complete Termux Troubleshooting Handbook; Build and Publish a Website with AI from Your Phone; and AI Website Prompt Library and Release Workbook. The Learn About The Tools page gives a full description of each book.
Explore The Ebook Library
Installation And Compatibility
Which Termux Version Should I Use?
Use an official Termux release from F-Droid or the official GitHub releases. Google Play also has a separate experimental branch for Android 11 and later with different limitations. Check the official installation instructions and keep the app and its plugins from the same source.
Will DedSec Project Work Without Root?
Most DedSec Project scripts and the Assistance guides are designed for normal, non-rooted Android devices. Features that depend on protected Android areas, raw wireless interfaces or system-level modification may be unavailable without root.
Why Does A Package Or Python Module Fail To Install?
Common causes are an outdated Termux build, unfinished package upgrades, unsupported CPU wheels, low storage, broken repositories or a dependency that needs compilation. Use Assistance and include the complete error, Android version, architecture and command you ran.
Can I Use The Project On A Low-End Phone?
Yes for many scripts, lessons and local utilities. Large AI models, media processing, heavy scans and multiple servers can be slow or run out of memory. Start with lightweight options and keep free storage available.
Does The Installer Download Missing Requirements Automatically?
Many launchers check for common packages and Python modules, but not every Android, repository or compiler problem can be solved automatically. Read each prompt before accepting changes and keep a backup of personal modifications.
Can The Project Be Used Offline?
Downloaded local scripts and documentation can work offline. Features that query websites, APIs, repositories, maps, weather, public records or remote services require a connection.
Programs And Components
What Is Settings.py?
Settings.py is the central control panel for the DedSec Project and the launcher for DedSec OS. It manages updates, packages/modules, backups and offline transfer, Sponsors-Only access, prompt/GitHub/usage settings, HTTP Proxy & Tor utilities, menu style, auto-start and language; DedSec OS adds a browser-native desktop with movable/resizable windows, Start/taskbar/Action Center, File Explorer and shared Open/Save dialogs, Notepad, Word/Excel/PowerPoint/PDF tools, photo/video/media apps, Terminal, Software Center, personalization, login/optional 2FA/recovery, and Help & Troubleshooting with guided fixes and live diagnostics.
What Is Developer Base?
Developer Base groups phone-first utilities for files, coding, project structure, local websites, notes and development workflows inside Termux.
What Do File Converter.py And File Type Checker.py Do?
File Type Checker helps inspect the real type of a file instead of trusting only its extension. File Converter provides guided conversion workflows where supported. Always preserve originals before converting.
What Is Mobile Developer Setup.py?
Mobile Developer Setup.py builds a complete Termux developer workstation instead of only installing a few packages. It installs multiple language runtimes, compilers and build tools, databases, npm/Python developer utilities, Zsh/Oh My Zsh with Powerlevel10k, Termux UI settings and NvChad, and includes backup, update, repair, restore and uninstall workflows. Exact package availability can still depend on Android/Termux architecture and upstream repositories.
What Are The Network Tools For?
They support defensive learning, local diagnostics, link checks, QR creation, footprint awareness and authorized network observation. They are not permission to scan or interfere with systems you do not own.
What Is Personal Information Capture?
It is a high-risk training category demonstrating how social engineering and browser permission requests can expose data. Use it only in controlled demonstrations with explicit informed consent. Never deploy deceptive pages against real people.
What Are The Games Inside The Project?
The Games section contains local terminal and browser experiments such as Pet Friends, Tamagotchi, Terminal Arcade and other interactive projects. They demonstrate scripting, state, menus and creative coding on Android.
Assistance guides
Is Assistance guides Only A Website?
The website teaches the theory and gives structured instructions. Practical work runs locally through Termux and the included Assistance.py companion, which prepares safe workspaces and records progress on the device.
Where Are Local DedSec Files Stored?
Local project data and outputs stay in the paths documented for each tool. Platform-specific save paths are listed in Learn About The Tools.
Do The Practical Labs Touch My Real Files?
The companion creates separate training folders with supplied samples. A lesson may ask you to inspect your own phone settings, but it should clearly say so. Never point destructive commands at shared storage or personal folders.
Are Repair And Custom ROM Lessons Step-By-Step Flashing Instructions?
No universal procedure is safe for every model. The project documentation emphasizes model verification, documentation research, backups, risk assessment, dry runs and rollback planning. Follow the exact manufacturer or ROM maintainer guide for your exact model and region.
Can I Use DedSec Without Internet?
Many downloaded theory pages and local labs work offline. Research lessons, official-source verification, package installation and update checks require temporary internet access.
How Do I Resume A Practical Lab?
Use the Assistance pages for the problem you are working on, and keep backups before replacing or repairing project files.
Can A Lesson Estimate Take Longer Or Less Time?
Yes. Hours are estimates for active setup, testing, verification and documentation. Device speed, experience, troubleshooting and the depth of your evidence can change the real duration.
Security, Privacy And Legal Boundaries
Does The Website Collect Information About Visitors?
The site may use Google Tag Manager and analytics for visits, clicks, device information and approximate region-level statistics, as explained in the Privacy Policy. Website analytics are separate from DedSec Project files stored on your device.
Does DedSec Project Secretly Upload My Files?
The public project should be reviewed like any other source code. Do not enter secrets into scripts you have not inspected. Network-enabled tools should state why they connect, and you should test them with non-sensitive samples first.
Can I Use Fake Pages Or Capture Tools On Another Person?
Only with explicit informed consent in a controlled training environment. Deception, credential collection, camera or microphone capture and location collection without authorization can be illegal and harmful.
Does An Antivirus Warning Automatically Mean A Script Is Malware?
Not automatically, especially for security tools, local servers or obfuscated samples, but warnings must not be ignored. Inspect the source, permissions, network behavior and files changed before deciding whether to run it.
What Should Happen If A Contributor Faces Legal Action?
Their rights, access to legal counsel, presumption of innocence and due process should be respected. Public discussion should rely on verified records and must not obstruct investigations, threaten people or assume guilt from headlines.
Repositories, Updates And Contributions
What Is The Difference Between The Main And Backup Websites?
The main website is ded-sec.space. The backup at ded-sec.online is intended for continuity if the main domain or hosting path becomes unavailable. Repository-aware builds keep their domain and path rules separate.
Which Repository Contains The Main Website Source?
The main website repository is dedsec1121fk/dedsec1121fk.github.io. The sal-scar/ded-sec repository is the backup mirror, while dedsec1121fk/test is used to review changes before production.
How Do I Update An Existing DedSec Project Installation?
Follow the Update guide in Assistance or the repository README. Back up changed settings, personal data and custom scripts before pulling or replacing files, because project updates may change filenames or structure.
Will An Update Overwrite My Modifications?
It can if you replace the full project folder. Keep personal changes in a separate branch or backup, compare changes with Git and merge intentionally instead of copying blindly.
Where Should I Report A Bug?
Use the project’s Contact page or the relevant GitHub repository issue tracker. Include the exact script, commit or version, Android version, Termux source, architecture, complete command and complete error output with secrets removed.
Can I Contribute Code, Translations Or Testing?
Yes. Small focused pull requests are easier to review. Explain what changed, how it was tested in Termux, which files are affected and any safety or compatibility limitations.
Why Does The Test Repository Have Different Links?
GitHub project pages for Test run below /Test/, while the main and backup domains run at the root. The repository-aware build rewrites internal paths, canonical URLs, CNAME and indexing files for the selected target.
Looking For Termux Error Fixes?
Use Assistance for free focused fixes. Optional GitHub Sponsors tiers are $3, $9 and $25; the $25 Ultimate Supporter tier includes the current five-ebook library in English and Greek.
Go to Assistance
### Guide For Installation [en]
Source-URL: https://ded-sec.space/Pages/guide-for-installation.html
Guide For Installation
Step-by-step instructions to install and set up the DedSec Project on Termux for Android, Ubuntu, Kali Linux, or Linux Mint.
Requirements
Supported system: Termux on Android, Ubuntu, Kali Linux, or Linux Mint.
Storage: Minimum 6GB free space for the DedSec Project installation.
RAM: Minimum 2GB.
Internet: Required for the first installation and for updates.
Storage warning: The 6GB requirement covers the DedSec Project installation itself. Scripts that capture or save additional content—such as photos, screenshots, videos, recordings, logs, downloads, or other generated files—can require extra storage beyond the 6GB project requirement.
Installation time: A complete installation can take approximately 20–50 minutes, depending on your internet connection and your device's processor.
Choose Your Platform
Tap your platform to open the installation instructions.
Termux (Android)
Install Termux & Add-Ons
To install APKs such as F-Droid, enable installation from unknown apps for your browser or file manager in Android settings.
1. Install F-Droid
F-Droid is the recommended source for Termux and its add-ons.
Download F-Droid
How To Install The F-Droid APK
Download the F-Droid APK from the link above.
Open Android Settings, then Security or Apps & Notifications.
Allow your browser or file manager to install unknown apps.
Open the downloaded APK and tap Install.
Open F-Droid and install Termux.
2. Install Termux Add-Ons
For the full Android feature set, install Termux and the supported add-ons from F-Droid.
Termux Termux:API Termux:Styling
3. Update Termux & Install Git
Copypkg update -y && pkg upgrade -y && pkg install git nano -y && termux-setup-storage
4. Clone DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
5. Install DedSec
Copycd DedSec && bash Setup.sh
6. Launch DedSec Later
Copycd ~/DedSec && ./Run.sh
Termux tip: for long operations, long-press the terminal, open More, and enable Keep screen on. You can also use More → Style to customize the terminal.
After the first setup in Termux, choose your prompt, menu style and language, then run Save DedSec Project so a backup package is created. You can quickly open the English or Greek menu later by typing e or g.
Ubuntu
Install DedSec On Ubuntu
Open Terminal and run the following commands in order.
1. Install Requirements
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Clone DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Run Setup
Copycd DedSec && bash Setup.sh
4. Launch DedSec Later
Copycd ~/DedSec && ./Run.sh
On Ubuntu, Setup.sh creates and uses the project-local .venv so the distro-managed Python installation is not replaced.
Kali Linux
Install DedSec On Kali Linux
Open Terminal and run the following commands in order.
1. Install Requirements
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Clone DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Run Setup
Copycd DedSec && bash Setup.sh
4. Launch DedSec Later
Copycd ~/DedSec && ./Run.sh
On Kali Linux, Setup.sh uses the project-local .venv and keeps the system Python environment separate.
Linux Mint
Install DedSec On Linux Mint
Open Terminal and run the following commands in order.
1. Install Requirements
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Clone DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Run Setup
Copycd DedSec && bash Setup.sh
4. Launch DedSec Later
Copycd ~/DedSec && ./Run.sh
On Linux Mint, Setup.sh creates the project-local .venv and does not replace the distro-managed Python installation.
Want To Inspect DedSec Before Installing It?
View the source code, README, updates and community activity directly on GitHub.
Open DedSec on GitHub
AFTER IT WORKS
DedSec Working On Your System?
Once DedSec opens successfully on your system and you have received value from it, star the repository so you can find it again and help more users discover the project.
Star DedSec on GitHub
Using DedSec regularly? Sponsor-only extras are optional and help fund future updates. GitHub Sponsors
Free PDF
Master Termux Free E-Book
Download Master Termux In 7 Days and learn setup, commands, fixes, and DedSec workflows step by step.
Download Free PDF
Legal Disclaimer: All tools and information are for educational and ethical research purposes only. Use them only on systems you own or have explicit permission to test.
NEXT STEP
Installed? Explore The Tools And Assistance
Use Learn About The Tools to see what each script does and where it saves files on Termux, Ubuntu, Kali Linux, and Linux Mint. Use Assistance for setup, path, update, and repair guides.
Learn About The Tools Open Assistance
### Learn About The Tools [en]
Source-URL: https://ded-sec.space/Pages/learn-about-the-tools.html
Learn About The Tools
This page is the map of the project: what each tool does, why it exists, and what real problem pushed me to build it. Start with the list, follow what catches your eye, and let the tools explain the project by themselves.
Cross-Platform Tool Support
DedSec now uses the same launcher on Termux, Ubuntu, Kali Linux, and Linux Mint. Portable tools use Linux-aware paths; Android-specific utilities remain Termux-only and are clearly marked below.
Termux: native packages and Android storage such as ~/storage/downloads/.
Ubuntu / Kali Linux / Linux Mint: project-local .venv, Compat/bin, and desktop Downloads paths such as ~/Downloads/.
Always start the project with ./Run.sh after running bash Setup.sh.
Toolkit Overview
Developer Base
File Converter.py
What It Helps With
Converting images, documents, audio, video, and archives directly on Android when moving the job to a desktop would slow you down.
A powerful file converter supporting 40+ formats. Organizes Downloads. Advanced interactive file converter for Termux using curses interface. Supports 40 different file formats across images, documents, audio, video, and archives. Features automatic dependency installation, organized folder structure, and comprehensive conversion capabilities. Built for Termux with clear prompts and organized outputs.
Save Location
Converted files are saved under /storage/emulated/0/Download/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Converted files are saved under /storage/emulated/0/Download/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Ubuntu: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Kali Linux: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Linux Mint: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
File Type Checker.py
What It Helps With
Identifying what a file really is and checking suspicious characteristics before you trust or open it.
Advanced file analysis and security scanner that detects file types, extracts metadata, calculates cryptographic hashes, and identifies potential threats. Features magic byte detection, entropy analysis, steganography detection, virus scanning via VirusTotal API, and automatic quarantine of suspicious files. Supports analysis of files up to 50GB. Built for Termux with clear prompts and organized outputs.
Save Location
Files are scanned in /sdcard/Download/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Files are scanned in /sdcard/Download/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Ubuntu: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Kali Linux: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Linux Mint: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Mobile Desktop.py
What It Helps With
Running a Linux desktop-style environment from Termux without root when terminal-only apps are not enough.
Termux Linux Desktop Manager (no root): sets up a proot-distro desktop environment with VNC/X11 options and a built-in program manager for install/update/remove. Built for Termux with clear prompts and organized outputs.
Save Location
Manager settings are stored in ~/.termux_linux_vnc_manager/config.json. Generated launchers are installed in $PREFIX/bin/ as vnc-. The Linux distributions themselves are managed by proot-distro.
Platform Support & Save Paths
Platform support: Termux only. This utility manages Android/Termux-specific features and is not applied to desktop Linux.
Termux: Manager settings are stored in ~/.termux_linux_vnc_manager/config.json. Generated launchers are installed in $PREFIX/bin/ as vnc-. The Linux distributions themselves are managed by proot-distro.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Mobile Developer Setup.py
What It Helps With
Turning Termux into a repeatable, full mobile development workstation without manually assembling and maintaining a large developer toolchain.
Builds and manages a broad Termux development environment with Git/GitHub, Python, Node.js/npm, Perl, PHP, Ruby, Rust, Go, Java 21 and Lua; compilers, build systems, debuggers and code-quality tools; SSH and remote-development utilities; PostgreSQL, MariaDB, SQLite, Redis and MongoDB; plus Python and npm developer tools such as Meson, Mercurial, TypeScript, NestJS, Vite, ESLint, Prettier, local servers/tunnels and AI CLIs. It also configures Zsh and Oh My Zsh with plugins and Powerlevel10k, Termux UI/font/extra keys, safety backups, update/repair/restore workflows, and an NvChad starter setup for Neovim.
Save Location
Setup state, logs and safety backups are stored in ~/.mobile-dev-setup/ (including backups/, nvim-backups/, state.json and last-run.log). Setup-owned helper material uses ~/.mobile-dev-setup-tools/, Zsh plugins use ~/.zsh-plugins/, Oh My Zsh uses ~/.oh-my-zsh/, Termux appearance files use ~/.termux/, and NvChad is installed under ~/.config/nvim/.
Platform Support & Save Paths
Platform support: Termux only. This utility manages Android/Termux-specific features and is not applied to desktop Linux.
Termux: State, logs, and backup archives are stored under ~/.mobile-dev-setup/; managed helper/tool files use ~/.mobile-dev-setup-tools/; Zsh/Oh My Zsh and plugin configuration is stored in the user's Termux home; Termux appearance files are stored in ~/.termux/; and the managed Neovim/NvChad configuration is stored under ~/.config/nvim/.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Free Internet.py
What It Helps With
Keeping browsing, saved pages, search, screenshots, and private vault data organized in one local-first Termux workflow.
Local-first browser and secure vault for Termux. It combines multiple search engines, bookmarks, history, saved pages, ad/tracker cleanup, Lite mode, country-based proxy routing with smart/strict/direct modes, optional Tor support, encrypted vault entries powered by OpenSSL, and a built-in full-page website screenshot tool. Built for Termux with clear prompts and organized outputs.
Save Location
On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Ubuntu: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Kali Linux: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Linux Mint: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Simple Websites Creator.py
What It Helps With
Building simple websites from a phone when you want a guided starting structure instead of creating every file by hand.
A comprehensive website builder that creates responsive HTML websites with customizable layouts, colors, fonts, and SEO settings. Features include multiple hosting guides, real-time preview, mobile-friendly designs, and professional templates. Perfect for creating portfolios, business sites, or personal blogs directly from your terminal. Built for Termux with clear prompts and organized outputs.
Save Location
Created websites are saved in /storage/emulated/0/Download/Websites/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Created websites are saved in /storage/emulated/0/Download/Websites/.
Ubuntu: Created websites are saved in ~/Downloads/Websites/.
Kali Linux: Created websites are saved in ~/Downloads/Websites/.
Linux Mint: Created websites are saved in ~/Downloads/Websites/.
Smart Notes.py
What It Helps With
Keeping technical notes, ideas, commands, and project information organized while working from a phone.
Terminal note-taking app with reminders. Advanced note-taking application with reminder functionality, featuring both TUI (Text User Interface) and CLI support. Includes sophisticated reminder system with due dates, automatic command execution, external editor integration, and comprehensive note organization capabilities. Built for Termux with clear prompts and organized outputs.
Save Location
Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Ubuntu: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Kali Linux: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Linux Mint: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Tree Explorer.py
What It Helps With
Understanding large folder and project structures quickly so you can find the file or directory you actually need.
File-system explorer for Termux: browse folders, search files, find duplicates by hash, and clean empty directories with safe prompts. Built for Termux with clear prompts and organized outputs.
Save Location
Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Ubuntu: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Kali Linux: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Linux Mint: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Dead Man's Switch.py
What It Helps With
Preparing a user-confirmed emergency fallback workflow with trusted contacts, status files, and optional device data when a planned check-in does not happen.
Termux emergency/SOS helper built around the I Need Help mode. After first-time setup and clear user confirmations, it can make the dead-mans-switch GitHub repository public, generate a GitHub Pages emergency website, upload organized emergency files, capture available camera photos, microphone recordings, and location updates at adjustable intervals through Termux:API permissions, and send SMS alerts with the website/repository link to configured trusted contacts. It also includes create/update uploads, overwrite sync, visibility controls, legacy repository migration, previous-history backups, logs, and a kill/cleanup option.
Save Location
Main local folder: ~/storage/downloads/Dead Man's Switch/ (normally the phone Download folder; fallback /storage/emulated/0/Download/Dead Man's Switch/). Settings: ~/.dead_switch_settings.json. Logs and previous repository backups are stored inside the main folder under Logs/ and History/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Main local folder: ~/storage/downloads/Dead Man's Switch/ (normally the phone Download folder; fallback /storage/emulated/0/Download/Dead Man's Switch/). Settings: ~/.dead_switch_settings.json. Logs and previous repository backups are stored inside the main folder under Logs/ and History/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Devices Finder.py
What It Helps With
Discovering and classifying devices on a local network you own or are authorized to inspect, without requiring root.
Local-network device discovery tool for Termux that works without root. Separates live-host discovery from service scanning to reduce false positives, classifies devices using ports, banners, hostnames, and vendor hints, includes interactive scan profiles and type filters, and can optionally enrich results with mDNS, UPnP, SNMP, and NetBIOS clues. Exports JSON, TXT, CSV, and HTML reports. Built for Termux with clear prompts and organized outputs.
Save Location
Reports are saved in ~/storage/downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Reports are saved in ~/storage/downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Ubuntu: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Kali Linux: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Linux Mint: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
DedSec's Server.py
What It Helps With
Sharing and managing large files from Termux through a controlled local/self-hosted server instead of relying on a third-party file host.
Multi-server file hosting and management platform for Termux. It creates separate named server profiles with open guest access or administrator-only protection, multiple administrator accounts, uploads up to 30 GB with live chunked progress, folder creation and ZIP downloads, file moves, renames and deletions, categories, search, filters, sorting, details, comments, user sessions, and complete activity and security logs. Each server starts localhost and local-network access and automatically attempts to generate Cloudflare and Tor links. It also includes light and dark themes, separate English and Greek editions, confirmation prompts for changes, rate limiting, CSRF protection, storage-safety checks, and automatic dependency setup. Built for Termux with clear controls and organized storage.
Save Location
All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Ubuntu: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Kali Linux: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Linux Mint: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Trojan.py
What It Helps With
Understanding what a non-root Termux trojan can collect and how phishing, persistence, and data exfiltration can work on Android.
Educational non-root Termux trojan sample. It collects accessible shared-storage files plus location, camera photos, microphone audio, clipboard, contacts, SMS, sensors, battery, Wi-Fi/network, phone, and device information. It can also demonstrate phishing links/notifications, clipboard replacement, recurring execution, optional payload download, and configured SSH upload.
Save Location
Main folder: /sdcard/Download/Troy/; fallback: ~/Troy/. Copied files are stored in stolen/, the archive is stolen_archive.zip, and each run saves a timestamped harvest_*.json report. Camera and microphone captures are saved as photo.jpg and audio.m4a.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Main folder: /sdcard/Download/Troy/; fallback: ~/Troy/. Copied files are stored in stolen/, the archive is stolen_archive.zip, and each run saves a timestamped harvest_*.json report. Camera and microphone captures are saved as photo.jpg and audio.m4a.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Games
Buzz.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
A text-only trivia party game for Termux with a fixed built-in database of 15,000 questions (no runtime generation). Supports 1–2 players (pass-and-play), multiple round types, difficulty filtering (All/Easy/Medium/Hard), profiles, settings, and highscores. Lightweight terminal game with quick controls and replay value.
Save Location
All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Ubuntu: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Kali Linux: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Linux Mint: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
CTF God.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
Full‑screen Curses CTF game for Termux with story mode, missions, daily challenges, random boss levels, hint shop economy, achievements & ranks, challenge pack import/export, tournament mode, and anti‑cheat/integrity checks. Includes a built‑in level editor. Lightweight terminal game with quick controls and replay value.
Save Location
Challenge workspaces are stored in /storage/emulated/0/Download/CTF God/; fallback paths are ~/storage/downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Challenge workspaces are stored in /storage/emulated/0/Download/CTF God/; fallback paths are ~/storage/downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Ubuntu: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Kali Linux: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Linux Mint: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Detective.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
A story-driven Terminal detective game for Termux with an expanded fixed case library, richer lore dossiers, district rumors, side stories, and bonus story threads. Track evidence, interrogate suspects, review suspect rosters, build an ASCII case board and timeline, and manage progress with 3 save slots plus autosave. Includes 4 difficulties, note/evidence tracking, checkpoint hints, and quick commands like :help, :guide, :lore, :suspects, :board, :timeline, :hint, and :save.
Save Location
All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Ubuntu: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Kali Linux: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Linux Mint: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Pet Friends.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
Pet Friends.py is a full-screen idle virtual-companion game for Termux with 160+ real, legendary, and mythical pets. Adopt, feed, pet, bathe, train, bond with, rename, recolor, and evolve companions while completing quests, contracts, expeditions, achievements, festivals, adventure-board progress, and rarity-based crates. It includes animated ASCII pets, locally generated sound effects and continuous background music, educational species facts with mythology clearly labelled, economy and upgrades, care requests, local-network battles and trades, and persistent progress without third-party Python packages.
Save Location
Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Ubuntu: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Kali Linux: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Linux Mint: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Tamagotchi.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
A fully featured terminal pet game. Feed, play, clean, and train your pet. Don't let it die. Advanced virtual pet simulation game with comprehensive pet management system. Features include pet evolution through life stages (Egg, Child, Teen, Adult, Elder), personality traits, skill development, mini-games, job system, and legacy retirement. Includes detailed statistics tracking. Lightweight terminal game with quick controls and replay value.
Save Location
The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Ubuntu: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Kali Linux: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Linux Mint: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Terminal Arcade.py
What It Helps With
Practicing programming logic, terminal interaction, and project structure through a playable local experience.
All-in-one terminal arcade pack with multiple mini-games in a single script. Saves data in ~/Terminal Arcade/ and runs smoothly on Termux/Linux terminals. Lightweight terminal game with quick controls and replay value.
Save Location
Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Ubuntu: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Kali Linux: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Linux Mint: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Network Tools
Bug Hunter.py
What It Helps With
Organizing authorized web-security reconnaissance and misconfiguration checks into one repeatable audit workflow.
Bug Hunter (no-root) — an authorized web security recon & misconfiguration scanner. Audits security headers and cookie flags, fingerprints technologies, checks DNS (SPF/DMARC/CAA), analyzes TLS/certificate expiry, tests CORS and HTTP methods, finds exposed sensitive files, crawls the site, and analyzes JavaScript for endpoints and leaked secrets. Includes optional directory discovery and Wayback URL recon, plus de-duplicated reports (JSON/CSV/HTML/PDF). Use only on targets you own or have explicit permission to test.
Save Location
The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Ubuntu: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Kali Linux: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Linux Mint: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Dark.py
What It Helps With
Collecting and organizing public Tor/.onion OSINT in authorized research without manually visiting and recording every result.
A specialized Dark Web OSINT tool and crawler designed for Tor network analysis. It features automated Tor connectivity, an Ahmia search integration, and a recursive crawler for .onion sites. The tool utilizes a modular plugin system to extract specific data types (Emails, BTC/XMR addresses, PGP keys, Phones) and supports saving snapshots. It offers both a Curses TUI and CLI mode, with results exportable to JSON, CSV, and TXT. Use only on systems you own or have explicit permission to test.
Save Location
Results are stored in /sdcard/Download/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Results are stored in /sdcard/Download/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Ubuntu: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Kali Linux: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Linux Mint: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
DedSec's Network.py
What It Helps With
Combining common network diagnostics, OSINT, downloading, and authorized web-audit tasks so you do not need a separate script for each check.
An advanced, non-root network toolkit optimized for speed and stability. Features a recursive website downloader with ZIP support, multi-threaded port scanner, internet speed testing, subnet calculator, and extensive OSINT tools (WHOIS, DNS, Reverse IP, Subdomain Enum). Includes web auditing scanners for SQLi, XSS, CMS detection, and SSH brute-forcing. Maintains a local SQLite audit log. Use only on systems you own or have explicit permission to test.
Save Location
Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to /storage/emulated/0/Download/Websites//, with fallbacks to /sdcard/Download/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to /storage/emulated/0/Download/Websites//, with fallbacks to /sdcard/Download/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Ubuntu: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Kali Linux: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Linux Mint: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Digital Footprint Finder.py
What It Helps With
Investigating a public digital footprint from one clue and organizing related public accounts, domains, URLs, emails, IPs, names, phone numbers, and files into one case.
Public-source OSINT casework toolkit with Easy Mode, SQLite cases, entity and relationship mapping, evidence hashing, correlation and timeline analysis, bounded crawling, username/profile checks, passive network enrichment, and keyless public APIs with optional user-supplied API credentials. It supports domains, URLs, usernames, emails, IPs, names, phone numbers, and local files, and exports Markdown, JSON, CSV, GraphML, STIX 2.1, raw evidence, ZIP packages, and self-contained HTML reports.
Save Location
Case results are saved in ~/storage/downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Case results are saved in ~/storage/downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Ubuntu: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Kali Linux: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Linux Mint: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Connections.py
What It Helps With
Running your own authenticated chat, video-call, and file-sharing space from Termux with server-enforced message ownership and access controls.
Self-hosted Connections server for Termux combining real-time chat, WebRTC video calls, chunked file sharing, and DedSec's Database in one authenticated interface. Supports files up to 150 MB, a strong automatically generated one-time secret key, Cloudflare and Tor access, rate limiting, CSRF-protected Database actions, server-controlled identities and message ownership, and moderator controls where the first user to join can delete any message while other users can delete or edit only their own. Chat files are transferred in protected chunks instead of oversized Socket.IO/Base64 messages, and LAN exposure is disabled by default unless explicitly enabled. Use only on systems and networks you own or are authorized to operate.
Save Location
Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Ubuntu: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Kali Linux: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Linux Mint: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Link Shield.py
What It Helps With
Inspecting redirects, HTTPS, domains, and suspicious URL patterns before opening an unfamiliar link.
Security-focused URL inspector: follows redirects, checks HTTPS/SSL, flags suspicious domains/patterns, and generates a risk report before you open a link. Use only on systems you own or have explicit permission to test.
Save Location
No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Ubuntu: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Kali Linux: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Linux Mint: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Masker.py
What It Helps With
Creating readable test links and checking redirect behavior for your own demos and authorized awareness workflows.
URL helper for creating clean, readable test links and checking redirect behavior in your own workflows. It is presented for organization, demos, and authorized awareness training only, never to disguise harmful links or trick people.
Save Location
No files are saved. The generated masked URL is printed in the terminal.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: No files are saved. The generated masked URL is printed in the terminal.
Ubuntu: No files are saved. The generated masked URL is printed in the terminal.
Kali Linux: No files are saved. The generated masked URL is printed in the terminal.
Linux Mint: No files are saved. The generated masked URL is printed in the terminal.
QR Code Generator.py
What It Helps With
Turning text or links into QR codes quickly from Termux for sharing, testing, or printed workflows.
Python-based QR code generator that creates QR codes for URLs and saves them in the Downloads/QR Codes folder. Features automatic dependency installation, user-friendly interface, and error handling for reliable operation. Use only on systems you own or have explicit permission to test.
Save Location
Generated PNG images are saved in ~/storage/downloads/QR Codes/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Generated PNG images are saved in ~/storage/downloads/QR Codes/.
Ubuntu: Generated PNG images are saved in ~/Downloads/QR Codes/.
Kali Linux: Generated PNG images are saved in ~/Downloads/QR Codes/.
Linux Mint: Generated PNG images are saved in ~/Downloads/QR Codes/.
Sod.py
What It Helps With
Measuring how an application you control behaves under load so performance limits can be found before real users hit them.
A comprehensive load testing tool for web applications, featuring multiple testing methods (HTTP, WebSocket, database simulation, file upload, mixed workload), real-time metrics, and auto-dependency installation. Advanced performance testing framework with realistic user behavior simulation, detailed analytics, and system resource monitoring. Use only on systems you own or have explicit permission to test.
Save Location
The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Ubuntu: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Kali Linux: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Linux Mint: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Store Scrapper.py
What It Helps With
Extracting and organizing public product/category data from stores you are allowed to analyze instead of collecting it manually page by page.
Single-file Python store scraper for Termux that works without root. Tries multiple ways to discover categories and products across regular HTML pages and many JS-style stores by reading HTML, JSON-LD, embedded JSON, sitemaps, Shopify endpoints, WooCommerce APIs, generic product cards, breadcrumbs, OpenGraph/meta tags, and internal links. Saves while running, starts full product scraping the moment each product is found, shows live terminal status, uses Enter as the default for prompts, and organizes results into store/category/product folders with downloaded images. Use only on systems you own or have explicit permission to test.
Save Location
Product data is saved under ~/storage/downloads/Store Scrapper////. If Termux Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Product data is saved under ~/storage/downloads/Store Scrapper////. If Termux Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Ubuntu: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Kali Linux: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Linux Mint: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Other Tools
Android App Launcher.py
What It Helps With
Launching and organizing Android apps from a Termux-centered workflow when you want quicker access from the terminal.
A utility to manage Android apps directly from the terminal. It can launch apps, extract APK files, uninstall apps, and analyze security permissions. Advanced Android application management and security analysis tool. Features include app launching, APK extraction, permission inspection, security analysis, and tracker detection. Includes comprehensive security reporting for installed applications. Built for Termux with clear prompts and organized outputs.
Save Location
Extracted APK files are saved in ~/storage/shared/Download/Extracted APK's/. Security reports are saved in ~/storage/shared/Download/App_Security_Reports/ as _security_report.txt.
Platform Support & Save Paths
Platform support: Termux only. This utility manages Android/Termux-specific features and is not applied to desktop Linux.
Termux: Extracted APK files are saved in ~/storage/shared/Download/Extracted APK's/. Security reports are saved in ~/storage/shared/Download/App_Security_Reports/ as _security_report.txt.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Loading Screen.py
What It Helps With
Adding a reusable loading/transition experience to local projects so long startup steps feel clearer to the user.
Customize your Termux startup with ASCII art loading screens. Supports custom art, delay timers, and automated setup/cleanup for one-time display. Built for Termux with clear prompts and organized outputs.
Save Location
No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Ubuntu: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Kali Linux: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Linux Mint: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Password Master.py
What It Helps With
Creating and managing stronger password-generation/checking workflows instead of relying on memorable but weak patterns.
Comprehensive password management suite featuring encrypted vault storage, password generation, strength analysis, and improvement tools. Includes AES-256 encrypted vault with master password protection, random password generator, passphrase generator, password strength analyzer, and password improvement suggestions. Features clipboard integration. Built for Termux with clear prompts and organized outputs.
Save Location
The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in /storage/emulated/0/Download/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in /storage/emulated/0/Download/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Ubuntu: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Kali Linux: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Linux Mint: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Termux Backup Restore.py
What It Helps With
Backing up and restoring Termux project files before updates, migrations, or risky changes.
Backup & restore for Termux: creates a zipped backup of your Termux files to Downloads and can restore them with integrity checks. Built for Termux with clear prompts and organized outputs.
Save Location
The backup archive is saved as /storage/emulated/0/Download/name_backup.zip. Split parts are created beside that archive. backup_config.json is stored in the current working directory.
Platform Support & Save Paths
Platform support: Termux only. This utility manages Android/Termux-specific features and is not applied to desktop Linux.
Termux: The backup archive is saved as /storage/emulated/0/Download/name_backup.zip. Split parts are created beside that archive. backup_config.json is stored in the current working directory.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Termux Repair Wizard.py
What It Helps With
Diagnosing common Termux setup/package problems through a guided repair flow instead of trying random commands.
DedSec Termux Repair Wizard is a no-root diagnostic and repair suite for repository and mirror errors, apt/dpkg failures, storage access, permissions, TLS certificates, caches, Python/pip, and shell/PATH problems. Its Script Keeper scans one script or an entire folder without directly launching the scripts, recognizes more than 20 languages plus extensionless shebang files, checks syntax, runtimes, commands, imports, modules, and common project manifests, and can install missing Termux and language-specific dependencies after confirmation. For newer Python releases, it also tries compatible replacement packages for removed standard-library modules. Every Script Keeper run produces a categorized report of installed items, fixes, warnings, failures, and syntax issues.
Save Location
Most repairs are applied directly to Termux packages, storage permissions, $HOME permissions, and shell files such as ~/.bashrc, ~/.profile, and ~/.zshrc. Script Keeper reports are saved as ~/DedSec/logs/script_keeper_.log.
Platform Support & Save Paths
Platform support: Termux only. This utility manages Android/Termux-specific features and is not applied to desktop Linux.
Termux: Most repairs are applied directly to Termux packages, storage permissions, $HOME permissions, and shell files such as ~/.bashrc, ~/.profile, and ~/.zshrc. Script Keeper reports are saved as ~/DedSec/logs/script_keeper_.log.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Personal Information Capture
Fake Back Camera Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request camera access, so permission prompts and social-engineering risks are easier to recognize.
Fake Back Camera Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Back Camera. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Captured back-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Back/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Captured back-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Back/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Back Camera Video Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request camera access, so permission prompts and social-engineering risks are easier to recognize.
Fake Back Camera Video Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Back Camera Video. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Recorded back-camera WEBM videos and related text data are saved in ~/storage/downloads/Back Camera Videos/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Recorded back-camera WEBM videos and related text data are saved in ~/storage/downloads/Back Camera Videos/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Card Details Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Card Details Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Card Details. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Submitted card-activation data is saved in ~/storage/downloads/CardActivations/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Submitted card-activation data is saved in ~/storage/downloads/CardActivations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Chrome Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Chrome Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Chrome Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Chrome verification output, including location JSON, face video, device scan, system information, and summaries, is saved in ~/storage/downloads/Chrome Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Chrome verification output, including location JSON, face video, device scan, system information, and summaries, is saved in ~/storage/downloads/Chrome Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Data Grabber Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Data Grabber Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Data Grabber. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Collected application information is saved under ~/storage/downloads/Peoples_Lives/, including application_info.txt.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Collected application information is saved under ~/storage/downloads/Peoples_Lives/, including application_info.txt.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Discord Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Discord Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Discord Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Discord verification output, including location JSON, face video, ID, phone, payment, and summary files, is saved in ~/storage/downloads/Discord Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Discord verification output, including location JSON, face video, ID, phone, payment, and summary files, is saved in ~/storage/downloads/Discord Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Facebook Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Facebook Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Facebook Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Facebook verification output, including location JSON, face video, ID images, and summary files, is saved in ~/storage/downloads/Facebook Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Facebook verification output, including location JSON, face video, ID images, and summary files, is saved in ~/storage/downloads/Facebook Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Front Camera Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request camera access, so permission prompts and social-engineering risks are easier to recognize.
Fake Front Camera Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Front Camera. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Captured front-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Front/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Captured front-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Front/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Front Camera Video Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request camera access, so permission prompts and social-engineering risks are easier to recognize.
Fake Front Camera Video Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Front Camera Video. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Recorded front-camera WEBM videos and related text data are saved in ~/storage/downloads/Front Camera Videos/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Recorded front-camera WEBM videos and related text data are saved in ~/storage/downloads/Front Camera Videos/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Google Location Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request or expose location data.
Fake Google Location Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Google Location. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Location JSON files are saved in ~/storage/downloads/Locations/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Location JSON files are saved in ~/storage/downloads/Locations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Instagram Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Instagram Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Instagram Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Instagram verification output, including location JSON, face video, voice audio, ID documents, and summary files, is saved in ~/storage/downloads/Instagram Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Instagram verification output, including location JSON, face video, voice audio, ID documents, and summary files, is saved in ~/storage/downloads/Instagram Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Location Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request or expose location data.
Fake Location Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Location. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Location JSON files are saved in ~/storage/downloads/Locations/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Location JSON files are saved in ~/storage/downloads/Locations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Microphone Page
What It Helps With
Running authorized awareness demonstrations that show how deceptive pages may request microphone access.
Fake Microphone Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Microphone. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Recorded audio, converted WAV files, and related text data are saved in ~/storage/downloads/Recordings/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Recorded audio, converted WAV files, and related text data are saved in ~/storage/downloads/Recordings/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Onlyfans Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake OnlyFans Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around OnlyFans Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
OnlyFans verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/OnlyFans Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: OnlyFans verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/OnlyFans Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Steam Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Steam Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Steam verification output, including location JSON, face video, ID, Steam Guard, phone, payment, and summary files, is saved in ~/storage/downloads/Steam Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Steam verification output, including location JSON, face video, ID, Steam Guard, phone, payment, and summary files, is saved in ~/storage/downloads/Steam Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitch Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake Twitch Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around Twitch Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
Twitch verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/Twitch Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Twitch verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/Twitch Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Youtube Verification Page
What It Helps With
Demonstrating in an authorized lab how fake verification/data-entry flows can pressure users into sharing sensitive information, so those patterns are easier to recognize.
Fake YouTube Verification Page is a consent-based awareness demo for teaching how deceptive permission prompts can pressure people into sharing sensitive access around YouTube Verification. Use it only in a lab, with dummy data, screenshots, or clear permission from participants. It is not presented as a tool for stealing information.
Save Location
YouTube verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/YouTube Verification/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: YouTube verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/YouTube Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Pages
Fake Apple Icloud Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Apple iCloud Page is a mock phishing-awareness page for teaching how fake Apple iCloud offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Apple iCloud/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Apple iCloud/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Discord Nitro Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Discord Nitro Page is a mock phishing-awareness page for teaching how fake Discord Nitro offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Discord Nitro/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Discord Nitro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Epic Games Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Epic Games Page is a mock phishing-awareness page for teaching how fake Epic Games offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Epic Games/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Epic Games/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Facebook Friends Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Facebook Friends Page is a mock phishing-awareness page for teaching how fake Facebook Friends offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Facebook Friends/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Facebook Friends/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Free Robux Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Free Robux Page is a mock phishing-awareness page for teaching how fake Free Robux offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Roblox Robux/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Roblox Robux/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake GitHub Pro Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake GitHub Pro Page is a mock phishing-awareness page for teaching how fake GitHub Pro offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/GitHub Pro/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/GitHub Pro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Google Free Money Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Google Free Money Page is a mock phishing-awareness page for teaching how fake Google Free Money offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Google Free Money/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Google Free Money/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Instagram Followers Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Instagram Followers Page is a mock phishing-awareness page for teaching how fake Instagram Followers offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Instagram Followers/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Instagram Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Metamask Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake MetaMask Page is a mock phishing-awareness page for teaching how fake MetaMask offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/MetaMask/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/MetaMask/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Microsoft 365 Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Microsoft 365 Page is a mock phishing-awareness page for teaching how fake Microsoft 365 offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Microsoft 365/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Microsoft 365/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Onlyfans Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake OnlyFans Page is a mock phishing-awareness page for teaching how fake OnlyFans offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/OnlyFans/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/OnlyFans/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Paypal Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake PayPal Page is a mock phishing-awareness page for teaching how fake PayPal offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form and card data is written to ~/storage/downloads/PayPal/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form and card data is written to ~/storage/downloads/PayPal/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Pinterest Pro Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Pinterest Pro Page is a mock phishing-awareness page for teaching how fake Pinterest Pro offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Pinterest Pro/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Pinterest Pro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Playstation Network Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake PlayStation Network Page is a mock phishing-awareness page for teaching how fake PlayStation Network offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/PlayStation Network/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/PlayStation Network/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Reddit Karma Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Reddit Karma Page is a mock phishing-awareness page for teaching how fake Reddit Karma offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Reddit Karma/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Reddit Karma/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Snapchat Friends Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Snapchat Friends Page is a mock phishing-awareness page for teaching how fake Snapchat Friends offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Snapchat Friends/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Snapchat Friends/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Games Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Steam Games Page is a mock phishing-awareness page for teaching how fake Steam Games offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Steam Games/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Steam Games/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Wallet Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Steam Wallet Page is a mock phishing-awareness page for teaching how fake Steam Wallet offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Steam Wallet/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Steam Wallet/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Tiktok Followers Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake TikTok Followers Page is a mock phishing-awareness page for teaching how fake TikTok Followers offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/TikTok Followers/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/TikTok Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Trust Wallet Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Trust Wallet Page is a mock phishing-awareness page for teaching how fake Trust Wallet offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Trust Wallet/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Trust Wallet/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitch Subs Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Twitch Subs Page is a mock phishing-awareness page for teaching how fake Twitch Subs offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Twitch Subs/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Twitch Subs/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitter Followers Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Twitter Followers Page is a mock phishing-awareness page for teaching how fake Twitter Followers offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Twitter Followers/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Twitter Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake What's Up Dude Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake What's Up Dude Page is a mock phishing-awareness page for teaching how fake What's Up Dude offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/WhatsUp Dude/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/WhatsUp Dude/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Xbox Live Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake Xbox Live Page is a mock phishing-awareness page for teaching how fake Xbox Live offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/Xbox Live/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/Xbox Live/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Youtube Subscribers Page
What It Helps With
Demonstrating in an authorized phishing-awareness lab how a convincing look-alike offer or login page can mislead users.
Fake YouTube Subscribers Page is a mock phishing-awareness page for teaching how fake YouTube Subscribers offers, giveaways, upgrades, or login prompts manipulate trust. Use it only for education, screenshots, or consent-based training with dummy accounts. Never use it to collect real credentials, cards, wallets, or private information.
Save Location
Saved form data is written to ~/storage/downloads/YouTube Subscribers/.
Platform Support & Save Paths
Platform support: available in the Termux build; desktop compatibility mode intentionally leaves this module disabled.
Termux: Saved form data is written to ~/storage/downloads/YouTube Subscribers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
No Category
APK's
What It Helps With
Downloading the current stable standalone Android app build directly from the DedSec Project repository.
The APK's folder contains stable standalone Android applications distributed with the DedSec Project. The current build is ButSystem v1.0.0 Universal APK for Android 8.0 and newer.
Repository Location
APK's/ButSystem/ButSystem-v1.0.0-universal.apk
Platform Support
Termux / Android: The APK can be installed on Android 8.0+.
Ubuntu: The APK can be downloaded or copied, but it does not run as a native Linux application.
Kali Linux: The APK can be downloaded or copied, but it does not run as a native Linux application.
Linux Mint: The APK can be downloaded or copied, but it does not run as a native Linux application.
Download ButSystem APKOpen ButSystem Page
Extra Content.py
What It Helps With
Finding optional resources, templates, and bonus material without searching through the repository manually.
Extra bonus content hub: quick access to additional resources, templates, and optional add-ons included in the DedSec toolkit. Built for Termux with clear prompts and organized outputs.
Save Location
The repository Extra Content folder is copied to ~/storage/downloads/Extra Content/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: The repository Extra Content folder is copied to ~/storage/downloads/Extra Content/.
Ubuntu: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Kali Linux: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Linux Mint: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Settings.py
What It Helps With
Managing DedSec Project maintenance and launching a complete browser-native desktop with advanced files, documents, media, terminal, packages, personalization, security, and troubleshooting tools from one central Settings.py experience.
Settings.py is the central control panel for the DedSec Project and the launcher for DedSec OS. The terminal settings menus cover project/device information, main and backup-source updates, package/module refreshes, Sponsors-Only access, Save DedSec Project, the privacy-filtered offline Transfer System, prompt settings, GitHub connection/stats, Termux usage stats, HTTP Proxy & Tor utilities, menu style and auto-start, language, credits, and uninstall. DedSec OS adds a Windows-style local desktop with movable/resizable windows, Start/taskbar/Action Center, File Explorer and shared Open/Save dialogs, Recycle Bin, Notepad, Web Office, Word/Excel/PowerPoint/PDF Explorer, Photo Studio, Video Editor, media/gallery/camera/recorder tools, Archive Manager, Calendar, Maps, browser, Terminal, Applications, Software Center, utilities, games, personalization, login/optional 2FA/password recovery, and a full Help & Troubleshooting app with guided fixes and live diagnostics. Built-in browser apps are designed to work without X11; optional legacy X11 programs remain available separately.
Save Location
Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: /storage/emulated/0/Download/DedSec Project Legacy Save.zip | Offline transfer set: /storage/emulated/0/Download/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: /storage/emulated/0/Download/DedSec Project Legacy Save.zip | Offline transfer set: /storage/emulated/0/Download/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Ubuntu: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Kali Linux: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Linux Mint: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
DedSec Market.py
What It Helps With
Browsing, installing, updating, and launching supported GitHub projects from a phone-friendly Termux interface.
Curses-based GitHub repository market for Termux that displays projects by project name instead of raw repository name. It fetches README text cleanly, shows releases and issues, supports install/update/delete and launch actions, keeps a watchlist, and stores cache/state for faster reuse. Built for Termux with clear prompts and organized outputs.
Save Location
Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Ubuntu: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Kali Linux: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Linux Mint: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Sponsors-Only
Choose one of the three tier buttons below to see exactly what it includes. Detailed script entries and the full $25 ebook library are listed underneath.
$3 Sponsor
The entry sponsor tier for the current private sponsor collection.
GitHub sponsor badge.
Sponsor community access.
Access to the current basic private sponsor repository.
Current $3 sponsor scripts: Face Detector.py, Face Detector Heavy.py, Face Swap.py, Steganography.py, AR Terror.py, and Login Stealer.py.
Open GitHub Sponsors
$9 Pro Supporter
The expanded sponsor tier with everything from $3 plus the Pro-only additions.
Everything included in the $3 Sponsor tier.
Access to the expanded private sponsor set.
Additional Pro scripts: Widget Maker.py, Kraken Trader.py, and Noob Hacker.py.
Open GitHub Sponsors
$25 Ultimate Supporter
The complete sponsor tier, combining all $9 benefits with the DedSec Project ebook library.
Everything included in the $9 Pro Supporter tier.
All five current ebooks in both English and Greek.
Current library: Data Analytics in Practice; Faith in the Digital Age; The Complete Termux Troubleshooting Handbook; Build and Publish a Website with AI from Your Phone; AI Website Prompt Library and Release Workbook.
Open GitHub Sponsors
$3 Sponsor — Detailed Scripts
These are the individual scripts included in the current $3 Sponsor tier. Open any script below for its full description and save location.
Face Detector.py
What It Helps With
Experimenting with face detection on permitted images or camera input as a sponsor-only computer-vision tool.
Local browser-based face analysis tool for Termux that works without root. It uses MediaPipe Face Mesh on the live camera feed, supports both front and back camera, tracks up to 3 faces, draws detailed facial landmark overlays instead of simple boxes, and also lets you upload photos or videos for analysis directly from the interface. It can capture PNG snapshots, record WEBM video, save cropped detected faces separately, and provide both a local network link and an optional Cloudflare public link.
Save Location
On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Ubuntu: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Kali Linux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Linux Mint: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Face Detector Heavy.py
What It Helps With
Running a heavier face-detection workflow when you need more processing options and your device can handle the extra load.
Expanded heavy-analysis version of the face detector for Termux, built without root. Along with live camera use, front/back camera switching, photo and video uploads, PNG snapshots, WEBM recording, and saved face crops, it raises tracking up to 30 faces and adds TensorFlow COCO-SSD object detection on top of the MediaPipe face mesh pipeline. It shows richer on-screen telemetry such as face count, animal/object detection, pose and gaze estimates, facial proportions, mouth and brow state, asymmetry scoring, and other visual analysis details, while still supporting both a local network link and an optional Cloudflare public link.
Save Location
On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Ubuntu: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Kali Linux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Linux Mint: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Face Swap.py
What It Helps With
Testing face-swap image transformation on media you have permission to use.
Local browser-based face swap tool for Termux that works without root. It opens a local camera page, lets you upload a source face image, switch between the front and back camera, and blend the uploaded face over the live camera using MediaPipe Face Mesh. The current version focuses on a smooth face-lock approach: it locks the uploaded face once, follows the live face, moves key feature patches for expressions, includes smoothing, feathering, opacity, blend, and skin-tone matching controls, and can save PNG snapshots from the browser. Use it only with your own images or with clear permission.
Save Location
On Termux, saved photos are stored in: /storage/emulated/0/Download/Face Swap/ or ~/storage/downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: On Termux, saved photos are stored in: /storage/emulated/0/Download/Face Swap/ or ~/storage/downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Ubuntu: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Kali Linux: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Linux Mint: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Steganography.py
What It Helps With
Learning how data can be hidden in and recovered from files for authorized security and forensic practice.
Password-based steganography suite for Termux. It can generate random black-and-white PNG carrier images, encrypt secret text with a password-derived Fernet key, hide the encrypted text inside PNG images using LSB steganography, and batch-decode hidden messages from all images placed in the Decrypt folder. Extracted messages are automatically saved as separate .txt files, and the script can also optionally clean processed images from the decode folder after scanning.
Save Location
Main folder: /storage/emulated/0/Download/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Main folder: /storage/emulated/0/Download/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Ubuntu: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Kali Linux: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Linux Mint: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
AR Terror.py
What It Helps With
Exploring local browser-based AR effects, camera interaction, recording, and immersive storytelling from Termux.
Local browser-based AR horror experience for Termux that works without root. It launches a full-screen camera-driven web page where you explore the environment, collect hidden logs into an archive/inventory system, use atmospheric visual and audio effects, switch between front and back camera, and record evidence as WEBM while the experience runs. It can also expose both a local network link and an optional Cloudflare public link.
Save Location
On Termux, recorded evidence is saved in: ~/storage/downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: On Termux, recorded evidence is saved in: ~/storage/downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Ubuntu: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Kali Linux: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Linux Mint: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Login Stealer.py
What It Helps With
Demonstrating credential-capture risk in a controlled, explicitly authorized awareness lab so users can recognize deceptive login flows.
Login Stealer.py is a fully working controlled login-security simulation tool for Termux that helps demonstrate how fake login pages, copied authentication screens, redirects, session behavior, and verification-style traps can make users trust the wrong page. It is built for awareness training, lab demonstrations, screenshots, and dummy-account testing so beginners can understand how phishing-style login tricks look before they fall for them in real life. It should be used only with dummy data, test accounts, or clear permission-based demonstrations, and it is not presented as a tool for stealing real accounts, private credentials, cookies, cards, wallets, or personal information.
Save Location
Main folder: /storage/emulated/0/Download/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Main folder: /storage/emulated/0/Download/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Ubuntu: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Kali Linux: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Linux Mint: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
$9 Pro Supporter — Additional Scripts
The $9 Pro Supporter tier includes every $3 script plus these three additional Pro scripts.
Widget Maker.py
What It Helps With
Creating reusable phone/Termux widgets so common commands or project actions are easier to launch.
DedSec Widget Maker is a no-root Termux helper that creates Android home-screen launchers for DedSec Project scripts through Termux:Widget. It recursively scans Termux home, shared storage, and common phone folders for DedSec, sponsor, exclusive, and related Python scripts, including scripts inside every accessible folder and subfolder. It then creates managed shortcuts in ~/.shortcuts. Each widget opens a small menu with Run, Show Script Path, and Exit, validates the Python file before launching it, keeps a manifest in ~/.dedsec_widget_maker/, and can update or delete all managed widgets when your script collection changes.
Save Location
Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Ubuntu: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Kali Linux: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Linux Mint: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Kraken Trader.py
What It Helps With
Researching markets, paper-testing strategies, recording trades, and organizing risk calculations before considering any live action.
Kraken Trader.py is a Termux trading research and portfolio assistant for the Kraken API. It starts in paper mode by default, shows a 10-second risk disclaimer, stores everything under ~/Kraken Trader/, and uses numbered menus for pair analysis, market scanning, dashboards, Sage-style strategy labs, advanced tools, beginner guides, risk/reward calculators, backtests, DCA and grid tools, paper wallet trading, paper bot loops, Kraken account tools, live order menus, order management, watchlists, crypto plus stock/ETF monitoring, reports, journals, logs, mode switching, diagnostics, and settings. It is built for education, organization, and safer paper testing; it is not financial advice and it does not guarantee profit.
Save Location
Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Ubuntu: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Kali Linux: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Linux Mint: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Noob Hacker.py
What It Helps With
Learning cybersecurity concepts through a more game-like progression with lessons, examples, and practice.
Noob Hacker.py is a safe offline terminal learning game for Termux that teaches absolute beginners programming, Python basics, Termux/Bash habits, debugging, local-only cybersecurity thinking, defender workflows, report writing, projects, quizzes, and playable practice games. It is built as a single Python script, works without root, keeps practice inside fictional/local labs, includes English and Greek versions, supports self-tests, save migration, progress tracking, and many beginner-friendly lessons designed to guide someone from zero knowledge into practical safe skills. It does not attack real targets, scan the internet, steal accounts, or teach malware.
Save Location
Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Platform Support & Save Paths
Platform support: documented for Termux, Ubuntu, Kali Linux, and Linux Mint. Use the platform path that matches your system.
Termux: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Ubuntu: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Kali Linux: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Linux Mint: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
$25 ULTIMATE SUPPORTER
$25 Ultimate Supporter — Ebook Library
The $25 Ultimate Supporter tier includes everything in the $9 Pro Supporter tier plus the complete current DedSec Project ebook library: all five ebooks in both English and Greek.
$25 / MONTH
$25 Ultimate Supporter
Everything in the $9 Pro Supporter tier.
All current ebooks in both English and Greek.
Open GitHub Sponsors
The five ebooks below are structured reference books and do not replace the free Assistance guides. Their descriptions reflect the uploaded books themselves.
Included ebook
Data Analytics in Practice
From mathematical thinking to job-ready analytics. Work through SQL, Python, pandas, statistics, experiments, dashboards, automation, APIs, pipelines, testing and Git while building reproducible deliverables, realistic business case studies, portfolio projects and a practical path toward a first analyst role.
SQL · Python · Statistics · Dashboards · Portfolio
Included ebook
Faith in the Digital Age
An Orthodox-centered reference on Christianity and modern technology, including AI, social media, synthetic media, surveillance, digital identity, biotechnology, cybersecurity and programmable economic systems. It separates doctrine, Scripture, patristic witness, history, current technical facts, interpretation and speculation while examining prophecy, Antichrist, the Mark and 666 without treating resemblance as proof.
Orthodox Christianity · AI · Technology · Prophecy · Discernment
Included ebook
The Complete Termux Troubleshooting Handbook
A diagnosis-first system for Android and Termux failures. Learn to identify the failing layer, preserve evidence, reduce problems to minimal tests and work through package-manager, storage, path, Python, Node.js, Git, DNS/TLS, local-server, proot-distro, Termux:API, backup, SSH and reproducible-recovery problems.
Termux · Android · Diagnostics · Recovery · Git/Python/Node
Included ebook
Build and Publish a Website with AI from Your Phone
A phone-first workflow that takes a beginner from an empty folder to a published, maintainable website using an AI assistant, Termux, Git and GitHub Pages. It covers semantic HTML, responsive CSS, progressive JavaScript, bilingual structure, accessibility, privacy, security, SEO, performance, deployment, path debugging and rollback/recovery.
Phone-first web development · AI · Termux · Git · GitHub Pages
Included ebook
AI Website Prompt Library and Release Workbook
A practical workbook of controlled prompt chains for reliable AI-assisted website work. Move through discovery, architecture, implementation, review, repair and release with context packets, decision gates, semantic HTML, responsive CSS, JavaScript behavior, bilingual parity, accessibility, SEO, security/privacy, debugging, regression control, migration/rollback and release-readiness checks.
Prompt chains · Review gates · Debugging · Release control
ButSystem.py is an exclusive local-first communication and workspace system that brings private and group messaging, file sharing, optional calls, stories, live-location tools, profiles, and administration controls into one organized interface.
Open ButSystem.py Exclusive
Using DedSec Regularly?
The public toolkit stays free. If you already use DedSec and want to support future updates, GitHub Sponsors provides optional sponsor-only extras. The $25 Ultimate Supporter tier also includes the current five-ebook library in English and Greek.
View Sponsor Tiers
Sponsor Us on GitHub
Legal Disclaimer: All tools and information presented here are for educational and ethical research purposes only. Users are responsible for ensuring they have proper authorization before using these tools on any network or system they do not own. Social engineering tools should only be used in authorized penetration testing scenarios with explicit written permission.
Need Help After Reading This Page?
Open the Assistance for focused Termux fixes, DedSec install problems, Python module errors, pip issues, GitHub clone help, unzip guides, and broken install repair steps.
Open Assistance
### Privacy Policy [en]
Source-URL: https://ded-sec.space/Pages/privacy-policy.html
Privacy Policy
Learn about our privacy practices and how we protect your data.
This Privacy Policy explains, at a high level, how DedSec Project ("we," "our," or "us") handles data in connection with the website and related services. It should be read together with the updated Legal Disclaimer & Statement on this page.
1. Privacy Approach
DedSec Project aims to collect the minimum amount of personal data reasonably necessary to operate the website, maintain security, and respond to lawful requests or user communications.
2. Data We May Process
In normal website operation, limited technical and operational data may be processed, such as IP address, device/browser details, security logs, and similar server-side records generated through hosting, delivery, or abuse-prevention systems.
If you voluntarily contact us through third-party channels listed on the website (for example social platforms, messaging apps, payment providers, or community platforms), the information you share is handled under the policies and settings of those third parties in addition to any internal handling needed to respond.
3. How Data May Be Used
to operate, secure, and maintain the website and related services,.
to detect, prevent, or investigate abuse, fraud, misuse, or technical issues,.
to respond to messages, support requests, legal/privacy inquiries, or content-removal requests,.
to comply with applicable legal obligations and enforce project terms, and.
to understand service reliability and improve operational stability.
4. Legal Bases And Applicable Frameworks
Where applicable, processing is governed by GDPR (Regulation (EU) 2016/679), ePrivacy rules, Greek data protection law including Law 4624/2019, and relevant consumer/privacy frameworks in the United States where applicable.
5. Third-Party Services And Links
The website may contain links or integrations involving third parties such as GitHub, social networks, referral or affiliate links, and other external services. Those third parties have their own terms and privacy policies, and DedSec Project is not responsible for their independent practices.
6. Consent, cookies and local preferences
This website saves your selected theme, language and explicit Accept/Decline choice locally in the browser using dedsec:theme, dedsec:language and dedsec:cookie-choice. These are localStorage values, not HTTP cookies. They remain until changed or cleared in your browser.
Saved Lessons, bookmarks and reading history are not retained; obsolete Test bookmark data is cleared. On Home, the GitHub Stars and Forks cards always show a locally bundled numeric snapshot from 16 October 2026. If you Accept optional content, the site may request https://api.github.com/repos/dedsec1121fk/DedSec to refresh those two counts; if you Decline, no such optional refresh is sent and the snapshot stays visible. Request information is subject to GitHub's privacy practices. Reading and searching remain functional either way.
The illustrated Cookie Preferences tile on Home allows you to change the choice. The popup appears only on the top-level home screen after loading; Account, embedded windows and subpages never open a second prompt. It has separately labeled Accept and Decline buttons with icons. Hosting providers and external links you open may process independent technical requests. The shared consent code does not activate Google Analytics or Google Tag Manager.
7. Data Retention
Technical records and communications are retained only for as long as reasonably necessary for security, operational, legal, moderation, or record-keeping purposes, after which they may be deleted, anonymized, or minimized where appropriate.
8. Security
Reasonable steps may be taken to protect technical and communication data, but no website, transmission method, or storage environment can be guaranteed to be completely secure or uninterrupted.
9. Your Rights
Depending on your jurisdiction, you may have rights relating to access, correction, deletion, restriction, objection, portability, or withdrawal of consent where consent applies. To make a privacy-related request, use the contact methods listed on the Contact & Credits page.
10. International Transfers
Because third-party platforms, hosting providers, and infrastructure may operate internationally, limited technical data may be processed outside your country of residence, subject to the safeguards or legal mechanisms required by applicable law.
11. Children's Privacy
The website and tools are not directed at children under 13. If we become aware that personal data of a child under 13 has been collected in a way covered by COPPA or other applicable law, reasonable steps will be taken to delete it.
12. Changes To This Policy
This Privacy Policy may be updated from time to time. Changes take effect when the revised version is posted on this page with an updated "Last Updated" date.
13. Contact
For privacy questions, legal/privacy issues, or content-removal requests, use the contact methods listed on the Contact & Credits page.
Legal Disclaimer & Statement
Last Updated: October 21, 2026
By accessing, downloading, using the DedSec Project website, the GitHub repository, scripts, tools or any related content, you expressly acknowledge that you have read, understood and agree to be bound by this entire Legal Disclaimer & Statement. If you do not agree, you must immediately cease all use and delete any downloaded materials.
1. Purpose / Educational Use
The DedSec Project is a free, community-driven Termux cybersecurity toolkit that provides scripts, utilities, learning resources and related content. Any functionality related to cybersecurity, OSINT, network testing, scraping or similar tools is provided strictly for:
education,.
lawful security research,.
defensive testing, and.
use only on systems/accounts that you own or where you have explicit, prior, written permission.
The optional phishing and social-engineering simulation modules are included solely for educational awareness training in fully controlled environments with explicit informed consent from all involved parties. Any other use is strictly prohibited.
2. Prohibition Of Unlawful Use / Authorization Required
IT IS STRICTLY PROHIBITED to use the DedSec Project for any illegal or unauthorized purpose. You must NOT use the tools, guides or content of the DedSec Project for:
access, testing, disruption or monitoring of systems without authorization,.
phishing or credential collection against real targets,.
unauthorized scanning, exploitation, DDoS/DoS, brute-force, malware or any illegal activity.
You are solely responsible for ensuring that your use complies with all applicable laws. Misuse may lead to serious civil and criminal penalties, including prosecution under the CFAA, Greek cybercrime legislation or equivalent laws.
3. No Professional / Legal Advice
The content is provided solely for informational purposes and does not constitute legal, financial, medical or any other professional advice. No attorney-client relationship is created. For legal advice, consult a qualified lawyer.
4. User Responsibility, Risk And Safety
Software and scripts can cause data loss, service interruption, account restrictions or other damage if used incorrectly or maliciously. You assume all risk arising from the use of:
the website,.
the scripts/tools referenced or provided,.
third-party services, websites or APIs.
Always test in a controlled and fully authorized environment.
You further acknowledge that certain tools may be detected by antivirus software, security systems or service providers, potentially leading to account restrictions or legal scrutiny.
5. Limitation Of Liability (To The Maximum Extent Permitted By Law)
To the maximum extent permitted by applicable law (including the laws of Greece, the European Union and the United States), the DedSec Project, its owner, contributors and collaborators shall not be liable for any direct or indirect, incidental, consequential, special or exemplary damages, including loss of data, profits, reputation or business interruption, arising from access to or use of the website or the tools.
Some jurisdictions do not allow certain limitations; where prohibited, they do not apply.
6. Indemnification
You agree to indemnify and hold harmless the DedSec Project, its owner, contributors and collaborators from any claims, damages, liabilities, losses and expenses (including reasonable attorney fees) arising from:
use or misuse of the website/tools,.
violation of any law/regulation or third-party rights,.
breach of this statement.
7. Intellectual Property / Open Source
Unless otherwise stated, the text, graphics and branding are protected by applicable intellectual property laws. The code and scripts are governed by the proprietary license included in the GitHub repository (LICENSE.txt), which grants only limited rights for personal, non-commercial use. Modification, redistribution, reverse engineering or commercial use without the owner's explicit written permission is strictly prohibited. Third-party trademarks belong to their respective owners and are used for identification purposes only.
8. Third-Party Links / Services And Affiliate Links
The website may contain links to third parties (e.g. GitHub, social networks, affiliate/referral links). Third parties have their own terms and policies and the DedSec Project is not responsible for their content or practices. If an affiliate/referral relationship exists, a commission may be earned at no extra cost to you.
9. Privacy And Data Protection (High-Level)
The DedSec Project aims to collect the minimum amount of personal data. However, standard hosting/security operations may process limited technical data (e.g. IP address, device/browser details, logs) for security and operational purposes.
Where applicable, processing is governed by:
GDPR (Regulation (EU) 2016/679) and related rules,.
ePrivacy rules (Directive 2002/58/EC as transposed),.
Greek data protection legislation (in particular Law 4624/2019 and related rules),.
and the applicable consumer protection/privacy frameworks in the USA (where relevant).
For details, see the website's Privacy Policy.
10. Legal Compliance - Applicable Laws
You must ensure that your actions remain within the boundaries of all applicable laws, including (but not limited to):
European Union / Europe: Regulation (EU) 2016/679 (GDPR), ePrivacy Directive 2002/58/EC, NIS2 Directive, Cyber Resilience Act and national implementing laws;
United States of America: Computer Fraud and Abuse Act (CFAA), Digital Millennium Copyright Act (DMCA) and applicable federal and state laws;
Greece: Law 4624/2019 on personal data protection, provisions of the Greek Penal Code on cybercrime, Law 2225/1994 (as amended) and all other relevant Greek cybersecurity and data protection legislation.
11. Cookies
If cookies or similar technologies are used (including via third-party embeds), disclosure and consent are provided as required by GDPR/ePrivacy and Greek law. See the Privacy Policy / cookie notice (if displayed).
12. Children's Privacy
The website and tools are not directed at children under 13. If the operator becomes aware that personal data of a child under 13 has been collected in a manner covered by COPPA (USA) or other applicable law, reasonable steps will be taken to delete it.
13. Security Research Boundaries (USA, EU, Greece - Where Applicable)
You must ensure that your actions remain within lawful boundaries, including (indicatively and where applicable):
USA: CFAA, DMCA, FTC Act and state legislation,.
EU: national criminal legislation and cybersecurity/data protection rules,.
Greece: relevant provisions of criminal law and applicable legislation on cybercrime and data.
This document does not list every law. You must comply with all laws that apply to you and to the targets/systems you are testing.
14. Disclaimer Of Warranties
The website, tools, scripts and all content are provided "AS IS" and "AS AVAILABLE" without any warranty of any kind, express, implied, statutory or otherwise, including (but not limited to) warranties of merchantability, fitness for a particular purpose, title or non-infringement. We do not warrant that the tools will be error-free, secure, uninterrupted or suitable for any particular purpose.
15. Governing Law And Jurisdiction
This Legal Disclaimer & Statement is governed exclusively by the laws of the Hellenic Republic, without regard to conflict-of-laws principles. Any dispute arising out of or relating to this statement or the use of the Project shall be resolved exclusively by the competent courts of Athens, Attica. You irrevocably submit to the jurisdiction of those courts.
16. Severability
If any clause, or part of a clause, of this Disclaimer is found by any court or administrative body of competent jurisdiction to be illegal, invalid or unenforceable, the legality, validity or enforceability of the remainder of the clause or paragraph which contains the relevant provision shall not be affected, unless otherwise stipulated under applicable law. If the remainder of the provision is not affected, the parties shall use all reasonable endeavours to agree within a reasonable time upon any lawful and reasonable variations to the Disclaimer which may be necessary in order to achieve, to the greatest extent possible, the same effect as would have been achieved by the clause, or the part of the clause, in question.
17. Entire Agreement & Changes
This statement constitutes the entire agreement between you and the DedSec Project regarding its subject matter and supersedes all prior understandings. It may be modified at any time; continued use after changes constitutes acceptance of the new version.
18. Contact
For legal/privacy issues or content-removal requests, use the contact details listed on the Contact page.
Changing email: A signed-in account holder who already verified the existing mailbox may request an email-address change after confirming the current password. Approval links are sent first to the old address and then to the new address; the change occurs only after both are expressly confirmed. Unused links expire after one hour, are stored as token hashes, and account sessions are revoked after completion. The old and new mailbox addresses are processed by the configured transactional email provider solely for these security confirmations. Your private notes and account identity stay linked to the same user ID. Browser copies and exported backups require independent removal if desired.
Account terms, privacy and storage
Accounts are optional and registration is available to people aged 18–130, inclusive. The general website stays public. An account provides private TXT notes, folders, pins, TXT/ZIP exports and eligible referral rewards. The secure service runs on Cloudflare; the account window connects to that separate origin only when opened. Minimizing keeps its draft in the same window; closing the browser can lose unsaved changes.
Cloudflare D1 stores first and last name, email, date of birth, age at registration, a protected password verifier, folder names, notes, pins, sessions, terms acceptance and referral status. Your original password is processed in your browser and is never stored. Account data is excluded from public GitHub, public search, sitemap and LLM exports. D1 notes are not end-to-end encrypted against the service operator.
Essential secure HttpOnly cookies support sign-in. Embedded windows use a separate partitioned cookie; ordinary portal tabs use SameSite=Lax. Turnstile helps reject automated abuse. The application retains keyed network hashes rather than raw IPs, grouping IPv6 by /64. Sign-in and signup-network records have a 30-day rolling retention; rate-limit and verification records expire sooner as applicable. Cloudflare may separately process technical security logs under its policies.
Cloud notes are the default. Only an explicit browser-storage choice saves TXT contents, paths, pins and storage preference in IndexedDB, associated with a hash of an opaque account identifier and website profile. That hash is an identifier, not encryption; local notes are not separately encrypted. Signing out hides the workspace but retains the local copy. Clearing cache/site data, browser eviction, profile deletion or private browsing can permanently lose it. Local storage does not provide offline authentication. Export TXT/ZIP backups regularly.
Local mode pauses note uploads while the previous cloud copy remains in D1. Switching back checks combined quotas, merges identical files, renames conflicting local copies and saves one complete cloud revision. Failed transfers keep the browser copy. A browser copy can remain after transfer; clear site data to remove it. Deleting an account removes its D1 application records and attempts to remove the current browser workspace. Separately remove copies in other browsers and exported files; provider recovery backups can retain deleted data temporarily.
The Test service allows 300 accounts and 444 unique signed-in users per day, resetting at midnight Europe/Athens. Each workspace allows 900,000 bytes of UTF-8 TXT contents and names, 200 files, 50 folders and eight path levels; total cloud-note storage is limited to 400,000,000 bytes. Browser notes use the same personal workspace limits. Free-plan limits may interrupt access; this Test service has no uptime guarantee.
Verification sends your email address to the configured mail provider only when you request it. The prepared provider is Brevo; an existing legacy installation may use Resend. Production verification, email changes, security codes and deletion notices use the configured DedSec Project sender; these services require valid provider credentials. No newsletter is sent. The application caps verification at 100 emails per UTC day and 3,000 per calendar month. Referral rewards require your verified email and three friends with distinct verified email identities and separate networks. Each friend must wait 24 hours and sign in on two different days. Pending referrals expire after 30 days. Email aliases and shared networks may not qualify. Fake referrals are prohibited; an IP address cannot prove a unique person.
Keep your password and recovery code private. Save the recovery code shown once after registration or recovery. Recovery and password changes revoke previous sessions. Profile controls let you export notes, sign out, change your password or permanently delete your account. Contact the project through Contact & Credits for data-access, correction or privacy requests. These account terms are accepted through the registration checkbox.
### Save DedSec Project. [en]
Source-URL: https://ded-sec.space/Pages/save-dedsec-project.html
Save DedSec Project.
Preserved copies of DedSec projects and websites, with links to their archival services.
Permanent links lead to archives that are updated over time. Software Heritage snapshots identify a specific preserved version.
Bundled links: 20 October 2026, 02:28 UTC.
Save DedSec Project — GitHub
Internet Archive
DedSec main
DedSec backup
Websites
Website mirror
GitHub profile
Corrupted Files
Pocket AI
Praying Project
Offline Survival
Hacking Guide Project
Language Project
Ghost Project
Save DedSec Project
APK dependencies
Software Heritage
DedSec main: — Software Heritage archive
DedSec main: — latest snapshot
DedSec backup: — Software Heritage archive
DedSec backup: — latest snapshot
Websites: — Software Heritage archive
Websites: — latest snapshot
Website mirror: — Software Heritage archive
Website mirror: — latest snapshot
GitHub profile: — Software Heritage archive
GitHub profile: — latest snapshot
Corrupted Files: — Software Heritage archive
Corrupted Files: — latest snapshot
Pocket AI: — Software Heritage archive
Pocket AI: — latest snapshot
Praying Project: — Software Heritage archive
Praying Project: — latest snapshot
Offline Survival: — Software Heritage archive
Offline Survival: — latest snapshot
Hacking Guide Project: — Software Heritage archive
Hacking Guide Project: — latest snapshot
Language Project: — Software Heritage archive
Language Project: — latest snapshot
Ghost Project: — Software Heritage archive
Ghost Project: — latest snapshot
Save DedSec Project: — Software Heritage archive
Save DedSec Project: — latest snapshot
Wayback Machine
ded-sec.space
ded-sec.online
### DedSec Linux venv & Paths [el]
Source-URL: https://ded-sec.space/el/Assistance/dedsec-linux-venv-paths.html
DedSec Linux venv & Paths
Κατανόησε το Linux environment και τα file locations που χρησιμοποιεί το DedSec ώστε να κάνεις troubleshooting χωρίς λάθος αλλαγές.
Γρήγορη Περίληψη
Κατανόησε το Linux environment και τα file locations που χρησιμοποιεί το DedSec ώστε να κάνεις troubleshooting χωρίς λάθος αλλαγές.
Project Environment
Το desktop Linux χρησιμοποιεί τοπικό .venv μέσα στο DedSec repository. Τρέξε ./Run.sh αντί να αναμειγνύεις global Python packages με το project.
Έλεγχος Environment
cd ~/DedSec pwd ./.venv/bin/python --version printf "%s\n" "$PATH"
Compatibility Layer
Το Compat/bin παρέχει desktop-safe replacements ή shims για commands που περιμένουν portable scripts. Το Run.sh το προσθέτει αυτόματα.
Downloads
Τα portable εργαλεία συνήθως αποθηκεύουν στο ~/Downloads/ σε Ubuntu, Kali Linux και Linux Mint. Τα ακριβή paths ανά εργαλείο βρίσκονται στη σελίδα Μάθε Για Τα Εργαλεία.
Shell Files
Ubuntu και Linux Mint συνήθως χρησιμοποιούν ~/.bashrc. Το Kali μπορεί να χρησιμοποιεί ~/.zshrc. Το Termux χρησιμοποιεί $PREFIX/etc/bash.bashrc.
Επόμενα Βήματα
Για platform-specific save paths, δες τη σελίδα Μάθε Για Τα Εργαλεία. Για γενικά προβλήματα, επέστρεψε στη Βοήθεια.
Μάθε Για Τα ΕργαλείαΌλοι Οι Οδηγοί Βοήθειας
### Επιδιόρθωση Χαλασμένης Εγκατάστασης Του DedSec [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-dedsec-broken-install.html
Επιδιόρθωση Χαλασμένης Εγκατάστασης Του DedSec
Διάγνωσε εγκατάσταση DedSec Project σε Termux ή υποστηριζόμενα Linux desktops όταν modules, paths, updates, environments ή storage σταματήσουν να λειτουργούν.
Σύντομη Απάντηση
Διάγνωσε μια εγκατάσταση του DedSec Project που σταμάτησε να λειτουργεί λόγω ελλιπών modules, λάθος φακέλου, αποτυχημένης ενημέρωσης ή προβλήματος αποθήκευσης.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
BrokenDedSecInstall
Πριν Εκτελέσεις Οτιδήποτε
Κράτησε backup προσωπικών ρυθμίσεων, outputs, τροποποιημένων scripts και αποθηκευμένων δεδομένων πριν από επανεγκατάσταση ή ενημέρωση.
Επιβεβαίωσε τον ακριβή φάκελο DedSec και την κατάσταση Git αντί να κάνεις νέο clone μέσα στον υπάρχοντα φάκελο.
Κράτησε ολόκληρο το πρώτο σφάλμα αντί να αντικαταστήσεις αμέσως όλη την εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Κράτησε πρώτα backup των προσωπικών ρυθμίσεων και outputs του DedSec. Επιβεβαίωσε τον τρέχοντα φάκελο DedSec πριν αντιγράψεις ή εκτελέσεις το block.
Αντιγραφή εντολών
pwd ls python -m py_compile script.py python script.py
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`python -m py_compile script.py` — Ελέγχει τη σύνταξη Python χωρίς να ξεκινήσει ολόκληρο το πρόγραμμα.
Πώς Φαίνεται Ότι Λύθηκε
Ο σωστός launcher του DedSec ξεκινά από τον φάκελο που αναφέρει ο οδηγός.
Οι προσωπικές ρυθμίσεις και τα αποθηκευμένα outputs παραμένουν μετά την επισκευή ή ενημέρωση.
Μια δεύτερη εκκίνηση λειτουργεί χωρίς επανάληψη της εγκατάστασης.
Ασφαλή Επόμενα Βήματα
Εντόπισε αν η αποτυχία αφορά φάκελο, εξάρτηση, Git, δικαιώματα ή αποθηκευμένα δεδομένα.
Επισκεύασε μόνο αυτό το επίπεδο και δοκίμασε το μικρότερο entry point του DedSec.
Σύγκρινε τα αλλαγμένα αρχεία πριν αντικαταστήσεις τοπικές τροποποιήσεις.
Κράτησε χρονολογημένο backup αφού επιβεβαιώσεις ότι η επισκευασμένη έκδοση ξεκινά σωστά.
Συνηθισμένα Λάθη
Διαγραφή του υπάρχοντος φακέλου DedSec πριν αντιγραφούν ρυθμίσεις και outputs.
Δημιουργία επαναλαμβανόμενων nested clones όπως `DedSec/DedSec/DedSec`.
Εκτέλεση εντολής αντικατάστασης από λάθος γλώσσα ή φάκελο project.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Επιδιόρθωση DedSec Linux Setup [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-dedsec-linux-setup.html
Επιδιόρθωση DedSec Linux Setup
Επιδιόρθωσε το desktop environment χωρίς να διαγράψεις ολόκληρο το project ή να πειράξεις άσχετα system Python packages.
Γρήγορη Περίληψη
Επιδιόρθωσε το desktop environment χωρίς να διαγράψεις ολόκληρο το project ή να πειράξεις άσχετα system Python packages.
Έλεγχος Απαραίτητων Packages
sudo apt update sudo apt install -y git python3 python3-venv python3-pip
Ξαναδημιουργία Μόνο Του Project Environment
cd ~/DedSec rm -rf .venv bash Setup.sh --update-only ./Run.sh
Η εντολή rm -rf παραπάνω στοχεύει μόνο το τοπικό .venv του DedSec. Επιβεβαίωσε πρώτα ότι βρίσκεσαι μέσα στον φάκελο DedSec.
Αν Το Clone Είναι Αλλού
Χρησιμοποίησε το πραγματικό clone path αντί για ~/DedSec. Τρέξε pwd και git status πριν αλλάξεις αρχεία.
Android-Specific Tools
Μην προσπαθείς να επιδιορθώσεις Termux-only utilities σαν Linux services. Android App Launcher, Mobile Desktop, Termux Backup/Restore, Termux Repair Wizard και Mobile Developer Setup δεν εφαρμόζονται σκόπιμα στο desktop Linux.
Επόμενα Βήματα
Για platform-specific save paths, δες τη σελίδα Μάθε Για Τα Εργαλεία. Για γενικά προβλήματα, επέστρεψε στη Βοήθεια.
Μάθε Για Τα ΕργαλείαΌλοι Οι Οδηγοί Βοήθειας
### Διόρθωση Ελέγχου Ταυτότητας GitHub Μέσω SSH Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-github-ssh-authentication-termux.html
Διόρθωση Ελέγχου Ταυτότητας GitHub Μέσω SSH Στο Termux
Ρύθμισε την ταυτοποίηση GitHub στο Termux με HTTPS token ή κλειδί SSH, χωρίς να τη συγχέεις με τον κανονικό κωδικό του λογαριασμού σου.
Σύντομη Απάντηση
Ρύθμισε την ταυτοποίηση GitHub στο Termux με HTTPS token ή κλειδί SSH, χωρίς να τη συγχέεις με τον κανονικό κωδικό του λογαριασμού σου.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Permission denied (publickey)Host key verification failedAuthentication failed
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
pkg install openssh git -y ssh-keygen -t ed25519 -C "you@example.com" cat ~/.ssh/id_ed25519.pub ssh -T git@github.com
Τι Δείχνουν Οι Εντολές
`pkg install openssh git -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ο Τοπικός Server Δεν Ανοίγει Στο Android [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-localhost-server-not-opening-android.html
Ο Τοπικός Server Δεν Ανοίγει Στο Android
Διόρθωσε έναν τοπικό server που δεν ανοίγει στον browser, ελέγχοντας τη διεύθυνση σύνδεσης, το port, τον φάκελο, τη συμπεριφορά του Android και το σωστό URL.
Σύντομη Απάντηση
Διόρθωσε έναν τοπικό server που δεν ανοίγει στον browser, ελέγχοντας τη διεύθυνση σύνδεσης, το port, τον φάκελο, τη συμπεριφορά του Android και το σωστό URL.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Connection refusedThis site can’t be reachedERR_CONNECTION_REFUSED
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το ενδεικτικό port και τον φάκελο. Δοκίμασε πρώτα το τοπικό URL στο ίδιο κινητό πριν δημιουργήσεις διεύθυνση LAN ή δημόσιο tunnel.
Αντιγραφή εντολών
pwd python -m http.server 8080 --bind 127.0.0.1 # open http://127.0.0.1:8080 in the same phone browser
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`python -m http.server 8080 --bind 127.0.0.1` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων Node.js Και npm Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-node-npm-errors-termux.html
Διόρθωση Σφαλμάτων Node.js Και npm Στο Termux
Διόρθωσε σφάλματα όπως «npm command not found», αποτυχίες node-gyp, προβλήματα εγκατάστασης πακέτων και χαλασμένα JavaScript projects στο Termux.
Σύντομη Απάντηση
Διόρθωσε σφάλματα όπως «npm command not found», αποτυχίες node-gyp, προβλήματα εγκατάστασης πακέτων και χαλασμένα JavaScript projects στο Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
npm ERR!node-gypERESOLVEMODULE_NOT_FOUND
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Κράτησε το `package-lock.json`, εκτός αν θέλεις σκόπιμα να αλλάξεις εκδόσεις εξαρτήσεων. Χρησιμοποίησε `npm ci` όταν το αρχείο κλειδώματος είναι έγκυρο.
Αντιγραφή εντολών
pkg update pkg install -y nodejs python make clang node -v npm -v npm cache verify test -f package-lock.json && npm ci || npm install
Τι Δείχνουν Οι Εντολές
`pkg update` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install -y nodejs python make clang` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`npm cache verify` — Ελέγχει την cache του npm χωρίς διαγραφή του dependency lock file.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση «εντολή not found» και ελλιπών πακέτωνΔιόρθωση σφαλμάτων αποθετηρίων, mirrors, GPG και aptΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων pip Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-pip-errors-termux.html
Διόρθωση Σφαλμάτων pip Στο Termux
Ξεχώρισε προβλήματα του pip, αποτυχίες build, ελλιπή wheels, σφάλματα compiler και εξαρτήσεις του Termux πριν εγκαταστήσεις βιβλιοθήκες Python.
Σύντομη Απάντηση
Ξεχώρισε προβλήματα του pip, αποτυχίες build, ελλιπή wheels, σφάλματα compiler και εξαρτήσεις του Termux πριν εγκαταστήσεις βιβλιοθήκες Python.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Installing pip is forbiddenFailed building wheelsubprocess-exited-with-errorNo matching distribution found
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Το Termux διαχειρίζεται το pip μέσω του `python-pip`. Μην εκτελείς `pip install --upgrade pip`· ενημέρωσέ το με `pkg upgrade python-pip`.
Αντιγραφή εντολών
pkg update pkg install -y python python-pip python -m pip --version python -m pip install --upgrade setuptools wheel python -m pip install PACKAGE_NAME
Τι Δείχνουν Οι Εντολές
`pkg update` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install -y python python-pip` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`python -m pip --version` — Εμφανίζει ποιο pip ανήκει στην ενεργή Python.
`python -m pip install --upgrade setuptools wheel` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση συντακτικών σφαλμάτων Python στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του ModuleNotFoundError Στην Python [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-python-module-not-found-termux.html
Διόρθωση Του ModuleNotFoundError Στην Python
Βρες ποιο περιβάλλον Python εκτελεί το script, εγκατέστησε σωστά το module που λείπει και απέφυγε συγκρούσεις με τοπικά ονόματα αρχείων.
Σύντομη Απάντηση
Βρες ποιο περιβάλλον Python εκτελεί το script, εγκατέστησε σωστά το module που λείπει και απέφυγε συγκρούσεις με τοπικά ονόματα αρχείων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
ModuleNotFoundErrorImportErrorNo module named
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Το όνομα διανομής στο PyPI μπορεί να διαφέρει από το όνομα import· για παράδειγμα, το `beautifulsoup4` εισάγεται ως `bs4`.
Αντιγραφή εντολών
python - <<'PYCODE' import sys print("Python:", sys.executable) print("Version:", sys.version) PYCODE python -m pip show DISTRIBUTION_NAME python -m pip install DISTRIBUTION_NAME python -c "import IMPORT_NAME; print('import ok')"
Τι Δείχνουν Οι Εντολές
`python - <<'PYCODE'` — Εκτελεί ενσωματωμένο διαγνωστικό κώδικα Python.
`python -m pip show DISTRIBUTION_NAME` — Ελέγχει αν είναι εγκατεστημένη μια διανομή Python.
`python -m pip install DISTRIBUTION_NAME` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
`python -c "import IMPORT_NAME; print('import ok')"` — Εκτελεί μια μικρή απομονωμένη δοκιμή Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων pip στο TermuxΔιόρθωση συντακτικών σφαλμάτων Python στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Συντακτικών Σφαλμάτων Python Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-python-syntax-errors-termux.html
Διόρθωση Συντακτικών Σφαλμάτων Python Στο Termux
Διόρθωσε μη κλεισμένα strings, λάθος εσοχές, άκυρους χαρακτήρες, αντιγραμμένο HTML και άλλα συντακτικά σφάλματα Python μέσα στο Termux.
Σύντομη Απάντηση
Διόρθωσε μη κλεισμένα strings, λάθος εσοχές, άκυρους χαρακτήρες, αντιγραμμένο HTML και άλλα συντακτικά σφάλματα Python μέσα στο Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
SyntaxErrorIndentationErrorunexpected EOFline NUMBER
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
python -m py_compile script.py nano +LINE_NUMBER script.py
Τι Δείχνουν Οι Εντολές
`python -m py_compile script.py` — Ελέγχει τη σύνταξη Python χωρίς να ξεκινήσει ολόκληρο το πρόγραμμα.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Κλειδώματος dpkg/apt Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-dpkg-apt-lock.html
Διόρθωση Κλειδώματος dpkg/apt Στο Termux
Επανέφερε το σύστημα πακέτων μετά από διακοπείσα εγκατάσταση, κλείδωμα του apt ή του dpkg και πακέτα που έμειναν μισορυθμισμένα.
Σύντομη Απάντηση
Επανέφερε το σύστημα πακέτων μετά από διακοπείσα εγκατάσταση, κλείδωμα του apt ή του dpkg και πακέτα που έμειναν μισορυθμισμένα.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Could not get lockdpkg was interruptedunmet dependencies
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
ps aux | grep -E "apt|pkg|dpkg" dpkg --configure -a apt --fix-broken install pkg update
Τι Δείχνουν Οι Εντολές
`pkg update` — Ανανεώνει το ευρετήριο πακέτων του Termux.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση «εντολή not found» και ελλιπών πακέτωνΔιόρθωση σφαλμάτων αποθετηρίων, mirrors, GPG και aptΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Ονόματος Και Email Στο Git [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-git-push-email-identity.html
Διόρθωση Ονόματος Και Email Στο Git
Διόρθωσε τα Git μηνύματα «please tell me who you are» και «unable to auto-detect email address» ρυθμίζοντας σωστά τα user.name και user.email.
Σύντομη Απάντηση
Διόρθωσε τα Git μηνύματα «please tell me who you are» και «unable to auto-detect email address» ρυθμίζοντας σωστά τα user.name και user.email.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
IdentityError
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
git config --global user.name "dedsec1121fk" git config --global user.email "you@example.com" git config --global --list git commit -m "Update project"
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΚλωνοποίηση αποθετηρίου GitHub στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του «No Space Left On Device» Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-no-space-left.html
Διόρθωση Του «No Space Left On Device» Στο Termux
Εντόπισε τι γεμίζει τον χώρο του Termux, καθάρισε με ασφάλεια cache και υπολείμματα build και μετέφερε αποτελέσματα στον φάκελο Downloads.
Σύντομη Απάντηση
Εντόπισε τι γεμίζει τον χώρο του Termux, καθάρισε με ασφάλεια cache και υπολείμματα build και μετέφερε αποτελέσματα στον φάκελο Downloads.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
No space left on deviceENOSPCDisk quota exceeded
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
df -h du -h -d 1 ~ | sort -h apt clean mkdir -p /storage/emulated/0/Download/DedSec-Exports
Τι Δείχνουν Οι Εντολές
`df -h` — Εμφανίζει τον ελεύθερο και χρησιμοποιημένο χώρο.
`du -h -d 1 ~ | sort -h` — Μετρά μεγέθη αρχείων ή φακέλων πριν από καθαρισμό.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του «No Such Αρχείο Or Directory» Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-no-such-file-or-directory.html
Διόρθωση Του «No Such Αρχείο Or Directory» Στο Termux
Βρες τον πραγματικό φάκελο στο Termux, χειρίσου σωστά ονόματα με κενά και σταμάτησε τα λάθη διαδρομών πριν εκτελέσεις ένα script.
Σύντομη Απάντηση
Βρες τον πραγματικό φάκελο στο Termux, χειρίσου σωστά ονόματα με κενά και σταμάτησε τα λάθη διαδρομών πριν εκτελέσεις ένα script.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
No such file or directorycan't open filenot found
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
pwd ls -la find ~ -iname "*script*.py" 2>/dev/null python "My Script.py"
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls -la` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`find ~ -iname "*script*.py" 2>/dev/null` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του «Permission Denied» Σε Εκτελέσιμα Αρχεία [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-permission-denied-executable.html
Διόρθωση Του «Permission Denied» Σε Εκτελέσιμα Αρχεία
Διόρθωσε προβλήματα «Permission denied», χρησιμοποίησε σωστά το chmod και κατανόησε ποια δικαιώματα είναι εφικτά σε Termux χωρίς root.
Σύντομη Απάντηση
Διόρθωσε προβλήματα «Permission denied», χρησιμοποίησε σωστά το chmod και κατανόησε ποια δικαιώματα είναι εφικτά σε Termux χωρίς root.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Permission deniedOperation not permittedexit status 126
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
ls -la script.sh chmod +x script.sh ./script.sh # or run Python scripts with: python script.py
Τι Δείχνουν Οι Εντολές
`ls -la script.sh` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`chmod +x script.sh` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση Termux και πρώτη ρύθμισηΔημιουργία εργαλείου σε ύφος DedSecΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του «Port Already In Use» Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-port-already-in-use.html
Διόρθωση Του «Port Already In Use» Στο Termux
Βρες και σταμάτησε την παλιά διεργασία που χρησιμοποιεί ένα port πριν επανεκκινήσεις Flask, Socket.IO, http.server ή τοπικό dashboard.
Σύντομη Απάντηση
Βρες και σταμάτησε την παλιά διεργασία που χρησιμοποιεί ένα port πριν επανεκκινήσεις Flask, Socket.IO, http.server ή τοπικό dashboard.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Address already in useEADDRINUSEErrno 98
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το `8080` με το προβληματικό port και το `PID` με το επαληθευμένο process ID. Στείλε πρώτα `TERM`· μη σταματήσεις άγνωστη διεργασία και μη χρησιμοποιήσεις `KILL` εκτός αν αποτύχει ο ομαλός τερματισμός.
Αντιγραφή εντολών
pkg install -y lsof lsof -i :8080 # Replace PID only after checking the process shown above ps -p PID -o pid,cmd kill -TERM PID sleep 2 ps -p PID -o pid,cmd
Τι Δείχνουν Οι Εντολές
`pkg install -y lsof` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`lsof -i :8080` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΟ τοπικός server δεν ανοίγει στο AndroidΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων Αποθετηρίων, Mirrors, GPG Και apt [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-repository-errors.html
Διόρθωση Σφαλμάτων Αποθετηρίων, Mirrors, GPG Και apt
Διόρθωσε προβλήματα αποθετηρίων Termux, αργούς mirrors, προειδοποιήσεις υπογραφής GPG και αποτυχίες κατά την ενημέρωση πακέτων.
Σύντομη Απάντηση
Διόρθωσε προβλήματα αποθετηρίων Termux, αργούς mirrors, προειδοποιήσεις υπογραφής GPG και αποτυχίες κατά την ενημέρωση πακέτων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Unable to locate package404 Not FoundGPG errorRelease file
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
termux-change-repo pkg clean pkg update -y pkg upgrade -y
Τι Δείχνουν Οι Εντολές
`termux-change-repo` — Ανοίγει τον επιλογέα repository και mirror του Termux.
`pkg update -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg upgrade -y` — Ενημερώνει τα εγκατεστημένα πακέτα του Termux.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση «εντολή not found» και ελλιπών πακέτωνΔιόρθωση κλειδώματος dpkg/apt στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων SSL, Πιστοποιητικών Και curl [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-ssl-certificate-curl-errors.html
Διόρθωση Σφαλμάτων SSL, Πιστοποιητικών Και curl
Διόρθωσε αποτυχίες πιστοποιητικών SSL, παλιά ca-certificates, αποτυχημένα downloads και προβλήματα σύνδεσης των curl και wget.
Σύντομη Απάντηση
Διόρθωσε αποτυχίες πιστοποιητικών SSL, παλιά ca-certificates, αποτυχημένα downloads και προβλήματα σύνδεσης των curl και wget.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CERTIFICATE_VERIFY_FAILEDcurl: (60)SSL certificate problem
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
pkg update && pkg upgrade -y pkg install ca-certificates curl wget -y update-ca-certificates curl -I https://github.com
Τι Δείχνουν Οι Εντολές
`pkg update && pkg upgrade -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install ca-certificates curl wget -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση «εντολή not found» και ελλιπών πακέτωνΔιόρθωση σφαλμάτων αποθετηρίων, mirrors, GPG και aptΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Πρόσβασης Στον Αποθηκευτικό Χώρο Του Android [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-storage-permission.html
Διόρθωση Πρόσβασης Στον Αποθηκευτικό Χώρο Του Android
Διόρθωσε την πρόσβαση του Termux στον κοινόχρηστο χώρο, στον φάκελο Downloads και στα αρχεία του Android χωρίς να απαιτείται root.
Σύντομη Απάντηση
Διόρθωσε την πρόσβαση του Termux στον κοινόχρηστο χώρο, στον φάκελο Downloads και στα αρχεία του Android χωρίς να απαιτείται root.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Permission denied/storage/emulated/0~/storage
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
termux-setup-storage ls -la /storage/emulated/0/Download pwd cp test.txt /storage/emulated/0/Download/ 2>/dev/null || echo "Create test.txt first"
Τι Δείχνουν Οι Εντολές
`termux-setup-storage` — Ζητά πρόσβαση στον κοινόχρηστο χώρο και δημιουργεί συντομεύσεις Termux.
`ls -la /storage/emulated/0/Download` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΑποσυμπίεση ZIP αρχείων στο TermuxΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Scripts Του Termux:Widget [el]
Source-URL: https://ded-sec.space/el/Assistance/fix-termux-widget-scripts.html
Διόρθωση Scripts Του Termux:Widget
Διόρθωσε shortcuts του Termux:Widget, λάθος φάκελο widget, ελλιπές shebang, προβλήματα δικαιωμάτων και scripts που δεν εμφανίζονται.
Σύντομη Απάντηση
Διόρθωσε shortcuts του Termux:Widget, λάθος φάκελο widget, ελλιπές shebang, προβλήματα δικαιωμάτων και scripts που δεν εμφανίζονται.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Termux:WidgetHelp
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux και κάθε πρόσθετο προέρχονται από συμβατές πηγές και υπογραφές.
Έλεγξε δικαιώματα Android, περιορισμούς μπαταρίας και ρυθμίσεις ειδοποιήσεων για τη συγκεκριμένη λειτουργία.
Δοκίμασε μία εντολή ενσωμάτωσης Android απευθείας πριν τη βάλεις σε μεγαλύτερο script ή widget.
Εντολές Ελέγχου Ή Ρύθμισης
Εγκατέστησε μόνο συμβατά πρόσθετα Termux, δώσε το απαιτούμενο δικαίωμα Android και δοκίμασε μία άμεση εντολή πριν τη χρησιμοποιήσεις σε script.
Αντιγραφή εντολών
mkdir -p ~/.shortcuts nano ~/.shortcuts/test-widget.sh chmod +x ~/.shortcuts/test-widget.sh ~/.shortcuts/test-widget.sh
Τι Δείχνουν Οι Εντολές
`chmod +x ~/.shortcuts/test-widget.sh` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
Πώς Φαίνεται Ότι Λύθηκε
Η άμεση δοκιμή πρόσθετου, αποθήκευσης, widget ή παρασκηνίου επιστρέφει το αναμενόμενο αποτέλεσμα Android.
Η λειτουργία συνεχίζει να δουλεύει μετά το κλείσιμο και νέο άνοιγμα του Termux.
Η ρύθμιση δεν εξαρτάται από root ή δικαιώματα που το Android δεν μπορεί να δώσει σε κανονική εφαρμογή.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε τη συμβατότητα πηγής εφαρμογών και εγκατέστησε το απαιτούμενο πακέτο εντολών Termux.
Δώσε μόνο το δικαίωμα Android που απαιτεί η συγκεκριμένη εντολή.
Εκτέλεσε τη μικρότερη άμεση εντολή και έλεγξε το ακατέργαστο output.
Πρόσθεσέ την σε script, widget ή background workflow μόνο αφού λειτουργήσει η άμεση δοκιμή.
Συνηθισμένα Λάθη
Ανάμειξη Termux και προσθέτων από ασύμβατα stores ή πηγές υπογραφής.
Αντιμετώπιση του battery optimization σαν να είναι σφάλμα Python ή shell.
Προσδοκία ότι εφαρμογή χωρίς root θα προσπελάσει προστατευμένες περιοχές ή θα παρακάμψει όρια δικαιωμάτων Android.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Κλωνοποίηση Αποθετηρίου GitHub Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/github-clone-termux.html
Κλωνοποίηση Αποθετηρίου GitHub Στο Termux
Διόρθωσε αποτυχίες git clone στο Android, όπως ελλιπές Git, λάθος φάκελος, σύγχυση ταυτοποίησης και μη έγκυρη διεύθυνση repository.
Σύντομη Απάντηση
Διόρθωσε αποτυχίες git clone στο Android, όπως ελλιπές Git, λάθος φάκελος, σύγχυση ταυτοποίησης και μη έγκυρη διεύθυνση repository.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
GitHubCloneHelp
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
pkg install git -y mkdir -p ~/Projects cd ~/Projects git clone https://github.com/dedsec1121fk/DedSec.git cd DedSec pwd ls
Τι Δείχνουν Οι Εντολές
`pkg install git -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`git clone https://github.com/dedsec1121fk/DedSec.git` — Δημιουργεί τοπικό αντίγραφο του συγκεκριμένου repository.
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εγκατάσταση Του DedSec Project Στο Android [el]
Source-URL: https://ded-sec.space/el/Assistance/install-dedsec-project-android.html
Εγκατάσταση Του DedSec Project Στο Android
Εγκατάστησε βήμα προς βήμα το DedSec Project σε Android χωρίς root, από το Termux και το GitHub clone έως τα βασικά πακέτα και την πρώτη καθαρή εκτέλεση.
Σύντομη Απάντηση
Εγκατάστησε βήμα προς βήμα το DedSec Project σε Android χωρίς root, από το Termux και το GitHub clone έως τα βασικά πακέτα και την πρώτη καθαρή εκτέλεση.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
InstallDedSecProject
Πριν Εκτελέσεις Οτιδήποτε
Κράτησε backup προσωπικών ρυθμίσεων, outputs, τροποποιημένων scripts και αποθηκευμένων δεδομένων πριν από επανεγκατάσταση ή ενημέρωση.
Επιβεβαίωσε τον ακριβή φάκελο DedSec και την κατάσταση Git αντί να κάνεις νέο clone μέσα στον υπάρχοντα φάκελο.
Κράτησε ολόκληρο το πρώτο σφάλμα αντί να αντικαταστήσεις αμέσως όλη την εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Κράτησε πρώτα backup των προσωπικών ρυθμίσεων και outputs του DedSec. Επιβεβαίωσε τον τρέχοντα φάκελο DedSec πριν αντιγράψεις ή εκτελέσεις το block.
Αντιγραφή εντολών
(termux-setup-storage pkg update && pkg upgrade -y pkg install python git unzip curl wget nano -y git clone https://github.com/dedsec1121fk/DedSec.git cd DedSec)
Τι Δείχνουν Οι Εντολές
`pkg update && pkg upgrade -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install python git unzip curl wget nano -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`git clone https://github.com/dedsec1121fk/DedSec.git` — Δημιουργεί τοπικό αντίγραφο του συγκεκριμένου repository.
Πώς Φαίνεται Ότι Λύθηκε
Ο σωστός launcher του DedSec ξεκινά από τον φάκελο που αναφέρει ο οδηγός.
Οι προσωπικές ρυθμίσεις και τα αποθηκευμένα outputs παραμένουν μετά την επισκευή ή ενημέρωση.
Μια δεύτερη εκκίνηση λειτουργεί χωρίς επανάληψη της εγκατάστασης.
Ασφαλή Επόμενα Βήματα
Εντόπισε αν η αποτυχία αφορά φάκελο, εξάρτηση, Git, δικαιώματα ή αποθηκευμένα δεδομένα.
Επισκεύασε μόνο αυτό το επίπεδο και δοκίμασε το μικρότερο entry point του DedSec.
Σύγκρινε τα αλλαγμένα αρχεία πριν αντικαταστήσεις τοπικές τροποποιήσεις.
Κράτησε χρονολογημένο backup αφού επιβεβαιώσεις ότι η επισκευασμένη έκδοση ξεκινά σωστά.
Συνηθισμένα Λάθη
Διαγραφή του υπάρχοντος φακέλου DedSec πριν αντιγραφούν ρυθμίσεις και outputs.
Δημιουργία επαναλαμβανόμενων nested clones όπως `DedSec/DedSec/DedSec`.
Εκτέλεση εντολής αντικατάστασης από λάθος γλώσσα ή φάκελο project.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση ονόματος και email στο GitΚλωνοποίηση αποθετηρίου GitHub στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εγκατάσταση DedSec Project σε Linux [el]
Source-URL: https://ded-sec.space/el/Assistance/install-dedsec-project-linux.html
Εγκατάσταση DedSec Project σε Linux
Εγκατάστησε το DedSec σε Ubuntu, Kali Linux ή Linux Mint χρησιμοποιώντας τον κοινό cross-platform installer και launcher.
Γρήγορη Περίληψη
Εγκατάστησε το DedSec σε Ubuntu, Kali Linux ή Linux Mint χρησιμοποιώντας τον κοινό cross-platform installer και launcher.
Απαιτήσεις
Χρησιμοποίησε λογαριασμό με sudo access και ενεργή σύνδεση internet. Το DedSec υποστηρίζει Ubuntu, Kali Linux και Linux Mint με το ίδιο desktop setup.
Εγκατάσταση Git
sudo apt update sudo apt install -y git
Clone Και Setup
git clone https://github.com/dedsec1121fk/DedSec cd DedSec bash Setup.sh
Το setup εγκαθιστά desktop dependencies, δημιουργεί .venv και ετοιμάζει το Compat/bin.
Εκκίνηση
./Run.sh
Χρησιμοποίησε αυτόν τον launcher για κανονικές desktop εκτελέσεις ώστε να εφαρμόζονται το local environment και το compatibility layer.
Paths
Η Python του project βρίσκεται στο DedSec/.venv/. Τα compatibility commands στο DedSec/Compat/bin/. Τα outputs των εργαλείων συνήθως χρησιμοποιούν ~/Downloads/ ή το XDG Downloads directory του χρήστη.
Επόμενα Βήματα
Για platform-specific save paths, δες τη σελίδα Μάθε Για Τα Εργαλεία. Για γενικά προβλήματα, επέστρεψε στη Βοήθεια.
Μάθε Για Τα ΕργαλείαΌλοι Οι Οδηγοί Βοήθειας
### Διατήρηση Του Termux Σε Λειτουργία Στο Παρασκήνιο [el]
Source-URL: https://ded-sec.space/el/Assistance/keep-termux-running-background.html
Διατήρηση Του Termux Σε Λειτουργία Στο Παρασκήνιο
Μείωσε τις διακοπές του Termux από το Android σε scripts, τοπικούς servers, μεγάλα downloads και ροές εργασίας του DedSec χωρίς root.
Σύντομη Απάντηση
Μείωσε τις διακοπές του Termux από το Android σε scripts, τοπικούς servers, μεγάλα downloads και ροές εργασίας του DedSec χωρίς root.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
KeepTermuxRunningWithout
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux και κάθε πρόσθετο προέρχονται από συμβατές πηγές και υπογραφές.
Έλεγξε δικαιώματα Android, περιορισμούς μπαταρίας και ρυθμίσεις ειδοποιήσεων για τη συγκεκριμένη λειτουργία.
Δοκίμασε μία εντολή ενσωμάτωσης Android απευθείας πριν τη βάλεις σε μεγαλύτερο script ή widget.
Εντολές Ελέγχου Ή Ρύθμισης
Εγκατέστησε μόνο συμβατά πρόσθετα Termux, δώσε το απαιτούμενο δικαίωμα Android και δοκίμασε μία άμεση εντολή πριν τη χρησιμοποιήσεις σε script.
Αντιγραφή εντολών
termux-wake-lock nohup python server.py > server.log 2>&1 & ps -A | grep python tail -f server.log
Τι Δείχνουν Οι Εντολές
`termux-wake-lock` — Ζητά wake lock· το Android μπορεί ακόμη να επιβάλει περιορισμούς παρασκηνίου.
Πώς Φαίνεται Ότι Λύθηκε
Η άμεση δοκιμή πρόσθετου, αποθήκευσης, widget ή παρασκηνίου επιστρέφει το αναμενόμενο αποτέλεσμα Android.
Η λειτουργία συνεχίζει να δουλεύει μετά το κλείσιμο και νέο άνοιγμα του Termux.
Η ρύθμιση δεν εξαρτάται από root ή δικαιώματα που το Android δεν μπορεί να δώσει σε κανονική εφαρμογή.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε τη συμβατότητα πηγής εφαρμογών και εγκατέστησε το απαιτούμενο πακέτο εντολών Termux.
Δώσε μόνο το δικαίωμα Android που απαιτεί η συγκεκριμένη εντολή.
Εκτέλεσε τη μικρότερη άμεση εντολή και έλεγξε το ακατέργαστο output.
Πρόσθεσέ την σε script, widget ή background workflow μόνο αφού λειτουργήσει η άμεση δοκιμή.
Συνηθισμένα Λάθη
Ανάμειξη Termux και προσθέτων από ασύμβατα stores ή πηγές υπογραφής.
Αντιμετώπιση του battery optimization σαν να είναι σφάλμα Python ή shell.
Προσδοκία ότι εφαρμογή χωρίς root θα προσπελάσει προστατευμένες περιοχές ή θα παρακάμψει όρια δικαιωμάτων Android.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση Termux και πρώτη ρύθμισηΔιόρθωση του «Permission denied» σε εκτελέσιμα αρχείαΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Συμβουλές Για Browser Και Android WebView Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-android-webview-browser-tips.html
Συμβουλές Για Browser Και Android WebView Στο Termux
Διόρθωσε παλιά cache, λανθασμένη συμπεριφορά browser, CSS που δεν ανανεώνεται, προβλήματα τοπικών paths και αποτυχίες refresh κατά τις δοκιμές ιστοσελίδων.
Σύντομη Απάντηση
Διόρθωσε παλιά cache, λανθασμένη συμπεριφορά browser, CSS που δεν ανανεώνεται, προβλήματα τοπικών paths και αποτυχίες refresh κατά τις δοκιμές ιστοσελίδων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
BrowserTips
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το ενδεικτικό port και τον φάκελο. Δοκίμασε πρώτα το τοπικό URL στο ίδιο κινητό πριν δημιουργήσεις διεύθυνση LAN ή δημόσιο tunnel.
Αντιγραφή εντολών
python -m http.server 8000 # Open a private tab or add ?v=2 to CSS/JS links # Try http://127.0.0.1:8000 and http://localhost:8000
Τι Δείχνουν Οι Εντολές
`python -m http.server 8000` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Δημιουργία Και Επαναφορά Αντιγράφων Ασφαλείας Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-backup-restore-workflow.html
Δημιουργία Και Επαναφορά Αντιγράφων Ασφαλείας Στο Termux
Δημιούργησε αξιόπιστα ZIP backups, απέφυγε την αντικατάσταση σημαντικών αρχείων και επανέφερε έργα Termux αφού πρώτα ελέγξεις το περιεχόμενό τους.
Σύντομη Απάντηση
Δημιούργησε αξιόπιστα ZIP backups, απέφυγε την αντικατάσταση σημαντικών αρχείων και επανέφερε έργα Termux αφού πρώτα ελέγξεις το περιεχόμενό τους.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
BackupRestoreTermuxProjects
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Η χρονική σήμανση περιλαμβάνει και δευτερόλεπτα, ώστε πολλά backups της ίδιας ημέρας να μη χρησιμοποιούν το ίδιο όνομα αρχείου.
Αντιγραφή εντολών
mkdir -p /storage/emulated/0/Download/TermuxBackups STAMP="$(date +%Y-%m-%d_%H-%M-%S)" zip -r "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" ~/DedSec -x "*/__pycache__/*" "*.pyc" unzip -l "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" | head
Τι Δείχνουν Οι Εντολές
`zip -r "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" ~/DedSec -x "*/__pycache__/*" "*.pyc"` — Δημιουργεί ZIP archive από τα συγκεκριμένα αρχεία ή φάκελο.
`unzip -l "/storage/emulated/0/Download/TermuxBackups/project-$STAMP.zip" | head` — Εμφανίζει ή εξάγει αρχεία από ZIP archive.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Οδηγός Termux Για Αρχάριους Στο Android [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-beginner-guide-android.html
Οδηγός Termux Για Αρχάριους Στο Android
Ακολούθησε μια καθαρή πρώτη διαδρομή για να μάθεις Termux, φακέλους, πακέτα, Python scripts, GitHub και τα βασικά του DedSec Project.
Σύντομη Απάντηση
Ακολούθησε μια καθαρή πρώτη διαδρομή για να μάθεις Termux, φακέλους, πακέτα, Python scripts, GitHub και τα βασικά του DedSec Project.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
BeginnerGuide
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Διάβασε πρώτα το block, αντικατάστησε κάθε ενδεικτικό όνομα αρχείου ή φακέλου και εκτέλεσε μία γραμμή κάθε φορά από τη θέση που αναφέρει ο οδηγός.
Αντιγραφή εντολών
pwd ls mkdir -p ~/Projects cd ~/Projects pkg update pkg install python git nano -y
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`pkg update` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install python git nano -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Βασικές εντολές TermuxΑσφαλής αντιγραφή και επικόλληση εντολώνΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Δημιουργία Εργαλείου Σε Ύφος DedSec [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-build-dedsec-style-tool.html
Δημιουργία Εργαλείου Σε Ύφος DedSec
Σχεδίασε ένα ασφαλές εργαλείο στο ύφος του DedSec με μενού, σωστούς φακέλους, logs, επιλογή γλώσσας, βοήθεια και καθαρή έξοδο.
Σύντομη Απάντηση
Σχεδίασε ένα ασφαλές εργαλείο στο ύφος του DedSec με μενού, σωστούς φακέλους, logs, επιλογή γλώσσας, βοήθεια και καθαρή έξοδο.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
DedSec-StyleTool
Πριν Εκτελέσεις Οτιδήποτε
Κράτησε backup προσωπικών ρυθμίσεων, outputs, τροποποιημένων scripts και αποθηκευμένων δεδομένων πριν από επανεγκατάσταση ή ενημέρωση.
Επιβεβαίωσε τον ακριβή φάκελο DedSec και την κατάσταση Git αντί να κάνεις νέο clone μέσα στον υπάρχοντα φάκελο.
Κράτησε ολόκληρο το πρώτο σφάλμα αντί να αντικαταστήσεις αμέσως όλη την εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Κράτησε πρώτα backup των προσωπικών ρυθμίσεων και outputs του DedSec. Επιβεβαίωσε τον τρέχοντα φάκελο DedSec πριν αντιγράψεις ή εκτελέσεις το block.
Αντιγραφή εντολών
mkdir -p ~/DedSecTool/{data,logs,exports} touch ~/DedSecTool/logs/run.log nano ~/DedSecTool/main.py python ~/DedSecTool/main.py
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Ο σωστός launcher του DedSec ξεκινά από τον φάκελο που αναφέρει ο οδηγός.
Οι προσωπικές ρυθμίσεις και τα αποθηκευμένα outputs παραμένουν μετά την επισκευή ή ενημέρωση.
Μια δεύτερη εκκίνηση λειτουργεί χωρίς επανάληψη της εγκατάστασης.
Ασφαλή Επόμενα Βήματα
Εντόπισε αν η αποτυχία αφορά φάκελο, εξάρτηση, Git, δικαιώματα ή αποθηκευμένα δεδομένα.
Επισκεύασε μόνο αυτό το επίπεδο και δοκίμασε το μικρότερο entry point του DedSec.
Σύγκρινε τα αλλαγμένα αρχεία πριν αντικαταστήσεις τοπικές τροποποιήσεις.
Κράτησε χρονολογημένο backup αφού επιβεβαιώσεις ότι η επισκευασμένη έκδοση ξεκινά σωστά.
Συνηθισμένα Λάθη
Διαγραφή του υπάρχοντος φακέλου DedSec πριν αντιγραφούν ρυθμίσεις και outputs.
Δημιουργία επαναλαμβανόμενων nested clones όπως `DedSec/DedSec/DedSec`.
Εκτέλεση εντολής αντικατάστασης από λάθος γλώσσα ή φάκελο project.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Θέλεις Να Υποστηρίξεις Περισσότερη Ανάπτυξη Του DedSec;
Το GitHub Sponsors είναι η προαιρετική διαδρομή υποστήριξης για τη συνεχή ανάπτυξη του DedSec Project. Το δημόσιο toolkit και αυτός ο οδηγός Βοήθειας παραμένουν δωρεάν.
Αντιγραφή αναφοράςΔες τα Sponsor Tiers
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση Termux και πρώτη ρύθμισηΔιόρθωση του «Permission denied» σε εκτελέσιμα αρχείαΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Τοπικός Έλεγχος Για Σπασμένους Συνδέσμους [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-check-broken-links-locally.html
Τοπικός Έλεγχος Για Σπασμένους Συνδέσμους
Έλεγξε από το κινητό τοπικά HTML αρχεία για χαλασμένους εσωτερικούς συνδέσμους, ελλιπείς τίτλους και περιγραφές, λάθος canonicals και προβλήματα sitemap.
Σύντομη Απάντηση
Έλεγξε από το κινητό τοπικά HTML αρχεία για χαλασμένους εσωτερικούς συνδέσμους, ελλιπείς τίτλους και περιγραφές, λάθος canonicals και προβλήματα sitemap.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CheckBrokenLinksBasics
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Ο έλεγχος επαληθεύει τοπικούς προορισμούς και βασικά στοιχεία SEO. Σκόπιμα δεν στέλνει αιτήματα σε εξωτερικά URLs.
Αντιγραφή εντολών
pkg install -y python python -m pip install beautifulsoup4 python - <<'PYCODE' from pathlib import Path from urllib.parse import unquote, urlsplit from bs4 import BeautifulSoup
root = Path('.').resolve() problems = [] for page in root.rglob('*.html'): soup = BeautifulSoup(page.read_text(encoding='utf-8', errors='replace'), 'html.parser') if not soup.title or not soup.title.get_text(strip=True): problems.append((page, 'missing ')) if not soup.find('meta', attrs={'name': 'description'}): problems.append((page, 'missing meta description')) if not soup.find('link', rel='canonical'): problems.append((page, 'missing canonical')) for tag, attr in [('a','href'),('img','src'),('script','src'),('link','href')]: for node in soup.find_all(tag): raw = (node.get(attr) or '').strip() if not raw or raw.startswith(('#','mailto:','tel:','data:','javascript:')): continue parsed = urlsplit(raw) if parsed.scheme or parsed.netloc: continue target = unquote(parsed.path) candidate = (root / target.lstrip('/')) if target.startswith('/') else (page.parent / target) if target.endswith('/'): candidate = candidate / 'index.html' if not candidate.resolve().exists(): problems.append((page, f'broken {attr}: {raw}')) for page, issue in problems: print(f'{page}: {issue}') print(f'Problems: {len(problems)}') PYCODE
Τι Δείχνουν Οι Εντολές
`pkg install -y python` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`python -m pip install beautifulsoup4` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
`python - <<'PYCODE'` — Εκτελεί ενσωματωμένο διαγνωστικό κώδικα Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ασφαλής Καθαρισμός Cache Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-clean-cache-safely.html
Ασφαλής Καθαρισμός Cache Στο Termux
Ελευθέρωσε χώρο χωρίς να διαγράψεις σημαντικά projects, καθαρίζοντας προσεκτικά cache πακέτων, παλιά downloads και προσωρινά αρχεία build.
Σύντομη Απάντηση
Ελευθέρωσε χώρο χωρίς να διαγράψεις σημαντικά projects, καθαρίζοντας προσεκτικά cache πακέτων, παλιά downloads και προσωρινά αρχεία build.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CleanCache
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα τα μεγέθη. Το `apt clean` αφαιρεί κατεβασμένα αρχεία πακέτων και το `pip cache purge` αφαιρεί cached downloads της Python — όχι εγκατεστημένες βιβλιοθήκες ή αρχεία project.
Αντιγραφή εντολών
df -h du -h -d 1 ~ | sort -h apt clean command -v python >/dev/null && python -m pip cache dir command -v python >/dev/null && python -m pip cache purge
Τι Δείχνουν Οι Εντολές
`df -h` — Εμφανίζει τον ελεύθερο και χρησιμοποιημένο χώρο.
`du -h -d 1 ~ | sort -h` — Μετρά μεγέθη αρχείων ή φακέλων πριν από καθαρισμό.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Δημιουργία Προσωρινού Συνδέσμου Με Cloudflared [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-cloudflared-local-link-help.html
Δημιουργία Προσωρινού Συνδέσμου Με Cloudflared
Κατανόησε τα τοπικά URLs, τις δοκιμές στον browser του κινητού, τα Cloudflared tunnels, την κοινή χρήση με QR και τα ασφαλή όρια προσωρινών servers.
Σύντομη Απάντηση
Κατανόησε τα τοπικά URLs, τις δοκιμές στον browser του κινητού, τα Cloudflared tunnels, την κοινή χρήση με QR και τα ασφαλή όρια προσωρινών servers.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
ShareLocalTermuxLinks
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Τα Quick Tunnels είναι προσωρινοί σύνδεσμοι δοκιμών. Μην εκθέτεις τον προσωπικό φάκελο του Termux, στοιχεία σύνδεσης, ιδιωτικά repositories ή backups.
Αντιγραφή εντολών
pkg install -y cloudflared python mkdir -p ~/PublicShare && cd ~/PublicShare python -m http.server 8080 --bind 127.0.0.1 # In a second Termux session: cloudflared tunnel --url http://127.0.0.1:8080
Τι Δείχνουν Οι Εντολές
`pkg install -y cloudflared python` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`python -m http.server 8080 --bind 127.0.0.1` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
`cloudflared tunnel --url http://127.0.0.1:8080` — Δημιουργεί προσωρινό δημόσιο tunnel προς λειτουργική τοπική υπηρεσία.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Βασικές Εντολές Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-command-cheat-sheet.html
Βασικές Εντολές Termux
Χρησιμοποίησε τις βασικές εντολές Termux για πλοήγηση σε φακέλους, έλεγχο αρχείων, εγκατάσταση πακέτων και σωστή εκτέλεση Python scripts.
Σύντομη Απάντηση
Χρησιμοποίησε τις βασικές εντολές Termux για πλοήγηση σε φακέλους, έλεγχο αρχείων, εγκατάσταση πακέτων και σωστή εκτέλεση Python scripts.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CommandCheatSheet
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Διάβασε πρώτα το block, αντικατάστησε κάθε ενδεικτικό όνομα αρχείου ή φακέλου και εκτέλεσε μία γραμμή κάθε φορά από τη θέση που αναφέρει ο οδηγός.
Αντιγραφή εντολών
pwd ls -la cd folder_name mkdir new_folder cp file.txt copy.txt mv old.txt new.txt python script.py
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls -la` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΑσφαλής αντιγραφή και επικόλληση εντολώνΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ιστορικό Εντολών Και Aliases Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-command-history-and-aliases.html
Ιστορικό Εντολών Και Aliases Στο Termux
Αναζήτησε προηγούμενες εντολές, επανάλαβε με ασφάλεια συνηθισμένες εργασίες και δημιούργησε aliases μόνο για ακίνδυνες συντομεύσεις.
Σύντομη Απάντηση
Αναζήτησε προηγούμενες εντολές, επανάλαβε με ασφάλεια συνηθισμένες εργασίες και δημιούργησε aliases μόνο για ακίνδυνες συντομεύσεις.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
HistoryAliases
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
history | tail echo "alias ll='ls -la'" >> ~/.bashrc source ~/.bashrc ll
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Συνηθισμένοι Κωδικοί Εξόδου Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-common-exit-codes.html
Συνηθισμένοι Κωδικοί Εξόδου Στο Termux
Κατανόησε γιατί μια εντολή επιστρέφει μη μηδενικό κωδικό, πώς ελέγχεται το `$?` και πώς οι exit codes βοηθούν στον εντοπισμό σφαλμάτων.
Σύντομη Απάντηση
Κατανόησε γιατί μια εντολή επιστρέφει μη μηδενικό κωδικό, πώς ελέγχεται το `$?` και πώς οι exit codes βοηθούν στον εντοπισμό σφαλμάτων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
ExitCodes
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
python script.py echo $? command_that_might_fail || echo "command failed"
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ιδέες Για Χρήσιμα Scripts Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-cool-script-ideas.html
Ιδέες Για Χρήσιμα Scripts Στο Termux
Δες πρακτικές και ασφαλείς ιδέες για scripts χωρίς root, όπως οργάνωση αρχείων, offline σημειώσεις, αναζήτηση, έξοδα, backups και βοηθήματα τύπου DedSec.
Σύντομη Απάντηση
Δες πρακτικές και ασφαλείς ιδέες για scripts χωρίς root, όπως οργάνωση αρχείων, offline σημειώσεις, αναζήτηση, έξοδα, backups και βοηθήματα τύπου DedSec.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
UsefulNo-RootTermuxScript
Πριν Εκτελέσεις Οτιδήποτε
Όρισε έναν μικρό στόχο, τα inputs που δέχεται, τα αρχεία που γράφει και τον ασφαλή τρόπο εξόδου.
Κράτησε ρυθμίσεις, logs, παραγόμενο output και source code σε διαφορετικές διαδρομές.
Δημιούργησε πρώτα μια ελάχιστη λειτουργική έκδοση πριν προσθέσεις μενού, effects, δίκτυο ή αυτόματη εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Χρησιμοποίησε τα ενδεικτικά ονόματα μόνο σε δοκιμαστικό φάκελο. Έλεγξε τα παραγόμενα αρχεία πριν μεταφέρεις τη διαδικασία σε υπάρχον project.
Αντιγραφή εντολών
mkdir -p ~/TermuxIdeas/{notes,logs,exports} cat > ~/TermuxIdeas/ideas.txt < ~/MenuTool/config.json <&1 | tee debug.log tail -n 80 debug.log grep -i "error" debug.log
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Λήψη Αρχείων Με curl Και wget [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-download-with-curl-wget.html
Λήψη Αρχείων Με curl Και wget
Κατέβασε αρχεία με ασφάλεια, όρισε σωστό όνομα εξόδου, συνέχισε ένα διακοπέν download όπου γίνεται και απέφυγε τον λάθος φάκελο αποθήκευσης.
Σύντομη Απάντηση
Κατέβασε αρχεία με ασφάλεια, όρισε σωστό όνομα εξόδου, συνέχισε ένα διακοπέν download όπου γίνεται και απέφυγε τον λάθος φάκελο αποθήκευσης.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
curlwgetDownloads
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
pkg install curl wget -y cd /storage/emulated/0/Download curl -L -o file.zip "https://example.com/file.zip" wget -O file.zip "https://example.com/file.zip"
Τι Δείχνουν Οι Εντολές
`pkg install curl wget -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Επεξεργασία Αρχείων Με Το nano [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-edit-files-with-nano.html
Επεξεργασία Αρχείων Με Το nano
Μάθε να ανοίγεις, να αποθηκεύεις και να κλείνεις αρχεία με το nano, χωρίς να χαλάς τις εσοχές ενός Python script.
Σύντομη Απάντηση
Μάθε να ανοίγεις, να αποθηκεύεις και να κλείνεις αρχεία με το nano, χωρίς να χαλάς τις εσοχές ενός Python script.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
EditWithnano
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
cd ~/DedSec ls nano file_name.py # Save: CTRL + O, Enter # Exit: CTRL + X
Τι Δείχνουν Οι Εντολές
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Του «Bad Interpreter» Στο Bash [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-bash-bad-interpreter.html
Διόρθωση Του «Bad Interpreter» Στο Bash
Διόρθωσε «bad interpreter», ελλιπές `/bin/bash`, γραμμές CRLF, λάθος shebang και shell scripts από υπολογιστή που αποτυγχάνουν στο Android.
Σύντομη Απάντηση
Διόρθωσε «bad interpreter», ελλιπές `/bin/bash`, γραμμές CRLF, λάθος shebang και shell scripts από υπολογιστή που αποτυγχάνουν στο Android.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
bad interpreterNo such file or directory/bin/bash
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
head -n 1 script.sh sed -i "s|^#!/bin/bash|#!/usr/bin/env bash|" script.sh pkg install dos2unix -y dos2unix script.sh chmod +x script.sh ./script.sh
Τι Δείχνουν Οι Εντολές
`pkg install dos2unix -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`chmod +x script.sh` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εναλλακτικές Του Crontab Στο Android Και Το Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-crontab-alternatives.html
Εναλλακτικές Του Crontab Στο Android Και Το Termux
Κατανόησε γιατί το cron δεν είναι αξιόπιστο σε Android χωρίς root και χρησιμοποίησε ασφαλέστερες εναλλακτικές για υπενθυμίσεις, backups και ελέγχους.
Σύντομη Απάντηση
Κατανόησε γιατί το cron δεν είναι αξιόπιστο σε Android χωρίς root και χρησιμοποίησε ασφαλέστερες εναλλακτικές για υπενθυμίσεις, backups και ελέγχους.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CronAlternatives
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
while true; do date >> ~/termux-job.log # run your safe local command here sleep 3600 done
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Ελέγχου Ταυτότητας GitHub Με Token [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-git-auth-token-github.html
Διόρθωση Ελέγχου Ταυτότητας GitHub Με Token
Χρησιμοποίησε με ασφάλεια personal access token του GitHub όταν αποτυγχάνει η ταυτοποίηση με κωδικό, χωρίς να εκθέτεις το token σε εντολές ή δημόσια αρχεία.
Σύντομη Απάντηση
Χρησιμοποίησε με ασφάλεια personal access token του GitHub όταν αποτυγχάνει η ταυτοποίηση με κωδικό, χωρίς να εκθέτεις το token σε εντολές ή δημόσια αρχεία.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Authentication failedpassword authentication was removed403
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
git remote -v git push # username: your GitHub username # password: paste your token when prompted
Τι Δείχνουν Οι Εντολές
`git remote -v` — Εμφανίζει τα ρυθμισμένα URLs για fetch και push.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Αποτυχημένου Push Μεγάλων Αρχείων Στο Git [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-git-large-file-push.html
Διόρθωση Αποτυχημένου Push Μεγάλων Αρχείων Στο Git
Διόρθωσε αποτυχίες push που προκαλούνται από μεγάλα ZIP, PDF, βίντεο, φακέλους build, cache ή μεγάλα αρχεία που μπήκαν κατά λάθος σε commit.
Σύντομη Απάντηση
Διόρθωσε αποτυχίες push που προκαλούνται από μεγάλα ZIP, PDF, βίντεο, φακέλους build, cache ή μεγάλα αρχεία που μπήκαν κατά λάθος σε commit.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
GH001exceeds GitHub file size limitremote rejected
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Η προσθήκη μιας διαδρομής στο `.gitignore` δεν αφαιρεί αρχείο που έχει ήδη γίνει commit. Για παλαιότερα commits χρειάζεται επαληθευμένο backup και καθαρισμός ιστορικού, όπως με `git filter-repo`, ή χρήση Git LFS/Releases.
Αντιγραφή εντολών
find . -type f -size +50M -print git status --short git log --stat -n 3 # For a file in the latest unpushed commit: git rm --cached "PATH/TO/LARGE_FILE" git commit --amend --no-edit
Τι Δείχνουν Οι Εντολές
`find . -type f -size +50M -print` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
`git status --short` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`git rm --cached "PATH/TO/LARGE_FILE"` — Σταματά την παρακολούθηση μιας διαδρομής διατηρώντας το τοπικό αρχείο.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Γραμμών CRLF Από Windows [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-line-endings-windows-crlf.html
Διόρθωση Γραμμών CRLF Από Windows
Διόρθωσε «bad interpreter», παράξενα συντακτικά σφάλματα και αποτυχίες shell scripts που προκαλούνται από γραμμές Windows CRLF.
Σύντομη Απάντηση
Διόρθωσε «bad interpreter», παράξενα συντακτικά σφάλματα και αποτυχίες shell scripts που προκαλούνται από γραμμές Windows CRLF.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
bad interpreter^MCRLF
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
pkg install dos2unix -y dos2unix script.sh dos2unix script.py chmod +x script.sh ./script.sh
Τι Δείχνουν Οι Εντολές
`pkg install dos2unix -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`chmod +x script.sh` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εναλλακτικές Του PyInstaller Στο Android [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-pyinstaller-on-android-alternatives.html
Εναλλακτικές Του PyInstaller Στο Android
Μάθε γιατί το PyInstaller συχνά αποτυγχάνει στο Android και χρησιμοποίησε καλύτερους τρόπους για εκκίνηση, συσκευασία, ZIP και ασφαλή διανομή Python εργαλείων.
Σύντομη Απάντηση
Μάθε γιατί το PyInstaller συχνά αποτυγχάνει στο Android και χρησιμοποίησε καλύτερους τρόπους για εκκίνηση, συσκευασία, ZIP και ασφαλή διανομή Python εργαλείων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PyInstallerAlternatives
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
mkdir -p MyTool cp tool.py MyTool/ printf "pkg install python -y\npython tool.py\n" > MyTool/run.sh chmod +x MyTool/run.sh zip -r MyTool.zip MyTool
Τι Δείχνουν Οι Εντολές
`chmod +x MyTool/run.sh` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
`zip -r MyTool.zip MyTool` — Δημιουργεί ZIP archive από τα συγκεκριμένα αρχεία ή φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων Κωδικοποίησης Και Unicode Στην Python [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-python-encoding-unicode-errors.html
Διόρθωση Σφαλμάτων Κωδικοποίησης Και Unicode Στην Python
Διόρθωσε UnicodeDecodeError, UnicodeEncodeError, χαλασμένα ελληνικά, ειδικά σύμβολα και προβλήματα κωδικοποίησης αρχείων σε Python scripts.
Σύντομη Απάντηση
Διόρθωσε UnicodeDecodeError, UnicodeEncodeError, χαλασμένα ελληνικά, ειδικά σύμβολα και προβλήματα κωδικοποίησης αρχείων σε Python scripts.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PythonUnicodeErrors
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
python -c "from pathlib import Path; p=Path('test.txt'); p.write_text('Greek: καλημέρα', encoding='utf-8'); print(p.read_text(encoding='utf-8'))" python -m json.tool file.json > /dev/null
Τι Δείχνουν Οι Εντολές
`python -c "from pathlib import Path; p=Path('test.txt'); p.write_text('Greek: καλημέρα', encoding='utf-8');...` — Εκτελεί μια μικρή απομονωμένη δοκιμή Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων Requests, SSL Και API [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-requests-ssl-and-api-errors.html
Διόρθωση Σφαλμάτων Requests, SSL Και API
Διόρθωσε αποτυχίες της requests, timeouts API, σφάλματα πιστοποιητικών SSL, λανθασμένες JSON απαντήσεις και προβλήματα σύνδεσης σε scripts Termux.
Σύντομη Απάντηση
Διόρθωσε αποτυχίες της requests, timeouts API, σφάλματα πιστοποιητικών SSL, λανθασμένες JSON απαντήσεις και προβλήματα σύνδεσης σε scripts Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
requestsErrors
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
python -m pip install requests python -c "import requests; r=requests.get('https://api.github.com', timeout=15); print(r.status_code)"
Τι Δείχνουν Οι Εντολές
`python -m pip install requests` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
`python -c "import requests; r=requests.get('https://api.github.com', timeout=15); print(r.status_code)"` — Εκτελεί μια μικρή απομονωμένη δοκιμή Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Shebang Και `/Usr/Bin/Env Python` [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-shebang-env-python.html
Διόρθωση Shebang Και `/Usr/Bin/Env Python`
Διόρθωσε scripts με λάθος διαδρομή Python, ελλιπές env, shebang από υπολογιστή ή λανθασμένη απευθείας εκτέλεση στο Termux.
Σύντομη Απάντηση
Διόρθωσε scripts με λάθος διαδρομή Python, ελλιπές env, shebang από υπολογιστή ή λανθασμένη απευθείας εκτέλεση στο Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PythonShebang
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
which python head -n 1 script.py sed -i "1s|.*|#!/usr/bin/env python|" script.py chmod +x script.py ./script.py
Τι Δείχνουν Οι Εντολές
`chmod +x script.py` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Προβλημάτων Του Termux:API [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-fix-termux-api-not-working.html
Διόρθωση Προβλημάτων Του Termux:API
Ρύθμισε σωστά το Termux:API, διόρθωσε δικαιώματα ειδοποιήσεων στο Android 13+ και δοκίμασε εντολές clipboard, μπαταρίας και ειδοποιήσεων.
Σύντομη Απάντηση
Ρύθμισε σωστά το Termux:API, διόρθωσε δικαιώματα ειδοποιήσεων στο Android 13+ και δοκίμασε εντολές clipboard, μπαταρίας και ειδοποιήσεων.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
API_ERRORcommand not foundTermux:API app is not installed
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux και κάθε πρόσθετο προέρχονται από συμβατές πηγές και υπογραφές.
Έλεγξε δικαιώματα Android, περιορισμούς μπαταρίας και ρυθμίσεις ειδοποιήσεων για τη συγκεκριμένη λειτουργία.
Δοκίμασε μία εντολή ενσωμάτωσης Android απευθείας πριν τη βάλεις σε μεγαλύτερο script ή widget.
Εντολές Ελέγχου Ή Ρύθμισης
Το πακέτο εντολών δεν αρκεί: εγκατέστησε και το πρόσθετο Android Termux:API από συμβατή πηγή και με συμβατή υπογραφή, έπειτα παραχώρησε τα απαιτούμενα δικαιώματα.
Αντιγραφή εντολών
pkg install -y termux-api command -v termux-battery-status termux-battery-status termux-clipboard-get termux-notification --title "DedSec Test" --content "Termux:API works"
Τι Δείχνουν Οι Εντολές
`pkg install -y termux-api` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Η άμεση δοκιμή πρόσθετου, αποθήκευσης, widget ή παρασκηνίου επιστρέφει το αναμενόμενο αποτέλεσμα Android.
Η λειτουργία συνεχίζει να δουλεύει μετά το κλείσιμο και νέο άνοιγμα του Termux.
Η ρύθμιση δεν εξαρτάται από root ή δικαιώματα που το Android δεν μπορεί να δώσει σε κανονική εφαρμογή.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε τη συμβατότητα πηγής εφαρμογών και εγκατέστησε το απαιτούμενο πακέτο εντολών Termux.
Δώσε μόνο το δικαίωμα Android που απαιτεί η συγκεκριμένη εντολή.
Εκτέλεσε τη μικρότερη άμεση εντολή και έλεγξε το ακατέργαστο output.
Πρόσθεσέ την σε script, widget ή background workflow μόνο αφού λειτουργήσει η άμεση δοκιμή.
Συνηθισμένα Λάθη
Ανάμειξη Termux και προσθέτων από ασύμβατα stores ή πηγές υπογραφής.
Αντιμετώπιση του battery optimization σαν να είναι σφάλμα Python ή shell.
Προσδοκία ότι εφαρμογή χωρίς root θα προσπελάσει προστατευμένες περιοχές ή θα παρακάμψει όρια δικαιωμάτων Android.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Λίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματαΕπιδιόρθωση χαλασμένης εγκατάστασης του DedSec
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Εφαρμογής Flask Που Δεν Φορτώνει [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-flask-app-not-loading.html
Διόρθωση Εφαρμογής Flask Που Δεν Φορτώνει
Εντόπισε γιατί μια εφαρμογή Flask δεν φορτώνει, ελέγχοντας host, port, templates, static αρχεία, debug output και το URL του browser.
Σύντομη Απάντηση
Εντόπισε γιατί μια εφαρμογή Flask δεν φορτώνει, ελέγχοντας host, port, templates, static αρχεία, debug output και το URL του browser.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Connection refusedAddress already in useModuleNotFoundError: flask
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το ενδεικτικό port και τον φάκελο. Δοκίμασε πρώτα το τοπικό URL στο ίδιο κινητό πριν δημιουργήσεις διεύθυνση LAN ή δημόσιο tunnel.
Αντιγραφή εντολών
python app.py 2>&1 | tee flask.log # common Flask run line inside code: # app.run(host="127.0.0.1", port=5000, debug=True)
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Βασική Διαχείριση Branches Στο Git [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-git-branch-basics.html
Βασική Διαχείριση Branches Στο Git
Χρησιμοποίησε Git branches στο Android για να δοκιμάζεις αλλαγές χωρίς να καταστρέφεις το κύριο project ή την έκδοση που λειτουργεί.
Σύντομη Απάντηση
Χρησιμοποίησε Git branches στο Android για να δοκιμάζεις αλλαγές χωρίς να καταστρέφεις το κύριο project ή την έκδοση που λειτουργεί.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Branches
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
cd ~/DedSec git branch git switch -c test-change git status git switch main
Τι Δείχνουν Οι Εντολές
`git branch` — Εμφανίζει ή αλλάζει Git branches.
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Επίλυση Conflicts Μετά Από Git Pull [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-git-pull-conflicts.html
Επίλυση Conflicts Μετά Από Git Pull
Διαχειρίσου τοπικές αλλαγές, merge conflicts, stash και pull με ασφαλές backup πριν ενημερώσεις ένα GitHub project από το Termux.
Σύντομη Απάντηση
Διαχειρίσου τοπικές αλλαγές, merge conflicts, stash και pull με ασφαλές backup πριν ενημερώσεις ένα GitHub project από το Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CONFLICTcould not applyneeds merge
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Μετά το pull, το `git stash pop` μπορεί να δημιουργήσει νέες συγκρούσεις. Διόρθωσε τα αρχεία που αναφέρονται, κάνε stage τις αλλαγές και συνέχισε μόνο όταν το `git status` είναι καθαρό.
Αντιγραφή εντολών
cd ~/DedSec git status git stash push -u -m "backup before pull" git pull --rebase git stash pop git status
Τι Δείχνουν Οι Εντολές
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`git stash push -u -m "backup before pull"` — Αποθηκεύει προσωρινά τοπικές αλλαγές.
`git pull --rebase` — Κατεβάζει και ενσωματώνει remote commits.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ενημέρωση GitHub Pages Από Το Termux Χωρίς Προβλήματα [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-github-pages-update-workflow.html
Ενημέρωση GitHub Pages Από Το Termux Χωρίς Προβλήματα
Ακολούθησε καθαρή ροή εργασίας από κινητό για επεξεργασία στατικής ιστοσελίδας, έλεγχο συνδέσμων, commit και ασφαλές push στο GitHub Pages.
Σύντομη Απάντηση
Ακολούθησε καθαρή ροή εργασίας από κινητό για επεξεργασία στατικής ιστοσελίδας, έλεγχο συνδέσμων, commit και ασφαλές push στο GitHub Pages.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
UpdateGitHubPagesFrom
Πριν Εκτελέσεις Οτιδήποτε
Εκτέλεσε `git status`, `git branch --show-current` και `git remote -v` μέσα στο σωστό repository.
Κράτησε backup των μη καταχωρισμένων αλλαγών πριν από rebase, amend, reset ή αλλαγή ιστορικού.
Αφαίρεσε tokens, ιδιωτικά κλειδιά και προσωπικές διαδρομές από output που θα κοινοποιήσεις.
Εντολές Ελέγχου Ή Ρύθμισης
Εκτέλεσε αυτές τις εντολές μόνο μέσα στο σωστό repository. Έλεγξε το `git status` πριν από κάθε εντολή που αλλάζει tracked αρχεία ή ιστορικό.
Αντιγραφή εντολών
git status git add -A git commit -m "Update site" || echo "No changes" git push python -m http.server 8080
Τι Δείχνουν Οι Εντολές
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`python -m http.server 8080` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Το `git status` εμφανίζει το αναμενόμενο branch χωρίς άλυτα conflicts.
Το remote δείχνει στο σωστό repository και η ταυτοποίηση πετυχαίνει χωρίς έκθεση στοιχείων σύνδεσης.
Το push περιέχει μόνο τα αρχεία που περίμενες.
Ασφαλή Επόμενα Βήματα
Επιβεβαίωσε repository, branch, remote και κατάσταση του working tree.
Χρησιμοποίησε τη λιγότερο καταστροφική ενέργεια που λύνει το ακριβές μήνυμα του Git.
Έλεγξε diff και staged αρχεία πριν από commit ή push.
Επαλήθευσε το αποτέλεσμα στο GitHub μετά την ολοκλήρωση του push.
Συνηθισμένα Λάθη
Εκτέλεση εντολών Git έναν φάκελο πάνω ή κάτω από το σωστό repository.
Χρήση force push, reset ή αλλαγής ιστορικού χωρίς επαληθευμένο backup.
Τοποθέτηση access tokens σε εντολές, screenshots, README ή δημόσια logs.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Επεξεργασία HTML, CSS Και JavaScript Από Κινητό [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-html-css-js-editing-from-phone.html
Επεξεργασία HTML, CSS Και JavaScript Από Κινητό
Επεξεργάσου HTML, CSS και JavaScript από κινητό, απέφυγε χαλασμένα styles και buttons και δοκίμασε τις σελίδες πριν το deploy στο GitHub Pages.
Σύντομη Απάντηση
Επεξεργάσου HTML, CSS και JavaScript από κινητό, απέφυγε χαλασμένα styles και buttons και δοκίμασε τις σελίδες πριν το deploy στο GitHub Pages.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
EditFiles
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
python -m http.server 8080 # open http://127.0.0.1:8080 find . -name "*.html" | wc -l
Τι Δείχνουν Οι Εντολές
`python -m http.server 8080` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
`find . -name "*.html" | wc -l` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εγκατάσταση Συνηθισμένων Βιβλιοθηκών Python [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-install-common-python-libraries.html
Εγκατάσταση Συνηθισμένων Βιβλιοθηκών Python
Εγκατέστησε κοινές βιβλιοθήκες Python με ασφαλή σειρά και αναγνώρισε πότε ένα πακέτο χρειάζεται πρώτα εξαρτήσεις συστήματος του Termux.
Σύντομη Απάντηση
Εγκατέστησε κοινές βιβλιοθήκες Python με ασφαλή σειρά και αναγνώρισε πότε ένα πακέτο χρειάζεται πρώτα εξαρτήσεις συστήματος του Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
InstallCommonPythonLibraries
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Εγκατέστησε εργαλεία μεταγλώττισης του συστήματος μόνο όταν ένα πακέτο χρειάζεται compilation. Μην αναβαθμίζεις το ίδιο το pip μέσα από το pip στο Termux.
Αντιγραφή εντολών
pkg update -y pkg install -y python python-pip clang make pkg-config python -m pip install --upgrade setuptools wheel python -m pip install requests beautifulsoup4 flask rich
Τι Δείχνουν Οι Εντολές
`pkg update -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`pkg install -y python python-pip clang make pkg-config` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`python -m pip install --upgrade setuptools wheel` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εγκατάσταση Termux Και Πρώτη Ρύθμιση [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-install-source-and-first-setup.html
Εγκατάσταση Termux Και Πρώτη Ρύθμιση
Κάνε σωστή πρώτη ρύθμιση του Termux με πρόσβαση αποθήκευσης, ενημέρωση πακέτων, βασικά εργαλεία και ασφαλείς φακέλους πριν τρέξεις το DedSec.
Σύντομη Απάντηση
Κάνε σωστή πρώτη ρύθμιση του Termux με πρόσβαση αποθήκευσης, ενημέρωση πακέτων, βασικά εργαλεία και ασφαλείς φακέλους πριν τρέξεις το DedSec.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
FirstTermuxSetup
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Διάβασε πρώτα το block, αντικατάστησε κάθε ενδεικτικό όνομα αρχείου ή φακέλου και εκτέλεσε μία γραμμή κάθε φορά από τη θέση που αναφέρει ο οδηγός.
Αντιγραφή εντολών
pkg update && pkg upgrade -y termux-setup-storage pkg install python git unzip curl wget nano -y mkdir -p ~/DedSec ~/Downloads_Backups
Τι Δείχνουν Οι Εντολές
`pkg update && pkg upgrade -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`termux-setup-storage` — Ζητά πρόσβαση στον κοινόχρηστο χώρο και δημιουργεί συντομεύσεις Termux.
`pkg install python git unzip curl wget nano -y` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του «Permission denied» σε εκτελέσιμα αρχείαΔημιουργία εργαλείου σε ύφος DedSecΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων Σε Αρχεία JSON [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-json-file-errors.html
Διόρθωση Σφαλμάτων Σε Αρχεία JSON
Έλεγξε JSON αρχεία και βρες ελλιπή κόμματα, χαλασμένα εισαγωγικά, άκυρους χαρακτήρες και κατεστραμμένο περιεχόμενο από Android editors.
Σύντομη Απάντηση
Έλεγξε JSON αρχεία και βρες ελλιπή κόμματα, χαλασμένα εισαγωγικά, άκυρους χαρακτήρες και κατεστραμμένο περιεχόμενο από Android editors.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
JSONDecodeErrorExpecting valueExtra data
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
python -m json.tool data.json > /tmp/checked.json python - <<'PY' import json json.load(open("data.json", encoding="utf-8")) print("JSON OK") PY
Τι Δείχνουν Οι Εντολές
`python - <<'PY'` — Εκτελεί ενσωματωμένο διαγνωστικό κώδικα Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του «Port already in use» στο TermuxΟ τοπικός server δεν ανοίγει στο AndroidΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εκμάθηση Python Δημιουργώντας Πρακτικά Εργαλεία [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-learn-python-by-building-tools.html
Εκμάθηση Python Δημιουργώντας Πρακτικά Εργαλεία
Μάθε Python στο Android δημιουργώντας μικρά χρήσιμα εργαλεία για μενού, αρχεία, σημειώσεις, backups, logs, τοπικές σελίδες και ρυθμίσεις JSON.
Σύντομη Απάντηση
Μάθε Python στο Android δημιουργώντας μικρά χρήσιμα εργαλεία για μενού, αρχεία, σημειώσεις, backups, logs, τοπικές σελίδες και ρυθμίσεις JSON.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
LearnPythonBuilding
Πριν Εκτελέσεις Οτιδήποτε
Όρισε έναν μικρό στόχο, τα inputs που δέχεται, τα αρχεία που γράφει και τον ασφαλή τρόπο εξόδου.
Κράτησε ρυθμίσεις, logs, παραγόμενο output και source code σε διαφορετικές διαδρομές.
Δημιούργησε πρώτα μια ελάχιστη λειτουργική έκδοση πριν προσθέσεις μενού, effects, δίκτυο ή αυτόματη εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Χρησιμοποίησε τα ενδεικτικά ονόματα μόνο σε δοκιμαστικό φάκελο. Έλεγξε τα παραγόμενα αρχεία πριν μεταφέρεις τη διαδικασία σε υπάρχον project.
Αντιγραφή εντολών
python -c "name=input('Tool name: '); print(f'Building {name} from Termux')"
Τι Δείχνουν Οι Εντολές
`python -c "name=input('Tool name: '); print(f'Building {name} from Termux')"` — Εκτελεί μια μικρή απομονωμένη δοκιμή Python.
Πώς Φαίνεται Ότι Λύθηκε
Η μικρότερη έκδοση ολοκληρώνει την κύρια εργασία και χειρίζεται άκυρο input χωρίς crash.
Τα παραγόμενα αρχεία αποθηκεύονται σε τεκμηριωμένες διαδρομές και αφαιρούνται ή επαναφέρονται με ασφάλεια.
Νέος χρήστης μπορεί να τρέξει το project ακολουθώντας το README χωρίς να μαντεύει κρυφά βήματα.
Ασφαλή Επόμενα Βήματα
Γράψε πρώτα τη μικρότερη συνάρτηση ή εντολή που μπορεί να δοκιμαστεί.
Έλεγξε paths και input πριν από ανάγνωση, εγγραφή, μετακίνηση ή διαγραφή αρχείων.
Πρόσθεσε logs και καθαρά μηνύματα σφάλματος πριν από οπτικές βελτιώσεις.
Τεκμηρίωσε εγκατάσταση, χρήση, παραγόμενα αρχεία, περιορισμούς και βήματα επαναφοράς.
Συνηθισμένα Λάθη
Συνδυασμός όλων των λειτουργιών σε ένα αδοκίμαστο block πριν δουλέψει ο βασικός στόχος.
Εγγραφή αρχείων σε απρόβλεπτους φακέλους ή σιωπηλή αντικατάσταση δεδομένων χρήστη.
Απόκρυψη αποτυχιών με γενικό exception handling χωρίς χρήσιμο μήνυμα ή log.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διαδρομή Εκμάθησης Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-learning-roadmap.html
Διαδρομή Εκμάθησης Termux
Ακολούθησε ξεκάθαρη σειρά μάθησης για Termux, βασικές εντολές Linux, Python, GitHub, τοπικές ιστοσελίδες, backups και εργαλεία του DedSec.
Σύντομη Απάντηση
Ακολούθησε ξεκάθαρη σειρά μάθησης για Termux, βασικές εντολές Linux, Python, GitHub, τοπικές ιστοσελίδες, backups και εργαλεία του DedSec.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
LearningRoadmap
Πριν Εκτελέσεις Οτιδήποτε
Όρισε έναν μικρό στόχο, τα inputs που δέχεται, τα αρχεία που γράφει και τον ασφαλή τρόπο εξόδου.
Κράτησε ρυθμίσεις, logs, παραγόμενο output και source code σε διαφορετικές διαδρομές.
Δημιούργησε πρώτα μια ελάχιστη λειτουργική έκδοση πριν προσθέσεις μενού, effects, δίκτυο ή αυτόματη εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Χρησιμοποίησε τα ενδεικτικά ονόματα μόνο σε δοκιμαστικό φάκελο. Έλεγξε τα παραγόμενα αρχεία πριν μεταφέρεις τη διαδικασία σε υπάρχον project.
Αντιγραφή εντολών
mkdir -p ~/Learning-Termux echo "Day 1: pwd ls cd mkdir" > ~/Learning-Termux/roadmap.txt cat ~/Learning-Termux/roadmap.txt
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η μικρότερη έκδοση ολοκληρώνει την κύρια εργασία και χειρίζεται άκυρο input χωρίς crash.
Τα παραγόμενα αρχεία αποθηκεύονται σε τεκμηριωμένες διαδρομές και αφαιρούνται ή επαναφέρονται με ασφάλεια.
Νέος χρήστης μπορεί να τρέξει το project ακολουθώντας το README χωρίς να μαντεύει κρυφά βήματα.
Ασφαλή Επόμενα Βήματα
Γράψε πρώτα τη μικρότερη συνάρτηση ή εντολή που μπορεί να δοκιμαστεί.
Έλεγξε paths και input πριν από ανάγνωση, εγγραφή, μετακίνηση ή διαγραφή αρχείων.
Πρόσθεσε logs και καθαρά μηνύματα σφάλματος πριν από οπτικές βελτιώσεις.
Τεκμηρίωσε εγκατάσταση, χρήση, παραγόμενα αρχεία, περιορισμούς και βήματα επαναφοράς.
Συνηθισμένα Λάθη
Συνδυασμός όλων των λειτουργιών σε ένα αδοκίμαστο block πριν δουλέψει ο βασικός στόχος.
Εγγραφή αρχείων σε απρόβλεπτους φακέλους ή σιωπηλή αντικατάσταση δεδομένων χρήστη.
Απόκρυψη αποτυχιών με γενικό exception handling χωρίς χρήσιμο μήνυμα ή log.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση Termux και πρώτη ρύθμισηΔιόρθωση του «Permission denied» σε εκτελέσιμα αρχείαΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Τοπική Ιστοσελίδα Με Python Server [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-local-website-python-server.html
Τοπική Ιστοσελίδα Με Python Server
Εκτέλεσε μια τοπική ιστοσελίδα, dashboard ή Python server από το Termux και απέφυγε συνηθισμένα λάθη σε ports, paths και URLs του Android.
Σύντομη Απάντηση
Εκτέλεσε μια τοπική ιστοσελίδα, dashboard ή Python server από το Termux και απέφυγε συνηθισμένα λάθη σε ports, paths και URLs του Android.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CreateLocalWebsiteDashboard
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το ενδεικτικό port και τον φάκελο. Δοκίμασε πρώτα το τοπικό URL στο ίδιο κινητό πριν δημιουργήσεις διεύθυνση LAN ή δημόσιο tunnel.
Αντιγραφή εντολών
mkdir -p ~/LocalSite && cd ~/LocalSite echo "
DedSec Local Test
" > index.html python -m http.server 8080 --bind 127.0.0.1
Τι Δείχνουν Οι Εντολές
`python -m http.server 8080 --bind 127.0.0.1` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Βελτίωση Απόδοσης Σε Οικονομικά Κινητά [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-low-end-phone-performance-tips.html
Βελτίωση Απόδοσης Σε Οικονομικά Κινητά
Κάνε το Termux ομαλότερο σε κινητά με λίγη RAM, αποφεύγοντας βαριά builds, περιορίζοντας ατέρμονες διεργασίες και κρατώντας καθαρό τον χώρο.
Σύντομη Απάντηση
Κάνε το Termux ομαλότερο σε κινητά με λίγη RAM, αποφεύγοντας βαριά builds, περιορίζοντας ατέρμονες διεργασίες και κρατώντας καθαρό τον χώρο.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PerformanceTips
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
df -h du -h -d 1 ~ | sort -h ps aux | head apt clean
Τι Δείχνουν Οι Εντολές
`df -h` — Εμφανίζει τον ελεύθερο και χρησιμοποιημένο χώρο.
`du -h -d 1 ~ | sort -h` — Μετρά μεγέθη αρχείων ή φακέλων πριν από καθαρισμό.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διαχείριση Μεγάλων Έργων Από Κινητό [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-manage-large-projects-on-phone.html
Διαχείριση Μεγάλων Έργων Από Κινητό
Κράτησε μεγάλα projects που φτιάχνονται από κινητό οργανωμένα με φακέλους, changelog, TODO, backups, εντολές δοκιμών και απλά release ZIPs.
Σύντομη Απάντηση
Κράτησε μεγάλα projects που φτιάχνονται από κινητό οργανωμένα με φακέλους, changelog, TODO, backups, εντολές δοκιμών και απλά release ZIPs.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
LargeProjectsPhone
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
touch README.md TODO.md CHANGELOG.md find . -maxdepth 2 -type f | sort > FILES.txt git status
Τι Δείχνουν Οι Εντολές
`find . -maxdepth 2 -type f | sort > FILES.txt` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Τι Μπορεί Και Τι Δεν Μπορεί Να Κάνει Το Termux Χωρίς Root [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-no-root-limitations.html
Τι Μπορεί Και Τι Δεν Μπορεί Να Κάνει Το Termux Χωρίς Root
Κατανόησε τα πραγματικά όρια του Android χωρίς root ώστε να δημιουργείς εργαλεία που λειτουργούν αξιόπιστα αντί να συγκρούονται με το λειτουργικό σύστημα.
Σύντομη Απάντηση
Κατανόησε τα πραγματικά όρια του Android χωρίς root ώστε να δημιουργείς εργαλεία που λειτουργούν αξιόπιστα αντί να συγκρούονται με το λειτουργικό σύστημα.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
RootLimits
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux και κάθε πρόσθετο προέρχονται από συμβατές πηγές και υπογραφές.
Έλεγξε δικαιώματα Android, περιορισμούς μπαταρίας και ρυθμίσεις ειδοποιήσεων για τη συγκεκριμένη λειτουργία.
Δοκίμασε μία εντολή ενσωμάτωσης Android απευθείας πριν τη βάλεις σε μεγαλύτερο script ή widget.
Εντολές Ελέγχου Ή Ρύθμισης
Μια γραμμή που αρχίζει με `#` είναι σχόλιο του shell και όχι διαγνωστική εντολή. Το παράδειγμα πλέον εμφανίζει τον περιορισμό ως πραγματικό αποτέλεσμα.
Αντιγραφή εντολών
whoami id termux-info printf '%s\n' "Use user-level files, shared storage, local servers, and Android-approved APIs."
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η άμεση δοκιμή πρόσθετου, αποθήκευσης, widget ή παρασκηνίου επιστρέφει το αναμενόμενο αποτέλεσμα Android.
Η λειτουργία συνεχίζει να δουλεύει μετά το κλείσιμο και νέο άνοιγμα του Termux.
Η ρύθμιση δεν εξαρτάται από root ή δικαιώματα που το Android δεν μπορεί να δώσει σε κανονική εφαρμογή.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε τη συμβατότητα πηγής εφαρμογών και εγκατέστησε το απαιτούμενο πακέτο εντολών Termux.
Δώσε μόνο το δικαίωμα Android που απαιτεί η συγκεκριμένη εντολή.
Εκτέλεσε τη μικρότερη άμεση εντολή και έλεγξε το ακατέργαστο output.
Πρόσθεσέ την σε script, widget ή background workflow μόνο αφού λειτουργήσει η άμεση δοκιμή.
Συνηθισμένα Λάθη
Ανάμειξη Termux και προσθέτων από ασύμβατα stores ή πηγές υπογραφής.
Αντιμετώπιση του battery optimization σαν να είναι σφάλμα Python ή shell.
Προσδοκία ότι εφαρμογή χωρίς root θα προσπελάσει προστατευμένες περιοχές ή θα παρακάμψει όρια δικαιωμάτων Android.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Ασφαλής αποθήκευση API keys σε αρχείο `.env`Λίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Δημιουργία Φακέλου Τεκμηρίωσης Για Χρήση Εκτός Σύνδεσης [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-offline-documentation-folder.html
Δημιουργία Φακέλου Τεκμηρίωσης Για Χρήση Εκτός Σύνδεσης
Οργάνωσε τοπικούς οδηγούς, εντολές, σημειώσεις, PDF και οδηγίες έργων ώστε να μπορείς να δουλεύεις ακόμη και χωρίς σύνδεση στο διαδίκτυο.
Σύντομη Απάντηση
Οργάνωσε τοπικούς οδηγούς, εντολές, σημειώσεις, PDF και οδηγίες έργων ώστε να μπορείς να δουλεύεις ακόμη και χωρίς σύνδεση στο διαδίκτυο.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
OfflineDocs
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
mkdir -p ~/OfflineDocs/{Termux,DedSec,Python,Errors} nano ~/OfflineDocs/Termux/commands.txt cp ~/OfflineDocs/Termux/commands.txt /storage/emulated/0/Download/
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση «Εντολή Not Found» Και Ελλιπών Πακέτων [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-package-command-not-found.html
Διόρθωση «Εντολή Not Found» Και Ελλιπών Πακέτων
Εξακρίβωσε αν λείπει μια εντολή, αν το όνομα του πακέτου είναι λάθος ή αν χρειάζεται επισκευή το ευρετήριο αποθετηρίων του Termux.
Σύντομη Απάντηση
Εξακρίβωσε αν λείπει μια εντολή, αν το όνομα του πακέτου είναι λάθος ή αν χρειάζεται επισκευή το ευρετήριο αποθετηρίων του Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
CommandFoundCannotLocate
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
pkg update -y command -v git || pkg install -y git command -v python || pkg install -y python pkg search PACKAGE_NAME
Τι Δείχνουν Οι Εντολές
`pkg update -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων αποθετηρίων, mirrors, GPG και aptΔιόρθωση κλειδώματος dpkg/apt στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Πρακτική Διαδικασία Προγραμματισμού Από Κινητό [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-phone-coding-workflow.html
Πρακτική Διαδικασία Προγραμματισμού Από Κινητό
Ακολούθησε πρακτική ροή εργασίας αποκλειστικά από Android για scripts, ιστοσελίδες, τοπικούς servers, GitHub commits και αξιόπιστα backups.
Σύντομη Απάντηση
Ακολούθησε πρακτική ροή εργασίας αποκλειστικά από Android για scripts, ιστοσελίδες, τοπικούς servers, GitHub commits και αξιόπιστα backups.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PhoneCodingWorkflow
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
mkdir -p ~/Projects ~/Backups /storage/emulated/0/Download/TermuxExports cd ~/Projects ls
Τι Δείχνουν Οι Εντολές
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Καθαρή Δομή Φακέλων Για Έργα Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-project-folder-structure.html
Καθαρή Δομή Φακέλων Για Έργα Στο Termux
Οργάνωσε scripts, δεδομένα, backups, logs, ρυθμίσεις, outputs και αρχεία ιστοσελίδας ώστε τα projects να παραμένουν καθαρά και εύκολα στην ενημέρωση.
Σύντομη Απάντηση
Οργάνωσε scripts, δεδομένα, backups, logs, ρυθμίσεις, outputs και αρχεία ιστοσελίδας ώστε τα projects να παραμένουν καθαρά και εύκολα στην ενημέρωση.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
ProjectFolderStructure
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
mkdir -p ~/MyProject/{Scripts,Data,Logs,Exports,Backups} touch ~/MyProject/README.md find ~/MyProject -maxdepth 2 -type d
Τι Δείχνουν Οι Εντολές
`find ~/MyProject -maxdepth 2 -type d` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Μεθοδικός Εντοπισμός Σφαλμάτων Python [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-python-error-debugging-roadmap.html
Μεθοδικός Εντοπισμός Σφαλμάτων Python
Ακολούθησε σωστή σειρά debugging για Python στο Termux: σύνταξη, paths, modules, δικαιώματα, κωδικοποίηση, APIs, logs και καθαρές επανεκτελέσεις.
Σύντομη Απάντηση
Ακολούθησε σωστή σειρά debugging για Python στο Termux: σύνταξη, paths, modules, δικαιώματα, κωδικοποίηση, APIs, logs και καθαρές επανεκτελέσεις.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PythonDebugRoadmap
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε τα placeholders πριν εκτελέσεις μια γραμμή. Χρησιμοποίησε ονόματα πακέτων Termux και σταμάτησε στο πρώτο σφάλμα αντί να επαναλάβεις όλο το block.
Αντιγραφή εντολών
python -m py_compile script.py pwd ls python script.py 2>&1 | tee error.log
Τι Δείχνουν Οι Εντολές
`python -m py_compile script.py` — Ελέγχει τη σύνταξη Python χωρίς να ξεκινήσει ολόκληρο το πρόγραμμα.
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Εικονικό Περιβάλλον Python Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-python-virtual-environment.html
Εικονικό Περιβάλλον Python Στο Termux
Χρησιμοποίησε venv όταν διαφορετικά projects χρειάζονται διαφορετικές βιβλιοθήκες Python και απέφυγε την ανάμειξη εργαλείων DedSec με πειράματα.
Σύντομη Απάντηση
Χρησιμοποίησε venv όταν διαφορετικά projects χρειάζονται διαφορετικές βιβλιοθήκες Python και απέφυγε την ανάμειξη εργαλείων DedSec με πειράματα.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PythonVirtualEnvironmentsTermux
Πριν Εκτελέσεις Οτιδήποτε
Αντέγραψε ολόκληρο το σφάλμα, μαζί με το πρώτο πακέτο, αρχείο, module ή αριθμό γραμμής που αναφέρει.
Κατέγραψε το `termux-info`, την ενεργή έκδοση του runtime και τον τρέχοντα φάκελο πριν αλλάξεις εξαρτήσεις.
Μη διαγράφεις locks του διαχειριστή πακέτων και μην αναβαθμίζεις το ίδιο το pip μέσω pip στο Termux.
Εντολές Ελέγχου Ή Ρύθμισης
Το virtual environment απομονώνει τις βιβλιοθήκες του έργου, αλλά η βασική Python και το πακέτο pip εξακολουθούν να παρέχονται από το Termux.
Αντιγραφή εντολών
pkg install -y python python-pip python -m venv ~/venvs/project1 source ~/venvs/project1/bin/activate python -m pip install --upgrade setuptools wheel python -m pip install requests python -c "import requests; print(requests.__version__)"
Τι Δείχνουν Οι Εντολές
`pkg install -y python python-pip` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`python -m venv ~/venvs/project1` — Δημιουργεί απομονωμένο περιβάλλον Python για ένα project.
`python -m pip install --upgrade setuptools wheel` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
`python -c "import requests; print(requests.__version__)"` — Εκτελεί μια μικρή απομονωμένη δοκιμή Python.
Πώς Φαίνεται Ότι Λύθηκε
Η ελάχιστη δοκιμή έκδοσης, import, σύνταξης, διαδρομής ή πακέτου ολοκληρώνεται επιτυχώς.
Η αρχική εντολή πλέον ολοκληρώνεται ή σταματά αργότερα για διαφορετικό και σαφώς αναγνωρισμένο λόγο.
Δεν παραμένει διακοπείσα ρύθμιση πακέτων σε εκκρεμότητα.
Ασφαλή Επόμενα Βήματα
Επισκεύασε ή ενημέρωσε πρώτα το επίπεδο πακέτων του Termux.
Επιβεβαίωσε ότι ο interpreter και το εργαλείο πακέτων ανήκουν στην ίδια εγκατάσταση.
Εγκατέστησε την εξάρτηση συστήματος που λείπει πριν επαναλάβεις build Python ή Node.
Κάνε νέα δοκιμή με εντολή έκδοσης, import, compile ή αρχείου πριν τρέξεις ολόκληρο το script.
Συνηθισμένα Λάθη
Χρήση `sudo`, ονομάτων πακέτων Ubuntu ή διαδρομών υπολογιστή σε κανονικό Termux.
Υπόθεση ότι το όνομα import είναι πάντα ίδιο με το όνομα διανομής στο PyPI.
Διαγραφή cache, environments ή lock files πριν αποθηκευτούν το ακριβές σφάλμα και οι εκδόσεις.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση του ModuleNotFoundError στην PythonΔιόρθωση σφαλμάτων pip στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Σωστή Εκτέλεση Python Script Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-run-python-script-correctly.html
Σωστή Εκτέλεση Python Script Στο Termux
Μάθε τη σωστή σειρά για είσοδο στον φάκελο, έλεγχο αρχείων, εγκατάσταση εξαρτήσεων και εκτέλεση ενός Python script στο Termux.
Σύντομη Απάντηση
Μάθε τη σωστή σειρά για είσοδο στον φάκελο, έλεγχο αρχείων, εγκατάσταση εξαρτήσεων και εκτέλεση ενός Python script στο Termux.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
PythonScripts
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Διάβασε πρώτα το block, αντικατάστησε κάθε ενδεικτικό όνομα αρχείου ή φακέλου και εκτέλεσε μία γραμμή κάθε φορά από τη θέση που αναφέρει ο οδηγός.
Αντιγραφή εντολών
cd ~/DedSec pwd ls python --version python script_name.py
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΑποσυμπίεση ZIP αρχείων στο TermuxΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ασφαλείς Ιδέες Αυτοματοποίησης Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-safe-automation-ideas.html
Ασφαλείς Ιδέες Αυτοματοποίησης Στο Termux
Δες χρήσιμες ιδέες αυτοματοποίησης χωρίς root για backups, υπενθυμίσεις, logs, καθαρισμό, τοπικούς ελέγχους και προσωπικές ροές εργασίας.
Σύντομη Απάντηση
Δες χρήσιμες ιδέες αυτοματοποίησης χωρίς root για backups, υπενθυμίσεις, logs, καθαρισμό, τοπικούς ελέγχους και προσωπικές ροές εργασίας.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
SafeAutomation
Πριν Εκτελέσεις Οτιδήποτε
Όρισε έναν μικρό στόχο, τα inputs που δέχεται, τα αρχεία που γράφει και τον ασφαλή τρόπο εξόδου.
Κράτησε ρυθμίσεις, logs, παραγόμενο output και source code σε διαφορετικές διαδρομές.
Δημιούργησε πρώτα μια ελάχιστη λειτουργική έκδοση πριν προσθέσεις μενού, effects, δίκτυο ή αυτόματη εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Χρησιμοποίησε τα ενδεικτικά ονόματα μόνο σε δοκιμαστικό φάκελο. Έλεγξε τα παραγόμενα αρχεία πριν μεταφέρεις τη διαδικασία σε υπάρχον project.
Αντιγραφή εντολών
mkdir -p ~/Automation-Logs date >> ~/Automation-Logs/daily.log df -h >> ~/Automation-Logs/daily.log cat ~/Automation-Logs/daily.log
Τι Δείχνουν Οι Εντολές
`df -h >> ~/Automation-Logs/daily.log` — Εμφανίζει τον ελεύθερο και χρησιμοποιημένο χώρο.
Πώς Φαίνεται Ότι Λύθηκε
Η μικρότερη έκδοση ολοκληρώνει την κύρια εργασία και χειρίζεται άκυρο input χωρίς crash.
Τα παραγόμενα αρχεία αποθηκεύονται σε τεκμηριωμένες διαδρομές και αφαιρούνται ή επαναφέρονται με ασφάλεια.
Νέος χρήστης μπορεί να τρέξει το project ακολουθώντας το README χωρίς να μαντεύει κρυφά βήματα.
Ασφαλή Επόμενα Βήματα
Γράψε πρώτα τη μικρότερη συνάρτηση ή εντολή που μπορεί να δοκιμαστεί.
Έλεγξε paths και input πριν από ανάγνωση, εγγραφή, μετακίνηση ή διαγραφή αρχείων.
Πρόσθεσε logs και καθαρά μηνύματα σφάλματος πριν από οπτικές βελτιώσεις.
Τεκμηρίωσε εγκατάσταση, χρήση, παραγόμενα αρχεία, περιορισμούς και βήματα επαναφοράς.
Συνηθισμένα Λάθη
Συνδυασμός όλων των λειτουργιών σε ένα αδοκίμαστο block πριν δουλέψει ο βασικός στόχος.
Εγγραφή αρχείων σε απρόβλεπτους φακέλους ή σιωπηλή αντικατάσταση δεδομένων χρήστη.
Απόκρυψη αποτυχιών με γενικό exception handling χωρίς χρήσιμο μήνυμα ή log.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ασφαλής Αντιγραφή Και Επικόλληση Εντολών [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-safe-copy-paste.html
Ασφαλής Αντιγραφή Και Επικόλληση Εντολών
Απέφυγε σπασμένες εντολές, αόρατους χαρακτήρες, λάθος εισαγωγικά, προβληματικές αλλαγές γραμμής και επικίνδυνα λάθη κατά την επικόλληση.
Σύντομη Απάντηση
Απέφυγε σπασμένες εντολές, αόρατους χαρακτήρες, λάθος εισαγωγικά, προβληματικές αλλαγές γραμμής και επικίνδυνα λάθη κατά την επικόλληση.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
SafeCopyPaste
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Διάβασε πρώτα το block, αντικατάστησε κάθε ενδεικτικό όνομα αρχείου ή φακέλου και εκτέλεσε μία γραμμή κάθε φορά από τη θέση που αναφέρει ο οδηγός.
Αντιγραφή εντολών
pwd echo "Current folder: $(pwd)" echo "File path: /storage/emulated/0/Download/My File.zip"
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ασφαλής Διαδικασία Ενημέρωσης Του Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-safe-update-routine.html
Ασφαλής Διαδικασία Ενημέρωσης Του Termux
Χρησιμοποίησε εβδομαδιαία ρουτίνα για ενημέρωση πακέτων, backup έργων, έλεγχο Git, καθαρισμό cache και προστασία εργαλείων που ήδη λειτουργούν.
Σύντομη Απάντηση
Χρησιμοποίησε εβδομαδιαία ρουτίνα για ενημέρωση πακέτων, backup έργων, έλεγχο Git, καθαρισμό cache και προστασία εργαλείων που ήδη λειτουργούν.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
SafeUpdateRoutine
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
date git status pkg update && pkg upgrade -y python -m py_compile script.py
Τι Δείχνουν Οι Εντολές
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`pkg update && pkg upgrade -y` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`python -m py_compile script.py` — Ελέγχει τη σύνταξη Python χωρίς να ξεκινήσει ολόκληρο το πρόγραμμα.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ασφαλής Αποθήκευση API Keys Σε Αρχείο `.Env` [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-secure-api-keys-env-file.html
Ασφαλής Αποθήκευση API Keys Σε Αρχείο `.Env`
Κράτησε API keys έξω από δημόσια GitHub commits με τοπικά αρχεία περιβάλλοντος, σωστά δικαιώματα chmod και κανόνες `.gitignore`.
Σύντομη Απάντηση
Κράτησε API keys έξω από δημόσια GitHub commits με τοπικά αρχεία περιβάλλοντος, σωστά δικαιώματα chmod και κανόνες `.gitignore`.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
KeysSafely
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
printf "API_KEY=put_key_here\n" > .env chmod 600 .env printf ".env\n" >> .gitignore git status
Τι Δείχνουν Οι Εντολές
`chmod 600 .env` — Αλλάζει δικαιώματα εκτέλεσης ή πρόσβασης.
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Τι μπορεί και τι δεν μπορεί να κάνει το Termux χωρίς rootΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Έλεγχος SEO Ιστοσελίδας Από Κινητό [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-site-seo-checklist-from-phone.html
Έλεγχος SEO Ιστοσελίδας Από Κινητό
Έλεγξε τίτλους, περιγραφές, sitemap, robots.txt, εσωτερικούς συνδέσμους και χρησιμότητα περιεχομένου πριν ενημερώσεις μια ιστοσελίδα GitHub Pages.
Σύντομη Απάντηση
Έλεγξε τίτλους, περιγραφές, sitemap, robots.txt, εσωτερικούς συνδέσμους και χρησιμότητα περιεχομένου πριν ενημερώσεις μια ιστοσελίδα GitHub Pages.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
Checklist
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
ls grep -R "" -n . | head grep -R "description" -n . | head python -m http.server 8000
Τι Δείχνουν Οι Εντολές
`ls` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`python -m http.server 8000` — Ξεκινά απλό τοπικό HTTP server στον τρέχοντα φάκελο.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Μετέτρεψε Αυτή Τη Λύση Σε Επαναχρησιμοποιήσιμη Ροή Για Website
Αν δημιουργείς ή δημοσιεύεις sites από το κινητό, ο οδηγός Build and Publish Website with AI συνδέει HTML, CSS, JavaScript, Git, GitHub Pages, testing, rollback και mobile QA σε μία ελεγχόμενη διαδικασία.
Αντιγραφή αναφοράςΔες Preview του Website Guide
Σχετικοί Οδηγοί Βοήθειας
Εγκατάσταση του DedSec Project στο AndroidΔιόρθωση ονόματος και email στο GitΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Λίστα Ελέγχου Για Προβλήματα Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-troubleshooting-checklist.html
Λίστα Ελέγχου Για Προβλήματα Στο Termux
Χρησιμοποίησε επαναλαμβανόμενη λίστα ελέγχου για σχεδόν κάθε πρόβλημα Termux: φάκελος, εντολή, πακέτο, Python, αποθήκευση, Git και logs.
Σύντομη Απάντηση
Χρησιμοποίησε επαναλαμβανόμενη λίστα ελέγχου για σχεδόν κάθε πρόβλημα Termux: φάκελος, εντολή, πακέτο, Python, αποθήκευση, Git και logs.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
TroubleshootingChecklist
Πριν Εκτελέσεις Οτιδήποτε
Δημιούργησε χρονολογημένο backup και επιβεβαίωσε ότι περιέχει τα αρχεία που χρειάζονται για επαναφορά.
Δες πρώτα την τρέχουσα κατάσταση με listing, status, μέγεθος ή dry run πριν την αλλάξεις.
Κράτησε ξεχωριστά generated output, cache, μυστικά και source files.
Εντολές Ελέγχου Ή Ρύθμισης
Έλεγξε πρώτα paths, μεγέθη, status ή περιεχόμενο archive πριν η εντολή αλλάξει οτιδήποτε. Κράτησε επαληθευμένο backup έξω από τον φάκελο εργασίας.
Αντιγραφή εντολών
pwd ls -la python --version pkg update git status df -h
Τι Δείχνουν Οι Εντολές
`pwd` — Εμφανίζει τον τρέχοντα φάκελο εργασίας.
`ls -la` — Εμφανίζει αρχεία, ονόματα και δικαιώματα.
`pkg update` — Ανανεώνει το ευρετήριο πακέτων του Termux.
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`df -h` — Εμφανίζει τον ελεύθερο και χρησιμοποιημένο χώρο.
Πώς Φαίνεται Ότι Λύθηκε
Η ροή μπορεί να επαναληφθεί χωρίς να αντικαταστήσει το προηγούμενο backup ή να χαθεί τρέχουσα εργασία.
Το αποτέλεσμα επαληθεύεται με απλό list, diff, status, checksum ή test command.
Τεκμηριωμένη διαδικασία rollback επαναφέρει την προηγούμενη κατάσταση όταν το νέο αποτέλεσμα είναι λάθος.
Ασφαλή Επόμενα Βήματα
Κατέγραψε την τρέχουσα κατάσταση και δημιούργησε backup που μπορεί να επανέλθει.
Εφάρμοσε μία ελεγχόμενη αλλαγή ή ενέργεια συντήρησης.
Επαλήθευσε το αποτέλεσμα με μικρή εντολή πριν συνεχίσεις.
Κατέγραψε τι άλλαξε, πού βρίσκεται το backup και πώς γίνεται η επαναφορά.
Συνηθισμένα Λάθη
Χρήση εντολής καθαρισμού ή ενημέρωσης χωρίς προεπισκόπηση των αλλαγών.
Αποθήκευση του μοναδικού backup μέσα στον ίδιο φάκελο που αντικαθίσταται ή διαγράφεται.
Ανάμειξη μυστικών, cache, generated output και source files στον ίδιο committed φάκελο.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Διόρθωση Σφαλμάτων WebSocket Και Socket.IO [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-websocket-socketio-errors.html
Διόρθωση Σφαλμάτων WebSocket Και Socket.IO
Διόρθωσε προβλήματα WebSocket ή Flask-SocketIO που προκαλούνται από ports, ασύμβατες εκδόσεις, CORS, μικτά URLs και διακοπές διεργασιών στο παρασκήνιο.
Σύντομη Απάντηση
Διόρθωσε προβλήματα WebSocket ή Flask-SocketIO που προκαλούνται από ports, ασύμβατες εκδόσεις, CORS, μικτά URLs και διακοπές διεργασιών στο παρασκήνιο.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
WebSocket connection failed400 Bad Requesttransport error
Πριν Εκτελέσεις Οτιδήποτε
Ξεκίνησε τον server στο προσκήνιο και κράτησε ορατό το output του τερματικού.
Επιβεβαίωσε host, port, φάκελο που σερβίρεται και URL πριν ανοίξεις τον browser.
Έκθεσε μόνο ειδικό δημόσιο φάκελο· ποτέ το Termux home, κλειδιά, backups ή ιδιωτικά repositories.
Εντολές Ελέγχου Ή Ρύθμισης
Αντικατάστησε το ενδεικτικό port και τον φάκελο. Δοκίμασε πρώτα το τοπικό URL στο ίδιο κινητό πριν δημιουργήσεις διεύθυνση LAN ή δημόσιο tunnel.
Αντιγραφή εντολών
python -m pip install flask flask-socketio eventlet python app.py 2>&1 | tee socketio.log
Τι Δείχνουν Οι Εντολές
`python -m pip install flask flask-socketio eventlet` — Εγκαθιστά ή ενημερώνει τη συγκεκριμένη διανομή Python, όχι το ίδιο το pip.
Πώς Φαίνεται Ότι Λύθηκε
Το τοπικό URL ανοίγει στο ίδιο κινητό και το τερματικό καταγράφει το request.
Το refresh εμφανίζει τα τρέχοντα αρχεία και όχι παλιό cached περιεχόμενο.
Με το σταμάτημα του server ελευθερώνεται το port και κλείνει κάθε προσωρινό δημόσιο tunnel.
Ασφαλή Επόμενα Βήματα
Επαλήθευσε πρώτα τοπικά τη διεργασία και τον φάκελο που σερβίρεται.
Έλεγξε αν άλλη διεργασία χρησιμοποιεί ήδη το port.
Χρησιμοποίησε `127.0.0.1` για δοκιμή στο ίδιο κινητό και σκόπιμη bind address για LAN.
Δημιούργησε δημόσιο tunnel μόνο αφού λειτουργήσει το τοπικό URL και αφαιρέσεις μυστικά από τον δημόσιο φάκελο.
Συνηθισμένα Λάθη
Άνοιγμα λάθος port ή υπόθεση ότι το `localhost` άλλης συσκευής δείχνει στο κινητό.
Εκκίνηση πολλών background servers χωρίς καταγραφή των process IDs.
Δημοσίευση credentials, source repositories, backups ή ολόκληρου του Termux home μέσω tunnel.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Διόρθωση σφαλμάτων σε αρχεία JSONΔιόρθωση του «Port already in use» στο TermuxΛίστα ελέγχου για προβλήματα στο TermuxΟδηγός Termux για αρχάριους στο Android
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Δημιουργία Καλύτερου README [el]
Source-URL: https://ded-sec.space/el/Assistance/termux-write-better-readme.html
Δημιουργία Καλύτερου README
Δημιούργησε χρησιμότερα README με εγκατάσταση, δομή φακέλων, troubleshooting, screenshots, σαφείς προειδοποιήσεις ασφάλειας και συνδέσμους υποστήριξης.
Σύντομη Απάντηση
Δημιούργησε χρησιμότερα README με εγκατάσταση, δομή φακέλων, troubleshooting, screenshots, σαφείς προειδοποιήσεις ασφάλειας και συνδέσμους υποστήριξης.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
BetterREADME
Πριν Εκτελέσεις Οτιδήποτε
Όρισε έναν μικρό στόχο, τα inputs που δέχεται, τα αρχεία που γράφει και τον ασφαλή τρόπο εξόδου.
Κράτησε ρυθμίσεις, logs, παραγόμενο output και source code σε διαφορετικές διαδρομές.
Δημιούργησε πρώτα μια ελάχιστη λειτουργική έκδοση πριν προσθέσεις μενού, effects, δίκτυο ή αυτόματη εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Χρησιμοποίησε τα ενδεικτικά ονόματα μόνο σε δοκιμαστικό φάκελο. Έλεγξε τα παραγόμενα αρχεία πριν μεταφέρεις τη διαδικασία σε υπάρχον project.
Αντιγραφή εντολών
printf "# My Termux Tool\n\n## Install\n\n```bash\npkg install python git -y\npython tool.py\n```\n" > README.md
Τι Δείχνουν Οι Εντολές
Εκτέλεσε το παράδειγμα ανά γραμμή ή λογικό block και σύγκρινε κάθε αποτέλεσμα με τον στόχο του οδηγού.
Πώς Φαίνεται Ότι Λύθηκε
Η μικρότερη έκδοση ολοκληρώνει την κύρια εργασία και χειρίζεται άκυρο input χωρίς crash.
Τα παραγόμενα αρχεία αποθηκεύονται σε τεκμηριωμένες διαδρομές και αφαιρούνται ή επαναφέρονται με ασφάλεια.
Νέος χρήστης μπορεί να τρέξει το project ακολουθώντας το README χωρίς να μαντεύει κρυφά βήματα.
Ασφαλή Επόμενα Βήματα
Γράψε πρώτα τη μικρότερη συνάρτηση ή εντολή που μπορεί να δοκιμαστεί.
Έλεγξε paths και input πριν από ανάγνωση, εγγραφή, μετακίνηση ή διαγραφή αρχείων.
Πρόσθεσε logs και καθαρά μηνύματα σφάλματος πριν από οπτικές βελτιώσεις.
Τεκμηρίωσε εγκατάσταση, χρήση, παραγόμενα αρχεία, περιορισμούς και βήματα επαναφοράς.
Συνηθισμένα Λάθη
Συνδυασμός όλων των λειτουργιών σε ένα αδοκίμαστο block πριν δουλέψει ο βασικός στόχος.
Εγγραφή αρχείων σε απρόβλεπτους φακέλους ή σιωπηλή αντικατάσταση δεδομένων χρήστη.
Απόκρυψη αποτυχιών με γενικό exception handling χωρίς χρήσιμο μήνυμα ή log.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Οδηγός Termux για αρχάριους στο AndroidΒασικές εντολές TermuxΛίστα ελέγχου για προβλήματα στο TermuxΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Αποσυμπίεση ZIP Αρχείων Στο Termux [el]
Source-URL: https://ded-sec.space/el/Assistance/unzip-files-termux-android.html
Αποσυμπίεση ZIP Αρχείων Στο Termux
Αποσυμπίεσε ZIP από τα Downloads στον σωστό φάκελο του Termux, απέφυγε διπλούς ένθετους φακέλους και διόρθωσε προβλήματα μεγάλων διαδρομών.
Σύντομη Απάντηση
Αποσυμπίεσε ZIP από τα Downloads στον σωστό φάκελο του Termux, απέφυγε διπλούς ένθετους φακέλους και διόρθωσε προβλήματα μεγάλων διαδρομών.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
UnzipFilesTermuxWithout
Πριν Εκτελέσεις Οτιδήποτε
Επιβεβαίωσε ότι το Termux προέρχεται από υποστηριζόμενη πηγή και ότι το `pkg update` ολοκληρώνεται χωρίς σφάλμα.
Εκτέλεσε μία εντολή κάθε φορά και σταμάτησε στο πρώτο απρόσμενο μήνυμα.
Κράτησε το project στον προσωπικό φάκελο του Termux κατά την εγκατάσταση ή τη δοκιμή.
Εντολές Ελέγχου Ή Ρύθμισης
Δες πρώτα το περιεχόμενο του archive και χρησιμοποίησε άδειο φάκελο προορισμού όπου γίνεται. Χωρίς `-o`, το unzip ζητά επιβεβαίωση πριν αντικαταστήσει υπάρχον αρχείο.
Αντιγραφή εντολών
pkg install -y unzip mkdir -p ~/DedSec/Scripts unzip -l "/storage/emulated/0/Download/file.zip" | head -n 40 unzip "/storage/emulated/0/Download/file.zip" -d ~/DedSec/Scripts find ~/DedSec/Scripts -maxdepth 2 -type f | head -n 40
Τι Δείχνουν Οι Εντολές
`pkg install -y unzip` — Εγκαθιστά τα αναφερόμενα πακέτα του Termux και τις εξαρτήσεις τους.
`unzip -l "/storage/emulated/0/Download/file.zip" | head -n 40` — Εμφανίζει ή εξάγει αρχεία από ZIP archive.
`find ~/DedSec/Scripts -maxdepth 2 -type f | head -n 40` — Αναζητά διαδρομές με βάση όνομα, μέγεθος ή τύπο.
Πώς Φαίνεται Ότι Λύθηκε
Η εντολή ολοκληρώνεται χωρίς σφάλμα και γνωρίζεις ποιον φάκελο και ποιο αρχείο χρησιμοποίησε.
Η ίδια μικρή δοκιμή δίνει το ίδιο αποτέλεσμα και δεύτερη φορά.
Δεν χρειάστηκε επανεγκατάσταση ή άσχετη αλλαγή πακέτων.
Ασφαλή Επόμενα Βήματα
Έλεγξε τον τρέχοντα φάκελο με `pwd` και τα ακριβή ονόματα αρχείων με `ls`.
Εγκατέστησε μόνο το πακέτο που αναφέρει πραγματικά το σφάλμα.
Εκτέλεσε τη μικρότερη διαθέσιμη δοκιμή πριν ξεκινήσεις ολόκληρο το project.
Αποθήκευσε τις εντολές που λειτούργησαν στο README ή σε αρχείο σημειώσεων.
Συνηθισμένα Λάθη
Αντιγραφή διαδρομών Ubuntu ή desktop Linux χωρίς έλεγχο ότι υπάρχουν στο Termux.
Εκτέλεση ενεργού project απευθείας από τον κοινόχρηστο χώρο του Android.
Επικόλληση ολόκληρου μεγάλου block αφού μία γραμμή έχει ήδη αποτύχει.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Ενημέρωση DedSec Project σε Linux [el]
Source-URL: https://ded-sec.space/el/Assistance/update-dedsec-project-linux.html
Ενημέρωση DedSec Project σε Linux
Ενημέρωσε Linux checkout χωρίς να αντικαταστήσεις το repository ή να παρακάμψεις το cross-platform dependency refresh.
Γρήγορη Περίληψη
Ενημέρωσε Linux checkout χωρίς να αντικαταστήσεις το repository ή να παρακάμψεις το cross-platform dependency refresh.
Έλεγχος Working Tree
cd ~/DedSec git status
Έλεγξε τις τοπικές αλλαγές πριν το pull ώστε να μην αντικαταστήσεις δουλειά που θέλεις να κρατήσεις.
Pull Και Refresh
git pull bash Setup.sh --update-only ./Run.sh
Γιατί Τρέχει Ξανά Το Setup
Το Setup.sh --update-only ανανεώνει dependencies και compatibility files μετά από project updates. Ο κανονικός launcher χρησιμοποιεί μετά το ενημερωμένο .venv και Compat/bin.
Custom Clone Path
Αν το project δεν βρίσκεται στο ~/DedSec, μπες πρώτα στον πραγματικό φάκελό του.
Επόμενα Βήματα
Για platform-specific save paths, δες τη σελίδα Μάθε Για Τα Εργαλεία. Για γενικά προβλήματα, επέστρεψε στη Βοήθεια.
Μάθε Για Τα ΕργαλείαΌλοι Οι Οδηγοί Βοήθειας
### Ενημέρωση Του DedSec Project [el]
Source-URL: https://ded-sec.space/el/Assistance/update-dedsec-project.html
Ενημέρωση Του DedSec Project
Ενημέρωσε με ασφάλεια το DedSec Project σε Termux ή υποστηριζόμενα Linux desktops, κρατώντας τοπικές αλλαγές και ανανεώνοντας dependencies με το platform-aware setup.
Σύντομη Απάντηση
Ενημέρωσε έναν υπάρχοντα φάκελο του DedSec Project χωρίς να χάσεις τοπικά αρχεία, outputs, προσωπικές αλλαγές ή αποθηκευμένη εργασία.
Χρησιμοποίησε αυτόν τον οδηγό μόνο όταν το σύμπτωμα ή ο στόχος ταιριάζει με τις ενδείξεις παρακάτω. Αν μια διαγνωστική εντολή δείξει διαφορετικό πρόβλημα, ακολούθησε αυτή την ένδειξη αντί να εκτελέσεις μηχανικά όλα τα βήματα.
Τελευταίος έλεγχος: 24 Ιουλίου 2026.
Χρησιμοποίησε Τον Οδηγό Όταν Βλέπεις
UpdateDedSecProject
Πριν Εκτελέσεις Οτιδήποτε
Κράτησε backup προσωπικών ρυθμίσεων, outputs, τροποποιημένων scripts και αποθηκευμένων δεδομένων πριν από επανεγκατάσταση ή ενημέρωση.
Επιβεβαίωσε τον ακριβή φάκελο DedSec και την κατάσταση Git αντί να κάνεις νέο clone μέσα στον υπάρχοντα φάκελο.
Κράτησε ολόκληρο το πρώτο σφάλμα αντί να αντικαταστήσεις αμέσως όλη την εγκατάσταση.
Εντολές Ελέγχου Ή Ρύθμισης
Κράτησε πρώτα backup των προσωπικών ρυθμίσεων και outputs του DedSec. Επιβεβαίωσε τον τρέχοντα φάκελο DedSec πριν αντιγράψεις ή εκτελέσεις το block.
Αντιγραφή εντολών
cd ~/Projects/DedSec git status git pull # backup first if you changed files
Τι Δείχνουν Οι Εντολές
`git status` — Εμφανίζει branch, staged αρχεία, conflicts και τοπικές αλλαγές.
`git pull` — Κατεβάζει και ενσωματώνει remote commits.
Πώς Φαίνεται Ότι Λύθηκε
Ο σωστός launcher του DedSec ξεκινά από τον φάκελο που αναφέρει ο οδηγός.
Οι προσωπικές ρυθμίσεις και τα αποθηκευμένα outputs παραμένουν μετά την επισκευή ή ενημέρωση.
Μια δεύτερη εκκίνηση λειτουργεί χωρίς επανάληψη της εγκατάστασης.
Ασφαλή Επόμενα Βήματα
Εντόπισε αν η αποτυχία αφορά φάκελο, εξάρτηση, Git, δικαιώματα ή αποθηκευμένα δεδομένα.
Επισκεύασε μόνο αυτό το επίπεδο και δοκίμασε το μικρότερο entry point του DedSec.
Σύγκρινε τα αλλαγμένα αρχεία πριν αντικαταστήσεις τοπικές τροποποιήσεις.
Κράτησε χρονολογημένο backup αφού επιβεβαιώσεις ότι η επισκευασμένη έκδοση ξεκινά σωστά.
Συνηθισμένα Λάθη
Διαγραφή του υπάρχοντος φακέλου DedSec πριν αντιγραφούν ρυθμίσεις και outputs.
Δημιουργία επαναλαμβανόμενων nested clones όπως `DedSec/DedSec/DedSec`.
Εκτέλεση εντολής αντικατάστασης από λάθος γλώσσα ή φάκελο project.
Χρειάζεσαι Ακόμη Βοήθεια;
Αντέγραψε την αναφορά υποστήριξης, συμπλήρωσε τα στοιχεία και πρόσθεσε ολόκληρο το output του τερματικού. Αφαίρεσε κωδικούς, tokens, ιδιωτικά κλειδιά, ακριβείς προσωπικές διαδρομές και προσωπικά στοιχεία.
Διόρθωσες Αυτό Το Σφάλμα Αλλά Θέλεις Επαναχρησιμοποιήσιμο Τρόπο Για Το Επόμενο;
Το Complete Termux Troubleshooting Handbook δίνει μια οργανωμένη διαγνωστική διαδικασία για Termux, Python, Git, αποθήκευση, πακέτα, δίκτυα και recovery αντί για ασύνδετες διορθώσεις.
Αντιγραφή αναφοράςΔες Preview του Handbook
Λύθηκε το πρόβλημά σου; Εξερεύνησε το πλήρες δωρεάν DedSec Project στο GitHub.
Σχετικοί Οδηγοί Βοήθειας
Σωστή εκτέλεση Python script στο TermuxΔιόρθωση πρόσβασης στον αποθηκευτικό χώρο του AndroidΟδηγός Termux για αρχάριους στο AndroidΕνημέρωση GitHub Pages από το Termux χωρίς προβλήματα
Επιστροφή σε όλους τους οδηγούς βοήθειας
### Η Ιστορία Του Ιδρυτή & Το Όραμα Του Project [el]
Source-URL: https://ded-sec.space/el/Pages/about-founder.html
Η Ιστορία Του Ιδρυτή & Το Όραμα Του Project
Η ιστορία πίσω από το DedSec Project και το όραμα που γεννήθηκε μέσα από αυτή — μαζί σε μία σελίδα.
Ιδρύθηκε στις 20 Οκτωβρίου 2024 · Διαθέσιμο για Android (Termux), Ubuntu, Kali Linux και Linux Mint
Από Την Περιέργεια Για Τους Ψηφιακούς Κόσμους Σε Ένα Πραγματικό Project Από Κινητό
Πού Ξεκίνησε
Ονομάζομαι Λουκάς Φλώρος. Γεννήθηκα στις 14 Αυγούστου 2004 και δημιούργησα το DedSec Project ως ένα πρακτικό project μάθησης για ανθρώπους που θέλουν να κατανοήσουν το Termux, το Android, τον προγραμματισμό, την κυβερνοασφάλεια και χρήσιμες ροές εργασίας από κινητό.
Δημιούργησα το DedSec Project στις 20 Οκτωβρίου 2024. Αυτό που ξεκίνησε ως προσπάθεια μάθησης από κινητό επεκτάθηκε ώστε να υποστηρίζει Android μέσω Termux και περιβάλλοντα Linux όπως Ubuntu, Kali Linux και Linux Mint. Κάθε πλατφόρμα έχει τις δικές της οδηγίες εγκατάστασης και προϋποθέσεις.
Τα παιχνίδια Watch Dogs ήταν η πρώτη αφορμή για να ενδιαφερθώ περισσότερο για την τεχνολογία, την ιδιωτικότητα, τα συνδεδεμένα συστήματα και τη δύναμη που μπορούν να έχουν τα ψηφιακά εργαλεία στην καθημερινή ζωή. Αυτή η περιέργεια με ώθησε να αρχίσω να μαθαίνω προγραμματισμό και να πειραματίζομαι με το Termux και το Android, αντί να αφήσω την ιδέα μόνο μέσα σε έναν φανταστικό κόσμο.
Σε Τι Εξελίχθηκε
Το DedSec Project αναπτύχθηκε μέσα από αυτή τη διαδρομή μάθησης. Δεν παρουσιάζεται ως ολοκληρωμένη απάντηση για τα πάντα. Είναι μια συλλογή εργαλείων, μαθημάτων, οδηγών, πειραμάτων και υλικού επίλυσης προβλημάτων που βελτιώνεται συνεχώς, ώστε περισσότεροι άνθρωποι να μαθαίνουν στην πράξη και να καταλαβαίνουν τι εκτελούν.
Το project είναι ανεξάρτητο και επικεντρώνεται στην εκπαίδευση, στον νόμιμο πειραματισμό, στην πρακτική επίλυση προβλημάτων, στην επίγνωση της ιδιωτικότητας και στο να κάνει τη χρήσιμη τεχνική γνώση πιο προσιτή από ένα Android κινητό.
Στατιστικά GitHub
Τεχνολογίες & Δεξιότητες
Τεχνολογίες και πρακτικές δεξιότητες που αποδεικνύονται μέσα από τα projects μου.
Γλώσσες & Δεδομένα
PythonBash / ShellJavaScriptHTML5CSS3JSONMarkdownSQLite
Ανάπτυξη & Πλατφόρμες
TermuxLinux CLIGitGitHubGitHub ActionsGitHub Pages
Κυβερνοασφάλεια
Cybersecurity ToolingOSINTSecurity Testing & AuditingNetwork & Security ToolingFile & Metadata Analysis
AI & Τοπικά Μοντέλα
Local LLMsGGUF Modelsllama.cppRAGLocal Knowledge RetrievalAI Model RoutingOffline AI
Ανάπτυξη Εφαρμογών
CLI DevelopmentTUI DevelopmentAndroid / Termux DevelopmentLocal-First ApplicationsOffline-First ApplicationsResponsive Web DevelopmentAPI Integration
Αυτοματισμοί & Εργασία Σε Projects
Automation & ScriptingRepository AutomationBackup & RecoveryData IntegritySHA-256 VerificationTesting & QA AutomationTechnical DocumentationOpen-Source DevelopmentEnglish / Greek Localization
Σειρά Συνεισφορών
Πιο Χρησιμοποιημένες Γλώσσες
Το Όραμα Του Project
Το DedSec Project βασίζεται σε μια απλή ιδέα: η χρήσιμη τεχνολογία πρέπει να βοηθά τους ανθρώπους να καταλαβαίνουν περισσότερα, να εξαρτώνται λιγότερο από «μαύρα κουτιά» και να έχουν ουσιαστικό έλεγχο στις συσκευές και τα εργαλεία που χρησιμοποιούν. Στόχος του project είναι να μετατρέπει την περιέργεια σε πρακτική ικανότητα — ιδιαίτερα για όσους μαθαίνουν απευθείας από ένα Android κινητό.
Πρακτική Μάθηση
Η μάθηση δεν πρέπει να σταματά στην αντιγραφή εντολών. Το DedSec Project δίνει έμφαση σε πραγματικά παραδείγματα, επίλυση προβλημάτων, επαναλήψιμες ροές εργασίας και εξηγήσεις που βοηθούν τον χρήστη να καταλαβαίνει τι κάνει ένα εργαλείο πριν βασιστεί σε αυτό.
Τεχνολογία Προσιτή Σε Περισσότερους
Ένα κινητό μπορεί να είναι κάτι περισσότερο από συσκευή κατανάλωσης περιεχομένου. Το project θέλει να δείξει ότι η τεχνική μάθηση, το scripting, ο πειραματισμός και η επίλυση προβλημάτων μπορούν να ξεκινήσουν με το hardware που ήδη διαθέτει κάποιος, χωρίς να απαιτείται πρώτα ακριβός εξοπλισμός.
Έλεγχος, Ιδιωτικότητα & Διαφάνεια
Οι χρήστες πρέπει να μπορούν να καταλαβαίνουν τι εκτελείται στις συσκευές τους, να παίρνουν ενημερωμένες αποφάσεις, να προστατεύουν την ιδιωτικότητά τους και να διατηρούν λογικό έλεγχο στο λογισμικό και στα συστήματα που τους ανήκουν. Η ασφάλεια πρέπει να αυξάνει την εμπιστοσύνη χωρίς να αφαιρεί χωρίς λόγο την ανοιχτότητα ή την επιλογή του χρήστη.
Ανοιχτός, Δωρεάν Πυρήνας Που Εξελίσσεται
Ο βασικός πυρήνας του project πρέπει να παραμένει δωρεάν και να συνεχίζει να εξελίσσεται με νέα μαθήματα, εργαλεία, διορθώσεις, τεκμηρίωση και feedback από την κοινότητα. Οι προαιρετικοί επί πληρωμή οδηγοί και οι σαφώς οριοθετημένες προσαρμογές μπορούν να στηρίζουν αυτή τη δουλειά, αλλά να συμπληρώνουν το δωρεάν project και όχι να το αντικαθιστούν.
Η μακροπρόθεσμη κατεύθυνση είναι απλή: η τεχνική γνώση να γίνεται πιο προσιτή, πιο κατανοητή και πιο χρήσιμη στην καθημερινότητα, ενώ η μάθηση παραμένει υπεύθυνη, ανεξάρτητη και βασισμένη σε όσα μπορούν πραγματικά να κάνουν οι άνθρωποι με τις δικές τους συσκευές.
Γιατί Έχει Σημασία Το DedSec Project Σε Έναν Κόσμο Που Αλλάζει
Αυτή είναι η προσωπική μου οπτική για την τεχνολογία, την ελευθερία, την οικονομική πίεση και τους λόγους ύπαρξης αυτού του ανεξάρτητου project. Είναι προβληματισμοί που αξίζει να εξετάζουμε κριτικά και όχι ισχυρισμοί ότι κάθε θεσμός ή νέα τεχνολογία είναι επιβλαβής.
Τεχνολογία: Πρόοδος Και Κίνδυνοι
Η τεχνολογία εξελίχθηκε από απλά προσωπικά εργαλεία σε διασυνδεδεμένα συστήματα που μπορούν να μαθαίνουν, να παρακολουθούν, να προβλέπουν και να επηρεάζουν συμπεριφορές. Η τεχνητή νοημοσύνη, οι αυτοματοποιημένες αποφάσεις, η ψηφιακή παρακολούθηση και οι κυβερνοεπιθέσεις μπορούν να διευκολύνουν τη ζωή, αλλά χωρίς όρια και προστασία η ισχύς τους μπορεί να γίνει επικίνδυνη. Οι άνθρωποι αξίζουν κατανοητά εργαλεία, ιδιωτικότητα και τη γνώση να αμφισβητούν τι κάνει η τεχνολογία.
Φτώχεια Και Αυξανόμενο Ψηφιακό Χάσμα
Σε πολλά μέρη, το αυξανόμενο κόστος ζωής και η άνιση πρόσβαση στις ευκαιρίες κάνουν τους ανθρώπους να αισθάνονται φτωχότεροι, ενώ η τεχνολογία προχωρά. Οι επί πληρωμή υπηρεσίες, ο ακριβός εξοπλισμός και η περιορισμένη πρόσβαση στην εκπαίδευση μπορεί να μεγαλώνουν αυτό το χάσμα. Το DedSec Project επιδιώκει να κρατά μια χρήσιμη διαδρομή μάθησης προσιτή ακόμη και σε ανθρώπους που έχουν μόνο ένα κινητό και τη θέληση να μάθουν.
Εξουσία, Κυβερνήσεις Και Διαφθορά
Οι κυβερνήσεις και οι ισχυροί οργανισμοί δεν είναι άτρωτοι στη διαφθορά, στην αδιαφάνεια ή στην κατάχρηση της παρακολούθησης. Ο κίνδυνος μεγαλώνει όταν οι αποφάσεις δεν είναι διαφανείς και οι πολίτες δεν μπορούν να ζητήσουν εξηγήσεις ή λογοδοσία. Η δική μου απάντηση είναι η νόμιμη έρευνα, η διαφάνεια, ο ψηφιακός γραμματισμός και ο ανεξάρτητος έλεγχος — όχι η υπόθεση ότι κάθε δημόσιος λειτουργός είναι διεφθαρμένος.
Θα Μπορούσαν Να Εξαφανιστούν Τα Μετρητά;
Καθώς επεκτείνονται οι ανέπαφες πληρωμές, οι τραπεζικές εφαρμογές και οι υπηρεσίες χωρίς μετρητά, με προβληματίζει ένα μέλλον όπου τα φυσικά μετρητά θα είναι δύσκολο ή αδύνατο να χρησιμοποιηθούν. Τα μετρητά παραμένουν σημαντικά για την ιδιωτικότητα, την αντοχή σε διακοπές λειτουργίας, την προσβασιμότητα και όσους αποκλείονται από τις ψηφιακές τράπεζες. Οι ψηφιακές πληρωμές είναι χρήσιμες, αλλά πιστεύω ότι πρέπει να υπάρχει πραγματική επιλογή.
Μάθε, Προσαρμόσου Και Μείνε Ανεξάρτητος
Η απάντηση δεν είναι να απορρίψουμε την πρόοδο, αλλά να την κατανοήσουμε. Το DedSec Project προωθεί την ηθική εκπαίδευση στην κυβερνοασφάλεια, τον πρακτικό προγραμματισμό, τα εργαλεία που λειτουργούν τοπικά, τις υπεύθυνες πρακτικές ασφάλειας και τις ενημερωμένες επιλογές. Η γνώση βοηθά τους ανθρώπους να συμμετέχουν στον ψηφιακό κόσμο αντί να αισθάνονται αδύναμοι μέσα σε αυτόν.
Δίκαιη Διαδικασία, Νομική Υποστήριξη Και Δημόσιος Έλεγχος
Αν οποιοδήποτε μέλος, συνεισφέρων ή πρόσωπο που συνδέεται δημόσια με το DedSec Project συλληφθεί ή τεθεί υπό κράτηση, τα θεμελιώδη δικαιώματά του πρέπει να γίνουν σεβαστά. Η κράτηση δεν είναι αυτομάτως παράνομη μόνο και μόνο επειδή δεν βρίσκεται δικηγόρος στον χώρο τη στιγμή της σύλληψης, ενώ οι ακριβείς κανόνες διαφέρουν ανά χώρα. Στην Ευρωπαϊκή Ένωση, οι ύποπτοι πρέπει να αποκτούν πρόσβαση σε δικηγόρο χωρίς αδικαιολόγητη καθυστέρηση και, κατά κανόνα, πριν από αστυνομική εξέταση, με μόνο περιορισμένες νομικές εξαιρέσεις.
Κάθε τέτοια υπόθεση αξίζει ψύχραιμο, ανεξάρτητο και τεκμηριωμένο έλεγχο. Το κοινό και ο Τύπος πρέπει να εξετάζουν τις κατηγορίες, τα δικαστικά έγγραφα, τη μεταχείριση κατά την κράτηση, την πρόσβαση σε δικηγόρο και το αν τηρήθηκε η νόμιμη διαδικασία. Κανείς δεν πρέπει να παρεμποδίζει έρευνα, να απειλεί αρμόδιους, να δημοσιοποιεί προσωπικά δεδομένα ή να αποφασίζει για ενοχή ή αθωότητα μόνο από τίτλους ειδήσεων.
Η έρευνα ασφάλειας, η ψηφιακή διαμαρτυρία και ο χακτιβισμός μπορεί να είναι πολιτικά ευαίσθητα, να παρερμηνεύονται ή να παρουσιάζονται επιλεκτικά. Γι’ αυτό η διαφάνεια και ο ανεξάρτητος έλεγχος είναι ιδιαίτερα σημαντικά, όμως η σύνδεση με το DedSec Project δεν παρέχει ασυλία από μια νόμιμη έρευνα. Το project υποστηρίζει νόμιμη, ηθική και εξουσιοδοτημένη δραστηριότητα, το τεκμήριο αθωότητας και το δικαίωμα κάθε κατηγορουμένου να προετοιμάσει την υπεράσπισή του.
Αναφορές δικαιωμάτων: EU Directive 2013/48/EU · EU Charter, Article 48.
Η Δημόσια Δουλειά Επιβιώνει Όταν Υπάρχει Στήριξη
Το DedSec Project υπάρχει ώστε οι άνθρωποι να μπορούν να μαθαίνουν, να δοκιμάζουν, να προστατεύονται και να δημιουργούν από κινητό. Πίσω από αυτή τη δημόσια δουλειά υπάρχουν πραγματικά έξοδα για δοκιμές συσκευών, συγγραφή, μετάφραση, συντήρηση και διορθώσεις. Η προαιρετική χορηγία μέσω GitHub βοηθά να συνεχίζεται το δημόσιο project· το $25 Ultimate Supporter tier περιλαμβάνει επίσης την τρέχουσα βιβλιοθήκη πέντε ebooks σε Αγγλικά και Ελληνικά.
Δες τα Sponsor TiersΣτήριξη του έργου
Κράτησε Το Android Ανοιχτό
Αυτή η αρχή αποτελεί μέρος του ευρύτερου οράματος του project: το Android πρέπει να παραμένει μια πλατφόρμα όπου οι χρήστες μπορούν να επιλέγουν πώς χρησιμοποιούν τις δικές τους συσκευές.
Έλεγχος Από Τον Χρήστη
Οι άνθρωποι πρέπει να μπορούν να εγκαθιστούν, να αφαιρούν, να επισκευάζουν και να ρυθμίζουν λογισμικό στο hardware που τους ανήκει.
Ανεξάρτητη Ανάπτυξη
Οι ανεξάρτητοι developers και οι εναλλακτικοί τρόποι διανομής εφαρμογών πρέπει να παραμένουν βιώσιμο μέρος του οικοσυστήματος Android.
Ιδιωτικότητα Και Επιλογή
Οι βελτιώσεις ασφάλειας δεν πρέπει να αφαιρούν χωρίς ανάγκη την ιδιωτικότητα, την ανοιχτότητα ή την ουσιαστική επιλογή του χρήστη.
Επισκέψου το Keep Android Open
Άλλα έργα
Τα δημόσια έργα μου στο GitHub. Κάθε αποθετήριο περιέχει τις οδηγίες και τις τελευταίες ενημερώσεις του.
DedSec
Συλλογή εργαλείων κυβερνοασφάλειας και αυτοματισμού για Android μέσω Termux και υποστηριζόμενα συστήματα Linux.
Praying-Project
Δίγλωσση συλλογή ορθόδοξων προσευχών με προγραμματισμένη ανακατασκευή των αποθηκευμένων κειμένων.
Save-DedSec-Project
Διατηρεί αποθετήρια έργων, ιστοσελίδες και εξαρτήσεις APK μέσω δημόσιων υπηρεσιών αρχειοθέτησης.
Offline-Survival-Project
Γνώσεις επιβίωσης εκτός σύνδεσης, σχεδιασμός οικιακών έκτακτων αναγκών και πρακτικά τοπικά εργαλεία.
dedsec1121fk
Προφίλ GitHub, παρουσίαση έργων και στατιστικά δραστηριότητας ανάπτυξης.
Corrupted-Files-Project
Δίγλωσσο αρχείο ιστορικής έρευνας για Termux, με πηγές, χρονολόγια και σαφή επισήμανση αβεβαιότητας.
dedsec1121fk.github.io
Πηγαία αρχεία αυτής της δίγλωσσης ιστοσελίδας, της βιβλιοθήκης γνώσεων και της ενσωματωμένης ανακάλυψης GitHub.
Pocket-AI-Project
Τοπική δίγλωσση τεχνητή νοημοσύνη για Android και Termux, με σχεδιασμό για περιορισμένη μνήμη και βασική χρήση εκτός σύνδεσης.
Hacking-Guide-Project
Δίγλωσση εκπαίδευση κυβερνοασφάλειας εκτός σύνδεσης, με διαδρομές μάθησης και εργαστήρια εξουσιοδοτημένης εξάσκησης.
Language-Project
Εκμάθηση γλωσσών προγραμματισμού και πρακτικά βοηθήματα για εργασίες στο Termux.
Ghost-Project
Ανεπίσημο αρχείο της ιστορίας του Call of Duty: Ghosts για Termux, με πρωτότυπες περιλήψεις και συνδέσμους πηγών.
### Ο λογαριασμός σου. [el]
Source-URL: https://ded-sec.space/el/Pages/account.html
Ο λογαριασμός σου.
Κράτησε ιδιωτικές σημειώσεις TXT, οργάνωσε φακέλους και καρφίτσες, εξήγαγε TXT ή ZIP και ξεκλείδωσε scripts με τρία έγκυρα referrals.
Διαθεσιμότητα λογαριασμών
Άνοιξε την ασφαλή πύλη για πραγματικό λογαριασμό Test. Αυτή η στατική προεπισκόπηση δεν συλλέγει προσωπικά στοιχεία ή κωδικούς.
Ενεργοί σήμερα— / 444
Λογαριασμοί που δημιουργήθηκαν— / 300
Χρησιμοποίησε το κουμπί Λογαριασμός της ιστοσελίδας για πρόσβαση στον λογαριασμό σου.
Δημιουργία λογαριασμούΣύνδεσηΕπαναφορά κωδικού
Δημιουργία λογαριασμού
Απαιτείται η ασφαλής πύλη λογαριασμώνΌνομαΕπώνυμοEmailΕπανάληψη emailΗμερομηνία γέννησηςΚωδικός referral (προαιρετικό)ΚωδικόςΕπανάληψη κωδικούΑποδέχομαι τους όρους λογαριασμού και την πολιτική απορρήτου.Δημιουργία λογαριασμού
Η επανάληψη email αποτρέπει λάθη πληκτρολόγησης. Η επιβεβαίωση email απαιτείται για ανταμοιβές referrals. Οι λογαριασμοί διατίθενται σε ηλικίες 18–130.
Σύνδεση
Απαιτείται η ασφαλής πύλη λογαριασμώνEmailΚωδικόςΣύνδεση
Επαναφορά κωδικού
Χρησιμοποίησε τον αποθηκευμένο κωδικό ανάκτησηςEmailΚωδικός ανάκτησηςΝέος κωδικόςΕπανάληψη κωδικούΑνάκτηση και σύνδεση
Πολιτική απορρήτου ιστοσελίδας
Δοκίμασε τον χώρο TXT
Προεπισκόπηση προφίλ
Αυτός είναι προσωρινός χώρος δοκιμής, όχι συνδεδεμένος λογαριασμός. Οι σημειώσεις δεν ανεβαίνουν και δεν έχουν αντίγραφο ασφαλείας.
Χρησιμοποιημένος χώρος: 0 / 900 KB
900 KB ανά λογαριασμό · 400 MB συνολικά για σημειώσεις. Τα ονόματα αρχείων και φακέλων συνυπολογίζονται στο όριο.
Εξαγωγή επιλογήςΕξαγωγή όλωνΔιαγραφή δοκιμήςΟριστική διαγραφή λογαριασμού
Αλλαγή κωδικούΤρέχων κωδικόςΝέος κωδικόςΕπανάληψη νέου κωδικούΑλλαγή κωδικού
Αποθήκευση σημειώσεων
Cloud
Προαιρετική αποθήκευση μόνο σε αυτό το πρόγραμμα περιήγησης. Αν καθαρίσεις cache/δεδομένα ιστοσελίδας, διαγράψεις το προφίλ του browser ή χρησιμοποιήσεις ιδιωτική περιήγηση, μπορεί να χαθούν οριστικά. Κάνε εξαγωγή TXT ή ZIP τακτικά. Οι τοπικές σημειώσεις δεν κρυπτογραφούνται ξεχωριστά από την εφαρμογή.
Αποθήκευση στον browserΜεταφορά τοπικών στο cloud
Το cloud διατηρεί το προηγούμενο αντίγραφό του όσο αποθηκεύεις τοπικά. Η επιστροφή συγχωνεύει και τα δύο: τα ίδια αρχεία ενώνονται, όσα διαφέρουν μετονομάζονται με «local». Η μεταφορά γίνεται μόνο αν χωρούν όλα στο όριο των 900.000 bytes, 200 TXT και 50 φακέλων, καθώς και στο συνολικό διαθέσιμο όριο της υπηρεσίας.
Αρχεία και φάκελοι
Όλες οι σημειώσειςΓονικός φάκελος
Καρφιτσωμένα
Επίλεξε ένα TXT
Περιεχόμενο σημείωσης
ΑποθήκευσηΜετονομασίαΔιαγραφή
Ένα επιλεγμένο TXT κατεβαίνει απευθείας. Πολλά στοιχεία ή οποιοσδήποτε φάκελος κατεβαίνουν ως ZIP με τη δομή των φακέλων τους.
Ανταμοιβές προσκλήσεων
Έγκυρες προσκλήσεις φίλων: — / 3
Οι προσκλήσεις δεν έχουν ενεργοποιηθεί ακόμη. Τρεις επιλέξιμες, επιβεβαιωμένες προσκλήσεις θα ξεκλειδώνουν τα επιλεγμένα sponsor scripts μετά την ενεργοποίηση.
Διαθέσιμες ανταμοιβές: Face Detector (English), Face Detector (Ελληνικά), Steganography (English), Steganography (Ελληνικά).
Sponsor scripts — προσεχώς
Νέο TXTΝέος φάκελοςΆνοιγμα αρχείων TXTΕισαγωγή φακέλου TXT
Καρφίτσωσε αρχείο ή φάκελο από το αστέρι του.
+ Σημειώσεις
Όνομα
ΔημιουργίαΑκύρωση
### Βοήθεια [el]
Source-URL: https://ded-sec.space/el/Pages/assistance.html
Βοήθεια
Πρακτική βοήθεια για το DedSec Project σε Termux, Ubuntu, Kali Linux και Linux Mint, με setup, paths, repairs, updates, Python, Git και networking.
Οδηγός Termux Για Αρχάριους Στο Android
Ακολούθησε μια καθαρή πρώτη διαδρομή για να μάθεις Termux, φακέλους, πακέτα, Python scripts, GitHub και τα βασικά του DedSec Project.
BeginnerGuide
Βασικές Εντολές Termux
Χρησιμοποίησε τις βασικές εντολές Termux για πλοήγηση σε φακέλους, έλεγχο αρχείων, εγκατάσταση πακέτων και σωστή εκτέλεση Python scripts.
CommandCheat
Εγκατάσταση Termux Και Πρώτη Ρύθμιση
Κάνε σωστή πρώτη ρύθμιση του Termux με πρόσβαση αποθήκευσης, ενημέρωση πακέτων, βασικά εργαλεία και ασφαλείς φακέλους πριν τρέξεις το DedSec.
FirstTermux
Σωστή Εκτέλεση Python Script Στο Termux
Μάθε τη σωστή σειρά για είσοδο στον φάκελο, έλεγχο αρχείων, εγκατάσταση εξαρτήσεων και εκτέλεση ενός Python script στο Termux.
PythonScripts
Ασφαλής Αντιγραφή Και Επικόλληση Εντολών
Απέφυγε σπασμένες εντολές, αόρατους χαρακτήρες, λάθος εισαγωγικά, προβληματικές αλλαγές γραμμής και επικίνδυνα λάθη κατά την επικόλληση.
SafeCopy
Αποσυμπίεση ZIP Αρχείων Στο Termux
Αποσυμπίεσε ZIP από τα Downloads στον σωστό φάκελο του Termux, απέφυγε διπλούς ένθετους φακέλους και διόρθωσε προβλήματα μεγάλων διαδρομών.
UnzipFiles
Διόρθωση Σφαλμάτων Node.js Και npm Στο Termux
Διόρθωσε σφάλματα όπως «npm command not found», αποτυχίες node-gyp, προβλήματα εγκατάστασης πακέτων και χαλασμένα JavaScript projects στο Termux.
npm ERR!node-gyp
Διόρθωση Σφαλμάτων pip Στο Termux
Ξεχώρισε προβλήματα του pip, αποτυχίες build, ελλιπή wheels, σφάλματα compiler και εξαρτήσεις του Termux πριν εγκαταστήσεις βιβλιοθήκες Python.
Installing pip is forbiddenFailed building wheel
Διόρθωση Του ModuleNotFoundError Στην Python
Βρες ποιο περιβάλλον Python εκτελεί το script, εγκατέστησε σωστά το module που λείπει και απέφυγε συγκρούσεις με τοπικά ονόματα αρχείων.
ModuleNotFoundErrorImportError
Διόρθωση Συντακτικών Σφαλμάτων Python Στο Termux
Διόρθωσε μη κλεισμένα strings, λάθος εσοχές, άκυρους χαρακτήρες, αντιγραμμένο HTML και άλλα συντακτικά σφάλματα Python μέσα στο Termux.
SyntaxErrorIndentationError
Διόρθωση Κλειδώματος dpkg/apt Στο Termux
Επανέφερε το σύστημα πακέτων μετά από διακοπείσα εγκατάσταση, κλείδωμα του apt ή του dpkg και πακέτα που έμειναν μισορυθμισμένα.
Could not get lockdpkg was interrupted
Διόρθωση Του «No Space Left On Device» Στο Termux
Εντόπισε τι γεμίζει τον χώρο του Termux, καθάρισε με ασφάλεια cache και υπολείμματα build και μετέφερε αποτελέσματα στον φάκελο Downloads.
No space left on deviceENOSPC
Διόρθωση Του «No Such Αρχείο Or Directory» Στο Termux
Βρες τον πραγματικό φάκελο στο Termux, χειρίσου σωστά ονόματα με κενά και σταμάτησε τα λάθη διαδρομών πριν εκτελέσεις ένα script.
No such file or directorycan't open file
Διόρθωση Του «Permission Denied» Σε Εκτελέσιμα Αρχεία
Διόρθωσε προβλήματα «Permission denied», χρησιμοποίησε σωστά το chmod και κατανόησε ποια δικαιώματα είναι εφικτά σε Termux χωρίς root.
Permission deniedOperation not permitted
Διόρθωση Σφαλμάτων Αποθετηρίων, Mirrors, GPG Και apt
Διόρθωσε προβλήματα αποθετηρίων Termux, αργούς mirrors, προειδοποιήσεις υπογραφής GPG και αποτυχίες κατά την ενημέρωση πακέτων.
Unable to locate package404 Not Found
Διόρθωση Σφαλμάτων SSL, Πιστοποιητικών Και curl
Διόρθωσε αποτυχίες πιστοποιητικών SSL, παλιά ca-certificates, αποτυχημένα downloads και προβλήματα σύνδεσης των curl και wget.
CERTIFICATE_VERIFY_FAILEDcurl: (60)
Διόρθωση Πρόσβασης Στον Αποθηκευτικό Χώρο Του Android
Διόρθωσε την πρόσβαση του Termux στον κοινόχρηστο χώρο, στον φάκελο Downloads και στα αρχεία του Android χωρίς να απαιτείται root.
Permission denied/storage/emulated/0
Διόρθωση Του «Bad Interpreter» Στο Bash
Διόρθωσε «bad interpreter», ελλιπές `/bin/bash`, γραμμές CRLF, λάθος shebang και shell scripts από υπολογιστή που αποτυγχάνουν στο Android.
bad interpreterNo such file or directory
Διόρθωση Γραμμών CRLF Από Windows
Διόρθωσε «bad interpreter», παράξενα συντακτικά σφάλματα και αποτυχίες shell scripts που προκαλούνται από γραμμές Windows CRLF.
bad interpreter^M
Εναλλακτικές Του PyInstaller Στο Android
Μάθε γιατί το PyInstaller συχνά αποτυγχάνει στο Android και χρησιμοποίησε καλύτερους τρόπους για εκκίνηση, συσκευασία, ZIP και ασφαλή διανομή Python εργαλείων.
PyInstallerAlternatives
Διόρθωση Σφαλμάτων Κωδικοποίησης Και Unicode Στην Python
Διόρθωσε UnicodeDecodeError, UnicodeEncodeError, χαλασμένα ελληνικά, ειδικά σύμβολα και προβλήματα κωδικοποίησης αρχείων σε Python scripts.
PythonUnicode
Διόρθωση Σφαλμάτων Requests, SSL Και API
Διόρθωσε αποτυχίες της requests, timeouts API, σφάλματα πιστοποιητικών SSL, λανθασμένες JSON απαντήσεις και προβλήματα σύνδεσης σε scripts Termux.
requestsErrors
Διόρθωση Shebang Και `/Usr/Bin/Env Python`
Διόρθωσε scripts με λάθος διαδρομή Python, ελλιπές env, shebang από υπολογιστή ή λανθασμένη απευθείας εκτέλεση στο Termux.
PythonShebang
Εγκατάσταση Συνηθισμένων Βιβλιοθηκών Python
Εγκατέστησε κοινές βιβλιοθήκες Python με ασφαλή σειρά και αναγνώρισε πότε ένα πακέτο χρειάζεται πρώτα εξαρτήσεις συστήματος του Termux.
InstallCommon
Διόρθωση Σφαλμάτων Σε Αρχεία JSON
Έλεγξε JSON αρχεία και βρες ελλιπή κόμματα, χαλασμένα εισαγωγικά, άκυρους χαρακτήρες και κατεστραμμένο περιεχόμενο από Android editors.
JSONDecodeErrorExpecting value
Διόρθωση «Εντολή Not Found» Και Ελλιπών Πακέτων
Εξακρίβωσε αν λείπει μια εντολή, αν το όνομα του πακέτου είναι λάθος ή αν χρειάζεται επισκευή το ευρετήριο αποθετηρίων του Termux.
CommandFound
Μεθοδικός Εντοπισμός Σφαλμάτων Python
Ακολούθησε σωστή σειρά debugging για Python στο Termux: σύνταξη, paths, modules, δικαιώματα, κωδικοποίηση, APIs, logs και καθαρές επανεκτελέσεις.
PythonDebug
Εικονικό Περιβάλλον Python Στο Termux
Χρησιμοποίησε venv όταν διαφορετικά projects χρειάζονται διαφορετικές βιβλιοθήκες Python και απέφυγε την ανάμειξη εργαλείων DedSec με πειράματα.
PythonVirtual
Διόρθωση Ελέγχου Ταυτότητας GitHub Μέσω SSH Στο Termux
Ρύθμισε την ταυτοποίηση GitHub στο Termux με HTTPS token ή κλειδί SSH, χωρίς να τη συγχέεις με τον κανονικό κωδικό του λογαριασμού σου.
Permission denied (publickey)Host key verification failed
Διόρθωση Ονόματος Και Email Στο Git
Διόρθωσε τα Git μηνύματα «please tell me who you are» και «unable to auto-detect email address» ρυθμίζοντας σωστά τα user.name και user.email.
IdentityError
Κλωνοποίηση Αποθετηρίου GitHub Στο Termux
Διόρθωσε αποτυχίες git clone στο Android, όπως ελλιπές Git, λάθος φάκελος, σύγχυση ταυτοποίησης και μη έγκυρη διεύθυνση repository.
GitHubClone
Διόρθωση Ελέγχου Ταυτότητας GitHub Με Token
Χρησιμοποίησε με ασφάλεια personal access token του GitHub όταν αποτυγχάνει η ταυτοποίηση με κωδικό, χωρίς να εκθέτεις το token σε εντολές ή δημόσια αρχεία.
Authentication failedpassword authentication was removed
Διόρθωση Αποτυχημένου Push Μεγάλων Αρχείων Στο Git
Διόρθωσε αποτυχίες push που προκαλούνται από μεγάλα ZIP, PDF, βίντεο, φακέλους build, cache ή μεγάλα αρχεία που μπήκαν κατά λάθος σε commit.
GH001exceeds GitHub file size limit
Βασική Διαχείριση Branches Στο Git
Χρησιμοποίησε Git branches στο Android για να δοκιμάζεις αλλαγές χωρίς να καταστρέφεις το κύριο project ή την έκδοση που λειτουργεί.
Branches
Επίλυση Conflicts Μετά Από Git Pull
Διαχειρίσου τοπικές αλλαγές, merge conflicts, stash και pull με ασφαλές backup πριν ενημερώσεις ένα GitHub project από το Termux.
CONFLICTcould not apply
Ενημέρωση GitHub Pages Από Το Termux Χωρίς Προβλήματα
Ακολούθησε καθαρή ροή εργασίας από κινητό για επεξεργασία στατικής ιστοσελίδας, έλεγχο συνδέσμων, commit και ασφαλές push στο GitHub Pages.
UpdateGitHub
Επιδιόρθωση Χαλασμένης Εγκατάστασης Του DedSec
Διάγνωσε μια εγκατάσταση του DedSec Project που σταμάτησε να λειτουργεί λόγω ελλιπών modules, λάθος φακέλου, αποτυχημένης ενημέρωσης ή προβλήματος αποθήκευσης.
BrokenDedSec
Εγκατάσταση Του DedSec Project Στο Android
Εγκατάστησε βήμα προς βήμα το DedSec Project σε Android χωρίς root, από το Termux και το GitHub clone έως τα βασικά πακέτα και την πρώτη καθαρή εκτέλεση.
InstallDedSec
Δημιουργία Εργαλείου Σε Ύφος DedSec
Σχεδίασε ένα ασφαλές εργαλείο στο ύφος του DedSec με μενού, σωστούς φακέλους, logs, επιλογή γλώσσας, βοήθεια και καθαρή έξοδο.
DedSec-StyleTool
Ενημέρωση Του DedSec Project
Ενημέρωσε έναν υπάρχοντα φάκελο του DedSec Project χωρίς να χάσεις τοπικά αρχεία, outputs, προσωπικές αλλαγές ή αποθηκευμένη εργασία.
UpdateDedSec
Ο Τοπικός Server Δεν Ανοίγει Στο Android
Διόρθωσε έναν τοπικό server που δεν ανοίγει στον browser, ελέγχοντας τη διεύθυνση σύνδεσης, το port, τον φάκελο, τη συμπεριφορά του Android και το σωστό URL.
Connection refusedThis site can’t be reached
Διόρθωση Του «Port Already In Use» Στο Termux
Βρες και σταμάτησε την παλιά διεργασία που χρησιμοποιεί ένα port πριν επανεκκινήσεις Flask, Socket.IO, http.server ή τοπικό dashboard.
Address already in useEADDRINUSE
Συμβουλές Για Browser Και Android WebView Στο Termux
Διόρθωσε παλιά cache, λανθασμένη συμπεριφορά browser, CSS που δεν ανανεώνεται, προβλήματα τοπικών paths και αποτυχίες refresh κατά τις δοκιμές ιστοσελίδων.
BrowserTips
Δημιουργία Προσωρινού Συνδέσμου Με Cloudflared
Κατανόησε τα τοπικά URLs, τις δοκιμές στον browser του κινητού, τα Cloudflared tunnels, την κοινή χρήση με QR και τα ασφαλή όρια προσωρινών servers.
ShareLocal
Διόρθωση Εφαρμογής Flask Που Δεν Φορτώνει
Εντόπισε γιατί μια εφαρμογή Flask δεν φορτώνει, ελέγχοντας host, port, templates, static αρχεία, debug output και το URL του browser.
Connection refusedAddress already in use
Τοπική Ιστοσελίδα Με Python Server
Εκτέλεσε μια τοπική ιστοσελίδα, dashboard ή Python server από το Termux και απέφυγε συνηθισμένα λάθη σε ports, paths και URLs του Android.
CreateLocal
Διόρθωση Σφαλμάτων WebSocket Και Socket.IO
Διόρθωσε προβλήματα WebSocket ή Flask-SocketIO που προκαλούνται από ports, ασύμβατες εκδόσεις, CORS, μικτά URLs και διακοπές διεργασιών στο παρασκήνιο.
WebSocket connection failed400 Bad Request
Διόρθωση Scripts Του Termux:Widget
Διόρθωσε shortcuts του Termux:Widget, λάθος φάκελο widget, ελλιπές shebang, προβλήματα δικαιωμάτων και scripts που δεν εμφανίζονται.
Termux:WidgetHelp
Διατήρηση Του Termux Σε Λειτουργία Στο Παρασκήνιο
Μείωσε τις διακοπές του Termux από το Android σε scripts, τοπικούς servers, μεγάλα downloads και ροές εργασίας του DedSec χωρίς root.
KeepTermux
Διόρθωση Προβλημάτων Του Termux:API
Ρύθμισε σωστά το Termux:API, διόρθωσε δικαιώματα ειδοποιήσεων στο Android 13+ και δοκίμασε εντολές clipboard, μπαταρίας και ειδοποιήσεων.
API_ERRORcommand not found
Τι Μπορεί Και Τι Δεν Μπορεί Να Κάνει Το Termux Χωρίς Root
Κατανόησε τα πραγματικά όρια του Android χωρίς root ώστε να δημιουργείς εργαλεία που λειτουργούν αξιόπιστα αντί να συγκρούονται με το λειτουργικό σύστημα.
RootLimits
Ιδέες Για Χρήσιμα Scripts Στο Termux
Δες πρακτικές και ασφαλείς ιδέες για scripts χωρίς root, όπως οργάνωση αρχείων, offline σημειώσεις, αναζήτηση, έξοδα, backups και βοηθήματα τύπου DedSec.
UsefulNo-Root
Δημιουργία Μενού Σε Python Για Το Termux
Δημιούργησε αξιόπιστα Python εργαλεία με μενού, αρχείο ρυθμίσεων JSON, logs, ασφαλείς φακέλους, έλεγχο εισόδου και δομή που ενημερώνεται εύκολα.
CreateReliable
Εκμάθηση Python Δημιουργώντας Πρακτικά Εργαλεία
Μάθε Python στο Android δημιουργώντας μικρά χρήσιμα εργαλεία για μενού, αρχεία, σημειώσεις, backups, logs, τοπικές σελίδες και ρυθμίσεις JSON.
LearnPython
Διαδρομή Εκμάθησης Termux
Ακολούθησε ξεκάθαρη σειρά μάθησης για Termux, βασικές εντολές Linux, Python, GitHub, τοπικές ιστοσελίδες, backups και εργαλεία του DedSec.
LearningRoadmap
Ασφαλείς Ιδέες Αυτοματοποίησης Στο Termux
Δες χρήσιμες ιδέες αυτοματοποίησης χωρίς root για backups, υπενθυμίσεις, logs, καθαρισμό, τοπικούς ελέγχους και προσωπικές ροές εργασίας.
SafeAutomation
Δημιουργία Καλύτερου README
Δημιούργησε χρησιμότερα README με εγκατάσταση, δομή φακέλων, troubleshooting, screenshots, σαφείς προειδοποιήσεις ασφάλειας και συνδέσμους υποστήριξης.
BetterREADME
Εγκατάσταση DedSec Project σε Linux
Εγκατάστησε σωστά το DedSec σε Ubuntu, Kali Linux ή Linux Mint με apt, Setup.sh, το τοπικό .venv και τον κοινό Run.sh launcher.
Linux
DedSec Linux venv & Paths
Μάθε τα DedSec/.venv, Compat/bin, Downloads output paths, Bash/Zsh startup files και πού αποθηκεύουν αρχεία τα Linux εργαλεία.
Linux
Επιδιόρθωση DedSec Linux Setup
Επιδιόρθωσε χαλασμένο DedSec desktop setup ελέγχοντας apt packages, ξαναδημιουργώντας μόνο το project .venv και τρέχοντας ξανά το ασφαλές update setup.
Linux
Ενημέρωση DedSec Project σε Linux
Ενημέρωσε υπάρχον DedSec checkout σε Ubuntu, Kali Linux ή Linux Mint με Git, Setup.sh --update-only και τον κανονικό Run.sh launcher.
Linux
Δημιουργία Και Επαναφορά Αντιγράφων Ασφαλείας Στο Termux
Δημιούργησε αξιόπιστα ZIP backups, απέφυγε την αντικατάσταση σημαντικών αρχείων και επανέφερε έργα Termux αφού πρώτα ελέγξεις το περιεχόμενό τους.
BackupRestore
Τοπικός Έλεγχος Για Σπασμένους Συνδέσμους
Έλεγξε από το κινητό τοπικά HTML αρχεία για χαλασμένους εσωτερικούς συνδέσμους, ελλιπείς τίτλους και περιγραφές, λάθος canonicals και προβλήματα sitemap.
CheckBroken
Ασφαλής Καθαρισμός Cache Στο Termux
Ελευθέρωσε χώρο χωρίς να διαγράψεις σημαντικά projects, καθαρίζοντας προσεκτικά cache πακέτων, παλιά downloads και προσωρινά αρχεία build.
CleanCache
Ιστορικό Εντολών Και Aliases Στο Termux
Αναζήτησε προηγούμενες εντολές, επανάλαβε με ασφάλεια συνηθισμένες εργασίες και δημιούργησε aliases μόνο για ακίνδυνες συντομεύσεις.
HistoryAliases
Συνηθισμένοι Κωδικοί Εξόδου Στο Termux
Κατανόησε γιατί μια εντολή επιστρέφει μη μηδενικό κωδικό, πώς ελέγχεται το `$?` και πώς οι exit codes βοηθούν στον εντοπισμό σφαλμάτων.
ExitCodes
Εντοπισμός Σφαλμάτων Με Αρχεία Καταγραφής
Αποθήκευσε τα σφάλματα του τερματικού σε log ώστε να τα συγκρίνεις, να ζητήσεις βοήθεια ή να διορθώσεις ένα script χωρίς να χαθεί το output.
DebugLogs
Λήψη Αρχείων Με curl Και wget
Κατέβασε αρχεία με ασφάλεια, όρισε σωστό όνομα εξόδου, συνέχισε ένα διακοπέν download όπου γίνεται και απέφυγε τον λάθος φάκελο αποθήκευσης.
curlwget
Επεξεργασία Αρχείων Με Το nano
Μάθε να ανοίγεις, να αποθηκεύεις και να κλείνεις αρχεία με το nano, χωρίς να χαλάς τις εσοχές ενός Python script.
EditWith
Εναλλακτικές Του Crontab Στο Android Και Το Termux
Κατανόησε γιατί το cron δεν είναι αξιόπιστο σε Android χωρίς root και χρησιμοποίησε ασφαλέστερες εναλλακτικές για υπενθυμίσεις, backups και ελέγχους.
CronAlternatives
Επεξεργασία HTML, CSS Και JavaScript Από Κινητό
Επεξεργάσου HTML, CSS και JavaScript από κινητό, απέφυγε χαλασμένα styles και buttons και δοκίμασε τις σελίδες πριν το deploy στο GitHub Pages.
EditFiles
Βελτίωση Απόδοσης Σε Οικονομικά Κινητά
Κάνε το Termux ομαλότερο σε κινητά με λίγη RAM, αποφεύγοντας βαριά builds, περιορίζοντας ατέρμονες διεργασίες και κρατώντας καθαρό τον χώρο.
PerformanceTips
Διαχείριση Μεγάλων Έργων Από Κινητό
Κράτησε μεγάλα projects που φτιάχνονται από κινητό οργανωμένα με φακέλους, changelog, TODO, backups, εντολές δοκιμών και απλά release ZIPs.
LargeProjects
Δημιουργία Φακέλου Τεκμηρίωσης Για Χρήση Εκτός Σύνδεσης
Οργάνωσε τοπικούς οδηγούς, εντολές, σημειώσεις, PDF και οδηγίες έργων ώστε να μπορείς να δουλεύεις ακόμη και χωρίς σύνδεση στο διαδίκτυο.
OfflineDocs
Πρακτική Διαδικασία Προγραμματισμού Από Κινητό
Ακολούθησε πρακτική ροή εργασίας αποκλειστικά από Android για scripts, ιστοσελίδες, τοπικούς servers, GitHub commits και αξιόπιστα backups.
PhoneCoding
Καθαρή Δομή Φακέλων Για Έργα Στο Termux
Οργάνωσε scripts, δεδομένα, backups, logs, ρυθμίσεις, outputs και αρχεία ιστοσελίδας ώστε τα projects να παραμένουν καθαρά και εύκολα στην ενημέρωση.
ProjectFolder
Ασφαλής Διαδικασία Ενημέρωσης Του Termux
Χρησιμοποίησε εβδομαδιαία ρουτίνα για ενημέρωση πακέτων, backup έργων, έλεγχο Git, καθαρισμό cache και προστασία εργαλείων που ήδη λειτουργούν.
SafeUpdate
Ασφαλής Αποθήκευση API Keys Σε Αρχείο `.Env`
Κράτησε API keys έξω από δημόσια GitHub commits με τοπικά αρχεία περιβάλλοντος, σωστά δικαιώματα chmod και κανόνες `.gitignore`.
KeysSafely
Έλεγχος SEO Ιστοσελίδας Από Κινητό
Έλεγξε τίτλους, περιγραφές, sitemap, robots.txt, εσωτερικούς συνδέσμους και χρησιμότητα περιεχομένου πριν ενημερώσεις μια ιστοσελίδα GitHub Pages.
Checklist
Λίστα Ελέγχου Για Προβλήματα Στο Termux
Χρησιμοποίησε επαναλαμβανόμενη λίστα ελέγχου για σχεδόν κάθε πρόβλημα Termux: φάκελος, εντολή, πακέτο, Python, αποθήκευση, Git και logs.
TroubleshootingChecklist
Δεν βρέθηκαν οδηγοί για αυτή την αναζήτηση.
### ButSystem.py [el]
Source-URL: https://ded-sec.space/el/Pages/butsystem-exclusive.html
ButSystem.py
Το ButSystem.py είναι ένας αυτοφιλοξενούμενος, local-first ιδιωτικός χώρος εργασίας για Termux που συνδυάζει ιδιωτική επικοινωνία, κρυπτογραφημένες εγγραφές, προηγμένο vault αρχείων, ειδήσεις και καιρό, καθώς και αυτόματα δημιουργημένους τοπικούς συνδέσμους, Cloudflared και Tor σε ένα ενιαίο περιβάλλον browser.
Αποκλειστικό στο DedSec Project — περιλαμβάνεται δωρεάν
Το ButSystem είναι ένα από τα πιο ξεχωριστά ολοκληρωμένα συστήματα του project και έχει δημιουργηθεί ειδικά για το οικοσύστημα του DedSec Project. Παρότι αποτελεί ένα από τα πιο αποκλειστικά εργαλεία του, η έκδοση που περιγράφεται εδώ διατίθεται δωρεάν μέσα από τα αρχεία και το repository.
Βασικές Περιοχές Λειτουργιών Του ButSystem
Το ButSystem.py συγκεντρώνει συνομιλίες, ομάδες, stories, αρχεία, προφίλ, κρυπτογραφημένες εγγραφές, καιρό, ειδήσεις, ελέγχους ασφάλειας, εργαλεία διαχείρισης και ευέλικτη τοπική ή απομακρυσμένη πρόσβαση σε ένα αυτοφιλοξενούμενο περιβάλλον.
Συνομιλίες, Ομάδες & Stories
Ζωντανά προσωπικά μηνύματα, ομαδικές συνομιλίες, αποθηκευμένα μηνύματα, GIFs, φωνητικές σημειώσεις, κοινή χρήση αρχείων, χώρος συζήτησης, stories και λειτουργίες κλήσεων όπου το browser και η συσκευή το υποστηρίζουν.
Ασφάλεια, Πρόσβαση & Έλεγχος
Έγκριση χρηστών, αιτήματα πρόσβασης συσκευών, σύνδεση από αποθηκευμένη συσκευή, προαιρετικό 2FA με ερωτήσεις ασφαλείας, κλειδώματα συνομιλιών με PIN, κατάσταση σύνδεσης, αναφορές, σελίδες διαχείρισης και ρυθμίσεις εμφάνισης ή λογαριασμού.
Προφίλ, Vault & Εργαλεία
Επεξεργασία προφίλ, προηγμένο ιδιωτικό vault αρχείων, προαιρετικές ζωντανές τοποθεσίες, κρυπτογραφημένες εγγραφές Profiler με αναζήτηση, εισαγωγή, εξαγωγή και συνδυασμό, διαχείριση bounties από administrator και το ενσωματωμένο Face Detector.
Καιρός, Σύνδεσμοι & Κοινή Χρήση
Αναζήτησε καιρό βάσει τοποθεσίας ή τρέχουσας θέσης, δες αναλυτική πρόγνωση έως 14 ημερών και χρησιμοποίησε συνδέσμους HTTPS, Cloudflared ή Tor με QR κωδικούς για λήψη. Τα αρχεία του vault μπορούν επίσης να κοινοποιούνται μέσω ελεγχόμενων συνδέσμων με προαιρετικό κωδικό, λήξη και ανάκληση.
Όλες Οι Οθόνες & Κουμπιά (Πλήρες)
Αντί για μια μεγάλη λίστα κουμπί-προς-κουμπί, αυτή η ενότητα εξηγεί κάθε περιοχή του ButSystem όπως η σελίδα Learn εξηγεί τα εργαλεία: ανά περιοχή λειτουργιών, τι κάνεις εκεί και τι είδους χειριστήρια θα βρεις όταν την ανοίξεις.
Πλοήγηση & Ροή Μενού
Το μενού πλοήγησης είναι ο βασικός κόμβος ελέγχου του ButSystem. Από εκεί μετακινείσαι ανάμεσα σε συνομιλίες, αποθηκευμένα μηνύματα, συζητήσεις, ομάδες, κλήσεις, stories, ζωντανές τοποθεσίες, αρχεία, ειδήσεις, καιρό, προφίλ, Profiler, αναφορές, ειδοποιήσεις, σελίδες διαχείρισης, ρυθμίσεις, βοήθεια και ενέργειες σύνδεσης ή αποσύνδεσης. Η επιλογή γλώσσας διατηρεί το περιβάλλον διαθέσιμο στα Αγγλικά και στα Ελληνικά.
Ταυτοποίηση & Πρόσβαση
Το ButSystem ανοίγει μέσα από ροή αρχικής σελίδας, φόρτωσης, σύνδεσης και εγγραφής και μετά προσθέτει επιπλέον έλεγχο πρόσβασης όπου χρειάζεται. Αυτό περιλαμβάνει έγκριση χρήστη, αιτήματα πρόσβασης συσκευών, σύνδεση από αποθηκευμένη συσκευή, προαιρετικούς ελέγχους δύο παραγόντων με ερωτήσεις ασφαλείας και ενέργειες ανάκτησης ή επαναφοράς κωδικού ώστε η πρόσβαση να μένει δεμένη με εγκεκριμένους χρήστες και συσκευές.
Άμεσα Μηνύματα
Η περιοχή προσωπικών μηνυμάτων είναι σχεδιασμένη για καθημερινές ιδιωτικές συνομιλίες. Μπορείς να στείλεις, να επεξεργαστείς ή να διαγράψεις μηνύματα, να αναζητήσεις περιεχόμενο, να επισυνάψεις πολυμέσα ή αρχεία, να χρησιμοποιήσεις GIF, να ηχογραφήσεις φωνητικές σημειώσεις και να ενεργοποιήσεις προστασίες όπως κλείδωμα με PIN και ένδειξη σύνδεσης.
Discussion Room
Η περιοχή «Συζήτηση» λειτουργεί ως κοινή ροή και όχι ως προσωπική συνομιλία. Προσφέρει δημοσιεύσεις ανά κατηγορία, αναζήτηση, ανανέωση, φόρτωση επιπλέον περιεχομένου και άνοιγμα συγκεκριμένων καταχωρήσεων σε έναν ήρεμο κοινόχρηστο χώρο, ξεχωριστό από τα προσωπικά μηνύματα.
Ομάδες
Η περιοχή «Ομάδες» επιτρέπει τη δημιουργία κοινόχρηστων χώρων με ρόλους και εργαλεία εποπτείας. Μπορείς να δημιουργήσεις ομάδα, να προσκαλέσεις ή να προσθέσεις μέλη, να ελέγξεις τη λίστα τους, να διαχειριστείς ενέργειες ιδιοκτήτη ή διαχειριστή, να αποχωρήσεις όταν χρειάζεται και να συνεχίσεις τη συζήτηση στην αντίστοιχη ομαδική συνομιλία με μηνύματα και συνημμένα.
Κλήσεις & Live Επικοινωνία
Όπου το επιτρέπουν το πρόγραμμα περιήγησης και τα δικαιώματα της συσκευής, το ButSystem υποστηρίζει έναρξη, συμμετοχή, αποδοχή, απόρριψη, σίγαση και τερματισμό ζωντανής κλήσης. Η εμπειρία εξαρτάται από την άδεια μικροφώνου και το τρέχον περιβάλλον του προγράμματος περιήγησης.
Stories & Live Τοποθεσίες
Το ButSystem καλύπτει και πιο ελαφριά εργαλεία ζωντανής κοινοποίησης. Τα Stories παρέχουν χειριστήρια δημιουργίας, προβολής και αντιδράσεων, ενώ το Live Locations προορίζεται για προαιρετική κοινοποίηση τοποθεσίας με έναρξη, διακοπή, ανανέωση και σαφή μηνύματα συναίνεσης ή προειδοποίησης πριν κοινοποιηθεί ενεργά η τοποθεσία.
Αρχεία, Vault & Αποθηκευμένα Media
Η περιοχή Αρχεία και Vault λειτουργεί σαν ιδιωτικός server-style file manager. Υποστηρίζει φακέλους και πλοήγηση, κανονικά ή τμηματικά uploads με ακύρωση, αναζήτηση, κατηγορίες, φίλτρα τύπου αρχείου, ταξινόμηση, προεπισκοπήσεις, άνοιγμα και λήψη, μετονομασία, μετακίνηση, μαζικές ενέργειες, διαγραφή, σχόλια, ιστορικό δραστηριότητας, αναλυτικά στοιχεία μεγέθους, MIME και ημερομηνιών, προαιρετικό SHA-256 και ελεγχόμενους συνδέσμους κοινής χρήσης με προαιρετικό κωδικό, χρόνο λήξης και ανάκληση.
Προφίλ, Λογαριασμός & Εμφάνιση
Η δική σου περιοχή προφίλ διαχειρίζεται την ταυτότητα και την παρουσίαση του λογαριασμού. Από εκεί οι χρήστες μπορούν να βλέπουν ή να επεξεργάζονται δεδομένα προφίλ, να αποθηκεύουν αλλαγές, να ανεβάζουν ή να αφαιρούν εικόνα προφίλ, να ρυθμίζουν ρυθμίσεις λογαριασμού, να ελέγχουν επιλογές εμφάνισης και να έχουν πρόσβαση σε ισχυρότερα ενέργειες λογαριασμού όπως διαγραφή λογαριασμού ή το επικίνδυνη ζώνη οριστικής διαγραφής όπου αυτό το ροή εργασίας είναι ενεργό.
Profiler, Διαχείριση Υποθέσεων & Face Detector
Η πλευρά του Profiler είναι εκεί όπου το ButSystem γίνεται δομημένος χώρος πληροφοριών. Υποστηρίζει κρυπτογραφημένες εγγραφές Profiler, ροές προβολής και επεξεργασίας, τοπική αναζήτηση, εργαλεία εξαγωγής και συνδυασμού, διαχείριση bounties όπου αυτό το module είναι ενεργό και την ενσωματωμένη περιοχή Face Detector που χρησιμοποιείται για τοπικές διαδικασίες ανίχνευσης προσώπου και υποστήριξη σύγκρισης ομοιότητας μέσα στο ευρύτερο περιβάλλον του ButSystem.
Reports, Admin & Ρυθμίσεις Ασφάλειας
Το επίπεδο ελέγχου του ButSystem χωρίζεται σε αναφορές, σελίδες διαχείρισης και ρυθμίσεις ασφάλειας. Εδώ οι χρήστες δημιουργούν ή ενημερώνουν αναφορές, εδώ οι διαχειριστές εγκρίνουν ή απορρίπτουν αιτήματα πρόσβασης και συσκευών, διαχειρίζονται άτομα και αρχεία χρηστών και εδώ οι κάτοχοι λογαριασμού ρυθμίζουν ρυθμίσεις ελέγχου δύο παραγόντων, κανόνες σύνδεσης συσκευών, διαδικασίες επαναφοράς κωδικού, επιλογές ιδιωτικότητας και άλλες δικλείδες που κρατούν το χώρος εργασίας οργανωμένο και ελεγχόμενο.
Νέα & Θεματική Ροή
Η περιοχή Ειδήσεις δίνει στο χώρος εργασίας έναν ξεχωριστό χώρο για θεματικές ενημερώσεις χωρίς να ανακατεύονται με τα ιδιωτικές συνομιλίες. Οι χρήστες μπορούν να ανοίγουν το ροή ειδήσεων, να κινούνται ανάμεσα στα διαθέσιμα θέματα, να κάνουν ανανέωση στην τρέχουσα προβολή και να διαβάζουν ενημερώσεις από το ίδιο τοπικό περιβάλλον που χρησιμοποιείται για το υπόλοιπο ButSystem.
Καιρός & Προβλέψεις
Μπορείς να αναζητήσεις πόλη, χωριό ή ταχυδρομικό κώδικα, να χρησιμοποιήσεις την τρέχουσα τοποθεσία της συσκευής, να ανανεώσεις τα αποτελέσματα και να δεις τρέχουσες συνθήκες μαζί με πρόγνωση έως 14 ημερών. Η σελίδα μπορεί να εμφανίσει πραγματική και αισθητή θερμοκρασία, υγρασία, άνεμο και ριπές, βροχόπτωση, νεφοκάλυψη, πίεση, πιθανότητα βροχής, UV, ανατολή και δύση. Οι συντεταγμένες χρησιμοποιούνται για το αίτημα και δεν αποθηκεύονται από το ButSystem.
Αυτόματοι Σύνδεσμοι HTTPS, Cloudflared & Tor
Κατά την εκκίνηση, το ButSystem σερβίρει τοπικό HTTPS με αυτοδημιούργητο self-signed certificate, εμφανίζει συνδέσμους LAN και localhost και δοκιμάζει αυτόματα να δημιουργήσει Cloudflared quick tunnel και Tor hidden service. Η αρχική σελίδα εμφανίζει όσους συνδέσμους είναι διαθέσιμοι και δημιουργεί νέο QR κωδικό για λήψη για καθέναν από αυτούς.
Παρουσία, Παράδοση & Live Κατάσταση
Το ButSystem κρατά τις ενεργές περιοχές άμεσο και ενημερωμένο με κατάσταση σύνδεσης μέσω περιοδικού ελέγχου, μετρητές μη αναγνωσμένα μηνύματα, κατάσταση παράδοσης και ανάγνωσης, περιοδικό έλεγχο για νέα προσωπικά ή ομαδικά μηνύματα και ζωντανές διαδικασίες ανανέωσης για συζητήσεις, locations, calls και άλλα δεδομένα που αλλάζουν. Έτσι το περιβάλλον παραμένει ενημερωμένο χωρίς να χρειάζεται ξεχωριστό εφαρμογή υπολογιστή.
Συνημμένα, Προεπισκοπήσεις & Μεγάλα Αρχεία
Τα αρχεία διαχειρίζονται ανάλογα με το σημείο χρήσης τους. Τα προσωπικά μηνύματα, οι ομάδες, οι συζητήσεις και τα stories υποστηρίζουν τα αντίστοιχα συνημμένα αρχεία, εικόνες, φωνητικό ή άλλο πολυμεσικό υλικό, τα προφίλ υποστηρίζουν εικόνες προφίλ και το vault προσθέτει προεπισκοπήσεις, metadata, οργάνωση, κοινή χρήση και τμηματική μεταφορά για μεγαλύτερα uploads ώστε να μην εξαρτώνται από ένα μόνο εύθραυστο αίτημα.
Τοπική Προστασία Δεδομένων & Μόνιμη Αποθήκευση
Τα αρχεία λογαριασμών, ρυθμίσεις, messages, κρυπτογραφημένα πεδία κειμένου, κλειδιά, αρχεία καταγραφής και δεδομένα χώρου εργασίας διατηρούνται στους δικούς του τοπικούς φακέλους του ButSystem. Το script προτιμά το κοινόχρηστο φάκελο Homework του κινητού όταν είναι διαθέσιμο ώστε σημαντικό κατάσταση της εφαρμογής να μπορεί να επιβιώσει από επανεγκατάσταση του Termux, ενώ το ευαίσθητο κείμενο και το Profiler content χρησιμοποιούν το ενσωματωμένο επίπεδο κρυπτογράφησης.
Αναζήτηση, Εξαγωγή & Διαχείριση Εγγραφών
Αρκετές περιοχές είναι σχεδιασμένες για αναζήτηση, φιλτράρισμα και μετακίνηση πληροφοριών, όχι μόνο για προβολή. Οι χρήστες μπορούν να αναζητούν συνομιλίες, καταχωρήσεις συζητήσεων, αρχεία του vault, αναφορές και εγγραφές Profiler, να φιλτράρουν και να ταξινομούν το vault, να ανοίγουν αναλυτικές προβολές, να εισάγουν, να εξάγουν ή να συνδυάζουν εγγραφές Profiler και να κατεβάζουν συνημμένα όταν χρειάζονται τοπικό αντίγραφο.
Παύση Απορρήτου, Αρχεία Καταγραφής & Έλεγχοι Ανάκτησης
Το σύστημα περιλαμβάνει λειτουργικές δικλείδες ασφαλείας για στιγμές όπου η πρόσβαση πρέπει να σταματήσει ή να ελεγχθεί. Τα ενέργειες παύσης και επαναφοράς απορρήτου μπορούν να προστατεύσουν προσωρινά το χώρος εργασίας, τα συμβάντα ασφαλείας γράφονται σε τοπικά αρχεία καταγραφής, οι διαχειριστές μπορούν να επιθεωρούν αρχεία καταγραφής και τα εργαλεία ανάκτησης καλύπτουν ξεχασμένους κωδικούς, εγκεκριμένες συσκευές, υποχρεωτική αποσύνδεση, διαγραφή λογαριασμού και διαδικασίες πλήρους επαναφοράς.
Ξέχασες Τον Κωδικό; Ξεκίνα Το ButSystem Από Την Αρχή
Χρησιμοποίησέ το μόνο όταν η ανάκτηση είναι αδύνατη και αποδέχεσαι ότι θα χαθούν όλοι οι παλιοί λογαριασμοί, κωδικοί, ρυθμίσεις, μηνύματα, αρχεία vault, κλειδιά και logs του ButSystem. Σταμάτησε πρώτα το ButSystem, τρέξε την εντολή reset για την πλατφόρμα σου και μετά άνοιξε ξανά το ButSystem.py ώστε να δημιουργήσει έναν εντελώς νέο χώρο εργασίας.
Προειδοποίηση: αυτές οι εντολές διαγράφουν μόνιμα τους φακέλους αποθηκευμένων δεδομένων του ButSystem. Δεν διαγράφουν το ίδιο το script ButSystem.py.
Termux (Android)
Αντιγραφήrm -rf "$HOME/storage/shared/Homework/ButSystem" "/storage/emulated/0/Homework/ButSystem" "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Ubuntu
Αντιγραφήrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Kali Linux
Αντιγραφήrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
Linux Mint
Αντιγραφήrm -rf "$HOME/Homework/ButSystem" "$HOME/ButSystem" "$HOME/.ButSystem_tor"
### Επικοινωνία & Συντελεστές [el]
Source-URL: https://ded-sec.space/el/Pages/contact-credits.html
Επικοινωνία & Συντελεστές
Επικοινώνησε με την ομάδα μας και γνώρισε τους ανθρώπους πίσω από το DedSec Project.
Επικοινωνία
WhatsApp
Προφίλ Telegram
Κανάλι Telegram
Διακομιστής Discord
X Προφίλ X
Συντελεστές
Δημιουργός: dedsec1121fk
Βοήθεια από: zyxen.gr Systems Engineered
Καλλιτέχνες: Christina Chatzidimitriou, 3A
Νομικά Έγγραφα: Lampros Spyrou
Συντήρηση Discord Server: Talha
Προηγούμενη Βοήθεια: Sal Scar, gr3ysec, lamprouil, UKI_hunter.
### Συχνές Ερωτήσεις [el]
Source-URL: https://ded-sec.space/el/Pages/faq.html
Συχνές Ερωτήσεις
Απαντήσεις σε πραγματικές ερωτήσεις για το DedSec Project, τα προγράμματά του, installation, Assistance guides, safety, compatibility, updates, repositories, contributions και support.
Βασικά Του Έργου
Τι Είναι Το DedSec Project;
Το DedSec Project είναι μια εργαλειοθήκη Termux σχεδιασμένη πρώτα για κινητά και ένα οργανωμένο οικοσύστημα ιστοσελίδων για μάθηση, οργάνωση scripts, έλεγχο συνδέσμων και αρχείων, υπεύθυνη εξοικείωση με το OSINT και επίλυση προβλημάτων Android και Termux με νόμιμο τρόπο.
Ποιος Το Δημιούργησε;
Το DedSec Project δημιουργήθηκε από τον Λουκά Φλώρο. Η σελίδα Σχετικά με τον Ιδρυτή εξηγεί πώς το ενδιαφέρον για το Watch Dogs, την τεχνολογία, την ιδιωτικότητα, το Termux και τον προγραμματισμό εξελίχθηκε στο project.
Είναι Το DedSec Project Μόνο Για Προγραμματιστές;
Όχι. Είναι σχεδιασμένο για άτομα που θέλουν να μάθουν Termux και να λύνουν πραγματικά ψηφιακά προβλήματα από Android κινητό. Οι αρχάριοι πρέπει να ξεκινήσουν από τον Οδηγό Εγκατάστασης, μετά Μάθε τα Εργαλεία και μετά Βοήθεια.
Χρειάζεται Root;
Το μεγαλύτερο μέρος του έργου λειτουργεί στο Android μέσω Termux χωρίς root. Αν κάποιο εργαλείο χρειάζεται ειδική άδεια, πρέπει να το εξηγεί πριν από τη χρήση.
Πλοήγηση Στην Ιστοσελίδα
Από Πού Πρέπει Να Ξεκινήσει Ένας Νέος Χρήστης;
Ξεκίνα από την κεντρική σελίδα, άνοιξε τον Οδηγό Εγκατάστασης, διάβασε το Μάθε για τα Εργαλεία και μετά χρησιμοποίησε τη Βοήθεια όταν πετύχεις συγκεκριμένο Termux ή DedSec πρόβλημα.
Τι Είναι Η Βοήθεια;
Η Βοήθεια αντικατέστησε το παλιό chat βοηθού. Περιλαμβάνει ανεξάρτητες και φιλικές προς τις μηχανές αναζήτησης σελίδες για εγκατάσταση Termux, άδειες αποθήκευσης, modules Python, σφάλματα pip, κλωνοποίηση GitHub, αποσυμπίεση, ενημερώσεις και χαλασμένες εγκαταστάσεις.
Γιατί Το FAQ Είναι Πλέον Μόνο Για Το Έργο;
Οι ερωτήσεις για το έργο παραμένουν εδώ. Η τεχνική αντιμετώπιση προβλημάτων του Termux μεταφέρθηκε στη Βοήθεια, ώστε κάθε θέμα να έχει τη δική του στοχευμένη σελίδα, πιο κατανοητή για τους χρήστες και τις μηχανές αναζήτησης.
Ποιες Πληρωμένες Επιλογές Είναι Διαθέσιμες Τώρα;
Χρησιμοποίησε τη Βοήθεια για δωρεάν εστιασμένες λύσεις και το εγχειρίδιο Termux για πλήρη διαδικασία διάγνωσης. Τα GitHub Sponsors tiers είναι $3 Sponsor, $9 Pro Supporter και $25 Ultimate Supporter· το $25 tier περιλαμβάνει την τρέχουσα βιβλιοθήκη πέντε ebooks σε Αγγλικά και Ελληνικά.
Εργαλεία, Ασφάλεια & Χρήση
Είναι Τα Εργαλεία Για Παράνομο Hacking;
Όχι. Το έργο προορίζεται για μάθηση, ευαισθητοποίηση σε θέματα ιδιωτικότητας, εξουσιοδοτημένες δοκιμές, διάγνωση προβλημάτων και βελτίωση της προσωπικής ροής εργασίας. Μη χρησιμοποιείς κανένα εργαλείο σε συστήματα ή λογαριασμούς που δεν σου ανήκουν ή δεν έχεις άδεια να ελέγξεις.
Πού Μπορώ Να Μάθω Τι Κάνει Κάθε Εργαλείο;
Άνοιξε το Μάθε για τα Εργαλεία. Αυτή η σελίδα εξηγεί τα εργαλεία και σε βοηθά να αποφασίσεις τι θα τρέξεις πριν αγγίξεις εντολές Termux.
Τι Είναι Το ButSystem.py;
Το ButSystem.py είναι ένας δωρεάν, αυτοφιλοξενούμενος χώρος εργασίας με τοπικό έλεγχο δεδομένων (local-first), που περιλαμβάνεται στο DedSec Project. Συνδυάζει συνομιλίες, ομάδες, ιστορίες, προφίλ, αρχεία, ελέγχους ασφάλειας και προσωρινούς συνδέσμους κοινής χρήσης. Διάβασε τη σχετική σελίδα για τις λειτουργίες, τις ρυθμίσεις πρόσβασης και τις οδηγίες ασφάλειας πριν από την εγκατάσταση ή την επαναφορά του.
Είναι Το Έργο Δίγλωσσο;
Ναι. Η ιστοσελίδα υποστηρίζει Αγγλικά και Ελληνικά μέσω επιλογής γλώσσας, ενώ όλες οι σελίδες Βοήθειας περιλαμβάνουν και τις δύο γλώσσες.
GitHub Sponsors & Βιβλιοθήκη Ebooks
Πρέπει Να Πληρώσω Για Το ButSystem;
Όχι. Το ButSystem περιλαμβάνεται δωρεάν μέσα στο DedSec Project. Η ειδική σελίδα του εξηγεί την έκδοση που περιλαμβάνεται και τα χαρακτηριστικά του.
Τι Περιλαμβάνουν Τα Επίπεδα GitHub Sponsors;
Το μηνιαίο tier των $3 προσθέτει GitHub sponsor badge, sponsor community access και το τρέχον βασικό private sponsor repository. Το $9 Pro Supporter περιλαμβάνει τα benefits των $3 μαζί με το επεκταμένο private sponsor set. Το $25 Ultimate Supporter περιλαμβάνει όλα του $9, μαζί με και τα πέντε τρέχοντα ebooks σε Αγγλικά και Ελληνικά. Η χρέωση της χορηγίας γίνεται από το GitHub.
Δες τα Sponsor Tiers
Ποια Ebooks Περιλαμβάνονται Στο Tier Των $25;
Η τρέχουσα βιβλιοθήκη του $25 Ultimate Supporter περιλαμβάνει: Data Analytics in Practice, Faith in the Digital Age, The Complete Termux Troubleshooting Handbook, Build and Publish a Website with AI from Your Phone και AI Website Prompt Library and Release Workbook. Η σελίδα Μάθε για τα Εργαλεία δίνει πλήρη περιγραφή για κάθε βιβλίο.
Δες Τη Βιβλιοθήκη Ebooks
Εγκατάσταση Και Συμβατότητα
Ποια Έκδοση Termux Πρέπει Να Χρησιμοποιήσω;
Χρησιμοποίησε επίσημη έκδοση Termux από F-Droid ή τις επίσημες εκδόσεις GitHub. Υπάρχει επίσης ξεχωριστός πειραματικός κλάδος Google Play για Android 11 και νεότερα, με διαφορετικούς περιορισμούς. Έλεγξε τις επίσημες οδηγίες εγκατάστασης και διατήρησε εφαρμογή και πρόσθετα από την ίδια πηγή.
Λειτουργεί Το DedSec Project Χωρίς Root;
Τα περισσότερα scripts του DedSec Project και το Assistance guides είναι σχεδιασμένα για κανονικές Android συσκευές χωρίς root. Λειτουργίες που απαιτούν protected Android areas, raw wireless interfaces ή system-level modification μπορεί να μην είναι διαθέσιμες.
Γιατί αποτυγχάνει η εγκατάσταση πακέτου ή βιβλιοθήκης Python;
Συχνές αιτίες είναι παλιά έκδοση Termux, ημιτελείς αναβαθμίσεις, μη υποστηριζόμενα έτοιμα πακέτα για τον επεξεργαστή, λίγος χώρος, προβλήματα αποθετηρίου ή εξάρτηση που χρειάζεται μεταγλώττιση. Χρησιμοποίησε τη Βοήθεια με πλήρες σφάλμα, έκδοση Android, αρχιτεκτονική και εντολή.
Μπορώ Να Χρησιμοποιήσω Το Project Σε Αδύναμο Κινητό;
Ναι για πολλά scripts, lessons και local utilities. Μεγάλα AI models, media processing, heavy scans και πολλοί servers μπορεί να είναι αργοί ή να εξαντλούν τη RAM. Ξεκίνα με lightweight επιλογές και κράτα ελεύθερο χώρο.
Κατεβάζει Ο Installer Αυτόματα Τα Requirements Που Λείπουν;
Πολλά launchers ελέγχουν common packages και Python modules, αλλά δεν λύνονται αυτόματα όλα τα Android, repository ή compiler προβλήματα. Διάβαζε κάθε prompt και κράτα backup προσωπικών αλλαγών.
Μπορεί Το Project Να Χρησιμοποιηθεί Offline;
Τα downloaded local scripts και η τεκμηρίωση μπορούν να λειτουργήσουν offline. Features που χρησιμοποιούν websites, APIs, repositories, maps, weather, public records ή remote services χρειάζονται σύνδεση.
Προγράμματα Και Στοιχεία
Τι Είναι Το Settings.py;
Το Settings.py είναι το κεντρικό control panel του DedSec Project και ο launcher του DedSec OS. Διαχειρίζεται updates, packages/modules, backups και offline transfer, Sponsors-Only access, prompt/GitHub/usage settings, HTTP Proxy & Tor utilities, menu style, auto-start και γλώσσα· το DedSec OS προσθέτει browser-native desktop με movable/resizable windows, Start/taskbar/Action Center, File Explorer και κοινά Open/Save dialogs, Notepad, Word/Excel/PowerPoint/PDF tools, photo/video/media apps, Terminal, Software Center, personalization, login/optional 2FA/recovery και Help & Troubleshooting με guided fixes και live diagnostics.
Τι Είναι Το Developer Base;
Το Developer Base συγκεντρώνει phone-first utilities για files, coding, project structure, local websites, notes και development workflows μέσα στο Termux.
Τι Κάνουν Τα File Converter.py Και File Type Checker.py;
Το File Type Checker βοηθά να ελέγξεις τον πραγματικό τύπο αρχείου αντί να εμπιστεύεσαι μόνο το extension. Το File Converter δίνει guided conversion workflows όπου υποστηρίζονται. Κράτα πάντα originals.
Τι Είναι Το Mobile Developer Setup.py;
Το Mobile Developer Setup.py δημιουργεί ένα ολοκληρωμένο developer workstation στο Termux αντί να εγκαθιστά μόνο λίγα πακέτα. Εγκαθιστά πολλαπλά language runtimes, compilers και build tools, databases, npm/Python developer utilities, Zsh/Oh My Zsh με Powerlevel10k, ρυθμίσεις UI του Termux και NvChad, και περιλαμβάνει workflows για backup, update, repair, restore και uninstall. Η ακριβής διαθεσιμότητα πακέτων μπορεί να εξαρτάται από την αρχιτεκτονική Android/Termux και τα upstream repositories.
Για Ποιο Σκοπό Είναι Τα Network Tools;
Υποστηρίζουν defensive learning, local diagnostics, link checks, QR creation, footprint awareness και authorized network observation. Δεν αποτελούν άδεια για scanning ή παρέμβαση σε ξένα συστήματα.
Τι Είναι Το Personal Information Capture;
Είναι high-risk training category που δείχνει πώς social engineering και browser permission requests μπορούν να εκθέσουν δεδομένα. Χρησιμοποίησέ το μόνο σε controlled demonstrations με ρητή ενημερωμένη συναίνεση.
Τι Είναι Τα Games Μέσα Στο Project;
Η ενότητα Games περιέχει local terminal και browser experiments όπως Pet Friends, Tamagotchi, Terminal Arcade και άλλα interactive projects. Δείχνουν scripting, state, menus και creative coding στο Android.
οδηγοί Βοήθειας
Είναι Το Assistance guides Μόνο Website;
Το website διδάσκει theory και structured instructions. Η πρακτική γίνεται τοπικά μέσω Termux και του Assistance.py companion, που ετοιμάζει safe workspaces και αποθηκεύει progress στη συσκευή.
Πού Αποθηκεύονται Τα Τοπικά Αρχεία Του DedSec;
Τα τοπικά δεδομένα και outputs του project αποθηκεύονται στα paths που αναφέρονται για κάθε εργαλείο. Τα platform-specific save paths εμφανίζονται στο Learn About The Tools.
Αγγίζουν Τα Practical Labs Τα Πραγματικά Μου Αρχεία;
Το companion δημιουργεί ξεχωριστά training folders με supplied samples. Κάποιο lesson μπορεί να ζητά έλεγχο δικών σου phone settings, αλλά πρέπει να το δηλώνει καθαρά. Μην τρέχεις destructive commands σε shared storage ή personal folders.
Είναι Τα Repair Και Custom ROM Lessons Γενικές Step-By-Step Οδηγίες Flashing;
Καμία universal procedure δεν είναι ασφαλής για κάθε model. Η τεκμηρίωση του project δίνει έμφαση σε model verification, documentation research, backups, risk assessment, dry runs και rollback planning. Ακολούθησε exact guide για το ακριβές model και region.
Μπορώ Να Χρησιμοποιήσω Το DedSec Χωρίς Internet;
Πολλά downloaded theory pages και local labs λειτουργούν offline. Research lessons, official-source verification, package installation και update checks χρειάζονται προσωρινό internet.
Πώς Συνεχίζω Ένα Practical Lab;
Χρησιμοποίησε τις σελίδες Assistance για το πρόβλημα που αντιμετωπίζεις και κράτα backups πριν αντικαταστήσεις ή επισκευάσεις αρχεία του project.
Μπορεί Ένα Lesson Να Χρειαστεί Περισσότερο Ή Λιγότερο Χρόνο;
Ναι. Οι ώρες είναι estimates για active setup, testing, verification και documentation. Device speed, εμπειρία, troubleshooting και βάθος evidence αλλάζουν τον πραγματικό χρόνο.
Ασφάλεια, Ιδιωτικότητα Και Νομικά Όρια
Συλλέγει Το Website Πληροφορίες Επισκεπτών;
Το site μπορεί να χρησιμοποιεί Google Tag Manager και analytics για visits, clicks, device information και approximate region-level statistics, όπως εξηγεί η Privacy Policy. Τα website analytics είναι ξεχωριστά από τα αρχεία του DedSec Project που αποθηκεύονται στη συσκευή σου.
Ανεβάζει Κρυφά Το DedSec Project Τα Αρχεία Μου;
Το public project πρέπει να ελέγχεται όπως κάθε source code. Μην εισάγεις secrets σε scripts που δεν έχεις επιθεωρήσει. Network-enabled tools πρέπει να δηλώνουν γιατί συνδέονται και να δοκιμάζονται με non-sensitive samples.
Μπορώ Να Χρησιμοποιήσω Fake Pages Ή Capture Tools Σε Άλλο Άτομο;
Μόνο με ρητή ενημερωμένη συναίνεση σε controlled training environment. Deception, credential collection, camera/microphone capture και location collection χωρίς authorization μπορεί να είναι παράνομα και επιβλαβή.
Σημαίνει Κάθε Antivirus Warning Ότι Ένα Script Είναι Malware;
Όχι αυτόματα, ειδικά για security tools, local servers ή obfuscated samples, αλλά δεν πρέπει να αγνοούνται. Έλεγξε source, permissions, network behavior και changed files πριν το τρέξεις.
Τι Πρέπει Να Γίνει Αν Contributor Αντιμετωπίσει Νομική Υπόθεση;
Πρέπει να γίνονται σεβαστά τα δικαιώματα, η πρόσβαση σε lawyer, το presumption of innocence και το due process. Η δημόσια συζήτηση πρέπει να βασίζεται σε verified records χωρίς παρεμπόδιση ερευνών ή απειλές.
Repositories, Ενημερώσεις Και Συνεισφορές
Ποια Είναι Η Διαφορά Main Και Backup Website;
Το main website είναι ded-sec.space. Το backup στο ded-sec.online υπάρχει για continuity αν το main domain ή hosting path δεν είναι διαθέσιμο. Repository-aware builds κρατούν ξεχωριστούς domain και path rules.
Ποιο Repository Περιέχει Το Main Website Source;
Το main website repository είναι dedsec1121fk/dedsec1121fk.github.io. Το sal-scar/ded-sec είναι backup mirror και το dedsec1121fk/test χρησιμοποιείται για review πριν το production.
Πώς Ενημερώνω Υπάρχουσα Εγκατάσταση DedSec Project;
Ακολούθησε το Update guide στη Βοήθεια ή το repository README. Κράτα backup changed settings, personal data και custom scripts πριν pull ή replacement, επειδή updates μπορεί να αλλάξουν filenames ή structure.
Μπορεί μια ενημέρωση να αντικαταστήσει τις αλλαγές μου;
Ναι, αν αντικαταστήσεις ολόκληρο τον κατάλογο του έργου. Κράτησε προσωπικές αλλαγές σε ξεχωριστό κλάδο ή αντίγραφο, σύγκρινε με Git και συγχώνευσε ελεγχόμενα αντί να αντιγράφεις στα τυφλά.
Πού Πρέπει Να Αναφέρω Bug;
Χρησιμοποίησε τη σελίδα Επικοινωνία ή τα ζητήματα του σχετικού αποθετηρίου GitHub. Ανάφερε ακριβές αρχείο, commit ή έκδοση, έκδοση Android, πηγή Termux, αρχιτεκτονική, πλήρη εντολή και ολόκληρο το σφάλμα, αφαιρώντας μυστικά.
Μπορώ να συνεισφέρω κώδικα, μεταφράσεις ή δοκιμές;
Ναι. Μικρά και στοχευμένα αιτήματα αλλαγών ελέγχονται ευκολότερα. Εξήγησε τι άλλαξε, πώς δοκιμάστηκε στο Termux, ποια αρχεία επηρεάζονται και ποιοι περιορισμοί ασφάλειας ή συμβατότητας παραμένουν.
Γιατί Το Test Repository Έχει Διαφορετικά Links;
Οι σελίδες του Test φιλοξενούνται κάτω από /Test/, ενώ οι κύριοι και εφεδρικοί τομείς χρησιμοποιούν τη ρίζα. Η δημιουργία ανά αποθετήριο προσαρμόζει εσωτερικές διαδρομές, κανονικά URL, CNAME και αρχεία ευρετηρίασης στον επιλεγμένο προορισμό.
Ψάχνεις Λύσεις Για Σφάλματα Του Termux;
Χρησιμοποίησε τη Βοήθεια για δωρεάν στοχευμένες λύσεις. Τα προαιρετικά GitHub Sponsors tiers είναι $3, $9 και $25· το $25 Ultimate Supporter tier περιλαμβάνει την τρέχουσα βιβλιοθήκη πέντε ebooks σε Αγγλικά και Ελληνικά.
Πήγαινε στη Βοήθεια
### Οδηγός Εγκατάστασης [el]
Source-URL: https://ded-sec.space/el/Pages/guide-for-installation.html
Οδηγός Εγκατάστασης
Βήμα προς βήμα οδηγίες για την εγκατάσταση και τη ρύθμιση του DedSec Project σε Termux για Android, Ubuntu, Kali Linux ή Linux Mint.
Απαιτήσεις
Υποστηριζόμενο σύστημα: Termux σε Android, Ubuntu, Kali Linux ή Linux Mint.
Αποθηκευτικός Χώρος: Ελάχιστο 6GB ελεύθερος χώρος για την εγκατάσταση του DedSec Project.
RAM: Ελάχιστο 2GB.
Internet: Απαιτείται για την πρώτη εγκατάσταση και για ενημερώσεις.
Προειδοποίηση αποθηκευτικού χώρου: Η απαίτηση των 6GB αφορά την ίδια την εγκατάσταση του DedSec Project. Scripts που καταγράφουν ή αποθηκεύουν επιπλέον περιεχόμενο—όπως φωτογραφίες, screenshots, βίντεο, ηχογραφήσεις, logs, λήψεις ή άλλα αρχεία που δημιουργούνται—μπορούν να χρειαστούν επιπλέον χώρο πέρα από την απαίτηση των 6GB του project.
Χρόνος εγκατάστασης: Η πλήρης εγκατάσταση μπορεί να διαρκέσει περίπου 20–50 λεπτά, ανάλογα με τη σύνδεσή σας στο internet και τον επεξεργαστή της συσκευής σας.
Επίλεξε Την Πλατφόρμα Σου
Πάτησε την πλατφόρμα σου για να ανοίξουν οι οδηγίες εγκατάστασης.
Termux (Android)
Εγκατάσταση Termux & Πρόσθετων
Για να εγκαταστήσεις APK όπως το F-Droid, ενεργοποίησε την εγκατάσταση από άγνωστες εφαρμογές για τον browser ή τον file manager στις ρυθμίσεις Android.
1. Εγκατάσταση F-Droid
Το F-Droid είναι η προτεινόμενη πηγή για το Termux και τα πρόσθετά του.
Λήψη F-Droid
Πώς Να Εγκαταστήσεις Το F-Droid APK
Κατέβασε το F-Droid APK από τον παραπάνω σύνδεσμο.
Άνοιξε τις Ρυθμίσεις Android και μετά Ασφάλεια ή Εφαρμογές & Ειδοποιήσεις.
Επίτρεψε στον browser ή τον file manager να εγκαθιστά άγνωστες εφαρμογές.
Άνοιξε το APK που κατέβασες και πάτησε Εγκατάσταση.
Άνοιξε το F-Droid και εγκατέστησε το Termux.
2. Εγκατάσταση Πρόσθετων Termux
Για το πλήρες σύνολο λειτουργιών Android, εγκατέστησε το Termux και τα υποστηριζόμενα πρόσθετα από το F-Droid.
Termux Termux:API Termux:Styling
3. Ενημέρωση Termux & Εγκατάσταση Git
Copypkg update -y && pkg upgrade -y && pkg install git nano -y && termux-setup-storage
4. Κλωνοποίηση DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
5. Εγκατάσταση DedSec
Copycd DedSec && bash Setup.sh
6. Άνοιγμα DedSec Αργότερα
Copycd ~/DedSec && ./Run.sh
Συμβουλή Termux: για μεγάλες εργασίες, κράτησε πατημένο το terminal, άνοιξε το More και ενεργοποίησε το Keep screen on. Μπορείς επίσης να χρησιμοποιήσεις More → Style για εμφάνιση.
Μετά το πρώτο setup στο Termux, επίλεξε prompt, στυλ μενού και γλώσσα και μετά τρέξε το Save DedSec Project ώστε να δημιουργηθεί backup package. Αργότερα μπορείς να ανοίγεις γρήγορα το Αγγλικό ή Ελληνικό μενού γράφοντας e ή g.
Ubuntu
Εγκατάσταση DedSec Σε Ubuntu
Άνοιξε το Terminal και τρέξε τις παρακάτω εντολές με τη σειρά.
1. Εγκατάσταση Απαιτήσεων
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Κλωνοποίηση DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Εκτέλεση Setup
Copycd DedSec && bash Setup.sh
4. Άνοιγμα DedSec Αργότερα
Copycd ~/DedSec && ./Run.sh
Στο Ubuntu, το Setup.sh δημιουργεί και χρησιμοποιεί το τοπικό .venv του project ώστε να μην αντικαθίσταται η Python που διαχειρίζεται η διανομή.
Kali Linux
Εγκατάσταση DedSec Σε Kali Linux
Άνοιξε το Terminal και τρέξε τις παρακάτω εντολές με τη σειρά.
1. Εγκατάσταση Απαιτήσεων
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Κλωνοποίηση DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Εκτέλεση Setup
Copycd DedSec && bash Setup.sh
4. Άνοιγμα DedSec Αργότερα
Copycd ~/DedSec && ./Run.sh
Στο Kali Linux, το Setup.sh χρησιμοποιεί το τοπικό .venv του project και κρατά ξεχωριστό το Python environment του συστήματος.
Linux Mint
Εγκατάσταση DedSec Σε Linux Mint
Άνοιξε το Terminal και τρέξε τις παρακάτω εντολές με τη σειρά.
1. Εγκατάσταση Απαιτήσεων
Copysudo apt update && sudo apt install -y git python3 python3-venv python3-pip
2. Κλωνοποίηση DedSec
Copygit clone https://github.com/dedsec1121fk/DedSec
3. Εκτέλεση Setup
Copycd DedSec && bash Setup.sh
4. Άνοιγμα DedSec Αργότερα
Copycd ~/DedSec && ./Run.sh
Στο Linux Mint, το Setup.sh δημιουργεί το τοπικό .venv του project και δεν αντικαθιστά την Python που διαχειρίζεται η διανομή.
Θέλεις Να Ελέγξεις Το DedSec Πριν Το Εγκαταστήσεις;
Δες τον πηγαίο κώδικα, το README, τις ενημερώσεις και τη δραστηριότητα της κοινότητας απευθείας στο GitHub.
Άνοιξε το DedSec στο GitHub
ΑΦΟΥ ΛΕΙΤΟΥΡΓΗΣΕΙ
Λειτουργεί Το DedSec Στο Σύστημά Σου;
Μόλις το DedSec ανοίξει σωστά στο σύστημά σου και το χρησιμοποιήσεις, βάλε star στο repository ώστε να το βρίσκεις ξανά και να βοηθήσεις περισσότερους χρήστες να ανακαλύψουν το project.
Βάλε Star στο DedSec στο GitHub
Χρησιμοποιείς το DedSec τακτικά; Τα sponsor-only extras είναι προαιρετικά και βοηθούν στη χρηματοδότηση μελλοντικών ενημερώσεων. GitHub Sponsors
Δωρεάν PDF
Δωρεάν E-Book Για Termux
Κατέβασε το «Master Termux In 7 Days» και μάθε βήμα προς βήμα την αρχική ρύθμιση, τις βασικές εντολές, τις διορθώσεις και τις ροές εργασίας του DedSec.
Λήψη Δωρεάν PDF
Νομική Αποποίηση Ευθύνης: Όλα τα εργαλεία και οι πληροφορίες προορίζονται αποκλειστικά για εκπαιδευτικούς και ηθικούς ερευνητικούς σκοπούς. Χρησιμοποιήστε τα μόνο σε συστήματα που σας ανήκουν ή έχετε ρητή άδεια να δοκιμάσετε.
ΕΠΟΜΕΝΟ ΒΗΜΑ
Εγκαταστάθηκε; Δες Τα Εργαλεία Και Τη Βοήθεια
Χρησιμοποίησε το Learn About The Tools για να δεις τι κάνει κάθε script και πού αποθηκεύει αρχεία σε Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε τη Βοήθεια για οδηγούς setup, paths, updates και repair.
Μάθε Για Τα Εργαλεία Άνοιξε Τη Βοήθεια
### Μάθετε Για Τα Εργαλεία [el]
Source-URL: https://ded-sec.space/el/Pages/learn-about-the-tools.html
Μάθετε Για Τα Εργαλεία
Αυτή η σελίδα είναι ο χάρτης του project: τι κάνει κάθε εργαλείο, γιατί υπάρχει και ποιο πραγματικό πρόβλημα με οδήγησε να το δημιουργήσω. Ξεκίνα από τη λίστα, ακολούθησε ό,τι σου τραβάει την προσοχή και άσε τα ίδια τα εργαλεία να σου εξηγήσουν το project.
Cross-Platform Υποστήριξη Εργαλείων
Το DedSec χρησιμοποιεί πλέον τον ίδιο launcher σε Termux, Ubuntu, Kali Linux και Linux Mint. Τα portable εργαλεία χρησιμοποιούν Linux-aware paths, ενώ τα Android-specific utilities παραμένουν μόνο για Termux και σημειώνονται καθαρά παρακάτω.
Termux: native packages και Android storage όπως ~/storage/downloads/.
Ubuntu / Kali Linux / Linux Mint: τοπικό .venv, Compat/bin και desktop Downloads paths όπως ~/Downloads/.
Ξεκίνα πάντα το project με ./Run.sh αφού τρέξεις bash Setup.sh.
Επισκόπηση Εργαλειοθήκης
Βάση Προγραμματιστή
File Converter.py
Τι Βοηθά Να Λύσεις
Μετατροπή εικόνων, εγγράφων, ήχου, βίντεο και archives απευθείας στο Android, όταν η μεταφορά της δουλειάς σε υπολογιστή θα σε καθυστερούσε.
Ένας ισχυρός μετατροπέας αρχείων που υποστηρίζει 40+ μορφές. Οργανώνει τις Λήψεις. Προηγμένος διαδραστικός μετατροπέας αρχείων για Termux χρησιμοποιώντας διεπαφή curses. Υποστηρίζει 40 διαφορετικές μορφές αρχείων σε εικόνες, έγγραφα, ήχο, βίντεο και αρχεία. Διαθέτει αυτόματη εγκατάσταση εξαρτήσεων, οργανωμένη δομή φακέλων και ολοκληρωμένες δυνατότητες μετατροπής. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Τα αρχεία που έχουν μετατραπεί αποθηκεύονται στο /storage/emulated/0/Download/File Converter/, μέσα σε φακέλους ανά μορφή όπως JPG, PNG, PDF, MP3, MP4, ZIP, TXT και άλλα.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Converted files are saved under /storage/emulated/0/Download/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Ubuntu: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Kali Linux: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
Linux Mint: Converted files are saved under ~/Downloads/File Converter/, inside format folders such as JPG, PNG, PDF, MP3, MP4, ZIP, TXT, and others.
File Type Checker.py
Τι Βοηθά Να Λύσεις
Αναγνώριση του πραγματικού τύπου ενός αρχείου και έλεγχος ύποπτων χαρακτηριστικών πριν το εμπιστευτείς ή το ανοίξεις.
Προηγμένος αναλυτής αρχείων και σαρωτής ασφαλείας που εντοπίζει τύπους αρχείων, εξάγει μεταδεδομένα, υπολογίζει κρυπτογραφικά hashes και αναγνωρίζει πιθανές απειλές. Διαθέτει ανίχνευση magic byte, ανάλυση εντροπίας, ανίχνευση steganography, σάρωση ιών μέσω VirusTotal API και αυτόματη καραντίνα ύποπτων αρχείων. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Τα αρχεία ελέγχονται στο /sdcard/Download/File Type Checker/ στο Termux ή στο ~/Downloads/File Type Checker/ εκτός Termux. Τα αρχεία που τέθηκαν σε καραντίνα μένουν στον ίδιο φάκελο και μετονομάζονται με κατάληξη .dangerous.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Files are scanned in /sdcard/Download/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Ubuntu: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Kali Linux: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Linux Mint: Files are scanned in ~/Downloads/File Type Checker/ on Termux, or ~/Downloads/File Type Checker/ outside Termux. Quarantined files stay in the same folder and are renamed with the .dangerous suffix.
Mobile Desktop.py
Τι Βοηθά Να Λύσεις
Χρήση περιβάλλοντος Linux τύπου desktop μέσα από Termux χωρίς root, όταν οι εφαρμογές μόνο τερματικού δεν αρκούν.
Διαχειριστής Linux Desktop για Termux (χωρίς root): στήνει proot-distro περιβάλλον με επιλογές VNC/X11 και πρόγραμμα διαχείρισης εφαρμογών (install/update/remove). Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Οι ρυθμίσεις του διαχειριστή αποθηκεύονται στο ~/.termux_linux_vnc_manager/config.json. Οι εκκινητές που δημιουργούνται εγκαθίστανται στο $PREFIX/bin/ ως vnc-. Οι διανομές Linux διαχειρίζονται από το proot-distro.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: μόνο Termux. Το utility διαχειρίζεται Android/Termux-specific λειτουργίες και δεν εφαρμόζεται σε desktop Linux.
Termux: Manager settings are stored in ~/.termux_linux_vnc_manager/config.json. Generated launchers are installed in $PREFIX/bin/ as vnc-. The Linux distributions themselves are managed by proot-distro.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Mobile Developer Setup.py
Τι Βοηθά Να Λύσεις
Μετατροπή του Termux σε ένα επαναλήψιμο, πλήρες περιβάλλον ανάπτυξης από κινητό χωρίς χειροκίνητη εγκατάσταση και συντήρηση μιας μεγάλης αλυσίδας εργαλείων ανάπτυξης.
Δημιουργεί και διαχειρίζεται ένα εκτεταμένο περιβάλλον ανάπτυξης στο Termux με Git/GitHub, Python, Node.js/npm, Perl, PHP, Ruby, Rust, Go, Java 21 και Lua· compilers, build systems, debuggers και εργαλεία ποιότητας κώδικα· SSH και εργαλεία απομακρυσμένης ανάπτυξης· PostgreSQL, MariaDB, SQLite, Redis και MongoDB· καθώς και εργαλεία Python και npm όπως Meson, Mercurial, TypeScript, NestJS, Vite, ESLint, Prettier, local servers/tunnels και AI CLIs. Ρυθμίζει επίσης Zsh και Oh My Zsh με plugins και Powerlevel10k, το UI/font/extra keys του Termux, safety backups, workflows για update/repair/restore και NvChad starter setup για Neovim.
Τοποθεσία Αποθήκευσης
Το state, τα logs και τα safety backups του setup αποθηκεύονται στο ~/.mobile-dev-setup/ (μαζί με backups/, nvim-backups/, state.json και last-run.log). Υλικό που διαχειρίζεται το setup χρησιμοποιεί το ~/.mobile-dev-setup-tools/, τα Zsh plugins το ~/.zsh-plugins/, το Oh My Zsh το ~/.oh-my-zsh/, τα αρχεία εμφάνισης του Termux το ~/.termux/ και το NvChad εγκαθίσταται στο ~/.config/nvim/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: μόνο Termux. Το utility διαχειρίζεται Android/Termux-specific λειτουργίες και δεν εφαρμόζεται σε desktop Linux.
Termux: State, logs, and backup archives are stored under ~/.mobile-dev-setup/; managed helper/tool files use ~/.mobile-dev-setup-tools/; Zsh/Oh My Zsh and plugin configuration is stored in the user's Termux home; Termux appearance files are stored in ~/.termux/; and the managed Neovim/NvChad configuration is stored under ~/.config/nvim/.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Free Internet.py
Τι Βοηθά Να Λύσεις
Οργάνωση browsing, αποθηκευμένων σελίδων, αναζήτησης, screenshots και ιδιωτικών δεδομένων vault σε μία local-first ροή Termux.
Browser με τοπική αποθήκευση ως προτεραιότητα και ασφαλές θησαυροφυλάκιο για Termux. Συνδυάζει πολλαπλές μηχανές αναζήτησης, σελιδοδείκτες, ιστορικό, αποθηκευμένες σελίδες, καθαρισμό διαφημίσεων και ιχνηλάτες, ελαφριά λειτουργία, δρομολόγηση μέσω διακομιστή μεσολάβησης ανά χώρα με smart/strict/direct modes, προαιρετική υποστήριξη Tor, κρυπτογραφημένες εγγραφές θησαυροφυλακίου μέσω OpenSSL και ενσωματωμένο εργαλείο στιγμιότυπα ολόκληρων ιστοσελίδων. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Στο Termux όλα τα δεδομένα αποθηκεύονται στον φάκελο ~/Free Internet/, ενώ σε άλλα συστήματα χρησιμοποιείται το ~/.free_internet/. Τα δεδομένα περιήγησης βρίσκονται στο browser/, οι αποθηκευμένες σελίδες στο browser/saved/, τα στιγμιότυπα οθόνης στο Tools/screenshots/ και η κρυπτογραφημένη βάση του θησαυροφυλακίου στο vault/vault.db.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Ubuntu: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Kali Linux: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Linux Mint: On Termux, all data is stored in ~/Free Internet/; outside Termux it uses ~/.free_internet/. Browser data is in browser/, saved pages in browser/saved/, screenshots in Tools/screenshots/, and the encrypted vault database in vault/vault.db.
Simple Websites Creator.py
Τι Βοηθά Να Λύσεις
Δημιουργία απλών websites από κινητό όταν θέλεις καθοδηγούμενη αρχική δομή αντί να φτιάχνεις κάθε αρχείο χειροκίνητα.
Ένας ολοκληρωμένος δημιουργός ιστοσελίδων που δημιουργεί ανταποκρινόμενες HTML ιστοσελίδες με προσαρμόσιμη διάταξη, χρώματα, γραμματοσειρές και ρυθμίσεις SEO. Χαρακτηριστικά περιλαμβάνουν πολλαπλούς οδηγούς φιλοξενίας, προεπισκόπηση σε πραγματικό χρόνο, φιλικά για κινητά σχέδια και επαγγελματικά πρότυπα. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Οι ιστοσελίδες που δημιουργούνται αποθηκεύονται στο /storage/emulated/0/Download/Websites/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Created websites are saved in /storage/emulated/0/Download/Websites/.
Ubuntu: Created websites are saved in ~/Downloads/Websites/.
Kali Linux: Created websites are saved in ~/Downloads/Websites/.
Linux Mint: Created websites are saved in ~/Downloads/Websites/.
Smart Notes.py
Τι Βοηθά Να Λύσεις
Οργάνωση τεχνικών σημειώσεων, ιδεών, εντολών και πληροφοριών project όταν δουλεύεις από κινητό.
Εφαρμογή σημειώσεων terminal με υπενθυμίσεις. Προηγμένη εφαρμογή σημειώσεων με λειτουργικότητα υπενθύμισης, που διαθέτει τόσο TUI (Διεπαφή Κειμένου) όσο και υποστήριξη CLI. Περιλαμβάνει εξελιγμένο σύστημα υπενθυμίσεων με ημερομηνίες λήξης, αυτόματη εκτέλεση εντολών, ενσωμάτωση εξωτερικού επεξεργαστή και ολοκληρωμένες δυνατότητες οργάνωσης σημειώσεων. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Σημειώσεις: ~/.smart_notes.json | Ρυθμίσεις: ~/.smart_notes_config.json | Αρχείο καταγραφής σφαλμάτων: ~/.smart_notes_error.log.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Ubuntu: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Kali Linux: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Linux Mint: Notes: ~/.smart_notes.json | Settings: ~/.smart_notes_config.json | Error log: ~/.smart_notes_error.log.
Tree Explorer.py
Τι Βοηθά Να Λύσεις
Γρήγορη κατανόηση μεγάλων δομών φακέλων και projects ώστε να βρίσκεις το αρχείο ή directory που πραγματικά χρειάζεσαι.
Εξερευνητής αρχείων για Termux: περιήγηση φακέλων, αναζήτηση αρχείων, εύρεση διπλότυπων με hash και καθαρισμός άδειων φακέλων με ασφαλείς επιλογές. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Το Tree Explorer δεν δημιουργεί προεπιλεγμένο φάκελο αποτελεσμάτων. Οι εξαγωγές γράφονται μόνο στη διαδρομή που επιλέγεις με --export FILE ή από τη διαδραστική επιλογή εξαγωγής. Η εγκατάσταση της εντολής το αντιγράφει από προεπιλογή στο $PREFIX/bin/supertree.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Ubuntu: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Kali Linux: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Linux Mint: Tree Explorer does not create a default results folder. Exports are written only to the path you choose with --export FILE or through the interactive export prompt. Installing the command copies it to $PREFIX/bin/supertree by default.
Dead Man's Switch.py
Τι Βοηθά Να Λύσεις
Προετοιμασία επιβεβαιωμένης από τον χρήστη ροής έκτακτης ανάγκης με έμπιστες επαφές, αρχεία κατάστασης και προαιρετικά δεδομένα συσκευής όταν δεν γίνει προγραμματισμένο check-in.
Εργαλείο έκτακτης ανάγκης/SOS για Termux που βασίζεται στη λειτουργία I Need Help. Μετά την αρχική ρύθμιση και με σαφείς επιβεβαιώσεις από τον χρήστη, μπορεί να κάνει δημόσιο το dead-mans-switch GitHub repository, να δημιουργήσει ιστοσελίδα έκτακτης ανάγκης στο GitHub Pages, να ανεβάσει οργανωμένα αρχεία έκτακτης ανάγκης, να καταγράψει διαθέσιμες φωτογραφίες κάμερας, ηχογραφήσεις μικροφώνου και ενημερώσεις τοποθεσίας σε ρυθμιζόμενα χρονικά διαστήματα μέσω δικαιωμάτων Termux:API και να στείλει ειδοποιήσεις SMS με τον σύνδεσμο της ιστοσελίδας/repository σε ρυθμισμένες έμπιστες επαφές. Περιλαμβάνει επίσης δημιουργία και ενημέρωση μεταφορτώσεων, συγχρονισμό με αντικατάσταση, ελέγχους ορατότητας, μεταφορά παλιού repository, αντίγραφα ασφαλείας προηγούμενου ιστορικού, logs και επιλογή τερματισμού/καθαρισμού.
Τοποθεσία Αποθήκευσης
Κύριος τοπικός φάκελος: ~/storage/downloads/Dead Man's Switch/ (κανονικά ο φάκελος Download του τηλεφώνου, με εναλλακτική διαδρομή /storage/emulated/0/Download/Dead Man's Switch/). Ρυθμίσεις: ~/.dead_switch_settings.json. Τα logs και τα προηγούμενα αντίγραφα ασφαλείας του αποθετηρίου αποθηκεύονται μέσα στον κύριο φάκελο στα Logs/ και History/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Main local folder: ~/storage/downloads/Dead Man's Switch/ (normally the phone Download folder; fallback /storage/emulated/0/Download/Dead Man's Switch/). Settings: ~/.dead_switch_settings.json. Logs and previous repository backups are stored inside the main folder under Logs/ and History/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Devices Finder.py
Τι Βοηθά Να Λύσεις
Εντοπισμός και ταξινόμηση συσκευών σε τοπικό δίκτυο που σου ανήκει ή έχεις άδεια να ελέγξεις, χωρίς να απαιτείται root.
Εργαλείο ανακάλυψης συσκευών τοπικού δικτύου για Termux που λειτουργεί χωρίς root. Διαχωρίζει τον εντοπισμό ενεργών συσκευών από τη σάρωση υπηρεσιών για να μειώνει τα λανθασμένα θετικά αποτελέσματα, αναγνωρίζει τύπους συσκευών με βάση θύρες, στοιχεία υπηρεσιών, ονόματα συσκευών και ενδείξεις κατασκευαστή, περιλαμβάνει διαδραστικά προφίλ σάρωσης και φίλτρα τύπου, και προαιρετικά εμπλουτίζει τα αποτελέσματα με mDNS, UPnP, SNMP και ενδείξεις NetBIOS. Εξάγει αναφορές JSON, TXT, CSV και HTML. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Οι αναφορές αποθηκεύονται στο ~/storage/downloads/Devices Finder/ ως devices_scan_.json, .txt, .csv και .html. Οι εναλλακτικές διαδρομές είναι ~/downloads/Devices Finder/ και μετά ./Devices Finder Output/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Reports are saved in ~/storage/downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Ubuntu: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Kali Linux: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
Linux Mint: Reports are saved in ~/Downloads/Devices Finder/ as devices_scan_.json, .txt, .csv, and .html. Fallbacks are ~/downloads/Devices Finder/ and then ./Devices Finder Output/.
DedSec's Server.py
Τι Βοηθά Να Λύσεις
Κοινή χρήση και διαχείριση μεγάλων αρχείων από Termux μέσω ελεγχόμενου local/self-hosted server αντί για τρίτη υπηρεσία φιλοξενίας.
Πλατφόρμα φιλοξενίας και διαχείρισης αρχείων πολλαπλών διακομιστών για Termux. Δημιουργεί ξεχωριστά προφίλ server με όνομα, ανοιχτή πρόσβαση επισκεπτών ή προστασία μόνο για διαχειριστές, πολλαπλούς λογαριασμούς διαχειριστών, μεταφορτώσεις έως 30 GB με ζωντανή τμηματική πρόοδο, δημιουργία φακέλων και λήψεις ZIP, μετακινήσεις, μετονομασίες και διαγραφές αρχείων, κατηγορίες, αναζήτηση, φίλτρα, ταξινόμηση, λεπτομέρειες, σχόλια, συνεδρίες χρηστών και πλήρη αρχεία καταγραφής δραστηριότητας και ασφάλειας. Κάθε server ξεκινά πρόσβαση μέσω localhost και τοπικού δικτύου και προσπαθεί αυτόματα να δημιουργήσει συνδέσμους Cloudflare και Tor. Περιλαμβάνει επίσης φωτεινό και σκοτεινό θέμα, ξεχωριστές αγγλικές και ελληνικές εκδόσεις, επιβεβαιώσεις για αλλαγές, περιορισμό αποτυχημένων προσπαθειών, προστασία CSRF, ελέγχους ασφαλείας αποθηκευτικού χώρου και αυτόματη εγκατάσταση εξαρτήσεων. Σχεδιασμένο για το Termux, με σαφείς επιλογές και οργανωμένη αποθήκευση.
Τοποθεσία Αποθήκευσης
Όλα τα δεδομένα αποθηκεύονται κάτω από το ~/DedSec's Server/. Οι αγγλικές και ελληνικές εκδόσεις χρησιμοποιούν ξεχωριστούς φακέλους English/ και Greek/. Τα αρχεία κάθε server αποθηκεύονται στο /Servers//, οι ρυθμίσεις στο /Config/config.json, τα προσωρινά δεδομένα συνεδρίας στο /Runtime/, τα σχόλια στο /Comments/ και τα αρχεία καταγραφής κάθε server στον κρυφό φάκελο .dedsec-server/logs/ του server.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Ubuntu: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Kali Linux: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Linux Mint: All data is stored under ~/DedSec's Server/. The English and Greek editions use separate English/ and Greek/ folders. Server files are stored in /Servers//, configuration in /Config/config.json, temporary session data in /Runtime/, comments in /Comments/, and each server's audit logs in its hidden .dedsec-server/logs/ folder.
Trojan.py
Τι Βοηθά Να Λύσεις
Κατανόηση του τι μπορεί να συλλέξει ένα non-root Termux trojan και πώς μπορούν να λειτουργήσουν phishing, persistence και data exfiltration στο Android.
Εκπαιδευτικό non-root Termux trojan sample. Συλλέγει προσβάσιμα αρχεία shared storage μαζί με location, φωτογραφίες κάμερας, microphone audio, clipboard, contacts, SMS, sensors, battery, Wi-Fi/network, phone και device information. Μπορεί επίσης να επιδείξει phishing links/notifications, clipboard replacement, recurring execution, προαιρετικό payload download και ρυθμισμένο SSH upload.
Τοποθεσία Αποθήκευσης
Κύριος φάκελος: /sdcard/Download/Troy/· fallback: ~/Troy/. Τα αντιγραμμένα αρχεία αποθηκεύονται στο stolen/, το archive είναι stolen_archive.zip και κάθε run αποθηκεύει timestamped harvest_*.json report. Camera και microphone captures αποθηκεύονται ως photo.jpg και audio.m4a.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Main folder: /sdcard/Download/Troy/; fallback: ~/Troy/. Copied files are stored in stolen/, the archive is stolen_archive.zip, and each run saves a timestamped harvest_*.json report. Camera and microphone captures are saved as photo.jpg and audio.m4a.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Παιχνίδια
Buzz.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Ένα text-only παιχνίδι trivia για Termux με ενσωματωμένη σταθερή βάση 15.000 ερωτήσεων (χωρίς δημιουργία κατά την εκτέλεση). Υποστηρίζει 1–2 παίκτες (pass-and-play), πολλούς τύπους γύρων, φίλτρο δυσκολίας (Όλες/Εύκολες/Μέτριες/Δύσκολες), προφίλ, ρυθμίσεις και πίνακες βαθμολογίας. Ελαφρύ παιχνίδι τερματικού με γρήγορους χειρισμούς και δυνατότητα επανάληψης.
Τοποθεσία Αποθήκευσης
Όλα τα δεδομένα του παιχνιδιού αποθηκεύονται στο ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json και settings.json.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Ubuntu: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Kali Linux: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
Linux Mint: All game data is stored in ~/Buzz/data/: questions_en.jsonl.gz, highscores.json, profiles.json, and settings.json.
CTF God.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Πλήρες CTF παιχνίδι για Termux σε πλήρη οθόνη με Curses, με λειτουργία ιστορίας, αποστολές, καθημερινές προκλήσεις, τυχαία boss levels, κατάστημα hints, achievements & ranks, εισαγωγή/εξαγωγή challenge packs, tournament mode και ελέγχους anti-cheat/ακεραιότητας. Περιλαμβάνει ενσωματωμένο level editor. Ελαφρύ παιχνίδι τερματικού με γρήγορους χειρισμούς και δυνατότητα επανάληψης.
Τοποθεσία Αποθήκευσης
Οι χώροι εργασίας των προκλήσεων αποθηκεύονται στο /storage/emulated/0/Download/CTF God/, με εναλλακτικές διαδρομές τα ~/storage/downloads/CTF God/ και ~/CTF God/. Τα προφίλ, πρόοδος, πακέτα και προσαρμοσμένες προκλήσεις αποθηκεύονται στο ~/.ctf_god/ (state.json, custom.json, packs/).
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Challenge workspaces are stored in /storage/emulated/0/Download/CTF God/; fallback paths are ~/storage/downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Ubuntu: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Kali Linux: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Linux Mint: Challenge workspaces are stored in ~/Downloads/CTF God/; fallback paths are ~/Downloads/CTF God/ and ~/CTF God/. Profiles, progress, packs, and custom challenges are stored in ~/.ctf_god/ (state.json, custom.json, packs/).
Detective.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Παιχνίδι ντετέκτιβ με αφήγηση για Termux, με διευρυμένη σταθερή βιβλιοθήκη υποθέσεων, πλουσιότερους φακέλους ιστορίας, φήμες περιοχών, παράλληλες ιστορίες και επιπλέον αφηγηματικές γραμμές. Παρακολούθησε στοιχεία, ανάκρινε υπόπτους, δες τις λίστες υπόπτων, δημιούργησε ASCII πίνακα υπόθεσης και χρονολόγιο και διαχειρίσου την πρόοδο με 3 θέσεις αποθήκευσης και autosave. Περιλαμβάνει 4 επίπεδα δυσκολίας, παρακολούθηση σημειώσεων/στοιχείων, hints στα checkpoints και γρήγορες εντολές όπως :help, :guide, :lore, :suspects, :board, :timeline, :hint και :save.
Τοποθεσία Αποθήκευσης
Όλες οι αποθηκεύσεις αποθηκεύονται στο ~/Detective/: player.json, highscores.json και savegame_slot1.json έως savegame_slot3.json.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Ubuntu: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Kali Linux: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Linux Mint: All saves are stored in ~/Detective/: player.json, highscores.json, and savegame_slot1.json through savegame_slot3.json.
Pet Friends.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Το Pet Friends.py είναι ένα fullscreen idle παιχνίδι εικονικών συντρόφων για Termux με πάνω από 160 πραγματικά, θρυλικά και μυθικά κατοικίδια. Υιοθέτησε, τάισε, χάιδεψε, πλύνε, εκπαίδευσε, δέσου, μετονόμασε, άλλαξε χρώμα και εξέλιξε τους συντρόφους σου, ολοκληρώνοντας quests, contracts, expeditions, achievements, festivals, adventure-board progress και crates με διαφορετικές σπανιότητες. Περιλαμβάνει animated ASCII pets, τοπικά παραγόμενα sound effects και συνεχή background music, εκπαιδευτικά facts για κάθε είδος με τη μυθολογία καθαρά επισημασμένη, economy και upgrades, care requests, local-network battles και trades, καθώς και μόνιμη αποθήκευση προόδου χωρίς third-party Python packages.
Τοποθεσία Αποθήκευσης
Η πρόοδος του παιχνιδιού αποθηκεύεται στο ~/Pet Friends/petfriends_save.json. Τα παραγόμενα sound effects και η background music αποθηκεύονται στο ~/Pet Friends/sounds/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Ubuntu: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Kali Linux: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Linux Mint: Game progress is saved in ~/Pet Friends/petfriends_save.json. Generated sound effects and background music are stored in ~/Pet Friends/sounds/.
Tamagotchi.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Ένα πλήρως χαρακτηριστικό παιχνίδι κατοικίδιου terminal. Τρέφετε, παίζετε, καθαρίζετε και εκπαιδεύετε το κατοικίδιό σας. Μην το αφήσετε να πεθάνει. Προηγμένο παιχνίδι προσομοίωσης εικονικού κατοικίδιου με ολοκληρωμένο σύστημα διαχείρισης. Χαρακτηριστικά περιλαμβάνουν εξέλιξη κατοικίδιου μέσα από στάδια ζωής, χαρακτηριστικά προσωπικότητας, ανάπτυξη δεξιοτήτων, μίνι παιχνίδια, σύστημα εργασίας και συνταξιοδότηση κληρονομιάς. Ελαφρύ παιχνίδι τερματικού με γρήγορους χειρισμούς και δυνατότητα επανάληψης.
Τοποθεσία Αποθήκευσης
Η αποθήκευση του Tamagotchi αποθηκεύεται στο ~/.termux_tamagotchi_v8.json.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Ubuntu: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Kali Linux: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Linux Mint: The Tamagotchi save is stored in ~/.termux_tamagotchi_v8.json.
Terminal Arcade.py
Τι Βοηθά Να Λύσεις
Εξάσκηση σε λογική προγραμματισμού, terminal interaction και δομή project μέσα από ένα playable local experience.
Πακέτο arcade για τερματικό με πολλά mini-games σε ένα script. Αποθηκεύει δεδομένα στο ~/Terminal Arcade/ και τρέχει ομαλά σε Termux/Linux. Ελαφρύ παιχνίδι τερματικού με γρήγορους χειρισμούς και δυνατότητα επανάληψης.
Τοποθεσία Αποθήκευσης
Τα δεδομένα του arcade αποθηκεύονται στο ~/Terminal Arcade/. Τα υψηλότερες βαθμολογίες και το πρόσφατο ιστορικό βαθμολογιών αποθηκεύονται στο ~/Terminal Arcade/highscores.json.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Ubuntu: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Kali Linux: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Linux Mint: Arcade data is stored in ~/Terminal Arcade/. High scores and recent score history are saved in ~/Terminal Arcade/highscores.json.
Εργαλεία Δικτύου
Bug Hunter.py
Τι Βοηθά Να Λύσεις
Οργάνωση εξουσιοδοτημένου web-security reconnaissance και ελέγχων misconfiguration σε μία επαναλήψιμη ροή audit.
Bug Hunter (χωρίς root) — εξουσιοδοτημένο εργαλείο αναγνώρισης web ασφάλειας και ελέγχου κακής ρύθμισης. Ελέγχει security headers και cookie flags, ανιχνεύει τεχνολογίες, κάνει DNS ελέγχους (SPF/DMARC/CAA), αναλύει TLS/λήξη πιστοποιητικού, ελέγχει CORS και HTTP μεθόδους, βρίσκει εκτεθειμένα ευαίσθητα αρχεία, κάνει crawl στο site και αναλύει JavaScript για endpoints και πιθανές διαρροές μυστικών. Υποστηρίζει προαιρετικό directory discovery και Wayback recon, και παράγει απο-διπλοποιημένες αναφορές (JSON/CSV/HTML/PDF). Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Ο προεπιλεγμένος φάκελος αποτελεσμάτων είναι το ./bughunter_out/ μέσα στον κατάλογο εκτέλεσης του script. Με την επιλογή --output PATH μπορείς να ορίσεις διαφορετικό φάκελο. Οι αναφορές περιλαμβάνουν τα report.json, report.csv και report.html, καθώς και προαιρετικά αρχεία report.pdf, ζωντανής παρακολούθησης και σημείων επαναφοράς.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Ubuntu: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Kali Linux: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Linux Mint: The default output folder is ./bughunter_out/ in the directory where the script is run. Use --output PATH to choose another folder. Reports include report.json, report.csv, report.html, optional report.pdf, and optional live/checkpoint files.
Dark.py
Τι Βοηθά Να Λύσεις
Συλλογή και οργάνωση δημόσιου Tor/.onion OSINT σε εξουσιοδοτημένη έρευνα χωρίς χειροκίνητη καταγραφή κάθε αποτελέσματος.
Ένα εξειδικευμένο εργαλείο OSINT και crawler για το Dark Web, σχεδιασμένο για ανάλυση δικτύου Tor. Διαθέτει αυτοματοποιημένη σύνδεση Tor, ενσωμάτωση αναζήτησης Ahmia και αναδρομικό crawler για ιστοσελίδες .onion. Το εργαλείο χρησιμοποιεί ένα αρθρωτό σύστημα πρόσθετων για την εξαγωγή συγκεκριμένων τύπων δεδομένων (Email, διευθύνσεις BTC/XMR, κλειδιά PGP, Τηλέφωνα) και υποστηρίζει την αποθήκευση στιγμιότυπων. Προσφέρει λειτουργία Curses TUI και CLI, με αποτελέσματα εξαγώγιμα σε JSON, CSV και TXT. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Τα αποτελέσματα αποθηκεύονται στο /sdcard/Download/DarkNet/ με εναλλακτική διαδρομή στο ~/DarkNet/. JSON, CSV, TXT, snapshots και αποτελέσματα πρόσθετων γράφονται εκεί, ενώ τα πρόσθετα αποθηκεύονται στον υποφάκελο plugins/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Results are stored in /sdcard/Download/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Ubuntu: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Kali Linux: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
Linux Mint: Results are stored in ~/Downloads/DarkNet/ with fallback to ~/DarkNet/. JSON, CSV, TXT, snapshots, and plugin output are written there; plugins are stored in its plugins/ subfolder.
DedSec's Network.py
Τι Βοηθά Να Λύσεις
Συνδυασμός συνηθισμένων network diagnostics, OSINT, downloading και εξουσιοδοτημένων web-audit εργασιών ώστε να μη χρειάζεσαι ξεχωριστό script για κάθε έλεγχο.
Μια προηγμένη εργαλειοθήκη δικτύου χωρίς root. Διαθέτει αναδρομικό πρόγραμμα λήψης ιστοσελίδων με υποστήριξη ZIP, πολυνηματικό σαρωτή θυρών, δοκιμή ταχύτητας internet και εργαλεία OSINT (WHOIS, DNS, Reverse IP). Περιλαμβάνει σαρωτές ελέγχου ιστού για SQLi, XSS, ανίχνευση CMS και SSH brute-force. Διατηρεί τοπικό αρχείο καταγραφής ελέγχου SQLite. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Τα config, audit_results.db και wordlists αποθηκεύονται στο ~/DedSec's Network/ στο Termux ή στο ./DedSec's Network/ αλλού. Οι ιστοσελίδες που έχουν ληφθεί μπαίνουν στο /storage/emulated/0/Download/Websites//, με εναλλακτικές διαδρομές τα /sdcard/Download/Websites/, ~/DedSec's Network/Websites/ ή ~/Downloads/Websites/ εκτός Termux.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to /storage/emulated/0/Download/Websites//, with fallbacks to /sdcard/Download/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Ubuntu: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Kali Linux: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Linux Mint: Configuration, audit_results.db, and wordlists are stored in ~/DedSec's Network/ on Termux, or ./DedSec's Network/ elsewhere. Downloaded websites go to ~/Downloads/Websites//, with fallbacks to ~/Downloads/Websites/, ~/DedSec's Network/Websites/, or ~/Downloads/Websites/ outside Termux.
Digital Footprint Finder.py
Τι Βοηθά Να Λύσεις
Διερεύνηση δημόσιου digital footprint από ένα στοιχείο και οργάνωση σχετικών δημόσιων accounts, domains, URLs, emails, IPs, ονομάτων, αριθμών τηλεφώνου και αρχείων σε ένα case.
Toolkit δημόσιων πηγών OSINT με Easy Mode, SQLite cases, χαρτογράφηση entities και relationships, evidence hashing, correlation και timeline analysis, bounded crawling, username/profile checks, passive network enrichment και keyless public APIs με προαιρετικά API credentials του χρήστη. Υποστηρίζει domains, URLs, usernames, emails, IPs, ονόματα, αριθμούς τηλεφώνου και τοπικά αρχεία και εξάγει Markdown, JSON, CSV, GraphML, STIX 2.1, raw evidence, ZIP packages και self-contained HTML reports.
Τοποθεσία Αποθήκευσης
Τα αποτελέσματα κάθε case αποθηκεύονται στο ~/storage/downloads/Digital Footprint Finder//files/ στο Termux. Εκτός Termux χρησιμοποιείται το ~/Downloads/Digital Footprint Finder//files/ όταν είναι διαθέσιμο, με fallback το ~/Digital Footprint Finder/results/. App data, SQLite database, settings, cache, logs, dependencies, session data και προαιρετικά API keys αποθηκεύονται στο ~/Digital Footprint Finder/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Case results are saved in ~/storage/downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Ubuntu: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Kali Linux: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Linux Mint: Case results are saved in ~/Downloads/Digital Footprint Finder//files/ on Termux. Outside Termux it uses ~/Downloads/Digital Footprint Finder//files/ when available, with ~/Digital Footprint Finder/results/ as fallback. App data, SQLite database, settings, cache, logs, dependencies, session data, and optional API keys are stored under ~/Digital Footprint Finder/.
Connections.py
Τι Βοηθά Να Λύσεις
Λειτουργία δικού σου πιστοποιημένου χώρου chat, video call και κοινής χρήσης αρχείων από το Termux, με έλεγχο ιδιοκτησίας μηνυμάτων και δικαιωμάτων πρόσβασης από τον server.
Αυτοφιλοξενούμενος server Connections για Termux που συνδυάζει chat σε πραγματικό χρόνο, κλήσεις βίντεο WebRTC, μεταφορά αρχείων σε τμήματα και το DedSec's Database σε ένα ενιαίο περιβάλλον με πιστοποίηση. Υποστηρίζει αρχεία έως 150 MB, ισχυρό αυτόματα δημιουργημένο μυστικό κλειδί μίας χρήσης, πρόσβαση μέσω Cloudflare και Tor, περιορισμό ρυθμού αιτημάτων, ενέργειες Database με προστασία CSRF, ταυτότητες και ιδιοκτησία μηνυμάτων που ελέγχονται από τον server, καθώς και δικαιώματα moderator όπου ο πρώτος χρήστης που συνδέεται μπορεί να διαγράφει οποιοδήποτε μήνυμα, ενώ οι υπόλοιποι μπορούν να διαγράφουν ή να επεξεργάζονται μόνο τα δικά τους. Τα αρχεία του chat μεταφέρονται σε προστατευμένα τμήματα αντί για υπερβολικά μεγάλα Socket.IO/Base64 μηνύματα και η πρόσβαση μέσω LAN είναι απενεργοποιημένη από προεπιλογή, εκτός αν ενεργοποιηθεί ρητά. Χρησιμοποίησέ το μόνο σε συστήματα και δίκτυα που σου ανήκουν ή έχεις άδεια να διαχειρίζεσαι.
Τοποθεσία Αποθήκευσης
Τα κοινόχρηστα αρχεία αποθηκεύονται στο ~/Downloads/DedSec's Database/. Αν ο φάκελος δεν μπορεί να δημιουργηθεί, η εναλλακτική διαδρομή είναι ./DedSec_Database_Files/ στον τρέχοντα κατάλογο. Τα δεδομένα λειτουργίας του Tor αποθηκεύονται ξεχωριστά στο ~/.foxchat_tor/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Ubuntu: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Kali Linux: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Linux Mint: Shared files are stored in ~/Downloads/DedSec's Database/. If that folder cannot be created, the fallback is ./DedSec_Database_Files/ in the current directory. Tor runtime data is stored separately in ~/.foxchat_tor/.
Link Shield.py
Τι Βοηθά Να Λύσεις
Έλεγχος redirects, HTTPS, domains και ύποπτων URL patterns πριν ανοίξεις έναν άγνωστο σύνδεσμο.
Εργαλείο ελέγχου συνδέσμων: ακολουθεί redirects, ελέγχει HTTPS/SSL, εντοπίζει ύποπτα domains/μοτίβα και βγάζει αναφορά ρίσκου πριν ανοίξεις σύνδεσμο. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Δεν δημιουργείται ξεχωριστός φάκελος αποτελεσμάτων. Το linkshield_config_en.json, τα user-named JSON/Markdown αναφορές και τα linkshield_batch_report.json/.csv αποθηκεύονται στον τρέχοντα κατάλογο.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Ubuntu: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Kali Linux: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Linux Mint: No dedicated output folder is created. linkshield_config_en.json, user-named JSON/Markdown reports, and linkshield_batch_report.json/.csv are saved in the current working directory.
Masker.py
Τι Βοηθά Να Λύσεις
Δημιουργία καθαρών test links και έλεγχος redirect behavior για δικά σου demos και εξουσιοδοτημένα awareness workflows.
URL helper για καθαρά, ευανάγνωστους δοκιμαστικούς συνδέσμους και έλεγχο συμπεριφορά ανακατεύθυνσης στα δικά σου workflows. Παρουσιάζεται μόνο για οργάνωση, demos και εξουσιοδοτημένη εκπαίδευση ευαισθητοποίησης, ποτέ για να κρύψει κακόβουλα links ή να ξεγελάσει κόσμο.
Τοποθεσία Αποθήκευσης
Δεν αποθηκεύονται αρχεία. Το URL που δημιουργήθηκε εμφανίζεται στο terminal.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: No files are saved. The generated masked URL is printed in the terminal.
Ubuntu: No files are saved. The generated masked URL is printed in the terminal.
Kali Linux: No files are saved. The generated masked URL is printed in the terminal.
Linux Mint: No files are saved. The generated masked URL is printed in the terminal.
QR Code Generator.py
Τι Βοηθά Να Λύσεις
Μετατροπή κειμένου ή links σε QR codes γρήγορα από Termux για sharing, testing ή έντυπες ροές.
Δημιουργός κωδικού QR βασισμένος σε Python που δημιουργεί κωδικούς QR για URLs και τους αποθηκεύει στο φάκελο Downloads/QR Codes. Διαθέτει αυτόματη εγκατάσταση εξαρτήσεων, φιλική προς τον χρήστη διεπαφή και χειρισμό σφαλμάτων για αξιόπιστη λειτουργία. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Τα εικόνες PNG που δημιουργούνται αποθηκεύονται στο ~/storage/downloads/QR Codes/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Generated PNG images are saved in ~/storage/downloads/QR Codes/.
Ubuntu: Generated PNG images are saved in ~/Downloads/QR Codes/.
Kali Linux: Generated PNG images are saved in ~/Downloads/QR Codes/.
Linux Mint: Generated PNG images are saved in ~/Downloads/QR Codes/.
Sod.py
Τι Βοηθά Να Λύσεις
Μέτρηση της συμπεριφοράς εφαρμογής που ελέγχεις υπό φορτίο ώστε να εντοπίζονται performance limits πριν τα συναντήσουν πραγματικοί χρήστες.
Ένα ολοκληρωμένο εργαλείο δοκιμής φόρτου για εφαρμογές web, με πολλαπλές μεθόδους δοκιμής (HTTP, WebSocket, προσομοίωση βάσης δεδομένων, μεταφόρτωση αρχείων, μικτό φόρτο εργασίας), μετρήσεις σε πραγματικό χρόνο και αυτόματη εγκατάσταση εξαρτήσεων. Προηγμένο πλαίσιο δοκιμής απόδοσης με ρεαλιστική προσομοίωση συμπεριφοράς χρήστη. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Το αρχείο ρυθμίσεων load_test_config.json αποθηκεύεται στον τρέχοντα κατάλογο. Τα αποτελέσματα δοκιμών εμφανίζονται στο terminal και δεν γράφονται σε αρχείο αναφοράς.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Ubuntu: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Kali Linux: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Linux Mint: The configuration file load_test_config.json is saved in the current working directory. Test results are displayed in the terminal and are not written to a report file.
Store Scrapper.py
Τι Βοηθά Να Λύσεις
Εξαγωγή και οργάνωση δημόσιων δεδομένων προϊόντων/κατηγοριών από stores που επιτρέπεται να αναλύσεις αντί για χειροκίνητη συλλογή ανά σελίδα.
Μονοαρχείο Python store scrapper για Termux που λειτουργεί χωρίς root. Δοκιμάζει πολλούς τρόπους για να βρίσκει κατηγορίες και προϊόντα σε απλές HTML σελίδες αλλά και σε πολλά JS-style stores, διαβάζοντας HTML, JSON-LD, embedded JSON, sitemaps, Shopify endpoints, WooCommerce APIs, generic product cards, breadcrumbs, OpenGraph/meta tags και εσωτερικούς συνδέσμους. Αποθηκεύει όσο τρέχει, ξεκινά πλήρες scraping προϊόντος μόλις βρεθεί κάθε προϊόν, δείχνει live κατάσταση στο terminal, χρησιμοποιεί το Enter ως προεπιλογή στα prompts και οργανώνει τα αποτελέσματα σε φακέλους store/category/product με κατεβασμένες εικόνες. Χρησιμοποίησέ το μόνο σε συστήματα που σου ανήκουν ή έχεις ρητή άδεια να ελέγξεις.
Τοποθεσία Αποθήκευσης
Τα δεδομένα προϊόντων αποθηκεύονται στο ~/storage/downloads/Store Scrapper////. Αν το Termux Downloads δεν είναι διαθέσιμο, χρησιμοποιείται το ~/downloads/Store Scrapper/. Οι φάκελοι προϊόντων μπορούν να περιέχουν FOUND.txt, metadata.json, summary.txt, description.txt, images/ και images.json, ενώ τα αρχεία εντοπισμού και κατάστασης εκτέλεσης μένουν στη δομή αποτελεσμάτων του καταστήματος.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Product data is saved under ~/storage/downloads/Store Scrapper////. If Termux Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Ubuntu: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Kali Linux: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Linux Mint: Product data is saved under ~/Downloads/Store Scrapper////. If desktop Downloads is unavailable, it uses ~/downloads/Store Scrapper/. Product folders can contain FOUND.txt, metadata.json, summary.txt, description.txt, images/, and images.json; discovery and run-state files are stored in the store output tree.
Άλλα Εργαλεία
Android App Launcher.py
Τι Βοηθά Να Λύσεις
Εκκίνηση και οργάνωση Android εφαρμογών από Termux-centered workflow όταν θέλεις γρηγορότερη πρόσβαση από το terminal.
Βοηθητικό πρόγραμμα για διαχείριση εφαρμογών Android απευθείας από το terminal. Μπορεί να εκκινήσει εφαρμογές, να εξάγει αρχεία APK, να απεγκαταστήσει εφαρμογές και να αναλύσει δικαιώματα ασφαλείας. Προηγμένο εργαλείο διαχείρισης εφαρμογών Android και ανάλυσης ασφαλείας. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Τα αρχεία APK που εξάγονται αποθηκεύονται στον φάκελο ~/storage/shared/Download/Extracted APK's/. Οι αναφορές ασφαλείας αποθηκεύονται στο ~/storage/shared/Download/App_Security_Reports/ με όνομα _security_report.txt.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: μόνο Termux. Το utility διαχειρίζεται Android/Termux-specific λειτουργίες και δεν εφαρμόζεται σε desktop Linux.
Termux: Extracted APK files are saved in ~/storage/shared/Download/Extracted APK's/. Security reports are saved in ~/storage/shared/Download/App_Security_Reports/ as _security_report.txt.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Loading Screen.py
Τι Βοηθά Να Λύσεις
Προσθήκη επαναχρησιμοποιήσιμου loading/transition experience σε local projects ώστε τα μεγάλα startup βήματα να είναι πιο ξεκάθαρα στον χρήστη.
Εξατομίκευση εκκίνησης Termux με ASCII art loading screens. Υποστηρίζει custom art, καθυστέρηση και αυτόματο setup/cleanup για εμφάνιση μία φορά. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Δεν δημιουργείται ξεχωριστός φάκελος αποτελεσμάτων. Το επιλεγμένη οθόνη φόρτωσης γράφεται απευθείας στο ~/.bash_profile.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Ubuntu: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Kali Linux: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Linux Mint: No separate output folder is created. The selected loading screen is written directly into ~/.bash_profile.
Password Master.py
Τι Βοηθά Να Λύσεις
Δημιουργία και διαχείριση ισχυρότερων ροών password generation/checking αντί για εύκολα απομνημονεύσιμα αλλά αδύναμα patterns.
Ολοκληρωμένο σύνολο διαχείρισης κωδικών πρόσβασης με κρυπτογραφημένη αποθήκευση θησαυροφυλακίου, δημιουργία κωδικών, ανάλυση ισχύος και εργαλεία βελτίωσης. Περιλαμβάνει AES-256 κρυπτογραφημένο θησαυροφυλάκιο με προστασία κύριου κωδικού πρόσβασης, γεννήτρια τυχαίων κωδικών, γεννήτρια φράσεων πρόσβασης, αναλυτή ισχύος κωδικού και προτάσεις βελτίωσης κωδικών. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Το encrypted vault αποθηκεύεται ως ./my_vault.enc στον τρέχοντα κατάλογο. Τα αντίγραφα ασφαλείας αποθηκεύονται στο /storage/emulated/0/Download/Password Master Backup/vault_backup.enc ή στο ~/Downloads/Password Master Backup/ εκτός Android.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in /storage/emulated/0/Download/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Ubuntu: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Kali Linux: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Linux Mint: The encrypted vault is saved as ./my_vault.enc in the current working directory. Backups are saved in ~/Downloads/Password Master Backup/vault_backup.enc, or ~/Downloads/Password Master Backup/ outside Android.
Termux Backup Restore.py
Τι Βοηθά Να Λύσεις
Δημιουργία και επαναφορά backups αρχείων Termux πριν από updates, migrations ή αλλαγές με ρίσκο.
Δημιουργία και επαναφορά αντιγράφων ασφαλείας για Termux: δημιουργεί συμπιεσμένο αντίγραφο ασφαλείας των αρχείων σου στα Downloads και μπορεί να τα επαναφέρει με ελέγχους ακεραιότητας. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Το αρχείο αντιγράφου ασφαλείας αποθηκεύεται ως /storage/emulated/0/Download/name_backup.zip. Τα τμήματα διαχωρισμένου αρχείου δημιουργούνται δίπλα στο archive. Το backup_config.json αποθηκεύεται στον τρέχοντα κατάλογο.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: μόνο Termux. Το utility διαχειρίζεται Android/Termux-specific λειτουργίες και δεν εφαρμόζεται σε desktop Linux.
Termux: The backup archive is saved as /storage/emulated/0/Download/name_backup.zip. Split parts are created beside that archive. backup_config.json is stored in the current working directory.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Termux Repair Wizard.py
Τι Βοηθά Να Λύσεις
Διάγνωση συνηθισμένων προβλημάτων setup/packages στο Termux μέσω καθοδηγούμενης ροής αντί για τυχαίες εντολές.
Το DedSec Termux Repair Wizard είναι ένα πακέτο διάγνωσης και επιδιόρθωσης χωρίς root για σφάλματα αποθετηρίων και mirrors, αποτυχίες apt/dpkg, πρόσβαση στον αποθηκευτικό χώρο, δικαιώματα, TLS certificates, προσωρινά αρχεία, Python/pip και προβλήματα shell/PATH. Η λειτουργία Script Keeper σαρώνει ένα script ή ολόκληρο φάκελο χωρίς να εκτελεί άμεσα τα scripts, αναγνωρίζει περισσότερες από 20 γλώσσες μαζί με αρχεία χωρίς επέκταση που περιέχουν shebang, ελέγχει σύνταξη, περιβάλλοντα εκτέλεσης, εντολές, imθύρες, modules και συνηθισμένα αρχεία manifest έργων, και μπορεί μετά από επιβεβαίωση να εγκαταστήσει εξαρτήσεις που λείπουν από Termux ή από τα αντίστοιχα διαχειριστές πακέτων κάθε γλώσσας. Για νεότερες εκδόσεις Python δοκιμάζει επίσης συμβατά εναλλακτικά πακέτα για modules της βασικής βιβλιοθήκης που έχουν αφαιρεθεί. Κάθε εκτέλεση του Script Keeper δημιουργεί κατηγοριοποιημένη αναφορά με εγκαταστάσεις, διορθώσεις, προειδοποιήσεις, αποτυχίες και συντακτικά προβλήματα.
Τοποθεσία Αποθήκευσης
Οι περισσότερες επιδιορθώσεις εφαρμόζονται απευθείας στα πακέτα του Termux, στα δικαιώματα αποθήκευσης, στα $HOME δικαιώματα και σε αρχεία κελύφους όπως ~/.bashrc, ~/.profile και ~/.zshrc. Οι αναφορές του Script Keeper αποθηκεύονται ως ~/DedSec/logs/script_keeper_.log.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: μόνο Termux. Το utility διαχειρίζεται Android/Termux-specific λειτουργίες και δεν εφαρμόζεται σε desktop Linux.
Termux: Most repairs are applied directly to Termux packages, storage permissions, $HOME permissions, and shell files such as ~/.bashrc, ~/.profile, and ~/.zshrc. Script Keeper reports are saved as ~/DedSec/logs/script_keeper_.log.
Ubuntu: Not applicable — this utility manages Android/Termux-specific features.
Kali Linux: Not applicable — this utility manages Android/Termux-specific features.
Linux Mint: Not applicable — this utility manages Android/Termux-specific features.
Συλλογή Προσωπικών Πληροφοριών
Fake Back Camera Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν πρόσβαση στην κάμερα, ώστε να αναγνωρίζονται ευκολότερα permission prompts και social-engineering risks.
Το Fake Back Camera Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Back Camera. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Οι καταγεγραμμένες εικόνες της πίσω κάμερας και τα σχετικά δεδομένα κειμένου αποθηκεύονται στο ~/storage/downloads/Camera-Phish-Back/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Captured back-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Back/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Back Camera Video Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν πρόσβαση στην κάμερα, ώστε να αναγνωρίζονται ευκολότερα permission prompts και social-engineering risks.
Το Fake Back Camera Video Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Back Camera Video. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα καταγεγραμμένα βίντεο WEBM της πίσω κάμερας και τα σχετικά δεδομένα κειμένου αποθηκεύονται στο ~/storage/downloads/Back Camera Videos/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Recorded back-camera WEBM videos and related text data are saved in ~/storage/downloads/Back Camera Videos/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Card Details Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Card Details Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Card Details. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα υποβληθέντα δεδομένα ενεργοποίησης κάρτας αποθηκεύονται στο ~/storage/downloads/CardActivations/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Submitted card-activation data is saved in ~/storage/downloads/CardActivations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Chrome Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Chrome Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Chrome Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Chrome, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Chrome Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Chrome verification output, including location JSON, face video, device scan, system information, and summaries, is saved in ~/storage/downloads/Chrome Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Data Grabber Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Data Grabber Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Data Grabber. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα στοιχεία εφαρμογών που συλλέγονται αποθηκεύονται στο ~/storage/downloads/Peoples_Lives/, μαζί με το application_info.txt.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Collected application information is saved under ~/storage/downloads/Peoples_Lives/, including application_info.txt.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Discord Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Discord Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Discord Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Discord, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Discord Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Discord verification output, including location JSON, face video, ID, phone, payment, and summary files, is saved in ~/storage/downloads/Discord Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Facebook Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Facebook Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Facebook Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Facebook, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Facebook Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Facebook verification output, including location JSON, face video, ID images, and summary files, is saved in ~/storage/downloads/Facebook Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Front Camera Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν πρόσβαση στην κάμερα, ώστε να αναγνωρίζονται ευκολότερα permission prompts και social-engineering risks.
Το Fake Front Camera Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Front Camera. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Οι καταγεγραμμένες εικόνες της μπροστινής κάμερας και τα σχετικά δεδομένα κειμένου αποθηκεύονται στο ~/storage/downloads/Camera-Phish-Front/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Captured front-camera images and related text data are saved in ~/storage/downloads/Camera-Phish-Front/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Front Camera Video Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν πρόσβαση στην κάμερα, ώστε να αναγνωρίζονται ευκολότερα permission prompts και social-engineering risks.
Το Fake Front Camera Video Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Front Camera Video. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα καταγεγραμμένα βίντεο WEBM της μπροστινής κάμερας και τα σχετικά δεδομένα κειμένου αποθηκεύονται στο ~/storage/downloads/Front Camera Videos/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Recorded front-camera WEBM videos and related text data are saved in ~/storage/downloads/Front Camera Videos/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Google Location Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν ή να εκθέτουν δεδομένα τοποθεσίας.
Το Fake Google Location Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Google Location. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αρχεία τοποθεσίας JSON αποθηκεύονται στον φάκελο ~/storage/downloads/Locations/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Location JSON files are saved in ~/storage/downloads/Locations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Instagram Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Instagram Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Instagram Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Instagram, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Instagram Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Instagram verification output, including location JSON, face video, voice audio, ID documents, and summary files, is saved in ~/storage/downloads/Instagram Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Location Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν ή να εκθέτουν δεδομένα τοποθεσίας.
Το Fake Location Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Location. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αρχεία τοποθεσίας JSON αποθηκεύονται στον φάκελο ~/storage/downloads/Locations/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Location JSON files are saved in ~/storage/downloads/Locations/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Microphone Page
Τι Βοηθά Να Λύσεις
Εκτέλεση εξουσιοδοτημένων awareness demos που δείχνουν πώς παραπλανητικές σελίδες μπορεί να ζητούν πρόσβαση στο μικρόφωνο.
Το Fake Microphone Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Microphone. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα καταγεγραμμένα audio, τα converted WAV files και τα σχετικά δεδομένα κειμένου αποθηκεύονται στο ~/storage/downloads/Recordings/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Recorded audio, converted WAV files, and related text data are saved in ~/storage/downloads/Recordings/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Onlyfans Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake OnlyFans Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από OnlyFans Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του OnlyFans, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/OnlyFans Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: OnlyFans verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/OnlyFans Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Steam Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Steam Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Steam, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Steam Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Steam verification output, including location JSON, face video, ID, Steam Guard, phone, payment, and summary files, is saved in ~/storage/downloads/Steam Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitch Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake Twitch Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από Twitch Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του Twitch, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/Twitch Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Twitch verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/Twitch Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Youtube Verification Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο lab του πώς fake verification/data-entry flows μπορούν να πιέσουν χρήστες να μοιραστούν ευαίσθητες πληροφορίες, ώστε αυτά τα patterns να αναγνωρίζονται ευκολότερα.
Το Fake YouTube Verification Page είναι εκπαιδευτική επίδειξη ευαισθητοποίησης με συναίνεση για να δείχνει πώς παραπλανητικά permission prompts μπορούν να πιέσουν κάποιον να μοιραστεί ευαίσθητη πρόσβαση γύρω από YouTube Verification. Χρησιμοποίησέ το μόνο σε ελεγχόμενο εργαστήριο, με δοκιμαστικά δεδομένα, screenshots ή καθαρή άδεια από συμμετέχοντες. Δεν παρουσιάζεται ως εργαλείο κλοπής πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα δεδομένα επαλήθευσης του YouTube, μαζί με τα σχετικά αρχεία καταγραφής και τις συνοπτικές αναφορές, αποθηκεύονται στον φάκελο ~/storage/downloads/YouTube Verification/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: YouTube verification output, including location JSON, face video, ID, payment, and summary files, is saved in ~/storage/downloads/YouTube Verification/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Ψεύτικες Σελίδες
Fake Apple Icloud Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Apple iCloud Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Apple iCloud προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Apple iCloud/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Apple iCloud/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Discord Nitro Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Discord Nitro Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Discord Nitro προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Discord Nitro/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Discord Nitro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Epic Games Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Epic Games Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Epic Games προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Epic Games/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Epic Games/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Facebook Friends Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Facebook Friends Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Facebook Friends προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Facebook Friends/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Facebook Friends/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Free Robux Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Free Robux Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Free Robux προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Roblox Robux/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Roblox Robux/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake GitHub Pro Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake GitHub Pro Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες GitHub Pro προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/GitHub Pro/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/GitHub Pro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Google Free Money Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Google Free Money Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Google Free Money προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Google Free Money/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Google Free Money/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Instagram Followers Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Instagram Followers Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Instagram Followers προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Instagram Followers/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Instagram Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Metamask Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake MetaMask Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες MetaMask προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/MetaMask/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/MetaMask/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Microsoft 365 Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Microsoft 365 Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Microsoft 365 προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Microsoft 365/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Microsoft 365/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Onlyfans Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake OnlyFans Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες OnlyFans προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/OnlyFans/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/OnlyFans/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Paypal Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake PayPal Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες PayPal προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας και της κάρτας γράφονται στον φάκελο ~/storage/downloads/PayPal/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form and card data is written to ~/storage/downloads/PayPal/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Pinterest Pro Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Pinterest Pro Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Pinterest Pro προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Pinterest Pro/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Pinterest Pro/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Playstation Network Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake PlayStation Network Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες PlayStation Network προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/PlayStation Network/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/PlayStation Network/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Reddit Karma Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Reddit Karma Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Reddit Karma προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Reddit Karma/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Reddit Karma/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Snapchat Friends Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Snapchat Friends Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Snapchat Friends προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Snapchat Friends/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Snapchat Friends/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Games Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Steam Games Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Steam Games προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Steam Games/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Steam Games/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Steam Wallet Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Steam Wallet Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Steam Wallet προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Steam Wallet/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Steam Wallet/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Tiktok Followers Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake TikTok Followers Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες TikTok Followers προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/TikTok Followers/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/TikTok Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Trust Wallet Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Trust Wallet Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Trust Wallet προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Trust Wallet/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Trust Wallet/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitch Subs Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Twitch Subs Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Twitch Subs προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Twitch Subs/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Twitch Subs/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Twitter Followers Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Twitter Followers Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Twitter Followers προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Twitter Followers/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Twitter Followers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake What's Up Dude Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake What's Up Dude Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες What's Up Dude προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/WhatsUp Dude/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/WhatsUp Dude/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Xbox Live Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake Xbox Live Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες Xbox Live προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/Xbox Live/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/Xbox Live/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Fake Youtube Subscribers Page
Τι Βοηθά Να Λύσεις
Επίδειξη σε εξουσιοδοτημένο phishing-awareness lab του πώς μια πειστική look-alike προσφορά ή login page μπορεί να παραπλανήσει χρήστες.
Το Fake YouTube Subscribers Page είναι mock phishing-awareness page για να δείχνει πώς ψεύτικες YouTube Subscribers προσφορές, giveaways, upgrades ή login prompts χειραγωγούν την εμπιστοσύνη. Χρησιμοποίησέ το μόνο για εκπαίδευση, screenshots ή consent-based training με dummy accounts. Ποτέ για συλλογή πραγματικών credentials, καρτών, wallets ή προσωπικών πληροφοριών.
Τοποθεσία Αποθήκευσης
Τα αποθηκευμένα δεδομένα της φόρμας γράφονται στον φάκελο ~/storage/downloads/YouTube Subscribers/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: διαθέσιμο στο Termux build· το desktop compatibility mode αφήνει σκόπιμα αυτό το module απενεργοποιημένο.
Termux: Saved form data is written to ~/storage/downloads/YouTube Subscribers/.
Ubuntu: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Kali Linux: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Linux Mint: Not enabled by the desktop compatibility launcher; the documented Termux/lab save path remains unchanged.
Χωρίς Κατηγορία
APK's
Τι Βοηθά Να Λύσεις
Λήψη της τρέχουσας σταθερής standalone έκδοσης Android app απευθείας από το repository του DedSec Project.
Ο φάκελος APK's περιέχει σταθερές standalone εφαρμογές Android που διανέμονται με το DedSec Project. Η τρέχουσα έκδοση είναι το ButSystem v1.0.0 Universal APK για Android 8.0 και νεότερο.
Τοποθεσία Στο Repository
APK's/ButSystem/ButSystem-v1.0.0-universal.apk
Υποστήριξη Πλατφόρμας
Termux / Android: Το APK μπορεί να εγκατασταθεί σε Android 8.0+.
Ubuntu: Το APK μπορεί να ληφθεί ή να αντιγραφεί, αλλά δεν εκτελείται ως native Linux εφαρμογή.
Kali Linux: Το APK μπορεί να ληφθεί ή να αντιγραφεί, αλλά δεν εκτελείται ως native Linux εφαρμογή.
Linux Mint: Το APK μπορεί να ληφθεί ή να αντιγραφεί, αλλά δεν εκτελείται ως native Linux εφαρμογή.
Λήψη ButSystem APKΆνοιξε Τη Σελίδα ButSystem
Extra Content.py
Τι Βοηθά Να Λύσεις
Εύρεση προαιρετικών resources, templates και bonus υλικού χωρίς χειροκίνητη αναζήτηση σε όλο το repository.
Κόμβος extra περιεχομένου: γρήγορη πρόσβαση σε πρόσθετους πόρους, templates και προαιρετικά add-ons του DedSec toolkit. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Ο φάκελος Extra Content του repository αντιγράφεται στο ~/storage/downloads/Extra Content/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: The repository Extra Content folder is copied to ~/storage/downloads/Extra Content/.
Ubuntu: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Kali Linux: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Linux Mint: The repository Extra Content folder is copied to ~/Downloads/Extra Content/.
Settings.py
Τι Βοηθά Να Λύσεις
Κεντρική διαχείριση του DedSec Project και εκκίνηση πλήρους browser-native desktop με advanced files, documents, media, terminal, packages, personalization, security και troubleshooting tools από το ίδιο Settings.py.
Το Settings.py είναι το κεντρικό control panel του DedSec Project και ο launcher του DedSec OS. Τα terminal settings menus καλύπτουν πληροφορίες project/συσκευής, updates από main και backup source, ανανέωση packages/modules, Sponsors-Only access, Save DedSec Project, το privacy-filtered offline Transfer System, prompt settings, GitHub σύνδεση/stats, Termux usage stats, HTTP Proxy & Tor utilities, menu style και auto-start, γλώσσα, credits και uninstall. Το DedSec OS προσθέτει Windows-style local desktop με movable/resizable windows, Start/taskbar/Action Center, File Explorer και κοινά Open/Save dialogs, Recycle Bin, Notepad, Web Office, Word/Excel/PowerPoint/PDF Explorer, Photo Studio, Video Editor, media/gallery/camera/recorder tools, Archive Manager, Calendar, Maps, browser, Terminal, Applications, Software Center, utilities, games, personalization, login/optional 2FA/password recovery και πλήρες Help & Troubleshooting app με guided fixes και live diagnostics. Τα built-in browser apps είναι σχεδιασμένα να λειτουργούν χωρίς X11, ενώ τα optional legacy X11 programs παραμένουν διαθέσιμα ξεχωριστά.
Τοποθεσία Αποθήκευσης
Γλώσσα: ~/Language.json | Backup ρυθμίσεων Termux: ~/Termux.zip | Project archive: /storage/emulated/0/Download/DedSec Project Legacy Save.zip | Offline transfer set: /storage/emulated/0/Download/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ και ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: /storage/emulated/0/Download/DedSec Project Legacy Save.zip | Offline transfer set: /storage/emulated/0/Download/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Ubuntu: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Kali Linux: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
Linux Mint: Language: ~/Language.json | Termux configuration backup: ~/Termux.zip | Project archive: ~/Downloads/DedSec Project Legacy Save.zip | Offline transfer set: ~/Downloads/Termux Transfer/ | GitHub account: ~/.dedsec_github_account.json | Usage stats: ~/.dedsec_termux_usage_stats.json | Network utility data: ~/.dedsec_network_utilities/ and ~/.dedsec_network_utilities.json | DedSec OS desktop/config/users/workspace/runtime data: ~/DedSec OS/.
DedSec Market.py
Τι Βοηθά Να Λύσεις
Περιήγηση, εγκατάσταση, ενημέρωση και εκκίνηση υποστηριζόμενων GitHub projects από phone-friendly Termux interface.
Curses-based market αποθετηρίων GitHub για Termux που εμφανίζει τα projects με το όνομα του project αντί για το ακατέργαστο όνομα του repository. Καθαρίζει και εμφανίζει σωστά το κείμενο των README, δείχνει releases και issues, υποστηρίζει ενέργειες install/update/delete και launch, κρατά watchlist και αποθηκεύει cache/state για πιο γρήγορη επαναχρησιμοποίηση. Σχεδιασμένο για το Termux, με σαφείς οδηγίες και οργανωμένα αποτελέσματα.
Τοποθεσία Αποθήκευσης
Το Market state και cache αποθηκεύονται στο ~/DedSec Market/ (state.json και cache/). Τα installed repositories τοποθετούνται απευθείας στο ~//, με -1, -2 κ.ο.κ. αν ο φάκελος υπάρχει ήδη.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Ubuntu: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Kali Linux: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Linux Mint: Market state and cache are stored in ~/DedSec Market/ (state.json and cache/). Installed repositories are placed directly in ~//, adding -1, -2, and so on if that folder already exists.
Μόνο Για Υποστηρικτές
Διάλεξε ένα από τα τρία tier buttons παρακάτω για να δεις ακριβώς τι περιλαμβάνει. Τα αναλυτικά script entries και ολόκληρη η βιβλιοθήκη ebooks του $25 εμφανίζονται πιο κάτω.
$3 Sponsor
Το βασικό sponsor tier για την τρέχουσα private sponsor συλλογή.
GitHub sponsor badge.
Πρόσβαση στη sponsor community.
Πρόσβαση στο τρέχον basic private sponsor repository.
Τρέχοντα $3 sponsor scripts: Face Detector.py, Face Detector Heavy.py, Face Swap.py, Steganography.py, AR Terror.py και Login Stealer.py.
Άνοιξε το GitHub Sponsors
$9 Pro Supporter
Το επεκταμένο sponsor tier με όλα όσα περιλαμβάνει το $3 και τα επιπλέον Pro-only additions.
Όλα όσα περιλαμβάνει το $3 Sponsor tier.
Πρόσβαση στο expanded private sponsor set.
Επιπλέον Pro scripts: Widget Maker.py, Kraken Trader.py και Noob Hacker.py.
Άνοιξε το GitHub Sponsors
$25 Ultimate Supporter
Το πλήρες sponsor tier, που συνδυάζει όλα τα benefits του $9 με τη βιβλιοθήκη ebooks του DedSec Project.
Όλα όσα περιλαμβάνει το $9 Pro Supporter tier.
Και τα πέντε τρέχοντα ebooks σε Αγγλικά και Ελληνικά.
Τρέχουσα βιβλιοθήκη: Data Analytics in Practice, Faith in the Digital Age, The Complete Termux Troubleshooting Handbook, Build and Publish a Website with AI from Your Phone και AI Website Prompt Library and Release Workbook.
Άνοιξε το GitHub Sponsors
$3 Sponsor — Αναλυτικά Scripts
Αυτά είναι τα individual scripts που περιλαμβάνονται στο τρέχον $3 Sponsor tier. Άνοιξε οποιοδήποτε script παρακάτω για πλήρη περιγραφή και save location.
Face Detector.py
Τι Βοηθά Να Λύσεις
Πειραματισμός με face detection σε επιτρεπόμενες εικόνες ή camera input ως sponsor-only εργαλείο computer vision.
Τοπικό browser-based εργαλείο ανάλυσης προσώπου για Termux που λειτουργεί χωρίς root. Χρησιμοποιεί MediaPipe Face Mesh στο live feed της κάμερας, υποστηρίζει μπροστινή και πίσω κάμερα, παρακολουθεί έως και 3 πρόσωπα, σχεδιάζει αναλυτικά facial landmark overlays αντί για απλά boxes και επιτρέπει επίσης upload φωτογραφιών ή βίντεο για ανάλυση απευθείας από το interface. Μπορεί να τραβά PNG snapshots, να γράφει WEBM βίντεο, να αποθηκεύει ξεχωριστά cropped detected faces και να παρέχει τόσο local network link όσο και προαιρετικό δημόσιο Cloudflare link.
Τοποθεσία Αποθήκευσης
Στο Termux, οι λήψεις, οι εγγραφές, τα αποτελέσματα που ανεβαίνουν και τα αποθηκευμένα αποκόμματα προσώπων αποθηκεύονται στο ~/storage/downloads/Face Detector/. Αν ο χώρος αποθήκευσης του Termux δεν είναι διαθέσιμος, χρησιμοποιείται εναλλακτικά το ~/Face Detector/. Σε συστήματα εκτός Termux χρησιμοποιείται το ~/Downloads/Face Detector/, με εναλλακτική διαδρομή το ~/Face Detector/. Τα εσωτερικά web αρχεία, τα πιστοποιητικά και τα βοηθητικά binaries αποθηκεύονται στο ~/.face_detector_studio/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Ubuntu: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Kali Linux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Linux Mint: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Face Detector Heavy.py
Τι Βοηθά Να Λύσεις
Χρήση βαρύτερης ροής face detection όταν χρειάζεσαι περισσότερες processing επιλογές και η συσκευή μπορεί να σηκώσει το επιπλέον φορτίο.
Πιο βαριά και επεκταμένη έκδοση ανάλυσης του face detector για Termux, χωρίς ανάγκη για root. Εκτός από live χρήση κάμερας, εναλλαγή μπροστινής/πίσω κάμερας, upload φωτογραφιών και βίντεο, PNG snapshots, WEBM recording και αποθήκευση face crops, ανεβάζει την παρακολούθηση έως και σε 30 πρόσωπα και προσθέτει TensorFlow COCO-SSD object detection πάνω στο pipeline του MediaPipe face mesh. Εμφανίζει πιο πλούσιο on-screen telemetry όπως face count, animal/object detection, εκτιμήσεις pose και gaze, facial proportions, κατάσταση στόματος και φρυδιών, asymmetry scoring και άλλα visual analysis στοιχεία, ενώ συνεχίζει να υποστηρίζει local network link και προαιρετικό δημόσιο Cloudflare link.
Τοποθεσία Αποθήκευσης
Στο Termux, οι λήψεις, οι εγγραφές, τα αποτελέσματα που ανεβαίνουν και τα αποθηκευμένα αποκόμματα προσώπων αποθηκεύονται στο ~/storage/downloads/Face Detector/. Αν ο χώρος αποθήκευσης του Termux δεν είναι διαθέσιμος, χρησιμοποιείται εναλλακτικά το ~/Face Detector/. Σε συστήματα εκτός Termux χρησιμοποιείται το ~/Downloads/Face Detector/, με εναλλακτική διαδρομή το ~/Face Detector/. Τα εσωτερικά web αρχεία, τα πιστοποιητικά και τα βοηθητικά binaries αποθηκεύονται στο ~/.face_detector_studio/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/storage/downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Ubuntu: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Kali Linux: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Linux Mint: On Termux, captures, recordings, uploaded results, and saved face crops are stored in: ~/Downloads/Face Detector/. If Termux storage is unavailable, it falls back to ~/Face Detector/. On non-Termux systems it uses ~/Downloads/Face Detector/, with fallback to ~/Face Detector/. Internal web files, certificates, and helper binaries are stored in ~/.face_detector_studio/.
Face Swap.py
Τι Βοηθά Να Λύσεις
Δοκιμή face-swap μετασχηματισμού σε media που έχεις άδεια να χρησιμοποιήσεις.
Τοπικό browser-based εργαλείο face swap για Termux που λειτουργεί χωρίς root. Ανοίγει μια local camera σελίδα, σου επιτρέπει να ανεβάσεις μια source face εικόνα, να αλλάξεις ανάμεσα σε μπροστινή και πίσω κάμερα και να κάνεις blend το ανεβασμένο πρόσωπο πάνω στο live camera feed με MediaPipe Face Mesh. Η τρέχουσα έκδοση εστιάζει σε smooth face-lock λογική: κλειδώνει το ανεβασμένο πρόσωπο μία φορά, ακολουθεί το live πρόσωπο, κινεί βασικά feature patches για expressions, περιλαμβάνει smoothing, feathering, opacity, blend και skin-tone matching controls και μπορεί να αποθηκεύει PNG snapshots από τον browser. Χρησιμοποίησέ το μόνο με δικές σου εικόνες ή με ξεκάθαρη άδεια.
Τοποθεσία Αποθήκευσης
Στο Termux, οι αποθηκευμένες φωτογραφίες μπαίνουν στο: /storage/emulated/0/Download/Face Swap/ ή στο ~/storage/downloads/Face Swap/, με εναλλακτική διαδρομή στο ~/Face Swap/. Σε συστήματα εκτός Termux χρησιμοποιείται το ~/Downloads/Face Swap/, με εναλλακτική διαδρομή στο ~/Face Swap/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: On Termux, saved photos are stored in: /storage/emulated/0/Download/Face Swap/ or ~/storage/downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Ubuntu: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Kali Linux: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Linux Mint: On Termux, saved photos are stored in: ~/Downloads/Face Swap/ or ~/Downloads/Face Swap/, with fallback to ~/Face Swap/. On non-Termux systems it uses ~/Downloads/Face Swap/, with fallback to ~/Face Swap/.
Steganography.py
Τι Βοηθά Να Λύσεις
Εκμάθηση του πώς δεδομένα μπορούν να κρύβονται και να ανακτώνται από αρχεία για εξουσιοδοτημένη πρακτική ασφάλειας και forensics.
Σουίτα steganography με κωδικό για Termux. Μπορεί να δημιουργεί τυχαίες ασπρόμαυρες PNG εικόνες-φορείς, να κρυπτογραφεί μυστικό κείμενο με password-derived Fernet key, να κρύβει το κρυπτογραφημένο κείμενο μέσα σε PNG εικόνες με LSB steganography και να κάνει batch αποκωδικοποίηση κρυμμένων μηνυμάτων από όλες τις εικόνες που τοποθετούνται στον φάκελο Decrypt. Τα εξαγόμενα μηνύματα αποθηκεύονται αυτόματα ως ξεχωριστά αρχεία .txt και το script μπορεί προαιρετικά να καθαρίζει τις ήδη επεξεργασμένες εικόνες από τον φάκελο αποκωδικοποίησης μετά το scan.
Τοποθεσία Αποθήκευσης
Κύριος φάκελος: /storage/emulated/0/Download/Steganography/ | Carrier/output εικόνες: /Encrypt | Εικόνες για έλεγχο κρυμμένων μηνυμάτων: /Decrypt | Εξαγόμενα αρχεία κειμένου: /Decrypted Texts.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Main folder: /storage/emulated/0/Download/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Ubuntu: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Kali Linux: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
Linux Mint: Main folder: ~/Downloads/Steganography/ | Carrier/output images: /Encrypt | Images to scan for hidden messages: /Decrypt | Extracted text files: /Decrypted Texts.
AR Terror.py
Τι Βοηθά Να Λύσεις
Πειραματισμός με local browser-based AR effects, camera interaction, recording και immersive storytelling από Termux.
Τοπική browser-based AR horror εμπειρία για Termux που λειτουργεί χωρίς root. Εκκινεί μια full-screen camera-driven ιστοσελίδα όπου εξερευνάς το περιβάλλον, συλλέγεις κρυμμένα logs μέσα σε archive/inventory σύστημα, χρησιμοποιείς ατμοσφαιρικά visual και audio effects, αλλάζεις ανάμεσα σε μπροστινή και πίσω κάμερα και γράφεις evidence σε WEBM όσο τρέχει η εμπειρία. Μπορεί επίσης να παρέχει τόσο local network link όσο και προαιρετικό δημόσιο Cloudflare link.
Τοποθεσία Αποθήκευσης
Στο Termux, το καταγεγραμμένο υλικό αποθηκεύεται στο ~/storage/downloads/AR Terror/. Αν ο χώρος αποθήκευσης του Termux δεν είναι διαθέσιμος, χρησιμοποιείται εναλλακτικά το ~/AR Terror/. Σε συστήματα εκτός Termux χρησιμοποιείται το ~/Downloads/AR Terror/, με εναλλακτική διαδρομή το ~/AR Terror/. Τα εσωτερικά web αρχεία, τα πιστοποιητικά και τα βοηθητικά binaries αποθηκεύονται στο ~/.ar_terror_studio/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: On Termux, recorded evidence is saved in: ~/storage/downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Ubuntu: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Kali Linux: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Linux Mint: On Termux, recorded evidence is saved in: ~/Downloads/AR Terror/. If Termux storage is unavailable, it falls back to ~/AR Terror/. On non-Termux systems it uses ~/Downloads/AR Terror/, with fallback to ~/AR Terror/. Internal web files, certificates, and helper binaries are stored in ~/.ar_terror_studio/.
Login Stealer.py
Τι Βοηθά Να Λύσεις
Επίδειξη του κινδύνου credential capture σε ελεγχόμενο, ρητά εξουσιοδοτημένο awareness lab ώστε οι χρήστες να αναγνωρίζουν παραπλανητικά login flows.
Το Login Stealer.py είναι ένα fully working controlled login-security simulation tool για Termux που δείχνει πώς ψεύτικες login σελίδες, αντιγραμμένες authentication οθόνες, redirects, session behavior και verification-style παγίδες μπορούν να κάνουν έναν χρήστη να εμπιστευτεί λάθος σελίδα. Είναι φτιαγμένο για awareness training, lab demonstrations, screenshots και dummy-account testing ώστε οι αρχάριοι να καταλαβαίνουν πώς φαίνονται τα phishing-style login tricks πριν πέσουν σε κάτι πραγματικό. Πρέπει να χρησιμοποιείται μόνο με dummy δεδομένα, test accounts ή ξεκάθαρες permission-based παρουσιάσεις και δεν παρουσιάζεται ως εργαλείο για κλοπή πραγματικών λογαριασμών, private credentials, cookies, κάρτες, wallets ή προσωπικές πληροφορίες.
Τοποθεσία Αποθήκευσης
Κύριος φάκελος: /storage/emulated/0/Download/Login Stealer/ | Χρήση μόνο με dummy δεδομένα, test accounts ή permission-based lab demonstrations.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Main folder: /storage/emulated/0/Download/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Ubuntu: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Kali Linux: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
Linux Mint: Main folder: ~/Downloads/Login Stealer/ | Use only dummy data, test accounts, or permission-based lab demonstrations.
$9 Pro Supporter — Επιπλέον Scripts
Το $9 Pro Supporter tier περιλαμβάνει κάθε $3 script και επιπλέον τα παρακάτω τρία Pro scripts.
Widget Maker.py
Τι Βοηθά Να Λύσεις
Δημιουργία επαναχρησιμοποιήσιμων phone/Termux widgets ώστε συνηθισμένες εντολές ή actions να ξεκινούν ευκολότερα.
Το DedSec Widget Maker είναι no-root εργαλείο για Termux που δημιουργεί συντομεύσεις εκκίνησης στην αρχική οθόνη Android για scripts του DedSec Project μέσω Termux:Widget. Σαρώνει αναδρομικά το Termux home, τον κοινόχρηστο χώρο αποθήκευσης και συνηθισμένους φακέλους του κινητού για DedSec, sponsor, exclusive και σχετικά Python scripts, μαζί με scripts σε κάθε προσβάσιμο φάκελο και υποφάκελο. Έπειτα δημιουργεί διαχειριζόμενες συντομεύσεις στο ~/.shortcuts. Κάθε widget ανοίγει μικρό μενού με Run, Show Script Path και Exit, ελέγχει το Python αρχείο πριν το εκτελέσει, διατηρεί manifest στο ~/.dedsec_widget_maker/ και μπορεί να ενημερώσει ή να διαγράψει όλα τα διαχειριζόμενα widgets όταν αλλάζει η συλλογή των scripts σου.
Τοποθεσία Αποθήκευσης
Οι διαχειριζόμενες συντομεύσεις widget δημιουργούνται στο ~/.shortcuts/ | Η κατάσταση και το manifest αποθηκεύονται στο ~/.dedsec_widget_maker/manifest.json. Τα αρχικά scripts δεν μετακινούνται· κάθε widget παραπέμπει στο αρχείο προέλευσης που εντοπίστηκε.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Ubuntu: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Kali Linux: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Linux Mint: Managed widget launchers are created in: ~/.shortcuts/ | State and manifest are stored in: ~/.dedsec_widget_maker/manifest.json. The original scripts are not moved; each widget points back to the detected source file.
Kraken Trader.py
Τι Βοηθά Να Λύσεις
Έρευνα αγορών, paper-testing στρατηγικών, καταγραφή trades και οργάνωση risk calculations πριν εξεταστεί οποιαδήποτε live ενέργεια.
Το Kraken Trader.py είναι βοηθός έρευνας συναλλαγών και διαχείρισης χαρτοφυλακίου για Termux που χρησιμοποιεί το Kraken API. Ξεκινά σε paper mode από προεπιλογή, εμφανίζει προειδοποίηση κινδύνου με αντίστροφη μέτρηση 10 δευτερολέπτων, αποθηκεύει τα πάντα στο ~/Kraken Trader/ και χρησιμοποιεί αριθμημένα μενού για ανάλυση ζευγών, σάρωση αγοράς, dashboards, Sage-style strategy labs, προηγμένα εργαλεία, οδηγούς για αρχάριους, risk/reward calculators, backtests, DCA και grid tools, paper wallet trading, paper bot loops, Kraken account tools, live order menus, order management, watchlists, παρακολούθηση crypto και stock/ETF, αναφορές, journals, logs, mode switching, diagnostics και settings. Είναι φτιαγμένο για εκπαίδευση, οργάνωση και ασφαλέστερες δοκιμές σε paper mode· δεν αποτελεί οικονομική συμβουλή και δεν εγγυάται κέρδος.
Τοποθεσία Αποθήκευσης
Κύριος φάκελος: ~/Kraken Trader/ | Στο εσωτερικό του αποθηκεύονται οι ρυθμίσεις, το δοκιμαστικό πορτοφόλι, οι λίστες παρακολούθησης, οι προεπιλογές, οι ειδοποιήσεις, τα καλάθια, τα εργαλεία DCA και grid, τα αρχεία καταγραφής webhook, οι δοκιμές προώθησης, οι αναφορές, η προσωρινή μνήμη, τα ημερολόγια συναλλαγών και τα αρχεία σφαλμάτων. Προαιρετικά, αντίγραφα των αναφορών μπορούν να αποθηκεύονται και στις Λήψεις.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Ubuntu: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Kali Linux: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Linux Mint: Main folder: ~/Kraken Trader/ | Config, paper wallet, watchlists, presets, alerts, baskets, DCA/grid assists, webhook logs, forward tests, reports, cache, journals, trade logs, and error logs are stored inside it. Optional report copies can be saved to Downloads if enabled.
Noob Hacker.py
Τι Βοηθά Να Λύσεις
Εκμάθηση εννοιών κυβερνοασφάλειας μέσα από πιο game-like progression με lessons, examples και practice.
Το Noob Hacker.py είναι ασφαλές offline terminal learning game για Termux που μαθαίνει σε απόλυτους αρχάριους προγραμματισμό, βασικά Python, συνήθειες Termux/Bash, debugging, local-only cybersecurity thinking, defender workflows, report writing, projects, quizzes και playable practice games. Είναι φτιαγμένο ως ένα μόνο Python script, λειτουργεί χωρίς root, κρατά την εξάσκηση σε φανταστικά/local labs, περιλαμβάνει English και Greek εκδόσεις, υποστηρίζει self-tests, save migration, progress tracking και πολλά beginner-friendly μαθήματα που οδηγούν κάποιον από μηδενική γνώση σε πρακτικές ασφαλείς δεξιότητες. Δεν επιτίθεται σε πραγματικούς στόχους, δεν σαρώνει το internet, δεν κλέβει λογαριασμούς και δεν μαθαίνει malware.
Τοποθεσία Αποθήκευσης
Κύριος φάκελος: ~/Noob Hacker/ | Αρχείο αποθήκευσης: ~/Noob Hacker/save.json | Αρχείο αποστολών: ~/Noob Hacker/mission_log.txt | Εργαστήρια CTF: ~/Noob Hacker/CTF_Labs/ | Εξαγωγές: ~/Noob Hacker/Exports/.
Υποστήριξη Πλατφόρμας & Paths Αποθήκευσης
Υποστήριξη πλατφόρμας: τεκμηριωμένη για Termux, Ubuntu, Kali Linux και Linux Mint. Χρησιμοποίησε το path που αντιστοιχεί στο σύστημά σου.
Termux: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Ubuntu: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Kali Linux: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
Linux Mint: Main folder: ~/Noob Hacker/ | Save file: ~/Noob Hacker/save.json | Mission log: ~/Noob Hacker/mission_log.txt | CTF labs: ~/Noob Hacker/CTF_Labs/ | Exports: ~/Noob Hacker/Exports/.
$25 ULTIMATE SUPPORTER
$25 Ultimate Supporter — Βιβλιοθήκη Ebooks
Το $25 Ultimate Supporter tier περιλαμβάνει όλα όσα έχει το $9 Pro Supporter tier και επιπλέον ολόκληρη την τρέχουσα βιβλιοθήκη ebooks του DedSec Project: και τα πέντε ebooks σε Αγγλικά και Ελληνικά.
$25 / ΜΗΝΑ
$25 Ultimate Supporter
Όλα όσα περιλαμβάνει το $9 Pro Supporter tier.
Όλα τα τρέχοντα ebooks σε Αγγλικά και Ελληνικά.
Άνοιξε το GitHub Sponsors
Τα πέντε ebooks παρακάτω είναι δομημένα βιβλία αναφοράς και δεν αντικαθιστούν τη δωρεάν Assistance guides. Οι περιγραφές τους βασίζονται στα ίδια τα ανεβασμένα βιβλία.
Ebook του tier
Data Analytics in Practice
Μετατρέπει τη μαθηματική σκέψη σε πρακτικές δεξιότητες data analytics. Καλύπτει SQL, Python, pandas, στατιστική, experiments, dashboards, automation, APIs, pipelines, testing και Git, με reproducible παραδοτέα, ρεαλιστικά business case studies, portfolio projects και οργανωμένη πορεία προς την πρώτη θέση analyst.
SQL · Python · Στατιστική · Dashboards · Portfolio
Ebook του tier
Faith in the Digital Age
Βιβλίο αναφοράς με ορθόδοξο προσανατολισμό για τον Χριστιανισμό και τη σύγχρονη τεχνολογία: AI, μέσα κοινωνικής δικτύωσης, συνθετικά μέσα, επιτήρηση, ψηφιακή ταυτότητα, βιοτεχνολογία, κυβερνοασφάλεια και προγραμματιζόμενα οικονομικά συστήματα. Ξεχωρίζει το δόγμα, την Αγία Γραφή, την πατερική μαρτυρία, την ιστορία, τα σημερινά τεχνικά δεδομένα, την ερμηνεία και την εικασία, ενώ εξετάζει την προφητεία, τον Αντίχριστο, το Χάραγμα και το 666 χωρίς να παρουσιάζει απλές ομοιότητες ως απόδειξη.
Ορθοδοξία · AI · Τεχνολογία · Προφητεία · Διάκριση
Ebook του tier
The Complete Termux Troubleshooting Handbook
Ένα diagnosis-first σύστημα για προβλήματα Android και Termux. Σε βοηθά να εντοπίζεις ποιο layer απέτυχε, να διατηρείς τα στοιχεία, να μειώνεις το πρόβλημα σε minimal tests και να αντιμετωπίζεις θέματα package manager, storage, paths, Python, Node.js, Git, DNS/TLS, local servers, proot-distro, Termux:API, backups, SSH και reproducible recovery.
Termux · Android · Διαγνωστικοί έλεγχοι · Ανάκαμψη · Git/Python/Node
Ebook του tier
Build and Publish a Website with AI from Your Phone
Phone-first workflow από άδειο folder μέχρι ένα δημοσιευμένο και συντηρήσιμο website με AI assistant, Termux, Git και GitHub Pages. Καλύπτει semantic HTML, responsive CSS, progressive JavaScript, bilingual structure, accessibility, privacy, security, SEO, performance, deployment, debugging paths και rollback/recovery.
Mobile web development · AI · Termux · Git · GitHub Pages
Ebook του tier
AI Website Prompt Library and Release Workbook
Workbook με ελεγχόμενες prompt chains για αξιόπιστα AI-assisted web projects. Οργανώνει discovery, architecture, implementation, review, repair και release με context packets, decision gates, semantic HTML, responsive CSS, JavaScript behavior, bilingual parity, accessibility, SEO, security/privacy, debugging, regression control, migration/rollback και release-readiness checks.
Αλυσίδες οδηγιών · Στάδια ελέγχου · Αποσφαλμάτωση · Έλεγχος εκδόσεων
Το ButSystem.py είναι ένα αποκλειστικό local-first σύστημα επικοινωνίας και χώρου εργασίας που συνδυάζει προσωπικά και ομαδικά μηνύματα, κοινή χρήση αρχείων, προαιρετικές κλήσεις, stories, εργαλεία ζωντανής τοποθεσίας, προφίλ και ελέγχους διαχείρισης σε ένα οργανωμένο περιβάλλον.
Άνοιγμα Αποκλειστικού ButSystem.py
Χρησιμοποιείς Το DedSec Τακτικά;
Το δημόσιο toolkit παραμένει δωρεάν. Αν χρησιμοποιείς ήδη το DedSec και θέλεις να στηρίξεις μελλοντικές ενημερώσεις, το GitHub Sponsors προσφέρει προαιρετικά sponsor-only extras. Το $25 Ultimate Supporter tier περιλαμβάνει επίσης την τρέχουσα βιβλιοθήκη πέντε ebooks σε Αγγλικά και Ελληνικά.
Δες τα Sponsor Tiers
Υποστηρίξτε μας στο GitHub
Νομική Αποποίηση Ευθύνης: Όλα τα εργαλεία και οι πληροφορίες που παρουσιάζονται εδώ προορίζονται αποκλειστικά για εκπαιδευτικούς και ηθικούς ερευνητικούς σκοπούς. Οι χρήστες είναι υπεύθυνοι για τη διασφάλιση ότι διαθέτουν την κατάλληλη άδεια πριν χρησιμοποιήσουν αυτά τα εργαλεία σε οποιοδήποτε δίκτυο ή σύστημα που δεν τους ανήκει. Τα εργαλεία κοινωνικής μηχανικής πρέπει να χρησιμοποιούνται μόνο σε εξουσιοδοτημένα σενάρια δοκιμής διείσδυσης με ρητή γραπτή άδεια.
Χρειάζεσαι Βοήθεια Αφού Διαβάσεις Αυτή Τη Σελίδα;
Άνοιξε το Βοήθεια για στοχευμένες λύσεις Termux, προβλήματα εγκατάστασης DedSec, Python module errors, pip issues, GitHub clone help, οδηγούς unzip και βήματα repair για χαλασμένη εγκατάσταση.
Άνοιγμα Βοήθειας
### Πολιτική Απορρήτου [el]
Source-URL: https://ded-sec.space/el/Pages/privacy-policy.html
Πολιτική Απορρήτου
Μάθετε για τις πρακτικές απορρήτου μας και πώς προστατεύουμε τα δεδομένα σας.
Αυτή η Πολιτική Απορρήτου εξηγεί, σε υψηλό επίπεδο, πώς το DedSec Project («εμείς», «μας» ή «το έργο μας») χειρίζεται δεδομένα σε σχέση με την ιστοσελίδα και τις σχετικές υπηρεσίες. Πρέπει να διαβάζεται μαζί με την ενημερωμένη Νομική Δήλωση & Αποποίηση Ευθυνών που υπάρχει στην ίδια σελίδα.
1. Προσέγγιση Απορρήτου
Το DedSec Project στοχεύει στη συλλογή του ελάχιστου δυνατού όγκου προσωπικών δεδομένων που είναι εύλογα αναγκαίος για τη λειτουργία της ιστοσελίδας, τη διατήρηση της ασφάλειας και την ανταπόκριση σε νόμιμα αιτήματα ή επικοινωνίες χρηστών.
2. Δεδομένα Που Ενδέχεται Να Επεξεργαζόμαστε
Κατά τη συνήθη λειτουργία της ιστοσελίδας, ενδέχεται να γίνεται επεξεργασία περιορισμένων τεχνικών και λειτουργικών δεδομένων, όπως διεύθυνση IP, στοιχεία συσκευής/φυλλομετρητή, αρχεία καταγραφής ασφαλείας και παρόμοια αρχεία καταγραφής που παράγονται μέσω υπηρεσιών φιλοξενίας, παροχής περιεχομένου ή συστημάτων αποτροπής κατάχρησης.
Αν επικοινωνήσετε μαζί μας οικειοθελώς μέσω καναλιών τρίτων που αναφέρονται στην ιστοσελίδα (για παράδειγμα κοινωνικά δίκτυα, εφαρμογές μηνυμάτων, παρόχους πληρωμών ή πλατφόρμες κοινότητας), οι πληροφορίες που μοιράζεστε διέπονται από τις πολιτικές και ρυθμίσεις αυτών των τρίτων, επιπλέον της εσωτερικής διαχείρισης που απαιτείται για να απαντήσουμε.
3. Πώς Μπορεί Να Χρησιμοποιηθούν Τα Δεδομένα
για λειτουργία, ασφάλεια και συντήρηση της ιστοσελίδας και των σχετικών υπηρεσιών,.
για ανίχνευση, πρόληψη ή διερεύνηση κατάχρησης, απάτης, κακής χρήσης ή τεχνικών ζητημάτων,.
για απάντηση σε μηνύματα, αιτήματα υποστήριξης, νομικά/απορρήτου ζητήματα ή αιτήματα αφαίρεσης περιεχομένου,.
για συμμόρφωση με εφαρμοστέες νομικές υποχρεώσεις και επιβολή των όρων του έργου, και.
για κατανόηση της αξιοπιστίας της υπηρεσίας και βελτίωση της λειτουργικής σταθερότητας.
4. Νομικές Βάσεις Και Εφαρμοστέα Πλαίσια
Όπου εφαρμόζεται, η επεξεργασία διέπεται από τον GDPR (Κανονισμός (ΕΕ) 2016/679), τους κανόνες ePrivacy, την ελληνική νομοθεσία προστασίας δεδομένων συμπεριλαμβανομένου του Ν. 4624/2019, καθώς και από σχετικά πλαίσια προστασίας καταναλωτή/ιδιωτικότητας στις Ηνωμένες Πολιτείες όπου αυτά εφαρμόζονται.
5. Υπηρεσίες Τρίτων Και Σύνδεσμοι
Η ιστοσελίδα μπορεί να περιέχει συνδέσμους ή ενσωματώσεις που αφορούν τρίτους όπως GitHub, κοινωνικά δίκτυα, συνδέσμους παραπομπής ή συνεργατών και άλλες εξωτερικές υπηρεσίες. Οι τρίτοι αυτοί έχουν δικούς τους όρους και πολιτικές απορρήτου και το DedSec Project δεν ευθύνεται για τις ανεξάρτητες πρακτικές τους.
6. Συγκατάθεση, cookies και τοπικές προτιμήσεις
Η ιστοσελίδα αποθηκεύει το επιλεγμένο θέμα, τη γλώσσα και τη ρητή επιλογή Αποδοχής/Απόρριψης στον browser μέσω dedsec:theme, dedsec:language και dedsec:cookie-choice. Πρόκειται για τιμές localStorage, όχι HTTP cookies. Παραμένουν μέχρι να τις αλλάξεις ή να καθαρίσεις τα δεδομένα του browser.
Δεν διατηρούνται Αγαπημένα Μαθήματα, σελιδοδείκτες ή ιστορικό ανάγνωσης· τα παλιά δεδομένα bookmark του Test διαγράφονται. Οι αριθμοί GitHub Stars/Forks στην Αρχική εμφανίζουν πάντοτε ένα τοπικά αποθηκευμένο στιγμιότυπο από 16 Οκτωβρίου 2026. Με Αποδοχή μπορεί να γίνει αίτημα στο https://api.github.com/repos/dedsec1121fk/DedSec για ενημέρωση των δύο αριθμών. Με Απόρριψη δεν γίνεται αυτό το προαιρετικό αίτημα και εμφανίζεται το στιγμιότυπο. Για τα στοιχεία αιτημάτων ισχύει η πολιτική απορρήτου του GitHub. Ανάγνωση και αναζήτηση λειτουργούν και χωρίς Αποδοχή.
Το εικονογραφημένο πλακίδιο Ρυθμίσεις cookies στην Αρχική επιτρέπει νέα επιλογή. Το παράθυρο εμφανίζεται μόνο στην Αρχική, μετά τη φόρτωση, και ποτέ δεύτερη φορά στον Λογαριασμό, σε ενσωματωμένα παράθυρα ή υποσελίδες. Διαθέτει ξεχωριστά κουμπιά Αποδοχής/Απόρριψης με εικονίδια. Η φιλοξενία και οι εξωτερικοί σύνδεσμοι μπορεί να πραγματοποιούν ανεξάρτητα τεχνικά αιτήματα. Ο κοινός μηχανισμός συγκατάθεσης δεν ενεργοποιεί Google Analytics ή Google Tag Manager.
7. Διατήρηση Δεδομένων
Τα τεχνικά αρχεία και οι επικοινωνίες διατηρούνται μόνο για όσο χρονικό διάστημα είναι εύλογα αναγκαίο για λόγους ασφάλειας, λειτουργίας, νομικής συμμόρφωσης, εποπτείας περιεχομένου ή τήρησης αρχείων και στη συνέχεια μπορεί να διαγράφονται, να ανωνυμοποιούνται ή να περιορίζονται όπου είναι κατάλληλο.
8. Ασφάλεια
Μπορεί να λαμβάνονται εύλογα μέτρα για την προστασία τεχνικών δεδομένων και επικοινωνιών, όμως καμία ιστοσελίδα, μέθοδος μετάδοσης ή περιβάλλον αποθήκευσης δεν μπορεί να θεωρηθεί πλήρως ασφαλές ή αδιάλειπτο.
9. Τα Δικαιώματά Σας
Ανάλογα με τη δικαιοδοσία σας, ενδέχεται να έχετε δικαιώματα πρόσβασης, διόρθωσης, διαγραφής, περιορισμού, εναντίωσης, φορητότητας ή ανάκλησης συγκατάθεσης όπου η συγκατάθεση εφαρμόζεται. Για αιτήματα σχετικά με το απόρρητο, χρησιμοποιήστε τα στοιχεία επικοινωνίας της σελίδας «Επικοινωνία & Συντελεστές».
10. Διεθνείς Μεταφορές
Επειδή πλατφόρμες τρίτων, πάροχοι φιλοξενίας και υποδομές μπορεί να λειτουργούν διεθνώς, περιορισμένα τεχνικά δεδομένα ενδέχεται να υποβάλλονται σε επεξεργασία εκτός της χώρας κατοικίας σας, με τις διασφαλίσεις ή τους νομικούς μηχανισμούς που απαιτεί η εφαρμοστέα νομοθεσία.
11. Απόρρητο Ανηλίκων
Η ιστοσελίδα και τα εργαλεία δεν απευθύνονται σε παιδιά κάτω των 13 ετών. Αν αντιληφθούμε ότι συλλέχθηκαν προσωπικά δεδομένα παιδιού κάτω των 13 με τρόπο που εμπίπτει στο COPPA ή σε άλλη εφαρμοστέα νομοθεσία, θα ληφθούν εύλογα μέτρα διαγραφής.
12. Αλλαγές Σε Αυτή Την Πολιτική
Η παρούσα Πολιτική Απορρήτου μπορεί να ενημερώνεται κατά καιρούς. Οι αλλαγές ισχύουν όταν αναρτάται η αναθεωρημένη έκδοση σε αυτή τη σελίδα με ενημερωμένη ημερομηνία «Τελευταία Ενημέρωση».
13. Επικοινωνία
Για ερωτήσεις απορρήτου, νομικά/απορρήτου ζητήματα ή αιτήματα αφαίρεσης περιεχομένου, χρησιμοποιήστε τα στοιχεία επικοινωνίας που αναφέρονται στη σελίδα «Επικοινωνία & Συντελεστές».
Νομική Δήλωση & Αποποίηση Ευθυνών
Τελευταία Ενημέρωση: 21 Οκτωβρίου 2026
Με την πρόσβαση, λήψη, χρήση του ιστότοπου DedSec Project, του αποθετηρίου GitHub, των scripts, εργαλείων ή οποιουδήποτε σχετικού περιεχομένου, ρητά αναγνωρίζετε ότι έχετε διαβάσει, κατανοήσει και συμφωνείτε να δεσμευτείτε πλήρως από την παρούσα Νομική Δήλωση & Αποποίηση Ευθυνών. Εάν δεν συμφωνείτε, πρέπει να σταματήσετε αμέσως κάθε χρήση και να διαγράψετε οποιοδήποτε υλικό έχετε κατεβάσει.
1. Σκοπός / Εκπαιδευτική Χρήση
Το DedSec Project είναι ένα δωρεάν, κοινοτικό εργαλειοθήκη κυβερνοασφάλειας για το Termux που παρέχει scripts, βοηθήματα, πόρους εκμάθησης και σχετικό περιεχόμενο. Οποιαδήποτε λειτουργία σχετική με κυβερνοασφάλεια, OSINT, δοκιμές δικτύων, scraping ή παρεμφερή εργαλεία παρέχεται αυστηρά για:
εκπαίδευση,.
νόμιμη έρευνα ασφάλειας,.
αμυντικές δοκιμές, και.
χρήση μόνο σε συστήματα/λογαριασμούς που σας ανήκουν ή όπου έχετε ρητή, προηγούμενη, έγγραφη άδεια.
Τα προαιρετικά modules προσομοίωσης phishing και social-engineering περιλαμβάνονται αποκλειστικά για εκπαιδευτική ευαισθητοποίηση σε πλήρως ελεγχόμενα περιβάλλοντα με ρητή, ενημερωμένη συγκατάθεση όλων των εμπλεκομένων. Κάθε άλλη χρήση απαγορεύεται αυστηρά.
2. Απαγόρευση Παράνομης Χρήσης / Απαιτείται Άδεια
ΑΠΑΓΟΡΕΥΕΤΑΙ αυστηρά η χρήση του DedSec Project για οποιονδήποτε παράνομο ή μη εξουσιοδοτημένο σκοπό. ΔΕΝ επιτρέπεται να χρησιμοποιείτε τα εργαλεία, τους οδηγούς ή το περιεχόμενο του DedSec Project για:
πρόσβαση, δοκιμή, διακοπή ή παρακολούθηση συστημάτων χωρίς άδεια,.
phishing ή συλλογή διαπιστευτηρίων σε πραγματικούς στόχους,.
μη εξουσιοδοτημένη σάρωση, εκμετάλλευση ευπαθειών, DDoS/DoS, επιθέσεις δοκιμής κωδικών, κακόβουλο λογισμικό ή οποιαδήποτε παράνομη ενέργεια.
Είστε αποκλειστικά υπεύθυνοι να διασφαλίσετε ότι η χρήση σας συμμορφώνεται με όλους τους ισχύοντες νόμους. Η κατάχρηση μπορεί να οδηγήσει σε σοβαρές αστικές και ποινικές κυρώσεις, συμπεριλαμβανομένης δίωξης σύμφωνα με τον CFAA, την ελληνική νομοθεσία για κυβερνοέγκλημα ή ισοδύναμους νόμους.
3. Καμία Επαγγελματική / Νομική Συμβουλή
Το περιεχόμενο παρέχεται αποκλειστικά για ενημερωτικούς σκοπούς και δεν αποτελεί νομική, οικονομική, ιατρική ή άλλη επαγγελματική συμβουλή. Δεν δημιουργείται σχέση δικηγόρου-εντολέα. Για νομικές συμβουλές απευθυνθείτε σε δικηγόρο.
4. Ευθύνη Χρήστη, Κίνδυνος Και Ασφάλεια
Λογισμικό και scripts μπορούν να προκαλέσουν απώλεια δεδομένων, διακοπή υπηρεσιών, περιορισμούς λογαριασμών ή άλλη ζημιά αν χρησιμοποιηθούν λανθασμένα ή κακόβουλα. Αναλαμβάνετε κάθε κίνδυνο που προκύπτει από τη χρήση:
της ιστοσελίδας,.
των scripts/εργαλείων που αναφέρονται ή διατίθενται,.
τρίτων υπηρεσιών, ιστοσελίδων ή APIs.
Δοκιμάζετε πάντα σε ελεγχόμενο και απολύτως εξουσιοδοτημένο περιβάλλον.
Αναγνωρίζετε επιπλέον ότι ορισμένα εργαλεία μπορεί να ανιχνευθούν από λογισμικό antivirus, συστήματα ασφαλείας ή παρόχους υπηρεσιών, ενδεχομένως οδηγώντας σε περιορισμούς λογαριασμών ή νομικό έλεγχο.
5. Περιορισμός Ευθύνης (Στο Μέγιστο Που Επιτρέπεται Από Τον Νόμο)
Στο μέγιστο βαθμό που επιτρέπεται από την εφαρμοστέα νομοθεσία (συμπεριλαμβανομένων των νόμων της Ελλάδας, της Ευρωπαϊκής Ένωσης και των Ηνωμένων Πολιτειών), το DedSec Project, ο ιδιοκτήτης του, οι συνεισφέροντες και οι συνεργάτες δεν ευθύνονται για άμεσες ή έμμεσες, τυχαίες, επακόλουθες, ειδικές ή παραδειγματικές ζημίες, συμπεριλαμβανομένης απώλειας δεδομένων, κερδών, φήμης ή διακοπής εργασιών, που σχετίζονται με την πρόσβαση ή χρήση της ιστοσελίδας ή των εργαλείων.
Ορισμένες δικαιοδοσίες δεν επιτρέπουν ορισμένους περιορισμούς· όπου απαγορεύονται, δεν εφαρμόζονται.
6. Αποζημίωση / Αποκατάσταση Ζημίας (Indemnification)
Συμφωνείτε να αποζημιώσετε και να απαλλάξετε το DedSec Project, τον ιδιοκτήτη του, τους συνεισφέροντες και τους συνεργάτες από αξιώσεις, ζημίες, ευθύνες, απώλειες και έξοδα (συμπ. εύλογων αμοιβών δικηγόρων) που προκύπτουν από:
χρήση ή κατάχρηση της ιστοσελίδας/εργαλείων,.
παραβίαση νόμου/κανονισμού ή δικαιωμάτων τρίτων,.
παραβίαση της παρούσας δήλωσης.
7. Πνευματική Ιδιοκτησία / Ανοικτός Κώδικας
Εκτός αν αναφέρεται διαφορετικά, το κείμενο, τα γραφικά και το branding προστατεύονται από την ισχύουσα νομοθεσία πνευματικής ιδιοκτησίας. Ο κώδικας και τα scripts διέπονται από την ιδιόκτητη άδεια που περιλαμβάνεται στο αποθετήριο GitHub (LICENSE.txt), η οποία χορηγεί μόνο περιορισμένα δικαιώματα προσωπικής, μη εμπορικής χρήσης. Η τροποποίηση, αναδιανομή, αντίστροφη μηχανική ή εμπορική χρήση χωρίς ρητή έγγραφη άδεια του ιδιοκτήτη απαγορεύεται αυστηρά. Τα σήματα τρίτων ανήκουν στους αντίστοιχους δικαιούχους και χρησιμοποιούνται μόνο για σκοπούς αναγνώρισης.
8. Σύνδεσμοι / Υπηρεσίες Τρίτων Και Affiliate Links
Η ιστοσελίδα μπορεί να περιέχει συνδέσμους προς τρίτους (π.χ. GitHub, κοινωνικά δίκτυα, affiliate/referral links). Οι τρίτοι έχουν δικούς τους όρους και πολιτικές και το DedSec Project δεν ευθύνεται για το περιεχόμενό τους ή τις πρακτικές τους. Αν υπάρχει affiliate/referral σχέση, ενδέχεται να προκύπτει προμήθεια χωρίς πρόσθετο κόστος για εσάς.
9. Απόρρητο Και Προστασία Δεδομένων (Υψηλού Επιπέδου)
Το DedSec Project στοχεύει στη συλλογή ελάχιστων προσωπικών δεδομένων. Ωστόσο, τυπικές λειτουργίες φιλοξενίας/ασφάλειας ενδέχεται να επεξεργάζονται περιορισμένα τεχνικά δεδομένα (π.χ. διεύθυνση IP, στοιχεία συσκευής/φυλλομετρητή, αρχεία καταγραφής) για λόγους ασφάλειας και λειτουργίας.
Όπου εφαρμόζεται, η επεξεργασία διέπεται από:
GDPR (Κανονισμός (ΕΕ) 2016/679) και συναφείς κανόνες,.
κανόνες ePrivacy (Οδηγία 2002/58/ΕΚ όπως ενσωματώνεται),.
ελληνική νομοθεσία προστασίας δεδομένων (ιδίως Ν. 4624/2019 και σχετικοί κανόνες),.
και τα εφαρμοστέα πλαίσια προστασίας καταναλωτή/ιδιωτικότητας στις ΗΠΑ (όπου σχετίζεται).
Για λεπτομέρειες δείτε την Πολιτική Απορρήτου της ιστοσελίδας.
10. Συμμόρφωση Με Νόμους - Εφαρμοστέα Νομοθεσία
Πρέπει να διασφαλίζετε ότι οι ενέργειές σας παραμένουν εντός των ορίων όλων των ισχυόντων νόμων, συμπεριλαμβανομένων (ενδεικτικά):
Ευρωπαϊκή Ένωση / Ευρώπη: Κανονισμός (ΕΕ) 2016/679 (GDPR), Οδηγία ePrivacy 2002/58/ΕΚ, Οδηγία NIS2, Cyber Resilience Act και εθνικοί νόμοι εφαρμογής;
Ηνωμένες Πολιτείες Αμερικής: Computer Fraud and Abuse Act (CFAA), Digital Millennium Copyright Act (DMCA) και ισχύοντες ομοσπονδιακοί και πολιτειακοί νόμοι;
Ελλάδα: Ν. 4624/2019 για την προστασία δεδομένων προσωπικού χαρακτήρα, διατάξεις του Ποινικού Κώδικα για κυβερνοέγκλημα, Ν. 2225/1994 (όπως τροποποιήθηκε) και κάθε άλλη σχετική ελληνική νομοθεσία για κυβερνοασφάλεια και προστασία δεδομένων.
11. Cookies
Εάν χρησιμοποιούνται cookies ή παρόμοιες τεχνολογίες (συμπ. μέσω embeds τρίτων), η ενημέρωση και συγκατάθεση παρέχονται όπως απαιτείται από GDPR/ePrivacy και την ελληνική νομοθεσία. Δείτε την Πολιτική Απορρήτου / cookie notice (εάν εμφανίζεται).
12. Απόρρητο Ανηλίκων
Η ιστοσελίδα και τα εργαλεία δεν απευθύνονται σε παιδιά κάτω των 13. Εάν ο διαχειριστής αντιληφθεί ότι συλλέχθηκαν προσωπικά δεδομένα παιδιού κάτω των 13 με τρόπο που εμπίπτει στο COPPA (ΗΠΑ) ή άλλο εφαρμοστέο δίκαιο, θα ληφθούν εύλογα μέτρα διαγραφής.
13. Όρια Έρευνας Ασφάλειας (ΗΠΑ, ΕΕ, Ελλάδα - Όπου Εφαρμόζεται)
Οφείλετε να διασφαλίζετε ότι οι ενέργειές σας παραμένουν εντός νόμιμων ορίων, συμπεριλαμβανομένων (ενδεικτικά και όπου εφαρμόζεται):
ΗΠΑ: CFAA, DMCA, FTC Act και πολιτειακή νομοθεσία,.
ΕΕ: εθνική ποινική νομοθεσία και κανόνες κυβερνοασφάλειας/προστασίας δεδομένων,.
Ελλάδα: σχετικές διατάξεις ποινικού δικαίου και εφαρμοστέα νομοθεσία για κυβερνοέγκλημα και δεδομένα.
Το παρόν δεν απαριθμεί όλους τους νόμους. Πρέπει να συμμορφώνεστε με όλους τους νόμους που ισχύουν για εσάς και για τους στόχους/συστήματα που δοκιμάζετε.
14. Αποποίηση Εγγυήσεων
Ο ιστότοπος, τα εργαλεία, τα scripts και όλο το περιεχόμενο παρέχονται "ΩΣ ΕΧΕΙ" και "ΩΣ ΔΙΑΘΕΣΙΜΟ" χωρίς καμία εγγύηση οποιουδήποτε είδους, ρητή, σιωπηρή, νομική ή άλλη, συμπεριλαμβανομένων (ενδεικτικά) εγγυήσεων εμπορευσιμότητας, καταλληλότητας για συγκεκριμένο σκοπό, τίτλου ή μη παραβίασης. Δεν εγγυόμαστε ότι τα εργαλεία θα είναι απαλλαγμένα σφαλμάτων, ασφαλή, αδιάλειπτα ή κατάλληλα για οποιονδήποτε σκοπό.
15. Εφαρμοστέο Δίκαιο Και Δικαιοδοσία
Η παρούσα Νομική Δήλωση & Αποποίηση Ευθυνών διέπεται αποκλειστικά από το δίκαιο της Ελληνικής Δημοκρατίας, χωρίς να λαμβάνονται υπόψη οι αρχές σύγκρουσης νόμων. Οποιαδήποτε διαφορά που προκύπτει από την παρούσα δήλωση ή τη χρήση του Έργου θα επιλύεται αποκλειστικά στα αρμόδια δικαστήρια της Αθήνας, Αττικής. Συμφωνείτε να υποβάλετε αμετάκλητα στη δικαιοδοσία των εν λόγω δικαστηρίων.
16. Διαχωρισιμότητα
Εάν οποιαδήποτε διάταξη, ή μέρος διάταξης, της παρούσας Δήλωσης κριθεί από οποιοδήποτε δικαστήριο ή διοικητικό όργανο αρμόδιας δικαιοδοσίας ότι είναι παράνομη, άκυρη ή ανεφάρμοστη, η νομιμότητα, η εγκυρότητα ή η εκτελεστότητα του υπολοίπου της διάταξης ή της παραγράφου που περιλαμβάνει τη σχετική διάταξη δεν θα επηρεάζεται, εκτός εάν ορίζεται διαφορετικά από την εφαρμοστέα νομοθεσία. Εάν το υπόλοιπο της διάταξης δεν επηρεάζεται, τα μέρη θα καταβάλουν κάθε εύλογη προσπάθεια να συμφωνήσουν εντός ευλόγου χρονικού διαστήματος σε οποιεσδήποτε νόμιμες και εύλογες τροποποιήσεις της Δήλωσης που μπορεί να είναι απαραίτητες, ώστε να επιτευχθεί, στον μεγαλύτερο δυνατό βαθμό, το ίδιο αποτέλεσμα που θα επιτυγχανόταν από την εν λόγω διάταξη ή το μέρος της διάταξης.
17. Πλήρης Συμφωνία & Αλλαγές
Η παρούσα δήλωση αποτελεί την πλήρη συμφωνία μεταξύ σας και του DedSec Project σχετικά με το αντικείμενό της και υπερισχύει κάθε προηγούμενης κατανόησης. Μπορεί να τροποποιηθεί ανά πάσα στιγμή· η συνέχιση χρήσης μετά από αλλαγές σημαίνει αποδοχή της νέας έκδοσης.
18. Επικοινωνία
Για νομικά/απορρήτου ζητήματα ή αιτήματα αφαίρεσης περιεχομένου, χρησιμοποιήστε τα στοιχεία επικοινωνίας που αναφέρονται στη σελίδα Contact.
Αλλαγή email: Ο συνδεδεμένος χρήστης με ήδη επιβεβαιωμένο παλιό email μπορεί να ζητήσει αλλαγή αφού ξαναδώσει τον τρέχοντα κωδικό. Στέλνεται πρώτα σύνδεσμος έγκρισης στο παλιό email και μετά δεύτερος σύνδεσμος στο νέο. Η αλλαγή γίνεται μόνο όταν επιβεβαιωθούν ρητά και οι δύο σύνδεσμοι. Λήγουν σε μία ώρα, αποθηκεύονται μόνο τα hashes τους και οι συνεδρίες ακυρώνονται μετά την ολοκλήρωση. Παλιό και νέο email μεταβιβάζονται στον ρυθμισμένο πάροχο μόνο για τα αναγκαία μηνύματα ασφαλείας. Οι ιδιωτικές σημειώσεις παραμένουν στον ίδιο λογαριασμό· αντίγραφα στον browser και εξαγωγές αφαιρούνται χωριστά.
Όροι λογαριασμού, απόρρητο και αποθήκευση
Οι λογαριασμοί είναι προαιρετικοί και η εγγραφή διατίθεται σε ηλικίες από 18 έως και 130 ετών. Η γενική ιστοσελίδα παραμένει δημόσια. Ο λογαριασμός παρέχει ιδιωτικά TXT, φακέλους, καρφίτσες, εξαγωγή TXT/ZIP και ανταμοιβές έγκυρων referrals. Η ασφαλής υπηρεσία λειτουργεί στο Cloudflare και το παράθυρο συνδέεται στη διαφορετική διεύθυνσή της μόνο όταν ανοίξει. Η ελαχιστοποίηση κρατά το πρόχειρο στο ίδιο παράθυρο· το κλείσιμο του browser μπορεί να χάσει μη αποθηκευμένες αλλαγές.
Στο Cloudflare D1 αποθηκεύονται όνομα, επώνυμο, email, ημερομηνία γέννησης, ηλικία εγγραφής, προστατευμένο επαληθευτικό κωδικού, ονόματα φακέλων, σημειώσεις, καρφίτσες, συνεδρίες, αποδοχή όρων και referrals. Ο αρχικός κωδικός επεξεργάζεται στον browser και δεν αποθηκεύεται. Τα δεδομένα λογαριασμού αποκλείονται από δημόσιο GitHub, αναζήτηση, sitemap και LLM exports. Οι σημειώσεις D1 δεν έχουν διατερματική κρυπτογράφηση έναντι του διαχειριστή.
Απαραίτητα ασφαλή HttpOnly cookies υποστηρίζουν τη σύνδεση. Τα ενσωματωμένα παράθυρα χρησιμοποιούν ξεχωριστό partitioned cookie και οι κανονικές καρτέλες SameSite=Lax. Το Turnstile περιορίζει αυτοματοποιημένη κατάχρηση. Η εφαρμογή κρατά keyed hashes δικτύου αντί για πραγματικές IP και ομαδοποιεί IPv6 ανά /64. Στοιχεία σύνδεσης και δικτύου εγγραφής διατηρούνται κυλιόμενα για 30 ημέρες· εγγραφές περιορισμών και επιβεβαίωσης λήγουν συντομότερα όπου προβλέπεται. Το Cloudflare μπορεί να επεξεργάζεται χωριστά τεχνικά αρχεία ασφαλείας.
Προεπιλογή είναι το cloud. Μόνο η ρητή επιλογή αποθήκευσης στον browser διατηρεί TXT, διαδρομές, καρφίτσες και προτίμηση αποθήκευσης στο IndexedDB, με hash αδιαφανούς αναγνωριστικού λογαριασμού και προφίλ ιστοσελίδας. Το hash είναι αναγνωριστικό, όχι κρυπτογράφηση· οι τοπικές σημειώσεις δεν κρυπτογραφούνται χωριστά. Η αποσύνδεση κρύβει τον χώρο αλλά διατηρεί το αντίγραφο. Καθαρισμός cache/δεδομένων, αυτόματη εκκαθάριση, διαγραφή προφίλ ή ιδιωτική περιήγηση μπορεί να προκαλέσουν οριστική απώλεια. Η τοπική αποθήκευση δεν παρέχει σύνδεση χωρίς δίκτυο. Κράτα τακτικά backup TXT/ZIP.
Η τοπική λειτουργία σταματά τις αποστολές σημειώσεων και το προηγούμενο cloud αντίγραφο παραμένει στο D1. Η επιστροφή ελέγχει συνολικά όρια, ενώνει ίδια αρχεία, μετονομάζει διαφορετικά τοπικά αντίγραφα και αποθηκεύει πλήρη έκδοση στο cloud. Αποτυχία διατηρεί το τοπικό αντίγραφο. Αντίγραφο μπορεί να παραμένει μετά τη μεταφορά· καθάρισε δεδομένα ιστοσελίδας για αφαίρεση. Η διαγραφή λογαριασμού αφαιρεί τις εγγραφές D1 και επιχειρεί να αφαιρέσει τον τρέχοντα τοπικό χώρο. Αφαίρεσε χωριστά άλλα browser αντίγραφα και εξαγωγές· backup ανάκτησης παρόχου μπορεί να κρατούν διαγραμμένα δεδομένα προσωρινά.
Το Test επιτρέπει 300 λογαριασμούς και 444 μοναδικούς συνδεδεμένους χρήστες ανά ημέρα, με μηδενισμό τα μεσάνυχτα Europe/Athens. Κάθε χώρος επιτρέπει 900.000 bytes περιεχομένου UTF-8 TXT και ονομάτων, 200 αρχεία, 50 φακέλους και οκτώ επίπεδα· το συνολικό cloud όριο είναι 400.000.000 bytes. Τα ίδια προσωπικά όρια ισχύουν στον browser. Όρια δωρεάν παρόχων μπορεί να διακόπτουν προσωρινά την πρόσβαση· το Test δεν έχει εγγύηση διαθεσιμότητας.
Η επιβεβαίωση στέλνει το email σου στον ρυθμισμένο πάροχο μόνο όταν τη ζητήσεις. Ο προετοιμασμένος πάροχος είναι Brevo· παλιότερη εγκατάσταση μπορεί να χρησιμοποιεί Resend. Η επιβεβαίωση παραγωγής, οι αλλαγές email, οι κωδικοί ασφαλείας και οι ειδοποιήσεις διαγραφής χρησιμοποιούν τον ρυθμισμένο αποστολέα DedSec Project και απαιτούν έγκυρα διαπιστευτήρια παρόχου. Δεν αποστέλλεται newsletter. Η εφαρμογή περιορίζει την επιβεβαίωση σε 100 email ανά ημέρα UTC και 3.000 ανά ημερολογιακό μήνα. Οι ανταμοιβές απαιτούν δικό σου επαληθευμένο email και τρεις φίλους με διαφορετικές επαληθευμένες ταυτότητες email και δίκτυα. Κάθε φίλος περιμένει 24 ώρες και συνδέεται σε δύο διαφορετικές ημέρες. Εκκρεμή referrals λήγουν σε 30 ημέρες. Aliases και κοινά δίκτυα μπορεί να μην εγκρίνονται. Απαγορεύονται πλαστά referrals· μια IP δεν αποδεικνύει μοναδικό άνθρωπο.
Κράτα κωδικό και recovery code ιδιωτικά. Αποθήκευσε τον κωδικό ανάκτησης που εμφανίζεται μία φορά μετά την εγγραφή ή ανάκτηση. Ανάκτηση και αλλαγή κωδικού ακυρώνουν προηγούμενες συνεδρίες. Από το προφίλ εξάγεις σημειώσεις, αποσυνδέεσαι, αλλάζεις κωδικό ή διαγράφεις οριστικά τον λογαριασμό. Για πρόσβαση, διόρθωση ή αιτήματα απορρήτου επικοινώνησε μέσω Contact & Credits. Οι παρόντες όροι γίνονται αποδεκτοί μέσω του checkbox εγγραφής.
### Save DedSec Project. [el]
Source-URL: https://ded-sec.space/el/Pages/save-dedsec-project.html
Save DedSec Project.
Αντίγραφα διατήρησης των έργων και των ιστοσελίδων DedSec, με συνδέσμους προς τις υπηρεσίες αρχειοθέτησης.
Τα μόνιμα links οδηγούν στα ανανεούμενα αρχεία. Τα snapshots Software Heritage αντιστοιχούν σε συγκεκριμένη έκδοση.
Αποθηκευμένα links: 20 Οκτωβρίου 2026, 02:28 UTC.
Save DedSec Project — GitHub
Internet Archive
Κύριο DedSec
Εφεδρικό DedSec
Ιστοσελίδες
Εφεδρική ιστοσελίδα
Προφίλ GitHub
Corrupted Files
Pocket AI
Praying Project
Offline Survival
Hacking Guide Project
Language Project
Ghost Project
Save DedSec Project
Εξαρτήσεις APK
Software Heritage
Κύριο DedSec — Αρχείο Software Heritage
Κύριο DedSec — Τελευταίο στιγμιότυπο
Εφεδρικό DedSec — Αρχείο Software Heritage
Εφεδρικό DedSec — Τελευταίο στιγμιότυπο
Ιστοσελίδες — Αρχείο Software Heritage
Ιστοσελίδες — Τελευταίο στιγμιότυπο
Εφεδρική ιστοσελίδα — Αρχείο Software Heritage
Εφεδρική ιστοσελίδα — Τελευταίο στιγμιότυπο
Προφίλ GitHub — Αρχείο Software Heritage
Προφίλ GitHub — Τελευταίο στιγμιότυπο
Corrupted Files: — Αρχείο Software Heritage
Corrupted Files: — Τελευταίο στιγμιότυπο
Pocket AI: — Αρχείο Software Heritage
Pocket AI: — Τελευταίο στιγμιότυπο
Praying Project: — Αρχείο Software Heritage
Praying Project: — Τελευταίο στιγμιότυπο
Offline Survival: — Αρχείο Software Heritage
Offline Survival: — Τελευταίο στιγμιότυπο
Hacking Guide Project: — Αρχείο Software Heritage
Hacking Guide Project: — Τελευταίο στιγμιότυπο
Language Project: — Αρχείο Software Heritage
Language Project: — Τελευταίο στιγμιότυπο
Ghost Project: — Αρχείο Software Heritage
Ghost Project: — Τελευταίο στιγμιότυπο
Save DedSec Project: — Αρχείο Software Heritage
Save DedSec Project: — Τελευταίο στιγμιότυπο
Wayback Machine
ded-sec.space
ded-sec.online
### DedSec Project [en]
Source-URL: https://ded-sec.space/index.html#home
DedSec Project brings Android, Termux and Linux tools together with installation guides, assistance and a bilingual programming library. Open the desktop applications to browse tools, frequently asked questions, project history, contact details, sponsorship and privacy information. Learning categories include programming languages, algorithms, reverse engineering, defensive security and engineering practice. Search page contents and lessons locally, switch English or Greek and choose a dark or light galaxy theme. Code blocks provide Copy buttons; interior pages provide a Back control. The homepage displays the #1 In Google Results badge and GitHub stars and forks.
“ἔστι γὰρ φύσει δοῦλος ὁ δυνάμενος ἄλλου εἶναι” Aristotle, Politics I.5, 1254b20–23. Excerpt translated: “A slave by nature is someone capable of belonging to another.” A historical claim about slavery, rather than an endorsement or a quotation about willing submission. Greek source
### TikDev — discover GitHub projects [en]
Source-URL: https://ded-sec.space/TikDev.html
TikDev presents public GitHub repositories in a vertical discovery feed. Search GitHub directly, select interests, inspect repository descriptions, language, stars and forks, and read a project README without leaving the page. Save interesting projects locally and use the feed controls to move between results. The common navigation Search button opens the whole DedSec website search; the repository search inside TikDev queries GitHub. Repository availability and current statistics depend on the external GitHub service.
### DedSec Project — Αρχική [el]
Source-URL: https://ded-sec.space/index.html#home
Το DedSec Project συνδυάζει εργαλεία Android, Termux και Linux με οδηγούς εγκατάστασης, βοήθεια και δίγλωσση βιβλιοθήκη προγραμματισμού. Οι εφαρμογές της αρχικής σελίδας οδηγούν σε εργαλεία, συχνές ερωτήσεις, ιστορία του έργου, στοιχεία επικοινωνίας, χορηγίες και πληροφορίες απορρήτου. Οι κατηγορίες μάθησης περιλαμβάνουν γλώσσες προγραμματισμού, αλγορίθμους, αντίστροφη μηχανική, αμυντική ασφάλεια και πρακτική μηχανικής. Η αναζήτηση εξετάζει τοπικά σελίδες και μαθήματα, με επιλογή αγγλικών ή ελληνικών και σκοτεινού ή φωτεινού γαλαξιακού θέματος. Τα τμήματα κώδικα έχουν κουμπιά αντιγραφής και οι εσωτερικές σελίδες διαθέτουν επιστροφή. Η αρχική εμφανίζει την ένδειξη #1 στα αποτελέσματα Google και κάρτες αστεριών και forks GitHub.
«ἔστι γὰρ φύσει δοῦλος ὁ δυνάμενος ἄλλου εἶναι» Αριστοτέλης, Πολιτικά Α΄ 5, 1254b20–23. Απόδοση αποσπάσματος: «Δούλος από τη φύση είναι εκείνος που μπορεί να ανήκει σε άλλον». Ιστορική θέση του Αριστοτέλη για τη δουλεία, όχι επιδοκιμασία της ούτε ρήση για εκούσια υποταγή. Αρχαίο κείμενο
### TikDev — ανακάλυψε έργα GitHub [el]
Source-URL: https://ded-sec.space/TikDev.html
Το TikDev παρουσιάζει δημόσια αποθετήρια GitHub σε κατακόρυφη ροή ανακάλυψης. Αναζήτησε απευθείας στο GitHub, επίλεξε ενδιαφέροντα, εξέτασε περιγραφές, γλώσσα, αστέρια και forks και διάβασε το README ενός έργου χωρίς να φύγεις από τη σελίδα. Αποθήκευσε τοπικά ενδιαφέροντα έργα και χρησιμοποίησε τα χειριστήρια για μετακίνηση μεταξύ αποτελεσμάτων. Το κουμπί αναζήτησης της κοινής πλοήγησης ανοίγει την αναζήτηση ολόκληρης της ιστοσελίδας DedSec, ενώ η εσωτερική αναζήτηση αποθετηρίων του TikDev απευθύνεται στο GitHub. Η διαθεσιμότητα και τα τρέχοντα στατιστικά των αποθετηρίων εξαρτώνται από την εξωτερική υπηρεσία GitHub.
## English lessons
### Runtime lifetimes and data-structure selection
Source-URL: https://ded-sec.space/learn/en/en-1.html
# Runtime lifetimes and data-structure selection
## Advanced engineering laboratories
## Runtime, call stack, heap and lifetimes
A program is not only source text. After parsing and compilation/interpreting, execution requires memory, I/O, a scheduler and a runtime. A function call ordinarily creates a *stack frame* containing return information, arguments and local bindings. Dynamically allocated objects often live in a heap, managed by allocation/free, reference counting or garbage collection depending on the language and runtime.
### Worked example (Python)
```python
def factorial(n: int) -> int:
if n < 0: raise ValueError('n must be nonnegative')
result = 1
for value in range(2, n + 1):
result *= value
return result
assert factorial(5) == 120
```
This iterative solution uses O(1) auxiliary memory, whereas a recursive implementation would use O(n) call frames before tail-call optimization (which CPython does not provide as a general guarantee).
### Debugging and tradeoffs
A `MemoryError` can occur even without a recursion error. A stack overflow and heap exhaustion are different conditions. In C/C++, ownership and lifetime errors may create dangling pointers or double frees; in managed languages, holding references forever can leak *reachable* memory.
### Practice
1. Write recursive and iterative Fibonacci for n = 30; explain call-count difference.
2. Profile a growing list and identify when its lifetime ends.
3. Explain why returning a pointer to an automatic local variable is unsafe in C.
## Choosing data structures by operation costs
### Define the workload before choosing a type
For a queue with first-in-first-out behavior, a Python list can append efficiently but removing from index zero shifts the remaining elements. collections.deque supports efficient popleft, so choose it when repeatedly consuming from the front.
~~~python
from collections import deque
jobs = deque(["compile", "test"])
jobs.append("deploy")
assert [jobs.popleft(), jobs.popleft(), jobs.popleft()] == [
"compile", "test", "deploy"
]
~~~
A deque is not automatically the best choice for random indexed access: a list generally supports efficient O(1) indexing, while accessing interior deque elements can be O(n). State which operations dominate before optimizing.
### Membership checks and memory
If an application repeatedly asks whether 1 million IDs belong to a collection, consider a set. Python set membership is expected average O(1), versus linear list membership O(n). But sets have memory overhead, do not preserve duplicates, and are not an API for deterministic sorted output. If order matters, sort results when presenting them, or preserve a separate ordered structure. A dict maps keys to values and maintains insertion order in modern Python, but a dict is not a priority queue.
### When a heap wins
For a scheduler ordered by next deadline, use heapq and store pairs (deadline, tie_breaker, task). Including a monotonically increasing tie_breaker avoids trying to compare incomparable task objects when deadlines match. A heap maintains a partial order: heap[0] is smallest, but iterating the heap does not produce sorted order.
### Counterexample to a shallow complexity claim
O(1) expected lookup does not prove a set is fastest for every small input. Hashing, allocations, cache effects and key comparison costs matter. Benchmark tiny and large datasets separately and ensure both solutions produce the same semantics before comparing speed.
### Acceptance criteria
Provide a decision table for queue, membership index, priority queue and ordered display. Measure operations at several input sizes with timeit outside the first-run warmup. Test empty pop, duplicate keys and identical deadlines, and document Python version and observed results. The examples are reasoned expectations, not claimed runtime execution in this audit.
## Engineering field notes
- [SQLite live backup and restoration drills](https://ded-sec.space/learn/en/fieldnotes-en-34.html)
- [Crash-safe checkpoints and file replacement](https://ded-sec.space/learn/en/fieldnotes-en-35.html)
- [Monotonic deadlines across a retry budget](https://ded-sec.space/learn/en/fieldnotes-en-36.html)
- [Bounded work queues and overload decisions](https://ded-sec.space/learn/en/fieldnotes-en-37.html)
- [Keyset pagination with stable ordering](https://ded-sec.space/learn/en/fieldnotes-en-38.html)
- [Optimistic concurrency and lost-update prevention](https://ded-sec.space/learn/en/fieldnotes-en-39.html)
- [CSV import contracts and spreadsheet formula boundaries](https://ded-sec.space/learn/en/fieldnotes-en-40.html)
- [Incremental UTF-8 decoding across chunk boundaries](https://ded-sec.space/learn/en/fieldnotes-en-41.html)
- [Decimal rounding policies and reconciliation](https://ded-sec.space/learn/en/fieldnotes-en-42.html)
- [Daylight-saving ambiguity and scheduling contracts](https://ded-sec.space/learn/en/fieldnotes-en-43.html)
- [Structured log redaction before serialization](https://ded-sec.space/learn/en/fieldnotes-en-44.html)
- [Content Security Policy rollout with report-only evidence](https://ded-sec.space/learn/en/fieldnotes-en-45.html)
- [Subresource integrity and release pinning](https://ded-sec.space/learn/en/fieldnotes-en-46.html)
- [Transactional outbox and duplicate delivery](https://ded-sec.space/learn/en/fieldnotes-en-47.html)
- [Resource ownership and exception-safe cleanup](https://ded-sec.space/learn/en/fieldnotes-en-48.html)
- [Configuration precedence and provenance](https://ded-sec.space/learn/en/fieldnotes-en-49.html)
- [Deterministic failure injection and recovery assertions](https://ded-sec.space/learn/en/fieldnotes-en-50.html)
- [Binary record framing and truncated input](https://ded-sec.space/learn/en/fieldnotes-en-51.html)
### Parsing, grammars and input validation
Source-URL: https://ded-sec.space/learn/en/en-3.html
# Parsing and validation — bounded, explicit configuration grammar
## Problem and input contract
An offline CLI loads a tiny human-editable configuration of mode, limit and label. Treat file text as untrusted data; never execute it as shell code, Python, pickle or a template expression. Each allowed key may occur once. The only mode is read, the limit is an ASCII integer from 1 through 50, and label must be nonempty. Lines can be blank or full-line comments. Unknown keys, duplicates, oversized UTF-8 input and malformed key/value pairs must fail rather than being ignored. This exercise does not accept arbitrary nested structures, quoted multiline values or inline comments.
## Runnable Python 3 example
Save as config_lab.py and run python3 config_lab.py. The parser receives a string instead of a filesystem path, so all tests use synthetic inputs and no external file is read.
~~~python
import re
def parse_config(text):
if len(text.encode('utf-8')) > 2048:
raise ValueError('configuration too large')
allowed = {'mode', 'limit', 'label'}
result = {}
for number, line in enumerate(text.splitlines(), 1):
stripped = line.strip()
if not stripped or stripped.startswith('#'):
continue
key, sep, value = stripped.partition('=')
key = key.strip()
value = value.strip()
if not sep or not re.fullmatch(r'[a-z]+', key) or key not in allowed:
raise ValueError(f'line {number}: bad or unknown key')
if key in result:
raise ValueError(f'line {number}: duplicate {key}')
result[key] = value
if result.get('mode') != 'read':
raise ValueError('mode must be read')
limit = result.get('limit')
if limit is None or not re.fullmatch(r'[0-9]+', limit) or not 1 <= int(limit) <= 50:
raise ValueError('limit must be integer 1..50')
if not result.get('label'):
raise ValueError('label must be nonempty')
return {'mode': 'read', 'limit': int(limit), 'label': result['label']}
assert parse_config('# comment\nmode=read\nlimit=5\nlabel=Ελληνικά\n')['label'] == 'Ελληνικά'
for bad in ('mode=write\nlimit=1\nlabel=x', 'mode=read\nlimit=0\nlabel=x',
'mode=read\nlimit=2\nlabel=', 'mode=read\nlimit=2\nlabel=x\nlimit=3',
'mode=read\nlimit=2\nlabel=x\nexec=yes',
'mode=read\nlimit=2\nlabel=x\n' + 'x'*2048):
try: parse_config(bad)
except ValueError: pass
else: raise AssertionError('bad input accepted')
print('PASS parser: schema, Unicode, repeated keys, limits and size')
~~~
## Separate syntax from meaning
The partition operation identifies the first equal sign and does not itself determine whether a setting is authorized. The regular expression limits keys to lower-case ASCII letters, after which an explicit allowlist rejects unexpected names. The duplicate check prevents a later occurrence of a key from silently replacing an earlier decision. For the limit, syntax validation precedes integer conversion, and domain validation enforces the allowed interval. A missing limit, empty limit and malformed limit are distinct failure cases, although the function currently returns the same public error category for them. utf-8 byte size is checked before parsing to protect memory and CPU; line length and number of lines can be separately limited if this format expands. Never concatenate configuration text into shell commands.
## Tests, diagnostics and revision exercises
1. Add two settings with the same key; verify that the parser fails at the second line instead of accepting the last value.
2. Compare 0, 005, 51, -1, 1.5 and Arabic-Indic digits as limits. Explain the intentional ASCII-only numeric contract.
3. Add an unknown key named exec; prove that the parser rejects it rather than treating it as an instruction. Try values with equals signs and define the desired escaping policy.
4. Add a test for oversized UTF-8 Greek input, where byte length differs from character count. Then add distinct diagnostic identifiers for missing versus empty required fields.
**Completion evidence:** PASS, rejected fixtures, a documented grammar and clear statement of which syntax the parser intentionally does not support.
### State machines, invariants and predictable interfaces
Source-URL: https://ded-sec.space/learn/en/en-4.html
# State machines — consent-first download controller
## Learning contract
Model a downloader with new, ready, active, paused, blocked, done and failed states. A network side effect may occur only after a legal transition from ready to active. New requests cannot start until consent is accepted. A refusal moves the session to blocked, which has no shortcut to active. Events are explicit, and an unsupported combination produces an error rather than silently changing state. The following is a pure logic exercise, not a network downloader.
## Executable Python 3 demonstration
Save as state_lab.py and run python3 state_lab.py. The tests assert allowed transitions, four forbidden events and reachability of all declared states.
~~~python
from collections import deque
NEXT = {
('new', 'accept'): 'ready', ('new', 'decline'): 'blocked',
('ready', 'start'): 'active', ('active', 'pause'): 'paused',
('paused', 'resume'): 'active', ('active', 'finish'): 'done',
('active', 'fail'): 'failed', ('failed', 'retry'): 'ready'
}
def step(state, event):
try: return NEXT[(state, event)]
except KeyError as exc: raise ValueError(f'forbidden: {state}/{event}') from exc
assert step('new', 'accept') == 'ready'
assert step('ready', 'start') == 'active'
assert step('active', 'pause') == 'paused'
assert step('paused', 'resume') == 'active'
assert step('active', 'finish') == 'done'
for forbidden in [('new', 'start'), ('blocked', 'start'),
('done', 'start'), ('paused', 'finish')]:
try: step(*forbidden)
except ValueError: pass
else: raise AssertionError('invalid transition accepted')
seen, queue = {'new'}, deque(['new'])
while queue:
state = queue.popleft()
for (source, event), destination in NEXT.items():
if state == source and destination not in seen:
seen.add(destination)
queue.append(destination)
assert seen == {'new', 'ready', 'active', 'paused', 'blocked', 'done', 'failed'}
print('PASS state: consent boundary, illegal events and reachable states')
~~~
## What a correct state model proves
The NEXT dictionary acts as the explicit transition table. The step function returns the next state and does not mutate shared state, so when it raises ValueError, the caller can retain its previous valid state. The breadth-first traversal demonstrates that all seven defined states can be reached from new by following permitted transitions. It does not prove every property of a real downloader: a separate adapter must ensure network calls start only after a successful ready/start transition. Asynchronous callbacks, cancellation, resource cleanup, retries and repeated button taps require integration tests and idempotency rules. Never infer user consent from the mere existence of a download button.
## Engineering exercises with pass criteria
1. Enumerate every state/event combination, marking allowed versus forbidden. Check that each unspecified pair raises ValueError.
2. Add a cancelled state, then decide which states may cancel and whether a second cancellation is an error or an idempotent no-op.
3. Inject a fake side-effect adapter that logs start requests. Prove there are no logs after a new/start or blocked/start attempt.
4. Simulate active/pause twice, failed/retry and active/finish. Record exactly which transitions are valid, and verify no real network traffic is generated.
**Evidence:** PASS output, complete transition matrix, explicit consent boundary and an integration test plan for actual downloads.
### SQL transactions, constraints and schema migrations
Source-URL: https://ded-sec.space/learn/en/en-6.html
# SQLite schema migration — idempotency, transactions and rollback
## Scenario and invariant
An offline notes application starts with a version-one task table containing an integer key and a unique non-null title. Version two adds a completion flag restricted to zero or one. Existing databases need a safe, repeatable upgrade that does not erase notes. SQL identifiers come only from trusted source code, while user-provided values use bound parameters. A failed multi-statement update must leave the database in its previous valid state.
## Executable Python 3 migration fixture
Save as migration_lab.py and run python3 migration_lab.py. This in-memory database tests an initial migration, a repeated migration, a duplicate-title rollback and PRAGMA integrity_check.
~~~python
import sqlite3
def migrate(db):
current = db.execute('PRAGMA user_version').fetchone()[0]
if current > 2:
raise ValueError('database is newer than this program')
with db:
if current == 0:
db.execute('CREATE TABLE task(id INTEGER PRIMARY KEY, title TEXT NOT NULL UNIQUE)')
db.execute('PRAGMA user_version = 1')
current = 1
if current == 1:
db.execute('ALTER TABLE task ADD COLUMN done INTEGER NOT NULL DEFAULT 0 CHECK(done IN (0,1))')
db.execute('PRAGMA user_version = 2')
with sqlite3.connect(':memory:') as db:
migrate(db)
migrate(db) # migration is idempotent
assert db.execute('PRAGMA user_version').fetchone()[0] == 2
with db:
db.execute('INSERT INTO task(title) VALUES (?)', ('alpha',))
before = db.execute('SELECT COUNT(*) FROM task').fetchone()[0]
try:
with db:
db.execute('INSERT INTO task(title) VALUES (?)', ('temporary',))
db.execute('INSERT INTO task(title) VALUES (?)', ('alpha',))
except sqlite3.IntegrityError:
pass
else:
raise AssertionError('UNIQUE failed to reject a duplicate')
assert db.execute('SELECT COUNT(*) FROM task').fetchone()[0] == before
assert db.execute('SELECT done FROM task').fetchall() == [(0,)]
assert db.execute('PRAGMA integrity_check').fetchone() == ('ok',)
print('PASS SQL migration: version, idempotency, UNIQUE, rollback, integrity')
~~~
## Analyze the database behavior
The SQLite PRAGMA user_version field stores a schema version in the database file. The migration function reads the version and applies only the missing steps inside a transaction. Adding a column with NOT NULL DEFAULT 0 populates a valid default for existing rows and CHECK constrains later writes. The UNIQUE constraint protects task titles from duplicate insertion even when application code neglects validation. In the failure experiment, inserting temporary succeeds initially, but inserting alpha again raises IntegrityError, causing the entire with db transaction to roll back: the temporary row disappears. This relies on the connection transaction mode and SQLite behavior; verify it on the actual environment before deploying migrations. The sqlite3 connection context manager does not close the connection; caller ownership still matters.
## Safety boundaries, test plan and extensions
1. Start from a real disposable version-one schema with rows, migrate to two and prove both preserved titles and new default values. Rerun to demonstrate idempotency.
2. Force a migration error halfway through and inspect PRAGMA user_version plus sqlite_master. Do not advertise atomicity without testing the statements your chosen backend supports.
3. Use two connections to a file-backed database and document reader visibility before and after commit. Handle SQLITE_BUSY and rollback without disabling constraints.
4. Reject a database whose user_version is newer than the application. Back up a disposable database and actually restore it before promoting a migration to production.
**Evidence:** PASS, row counts before/after failure, schema-version transitions, integrity_check and a tested backup-restore plan. Never run this lab on personal database files.
## Further engineering detail
Protect an edit with the revision that was originally read, not only the row identifier. Treat zero affected rows as a possible stale-write conflict and preserve the current winner. A transaction provides atomic execution; an explicit revision predicate supplies the application rule that prevents one editor from silently overwriting another.
[Optimistic concurrency and lost-update prevention](https://ded-sec.space/learn/en/fieldnotes-en-39.html)
### Concurrency, parallelism and cancellation
Source-URL: https://ded-sec.space/learn/en/en-7.html
# Concurrency and cancellation — release shared resources reliably
## Scenario and invariant
An offline indexing task may be cancelled when the user closes a knowledge page. Shared asynchronous resources such as locks must be released even if cancellation happens during a suspended await. Concurrency interleaves tasks, whereas parallelism means simultaneous execution. Python asyncio coroutines cooperate at await boundaries and do not automatically protect shared mutable state. An application must define ownership, cancellation boundaries and cleanup before adding workers.
## Executable Python 3.11+ fixture
Save as cancellation_lab.py and run python3 cancellation_lab.py. The worker acquires a lock, announces that it started, then waits on an event. The controller cancels the task and checks that its finally block released the lock, allowing another task to acquire it. No threads, network, disk writes or timers are required.
~~~python
import asyncio
async def do_work(lock, started, unblock, trace):
async with lock:
trace.append('entered')
started.set()
try:
await unblock.wait()
trace.append('finished')
finally:
trace.append('cleanup')
async def test():
lock, started, unblock = asyncio.Lock(), asyncio.Event(), asyncio.Event()
trace = []
task = asyncio.create_task(do_work(lock, started, unblock, trace))
await started.wait()
assert lock.locked()
task.cancel()
try:
await task
except asyncio.CancelledError:
pass
else:
raise AssertionError('cancellation not delivered')
assert trace == ['entered', 'cleanup']
assert not lock.locked()
async with lock:
trace.append('reacquired')
assert trace[-1] == 'reacquired'
print('PASS async: cancellation, finally cleanup, lock release')
asyncio.run(test())
~~~
## Interpreting the outcome
When Task.cancel requests cancellation, a CancelledError is delivered at a suspension point. The finally block runs during stack unwinding and the async-with lock context releases the lock. Checking lock.locked is evidence for this fixture, not a guarantee about arbitrary blocking code or every library. Cancellation can race with normal completion; tests need to distinguish both outcomes. A released lock does **not** imply a filesystem write or database transaction has been rolled back. For durable changes, use database transactions or verified temporary-file replacement independently of asyncio cancellation handling.
## Bounded experiments and diagnostics
1. Move task.cancel to before started.wait, then observe how assertions must change when the task was never scheduled.
2. Put a second worker behind the same lock and verify it can proceed after the first is cancelled. Check the trace for cleanup exactly once.
3. Introduce a deliberately failing operation under the lock. Show whether the finally block runs for ordinary exceptions as well as cancellation.
4. Simulate a partial temporary-file write on a disposable path. Design independent cleanup and atomic replacement; do not assume cancellation itself reverts bytes.
**Completion evidence:** PASS, exact trace order, distinction between concurrency and parallelism, and a recovery plan for partially persisted work.
## Further engineering detail
Cancellation and overload meet at queue shutdown. A producer waiting to enqueue must learn when all consumers have failed. Define how blocked producers wake, how accepted tasks are acknowledged and whether unfinished tasks survive restart. Bounded buffering makes this policy necessary instead of concealing overload in memory growth.
[Bounded work queues and overload decisions](https://ded-sec.space/learn/en/fieldnotes-en-37.html)
### Unicode, encodings and multilingual search
Source-URL: https://ded-sec.space/learn/en/en-8.html
# Unicode, encodings and multilingual search
## Unicode, encodings and language-sensitive search
### Text is not the same as bytes or displayed characters
UTF-8 encodes Unicode scalar values into bytes, and a visible grapheme cluster may contain several code points. Python len(text) counts code points, not bytes and not necessarily the number of user-perceived characters. A rendered emoji with a modifier or a letter plus combining accent is a useful counterexample.
~~~python
import unicodedata as ud
composed = "é"
decomposed = "e\u0301"
assert composed != decomposed
assert ud.normalize("NFC", composed) == ud.normalize("NFC", decomposed)
assert len(composed.encode("utf-8")) != len(decomposed.encode("utf-8"))
~~~
Normalization can help equality checks, but it does not magically make string comparison locale-aware. Python casefold is designed for caseless matching and can change string length. For example, the German character ß casefolds to ss.
### A search index may intentionally ignore accents
For accent-insensitive search, a controlled pipeline can apply casefold, decompose to NFD and remove combining mark categories. But blindly stripping marks from every language can destroy meaningful distinctions. Keep original text for display, operate on a separate index key, and document which locales the normalization strategy supports.
### Filename and archive boundaries
Filesystem names may use different normalization conventions depending on OS. Never assume that text extracted from ZIP is safe because it is valid UTF-8: path traversal checks, absolute paths and collisions after normalization must be addressed separately. A normalization collision means two distinct source entries can map to one target filename.
### Localization fallbacks
Create an English/Greek resource map and deliberately remove one Greek key. The UI should use a documented fallback rather than a blank label or raw undefined. Validate placeholders before interpolation: a translated string that omits or renames a placeholder can break formatting even when both translations exist.
### Acceptance tests
Compare composed/decomposed strings, Greek text with tonos, German ß and one multi-code-point emoji. Test expected matching behavior separately from display behavior. Run on Python version recorded in your results and check that your search index cannot silently overwrite an unrelated path after normalization.
## Unicode and text encoding
### Problem and mental model
Two strings can look identical yet contain different code points. In Unicode, an accented character may be precomposed or represented with a combining mark. NFC normalization gives a consistent comparison representation without implying that all visually confusable text is equivalent.
### Reproducible illustration
~~~python
import unicodedata
left = 'é'
right = 'e\u0301'
assert left != right
assert unicodedata.normalize('NFC', left) == unicodedata.normalize('NFC', right)
assert len(left.encode('utf-8')) != len(right.encode('utf-8'))
~~~
### Independent validation
Try accented Greek names and final sigma casefolding. Measure codepoint count and UTF-8 byte count independently. Never normalize arbitrary binary files; decide whether search needs NFC, NFKC, casefold or accent-sensitive matches, and preserve original display text.
**Authoritative documentation:** https://docs.python.org/3/library/unicodedata.html
### HTTP contracts, timeouts and safe retries
Source-URL: https://ded-sec.space/learn/en/en-9.html
# HTTP response validation — bounded, idempotent retries
## Scenario and acceptance contract
An offline-capable application synchronizes a read-only catalog when networking is available. Retrying a GET after a temporary 429 or 503 may be acceptable; blindly retrying a POST that creates purchases or accounts may cause duplicate side effects. The example injects a transport function, so tests simulate HTTP statuses without making external requests. Restrict paths to known relative API endpoints, cap the number of attempts and validate the response schema even when the HTTP status is 200.
## Runnable Python 3 test double
Save as retry_lab.py and run python3 retry_lab.py. Simulated responses produce 503, then 429, then 200. Separate fixtures reject authorization errors, exhausted retry budgets, invalid JSON structure and hostile path strings.
~~~python
import re
def fetch_json(send, path, attempts=3):
if not re.fullmatch(r'/api/[a-z-]{1,30}', path):
raise ValueError('invalid API path')
if type(attempts) is not int or not 1 <= attempts <= 5:
raise ValueError('invalid retry budget')
for number in range(1, attempts + 1):
status, value = send('GET', path)
if status == 200:
if not isinstance(value, dict) or not isinstance(value.get('items'), list):
raise ValueError('invalid response schema')
return value['items']
if status not in (429, 503) or number == attempts:
raise RuntimeError(f'HTTP {status} after {number} attempt(s)')
raise AssertionError('unreachable')
def transport(statuses):
received = iter(statuses)
calls = []
def send(method, path):
calls.append((method, path))
return next(received)
return send, calls
send, calls = transport([(503, None), (429, None), (200, {'items': [1, 2]})])
assert fetch_json(send, '/api/items') == [1, 2] and len(calls) == 3
for statuses in ([(401, None)], [(503, None)] * 3, [(200, {'item': 1})]):
send, calls = transport(statuses)
try: fetch_json(send, '/api/items')
except (ValueError, RuntimeError): pass
else: raise AssertionError('bad response accepted')
for path in ('https://example.com/', '/api/../admin', '/api/items?token=secret'):
try: fetch_json(lambda *_: None, path)
except ValueError: pass
else: raise AssertionError('bad path accepted')
print('PASS HTTP: retry budget, auth stop, schema, path validation')
~~~
## Interpreting policy and missing production behavior
The transport receives only GET and a tightly validated relative path. Authentication errors such as 401 stop immediately. Transient 429 and 503 responses are retried no more than the configured budget. Once status 200 arrives, the function still verifies that items is a list; accepting arbitrary response bodies can break downstream rendering. This fixture intentionally has **no delay** between retries to keep tests deterministic. A real client must implement capped exponential backoff with jitter, honor valid Retry-After guidance, apply connection/read timeouts, and bound total elapsed time. It should handle transport exceptions and cancellation, observe API rate limits and avoid logging tokens or private payloads.
## Bounded failure laboratories
1. Add tests for 400, 403, 500 and malformed 200 bodies. State exactly which failures retry and why.
2. Accept an injected scheduler instead of calling sleep inside business logic. Assert that delay increases but never exceeds a ceiling.
3. Add simulated network exceptions before the HTTP response; decide which are safe for a read-only GET and how they consume attempt budget.
4. Model a POST separately with an idempotency key supported by the server. Explain why a client-generated key does not guarantee safety unless the server enforces it.
**Evidence:** PASS output, a status/attempts table, schema-failure logs without secrets and a documented real-world timeout and backoff policy.
## Further engineering detail
A retry count alone does not bound waiting time. Share one monotonic deadline across attempts and backoff, and inspect whether the HTTP client bounds connection and read phases separately. An overall budget is especially important on mobile devices where reconnects can consume most of the useful interaction window.
[Monotonic deadlines across a retry budget](https://ded-sec.space/learn/en/fieldnotes-en-36.html)
### CLI programs, Termux and desktop portability
Source-URL: https://ded-sec.space/learn/en/en-13.html
# CLI and Termux — read-only portable file inventory
## Learning goal and acceptance contract
Build a read-only inventory for an existing folder specified by a command-line argument. The folder path may contain Greek characters or spaces. Print deterministic sorted filenames, optionally as Unicode JSON, and limit results to 1 through 20. Reject a nonexistent root and invalid limit. Work without depending on a writable current directory or network connectivity. Never grant Android storage access, update packages, or change inspected files as an undeclared side effect.
## Executable Python 3 lab
Save this as cli_lab.py and run python3 cli_lab.py. TemporaryDirectory provides synthetic files and the test checks both normal and invalid input.
~~~python
import argparse
import io
import json
from pathlib import Path
from tempfile import TemporaryDirectory
def main(argv, out):
parser = argparse.ArgumentParser(description='Read-only file inventory')
parser.add_argument('--root', required=True, type=Path)
parser.add_argument('--limit', type=int, default=10)
parser.add_argument('--json', action='store_true')
args = parser.parse_args(argv)
if not args.root.is_dir():
raise ValueError('root must be an existing directory')
if not 1 <= args.limit <= 20:
raise ValueError('limit must be between 1 and 20')
rows = sorted((p.name for p in args.root.iterdir() if p.is_file()))[:args.limit]
if args.json:
print(json.dumps({'files': rows}, ensure_ascii=False), file=out)
else:
for name in rows:
print(name, file=out)
return 0
with TemporaryDirectory(prefix='δοκιμή διάστημα ') as root:
home = Path(root)
(home / 'άλφα test.txt').write_text('data', encoding='utf-8')
(home / 'b.txt').write_text('', encoding='utf-8')
buf = io.StringIO()
assert main(['--root', root, '--limit', '1', '--json'], buf) == 0
assert json.loads(buf.getvalue())['files'] == ['b.txt']
for argv in (['--root', root, '--limit', '0'],
['--root', '/path/that/does/not/exist']):
try: main(argv, io.StringIO())
except ValueError: pass
else: raise AssertionError('invalid input accepted')
print('PASS cli: Unicode paths, JSON, sorting, range failures')
~~~
## Design reasoning and operational limits
Parsing CLI syntax with argparse is different from validating semantic conditions. The helper main(argv, out) accepts injected output, making its JSON testable without redirecting global stdout. The sort makes output independent of filesystem enumeration order. pathlib.Path preserves Unicode filenames; a shell still needs quotes around a path containing spaces. JSON with ensure_ascii=False preserves readable Greek text. In a production wrapper, catch ValueError at the outer boundary and print a diagnostic to stderr with exit status 2. argparse itself uses SystemExit when it prints help or rejects malformed options. Do not mistake an uncaught exception in a library test for a polished user-facing CLI. The Path.is_file method can follow symlinks; decide whether an inventory should include symlink targets before deploying.
## Experiments and failure checks
1. Try an empty directory, a Greek directory name, and a path with square brackets. Capture exactly what JSON includes.
2. Test --limit 0, --limit 21, a missing root and --help. Record return status, exception and stderr separately.
3. Write a wrapper that maps invalid arguments to status 2 without announcing success, and distinguish permission-denied status from user input errors.
4. Repeat from a read-only working directory; only fixture files in a temporary directory should be created. On Termux, describe app-private paths versus optional shared storage access.
**Deliverables:** PASS output, one JSON fixture, two negative tests, Python version and evidence that no real files were modified.
### Code review, threat modeling and secure defaults
Source-URL: https://ded-sec.space/learn/en/en-15.html
# Secure review — ZIP preflight and untrusted paths
## Scenario and threat boundary
A local knowledge tool accepts ZIP archives from somebody else. Archive member names are untrusted metadata: an attacker can attempt directory traversal, absolute paths, Windows separators, duplicate destinations, Unix symlinks or unexpectedly large uncompressed entries. Reject suspicious members before attempting extraction. The following validator intentionally **does not extract** anything: it is a bounded, introductory preflight rather than a complete safe ZIP import implementation.
## Executable Python 3 exercise
Save as zip_review.py and run python3 zip_review.py. Tests create synthetic archives in memory, including a traversal name and a ZIP member with a Unix symlink flag.
~~~python
from io import BytesIO
from pathlib import PurePosixPath
from stat import S_IFMT, S_IFLNK
from zipfile import ZipFile, ZipInfo
def verify_manifest(blob, max_files=20, max_bytes=100_000):
total, names = 0, set()
with ZipFile(BytesIO(blob)) as archive:
for member in archive.infolist():
name = member.filename
parts = name.rstrip('/').split('/')
target = PurePosixPath(name)
if (not name or target.is_absolute() or '\\' in name
or any(part in ('', '.', '..') for part in parts)
or any(ord(ch) < 32 for ch in name)):
raise ValueError('invalid ZIP member path')
if name in names:
raise ValueError('duplicate ZIP member')
names.add(name)
mode = S_IFMT(member.external_attr >> 16)
if mode == S_IFLNK:
raise ValueError('symlink in archive')
if member.is_dir():
continue
total += member.file_size
if len(names) > max_files or total > max_bytes:
raise ValueError('archive limit exceeded')
if member.file_size > 0 and (member.compress_size == 0
or member.file_size > 100 * member.compress_size):
raise ValueError('suspicious compression ratio')
return len(names)
def fixture(name):
b = BytesIO()
with ZipFile(b, 'w') as z:
z.writestr(name, 'hello')
return b.getvalue()
assert verify_manifest(fixture('docs/lesson.txt')) == 1
for wrong in ('../private.txt', 'docs/../private.txt', '/absolute', 'back\\slash'):
try: verify_manifest(fixture(wrong))
except ValueError: pass
else: raise AssertionError(wrong)
symlink = ZipInfo('linked')
symlink.create_system = 3
symlink.external_attr = (0o120777 << 16)
b = BytesIO()
with ZipFile(b, 'w') as z:
z.writestr(symlink, 'outside')
try: verify_manifest(b.getvalue())
except ValueError: pass
else: raise AssertionError('symlink accepted')
print('PASS ZIP preflight: path traversal, absolute, backslash, symlink')
~~~
## Security analysis and limitations
The manifest checks reject empty, absolute, dot/dotdot and backslash paths, control characters, exact duplicate names, Unix symlinks and suspicious declared sizes or compression ratios. That is not sufficient for safe production extraction. ZIP sizes can be adversarial; a full importer must bound the **actual decompressed bytes** while streaming, resource usage, execution time and destination disk space. A secure extractor must check the canonical destination remains inside a dedicated staging directory, reject special files, and handle case-insensitive collisions such as A.txt versus a.txt or normalized Unicode names. The code does not cover drive-prefix paths such as C:foo, nor validate every filesystem-specific filename rule. Never extract directly over application or personal files without explicit user authorization and a rollback plan.
## Bounded review and negative testing
1. Add a member with a drive prefix or trailing space, a repeated exact name, and two canonically equivalent Unicode names. Define a rejection policy and add failing tests.
2. Compare member.file_size with the amount actually read while decompressing under an enforced byte budget; explain why metadata is not a trusted limit.
3. Model an attacker who supplies an archive containing a symlink and a following file path through that symlink. Show why resolving paths and refusing symlinks matters.
4. Produce a review checklist covering assets, inputs, privileges, storage writes, denied operations, error reporting and cleanup of a partially created staging directory.
**Evidence:** PASS, at least five rejected archives and an explicit note that full extraction security and filesystem containment were not established by this demonstration.
## Further engineering detail
Browser policy rollout deserves functional tests alongside header inspection. A restrictive policy can block theme controls or lesson navigation while leaving the first screenshot apparently correct. Collect report-only evidence in a controlled environment, then exercise interactive paths before enforcing the policy. A generic wildcard added to suppress reports can erase the intended restriction.
[Content Security Policy rollout with report-only evidence](https://ded-sec.space/learn/en/fieldnotes-en-45.html)
### Release engineering, offline packages and honest validation
Source-URL: https://ded-sec.space/learn/en/en-17.html
# Release engineering — a reproducible bilingual ZIP fixture
## Acceptance contract and scope
A release of the bilingual offline library needs an immutable source revision, an inventory of files, repeatable build inputs and metadata, integrity evidence, and a rollback plan. Byte-identical packages made in the documented toolchain should have the same SHA-256. Hashes detect altered bytes but do not independently authenticate the publisher. Passing ZIP CRC checks also does not establish that every lesson is accurate or each code example runs on Windows, Linux and Android.
## Executable Python 3 build and check
Save as release_lab.py and run python3 release_lab.py. The program creates an in-memory archive with ordered entries, fixed timestamps and POSIX mode metadata. ZIP_STORED avoids compression differences from zlib versions in this small fixture.
~~~python
import hashlib
from io import BytesIO
from zipfile import ZIP_STORED, ZipFile, ZipInfo
def build(files):
result = BytesIO()
with ZipFile(result, 'w') as z:
for name in sorted(files):
if name.startswith('/') or '..' in name.split('/'):
raise ValueError('unsafe archive path')
info = ZipInfo(name, date_time=(1980, 1, 1, 0, 0, 0))
info.compress_type = ZIP_STORED
info.external_attr = 0o100644 << 16
z.writestr(info, files[name])
return result.getvalue()
files = {'English/lesson.md': b'# English\n',
'Greek/lesson.md': '# Ελληνικά\n'.encode()}
first, second = build(files), build(dict(reversed(list(files.items()))))
assert first == second
expected = hashlib.sha256(first).hexdigest()
assert hashlib.sha256(second).hexdigest() == expected
with ZipFile(BytesIO(first)) as archive:
assert archive.namelist() == sorted(files)
assert archive.testzip() is None
assert all(archive.read(name) == files[name] for name in files)
changed = build({**files, 'English/lesson.md': b'# Changed\n'})
assert hashlib.sha256(changed).hexdigest() != expected
print('PASS release: stable fixture, CRC, byte changes and SHA-256')
~~~
## Real release gates
Build from a concrete, immutable commit SHA and produce fresh indexes **after** editing Markdown so the website and archive refer to the same texts. Compare both language inventories by stable lesson identity rather than assuming translated path names match. Stage artifacts outside the public directory and hash the final published bytes. Verify SHA-256 on a downloaded copy using a trusted checksum; ZIP testzip provides CRC-based corruption detection but not authenticity. Record operating system, interpreter, compression mode, dependency versions and flags needed to reproduce the binary. A correct release also needs negative and integration tests, browser checks, offline open tests, and a documented fallback to the previous working artifact.
## Exercises and reproducibility diagnostics
1. Change exactly one content byte and confirm the SHA-256 changes. Reverse the input dictionary insertion order and confirm output does not change.
2. Export synthetic English and Greek pairs with different human-readable names. Compare stable logical IDs and report missing partners.
3. Simulate a crash before publishing. Explain how a temporary file followed by verification and atomic replacement, where supported, prevents incomplete replacement.
4. Build with a second Python runtime or operating system and compare output digests. Report unknown or untested environments instead of extrapolating.
**Evidence:** PASS, hash of the generated fixture, input file inventory, tool versions and an honest validation matrix distinguishing tested from untested requirements.
## Further engineering detail
Pinning an external dependency means reviewing a pair: the release URL and the digest of its exact bytes. Update and roll back that pair together. A hash recomputed from whatever a remote server returns during every build verifies transport consistency with itself, not approval of a specific reviewed release.
[Subresource integrity and release pinning](https://ded-sec.space/learn/en/fieldnotes-en-46.html)
### Algorithm drills — linear/binary search and frequency maps
Source-URL: https://ded-sec.space/learn/en/en-18.html
# Algorithm drills — linear/binary search and frequency maps
## Linear search
### Reference implementation (Python 3)
~~~python
def find_index(items, target):
for i, item in enumerate(items):
if item == target:
return i
return -1
assert find_index([4, 8, 2], 8) == 1
assert find_index([], 8) == -1
~~~
### Mechanism and invariant
Scan the list from index zero and compare each element with the target. At the start of iteration i, no earlier index contains a matching value; returning immediately therefore finds the **first** match. A missing value returns -1 as a chosen interface contract, not a Python indexing operation. The worst-case number of equality comparisons is n, so time is O(n) and extra storage O(1).
### Run the adjacent reference
The code below is also stored as 01_linear_search.py and contains executable assertions. The algorithm works on unsorted collections; sorting a list solely to make one lookup faster would add work and could change original indices.
### Boundary laboratory
1. Input [] with target 8 returns -1; zero comparisons occur.
2. Input [8,8,3] with target 8 returns 0, not 1. Duplicate matches must preserve first-index semantics.
3. Input [4,8,2] with target 2 returns 2; this is the worst case for a present target.
4. Instrument the loop to count equality operations for targets at the start, end and absent from lists of length 10, 100 and 1000. Explain the linear growth.
5. Decide whether None, strings and integers may coexist. Python equality rules are part of the comparison contract and differ from a typed database lookup.
### Transfer and completion
For many repeated queries, build an index mapping each key to its first position and account for O(n) preparation/storage; the index is only valid until the collection changes. Record actual comparison counts and duplicate handling before claiming an optimization. Run the Python assertions, then add the four negative and boundary tests.
## Binary search
### Reference implementation (Python 3)
~~~python
def binary_search(items, target):
lo, hi = 0, len(items)
while lo < hi:
mid = (lo + hi) // 2
if items[mid] < target: lo = mid + 1
else: hi = mid
return lo if lo < len(items) and items[lo] == target else -1
assert binary_search([1, 3, 5, 7], 5) == 2
~~~
### Invariant
The reference implementation searches a half-open interval [lo, hi). Every step retains the **first index whose value is not less than target**. When items[mid] is smaller, no index up to mid can work, so lo becomes mid+1; otherwise hi becomes mid. At termination lo equals hi. Only then do we test whether the value actually equals the target.
### Correctness and complexity
Each iteration approximately halves the candidate range, giving O(log n) comparisons and O(1) extra memory. This assumes ascending sorted input and a comparison relation that behaves consistently. A valid list with duplicates returns their **leftmost** index because the high boundary moves left on equality.
### Controlled test cases
1. [1,3,5,7] and target 5 return 2. Record lo, hi and mid at each iteration.
2. [2,2,2] and target 2 return 0. Contrast this with a naive implementation that stops on its first arbitrary middle match.
3. [] and target 1 return -1; [1,3] and target 9 also return -1.
4. Test target smaller than the first element; the insertion position is zero but the search return remains -1.
5. Deliberately provide [3,1,2]. The sorted-input precondition is violated; explain that no index can be trusted rather than reporting a successful algorithm test.
### Extend responsibly
Expose a separate lower_bound API if callers need insertion positions. Test index boundaries with an even and odd number of elements, then compare lookup counts against linear search. For floating-point NaN values, ordering needs an explicit policy because ordinary comparisons do not provide the required total order.
## Frequency map
### Reference implementation (Python 3)
~~~python
from collections import Counter
counts = Counter('banana')
assert counts['a'] == 3
print(counts)
~~~
### Problem
Given a stream of values, return how often each distinct key occurs. The reference uses collections.Counter over the string banana: a occurs 3 times, n twice and b once. A hash-based Counter usually builds counts in O(n) expected time with O(k) storage for k distinct keys; the worst case depends on hash behavior and input.
### Interpret the example
A Python string iterates Unicode code points rather than grapheme clusters. Counting bytes of UTF-8, case-folded text or whole words answers different questions. Decide the unit of counting **before** choosing a key or normalization rule. Counter returns zero for a missing key without inserting the key, unlike plain dict indexing.
### Experiments
1. Check counts['a']==3 and counts['z']==0; verify the number of distinct keys is 3.
2. Compare Counter('Aa') with Counter('Aa'.casefold()). The second merges ASCII case, which may or may not match requirements.
3. Count 10000 repeated a characters. Memory should grow with the number of unique keys, not total repetitions, apart from input storage.
4. Count a list of normalized log statuses such as ['ok','fail','ok'] and describe how missing/unknown statuses should be reported.
5. Write the same algorithm with an ordinary dict.get(key,0)+1 loop, then compare counts without assuming that the more compact API is always faster.
### Reporting
For large logs process an iterable incrementally and record whether the system stores the entire input. Where data is untrusted, cap input size and consider cardinality limits. Preserve the raw value if downstream users need to audit what normalization changed.
## 01 linear search — boundary study
When duplicates are allowed, the loop returns the first matching index. Distinguish absence (-1) from an index of 0; never test the result with `if index:` because zero is falsey. Equality uses the type's `==` implementation, so compare compatible values.
Test `[9,9]` looking for 9 (answer 0), an empty list (answer -1), and a missing value. No sorting is required.
## 02 binary search — boundary study
The algorithm needs ascending sorted data. Its interval is half-open `[lo,hi)`, so the invariant is that every candidate position remains inside this interval. At termination `lo` is the lower-bound insertion point and may equal `len(items)`.
Try `[1,2,2,2,4]` searching for 2: the first occurrence is index 1. Searching for 3 must return -1 rather than the insertion point.
## 03 frequency map — boundary study
A frequency map counts all occurrences without repeatedly scanning the entire collection. Dictionary keys must be hashable. For human-entered text, decide whether `A` and `a`, accented characters or spaces should count separately before counting.
Build `Counter('aabbc')`: counts are a=2, b=2, c=1. A missing key produces zero from Counter. Hash-table memory grows with the number of distinct values.
### 01 linear search
Source-URL: https://ded-sec.space/learn/en/en-19.html
def find_index(items, target):
for i, item in enumerate(items):
if item == target:
return i
return -1
assert find_index([4, 8, 2], 8) == 1
assert find_index([], 8) == -1
### 02 binary search
Source-URL: https://ded-sec.space/learn/en/en-21.html
def binary_search(items, target):
lo, hi = 0, len(items)
while lo < hi:
mid = (lo + hi) // 2
if items[mid] < target: lo = mid + 1
else: hi = mid
return lo if lo < len(items) and items[lo] == target else -1
assert binary_search([1, 3, 5, 7], 5) == 2
### 03 frequency map
Source-URL: https://ded-sec.space/learn/en/en-23.html
from collections import Counter
counts = Counter('banana')
assert counts['a'] == 3
print(counts)
### Algorithm drills — two pointers, stacks and sliding windows
Source-URL: https://ded-sec.space/learn/en/en-24.html
# Algorithm drills — two pointers, stacks and sliding windows
## Two pointers
### Reference implementation (Python 3)
~~~python
def pair_sum(values, target):
i, j = 0, len(values) - 1
while i < j:
total = values[i] + values[j]
if total == target: return (values[i], values[j])
if total < target: i += 1
else: j -= 1
return None
assert pair_sum([1, 2, 4, 6, 8], 10) == (2, 8)
~~~
### Mechanism
The reference takes an ascending sorted list and a target sum. One pointer starts at the smallest value and one at the largest. If their sum is too small, increasing the left pointer is the only direction that can help; if too large, decreasing the right pointer is the only direction that can help. Stop when pointers meet: using the same element twice would be invalid.
### Complexity
With each step at least one pointer moves closer to the other, so the scan is O(n) time and O(1) extra space. Sorting an unsorted input first would add O(n log n) time (and possible memory), and it could change original indices. The returned pair is made of **values**, not original positions.
### Boundary experiments
1. Values [1,2,4,6,8], target 10 return (2,8). Explain which branch removes each candidate.
2. Values [1,3,5], target 10 return None even though 5+5=10; only one element has value 5.
3. Values [5,5], target 10 return (5,5), using two different indices.
4. Values [-5,-1,2,8], target 3 return (-5,8). Negative numbers do not invalidate the monotonic argument when the list is sorted.
5. Pass an unsorted list and explain why the pointer movement no longer proves correctness.
### Build an index-returning variant
For data needing provenance, return indices instead of values and preserve a mapping if sorting is required. Add property-based tests comparing your result to a simple O(n²) reference on small sorted lists, checking existence rather than one specific pair when several are valid.
## Balanced parentheses
### Reference implementation (Python 3)
~~~python
def balanced(text):
stack, pairs = [], {')': '(', ']': '[', '}': '{'}
for char in text:
if char in '([{': stack.append(char)
elif char in pairs:
if not stack or stack.pop() != pairs[char]: return False
return not stack
assert balanced('([])') and not balanced('([)]')
~~~
### Invariant
Read the input one character at a time. Push opening delimiters (, [ and { onto a stack. For each closing delimiter, the **latest unmatched opener** must match the corresponding type. Failure happens immediately if the stack is empty or the types differ; success requires the stack to be empty at the end.
### Scope and complexity
The provided function intentionally ignores non-bracket characters. It checks nesting, not full programming-language syntax: a parenthesis inside a quoted string would still count. Every character is visited once, so time is O(n) and worst-case stack memory O(n) when every character opens a group.
### Failing and passing cases
1. '([])' is valid; '([)]' is invalid because the first closing character mismatches the top of stack.
2. '(()' must fail at end-of-input, since an opener remains.
3. ')(' fails on the very first symbol because no opener exists.
4. '[{}]' succeeds; '[{]' fails because the closing bracket tries to match an unclosed brace.
5. 'text(a[b])' succeeds under the stated ignore-other-characters contract. Decide whether this is appropriate for source-code linting, where string literals/comments need tokenization.
### Follow-up implementation
Modify the function to return the index and reason for the first bad closer, or the positions of unmatched openers. Test 10000 nested brackets to show why an explicit stack avoids recursive parser depth limits. Do not confuse this simple delimiter checker with a full grammar parser.
## Sliding window
### Python 3 reference program
~~~python
def max_window_sum(values, k):
if k <= 0 or k > len(values): raise ValueError('invalid window')
current = sum(values[:k]); best = current
for right in range(k, len(values)):
current += values[right] - values[right-k]
best = max(best, current)
return best
assert max_window_sum([1,3,2,5,1],2) == 7
~~~
### Recurrence
For a window of k adjacent values, the next window differs by exactly two elements: remove the value leaving on the left and add the value entering on the right. If current is the old sum and right is the incoming index, new_sum = current + values[right] - values[right-k]. Each update is constant-time, so after the first k-item sum the scan is O(n).
### Understand actual costs
The reference computes sum(values[:k]). On a Python list, values[:k] creates a **copy of k references**, so this implementation uses O(k) temporary extra space despite constant-time updates. To achieve O(1) auxiliary space, replace that slice with a generator-based initial sum. This distinction matters when k is large.
### Boundary and negative tests
1. [1,3,2,5,1], k=2 has sums 4,5,7,6 and returns 7.
2. For k=1, the maximum window is the largest individual value.
3. For k=len(values), the answer is the sum of the whole list and only one window exists.
4. For k=0, negative k or k>len(values), expect ValueError. Empty input cannot contain a positive-length window.
5. Test all-negative values [-5,-2,-7], k=2. Initialize best to the first window, **not zero**, so the result is -7.
### Extension
For variable-size windows based on a sum threshold, the usual two-pointer monotonic proof needs nonnegative data. With negative values the window sum can decrease when extended, so use a different algorithm or justify a stronger invariant. Test inputs against a simple reference that enumerates every length-k window.
## 04 two pointers — boundary study
The two-pointer sum method works because the array is sorted: a sum too small must advance the left pointer, while a sum too large must decrease the right pointer. Without that order, moving pointers can skip a valid pair.
Check `[1,1]`, target 2 (the two distinct positions are valid), `[5]` target 10 (no pair), and sorted negatives `[-4,-1,2,8]`, target 4.
## 05 stack matching — boundary study
A stack enforces last-opened, first-closed nesting. A closing symbol must match exactly the most recent unmatched opening symbol; simply counting opening and closing symbols cannot distinguish `([)]` from `([])`.
An empty string is balanced. `'}'` is invalid immediately, and `'((('` is invalid at end. The shown parser intentionally ignores ordinary non-bracket characters.
## 08 sliding window — boundary study
For a fixed-width window, subtract the element leaving at `right-k` and add the new element at `right`. This preserves the invariant that `current` equals the sum of precisely k consecutive values. It works with negative numbers too.
`k=1` returns the maximum single value, `k=len(values)` returns the whole sum. `k=0` or larger than the input is rejected explicitly.
### 04 two pointers
Source-URL: https://ded-sec.space/learn/en/en-25.html
def pair_sum(values, target):
i, j = 0, len(values) - 1
while i < j:
total = values[i] + values[j]
if total == target: return (values[i], values[j])
if total < target: i += 1
else: j -= 1
return None
assert pair_sum([1, 2, 4, 6, 8], 10) == (2, 8)
### 05 stack matching
Source-URL: https://ded-sec.space/learn/en/en-27.html
def balanced(text):
stack, pairs = [], {')': '(', ']': '[', '}': '{'}
for char in text:
if char in '([{': stack.append(char)
elif char in pairs:
if not stack or stack.pop() != pairs[char]: return False
return not stack
assert balanced('([])') and not balanced('([)]')
### Breadth-first search
Source-URL: https://ded-sec.space/learn/en/en-28.html
# Breadth-first search — shortest hop layers in an unweighted graph
## Python 3 reference program
~~~python
from collections import deque
def bfs(graph, start):
seen, order, queue = {start}, [], deque([start])
while queue:
node = queue.popleft()
order.append(node)
for neighbor in graph.get(node, ()):
if neighbor not in seen:
seen.add(neighbor); queue.append(neighbor)
return order
assert bfs({'a':['b','c'], 'b':['d']}, 'a') == ['a','b','c','d']
~~~
## Queue invariant
Breadth-first search removes the oldest discovered vertex first. A deque supports O(1) appends and pops from the left, so each vertex is processed once after being placed in seen. Mark vertices seen **on enqueue**, not only on dequeue, to avoid many duplicate entries when multiple parents lead to the same neighbor.
## Exactly what is guaranteed
With an adjacency list, visiting reachable vertices and their outgoing edges takes O(V+E) time and O(V) queue/seen space. BFS produces nondecreasing distance by edge count in an **unweighted** graph. The returned list is visitation order, not a shortest path; to reconstruct a path, store each vertex's parent when it is first discovered.
## Cases worth running
1. In graph a→b,c and b→d, the reference order is a,b,c,d because b and c are enqueued before d.
2. Add an edge d→a to form a cycle. The seen set prevents an infinite loop.
3. Ask to start from x where x is not a dictionary key. The defined behavior is ['x'], because missing adjacency defaults to an empty collection.
4. Insert an isolated vertex z. Starting at a will not visit z: breadth-first search does not automatically cover disconnected components.
5. Swap the order of a's neighbors. Visitation order may change while shortest edge-count distances stay the same.
## A practical extension
Return (distance, parent) mappings and verify that the parent chain for d consists of two edges. Compare BFS against Dijkstra only when every edge weight is one, and state how neighbor iteration order affects tie-breaking.
## 06 bfs — boundary study
Breadth-first search visits increasing numbers of edges from the start vertex. With an unweighted graph, the first time a vertex is reached gives a shortest path in hops. Mark it seen as you enqueue it, or multiple parents will enqueue duplicates.
A disconnected vertex absent from the starting component will not appear in traversal output. Test a cycle a→b→a to ensure the algorithm terminates.
## Multi-source BFS and marking at enqueue time
Breadth-first search can start from several sources at distance zero. The first discovery of a vertex then gives its minimum number of edges from any source in an unweighted graph. Mark a vertex when you enqueue it, rather than when you later remove it; otherwise multiple predecessors can enqueue the same vertex repeatedly.
This technique models nearest exits, distance to any selected service and wavefront expansion. It does not handle different edge costs. A missing vertex in the distance map means unreachable from the chosen sources, not distance zero.
```python
from collections import deque
graph = {0:[1], 1:[0,2], 2:[1,3], 3:[2], 4:[]}
sources = [0,3]
distance = dict.fromkeys(sources, 0)
queue = deque(distance)
while queue:
node = queue.popleft()
for nxt in graph[node]:
if nxt not in distance:
distance[nxt] = distance[node] + 1
queue.append(nxt)
assert distance == {0:0, 3:0, 1:1, 2:1}
assert 4 not in distance
print(distance)
```
Include duplicate sources, a self-loop, a disconnected component and a graph with multiple equally short paths. Parent selection among equal paths depends on traversal order, so do not claim a unique route unless the contract specifies tie-breaking.
[Technical reference](https://docs.python.org/3/library/collections.html#collections.deque)
### 06 bfs
Source-URL: https://ded-sec.space/learn/en/en-29.html
from collections import deque
def bfs(graph, start):
seen, order, queue = {start}, [], deque([start])
while queue:
node = queue.popleft()
order.append(node)
for neighbor in graph.get(node, ()):
if neighbor not in seen:
seen.add(neighbor); queue.append(neighbor)
return order
assert bfs({'a':['b','c'], 'b':['d']}, 'a') == ['a','b','c','d']
### Depth-first search
Source-URL: https://ded-sec.space/learn/en/en-30.html
# Depth-first search — explicit stack and reproducible order
## Python 3 reference program
~~~python
def dfs(graph, start):
seen, order, stack = set(), [], [start]
while stack:
node = stack.pop()
if node in seen: continue
seen.add(node); order.append(node)
stack.extend(reversed(graph.get(node, ())))
return order
assert dfs({'a':['b','c'],'b':['d']}, 'a') == ['a','b','d','c']
~~~
## Mechanism
Depth-first search explores one branch before returning to pending neighbors. The adjacent Python source uses a LIFO stack rather than recursive calls. This avoids recursion-depth failure on long chains, although the explicit stack can still grow proportional to the number of vertices.
## Neighbor-order invariant
The reference appends reversed neighbors so that, when popped from the end, the leftmost listed neighbor is visited first. For a→b,c and b→d the expected traversal is a,b,d,c. Without reversed, the first pop after a would visit c. Order is a policy determined by the graph representation, not a universal DFS property.
## Test design
1. Add c→a to form a cycle: the seen set must prevent repeated visits.
2. Add duplicate edges a→b twice. The implementation may temporarily push duplicates, but the seen test must keep each vertex in output once.
3. Build a graph of 10000 nodes in a chain and compare iterative versus recursive implementations without claiming recursion is always safe.
4. Add a disconnected z: starting at a should not visit it. For a full graph traversal, iterate over all vertices and launch DFS for those not yet seen.
5. Change neighbor ordering deliberately and record the new traversal; assert membership separately from exact order when order is not required.
## When DFS is not enough
DFS does **not** guarantee minimum hop count. For cycle detection in directed graphs, a single seen set is insufficient: also track an active recursion/stack path or colors. Record O(V+E) traversal work with adjacency lists and a potentially O(V) seen/stack footprint.
## 07 dfs — boundary study
Iterative DFS stores work explicitly on a stack and avoids recursion depth limits. Its visitation order depends on adjacency ordering, and reversing neighbors on push is what makes the provided example visit the leftmost neighbor first.
Cycles are safe because already-seen nodes are skipped. Traversal order is not a shortest-path guarantee; for fewest hops use BFS.
## Explicit DFS frames preserve recursive postorder
A stack of vertices is enough for reachability, but not always enough to reproduce a recursive DFS that performs work after all children finish. A frame must retain whether it is entering or leaving a vertex, or retain an iterator over unfinished children. Losing that state changes postorder-dependent algorithms.
The example traverses a tree and emits a node only on exit. For a general graph, add a visited set and, where needed, separate active-path state. A visited set prevents repeated work; active-path state answers whether an edge returns to the current recursion chain.
```python
children = {"a":["b","c"], "b":["d"], "c":[], "d":[]}
stack = [("a", False)]
postorder = []
while stack:
node, exiting = stack.pop()
if exiting:
postorder.append(node)
else:
stack.append((node, True))
stack.extend((child, False) for child in reversed(children[node]))
assert postorder == ["d","b","c","a"]
print(postorder)
```
Compare the iterative result with a recursive oracle on small generated trees. Test a deep chain to demonstrate why explicit frames avoid the interpreter recursion limit. A tree-only fixture is not evidence of correct cycle detection in an arbitrary directed graph.
[Technical reference](https://docs.python.org/3/library/stdtypes.html#lists)
### 07 dfs
Source-URL: https://ded-sec.space/learn/en/en-31.html
def dfs(graph, start):
seen, order, stack = set(), [], [start]
while stack:
node = stack.pop()
if node in seen: continue
seen.add(node); order.append(node)
stack.extend(reversed(graph.get(node, ())))
return order
assert dfs({'a':['b','c'],'b':['d']}, 'a') == ['a','b','d','c']
### 08 sliding window
Source-URL: https://ded-sec.space/learn/en/en-33.html
def max_window_sum(values, k):
if k <= 0 or k > len(values): raise ValueError('invalid window')
current = sum(values[:k]); best = current
for right in range(k, len(values)):
current += values[right] - values[right-k]
best = max(best, current)
return best
assert max_window_sum([1,3,2,5,1],2) == 7
### Algorithm drills — sorting, dynamic programming and prefix sums
Source-URL: https://ded-sec.space/learn/en/en-34.html
# Algorithm drills — sorting, dynamic programming and prefix sums
## Stable sorting
### Python 3 reference program
~~~python
items = [('Ada', 2),('Grace', 1),('Linus', 2)]
items_sorted = sorted(items, key=lambda item: item[1])
assert items_sorted == [('Grace',1),('Ada',2),('Linus',2)]
~~~
### Core property
Python sorted returns a new list and is stable: records that compare equal under the chosen key keep their **original relative order**. In the reference data, Ada and Linus share priority 2, so both remain in that order after Grace with priority 1.
### Why the key matters
The key function lambda item: item[1] selects the second element of each pair. It does not compare names unless names are explicitly included in a compound key. Adding a secondary key (item[1], item[0]) changes the definition of ties and may deliberately reorder records. Sorting the same list in place with list.sort mutates the original; sorted does not.
### Counterexamples
1. Verify sorted order Grace, Ada, Linus, and confirm items still matches the original sequence.
2. Add a second record with priority 1 and check that these two tie records preserve their insertion order.
3. Sort by name instead and state the different result. The algorithm was not 'wrong'—the comparison contract changed.
4. Add a missing priority value and design an explicit policy for missing keys instead of allowing an IndexError.
5. Mixed incomparable key types (for example, integer and string priorities) may produce TypeError in Python 3; validate or normalize before sorting.
### Complexity and verification
General comparison sorting needs O(n log n) comparisons in the worst case; Python's actual Timsort can exploit existing order. For a leaderboard, decide explicitly how ties must be broken and whether a stable sort is required. Test an empty list, one record, duplicates and original-input preservation.
## Dynamic programming
### Python 3 reference source
~~~python
def fibonacci(n):
if n < 0: raise ValueError('n must be >= 0')
a, b = 0, 1
for _ in range(n): a, b = b, a + b
return a
assert [fibonacci(n) for n in range(7)] == [0,1,1,2,3,5,8]
~~~
### Recurrence and invariant
F(0)=0 and F(1)=1; for n≥2, F(n)=F(n-1)+F(n-2). An exponential naive recursive implementation recalculates the same subproblems. The reference instead stores a=F(i), b=F(i+1) at the beginning of each loop iteration and advances both using parallel assignment. After n iterations, a equals F(n).
### Complexity and numeric cost
The loop makes n additions and keeps only two integer variables, so it is O(n) iterations and O(1) **integer slots**. That is not literally O(1) bits: Fibonacci values increase in size and arbitrary-precision integer arithmetic gets more expensive for very large n. The contract rejects negative n explicitly.
### Experiments
1. For n=0..6, the outputs are [0,1,1,2,3,5,8]; the original assertions cover this sequence.
2. Pass n=-1 and expect ValueError; never silently return the value of F(0) for an invalid request.
3. Compare fibonacci(10) against a memoized recursive version and record function-call counts rather than only elapsed times.
4. Implement a version with a full DP table. It can be useful for reconstructing intermediate states but consumes O(n) slots.
5. For very large n, profile integer size in bits and discuss why the simplified constant-space claim has a computational caveat.
### When this pattern transfers
The deeper pattern is identifying overlapping subproblems, defining a recurrence, selecting a base case and proving transitions. Not every dynamic program can be reduced to two variables; many require tables or reconstruction links. Document the invariant that justifies a memory optimization.
## Prefix sums
### Python 3 reference source
~~~python
values = [4, 6, 2, 5]
prefix = [0]
for number in values: prefix.append(prefix[-1] + number)
def range_sum(left, right):
if not (0 <= left <= right <= len(values)): raise ValueError('range')
return prefix[right] - prefix[left]
assert range_sum(1, 3) == 8
~~~
### Representation
Given values [4,6,2,5], construct prefix [0,4,10,12,17]. By definition prefix[i] is the sum of elements strictly before index i. The zero at the beginning is essential: it lets the same formula handle ranges that start at index zero.
### Query invariant and cost
The sum of the half-open slice values[left:right] equals prefix[right]-prefix[left]. For left=1,right=3 that is 12-4=8, representing 6+2. Building the prefix table takes O(n) time and O(n) extra memory. Each validated range query then costs O(1) time, which is useful when many queries target an unchanged array.
### Boundary experiments
1. range_sum(0,0) returns 0 because an empty interval sums to the additive identity.
2. range_sum(0,len(values)) returns 17, the total.
3. range_sum(1,3) returns 8, and range_sum(3,4) returns 5.
4. Reject left>right, negative left or right beyond the list with ValueError. Do not depend on Python negative indexing accidentally changing semantics.
5. Change values[1] after building prefix. The old table becomes stale; recompute or choose another data structure.
### Beyond static arrays
For frequent updates mixed with queries, consider a Fenwick tree or segment tree and explain the O(log n) trade-off. For overflow-limited languages choose a sum type wide enough for the largest possible accumulated value. Verify boundaries before subtracting prefix indices.
## Text normalization
### Python 3 reference source
~~~python
import unicodedata
composed = "é"
decomposed = "e\u0301"
assert composed != decomposed
assert len(composed) == 1 and len(decomposed) == 2
assert unicodedata.normalize("NFC", composed) == unicodedata.normalize("NFC", decomposed)
~~~
### Mechanism
A visible é can be represented by the single code point U+00E9 or by U+0065 (e) followed by U+0301 (combining acute accent). These strings differ byte-for-byte and have different Python lengths, yet Unicode considers them canonically equivalent. unicodedata.normalize('NFC', text) composes eligible sequences into a common representation.
### Why this does not replace validation
Normalization is an explicit policy decision for comparison and storage. It does not detect homoglyph phishing, perform locale-aware sorting or automatically make every string safe for an identifier. Case folding is a separate operation. Some data must preserve its exact original bytes for signatures or forensic logs.
### Test cases
1. Check that the original composed/decomposed strings differ, then become equal after NFC normalization.
2. Compare their code point counts (1 versus 2) and UTF-8 bytes before and after transformation.
3. Use NFD instead of NFC and observe decomposed output; the canonical equivalence relation should still hold.
4. Normalize a plain ASCII identifier and assert it does not change.
5. Choose a policy for repository filenames and searchable titles; store both the normalized index key and the original display text if exact spelling matters.
### Real use
Apply normalization at a single documented boundary and avoid repeatedly transforming already recorded source material. Test Greek accents and combining marks with synthetic samples. Record Unicode/Python version and the chosen normalization form when reproducibility matters.
## 09 sorting — boundary study
Stable sorting preserves the original order among records whose key compares equal. This allows multi-stage sorting: sort by secondary key first, then by primary key, retaining secondary order within ties.
`sorted()` returns a new list, while `.sort()` mutates the input. Key values need a consistent comparison; mixing incomparable `None` and integers raises a TypeError.
## 12 fibonacci dp — boundary study
Dynamic programming replaces repeated recomputation with remembered results. For Fibonacci, storing only the two most recent values is enough to calculate the next number, reducing auxiliary memory to constant space.
Agree on the indexing convention first: F(0)=0 and F(1)=1. Validate n=0, n=1, n=2 and large n, noting that integer values become very large even when memory remains O(1).
## 13 prefix sums — boundary study
With `prefix[0]=0` and `prefix[i+1]=prefix[i]+values[i]`, the sum of half-open range `[left,right)` is exactly `prefix[right]-prefix[left]`. The extra initial zero removes special handling for a range starting at index zero.
A preprocessing pass is O(n) and each range query is O(1). Validate `left<=right<=n`, including an empty range where both indices are equal.
## 14 safe text normalization — boundary study
Normalization is a deliberate data rule, not an automatic security cure. Unicode NFC can unify equivalent compositions, and `.casefold()` helps case-insensitive comparisons; neither automatically makes look-alike characters identical.
Before normalizing usernames, decide whether accent distinctions matter. Preserve original input for audit, reject unwanted control characters and test visually similar non-identical strings.
### 09 sorting
Source-URL: https://ded-sec.space/learn/en/en-35.html
items = [('Ada', 2),('Grace', 1),('Linus', 2)]
items_sorted = sorted(items, key=lambda item: item[1])
assert items_sorted == [('Grace',1),('Ada',2),('Linus',2)]
### Dijkstra shortest paths
Source-URL: https://ded-sec.space/learn/en/en-36.html
# Dijkstra — nonnegative weights and a lazy priority queue
## Python 3 reference program
~~~python
import heapq
def distances(graph, start):
dist = {start: 0}; heap = [(0, start)]
while heap:
cost, node = heapq.heappop(heap)
if cost != dist[node]: continue
for neighbor, weight in graph.get(node, []):
if weight < 0: raise ValueError('negative weight')
candidate = cost + weight
if candidate < dist.get(neighbor, float('inf')):
dist[neighbor] = candidate
heapq.heappush(heap, (candidate, neighbor))
return dist
assert distances({'a':[('b',3),('c',1)],'c':[('b',1)]},'a')['b'] == 2
~~~
## Invariant and graph format
The graph maps each node to a list of (neighbor, weight) edges. The heap prioritizes the smallest tentative distance. When a popped pair matches dist[node], that cost is the best known distance; old, larger heap entries are discarded as stale. This proof requires **nonnegative edge weights** on paths being explored.
## Read the result precisely
For edges a→b=3, a→c=1 and c→b=1, the shortest distance from a to b is 2, via c. The function returns **distances**, not the actual paths. Unreachable nodes are omitted from the dictionary. heapq uses tuple comparison: nodes with equal priority must be mutually comparable, or a tie-breaker counter is needed.
## Tests beyond the happy path
1. Add a self-loop with weight 0. Since candidate is not smaller than the current distance, it should not cause infinite updates.
2. Introduce a reachable negative edge. The implementation raises ValueError before relaxing it; this is a contract check, not support for negative-cost shortest paths.
3. Add a disconnected node with a negative edge. This implementation may never inspect that edge, so do not claim it validates the entire graph.
4. Make two equally short alternatives and verify the distance remains correct, without assuming an automatic deterministic predecessor.
5. For a missing start key, dist initially contains start:0. Record this behavior when the graph represents isolated vertices implicitly.
## Further engineering
To reconstruct paths, store predecessor on each successful relaxation. For graphs with negative weights, choose a different algorithm (such as Bellman–Ford with appropriate cycle handling). With a binary heap, complexity is commonly O((V+E)log V) for this lazy approach, with heap storage possibly proportional to relaxed edges.
## 10 dijkstra — boundary study
Dijkstra settles the lowest known tentative distance first. The priority queue may contain obsolete entries; `if cost != dist[node]: continue` discards them. Negative weights invalidate the greedy correctness argument.
Unreachable nodes remain absent from the returned distance map. Test zero-weight edges and a cheaper route that is discovered only after an initially expensive path.
## Stale priority-queue entries in Dijkstra
Without a decrease-key operation, a common implementation pushes a new candidate whenever a shorter route is found. Old heap entries remain present. When popped, compare the candidate distance with the current best distance and skip stale entries. Otherwise the same vertex may expand repeatedly and the performance argument no longer matches the intended implementation.
Dijkstra requires nonnegative edge weights. Checking only the edges encountered from one chosen source may miss a negative edge elsewhere, so define whether validation covers the supplied graph or only the reachable subgraph. The fixture uses integer weights and verifies a later improvement over an earlier expensive route.
```python
import heapq
graph = {"a":[("b",9),("c",1)], "b":[], "c":[("b",2)]}
assert all(weight >= 0 for edges in graph.values() for _,weight in edges)
best = {"a":0}; heap = [(0,"a")]
while heap:
cost,node = heapq.heappop(heap)
if cost != best[node]: continue
for nxt,weight in graph[node]:
candidate = cost + weight
if candidate < best.get(nxt,float("inf")):
best[nxt] = candidate
heapq.heappush(heap,(candidate,nxt))
assert best["b"] == 3
print(best)
```
Test zero-weight edges and disconnected vertices. If heap entries contain non-orderable node objects, add a monotonic tie-breaker instead of relying on comparisons between node objects. Avoid floating NaN weights, which can break the ordering assumptions.
[Technical reference](https://docs.python.org/3/library/heapq.html)
### 10 dijkstra
Source-URL: https://ded-sec.space/learn/en/en-37.html
import heapq
def distances(graph, start):
dist = {start: 0}; heap = [(0, start)]
while heap:
cost, node = heapq.heappop(heap)
if cost != dist[node]: continue
for neighbor, weight in graph.get(node, []):
if weight < 0: raise ValueError('negative weight')
candidate = cost + weight
if candidate < dist.get(neighbor, float('inf')):
dist[neighbor] = candidate
heapq.heappush(heap, (candidate, neighbor))
return dist
assert distances({'a':[('b',3),('c',1)],'c':[('b',1)]},'a')['b'] == 2
### Topological sort
Source-URL: https://ded-sec.space/learn/en/en-38.html
# Topological ordering — dependencies before dependents
## Python 3 reference source
~~~python
from collections import deque
def topological(graph):
nodes = set(graph)
for children in graph.values(): nodes.update(children)
indegree = {node: 0 for node in nodes}
for children in graph.values():
for child in children: indegree[child] += 1
queue = deque(sorted(node for node in nodes if indegree[node] == 0))
order = []
while queue:
node = queue.popleft(); order.append(node)
for child in graph.get(node, []):
indegree[child] -= 1
if indegree[child] == 0: queue.append(child)
if len(order) != len(nodes): raise ValueError('cycle')
return order
assert topological({'a':['b'], 'b':['c']}) == ['a','b','c']
~~~
## Graph contract and algorithm
A directed edge a→b means a must appear before b in the output. Kahn's algorithm first calculates every vertex's indegree, including nodes that appear only as children. Vertices with zero indegree enter a queue; removing one allows its outgoing neighbors to lose one incoming dependency. If not all vertices can be removed, a cycle exists and **no** topological order satisfies every edge.
## Important limitations
The reference initializes the queue from sorted zero-indegree nodes but later appends children in adjacency-list order. It does not promise a globally lexicographically minimal ordering. Its initial sorting also assumes node labels are comparable. Given a directed acyclic graph, a valid result need not be unique.
## Boundary tests
1. For a→b→c the only permitted order is [a,b,c].
2. Add c→a and expect ValueError('cycle'); a cycle must not be silently presented as a partial successful ordering.
3. Add an isolated vertex z. It must still appear once in the result if present as a graph key.
4. For independent tasks a and b leading to c, either a,b,c or b,a,c is valid if edge constraints hold.
5. Duplicate edges a→b are counted twice by indegree and both decremented during processing. Test whether that behavior matches your intended graph representation.
## Apply it
Use ordering to plan offline build steps or migrations where a dependency must finish before the next task starts. Run a verification loop over every edge and assert position[parent] < position[child]. A topological order alone does not execute jobs or guarantee successful completion.
## 11 topological sort — boundary study
Topological order is possible only for a directed acyclic graph (DAG). A queue receives vertices with in-degree zero; removing one reduces the in-degree of its successors. If fewer vertices are output than exist, a cycle prevents completion.
A graph may have several valid topological orders; do not hardcode a single sequence for independent nodes. Verify each dependency appears before its dependent node.
## Diagnose a dependency cycle instead of returning a partial order
Kahn's algorithm repeatedly removes vertices of indegree zero. If the queue empties before every vertex is emitted, the remaining subgraph contains a cycle. Returning the emitted prefix as if it were a complete valid build order hides an unsatisfied dependency.
The leftover set can include vertices blocked behind a cycle as well as vertices directly on the cycle. Therefore it is useful diagnostic evidence but not necessarily the exact cycle. An additional DFS or strongly connected component analysis is needed to provide a precise cycle witness.
```python
from collections import deque
graph = {"a":["b"], "b":["a","c"], "c":[], "free":[]}
indegree = dict.fromkeys(graph,0)
for edges in graph.values():
for node in edges: indegree[node] += 1
queue = deque(n for n,d in indegree.items() if d == 0); order=[]
while queue:
node=queue.popleft(); order.append(node)
for nxt in graph[node]:
indegree[nxt] -= 1
if indegree[nxt] == 0: queue.append(nxt)
blocked = set(graph) - set(order)
assert order == ["free"] and blocked == {"a","b","c"}
print("cycle blocks",sorted(blocked))
```
Add a self-dependency and a valid disconnected DAG. Explain whether parallel ready tasks are ordered lexically or by original input order. Never label every blocked vertex a cycle member without producing the necessary graph evidence.
[Technical reference](https://docs.python.org/3/library/graphlib.html)
### 11 topological sort
Source-URL: https://ded-sec.space/learn/en/en-39.html
from collections import deque
def topological(graph):
nodes = set(graph)
for children in graph.values(): nodes.update(children)
indegree = {node: 0 for node in nodes}
for children in graph.values():
for child in children: indegree[child] += 1
queue = deque(sorted(node for node in nodes if indegree[node] == 0))
order = []
while queue:
node = queue.popleft(); order.append(node)
for child in graph.get(node, []):
indegree[child] -= 1
if indegree[child] == 0: queue.append(child)
if len(order) != len(nodes): raise ValueError('cycle')
return order
assert topological({'a':['b'], 'b':['c']}) == ['a','b','c']
### 12 fibonacci dp
Source-URL: https://ded-sec.space/learn/en/en-41.html
def fibonacci(n):
if n < 0: raise ValueError('n must be >= 0')
a, b = 0, 1
for _ in range(n): a, b = b, a + b
return a
assert [fibonacci(n) for n in range(7)] == [0,1,1,2,3,5,8]
### 13 prefix sums
Source-URL: https://ded-sec.space/learn/en/en-43.html
values = [4, 6, 2, 5]
prefix = [0]
for number in values: prefix.append(prefix[-1] + number)
def range_sum(left, right):
if not (0 <= left <= right <= len(values)): raise ValueError('range')
return prefix[right] - prefix[left]
assert range_sum(1, 3) == 8
### 14 safe text normalization
Source-URL: https://ded-sec.space/learn/en/en-45.html
import unicodedata
left = '\u00e9'.encode().decode('unicode_escape') # demonstration string (see simpler right below)
composed = 'é'
decomposed = 'e\u0301'
assert unicodedata.normalize('NFC', composed) == unicodedata.normalize('NFC', decomposed)
### Batch processing
Source-URL: https://ded-sec.space/learn/en/en-46.html
# Chunked batch processing — what this script does not rate-limit
## Python 3 reference source
~~~python
def chunks(values, size):
if size <= 0: raise ValueError('size')
for start in range(0, len(values), size):
yield values[start:start+size]
assert list(chunks(list(range(5)),2)) == [[0,1],[2,3],[4]]
~~~
## Explicit distinction
The supplied Python generator partitions a preexisting list into slices with maximum length size. It **does not** wait between network calls, enforce requests per second, retry errors or coordinate multiple workers. Naming it a 'rate limiter' would mislead maintainers: chunking controls batch size, while rate limiting controls events over time.
## Generator behavior
chunks(values, size) yields each successive slice. It raises ValueError if size<=0. With five values and size=2 the output is [[0,1],[2,3],[4]]. Iteration is lazy, but the example list(range(5)) is already materialized and each values[start:start+size] creates a copy containing up to size references.
## Failure and performance tests
1. Verify empty input produces no batches while a valid positive size is still required.
2. Request size=1 and observe one element per yield. Request size>len(values) and observe exactly one batch.
3. Test zero and negative batch size and expect ValueError rather than an infinite loop.
4. Attach a consumer that raises on batch two. Explain how an interrupted generator differs from completed delivery; record progress for recovery.
5. With huge data, replace list slicing with a streaming iterator that accumulates at most size values instead of materializing the full input.
## True rate limiting is a separate layer
For an API allowing R requests per window, track a monotonic-clock budget or token bucket, respond to Retry-After where applicable, and use bounded concurrency. A sleep after every batch is not a complete solution, especially with parallel workers. Ensure idempotency before retries and log success/failure per batch.
## 15 rate limited batch — boundary study
Rate limiting is distinct from concurrency control. A semaphore caps simultaneous requests, while a rate budget caps requests per time window. A service may enforce both independently.
For HTTP 429, inspect `Retry-After`, cap retries and introduce jitter to prevent synchronized clients hammering the service. Never retry invalid credentials indefinitely.
### 15 rate limited batch
Source-URL: https://ded-sec.space/learn/en/en-47.html
def chunks(values, size):
if size <= 0: raise ValueError('size')
for start in range(0, len(values), size):
yield values[start:start+size]
assert list(chunks(list(range(5)),2)) == [[0,1],[2,3],[4]]
### Debugging casebook — Python and JavaScript pitfalls
Source-URL: https://ded-sec.space/learn/en/en-48.html
# Debugging casebook — Python and JavaScript pitfalls
## Python: mutable default argument
### Broken example — DO NOT USE
```text
def add(item, items=[]):
items.append(item)
return items
```
### Fixed example
```text
def add(item, items=None):
if items is None:
items = []
items.append(item)
return items
```
### Why it fails and the repair works
A default list is created once and shared across calls.
Check the surrounding imports, function signature and environment: fragments may require integration before execution.
### Root cause and precise failure
A list used as a default is allocated when the function is defined, so separate no-argument calls share the same list. The fixed function allocates fresh storage unless a caller explicitly passes a collection.
### Repeatable regression exercise
Call the broken function with 'Ada' and then 'Grace'. Show that the second result unexpectedly includes both. Call the fixed function twice and require independent outputs, then supply a shared list explicitly to demonstrate intentional sharing.
**Acceptance rule:** preserve the original failure as a test, verify the corrected version on both the ordinary case and the boundary case, and avoid modifying real user data.
## Python: missing file encoding
### Broken example — DO NOT USE
```text
text = open("notes.txt").read()
```
### Fixed example
```text
from pathlib import Path
text = Path("notes.txt").read_text(encoding="utf-8")
```
### Why it fails and the repair works
Use explicit UTF-8 to handle Greek filenames/content consistently.
### Root cause and precise failure
Text files contain bytes, not an intrinsic Python string encoding. Choosing a mismatched codec corrupts or rejects characters; suppressing Unicode errors with ignore irreversibly drops information.
### Repeatable regression exercise
Write 'Καλημέρα' to a disposable UTF-8 file, reopen with encoding='utf-8' and compare bytes with code-point counts. Deliberately decode an invalid byte fixture and inspect UnicodeDecodeError without changing the original file.
## Python: swallowed exceptions
### Broken example — DO NOT USE
```text
try:
work()
except Exception:
pass
```
### Fixed example
```text
try:
work()
except ValueError as exc:
print(f"Invalid value: {exc}")
```
### Why it fails and the repair works
Catch only anticipated errors and report them.
### Root cause and precise failure
A blanket except that returns an empty result can make a failed operation look successful. Error recovery belongs at a layer that knows whether retry, user explanation or abort is appropriate.
### Repeatable regression exercise
Trigger ValueError in a parser and FileNotFoundError at the file-reading boundary. Confirm only expected errors are translated into user-facing messages; an unexpected programming error must remain visible in tests.
## JavaScript: equality confusion
### Broken example — DO NOT USE
```text
if (count = 3) console.log("three");
```
### Fixed example
```text
if (count === 3) console.log("three");
```
### Why it fails and the repair works
Assignment is not comparison; prefer strict equality.
### Root cause and precise failure
Loose equality performs type conversion: the string '0' can compare equal to the numeric zero. Strict equality preserves the distinction, but runtime input conversion still needs its own validation.
### Repeatable regression exercise
Compare the pairs ('0',0), (false,0) and (null,undefined) with == and ===. Refactor the application to convert the intended input type before comparison instead of depending on coercion.
### Debugging UI events, parameterized SQL and shell paths
Source-URL: https://ded-sec.space/learn/en/en-52.html
# Debugging UI events, parameterized SQL and shell paths
## JavaScript: lost event listener
### Broken example — DO NOT USE
```text
container.innerHTML = ``;
// old save button listener was attached before innerHTML changed
```
### Fixed example
```text
container.innerHTML = ``;
container.querySelector("#save").addEventListener("click", save);
```
### Why it fails and the repair works
Replacing markup removes listeners on replaced nodes.
### Root cause and precise failure
An event listener attaches to a particular DOM node. Replacing a parent through innerHTML creates new nodes whose appearance may be identical but whose old listeners are gone.
### Repeatable regression exercise
Attach a listener to a button in a disposable page, replace its parent markup, and compare click behavior. Repair using a stable ancestor with delegated events or explicit reattachment after rendering.
## SQL: unsafe string building
### Broken example — DO NOT USE
```text
query = "SELECT * FROM users WHERE name = '" + user + "'"
```
### Fixed example
```text
cursor.execute("SELECT * FROM users WHERE name = ?", (user,))
```
### Why it fails and the repair works
Parameter binding stops user text being treated as SQL commands.
### Executable SQLite exercise
SQL assembled from untrusted text can change query meaning. Binding parameters keeps data values separate from SQL syntax. Use an in-memory database so the exercise never touches production data.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE people (name TEXT PRIMARY KEY)")
db.executemany("INSERT INTO people VALUES (?)", [("Ada",), ("Grace",)])
def find(name):
return db.execute("SELECT name FROM people WHERE name = ?", (name,)).fetchall()
assert find("Ada") == [("Ada",)]
assert find("Ada'") == []
assert db.execute("SELECT COUNT(*) FROM people").fetchone() == (2,)
db.close()
~~~
Save as `query_lab.py` and run `python3 query_lab.py`. The quote inside the second search must be handled as data, not as part of the SQL statement. The trailing comma in `(name,)` creates a one-item tuple. SQLite uses `?` placeholders; other drivers may use different syntax. Parameter binding does not work for identifiers such as table names or sort directions: choose those from a fixed allowlist.
## Bash: unquoted path
### Broken example — DO NOT USE
```text
cd $PROJECT_ROOT
```
### Fixed example
```text
cd -- "$PROJECT_ROOT"
```
### Why it fails and the repair works
Quoting protects paths containing spaces or wildcard characters.
### Reproducible Bash path test
Without quotes, parameter expansion can undergo word splitting and wildcard expansion. A directory containing spaces is passed as several arguments. Quoting preserves a single argument; `--` stops option parsing in commands that support it.
~~~bash
#!/usr/bin/env bash
set -euo pipefail
tmp=$(mktemp -d)
PROJECT_ROOT="$tmp/project alpha"
mkdir -- "$PROJECT_ROOT"
trap 'rmdir -- "$PROJECT_ROOT"; rmdir -- "$tmp"' EXIT
set -- $PROJECT_ROOT
[[ $# -gt 1 ]] # The broken expansion split into words.
set -- "$PROJECT_ROOT"
[[ $# -eq 1 ]] # Correct: one argument.
cd -- "$PROJECT_ROOT"
[[ $PWD == "$PROJECT_ROOT" ]]
printf 'Quoted path works: %s\n' "$PWD"
~~~
Run `bash path_lab.sh`. Only the argument demonstration is intentionally unquoted; the filesystem operations use the repaired form. For passing all script arguments onward, use `"$@"`, not `"$*"`. Quotes do not validate a path or make destructive operations safe; validate target directories independently.
### Failure handling and memory ownership in systems code
Source-URL: https://ded-sec.space/learn/en/en-55.html
# Failure handling and memory ownership in systems code
## Bash: no failure handling
### Broken example — DO NOT USE
```text
cp "$src" "$dst"
echo "Backup complete"
```
### Fixed example
```text
if cp -- "$src" "$dst"; then
echo "Backup complete"
else
echo "Backup failed" >&2
exit 1
fi
```
### Why it fails and the repair works
Only report success when the operation succeeds.
### Exercise: inject an I/O failure
The last command in a script determines its final exit status unless failures are handled. An unconditional success message can therefore conceal a failed copy. Test the actual operation and return nonzero when it fails.
~~~bash
#!/usr/bin/env bash
set -euo pipefail
tmp=$(mktemp -d)
src="$tmp/source.txt"
dst="$tmp/backup.txt"
trap 'rm -f -- "$src" "$dst"; rmdir -- "$tmp"' EXIT
printf 'verified content\n' > "$src"
backup() {
if cp -- "$1" "$2"; then
printf 'Backup complete\n'
else
printf 'Backup failed\n' >&2
return 1
fi
}
backup "$src" "$dst"
cmp -- "$src" "$dst"
if backup "$tmp/missing.txt" "$dst"; then
exit 1
fi
cmp -- "$src" "$dst"
printf 'Expected failure detected; valid backup preserved\n'
~~~
Run `bash backup_lab.sh`. The deliberately missing source must fail while the earlier destination remains unchanged. `set -e` has conditional and pipeline exceptions; explicit status checks remain necessary. For pipelines use `pipefail`. For critical backups, write a temporary destination, verify it, and rename it on the same filesystem only after success.
## C: unchecked input buffer
### Broken example — DO NOT USE
```text
char name[16];
scanf("%s", name);
```
### Fixed example
```text
char name[16];
if (fgets(name, sizeof name, stdin) == NULL) return 1;
```
### Why it fails and the repair works
Use bounded reads and check the return value.
### Complete C11 input-boundary lab
An unrestricted `scanf("%s", name)` may write past the array. `fgets` bounds the read and always terminates a successful string, but an overlong line can leave unread input for the next prompt. Reject the oversized case explicitly.
~~~c
#include
#include
int main(void) {
char name[16];
if (!fgets(name, sizeof name, stdin)) return 1;
size_t n = strcspn(name, "\n");
if (name[n] == '\n') {
name[n] = '\0';
} else if (n == sizeof name - 1) {
fputs("Input too long\n", stderr);
return 2;
}
printf("Hello, %s\n", name);
return 0;
}
~~~
Compile: `cc -std=c11 -Wall -Wextra -pedantic input.c -o input`. `printf 'Ada\n' | ./input` should succeed; `printf 'abcdefghijklmnop\n' | ./input` must return 2. Empty stdin returns 1. The exact maximum accepted length is 14 characters when newline is present: one byte is reserved for NUL. This deliberately conservative version rejects a 15-character line without newline; adapt EOF policy to your protocol. Use sanitizers to catch other memory defects, not as a substitute for bounds checks.
## C++: ownership of resources
### Broken example — DO NOT USE
```text
int* p = new int(7);
// forgotten delete
```
### Fixed example
```text
auto p = std::make_unique(7);
// include
```
### Why it fails and the repair works
RAII releases memory when ownership goes out of scope.
### Complete ownership lab (C++17)
The critical question is who releases the resource on every exit path, including exceptions. A unique_ptr expresses exclusive ownership; move transfers that ownership without duplicating it.
~~~cpp
#include
#include
#include
int main() {
auto first = std::make_unique(7);
assert(*first == 7);
auto second = std::move(first);
assert(!first);
assert(second && *second == 7);
second.reset();
assert(!second);
}
~~~
Compile: `c++ -std=c++17 -Wall -Wextra -pedantic ownership.cpp -o ownership && ./ownership`. For a negative compile-time test, try copying second into another unique_ptr: the compiler must reject the copy. Prefer stack values or vector when dynamic ownership is unnecessary; shared_ptr is appropriate only when multiple owners truly share lifetime.
### Go: ignored error
Source-URL: https://ded-sec.space/learn/en/en-58.html
# Go: ignored error
## Broken example — DO NOT USE
```text
data, _ := os.ReadFile("notes.txt")
fmt.Println(string(data))
```
## Fixed example
```text
data, err := os.ReadFile("notes.txt")
if err != nil { return err }
fmt.Println(string(data))
```
## Why it fails and the repair works
Never silently discard file I/O failures; this is a fragment within a function returning error.
## Complete Go file-error lab
Ignoring the second return value from `os.ReadFile` converts an I/O failure into an empty byte slice. The caller may then mistake failure for a legitimate empty file. Wrap errors with `%w` to retain the original cause for `errors.Is`.
~~~go
package main
import ("errors"; "fmt"; "os")
func read(path string) ([]byte, error) {
data, err := os.ReadFile(path)
if err != nil { return nil, fmt.Errorf("read %q: %w", path, err) }
return data, nil
}
func main() {
f, err := os.CreateTemp("", "readlab-*")
if err != nil { panic(err) }
name := f.Name()
defer os.Remove(name)
if _, err := f.WriteString("hello"); err != nil { panic(err) }
if err := f.Close(); err != nil { panic(err) }
data, err := read(name)
if err != nil || string(data) != "hello" { panic("read failed") }
_, err = read(name + ".missing")
if !errors.Is(err, os.ErrNotExist) { panic("missing file not detected") }
fmt.Println("PASS")
}
~~~
Save as `readlab.go` and run `go run readlab.go`. The program creates a disposable file, verifies its contents, and checks that a missing file remains distinguishable using `errors.Is(err, os.ErrNotExist)`. An empty existing file would return a zero-length slice with a **nil** error, which is different. Avoid swallowing errors or logging them and continuing as if the operation succeeded. For production code, prefer returning errors to the boundary that can decide whether to retry, show a message, or abort.
### Debugging casebook — Rust, PHP, TypeScript and Python
Source-URL: https://ded-sec.space/learn/en/en-59.html
# Debugging casebook — Rust, PHP, TypeScript and Python
## Rust: failed parse
### Broken example — DO NOT USE
```text
let age: i32 = text.parse().unwrap();
```
### Fixed example
```text
let age: i32 = match text.parse() {
Ok(n) => n,
Err(_) => { eprintln!("invalid number"); return; }
};
```
### Why it fails and the repair works
Avoid panicking when user input is invalid; this is a fragment inside main().
### Parsing is validation, not an assertion
Calling `unwrap()` on a user-supplied string panics when parsing fails. Return a `Result` instead, and separate syntax errors from domain constraints. Parsing as `u8` also rejects negative values and values greater than 255 before the business rule runs.
~~~rust
fn parse_age(text: &str) -> Result {
let n: u8 = text.trim().parse()
.map_err(|_| "expected an unsigned integer".to_string())?;
if n > 120 { return Err("age outside accepted range".into()); }
Ok(n)
}
fn main() {
assert_eq!(parse_age("23"), Ok(23));
assert!(parse_age("abc").is_err());
assert!(parse_age("-1").is_err());
assert!(parse_age("121").is_err());
println!("PASS");
}
~~~
Save as `age.rs` and run `rustc age.rs -o age && ./age` on a system with Rust installed. The assertions cover ordinary input, nonnumeric text, negative input and an out-of-range but syntactically valid number. If Rust is not installed on your machine, record the execution check as pending rather than claiming it passed.
**Integration:** callers should match on `Ok(age)` and `Err(message)` to choose a user-facing response. Do not use `unwrap_or(0)` unless zero is a genuinely valid fallback; it can conceal bad input.
## PHP: HTML output
### Broken example — DO NOT USE
```text
echo $_GET["name"];
```
### Fixed example
```text
echo htmlspecialchars($_GET["name"] ?? "", ENT_QUOTES, "UTF-8");
```
### Why it fails and the repair works
Escape untrusted text before adding it to HTML.
### Context-aware output encoding (PHP 8)
A browser parses HTML markup rather than displaying it as literal text. Echoing untrusted strings directly can turn user data into elements or attributes. Escape at the output boundary for the **specific** context in which data is inserted.
~~~php
& "hello"';
$expected = '<strong>& "hello"</strong>';
if (escapeHtml($sample) !== $expected) {
throw new RuntimeException('escaping regression');
}
echo escapeHtml($sample), PHP_EOL;
~~~
Run `php html_lab.php`. The assertion checks angle brackets, an ampersand and double quotes. In a web handler, first verify `is_string($_GET['name'] ?? '')` because query parameters can arrive as arrays; then apply `escapeHtml` when rendering HTML text or a quoted HTML attribute. `ENT_QUOTES` covers both quote styles; `ENT_SUBSTITUTE` handles invalid byte sequences. UTF-8 must also match the response's declared charset.
**Important limit:** HTML escaping is not a universal sanitizer. JavaScript string literals, URLs, CSS and SQL require their own context-specific handling. Prefer DOM `textContent` for client-side text and parameter binding for SQL.
## TypeScript: any bypass
### Broken example — DO NOT USE
```text
function double(x: any) { return x * 2; }
```
### Fixed example
```text
function double(x: number): number { return x * 2; }
```
### Why it fails and the repair works
Keep meaningful annotations so the compiler can catch errors.
## Python: path traversal
### Broken example — DO NOT USE
```text
target = base / user_input
target.write_text("data")
```
### Fixed example
```text
target = (base / user_input).resolve()
if not target.is_relative_to(base.resolve()):
raise ValueError("outside permitted folder")
target.write_text("data", encoding="utf-8")
```
### Why it fails and the repair works
Validate that user-derived paths remain inside an approved workspace (Python 3.9+).
### Data structures and memory
Source-URL: https://ded-sec.space/learn/en/en-63.html
# Data structures — a bounded least-recently-used cache
## Concrete task
An offline knowledge viewer wants to retain its two most recently used lessons. Looking up a label in a list requires O(n) scanning; a hash map gives expected O(1) lookup but does not automatically track which entry was read most recently. Python OrderedDict supports key lookup and explicit recency updates. Define a fixed, positive integer capacity and evict the least recently used item when a new key exceeds it.
## Runnable Python 3 lab
Save as cache_lab.py and run python3 cache_lab.py. All state stays in memory and assertions check eviction, misses and the invalid capacity boundary.
~~~python
from collections import OrderedDict
MISSING = object()
class Cache:
def __init__(self, capacity):
if type(capacity) is not int or capacity < 1:
raise ValueError('positive integer capacity required')
self.capacity = capacity
self.items = OrderedDict()
def get(self, key):
if key not in self.items:
return MISSING
self.items.move_to_end(key)
return self.items[key]
def put(self, key, value):
self.items[key] = value
self.items.move_to_end(key)
if len(self.items) > self.capacity:
return self.items.popitem(last=False)
return None
c = Cache(2)
assert c.get('a') is MISSING
assert c.put('a', None) is None
assert c.get('a') is None
c.put('b', 2)
assert c.get('a') is None
assert c.put('c', 3) == ('b', 2)
assert list(c.items) == ['a', 'c']
try:
Cache(0)
except ValueError:
pass
else:
raise AssertionError('zero capacity was accepted')
print('PASS cache: eviction, missing sentinel, recency')
~~~
## Memory and semantics
Both get and put are expected O(1) and storage is O(capacity). Merely using a normal insertion-ordered dict would not make reads update recency. The unique MISSING sentinel is essential because None is a legitimate stored value: returning None for an absent key would make the two states indistinguishable. The implementation does not synchronize simultaneous writers, so concurrent callers require a lock or a separate ownership boundary.
## Bounded experiments and diagnostics
1. Set capacity to one and insert three keys. Predict which survives; then update an existing key and verify it becomes most recent.
2. Compare equality and identity for two distinct lists. Discuss why mapping keys must be hashable while stored values may be mutable.
3. Replace OrderedDict with a list of pairs, inspect worst-case key lookup, and explain the memory/time tradeoff for 10,000 keys.
4. Test Cache(0), Cache(True) and a non-integer capacity. Explain why exact type checks reject booleans even though bool subclasses int in Python.
**Evidence:** printed PASS, observed eviction order, a missing-versus-None test and a stated maximum memory budget for an offline cache.
### Algorithm complexity
Source-URL: https://ded-sec.space/learn/en/en-64.html
# Algorithmic complexity — compare operations before timings
## Contract and input size
A local search system must identify which requested labels exist in an index. Define n as the number of requests and m as the number of indexed labels. A nested scan may make n*m equality checks when every request misses. An alternative builds a hash set from the indexed labels in expected O(m) time and O(m) space, then performs expected O(1) lookups for each request. This extra allocation may not pay off for very small inputs.
## Executable Python 3 comparison
Save as complexity_lab.py and run python3 complexity_lab.py. The nested version reports its exact comparison count; both variants preserve repeated requested labels.
~~~python
def nested_lookup(left, right):
found, comparisons = [], 0
for item in left:
for candidate in right:
comparisons += 1
if item == candidate:
found.append(item)
break
return found, comparisons
def indexed_lookup(left, right):
index = set(right)
return [item for item in left if item in index]
left = ['a', 'b', 'z', 'a']
right = ['b', 'a']
found, steps = nested_lookup(left, right)
assert found == ['a', 'b', 'a'] and steps == 7
assert indexed_lookup(left, right) == found
assert nested_lookup([], right) == ([], 0)
try:
indexed_lookup([[1]], [[1]])
except TypeError:
pass
else:
raise AssertionError('unhashable values were accepted')
print('PASS complexity: equivalent membership, measured comparisons')
~~~
## Interpreting the result
The fixture performs seven nested comparisons, including a full unsuccessful search for z. This does not mean seven comparisons always take the same duration on different hardware. Hash sets require hashable values and equality/hash compatibility; nested Python lists cannot serve as set elements. A pathological hash function can degrade expected performance, so the expected O(1) average membership cost is not an unconditional worst-case bound.
## Exercises and diagnostic experiments
1. Run with n=100, 1000 and 5000 unmatched requests. Keep m fixed, then set m=n. Explain why comparison counts change.
2. Put the most frequent request at the front and back of the right-hand list. Count best and worst ordering effects.
3. Compare this output with a set intersection; explain why deleting repeated requests changes the program contract.
4. Use time.perf_counter for multiple warmed-up runs and log Python version, hardware and input shapes. State memory cost separately from elapsed time.
**Evidence:** PASS output, a small table of n, m and comparison counts, and a failure demonstration for unhashable input.
### Integers floating point and precision
Source-URL: https://ded-sec.space/learn/en/en-65.html
# Numeric precision — exact totals and explicit rounding
## Acceptance contract
A local payment export accepts nonnegative decimal strings with one to three fractional digits. It displays a total with exactly two fractional digits, using ROUND_HALF_EVEN and rounding once after the sum, not once on every line. Values such as NaN, Infinity, negative amounts, exponent notation and empty tokens are invalid. The input schema and rounding step must be documented before calculating financial figures.
## Executable Python 3 investigation
Save the following as precision_lab.py and run python3 precision_lab.py. The standard decimal library works on original decimal text rather than intermediate floating-point values. Assertions compare line-by-line rounding with rounding the entire total.
~~~python
from decimal import Decimal, InvalidOperation, ROUND_HALF_EVEN, ROUND_HALF_UP
import re
CENT = Decimal('0.01')
def rounded_total(values):
total = Decimal(0)
for token in values:
if not isinstance(token, str) or not re.fullmatch(r'[0-9]+\.[0-9]{1,3}', token):
raise ValueError('unsupported monetary input')
total += Decimal(token)
try:
return total.quantize(CENT, rounding=ROUND_HALF_EVEN)
except InvalidOperation as error:
raise ValueError('amount outside active decimal precision') from error
assert rounded_total(['0.10', '0.20']) == Decimal('0.30')
assert rounded_total(['0.015'] * 3) == Decimal('0.04')
assert sum((Decimal('0.015').quantize(CENT, rounding=ROUND_HALF_EVEN) for _ in range(3)), Decimal(0)) == Decimal('0.06')
assert Decimal('1.005').quantize(CENT, rounding=ROUND_HALF_UP) == Decimal('1.01')
for bad in ('NaN', 'Infinity', '-2.00', '2e3', ''):
try: rounded_total([bad])
except ValueError: pass
else: raise AssertionError('bad token accepted: ' + bad)
print('PASS precision: exact sum, rounding order, bad values')
~~~
## Explain the disagreement
A binary float cannot represent every decimal fraction exactly: in Python, 0.1 + 0.2 is not exactly equal to 0.3. Decimal constructed from a string preserves the stated decimal value; Decimal constructed from a float inherits that float's approximation. Three values of 0.015 add to 0.045. Under ROUND_HALF_EVEN, rounding the sum gives 0.04, while rounding each input to 0.02 first produces 0.06. Which order is legally appropriate depends on the actual invoice or tax specification; no single policy fits every domain. ROUND_HALF_UP produces 1.01 for 1.005, whereas HALF_EVEN produces 1.00.
## Bounded exercises and diagnostics
1. Compare Decimal('0.1') and Decimal(0.1). Explain why the latter imports an approximate binary representation.
2. Test 0.00, 000.001, a missing token and a list with no amounts. State the explicit expected output or rejection for each.
3. Change the rounding rule to HALF_UP and record examples where it changes the final number. Document the policy rather than silently choosing one.
4. Pass a very long decimal number, catch precision-limit errors and record the active decimal context instead of truncating unnoticed.
**Evidence:** PASS output, a line-rounding versus total-rounding table, all five invalid fixtures, and the exact input validation contract.
## Further engineering detail
Reconciliation requires specifying where rounding happens. Summing rounded line items and rounding a sum of exact items can disagree without either arithmetic implementation being defective. Preserve original decimal inputs and the selected rule so a report can explain the difference rather than hiding it with display formatting.
[Decimal rounding policies and reconciliation](https://ded-sec.space/learn/en/fieldnotes-en-42.html)
### Unicode normalization and text
Source-URL: https://ded-sec.space/learn/en/en-66.html
# Unicode text — searchable keys and preserved originals
## Scenario
A bilingual offline knowledge library stores original Greek and English titles for display and creates a separate search key for case-insensitive matching. Visually identical words can contain distinct code-point sequences. A normalized search key may collide across distinct original titles, so it is unsuitable as an irreversible replacement for stored text or as a unique database identifier.
## Executable Python 3 experiment
Save as unicode_lab.py and run python3 unicode_lab.py. The tests cover precomposed and decomposed accents, Greek sigma variants, Turkish dotted I, an emoji joined by U+200D and an invalid UTF-8 byte boundary.
~~~python
import unicodedata as ud
def search_key(text):
if not isinstance(text, str):
raise TypeError('expected Unicode text')
return ud.normalize('NFC', ud.normalize('NFC', text).casefold())
assert search_key('café') == search_key('cafe\u0301')
assert search_key('Σ') == search_key('ς')
assert search_key('İ') != search_key('i')
assert len('👩\u200d💻') == 3 # three code points, one displayed emoji
raw = 'έ'.encode('utf-8')
try:
raw[:1].decode('utf-8')
except UnicodeDecodeError:
pass
else:
raise AssertionError('partial UTF-8 decoded unexpectedly')
assert ud.normalize('NFD', 'έ') != 'έ'
print('PASS unicode: NFC, casefold, UTF-8 boundary')
~~~
## Interpreting the experiment
The visible letter é may be a single precomposed code point, or Latin e plus a combining accent. NFC maps canonically equivalent sequences to a common form; NFD decomposes many accented letters. The casefold operation is useful for comparison but is not reversible: both capital Greek sigma and final sigma can fold to the same value. Turkish dotted capital İ is not equivalent to plain Latin i under ordinary casefolding. Python len measures Unicode code points, not human-perceived grapheme clusters. The woman-technologist emoji consists of three code points but usually appears as one grapheme. UTF-8 encoding uses variable-length byte sequences, so arbitrary byte cuts can create invalid text.
## Bounded exercises
1. Print repr and Unicode code-point names for café and its decomposed equivalent. Preserve both original values and compare their normalized keys.
2. Insert titles Σ and ς into a test search index. A collision must return both original titles rather than silently overwrite one.
3. Compare a Greek accented title and a mixed-script lookalike. Normalization is not transliteration or a defense against confusable identifiers.
4. Cut a Greek UTF-8 sequence after the first byte and capture UnicodeDecodeError. Explain why code-point slicing is still not the same as grapheme-aware display truncation.
**Evidence:** PASS, code-point listings, one deliberate search-key collision and a demonstrated UTF-8 decode error.
## Further engineering detail
Encoding boundaries matter before normalization begins. A byte chunk can end halfway through a UTF-8 character, so decode incrementally and flush the decoder at the real end of input. Only then apply text normalization and record parsing; replacement characters introduced too early can alter identifiers and invalidate later comparisons.
[Incremental UTF-8 decoding across chunk boundaries](https://ded-sec.space/learn/en/fieldnotes-en-41.html)
### Parsing validation and encodings
Source-URL: https://ded-sec.space/learn/en/en-67.html
# CSV parsing — syntax, domain validation and input limits
## Scenario and acceptance criteria
A small offline importer accepts UTF-8 CSV with exactly three columns: key, label, count. The key matches an uppercase letter followed by digits, label must contain non-whitespace text, and count is an unsigned decimal integer without unnecessary leading zeros. An escaped comma inside a quoted label must not split a record; repeated keys and malformed column counts must fail before any data is published.
## Executable lab — Python 3 standard library
Save the example as `05_parsing.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import csv, io, re
def import_records(text, limit=2048):
if len(text.encode("utf-8")) > limit:
raise ValueError("input too large")
reader = csv.reader(io.StringIO(text, newline=""), strict=True)
if next(reader, None) != ["key", "label", "count"]:
raise ValueError("invalid header")
output, seen = [], set()
for row in reader:
if len(row) != 3 or not re.fullmatch(r"[A-Z][0-9]+", row[0]):
raise ValueError("invalid row")
if row[0] in seen or not row[1].strip():
raise ValueError("duplicate key or blank label")
if not re.fullmatch(r"(?:0|[1-9][0-9]*)", row[2]):
raise ValueError("invalid count")
seen.add(row[0])
output.append((row[0], row[1], int(row[2])))
return output
assert import_records('key,label,count\nA1,"red, blue",2\n') == [("A1", "red, blue", 2)]
assert import_records("key,label,count\n") == []
for bad in ('wrong,label,count\n','key,label,count\nA1,x,-1\n',
'key,label,count\nA1,x,1\nA1,y,2\n',
'key,label,count\nA1,x\n'):
try: import_records(bad)
except ValueError: pass
else: raise AssertionError("accepted malformed CSV")
print("PASS parsing")
~~~
## Technical explanation
The csv.reader parser understands quotes and multiline records; split(',') does not. Keep syntax parsing separate from domain checks such as uniqueness and an ID format. Limit the encoded byte length before parsing so a huge input cannot consume arbitrary memory. Even a correct CSV parser does not imply safe data for HTML, shell commands or SQL: those sinks each need their own encoding or parameter binding.
## Bounded practice
Change the label to a quoted value containing a newline and confirm it remains a single logical record. Try UTF-8 Greek labels, a duplicate key, an empty label, negative counts, leading zeros, a four-column row and a payload above 2048 bytes. For every failure record the violated boundary. Add an explicit maximum row count if the application has many short records.
## Diagnostics and completion evidence
If quoting produces unexpected columns, check that the input is valid CSV and that a file stream is opened with newline='' in Python. If the CSV is correctly parsed but a row fails, inspect the domain checks instead of loosening the parser. A valid zero count remains permitted.
### Filesystem safety and atomic writes
Source-URL: https://ded-sec.space/learn/en/en-68.html
# Filesystem replacement — preserve the last good report
## Scenario and acceptance criteria
An offline tool exports a report to one chosen file. If the operation fails after writing temporary content, the existing report must still contain the old bytes. A successful replacement must leave the new content and remove scratch files. Keep the temporary file in the same directory as the destination, because a move across filesystems may not be atomic.
## Executable lab — Python 3 standard library
Save the example as `06_filesystems.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import os, tempfile
from pathlib import Path
def replace_text(target, text, fail_before_replace=False):
target = Path(target)
if target.is_symlink():
raise ValueError("symbolic-link target refused")
temp_name = None
try:
with tempfile.NamedTemporaryFile(mode="w", encoding="utf-8",
dir=target.parent, prefix=".new-", delete=False) as out:
temp_name = out.name
out.write(text)
out.flush()
os.fsync(out.fileno())
if fail_before_replace:
raise OSError("injected interruption")
os.replace(temp_name, target)
temp_name = None
finally:
if temp_name is not None:
Path(temp_name).unlink(missing_ok=True)
with tempfile.TemporaryDirectory() as location:
target = Path(location) / "report.txt"
target.write_text("old", encoding="utf-8")
try: replace_text(target, "partial", True)
except OSError: pass
assert target.read_text(encoding="utf-8") == "old"
replace_text(target, "new")
assert target.read_text(encoding="utf-8") == "new"
assert not list(Path(location).glob(".new-*"))
print("PASS file replacement")
~~~
## Technical explanation
NamedTemporaryFile, flush and fsync address different stages: writing Python buffers, pushing bytes toward the filesystem and then replacing the old name with os.replace. Replacing a directory entry is not identical to a fully durable transaction after power loss; some systems require an fsync of the containing directory. Checking target.is_symlink reduces accidental following of a pre-existing link, but does not eliminate time-of-check/time-of-use races against hostile concurrent changes.
## Bounded practice
Run the injected interruption and verify report.txt stays 'old'. Then run the successful path and ensure no .new-* files remain. Test a Unicode report, an unwritable output directory and a target that is a symlink inside a temporary fixture. For an untrusted root, design a descriptor-relative strategy rather than trusting simple string prefix comparisons.
## Diagnostics and completion evidence
If os.replace raises EXDEV, the temporary and target files probably reside on different filesystems; do not silently fall back to a destructive copy. If fsync fails, propagate the error and preserve the existing destination. The example tests an individual file, not multiple files updated transactionally.
## Further engineering detail
For resumable jobs, the file replacement boundary must agree with the completed-work boundary. Advancing a checkpoint too soon loses work; advancing it afterward can replay work. Prefer replay-safe outputs and test interruption at each persistence step, rather than assuming an atomic filename change makes the entire job transactional.
[Crash-safe checkpoints and file replacement](https://ded-sec.space/learn/en/fieldnotes-en-35.html)
### SQL parameters and transactions
Source-URL: https://ded-sec.space/learn/en/en-69.html
# SQLite — parameter binding, rollbacks and query plans
## Scenario and acceptance criteria
A local notes database holds note rows and labels referring to existing notes. The acceptance rule is that a transaction inserting a note and then an invalid label must leave no new note behind. Titles are always bound as values rather than interpolated into SQL. A deliberately malicious-looking title must be treated as text, not executable SQL.
## Executable lab — Python 3 standard library
Save the example as `07_sql.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("PRAGMA foreign_keys=ON")
db.executescript("""
CREATE TABLE note(id INTEGER PRIMARY KEY, title TEXT NOT NULL);
CREATE TABLE label(id INTEGER PRIMARY KEY, note_id INTEGER NOT NULL
REFERENCES note(id), name TEXT NOT NULL);
""")
with db:
db.execute("INSERT INTO note VALUES (?, ?)", (1, "first"))
before = db.execute("SELECT count(*) FROM note").fetchone()[0]
try:
with db:
db.execute("INSERT INTO note VALUES (?, ?)", (2, "temporary"))
db.execute("INSERT INTO label VALUES (?, ?, ?)", (8, 99, "bad"))
except sqlite3.IntegrityError:
pass
assert db.execute("SELECT count(*) FROM note").fetchone()[0] == before
attack = "' OR 1=1 --"
assert db.execute("SELECT count(*) FROM note WHERE title=?", (attack,)).fetchone()[0] == 0
db.execute("CREATE INDEX note_title_idx ON note(title)")
plan = db.execute("EXPLAIN QUERY PLAN SELECT * FROM note WHERE title=?", ("first",)).fetchall()
assert any("note_title_idx" in row[3] for row in plan)
assert db.execute("PRAGMA foreign_keys").fetchone()[0] == 1
db.close()
print("PASS sqlite transaction and bindings")
~~~
## Technical explanation
Placeholders (?) separate query syntax from user values and prevent SQL injection at that boundary. SQLite foreign-key enforcement must be enabled for each connection and can be checked with PRAGMA foreign_keys. A transaction groups dependent writes; raising IntegrityError from the second insert causes the first insert to roll back. A secondary index may improve equality lookups at the expense of additional writes and storage; inspect EXPLAIN QUERY PLAN rather than assuming an index is always used.
## Bounded practice
Run with and without PRAGMA foreign_keys on a disposable database and record the row counts. Insert a valid label, then attempt one with an unknown note ID. Compare `?` binding to unsafe string concatenation conceptually without executing the concatenated query. Test two connections and explain what the second can see before the first commits.
## Diagnostics and completion evidence
If an invalid reference succeeds, check the foreign_keys pragma on the exact connection executing the write. If a lookup appears slow, inspect index use and row counts, not just wall-clock time on a single tiny fixture. For concurrent writes, bound busy retries and record SQLITE_BUSY rather than swallowing it.
### HTTP APIs contracts and retries
Source-URL: https://ded-sec.space/learn/en/en-70.html
# HTTP API client — route restrictions and response contracts
## Scenario and acceptance criteria
A synthetic API reader may ask only for GET /api/items. It must not send requests to arbitrary hosts, use queries or redirects, or accept oversized response bodies. A valid response has status 200, media type application/json and a JSON object with exactly one items array of at most four short strings. The transport function is injected, so the example executes with no real network.
## Executable lab — Python 3 standard library
Save the example as `08_http.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import json
from urllib.parse import urlsplit
def read_page(path, transport):
p = urlsplit(path)
if (p.scheme or p.netloc or p.fragment or p.query or
p.path != "/api/items"):
raise ValueError("only /api/items is permitted")
status, media, body = transport(path)
if status != 200:
raise RuntimeError("unexpected status")
if media.split(";")[0].strip().lower() != "application/json":
raise ValueError("unexpected content type")
if not isinstance(body, bytes) or len(body) > 256:
raise ValueError("payload too large or not bytes")
obj = json.loads(body.decode("utf-8"))
if not isinstance(obj, dict) or set(obj) != {"items"}:
raise ValueError("invalid schema")
if not isinstance(obj["items"], list) or len(obj["items"]) > 4:
raise ValueError("too many items")
if not all(type(v) is str and len(v) <= 32 for v in obj["items"]):
raise ValueError("invalid item")
return obj["items"]
fetch = lambda _: (200, "application/json; charset=utf-8", b'{"items":["a","b"]}')
assert read_page("/api/items", fetch) == ["a", "b"]
for bad in ("https://bad.site/api/items", "//bad.site/api/items",
"/api/items?token=secret", "/api/items/../items"):
try: read_page(bad, fetch)
except ValueError: pass
else: raise AssertionError("unsafe path accepted")
print("PASS HTTP response contract")
~~~
## Technical explanation
URL parsing is not authorization. The route is compared to one exact allowlisted path after checking that scheme, host, fragment and query are absent. The client must inspect status, content type and payload length before decoding JSON, then enforce schema constraints. In production, a streaming transport must cap bytes while receiving them, not after downloading an unlimited response. Timeouts and redirect policies belong at the actual transport boundary.
## Bounded practice
Inject a 404 response, text/html content, truncated JSON, five items, a non-string item and a body larger than 256 bytes. Record the correct error for each. If later adding pagination, cap the number of pages and reject repeated cursor tokens. Retry safe GET requests only for documented transient failures, with bounded backoff; never blindly replay a mutable POST.
## Diagnostics and completion evidence
If a request uses an unexpected host, fail before calling transport. If media type is JSON but the payload is invalid, distinguish decoding failure from schema failure. Test redirect attempts with an actual transport only in an isolated local fixture; default URL openers can follow redirects unless configured otherwise.
### Threads processes async and races
Source-URL: https://ded-sec.space/learn/en/en-71.html
# Async concurrency — reproduce a lost update and protect it
## Scenario and acceptance criteria
Fifty asynchronous jobs each increment a shared counter once. The correct result is 50, but an interleaving read/yield/write sequence loses updates when several jobs observe the same old value. The example deliberately reproduces this failure before protecting the read-modify-write operation with asyncio.Lock. It uses one event loop, not multiple OS threads.
## Executable lab — Python 3 standard library
Save the example as `09_concurrency.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import asyncio
async def unsafe():
state = {"value": 0}
async def job():
before = state["value"]
await asyncio.sleep(0)
state["value"] = before + 1
await asyncio.gather(*(job() for _ in range(50)))
return state["value"]
async def safe():
state, lock = {"value": 0}, asyncio.Lock()
async def job():
async with lock:
before = state["value"]
await asyncio.sleep(0)
state["value"] = before + 1
await asyncio.gather(*(job() for _ in range(50)))
return state["value"]
assert asyncio.run(unsafe()) == 1
assert asyncio.run(safe()) == 50
print("PASS async lock and deterministic lost update")
~~~
## Technical explanation
Concurrency means tasks can interleave; it does not imply parallel CPU execution. Await is a suspension point: a task that reads state and then awaits allows other tasks to read the same old value. Locking only the final write is insufficient because the stale read already occurred. Place the full invariant-preserving read-modify-write section inside a lock. A lock protects only code paths that use that same lock; it does not automatically protect external processes or persistent storage.
## Bounded practice
Move the lock to protect only the assignment and verify that the bug returns. Increase jobs to 1000 and measure correctness, not just throughput. Add cancellation while a task waits for the lock and verify no lock leaks using async with. If the operation moves to SQLite, use database transactions rather than relying on an in-process Python lock.
## Diagnostics and completion evidence
If an async task appears frozen, inspect awaited operations and whether a task holds a lock while waiting on an unrelated resource. Avoid time.sleep inside the event loop. Do not infer a thread race solely from this coroutine example: asyncio scheduling and thread synchronization are different mechanisms.
### Unit integration property and regression tests
Source-URL: https://ded-sec.space/learn/en/en-72.html
# Testing — examples, boundaries and invariant sweeps
## Scenario and acceptance criteria
A quantity normalizer must accept decimal digits representing 0 through 99 and reject absent, negative, fractional, textual or over-limit input. A test suite needs a normal example, both boundaries and invalid values, not a single happy path. Separately check the invariant for every valid integer in the small bounded domain.
## Executable lab — Python 3 standard library
Save the example as `10_testing.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
import unittest
def normalize_quantity(text):
if not isinstance(text, str) or not text.isdecimal():
raise ValueError("decimal digits required")
n = int(text)
if n > 99: raise ValueError("quantity too high")
return n
class QuantityTests(unittest.TestCase):
def test_examples(self):
for text, expected in [("0", 0), ("7", 7), ("99", 99)]:
with self.subTest(text=text):
self.assertEqual(normalize_quantity(text), expected)
def test_boundaries(self):
for text in ["-1", "", "100", "1.2", "abc", None]:
with self.subTest(text=text):
with self.assertRaises(ValueError):
normalize_quantity(text)
def test_invariant(self):
for n in range(100):
self.assertEqual(normalize_quantity(str(n)), n)
suite = unittest.defaultTestLoader.loadTestsFromTestCase(QuantityTests)
outcome = unittest.TextTestRunner(verbosity=0).run(suite)
assert outcome.wasSuccessful()
print("PASS unit tests")
~~~
## Technical explanation
Unit tests run pure logic without files or network. subTest reports which fixture failed while allowing the remaining samples to execute. The invariant sweep checks 100 inputs, but it is not a mathematical proof of correctness beyond this bounded domain. Integration tests additionally verify parsing, storage and UI contracts; a browser smoke test cannot replace unit assertions, and a mocked network transport cannot prove live service availability.
## Bounded practice
Introduce a regression bug by changing `n > 99` to `n > 100`; check whether the boundary test fails. Add non-ASCII decimal digits and decide whether Unicode digits are allowed or ASCII-only input is required. Create one integration test writing a report into TemporaryDirectory. Add a browser-level acceptance step that checks the visible error message when invalid input is submitted.
## Diagnostics and completion evidence
If a test passes only when run alone, search for leaked global state and shared test fixtures. If an assertion is intermittent, record the seed, timing and environment, then minimize the failing input. Report actually executed test counts and runner version, never '100% tested' from passing fixtures.
## Further engineering detail
Failure injection should assert the number of attempts as well as the final output. A temporary timeout can justify retrying an idempotent read, while a permanent validation error should stop immediately. Inject the failing dependency and clock so the test exercises the intended state transition without depending on real delays or public services.
[Deterministic failure injection and recovery assertions](https://ded-sec.space/learn/en/fieldnotes-en-50.html)
### Systematic debugging and reproducible bugs
Source-URL: https://ded-sec.space/learn/en/en-73.html
# Debugging — reproduce and fix an inclusive-range error
## Scenario and acceptance criteria
A viewer exposes human-friendly line numbers starting at 1. Requesting lines 2 through 3 must return both entries and must not include line 1. Python slicing starts at index zero and excludes the end index; confusing the two conventions leads to an off-by-one defect that often hides until a user requests the first or last line.
## Executable lab — Python 3 standard library
Save the example as `11_debugging.py` and run it with Python 3. It uses synthetic data only and prints PASS when the assertions succeed. The same code appears in both translations.
~~~python
def line_range(lines, start, end):
if not isinstance(start, int) or not isinstance(end, int):
raise TypeError("line numbers must be integers")
if not 1 <= start <= end <= len(lines):
raise ValueError("line range outside document")
# External users count from one; Python slices from zero.
return lines[start-1:end]
source = ["first", "second", "third"]
assert line_range(source, 1, 1) == ["first"]
assert line_range(source, 2, 3) == ["second", "third"]
assert line_range(source, 1, 3) == source
for begin, finish in ((0, 2), (2, 4), (3, 2)):
try: line_range(source, begin, finish)
except ValueError: pass
else: raise AssertionError("invalid interval accepted")
print("PASS off-by-one regression")
~~~
## Technical explanation
Start by recording the exact input, expected output, actual output and runtime. A minimal fixture with three lines is more diagnostic than a large production document. Define the invariant `1 <= start <= end <= len(lines)` and convert to `[start-1:end]`. Then add regression tests for first line, final line, whole range and invalid intervals. Debug prints that reveal document contents should be removed or scrubbed before releasing a fix.
## Bounded practice
Temporarily change the slice to `[start:end]` and observe which assertions fail. Try an empty document, a one-line document and negative indexes. Record an original failing request before editing the implementation, then run the same fixture after the fix. Add a similar test for byte offsets versus character positions in UTF-8 text.
## Diagnostics and completion evidence
If an error is not reproducible, capture Python version, exact input and whether the program uses one-based external numbering. Do not mask the bug by catching every Exception and returning an empty list. Keep the regression test after fixing the cause, so the same mistake is detected in future changes.
### Dependency and supply chain management
Source-URL: https://ded-sec.space/learn/en/en-74.html
# Dependency integrity — compare a pinned manifest and artifact
## Scenario and acceptance criteria
A local tool uses a fixed dependency bundle. Its expected manifest must identify the exact package, version and SHA-256 digest. Refuse unexpected manifest fields, invalid versions and altered bytes. This exercise checks *integrity against a trusted expected digest*; it does not assert that a checksum downloaded from the same compromised source proves authenticity.
## Executable lab
Save as `12_dependencies.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
import hashlib, json, re
payload = b"offline reference fixture"
trusted_digest = hashlib.sha256(payload).hexdigest()
manifest = json.dumps({"name":"fixture","version":"2.4.1","sha256":trusted_digest})
def verify(manifest_text, blob):
meta = json.loads(manifest_text)
if set(meta) != {"name","version","sha256"}:
raise ValueError("unexpected manifest fields")
if meta["name"] != "fixture" or not re.fullmatch(r"[0-9]+\.[0-9]+\.[0-9]+",meta["version"]):
raise ValueError("untrusted name or unpinned version")
if not re.fullmatch(r"[0-9a-f]{64}", meta["sha256"]):
raise ValueError("invalid checksum")
if hashlib.sha256(blob).hexdigest() != meta["sha256"]:
raise ValueError("integrity failure")
return True
assert verify(manifest, payload)
for bad in (payload+b"x", payload[:-1]):
try: verify(manifest,bad)
except ValueError: pass
else: raise AssertionError("tamper undetected")
print("PASS pinned offline integrity fixture")
~~~
## Technical interpretation
Pinning a version makes drift visible, but security also depends on where the package and expected digest came from. Resolve the dependency tree, preserve the lockfile and evaluate transitive packages. An attacker who changes both the payload and checksum may pass a naïve local comparison. For real distributions, obtain manifests over trusted channels and verify publisher signatures or immutable trusted references where available.
## Bounded experiments
Change one byte of payload and confirm rejection. Add a fake extra manifest field, version `latest`, uppercase checksum and a second package name. Explain why each fails. Compare a frozen lockfile to unconstrained version ranges, and document a real vulnerability-advisory review process. The fixture remains offline and never installs a package.
## Diagnostics
If a checksum differs, stop and investigate; never disable the check to force a successful install. Compare the downloaded artifact, encoding, expected digest source and package version. Log a digest identifier, not secret access tokens. Record which transitive dependencies were actually inspected.
### Git commits branching and clean merges
Source-URL: https://ded-sec.space/learn/en/en-75.html
# Git revisions — verify ancestry before a fast-forward update
## Scenario and acceptance criteria
Create two commits inside a disposable repository and prove that the earlier one is an ancestor of the later one. The reverse condition must not pass. Clean status after the second commit is a separate invariant. No remote is configured, and no command touches the user's actual repository or branches.
## Executable lab
Save as `13_git.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
import os, pathlib, subprocess, tempfile
def git(cwd, *args):
return subprocess.run(["git","-C",str(cwd),*args], check=True,
capture_output=True, text=True).stdout.strip()
with tempfile.TemporaryDirectory() as folder:
path = pathlib.Path(folder)
git(path, "init", "-q")
git(path, "config", "user.name", "Fixture")
git(path, "config", "user.email", "fixture@example.invalid")
(path/"lesson.md").write_text("one\n", encoding="utf-8")
git(path, "add", "--", "lesson.md")
git(path, "commit", "-qm", "first")
base = git(path, "rev-parse", "HEAD")
(path/"lesson.md").write_text("two\n", encoding="utf-8")
git(path, "add", "--", "lesson.md")
git(path, "commit", "-qm", "second")
latest = git(path, "rev-parse", "HEAD")
assert base != latest
assert subprocess.run(["git","-C",str(path),"merge-base",
"--is-ancestor",base,latest]).returncode == 0
assert subprocess.run(["git","-C",str(path),"merge-base",
"--is-ancestor",latest,base]).returncode == 1
assert git(path, "status", "--porcelain") == ""
print("PASS disposable Git ancestry checks")
~~~
## Technical interpretation
A safe shared-branch update depends on the *current* remote head, not the head observed several minutes ago. Fetch, inspect the new commits, then require that the expected base is still the branch tip when updating. `git merge-base --is-ancestor old new` checks history relation, but it is not by itself a compare-and-swap against a concurrently advancing remote ref. A real push must avoid `--force` and handle a non-fast-forward rejection by fetching and reconciling both sides.
## Bounded experiments
Create a third commit and compare each ordered ancestry pair. Change a tracked file without committing and compare `git status --porcelain` with the clean result. Test an unrelated branch from an orphan history in a fresh fixture and record the ancestry failure. Use `git diff --check` before a real commit to detect trailing whitespace and conflict markers.
## Diagnostics
If a push is rejected, do not force it or silently discard other authors' changes. Fetch the new head and inspect affected paths, especially generated website overlays and canonical Markdown. Avoid commits containing secrets and verify .gitignore does not hide required source files. This lab runs only where Git is installed.
### Input validation secrets and least privilege
Source-URL: https://ded-sec.space/learn/en/en-76.html
# Input security — refuse archive traversal and encode HTML output
## Scenario and acceptance criteria
When previewing an archive, accept only portable relative POSIX paths made of nonempty components. Reject absolute paths, parent traversal, backslashes, drive syntax and ambiguous empty or dot components before any extraction. Separately, if showing user-supplied labels as HTML text, escape the output for the HTML context. Path validation and HTML output escaping are different operations.
## Executable lab
Save as `14_security.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
from pathlib import PurePosixPath
from html import escape
def safe_member(name):
if not isinstance(name, str) or not name or "\\ " in name:
raise ValueError("invalid member")
if "\\" in name or ":" in name or name.startswith("/"):
raise ValueError("nonportable or absolute path")
parts = name.split("/")
if any(part in ("", ".", "..") for part in parts):
raise ValueError("unsafe component")
result = PurePosixPath(name)
if result.is_absolute():
raise ValueError("absolute path")
return result
assert str(safe_member("docs/ελληνικά.md")) == "docs/ελληνικά.md"
assert escape('') == '<script>alert(1)</script>'
for bad in ("../secret", "docs/../../x", "/etc/passwd",
"C:\\Users\\item", "docs//x", "docs/./x"):
try: safe_member(bad)
except ValueError: pass
else: raise AssertionError("unsafe archive path accepted")
print("PASS archive-path and HTML context boundaries")
~~~
## Technical interpretation
PurePosixPath normalizes some components, so inspecting the raw string before converting is essential: normalization alone can hide `..`, `//` or `./` patterns. A lexical path check does not secure actual archive extraction on its own. Real extractors must additionally reject symbolic and hard links, control directory creation under a trusted root, handle races and enforce size and entry-count limits. `html.escape` encodes characters important in HTML text; it is not SQL binding, a shell sanitizer or JavaScript string escaping.
## Bounded experiments
Test each traversal fixture and confirm that a valid Greek filename is permitted. Add percent-encoded path text and decide explicitly whether it is decoded at the boundary before checking. Compare placing `html.escape` output inside text content versus a JavaScript source literal, where different encoding is required. Extend the threat model to compressed-archive bombs and file-type spoofing.
## Diagnostics
If a path looks safe after normalization but was rejected, inspect its raw components first. Do not “repair” malicious entries by stripping leading `../`, because different malicious names may collapse onto the same output. When rendering unsafe text, choose the correct contextual encoding rather than a global replace function.
### Logging metrics tracing and privacy
Source-URL: https://ded-sec.space/learn/en/en-77.html
# Observability — structured events without leaking private inputs
## Scenario and acceptance criteria
Record only bounded diagnostic metadata for an offline import: severity, stable machine-readable error code, short correlation ID, elapsed milliseconds and attempt number. Never include raw file contents, email addresses, authorization tokens or passwords. If someone tries to attach an unexpected field, fail instead of silently serializing sensitive data.
## Executable lab
Save as `15_observability.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
import json, re
ALLOWED = {"duration_ms", "attempt"}
def event(level, code, trace_id, **fields):
if level not in {"INFO","ERROR"}:
raise ValueError("invalid severity")
if not re.fullmatch(r"[a-f0-9]{8}", trace_id):
raise ValueError("invalid correlation ID")
if set(fields) - ALLOWED:
raise ValueError("unexpected or sensitive field")
if "duration_ms" in fields and (type(fields["duration_ms"]) is not int or fields["duration_ms"] < 0):
raise ValueError("duration outside range")
if "attempt" in fields and (type(fields["attempt"]) is not int or fields["attempt"] < 1):
raise ValueError("invalid attempt")
return json.dumps({"level":level,"code":code,"trace":trace_id,**fields},
ensure_ascii=False,sort_keys=True)
line = event("ERROR","IMPORT_FAILED","deadbeef",duration_ms=12,attempt=1)
assert json.loads(line)["duration_ms"] == 12
assert "\n" not in line
for extra in ({"password":"secret"},{"email":"a@example.invalid"}):
try: event("INFO","TRY","deadbeef",**extra)
except ValueError: pass
else: raise AssertionError("sensitive field accepted")
print("PASS structured log allowlist")
~~~
## Technical interpretation
A structured JSON event can be parsed and aggregated without fragile string splitting. Correlation IDs let separate events from the same operation be connected; they must not become a replacement for secret session tokens. Severity and error codes should describe verified outcomes: a UI click is not evidence that a file save completed. Whitelisting metadata is safer than repeatedly trying to scrub unknown data structures. Event volume, retention and storage access also need explicit limits in a real application.
## Bounded experiments
Add a test for an unknown field and invalid correlation ID. Print a valid Greek error message using ensure_ascii=False while preserving a stable ASCII event code. Inject newlines into a field and confirm the JSON encoder cannot create extra physical log records. Distinguish import_start from import_success and log the latter only after a completed write.
## Diagnostics
If logs appear empty, check whether code paths emit events after actual success or failure. If a field contains private text, remove it at the logging call boundary rather than relying solely on later redaction. Test dashboard counts against known synthetic outcomes to detect missing or doubled events.
## Further engineering detail
Filter structured event fields before serialization and before forwarding to any sink. A regular expression over a final log line cannot reliably find a secret nested inside an exception or request object. Include negative fixtures with fake credentials and check the retained diagnostic fields as well as the absence of the secrets.
[Structured log redaction before serialization](https://ded-sec.space/learn/en/fieldnotes-en-44.html)
### Profiling memory and bottlenecks
Source-URL: https://ded-sec.space/learn/en/en-78.html
# Performance measurement — verify correctness before speed claims
## Scenario and acceptance criteria
Compare membership searches for a fixed workload with 400 indexed labels and 80 requested labels. Both implementations must produce exactly the same ordered output including repeated requests. Measure several runs using a monotonic high-resolution timer, report the median, and record peak allocation under tracemalloc. The purpose is disciplined measurement, not asserting one algorithm must always win.
## Executable lab
Save as `16_perf.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
from statistics import median
from time import perf_counter
from tracemalloc import start, stop, get_traced_memory
def linear(labels, wanted):
return [name for name in wanted if name in labels]
def indexed(labels, wanted):
keys = set(labels)
return [name for name in wanted if name in keys]
labels = [f"k{i:04d}" for i in range(400)]
wanted = ["k0000","k0399","absent","k0000"] * 20
assert linear(labels, wanted) == indexed(labels, wanted)
def bench(fn, repetitions=7):
samples=[]
for _ in range(repetitions):
t0=perf_counter()
result=fn(labels,wanted)
samples.append(perf_counter()-t0)
assert result == linear(labels,wanted)
return median(samples)
start()
before=get_traced_memory()[1]
linear_time=bench(linear)
indexed_time=bench(indexed)
peak=get_traced_memory()[1]-before
stop()
assert linear_time >= 0 and indexed_time >= 0
print("PASS representative result; median seconds:",
round(linear_time,6),round(indexed_time,6),"peak delta:",peak)
~~~
## Technical interpretation
Time complexity predicts growth trends but not constants, CPU scheduling or memory allocation. A set has construction overhead and extra storage; a short list may be faster when reuse is low. Profiling changes timings too. Fix the dataset and check outputs before comparing medians. tracemalloc follows Python allocations, not necessarily total process RSS or device thermal behavior. Runs on a mobile CPU may behave differently because of heat and background tasks.
## Bounded experiments
Vary index size from 20 to 20,000 while keeping wanted fixed; explain where building a set becomes useful. Reuse the same prebuilt index for ten searches and separately measure index construction cost. Record seven timings per implementation and compare medians and spread, not a single number. On a phone, record interpreter version and device temperature if available.
## Diagnostics
If two algorithms produce different outputs, stop the timing comparison and repair semantics first. If timings vary widely, isolate other workloads, repeat samples and inspect garbage collection effects. Do not set hardcoded microsecond thresholds in the test suite, since hardware and environments vary.
### Internationalization and Greek support
Source-URL: https://ded-sec.space/learn/en/en-79.html
# Localization — stable message keys and Greek plurals
## Scenario and acceptance criteria
An offline interface shows the number of files found in English and Greek. It uses one stable message key with singular and plural variants, not text literals scattered across UI components. Both languages must require the same count placeholder, and unknown locale codes must fail explicitly rather than displaying a misleading partial translation.
## Executable lab
Save as `17_localization.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
from string import Formatter
MESSAGES = {
"en": {"one":"Found {count} file","many":"Found {count} files"},
"el": {"one":"Βρέθηκε {count} αρχείο","many":"Βρέθηκαν {count} αρχεία"},
}
def placeholders(value):
return {name for _,name,_,_ in Formatter().parse(value) if name}
def message(locale, count):
if locale not in MESSAGES or type(count) is not int or count < 0:
raise ValueError("invalid locale or count")
form = "one" if count == 1 else "many"
template = MESSAGES[locale][form]
if placeholders(template) != {"count"}:
raise ValueError("translation placeholders differ")
return template.format(count=count)
assert message("en",1) == "Found 1 file"
assert message("el",2) == "Βρέθηκαν 2 αρχεία"
assert message("el",0) == "Βρέθηκαν 0 αρχεία"
try: message("xx",1)
except ValueError: pass
else: raise AssertionError("unknown locale accepted")
print("PASS bilingual plural and placeholder checks")
~~~
## Technical interpretation
Grammar is not just word-for-word substitution: one file takes English 'file' and Greek 'αρχείο', whereas two take 'files' and 'αρχεία'. The fixture uses this bounded one-versus-many rule only; production applications must use CLDR plural categories, including languages with more forms. Keep numeric values separate from translated templates. HTML escaping and accessible labels still apply when displaying translated strings.
## Bounded experiments
Add a third language that has different plural categories and explain why this simple implementation must be replaced with an internationalization library. Delete the count placeholder from one Greek string and confirm the placeholder check rejects it. Test Greek accents, UTF-8 file loading, right-to-left layouts and truncation of long translations in the actual browser.
## Diagnostics
If a language toggle displays mixed languages, trace missing keys and stale cached bundles rather than adding fallback text silently. If numbers or dates look wrong, use locale-aware number and date formatting; this example handles plural text only. Keep accessibility labels translated along with visible titles.
### Reproducible builds backups and rollback
Source-URL: https://ded-sec.space/learn/en/en-80.html
# Release engineering — deterministic artifacts and reversible promotion
## Scenario and acceptance criteria
Package a small static offline site with two fixture files in a ZIP. Identical inputs, ordering, timestamps and mode metadata must produce identical archive bytes on repeated builds in this runtime. Calculate a SHA-256 checksum, reopen the archive and compare every extracted member with its source. A corrupted artifact must be detected before release promotion.
## Executable lab
Save as `18_release.py` and run with Python 3 and the standard library. The fixture does not use real personal files or network services.
~~~python
import hashlib, io, zipfile
FILES = {"docs/readme.txt":b"hello\n","site/index.html":b"
Offline
\n"}
def build():
buffer = io.BytesIO()
with zipfile.ZipFile(buffer,"w",compression=zipfile.ZIP_STORED) as z:
for name, data in sorted(FILES.items()):
info = zipfile.ZipInfo(name, date_time=(1980,1,1,0,0,0))
info.compress_type = zipfile.ZIP_STORED
info.external_attr = 0o100644 << 16
z.writestr(info,data)
return buffer.getvalue()
a,b = build(),build()
assert a == b
digest = hashlib.sha256(a).hexdigest()
with zipfile.ZipFile(io.BytesIO(a)) as archive:
assert sorted(archive.namelist()) == sorted(FILES)
assert all(archive.read(name)==data for name,data in FILES.items())
assert hashlib.sha256(a+b"x").hexdigest() != digest
print("PASS reproducible fixture ZIP:",digest[:12])
~~~
## Technical interpretation
ZIP members contain filenames, timestamps, permissions, compression settings and content. If metadata or iteration order changes, byte-for-byte reproducibility can fail even when visible content looks the same. The lab fixes timestamps, permissions and order, and uses ZIP_STORED to avoid compressor-version differences. Real build chains must pin tool versions, dependencies and input assets too; identical checksums alone cannot prove software is benign.
## Bounded experiments
Change one fixture byte and record the different SHA-256. Shuffle insertion order and show sorting still yields identical outputs. Remove explicit member timestamps and observe why repeated builds may differ. Store a copy of the previous known-good archive before releasing a new one, then rehearse rollback with a disposable folder.
## Diagnostics
If checksums differ, compare member order, timestamps, permission bits, tool versions and content. Do not ship before verifying that a fresh extraction has every expected entry and that internal links work offline. This in-memory example does not claim to have built or tested the real website.
### Error encyclopedia index
Source-URL: https://ded-sec.space/learn/en/en-81.html
# Error encyclopedia index
- `SyntaxError` — `Python`
- `IndentationError` — `Python`
- `TabError` — `Python`
- `NameError` — `Python`
- `UnboundLocalError` — `Python`
- `TypeError` — `Python`
- `ValueError` — `Python`
- `KeyError` — `Python`
- `IndexError` — `Python`
- `AttributeError` — `Python`
- `ModuleNotFoundError` — `Python`
- `ImportError` — `Python`
- `FileNotFoundError` — `Python`
- `PermissionError` — `Python`
- `UnicodeDecodeError` — `Python`
- `JSONDecodeError` — `Python`
- `RecursionError` — `Python`
- `AssertionError` — `Python`
- `RuntimeWarning: coroutine was never awaited` — `Python`
- `Uncaught TypeError` — `JavaScript`
- `ReferenceError` — `JavaScript`
- `Unexpected token` — `JavaScript`
- `Cannot read properties of undefined` — `JavaScript`
- `Cannot read properties of null` — `JavaScript`
- `UnhandledPromiseRejection` — `JavaScript`
- `ERR_MODULE_NOT_FOUND` — `JavaScript`
- `require is not defined in ES module scope` — `JavaScript`
- `Failed to fetch` — `Web`
- `CORS policy blocked` — `Web`
- `TS2322` — `TypeScript`
- `TS2339` — `TypeScript`
- `TS7006` — `TypeScript`
- `TS18048` — `TypeScript`
- `TS2307` — `TypeScript`
- `undefined reference` — `C / C++`
- `implicit declaration of function` — `C`
- `segmentation fault` — `C / C++`
- `double free` — `C / C++`
- `heap buffer overflow` — `C / C++`
- `stack buffer overflow` — `C / C++`
- `no matching function for call` — `C++`
- `use of deleted function` — `C++`
- `E0382` — `Rust`
- `E0502` — `Rust`
- `E0597` — `Rust`
- `E0277` — `Rust`
- `E0308` — `Rust`
- `cargo: failed to select a version` — `Rust`
- `cannot use X as Y in argument` — `Go`
- `imported and not used` — `Go`
- `declared and not used` — `Go`
- `fatal error: concurrent map writes` — `Go`
- `panic: runtime error: index out of range` — `Go`
- `NullPointerException` — `Java`
- `ClassNotFoundException` — `Java`
- `NoClassDefFoundError` — `Java`
- `cannot find symbol` — `Java`
- `UnsupportedClassVersionError` — `Java`
- `CS0103` — `C#`
- `CS0246` — `C#`
- `CS0029` — `C#`
- `SQLITE_CONSTRAINT` — `SQL`
- `no such table` — `SQL`
- `no such column` — `SQL`
- `database is locked` — `SQLite`
- `FOREIGN KEY constraint failed` — `SQL`
- `UNIQUE constraint failed` — `SQL`
- `syntax error near` — `SQL`
- `relation does not exist` — `PostgreSQL`
- `deadlock detected` — `SQL`
- `permission denied for relation` — `PostgreSQL`
- `command not found` — `Shell / Termux`
- `Permission denied` — `Shell / Linux`
- `bad interpreter` — `Shell`
- `unexpected EOF while looking for matching` — `Bash`
- `unbound variable` — `Bash`
- `No such file or directory` — `Shell / Linux`
- `externally-managed-environment` — `Python packaging`
- `pip: Failed building wheel` — `Python packaging`
- `ModuleNotFoundError: flask` — `DedSec`
- `No module named flask_socketio` — `DedSec`
- `DedSec legal consent declined` — `DedSec`
- `Termux API unavailable` — `DedSec / Termux`
- `git: not a git repository` — `Git`
- `fatal: refusing to merge unrelated histories` — `Git`
- `non-fast-forward` — `Git`
- `detached HEAD` — `Git`
- `repository not found` — `Git`
- `pytest collected 0 items` — `Testing`
- `pytest fixture not found` — `Testing`
- `address already in use` — `Networking`
- `connection refused` — `Networking`
- `certificate verify failed` — `Networking`
- `HTTP 404` — `Web`
- `HTTP 403` — `Web`
- `HTTP 500` — `Web`
### Python syntax, indentation and mixed-tabs diagnostics
Source-URL: https://ded-sec.space/learn/en/en-82.html
# Python syntax, indentation and mixed-tabs diagnostics
## SyntaxError
### What fails and when
A SyntaxError means Python could not parse source into a program. The indicated line is where parsing failed, not always where the mistake began. Missing closing delimiters, colons, malformed f-strings and invalid assignment targets can shift the reported location. Separate parser errors from NameError or TypeError: the latter happen only after the file parses.
### Self-contained executable example
Save this as 001_SyntaxError.py and run `python3 001_SyntaxError.py`. The example checks both the error and a valid case.
~~~python
bad = "total = (10 +\n 20\nprint(total)"
try:
compile(bad, "", "exec")
except SyntaxError as exc:
print(type(exc).__name__, exc.lineno)
assert exc.lineno is not None
else:
raise AssertionError("invalid source parsed")
good = "total = (10 + 20)\nprint(total)"
exec(compile(good, "", "exec")) # 30
~~~
### Diagnostic sequence and safe repair
Use python3 -m py_compile file.py for a syntax-only check before running side effects. Examine the offending line and preceding delimiter stack. On generated code, print repr(source) to reveal hidden newlines; do not fix by blindly deleting punctuation. The deliberately invalid sample is contained in a string, so the surrounding test remains executable.
### Practical lab and boundary test
Change the invalid source to omit a colon after an if statement. Record exc.msg, exc.lineno and exc.offset; then repair it. A regression test should assert compilation succeeds, not only that the text contains a colon.
## IndentationError
### What fails and when
Indentation is part of Python's grammar. An unexpected indent adds a block where none is permitted; an expected-indented-block error means a compound statement has no suite. The fix depends on the logical structure, not on automatically adding four spaces to every line.
### Self-contained executable example
Save this as 002_IndentationError.py and run `python3 002_IndentationError.py`. The example checks both the error and a valid case.
~~~python
broken = "def total(values):\nreturn sum(values)"
try:
compile(broken, "", "exec")
except IndentationError as exc:
print(type(exc).__name__, exc.lineno)
else:
raise AssertionError("bad indentation accepted")
def total(values):
if not values:
return 0
return sum(values)
assert total([2, 3]) == 5
assert total([]) == 0
~~~
### Diagnostic sequence and safe repair
In the editor, display whitespace characters and inspect the whole surrounding if/else, try/except or def suite. A visually aligned line can still carry tabs. Run python3 -m tabnanny path/to/package to detect ambiguous indentation, then format a small reviewed scope. Avoid replacing all whitespace in generated code without diff review.
### Practical lab and boundary test
Add an else branch that returns -1 for negative-only input. Intentionally unindent its body, capture the compile failure, then assert all three cases. Explain why a pass statement is syntactically valid but not a substitute for intended behavior.
## TabError
### Why this error is different
A file can appear aligned while its indentation uses different characters. Python expands tabs using tab stops, and a mixture can make the block structure depend on interpretation. TabError is a subclass of IndentationError, but it specifically flags inconsistent use of tabs and spaces.
### Reproduce safely
Create broken.py with the following shell commands; the second line of the function begins with a literal tab:
~~~sh
printf 'def greet():\n\tprint("hello")\n print("again")\ngreet()\n' > broken.py
python -m py_compile broken.py
~~~
Expect TabError: inconsistent use of tabs and spaces in indentation. Use sed -n 'l' broken.py on systems with sed to expose the tab as \t; alternatively inspect repr(open("broken.py").read()) in Python.
### Repair and verification
~~~python
def greet():
print("hello")
print("again")
greet()
~~~
Run python -m py_compile fixed.py and python fixed.py. The output is two lines. Change indentation only in the affected block, keeping intended nesting. An editor's "convert indentation to spaces" command is useful after you inspect the diff, but blind replacement can alter nested control flow.
### Lab
Insert a tab before one nested statement and spaces before another. Compare editor display at tab widths 4 and 8. Add a pre-commit check with python -m tabnanny for source directories, and configure the editor to insert spaces when Tab is pressed. Note that a tab in a string literal is data, not indentation: do not globally delete every tab from all files.
### Python names, type mismatches and missing dictionary keys
Source-URL: https://ded-sec.space/learn/en/en-85.html
# Python names, type mismatches and missing dictionary keys
## NameError
### What fails and when
NameError means a referenced name is not defined in the scope being executed. It can result from a spelling error, a conditional assignment that never ran, using a name before initialization, or importing from a different module than expected. A locally assigned name used too early inside a function may instead produce UnboundLocalError.
### Self-contained executable example
Save this as 004_NameError.py and run `python3 004_NameError.py`. The example checks both the error and a valid case.
~~~python
def discount(price, eligible):
amount = price
if eligible:
amount = price * 0.9
return amount
assert discount(100, True) == 90
assert discount(100, False) == 100
try:
eval("ammount", {})
except NameError as exc:
assert "ammount" in str(exc)
else:
raise AssertionError("misspelling was not caught")
~~~
### Diagnostic sequence and safe repair
Start with the exact spelling in the traceback and the surrounding function scope; compare it to the assignment or import. Trace conditional branches with the failing input. Do not inject arbitrary values into globals() as a workaround; initialize explicitly or return a value from a function. In notebooks, rerun from a clean kernel to reveal hidden cell-order dependencies.
### Practical lab and boundary test
Introduce a branch where amount is only assigned when eligible is true. Find the false-input failure, restore unconditional initialization, and write two tests. Then compare NameError with UnboundLocalError using a function that reads x before x = 1.
## TypeError
### What fails and when
A TypeError occurs when an operation or call receives objects it cannot use: adding str to int, calling a non-callable value, passing an unsupported keyword or omitting a required argument. Before converting types, decide whether the caller or the API contract is wrong. Automatic coercion can hide a broken data boundary.
### Self-contained executable example
Save this as 006_TypeError.py and run `python3 006_TypeError.py`. The example checks both the error and a valid case.
~~~python
def total_cost(price, quantity):
if not isinstance(price, (int, float)):
raise TypeError("price must be numeric")
if type(quantity) is not int:
raise TypeError("quantity must be an integer")
return price * quantity
assert total_cost(2.5, 3) == 7.5
try:
total_cost("2.5", 3)
except TypeError as exc:
assert "numeric" in str(exc)
else:
raise AssertionError("invalid type accepted")
~~~
### Diagnostic sequence and safe repair
Inspect type(value), repr(value), the full function signature and the first failing frame you own. Distinguish text obtained from input() or JSON from numbers. Validate at the boundary; convert with explicit error handling only when the input format permits it. Note that bool is a subclass of int: use type(x) is int where True must not count as one unit.
### Practical lab and boundary test
Extend the contract to reject negative quantities and non-finite prices. Should the failures be TypeError or ValueError? Document the distinction and assert the exact exception class, including a True quantity and a NaN price.
## KeyError
### What fails and when
Dictionary subscripting raises KeyError when the requested key is missing. Whether to catch it depends on the schema: an absent optional display name may have a safe default, whereas a missing transaction ID is a data-integrity fault. Blindly replacing every lookup with get() makes corrupted inputs look valid.
### Self-contained executable example
Save this as 008_KeyError.py and run `python3 008_KeyError.py`. The example checks both the error and a valid case.
~~~python
def label(record):
order_id = record["id"] # required
nickname = record.get("nickname")
return f"{order_id}: {nickname or 'Guest'}"
assert label({"id": 7}) == "7: Guest"
assert label({"id": 7, "nickname": "Ada"}) == "7: Ada"
try:
label({"nickname": "Ada"})
except KeyError as exc:
assert exc.args == ("id",)
else:
raise AssertionError("required key was optional")
~~~
### Diagnostic sequence and safe repair
Print or log sorted(record.keys()) for non-sensitive test data, not complete production payloads. Compare the expected schema with actual parser output. Membership checks are appropriate when None is a valid stored value; dict.get cannot distinguish a missing key from an explicitly stored None without a sentinel.
### Practical lab and boundary test
Create a sentinel = object() and tell apart absent nickname, nickname=None and nickname=''. Define a user-visible policy for each, while keeping id mandatory; test the three boundaries.
### UnboundLocalError
Source-URL: https://ded-sec.space/learn/en/en-86.html
# Python UnboundLocalError: a local is read before assignment
## Reproduce
~~~python
counter = 10
def broken():
print(counter)
counter = counter + 1
broken()
~~~
Python decides at compile time that counter is local to broken because it is assigned in that function. The earlier read therefore raises UnboundLocalError even though a global counter exists. The exception is a subclass of NameError, but the name is known to be local and uninitialized.
## Prefer explicit state
~~~python
def increment(counter):
return counter + 1
assert increment(10) == 11
assert increment(0) == 1
~~~
This pure function has no global mutation and can be reused safely. For closures that intentionally mutate enclosing state, nonlocal can be appropriate; global modifies a module binding and should be a deliberate design choice, not a quick error suppression.
## Diagnose branches and exception paths
An assignment inside an if does not guarantee initialization:
~~~python
def label(flag):
if flag:
result = "ready"
return result
~~~
label(False) raises UnboundLocalError. Initialize result before the branch, return from every branch, or make the missing case explicit. Also check try/except blocks: an assignment in try may be skipped when an exception occurs. Inspect the full function for any assignment, including augmented assignment such as +=, which reads and writes the local.
## Lab
Call label(True) and label(False), then rewrite the function so both cases return a string. Create a closure with nonlocal and compare it to increment. Document whether state should be returned, shared within a closure, or stored in an object. Add tests for every branch rather than relying on a single successful input.
## Minimal branch contract
A function must initialize a variable on *every* path before reading it. In a deliberately failing test, make the assignment conditional on `flag` and call the function with `False`. Compare three valid redesigns: return immediately in each branch, give the variable an explicit default, or raise a descriptive exception on unsupported input. A default is not always correct: for a missing mandatory result, raising is better than silently returning stale state.
### ValueError
Source-URL: https://ded-sec.space/learn/en/en-88.html
# ValueError: distinguish format, range and type
## What fails and when
ValueError usually means the type is acceptable but its value violates the operation's requirements. int('12x') accepts a string argument but not that string's content. Similarly, an out-of-range port number can be an int yet invalid. Validation should preserve the source of the bad value for a useful message without echoing secrets.
## Self-contained executable example
Save this as 007_ValueError.py and run `python3 007_ValueError.py`. The example checks both the error and a valid case.
~~~python
def parse_port(text):
try:
port = int(text, 10)
except ValueError as exc:
raise ValueError("port must be a decimal integer") from exc
if not 1 <= port <= 65535:
raise ValueError("port outside 1..65535")
return port
assert parse_port("443") == 443
for invalid in ("abc", "0", "65536"):
try:
parse_port(invalid)
except ValueError:
pass
else:
raise AssertionError(invalid)
~~~
## Diagnostic sequence and safe repair
Separate parsing from semantic validation: first interpret input, then check its permitted domain. A broad except Exception clause would also swallow programming bugs; catch ValueError at the boundary you can handle. If zero, whitespace and signs have special meaning in your protocol, write those decisions down rather than relying on int() defaults.
## Practical lab and boundary test
Decide whether ' +80 ' is permitted and whether '80.0' should be rejected. Implement the policy without changing the accepted numeric range; test min, max, just below and just above.
## Strict port input: grammar before integer conversion
A permissive int() call accepts whitespace and signs. For a network configuration file that promises one to five ASCII digits, enforce that grammar before conversion; the length limit also bounds the work done on hostile input. Leading zeros are allowed here only while the total input remains at most five characters.
~~~python
def parse_port(text):
if not isinstance(text, str):
raise TypeError('port must be text')
if len(text) > 5 or not text.isascii() or not text.isdecimal():
raise ValueError('port must be 1..5 ASCII digits')
port = int(text)
if not 1 <= port <= 65535:
raise ValueError('port outside 1..65535')
return port
assert parse_port('080') == 80
assert parse_port('65535') == 65535
for bad in ('', '000080', '65536', '80', '-1', ' 80 '):
try: parse_port(bad)
except ValueError: pass
else: raise AssertionError(bad)
~~~
## Diagnosis and mastery check
If the conversion fails, distinguish an invalid character from an out-of-range number; do not log secret configuration values. Verify that '0' and '65536' are range failures, while '80' and ' 80 ' are grammar failures. The exercise is complete when a test suite covers both bounds, non-ASCII digits, leading zeros, the empty string and non-string inputs, without catching unrelated exceptions.
### IndexError
Source-URL: https://ded-sec.space/learn/en/en-90.html
# IndexError: guard boundaries without masking bugs
## What fails and when
IndexError is a sequence access outside its valid range. The usual non-negative positions are 0 through len(items)-1; negative indices count from the end but still fail on empty sequences. Index errors are frequently caused by mismatched loop bounds, unsafe assumptions about split() or stale indexes after removal.
## Self-contained executable example
Save this as 009_IndexError.py and run `python3 009_IndexError.py`. The example checks both the error and a valid case.
~~~python
def first_and_last(values):
if not values:
return None
return values[0], values[-1]
assert first_and_last([]) is None
assert first_and_last([8]) == (8, 8)
assert first_and_last([8, 9]) == (8, 9)
try:
[][0]
except IndexError:
pass
else:
raise AssertionError("empty list indexed")
~~~
## Diagnostic sequence and safe repair
Inspect len(sequence) and the requested index at the failing expression, then trace who constructed or shortened the sequence. Prefer for value in values when positions are unnecessary and enumerate(values) when they are. Catch IndexError only if an absent element is an expected case; otherwise fix the producer or boundary check.
## Practical lab and boundary test
Write a safe nth(values, index) function supporting documented negative indices. Decide whether an out-of-range request returns None or raises; test empty, singleton, len(values) and -len(values)-1.
## A safe positional lookup that preserves None
Returning None for a missing element is ambiguous if None is a legitimate list value. Accept a caller-owned sentinel instead, and specify whether negative positions are supported. Reject Boolean indices explicitly: Python otherwise treats True as integer 1.
~~~python
def nth_or(values, index, default):
if type(index) is not int:
raise TypeError('index must be int, not bool')
if -len(values) <= index < len(values):
return values[index]
return default
missing = object()
assert nth_or([None, 'b'], 0, missing) is None
assert nth_or([None, 'b'], -1, missing) == 'b'
assert nth_or([], 0, missing) is missing
assert nth_or([3], -2, missing) is missing
try: nth_or([1], True, missing)
except TypeError: pass
else: raise AssertionError('bool index accepted')
~~~
## Trace the faulty boundary
For a list of length n, valid negative indices start at -n; the index -n-1 is invalid. Before changing a guard, inspect the producer: did a filter remove elements, did split() return fewer fields, or did a concurrent mutation invalidate the stored position? The mastery task is to explain all five assertions, then add a tuple case and a failing out-of-range positive index without catching an unrelated IndexError.
### AttributeError
Source-URL: https://ded-sec.space/learn/en/en-91.html
# Python AttributeError — distinguish missing fields from absent objects
## Reproduce two different causes
An AttributeError can indicate that the object is the wrong type, that a property was misspelled, or that the value is None. They are different contracts.
~~~python
item = {"name": "Ada"}
# item.name # dict has no attribute 'name'
# None.strip() # 'NoneType' has no attribute 'strip'
assert item["name"] == "Ada"
~~~
## Repair by validating the boundary
Use mapping operations for dictionaries and attribute syntax for objects designed with fields. If the API allows absence, handle None intentionally rather than swallowing every AttributeError.
~~~python
def display_name(record: dict | None) -> str:
if record is None:
return "(anonymous)"
value = record.get("name")
if not isinstance(value, str):
raise TypeError("name must be a string")
return value.strip()
assert display_name({"name": " Ada "}) == "Ada"
assert display_name(None) == "(anonymous)"
~~~
## Investigation
Print type(value) and repr(value) at the failing boundary without dumping passwords or personal records. Inspect the producer of the value, not only the consumer. A try/except AttributeError around a large code block can hide unrelated programming mistakes.
**Test:** pass an empty dictionary and confirm TypeError rather than a misleading fallback. Reference: https://docs.python.org/3/library/exceptions.html#AttributeError
## Inspect the value producer
~~~python
payload = {"user": {"name": "Ada"}}
assert payload["user"]["name"] == "Ada"
~~~
A dict does not offer `payload.user` by default. If a field can be absent, check the schema explicitly and distinguish a missing key from a value set to `None`. A data class or object with attributes has a different contract from a mapping. Your fix should be at the producer/consumer boundary, not an unrestricted `getattr(value, "name", "")` that masks malformed data.
### ModuleNotFoundError
Source-URL: https://ded-sec.space/learn/en/en-92.html
# ModuleNotFoundError: resolve the exact Python environment
## What fails and when
A ModuleNotFoundError often means that the interpreter running the program cannot see an installed distribution; it does not prove the package is absent from every interpreter on the device. It can also mean the import name differs from the pip distribution name, a virtual environment is inactive, or project files shadow packages.
## Self-contained executable example
Save this as 011_ModuleNotFoundError.py and run `python3 011_ModuleNotFoundError.py`. The example checks both the error and a valid case.
~~~python
import importlib.util
import sys
from pathlib import Path
print("interpreter:", sys.executable)
print("cwd:", Path.cwd())
print("json location:", importlib.util.find_spec("json").origin)
assert importlib.util.find_spec("json") is not None
assert importlib.util.find_spec("_dedsec_missing_fixture_") is None
~~~
## Diagnostic sequence and safe repair
Run python3 -c 'import sys; print(sys.executable)' with the exact launcher used by the app. Then python3 -m pip --version and python3 -m pip show PACKAGE. Inspect sys.path and project filenames. In Termux use its Python and site-packages; do not mix Termux installations with system or unrelated Debian environments. Install only into the intended environment, ideally a project venv.
## Practical lab and boundary test
Make an isolated venv, print its sys.executable and inspect find_spec for a standard-library module. Explain why invoking plain pip from another terminal could update a different interpreter. Test an intentional misspelling without installing anything.
## Reproduce interpreter visibility without installing anything
Use the interpreter that is running this very script for both an intentionally absent module and a standard-library control. The -I switch isolates Python from user-site packages and most environment influences; it is useful for diagnosis, but it is not equivalent to the application's normal import path.
~~~python
import sys, subprocess
missing_module = 'dedsec_missing_fixture_9f8a6d71'
missing_run = subprocess.run(
[sys.executable, '-I', '-c', 'import '+missing_module],
capture_output=True, text=True)
control_run = subprocess.run(
[sys.executable, '-I', '-c', 'import json; print(json.dumps([1, 2]))'],
capture_output=True, text=True)
assert missing_run.returncode != 0 and 'ModuleNotFoundError' in missing_run.stderr
assert control_run.returncode == 0 and control_run.stdout.strip() == '[1, 2]'
~~~
## Interpreter, distribution, and shadowing checklist
Record sys.executable from the failing process, then run that exact executable with -m pip show DISTRIBUTION. Import names can differ from distribution names. Check local filenames such as json.py and directories on sys.path before reinstalling. If a module works normally but not with -I, inspect user-site packages, PYTHONPATH and working-directory assumptions. Mastery means explaining why a successful pip installation in one virtual environment does not prove visibility in another.
### ImportError
Source-URL: https://ded-sec.space/learn/en/en-93.html
# ImportError: separate absent modules, symbols and cycles
## What fails and when
ImportError can occur after Python locates a module but fails to import a requested symbol, loads an incompatible compiled extension or encounters a circular import during initialization. ModuleNotFoundError is a more specific subclass used when a module cannot be found. Installing packages repeatedly will not repair a wrong symbol name or cyclic dependency.
## Self-contained executable example
Save this as 012_ImportError.py and run `python3 012_ImportError.py`. The example checks both the error and a valid case.
~~~python
import importlib
import math
assert hasattr(math, "sqrt")
try:
exec("from math import sqrt_typo")
except ImportError as exc:
assert "sqrt_typo" in str(exc)
else:
raise AssertionError("missing name imported")
assert importlib.import_module("math").sqrt(9) == 3.0
~~~
## Diagnostic sequence and safe repair
Read the full import traceback and the module path, not only the final line. Check python3 -c 'import module; print(module.__file__)' for file-backed modules, installed API versions and exported names. If the message says partially initialized module, sketch the import dependency graph and move shared definitions to a third module. Avoid naming local files json.py, typing.py or requests.py.
## Practical lab and boundary test
Create a.py importing b and b.py importing a, with each accessing an attribute before initialization. Observe the circular-import diagnostic, then refactor shared constants into common.py. Contrast the result with a simple misspelled imported symbol.
## A missing export, reproduced in a disposable directory
This fixture distinguishes a module that exists from a name it does not export. It creates two local files, runs them in a fresh Python process, then adds the missing symbol. No pip install or external dependency is involved.
~~~python
import sys, subprocess, tempfile
from pathlib import Path
with tempfile.TemporaryDirectory() as temp:
folder = Path(temp)
helper = folder / 'helper.py'
main = folder / 'main.py'
helper.write_text('VALUE = 3\n', encoding='utf-8')
main.write_text('from helper import MISSING\nprint(MISSING)\n', encoding='utf-8')
def run():
return subprocess.run([sys.executable, str(main)],
cwd=folder, capture_output=True, text=True)
broken = run()
assert broken.returncode != 0 and 'ImportError' in broken.stderr
helper.write_text('VALUE = 3\nMISSING = 5\n', encoding='utf-8')
fixed = run()
assert fixed.returncode == 0 and fixed.stdout.strip() == '5', fixed.stderr
~~~
## How to tell the causes apart
The first run finds helper.py but cannot import MISSING. A ModuleNotFoundError instead indicates a module name could not be resolved; a partially initialized module warning suggests a cycle. For a real failure, inspect the imported module's __file__, its public exports and the first importing frame. Finish by creating a two-module cycle and moving shared definitions into common.py; explain why renaming or reinstalling a package would not repair that cycle.
### FileNotFoundError
Source-URL: https://ded-sec.space/learn/en/en-94.html
# Python FileNotFoundError: locate the missing resource without guessing
FileNotFoundError is raised when a requested path does not name an existing resource from the process's filesystem view. The error may arise in open(), pathlib operations, subprocess startup, or a dependency. A relative path is resolved against the current working directory, not automatically against the Python script's directory.
## A safe read-only diagnosis
~~~python
from pathlib import Path
cwd = Path.cwd()
script_dir = Path(__file__).resolve().parent
relative = Path("samples") / "input.txt"
print("working directory:", cwd)
print("script directory:", script_dir)
print("cwd candidate:", (cwd / relative).resolve())
print("script candidate:", (script_dir / relative).resolve())
print("exists beside script:", (script_dir / relative).is_file())
~~~
Running the script from another directory can change the cwd candidate while the script candidate remains anchored to the file. For a resource distributed alongside source code, using a deliberate script/package-relative location is more reliable than assuming the user launched the program from a fixed folder. Libraries and packaged applications may use different resource APIs, so inspect the actual deployment layout.
## Reproduce a missing file without destructive writes
In a disposable test folder, request a name that is known not to exist. First check is_file(), then attempt a read, and capture FileNotFoundError with the requested path in the error report. Next add a small UTF-8 fixture with the expected content and verify that the read succeeds. Don't create an empty replacement for an unknown configuration file merely to suppress the exception.
## Permissions, filename case, and platform distinctions
A real file that lacks read permission usually leads to PermissionError rather than FileNotFoundError, although inaccessible parent directories or network mounts complicate diagnosis. Linux and typical Termux filesystems are case-sensitive; Windows configurations can differ. Also distinguish a broken symlink from a normal missing filename. Before changing source paths, confirm the process identity, working directory and path received by the failing function.
## Completion check
Record the exact exception, two resolved candidate paths, expected fixture contents, and a successful read from the intended location. Include OS and package layout. If no test was executed, label outputs as expected rather than claiming verified success. Correcting this error requires choosing the right resource location, not indiscriminately changing permissions.
### PermissionError
Source-URL: https://ded-sec.space/learn/en/en-95.html
# Python PermissionError: identify the blocked operation first
PermissionError is an OS-level refusal to perform an operation. It can occur when opening a file for reading, creating a file in a protected directory, walking an inaccessible parent path, or starting an executable. Those causes require different repairs; granting universal write access is not a diagnosis.
## Reproduce read and write decisions in a temporary workspace
~~~python
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as folder:
root = Path(folder)
note = root / "note.txt"
note.write_text("example", encoding="utf-8")
assert note.read_text(encoding="utf-8") == "example"
print("parent:", note.parent)
~~~
The successful baseline proves your current process can write within its own temporary directory. It does not prove the same process may write to a system configuration directory or another user's home. Use the failing path and action to determine exactly which permission was required. Do not intentionally modify system locations as part of a teaching exercise.
## The key distinction: read, write, execute and directory traversal
A file may be readable but not writable; a directory may allow listing but prevent creation; a script may be readable yet not directly executable. POSIX parent directories need search/execute permission to traverse. A mount configured noexec can prevent direct execution even when an executable bit appears set. On Android shared storage, the Termux app's permissions and mount rules matter, so Linux chmod advice may not apply.
## Inspect without broad permission changes
For Linux/Termux, id and ls -ld on the specific file and its parents can help identify process identity and modes. On Windows inspect the relevant ACLs and whether the process is blocked by policy or read-only location. Distinguish a PermissionError from a FileNotFoundError before touching either file contents or permissions.
## Safe remediation and verification
Prefer moving the application's writable output into a user-owned data directory or granting narrowly scoped access through the supported administration process. Never recommend chmod -R 777, blanket chown, or running every command with administrator rights. Retest one operation against the intended directory and record the before-and-after result. A permission change that only silences one error without respecting ownership is not a reliable fix.
### UnicodeDecodeError
Source-URL: https://ded-sec.space/learn/en/en-96.html
# UnicodeDecodeError: decode bytes with a documented policy
## What fails and when
UnicodeDecodeError occurs when raw bytes cannot be interpreted using the chosen character encoding. File extensions and locale guesses do not establish an encoding contract. Never make invalid data disappear with errors='ignore' just to hide the exception: this can silently change identifiers, CSV cells and security-relevant text.
## Self-contained executable example
Save this as 015_UnicodeDecodeError.py and run `python3 015_UnicodeDecodeError.py`. The example checks both the error and a valid case.
~~~python
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tmp:
path = Path(tmp) / "sample.txt"
path.write_bytes("café".encode("cp1252"))
try:
path.read_text(encoding="utf-8")
except UnicodeDecodeError as exc:
print("bad byte offset:", exc.start)
else:
raise AssertionError("wrong encoding accepted")
assert path.read_text(encoding="cp1252") == "café"
~~~
## Diagnostic sequence and safe repair
Inspect a small permitted hex sample of the source bytes, the producer specification and any BOM. Decode using the documented encoding. If inputs are mixed, detect formats with explicit metadata or reject ambiguous files; errors='replace' may be acceptable only for a clearly labeled lossy preview. For JSON from APIs, verify Content-Type and actual byte representation before blaming Python.
## Practical lab and boundary test
Encode the same word in UTF-8 and cp1252, compare their hex values and decode both correctly. Add a fixture with a truncated UTF-8 multibyte sequence and assert that strict decoding raises at a known offset.
## Recover bytes exactly, or label a lossy preview
If the producer's encoding is unknown, do not silently reinterpret bytes as Latin-1 just because it never raises. Python's surrogateescape can preserve otherwise undecodable bytes for a controlled round trip; the resulting text is not suitable for unrestricted display or interchange.
~~~python
raw = b'\xffA'
try: raw.decode('utf-8')
except UnicodeDecodeError as exc:
assert exc.start == 0 and exc.end == 1
else: raise AssertionError('expected invalid UTF-8')
recovered = raw.decode('utf-8', errors='surrogateescape')
assert recovered.encode('utf-8', errors='surrogateescape') == raw
assert '\ufffd' in raw.decode('utf-8', errors='replace')
~~~
## Incident triage and acceptance criteria
Keep the original bytes, note the failing offset and ask for the producer's documented encoding. Decode with that encoding if established; otherwise quarantine the record or provide an explicitly lossy preview. For the mastery exercise, compare the bytes for café in UTF-8 and cp1252, then test a truncated UTF-8 sequence. Show that replacing invalid bytes changes the data, while surrogateescape preserves the exact original byte stream.
### JSONDecodeError
Source-URL: https://ded-sec.space/learn/en/en-97.html
# JSONDecodeError — find the first invalid token, not the last symptom
## Meaning
json.loads expects one valid JSON value. A trailing comma, single-quoted key, HTML error page or empty response violates that grammar. The decoder reports line, column and absolute character offset.
~~~python
import json
from json import JSONDecodeError
bad = '{"enabled": true,}'
try:
json.loads(bad)
except JSONDecodeError as exc:
assert exc.lineno == 1
print("invalid position:", exc.pos, "near:", repr(bad[max(0, exc.pos-8):exc.pos+8]))
~~~
## Repair the producer and protect the consumer
Check HTTP status and Content-Type before parsing a remote response; an HTTP 500 with an HTML body should not be treated as JSON. Correct the producer to emit double-quoted strings without trailing commas. If a file can be empty, define what empty means before introducing a default object.
~~~python
valid = json.loads('{"enabled": true}')
assert valid["enabled"] is True
~~~
## Lab
Test empty text, 'null', an array instead of an object, and a valid object missing the 'enabled' key. Notice that valid JSON can still violate application schema. Validate the decoded type and required fields *after* decoding. Never patch broken JSON by blindly deleting punctuation from arbitrary input. Reference: https://docs.python.org/3/library/json.html
## Separate decoding from validation
~~~python
import json
def read_config(raw):
obj = json.loads(raw)
if not isinstance(obj, dict) or not isinstance(obj.get("enabled"), bool):
raise ValueError("config.enabled must be boolean")
return obj
~~~
The input `"null"` is valid JSON but has the wrong shape, while `"{invalid}"` must fail during decoding. For an HTTP response, verify status and media type before assuming the body is JSON; an HTML error page produces a very different root cause from a missing config key. Avoid echoing untrusted response bodies into error logs with credentials.
### RecursionError
Source-URL: https://ded-sec.space/learn/en/en-98.html
# Python RecursionError — termination comes before limit increases
## Trigger
Each recursive call requires another frame. When a base case is missing or does not make progress, Python eventually raises RecursionError. Raising sys.setrecursionlimit to a huge number can crash the process and is not a logical repair.
~~~python
def bad_count(n):
return 1 + bad_count(n) # n never changes; do not call this in ordinary tests
~~~
## Correct with a decreasing measure
A recursive function needs a well-founded measure that strictly decreases and a base case covering the minimum.
~~~python
def count_down(n: int) -> int:
if n < 0:
raise ValueError("nonnegative input required")
if n == 0:
return 0
return 1 + count_down(n-1)
assert count_down(4) == 4
assert count_down(0) == 0
~~~
## Choose iteration when depth is unbounded
For a large input, rewrite with a loop rather than trying to tune the interpreter's recursion depth:
~~~python
def iterative_count(n: int) -> int:
if n < 0: raise ValueError("negative")
result = 0
while n:
result += 1
n -= 1
return result
assert iterative_count(20000) == 20000
~~~
**Exercise:** draw the call stack for count_down(3), identify the invariant and check an invalid negative input. Reference: https://docs.python.org/3/library/exceptions.html#RecursionError
## Distinguish a cycle from deep valid input
In recursive tree traversal, a cycle can cause infinite revisits even if the tree would otherwise be shallow. A simple stack-based traversal avoids relying on the process recursion limit but still needs a visited set when the structure is actually a graph. Test a linear chain, a self-cycle and a wide shallow graph. Increasing `sys.setrecursionlimit` does not fix cycles, and setting it excessively high risks a native stack crash. Benchmark memory usage of an explicit stack separately from stack frames.
### AssertionError
Source-URL: https://ded-sec.space/learn/en/en-99.html
# Python AssertionError — invariant failure versus production input validation
## Meaning and root cause
An assertion checks a programmer's assumption during testing or debugging. In Python, optimized execution using -O removes assert statements, including the evaluation of their condition. Do not authorize access, validate data, or enforce a resource limit using assert. A failing AssertionError from a unit test may signal a wrong expected result, an incorrect implementation, or a missing precondition.
## Corrective approach
Implement a parse_limit boundary that validates ASCII decimal text and a range of 1 to 100 with ValueError, independently of optimization. Assertion statements test the expected output but are not the implementation's safety mechanism. A small collection of bad values must remain rejected under both normal and optimized Python execution.
## Executable example
Save as assertion_lab.py.
~~~python
def parse_limit(text):
if not text.isascii() or not text.isdecimal():
raise ValueError('limit must contain ASCII decimal digits')
value = int(text)
if not 1 <= value <= 100:
raise ValueError('limit must be between 1 and 100')
return value
assert parse_limit('12') == 12
for bad in ('-1', '101', '1.5', ''):
try:
parse_limit(bad)
except ValueError:
pass
else:
raise AssertionError('invalid limit accepted: ' + bad)
print('PASS: validation always runs; assertions are only tests')
~~~
## Why this is different
The code uses text.isdecimal together with text.isascii so Unicode decimal-like characters outside ASCII do not silently become part of a configuration format. The input '0' parses as an integer but is outside the accepted range. The for loop raises AssertionError manually only if a rejected input unexpectedly succeeds; it is independent of Python's optimized assert removal.
## Exact validation
Run python3 assertion_lab.py and python3 -O assertion_lab.py. Both should print PASS, because bad inputs raise ValueError even when assertions are stripped. To observe the optimization distinction safely, run python3 -c 'assert False' and python3 -O -c 'assert False; print("assert skipped")' separately; the first must fail while the second prints a message.
## Guided experiments
Introduce a new bad value such as '٠' (Arabic-Indic digit) and explain why the documented ASCII-only contract rejects it. Record the precise call frame where a real AssertionError originated, inspect actual versus expected values, and never remove a failing test solely to make CI green. For untrusted input, choose explicit validation and typed exceptions.
**Reference:** https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement
### RuntimeWarning: coroutine was never awaited
Source-URL: https://ded-sec.space/learn/en/en-100.html
# RuntimeWarning: coroutine was never awaited
## What was created?
Calling an async def function creates a coroutine object. It does not execute the function body to completion. If that coroutine is discarded without awaiting or scheduling, Python may warn during garbage collection.
~~~python
import asyncio
async def retrieve():
await asyncio.sleep(0)
return 42
# wrong = retrieve() # not awaited; may produce a warning when discarded
result = asyncio.run(retrieve())
assert result == 42
~~~
## Match the surrounding event loop
Use await retrieve() inside another async function. At a synchronous command-line entry point without a running event loop, asyncio.run can drive the coroutine. Inside Jupyter or an already running async application, do not nest asyncio.run; await from the existing loop instead.
~~~python
async def combined():
first = await retrieve()
second = await retrieve()
return first + second
assert asyncio.run(combined()) == 84
~~~
## Background tasks require ownership
create_task schedules a coroutine on the current loop, but the caller should retain and await or otherwise supervise the task and handle exceptions. Simply making a task to silence a warning can lose work at shutdown. In an asyncio.TaskGroup (on supported Python versions), child tasks are awaited as the group exits.
**Test:** verify the coroutine really performs its intended side effect or returns expected data, rather than merely confirming the warning disappeared. Documentation: https://docs.python.org/3/library/asyncio-task.html
## Keep task ownership explicit
An `async def` call *creates a coroutine object*; it does not run the body. Inside an async function, `await fetch()` waits for the result. If concurrent work is intended, `task = asyncio.create_task(fetch())` schedules it, but the caller must eventually await or otherwise manage cancellation and failure. A discarded task can lose an exception even when the original warning disappears. Test one successful operation and one exception path under `asyncio.run(main())`; check that all tasks complete before the loop shuts down.
### Uncaught TypeError
Source-URL: https://ded-sec.space/learn/en/en-101.html
# JavaScript Uncaught TypeError — validate the failing operation
## Read the message, not just its headline
TypeError is raised when a value is used in an incompatible operation: calling a nonfunction, destructuring null, or invoking an array method on a nonarray. "Uncaught" means no appropriate exception handler reached the failure.
~~~javascript
function average(values) {
if (!Array.isArray(values)) throw new TypeError("expected array");
if (!values.every(v => Number.isFinite(v))) throw new TypeError("non-finite number");
if (values.length === 0) return null;
return values.reduce((sum, v) => sum + v, 0) / values.length;
}
console.assert(average([2,4]) === 3);
console.assert(average([]) === null);
try { average({length:2}); throw Error("test failed"); }
catch (e) { if (!(e instanceof TypeError)) throw e; }
~~~
## Find the real producer
Inspect the stack frame in your source. Use typeof, Array.isArray, and a schema check at API boundaries. Optional chaining is appropriate when absence is allowed but should not paper over a contract that promises an array.
## Browser investigation
Enable pause on exceptions in DevTools and capture the actual failing argument, without logging secrets. If a Promise rejected with TypeError, handle it at an asynchronous boundary, not only with a synchronous try/catch around a non-awaited function call.
**Exercise:** distinguish undefined, null and a string being passed to average; all must be rejected before reduce runs. Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
## Reproduce at the source boundary
~~~js
function upperName(user) {
if (!user || typeof user.name !== "string")
throw new TypeError("user.name must be a string");
return user.name.toUpperCase();
}
console.assert(upperName({name:"Ada"}) === "ADA");
~~~
Test `null`, `{}` and `{name:42}` separately. A `try/catch` around the entire app is not a substitute for validating the shape of an external API payload at one well-defined boundary. If the error occurs in a Promise, its rejection must also be handled.
### ReferenceError
Source-URL: https://ded-sec.space/learn/en/en-102.html
# JavaScript ReferenceError — distinguish missing names and temporal dead zones
## Two failure modes
A variable that has never been declared is not the same as a let/const binding that exists but has not been initialized. Both can throw ReferenceError, but the second is a temporal dead zone (TDZ).
~~~javascript
try {
console.log(neverDeclared);
} catch (err) {
console.assert(err instanceof ReferenceError);
}
function normalized(text) {
const value = String(text).trim();
return value.toLowerCase();
}
console.assert(normalized(" Ada ") === "ada");
~~~
## A scope trap
The following is intentionally incorrect:
~~~javascript
// console.log(status); // ReferenceError before initialization
// const status = "ready";
~~~
Move declarations before their first read, and avoid shadowing a value with another let binding in a nested block. A typeof expression on a truly undeclared identifier can return "undefined", but querying a lexical binding in its TDZ can still throw.
## Practice
Write a module that exports normalized(), import it by its exact name and attempt a misspelling to observe a different module-level error. Distinguish a missing identifier from an object with a missing property (which reads as undefined). Fix the producer or import rather than installing unrelated libraries.
Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_lexical_declaration_before_init
## Temporal dead zone differs from missing binding
~~~js
const count = 3;
function read() { return count; }
console.assert(read() === 3);
~~~
An undeclared identifier triggers ReferenceError; so can accessing a `let` or `const` binding before initialization in its temporal dead zone. Renaming a global can hide a scope problem temporarily. Build two deliberate failing fixtures: a typo of `count`, and a `console.log(value)` before `let value = 2`. Fix each based on scope and initialization order rather than adding every variable to globalThis.
### Unexpected token
Source-URL: https://ded-sec.space/learn/en/en-103.html
# JavaScript Unexpected token — distinguish syntax, JSON and an HTML error page
## Meaning and root cause
An Unexpected token error is a parser failure, but you must identify which parser rejected the input. A JavaScript syntax error in a source module is not the same as a JSON.parse failure on a server response. JSON has a stricter grammar than JavaScript: it cannot contain trailing commas, comments or unquoted object keys. A server returning HTML on a 404 path may begin with '<' and yield a confusing JSON parsing error.
## Corrective approach
The parsePayload function checks a JSON Content-Type before attempting JSON.parse, then wraps only the parse failure with a meaningful error and cause. It demonstrates valid JSON, a trailing comma, HTML with a mismatched MIME type and malformed JSON. It does not require access to an actual server.
## Executable example
Save as unexpected_lab.cjs.
~~~javascript
function parsePayload(body, contentType) {
if (!/^application\/json(?:\s*;|\s*$)/i.test(contentType || ''))
throw new TypeError('expected JSON content type');
try { return JSON.parse(body); }
catch (cause) { throw new SyntaxError('invalid response JSON', {cause}); }
}
const ok = parsePayload('{"ready":true}', 'application/json; charset=utf-8');
if (ok.ready !== true) throw Error('wrong parsed value');
for (const [body, mime, expected] of [
['{"ready":true,}', 'application/json', SyntaxError],
['oops', 'text/html', TypeError],
['not json', 'application/json', SyntaxError],
]) {
try { parsePayload(body, mime); throw Error('malformed response accepted'); }
catch (error) { if (!(error instanceof expected)) throw error; }
}
console.log('PASS: valid JSON, trailing comma, wrong MIME, malformed JSON');
~~~
## Why this is different
The MIME check is a simplified application/json contract for this exercise; production APIs may also accept media types ending in +json after explicitly agreeing to support them. A valid MIME value does not guarantee a valid payload, and a successful parse does not guarantee an expected business schema. Check response.ok and status before reading the body, then validate its shape.
## Exact validation
Save as unexpected_lab.cjs and run node unexpected_lab.cjs. A Node 18+ runtime supports Error options with cause. The output should be PASS. For source-code syntax errors, run node --check example.js on a disposable file to distinguish static syntax checks from runtime JSON.parse.
## Guided experiments
Temporarily change the valid fixture to an unquoted key, comment or trailing comma and capture which parser rejects it. Emulate an HTML error response from your own mock instead of accessing public websites. Do not use eval to parse JSON and do not suppress parse errors with catch that returns an empty but misleading object.
**Reference:** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
### Cannot read properties of undefined
Source-URL: https://ded-sec.space/learn/en/en-104.html
# Cannot read properties of undefined — make a missing lookup explicit
## Meaning and root cause
JavaScript returns undefined when a requested object property does not exist, or when Array.find sees no matching item. Calling a method or reading another property through that missing value then throws TypeError. The stack trace points to the property access, but the first bad assumption may be an earlier lookup that was never checked.
## Corrective approach
The readTitle helper accepts only an array and finds a record by ID. A missing record is an expected lookup failure and becomes a RangeError with the requested ID; a record with an empty title is a separate schema failure and becomes TypeError. This makes missing data diagnosable instead of allowing an accidental dereference later.
## Executable example
Save as undefined_lab.cjs.
~~~javascript
function readTitle(records, id) {
if (!Array.isArray(records)) throw new TypeError('records must be an array');
const found = records.find(item => item && item.id === id);
if (found === undefined) throw new RangeError('missing record: ' + id);
if (typeof found.title !== 'string' || !found.title.trim())
throw new TypeError('invalid title at ID ' + id);
return found.title;
}
const records = [{id: 1, title: 'Intro'}, {id: 2, title: ''}];
if (readTitle(records, 1) !== 'Intro') throw Error('bad title');
for (const [input, id, expected] of [
[records, 3, RangeError],
[records, 2, TypeError],
[null, 1, TypeError],
]) {
try { readTitle(input, id); throw Error('bad input accepted'); }
catch (error) { if (!(error instanceof expected)) throw error; }
}
console.log('PASS: find absence, invalid payload, missing title');
~~~
## Why this is different
Optional chaining (`found?.title`) prevents a crash but does not ensure that a required title exists. It is appropriate for truly optional UI fields, not for constraints that must hold before rendering or persisting data. `typeof found.title` must be tested after confirming that found is an actual object. Consider whether a successful lookup is allowed to contain null entries.
## Exact validation
Save as undefined_lab.cjs and run node undefined_lab.cjs. Expected output PASS. The test covers successful lookup, absent ID, invalid record title and a nonarray argument. All data are local; no DOM or network access is needed.
## Guided experiments
Replace find with findIndex and compare its -1 absence marker. Create duplicate IDs and decide whether the API permits the first result or must reject nonunique identifiers. Inject null among records and explain why the `item &&` guard prevents callback crashes but does not establish complete dataset validity.
**Reference:** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
### Cannot read properties of null
Source-URL: https://ded-sec.space/learn/en/en-105.html
# Cannot read properties of null — distinguish an explicit state from omitted data
## Meaning and root cause
JSON has a null literal, while an object key omitted from a parsed JSON object evaluates to undefined in JavaScript. Both values reject property access but they often mean different things: null can intentionally represent a guest account, while an absent required `user` field may indicate a broken response schema. Treating both as a blank profile silently hides data errors.
## Corrective approach
The profileName boundary explicitly permits JSON user:null as the guest state and accepts a user object only when it has a nonblank string name. It rejects a missing property, a present property with undefined, a null top-level payload and a malformed user object. The tests demonstrate why the policy belongs at the input boundary.
## Executable example
Save as null_lab.cjs.
~~~javascript
function profileName(payload) {
if (!payload || typeof payload !== 'object' || Array.isArray(payload))
throw new TypeError('profile payload must be an object');
if (!Object.hasOwn(payload, 'user')) throw new TypeError('user field missing');
if (payload.user === null) return 'Guest'; // explicitly allowed state
if (!payload.user || typeof payload.user.name !== 'string' || !payload.user.name.trim())
throw new TypeError('user object is invalid');
return payload.user.name;
}
if (profileName(JSON.parse('{"user":null}')) !== 'Guest') throw Error('null state wrong');
if (profileName({user: {name: 'Ada'}}) !== 'Ada') throw Error('profile wrong');
for (const invalid of [{}, {user: undefined}, {user: {}}, null]) {
try { profileName(invalid); throw Error('invalid profile accepted'); }
catch (error) { if (!(error instanceof TypeError)) throw error; }
}
console.log('PASS: explicit null state, absent key, malformed object');
~~~
## Why this is different
`Object.hasOwn` distinguishes an omitted key from an inherited property. Optional chaining is appropriate if the UI specification truly allows a null state, but `payload.user?.name || 'Guest'` would also conceal a missing or invalid profile. `typeof null` is 'object' in JavaScript for historical reasons, so checking only typeof without an explicit null test is insufficient.
## Exact validation
Save as null_lab.cjs and run node null_lab.cjs. Expected output PASS. The fixture uses JSON.parse and plain in-memory objects; no browser is required. The helper uses Object.hasOwn available in current Node versions.
## Guided experiments
Compare the values of `JSON.parse('{}').user` and `JSON.parse('{"user":null}').user`. Then write tests for an empty name, a zero-valued user, and an inherited user property. Decide which states are legal in your app instead of adding a default everywhere.
**Reference:** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
### UnhandledPromiseRejection
Source-URL: https://ded-sec.space/learn/en/en-106.html
# Unhandled Promise rejection — an async failure needs an owner
## Reproduce safely
A Promise rejection propagates until a rejection handler is attached. In browsers and Node the diagnostic and termination policy can differ with version; never depend on a global unhandled-rejection event as the ordinary recovery mechanism.
~~~javascript
async function parseRemote(load) {
const response = await load();
if (!response.ok) throw new Error("HTTP " + response.status);
const payload = await response.json();
if (!Array.isArray(payload)) throw new TypeError("expected array");
return payload;
}
async function main() {
try {
return await parseRemote(async () => ({
ok: false, status: 503, json: async () => []
}));
} catch (error) {
console.assert(error.message === "HTTP 503");
return [];
}
}
main().then(rows => console.assert(rows.length === 0))
.catch(error => { console.error(error); });
~~~
## Where to handle the failure
An async function returns a Promise, so surrounding its invocation with synchronous try/catch *without awaiting* will not catch a later rejection. Await inside try/catch or return a chain with .catch. Keep the error boundary near the UI, CLI, or job runner that can decide whether to retry or report failure.
## Challenge
Test a malformed JSON shape separately from a 503 response and a network-rejected load function. Ensure each leads to an expected message. Do not automatically retry a failed operation that may have already produced a non-idempotent side effect.
Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
## Handle failure where the Promise is owned
~~~js
async function load() { throw new Error("offline"); }
async function main() {
try { await load(); }
catch (error) { console.assert(error.message === "offline"); }
}
main();
~~~
A rejection can originate in an async function or a `Promise.reject`; a synchronous outer `try/catch` does not catch a failure from a Promise you neither await nor return. For concurrent tasks, `Promise.all` fails fast on a rejection while `Promise.allSettled` collects all outcomes. Choose deliberately and display a user-safe failure state, without turning every error into a silent `.catch(() => {})`.
### ERR_MODULE_NOT_FOUND
Source-URL: https://ded-sec.space/learn/en/en-107.html
# Node ERR_MODULE_NOT_FOUND: module resolution and paths
## Recognize the actual failure
An ECMAScript import resolves a package, a relative path or an absolute file URL according to Node's module resolution rules. Common causes are a missing package, a relative specifier without a required extension in ESM, a wrong filename case on Linux and imports from an unexpected working directory.
## Inspect safely before changing anything
~~~sh
node --version
node -p "process.cwd()"
node -p "require.resolve('fs')"
~~~
## Repair the cause rather than suppressing the warning
Inspect the exact specifier printed in the error, check package.json type/module mode, and test import('./lib/task.js') using the real case-sensitive path. npm install is appropriate only after confirming the dependency actually belongs in package.json; installing random packages by error-string search can introduce unnecessary risk.
**Reference:** https://nodejs.org/api/esm.html
## Reproducible ESM fixture
Create a temporary folder containing the two files below. Run `node app.mjs` from that folder; no npm installation is needed.
~~~js
// lib/math.mjs
export const double = n => n * 2;
~~~
~~~js
// app.mjs
import { double } from './lib/math.mjs';
console.log(double(21));
~~~
The expected output is `42`. Rename `math.mjs` to `Math.mjs` without updating the import: a case-sensitive filesystem will reject the reference. Restore the filename and change the import to `./lib/math`: native ESM does not generally guess the missing extension for relative imports. The test distinguishes package resolution from a missing local file.
## Decide which resolver is involved
An `ERR_MODULE_NOT_FOUND` stack originating from an `import` in `.mjs` or an ESM package is not automatically fixed by `require.resolve()`; CommonJS and ESM resolution differ. Print the exact attempted specifier, inspect `package.json` exports/type fields, and resolve relative paths against the *importing module*, not the shell's current directory. On Windows test case differences on a Linux CI worker too. Do not install an unknown similarly named package merely because the error contains its name.
### require is not defined in ES module scope
Source-URL: https://ded-sec.space/learn/en/en-108.html
# require is not defined in ES module scope
## Identify the module system
Node supports CommonJS and ECMAScript modules (ESM). A .mjs file, or a .js file under a package with "type": "module", uses ESM. The CommonJS require function is not available there by default.
~~~javascript
// config.mjs
import { readFileSync } from "node:fs";
import { fileURLToPath } from "node:url";
const path = fileURLToPath(new URL("./settings.json", import.meta.url));
const text = readFileSync(path, "utf8");
const settings = JSON.parse(text);
console.log(settings.name);
~~~
## Reproduce with a safe fixture
Create settings.json beside config.mjs with {"name":"offline"} and run node config.mjs. The expected output is offline. Resolving relative to import.meta.url avoids depending on the current working directory.
## When CommonJS is appropriate
If the project intentionally uses CommonJS, use a .cjs file and its require syntax consistently rather than randomly renaming package.json. A dependency may offer only one module flavor; inspect its documented exports field before choosing import syntax.
## Follow-up tests
Run the script from a different directory and verify that it still finds its sibling file. Delete settings.json in a scratch copy and make the CLI catch ENOENT distinctly from malformed JSON. Mixing file-relative and working-directory-relative paths is a frequent cause of confusion.
Reference: https://nodejs.org/api/esm.html
## Keep module systems separate
When `package.json` declares `"type": "module"`, a `.js` file uses ESM syntax. Replace CommonJS `const fs = require("node:fs")` with `import * as fs from "node:fs"` if the whole file is ESM. Alternatively a dedicated `.cjs` file remains CommonJS. Test both modes in a disposable project, including JSON imports that may have version-dependent ESM syntax. Do not mechanically replace require calls in third-party files or assume importing ESM with require is equivalent across Node versions.
### Failed to fetch
Source-URL: https://ded-sec.space/learn/en/en-109.html
# Fetch failed — separate transport rejection from HTTP status and invalid JSON
## Meaning and root cause
The browser Fetch API ordinarily fulfills its Promise after receiving a 404 or 500 HTTP response. It rejects for a network-layer failure, abort, or certain browser policies including CORS restrictions. A catch handler labeled Failed to fetch for every non-200 status confuses different root causes. CORS failures cannot be repaired by turning off browser protections or by using no-cors to gain response body access.
## Corrective approach
Build a dependency-injected config reader. It calls a supplied transport rather than making real network requests, then separately checks transport rejection, HTTP status and the expected JSON schema. The test simulates a 200 success, HTTP 404, HTTP 500, a rejected request and a malformed config value.
## Executable example
Save as fetch_lab.cjs.
~~~javascript
async function getConfig(transport) {
let response;
try { response = await transport('/config.json'); }
catch (cause) { throw new Error('transport rejected', {cause}); }
if (!response || typeof response.status !== 'number')
throw new TypeError('invalid response object');
if (response.status < 200 || response.status >= 300)
throw new Error('HTTP ' + response.status);
const data = await response.json();
if (!data || typeof data.enabled !== 'boolean')
throw new TypeError('invalid config JSON');
return data.enabled;
}
async function main() {
if (await getConfig(async () => ({status: 200, json: async () => ({enabled: true})})) !== true) throw Error();
for (const [transport, re] of [
[async () => ({status: 404, json: async () => ({})}), /HTTP 404/],
[async () => ({status: 500, json: async () => ({})}), /HTTP 500/],
[async () => { throw new TypeError('Failed to fetch'); }, /transport rejected/],
[async () => ({status: 200, json: async () => ({enabled: 'yes'})}), /invalid config/],
]) {
try { await getConfig(transport); throw Error('invalid response accepted'); }
catch (error) { if (!re.test(error.message)) throw error; }
}
console.log('PASS: resolved HTTP failures, rejected network and schema mismatch');
}
main().catch(error => { console.error(error); process.exitCode = 1; });
~~~
## Why this is different
The mock uses an object with a numeric status property; in a browser production fetch, prefer response.ok and response.status, then confirm the response Content-Type and parse/validate the body. The example deliberately does not simulate a browser's CORS enforcement. An AbortError must usually be handled separately from a broken network connection, because user cancellation is not necessarily a fault.
## Exact validation
Save as fetch_lab.cjs and run node fetch_lab.cjs with Node 18+. Expected output PASS. No requests leave the machine, and this laboratory does not assume an actual local HTTP server is running.
## Guided experiments
With your own disposable local server, request a missing path and inspect the actual fulfilled Response rather than claiming fetch rejected. Inspect DevTools Network and Console for CORS, mixed-content restrictions and redirects. Do not add mode:no-cors as a 'fix': the opaque response will not reveal protected contents.
**Reference:** https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch
### CORS policy blocked
Source-URL: https://ded-sec.space/learn/en/en-110.html
# CORS policy blocked — browser origin boundaries
## Interpret the browser message
CORS is enforced by browsers on cross-origin requests. A response may succeed on the network yet be unavailable to page JavaScript because it lacks an appropriate Access-Control-Allow-Origin header. A preflight OPTIONS request may also fail before the intended method is sent.
## A controlled local example
Imagine a page at https://app.example.test attempting to fetch https://api.example.test/data. The API controls the response headers, not the calling JavaScript. For a non-credentialed allowlist policy, the API could return:
~~~http
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://app.example.test
Vary: Origin
Content-Type: application/json
{"ok":true}
~~~
## Do not 'fix' the browser by removing security
Setting fetch mode: "no-cors" usually yields an opaque response the page cannot inspect; it does not grant permission to read the response body. When cookies or other credentialed requests are used, wildcard Access-Control-Allow-Origin cannot be combined with credential support. Carefully configure explicit allowed origins and appropriate Access-Control-Allow-Credentials only where needed.
## Lab
Use browser Network/Console panels to inspect the request Origin, preflight OPTIONS, response headers, status and redirects. Compare GET without custom headers versus POST with Content-Type: application/json, which generally triggers preflight. Test an unauthorized origin; it must not gain readable access. Requests from curl are not subject to browser CORS enforcement and therefore cannot prove that a browser page is allowed.
Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS
## Identify the browser-side security boundary
CORS is a browser enforcement policy for cross-origin reads, not a network firewall and not a way to protect an API from non-browser clients. Inspect the actual `Origin`, request method and response `Access-Control-Allow-Origin`. A preflight `OPTIONS` may be required when a request uses non-safelisted headers or methods. Test a simple GET and a request with a custom header. Never set `Access-Control-Allow-Origin: *` together with credentialed browser requests; the browser rejects that combination. Fix the trusted server policy, not the browser's security settings.
### TS2322
Source-URL: https://ded-sec.space/learn/en/en-111.html
# TS2322 — a value violates the declared TypeScript contract
## Root cause
TS2322 reports that one type cannot be assigned to another, for example a textual amount where a numeric amount is required. The compiler does not perform parsing automatically because '12', '12x', an empty string and an overflowing number are distinct runtime inputs. A type assertion with `as number` only tells the compiler to trust you; it cannot convert text to a number at runtime.
## Reliable fix
Use a boundary function accepting unknown input, check that the value is a digit-only string and convert it with Number. Reject unsafe integers before creating a typed Entry. The production model stores integer cents, not float amounts, and the compiler checks downstream use of that model.
## Verified TypeScript example
~~~typescript
type Entry = { id: string; cents: number };
function parseCents(value: unknown): number {
if (typeof value !== 'string' || !/^(0|[1-9][0-9]*)$/.test(value))
throw new TypeError('expected nonnegative integer cents as text');
const amount = Number(value);
if (!Number.isSafeInteger(amount)) throw new RangeError('outside safe integer range');
return amount;
}
const entry: Entry = {id: 'sample', cents: parseCents('150')};
if (entry.cents !== 150) throw Error('bad conversion');
console.log('PASS TS2322');
~~~
## Why it works
TypeScript types disappear after compilation. The regular expression deliberately bans leading-zero noncanonical amounts and negative values for this specific exercise; other domains may need a different contract. Number.isSafeInteger excludes integer values that cannot be represented exactly as IEEE-754 doubles. For very large quantities, BigInt or validated decimal storage may be appropriate.
## Reproduction and build commands
Save as main.ts. Run `tsc --strict --target es2022 --module commonjs --outDir dist main.ts && node dist/main.js`. Expected PASS. In a separate bad.ts, write `const cents: number = '100';` and confirm `tsc --strict --noEmit bad.ts` emits TS2322. Do not include an intentionally failing file in the normal build.
## Diagnostics to practice
Try the values '0', '01', '10.5', '-1', 'abc' and '9007199254740992'. Predict rejection before executing. Compare `Number('')` with the guarded converter and explain why blind numeric coercion loses input validation. Use `satisfies` to check object literals without relying on unsafe casts.
**Reference:** https://www.typescriptlang.org/docs/handbook/2/everyday-types.html
### TS2339
Source-URL: https://ded-sec.space/learn/en/en-112.html
# TS2339 — narrow a union before reading a variant-specific property
## Root cause
TypeScript TS2339 reports that a property does not exist on the static type being accessed. With union types, some variants may have the property while others do not. For example, a touch event contains x/y coordinates while a typing event contains text. Reading event.x before inspecting the variant would be invalid for a typing event.
## Reliable fix
Use a discriminated union with a literal `kind` field. Checking `event.kind === 'tap'` narrows the type to the branch containing x and y; the alternative branch uses its text field. The example verifies both at runtime and remains fully checked under `--strict`.
## Verified TypeScript example
~~~typescript
type UiEvent = {kind: 'tap'; x: number; y: number} | {kind: 'type'; text: string};
function render(event: UiEvent): string {
if (event.kind === 'tap') return `tap at ${event.x},${event.y}`;
return `typed ${event.text}`;
}
if (render({kind: 'tap', x: 2, y: 3}) !== 'tap at 2,3') throw Error();
if (render({kind: 'type', text: 'ok'}) !== 'typed ok') throw Error();
console.log('PASS TS2339');
~~~
## Why it works
A property added to a JavaScript object does not modify its declared compile-time type without updating that type or using an appropriate guard. Optional chaining is not a substitute when a property is absent from every member of the static type. An unsafe cast to any hides the diagnostic and can make later code crash.
## Reproduction and build commands
Save as main.ts and run `tsc --strict --target es2022 --module commonjs --outDir dist main.ts && node dist/main.js`. Expected PASS. To reproduce the compiler warning in a separate bad.ts, declare the same UiEvent type and write `function wrong(e: UiEvent) { return e.x; }`; expect TS2339.
## Diagnostics to practice
Add a 'scroll' variant and handle it by an exhaustive switch with a never assertion in the default branch. Try a typo such as event.txt, and compare compiler feedback with an untyped dynamic object. Explain why the discriminant is more reliable than guessing fields based on truthiness.
**Reference:** https://www.typescriptlang.org/docs/handbook/2/narrowing.html
### TS7006
Source-URL: https://ded-sec.space/learn/en/en-113.html
# TS7006 — implicit any conceals the callable contract
## Root cause
TS7006 warns that a parameter has an implicit any type when noImplicitAny is active, typically via --strict. For example, `const convert = (value) => value + 1` cannot safely describe whether value should be a number or string; arithmetic and concatenation might behave differently. Merely turning off strict checking prevents this diagnostic without making the code reliable.
## Reliable fix
Specify a function type `(raw: string) => number` and assign a callback to it. Contextual typing infers the callback parameter as string without writing the same annotation again. The example parses a port from a strictly digit-only string and verifies the value is an integer from 1 through 65535.
## Verified TypeScript example
~~~typescript
type Parser = (raw: string) => number;
const parsePort: Parser = (raw) => {
const port = Number(raw);
if (!/^[0-9]+$/.test(raw) || !Number.isInteger(port) || port < 1 || port > 65535)
throw new RangeError('port out of range');
return port;
};
if (parsePort('3000') !== 3000) throw Error();
try { parsePort('0'); throw Error('accepted invalid port'); }
catch (err) { if (!(err instanceof RangeError)) throw err; }
console.log('PASS TS7006');
~~~
## Why it works
Contextual typing does not mean the runtime rejects invalid input automatically. The validation checks the original text, not only Number(raw), because Number('') yields zero. If the callback accepts untrusted network JSON, start with unknown and check it before invoking a typed parser; any bypasses this boundary.
## Reproduction and build commands
Save as main.ts and run `tsc --strict --target es2022 --module commonjs --outDir dist main.ts && node dist/main.js`. In bad.ts write `const convert = (value) => value + 1;` and compile with `tsc --strict --noEmit bad.ts`. The expected diagnostic is TS7006.
## Diagnostics to practice
Add a parser typed `(input: unknown) => number` and narrow its input before calling parsePort. Compare `map((x) => x * 2)` on a typed number array, where x is inferred, with an unannotated standalone function, where the contextual source is missing.
**Reference:** https://www.typescriptlang.org/tsconfig/noImplicitAny.html
### TS18048
Source-URL: https://ded-sec.space/learn/en/en-114.html
# TS18048 — possible undefined is a real missing-result branch
## Root cause
TS18048 warns that a value is possibly undefined. Array.find returns the first matching element or undefined if there is no match. Reading match.title immediately assumes all requested IDs exist, a premise that can fail on an empty array, a misspelled key, or a changed dataset.
## Reliable fix
Check `match === undefined` before accessing its properties; TypeScript's control-flow analysis then narrows the type in the success branch. Throw a RangeError containing the missing ID rather than relying on a later TypeError. The test confirms the normal branch and an explicit absent-ID failure.
## Verified TypeScript example
~~~typescript
type RecordItem = {id: string; title: string};
function titleById(rows: RecordItem[], id: string): string {
const match = rows.find((row) => row.id === id);
if (match === undefined) throw new RangeError(`missing ID: ${id}`);
return match.title;
}
if (titleById([{id: 'A', title: 'Intro'}], 'A') !== 'Intro') throw Error();
try { titleById([], 'B'); throw Error('accepted missing ID'); }
catch (err) { if (!(err instanceof RangeError)) throw err; }
console.log('PASS TS18048');
~~~
## Why it works
Optional chaining is useful if a missing result is acceptable and the return type reflects undefined, but a mandatory title lookup should not silently return an empty string. The non-null assertion operator (`match!`) compiles away and does not protect runtime. Do not confuse `undefined` from a missing lookup with a record whose title is an empty string; those require distinct policies.
## Reproduction and build commands
Save as main.ts and run `tsc --strict --target es2022 --module commonjs --outDir dist main.ts && node dist/main.js`. Reproduce TS18048 in a separate file with `const match = rows.find(...); console.log(match.id);` compiled under `--strict` and a recent TypeScript version.
## Diagnostics to practice
Replace find with `Map.get(id)` and identify the same undefined possibility. Design a union such as `{ok:true,value:...}|{ok:false,error:...}` instead of exceptions, then verify that callers narrow on ok before using value.
**Reference:** https://www.typescriptlang.org/docs/handbook/2/narrowing.html
### TS2307
Source-URL: https://ded-sec.space/learn/en/en-115.html
# TS2307 — module path resolution is not runtime loading
## Root cause
TS2307 says the compiler cannot locate an imported module or matching type declarations under its configured resolution rules. A wrong relative path, incorrect filename casing, a missing dependency, mismatched ESM/CommonJS settings, an unresolved alias or missing declaration package can all cause it. Creating an empty d.ts declaration that says everything is any may quiet the compiler but does not make missing JavaScript code exist at runtime.
## Reliable fix
For modern Node ESM, use module and moduleResolution set to NodeNext, a package.json with type module, and relative TypeScript imports written using the emitted .js suffix. Source file math.ts is resolved from `./math.js` by the compiler and becomes a real dist/math.js file in the output directory. This exercise requires no downloaded packages or path aliases.
## Verified TypeScript example
These are two separate source files:
~~~typescript
// math.ts
export function sum(a: number, b: number): number { return a + b; }
// main.ts (separate file)
import {sum} from './math.js';
if (sum(2, 3) !== 5) throw Error();
console.log('PASS TS2307');
~~~
## Why it works
The source illustration consists of two separate .ts files, not a single file containing two export and import declarations. Use `tsconfig.json` with strict:true, target ES2022 and outDir dist, and include both source files. The runtime then resolves the emitted .js import without a loader or bundler. NodeNext rules depend on package type; other environments may use different resolution modes.
## Reproduction and build commands
Create package.json containing `{"private":true,"type":"module"}` and tsconfig.json containing `{"compilerOptions":{"target":"ES2022","module":"NodeNext","moduleResolution":"NodeNext","strict":true,"outDir":"dist"},"include":["main.ts","math.ts"]}`. Run `tsc -p tsconfig.json && node dist/main.js` and expect PASS. For a controlled TS2307, change import to `./missing.js` and run `tsc --noEmit -p tsconfig.json` before restoring it.
## Diagnostics to practice
Investigate case-sensitive paths on Linux versus case-insensitive developer filesystems. Run `tsc --traceResolution -p tsconfig.json` and identify the attempted candidate paths. If using a tsconfig paths alias, explain that a plain Node runtime does not automatically understand it; a bundler, loader or relative emitted imports must implement it.
**Reference:** https://www.typescriptlang.org/docs/handbook/modules/reference.html
### undefined reference
Source-URL: https://ded-sec.space/learn/en/en-116.html
# C linker error: undefined reference to add
## Why compilation can succeed while linking fails
A declaration tells the C compiler that a function exists and how it can be called; it does not provide machine code for that function. Each .c file is normally compiled to a translation unit, then linked with other object files or static/shared libraries. If an object defining add is absent, compilation of main.c may succeed while linking reports an undefined reference. Adding another header without linking the implementation does not resolve that missing symbol.
## Offline reproduction and repair — C11
Save the following as reproduce.sh and run sh reproduce.sh on Linux/Termux with a C compiler installed. All source and binary files live in a disposable directory. The test deliberately expects the first link to fail, then verifies that linking both translation units produces exit code zero.
~~~sh
#!/usr/bin/env sh
set -eu
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
cat > "$work/main.c" <<'C'
int add(int a, int b);
int main(void) { return add(2, 3) == 5 ? 0 : 1; }
C
cat > "$work/add.c" <<'C'
int add(int a, int b) { return a + b; }
C
if cc -std=c11 -Wall -Wextra -Werror "$work/main.c" -o "$work/broken" 2>"$work/error.log"; then
echo 'FAIL: missing object was incorrectly linked' >&2
exit 1
fi
cc -std=c11 -Wall -Wextra -Werror "$work/main.c" "$work/add.c" -o "$work/fixed"
"$work/fixed"
printf 'PASS: missing definition rejected; both translation units linked\n'
~~~
## Diagnosing a larger build
Compile each file separately with cc -c main.c and cc -c add.c, then link both object files. If the definition is in an archive, the order of object files and -l flags can matter on GNU-style linkers because a static library is searched for currently unresolved symbols. On a compatible system, nm main.o may show U add and nm add.o may show T add. If the name exists but linking still fails, investigate C versus C++ name linkage, architecture mismatch and which library binary was actually selected.
## Questions and boundaries
1. Remove only add.c from the successful link line and predict the stage of failure. Distinguish a missing declaration from a missing definition.
2. Change the definition's name to sum_values without changing the declaration. Explain why editing the header alone is insufficient.
3. Create a static archive using ar rcs libmathlocal.a add.o and compare both orders: main.o -L. -lmathlocal and -L. -lmathlocal main.o on a suitable linker. Record which works.
4. Inspect the saved error.log in the temporary directory before cleanup by adding a diagnostic line. Do not silence the linker with suppression flags.
**Evidence:** the initial nonzero link result, PASS from the corrected build, and an explanation of the two distinct compilation stages.
**Reference:** https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
### implicit declaration of function
Source-URL: https://ded-sec.space/learn/en/en-117.html
# C implicit function declaration: the correct prototype matters
## What the compiler is telling you
C11 requires a visible declaration before calling a function. A missing prototype is not a linker error: the compiler lacks the correct function signature at the call site and might assume unsafe calling conventions in old C dialects. For standard-library functions, include the documented standard header; do not guess the return type or hand-write an incompatible prototype. The strlen function is declared by string.h, not by stdio.h.
## Reproduce the warning-as-error and fix it
Run sh reproduce.sh after saving the script below on Linux or Termux with a suitable C11 compiler. The first compilation deliberately lacks string.h and must fail. The second inserts the correct standard header and checks that the output is 3. All files are disposable, and the commands never modify project sources.
~~~sh
#!/usr/bin/env sh
set -eu
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
cat > "$work/broken.c" <<'C'
#include
int main(void) {
printf("%zu\n", strlen("Ada"));
return 0;
}
C
if cc -std=c11 -Wall -Wextra -Werror=implicit-function-declaration "$work/broken.c" -o "$work/broken" 2>"$work/error.log"; then
echo 'FAIL: call without prototype was not diagnosed' >&2
exit 1
fi
{ printf '#include \n'; cat "$work/broken.c"; } > "$work/fixed.c"
cc -std=c11 -Wall -Wextra -Werror "$work/fixed.c" -o "$work/fixed"
output=$("$work/fixed")
test "$output" = '3'
printf 'PASS: missing declaration rejected; correct header restored\n'
~~~
## Why suppression is the wrong correction
Disabling an implicit-declaration diagnostic does not establish the correct return type or parameter conversions. On 64-bit platforms, silently treating a pointer-returning function as int can truncate an address and crash. For a project-owned function, place the declaration in a shared header and include it from both caller and implementation. For an external library, confirm which package supplies the declaration and link the matching implementation separately; these are two different checks.
## Practical fault isolation
1. Compare the compiler's diagnostic with the failure from the undefined-reference lesson: in which build stage does each arise?
2. Replace strlen with a private function, write a header defining its prototype and deliberately mismatch one parameter type. Explain why the compiler can now detect the mismatch.
3. Compile under the C standard the project actually supports; document GCC or Clang version and flags. Never rely on permissive pre-C99 implicit-function rules.
4. When cross-compiling for Android, confirm target-compatible headers and libraries in the toolchain rather than copying host headers into the project.
**Evidence:** rejected invalid compile, valid compile and output 3, plus a written rule for where project prototypes live.
**Reference:** https://en.cppreference.com/w/c/string/byte/strlen.html
### segmentation fault
Source-URL: https://ded-sec.space/learn/en/en-118.html
# Segmentation fault: reproduce the memory violation
## Recognize the actual failure
A segmentation fault indicates an invalid memory access detected by the operating system. In C/C++ this can follow dereferencing an invalid pointer, indexing past a buffer, use-after-free or stack exhaustion. The printed crash location may be downstream of the original corruption.
## Inspect safely before changing anything
~~~sh
cc -g -O0 -Wall -Wextra -fsanitize=address,undefined demo.c -o demo
./demo
~~~
## Repair the cause rather than suppressing the warning
Use sanitizers when supported, otherwise a debugger with symbols and a minimized reproducer. Reduce input size and test the last safe index before the failure. Avoid enabling sanitizers on a production executable without understanding overhead and toolchain support. Do not interpret a compiler warning-free build as evidence of memory safety.
**Reference:** https://clang.llvm.org/docs/AddressSanitizer.html
## Tiny boundary experiment
A crash report is evidence of an invalid access, not necessarily the site of its origin. Use a *valid* baseline first:
~~~c
#include
int main(void) {
int values[3] = {10, 20, 30};
for (size_t i = 0; i < sizeof values / sizeof values[0]; ++i)
printf("%d\n", values[i]);
return 0;
}
~~~
Compile with `cc -std=c11 -g -O0 -Wall -Wextra -fsanitize=address,undefined demo.c -o demo` where supported. Expected output is three lines: 10, 20, 30. In a disposable lab, change the loop condition to `<=`; a sanitizer can report a stack-buffer-overflow at index 3. Do not run intentionally invalid native samples against important data.
## Trace the fault to ownership
For heap buffers, draw the allocation, every alias, the free operation and subsequent reads. If a pointer was freed but is still referenced, changing the crash location with a log statement does not repair the use-after-free. Validate with a sanitizer-enabled test build and then a normal release build. In a debugger, a stack trace, input fixture and compiler flags are necessary together; a stack trace alone may point after the corruption.
### double free
Source-URL: https://ded-sec.space/learn/en/en-119.html
# Double free — ownership transfer and cleanup invariants
## What the failure actually means
Calling free twice for the same allocation is undefined behavior, even if a program appears to keep running. It usually means two cleanup paths believe they own the same allocation: one function frees the memory while another alias still treats it as live. The allocator or AddressSanitizer may report attempting double-free, but the exact error text and crash behavior vary.
## Controlled solution
Design one owner for each allocation. This helper returns a new buffer only through an output pointer; the caller owns and releases it exactly once on success. On failure it returns a status and leaves the caller output as NULL. This avoids a dangerous reproducer and exercises both success and error cleanup in isolation.
## Source example
Save this as double_free_lab.c.
~~~c
#include
#include
#include
static int make_label(char **out, const char *source) {
if (!out || !source) return -1;
*out = NULL;
size_t n = strlen(source);
if (n > 64) return -2;
char *p = malloc(n + 1);
if (!p) return -3;
memcpy(p, source, n + 1);
*out = p; /* caller now owns p */
return 0;
}
int main(void) {
char *owner = NULL;
if (make_label(&owner, "safe") != 0) return 1;
if (strcmp(owner, "safe") != 0) return 2;
free(owner);
owner = NULL;
free(owner); /* C defines free(NULL) as a no-op */
if (make_label(&owner, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789too-big") != -2 || owner != NULL) return 3;
puts("PASS: single owner, cleanup, error path");
}
~~~
## Why this design works
A successful transfer sets the output pointer only after allocation and copy complete. free(NULL) is explicitly permitted in ISO C; setting one local variable to NULL after free protects only that variable, not other aliases. The helper assumes source is a valid, NUL-terminated C string: a pointer to untrusted nonterminated memory violates that contract even before malloc. In a larger API, document which function destroys the allocation and never free an object after transferring it to another owner.
## Reproduce the diagnosis safely
Compile and run using gcc -std=c11 -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer -g double_free_lab.c -o double_free_lab && ./double_free_lab. If a sanitizer is not available, use the strict warnings and ordinary execution, reporting the limitation. Deliberately corrupting live application allocations is not required.
## Practice and expected evidence
Record the owner before and after success, simulate a rejected overlong label, and verify that failed allocation paths cannot double-release a value. Add a conceptual trace with two aliases and explain why nulling one does not invalidate the other. Prefer C++ RAII where available. A sanitizer checks exercised paths, not every possible input.
**Authoritative reference:** https://clang.llvm.org/docs/AddressSanitizer.html
### heap buffer overflow
Source-URL: https://ded-sec.space/learn/en/en-120.html
# Heap buffer overflow — exact allocation and checked copy
## What the failure actually means
A heap-buffer-overflow occurs when code reads or writes outside an allocated dynamic buffer. It often comes from allocating strlen(source) bytes and then copying the trailing NUL as well, trusting an unbounded length or making size_t arithmetic overflow. A heap corruption may manifest later than the offending operation; use a source-level size contract, not the absence of a crash, as evidence of safety.
## Controlled solution
Implement a copy function with one owner and a strict application policy of at most 32 content bytes. The allocation is n+1 for the terminator. The function rejects an overlong string before allocation and leaves the output NULL on failure. All test strings are synthetic and NUL-terminated, so no external data or unsafe overflow is executed.
## Source example
Save this as heap_buffer_lab.c.
~~~c
#include
#include
#include
static int copy_text(const char *source, char **out) {
if (!source || !out) return -1;
*out = NULL;
size_t n = strlen(source);
if (n > 32) return -2; /* policy cap also prevents n+1 overflow */
char *buffer = malloc(n + 1);
if (!buffer) return -3;
memcpy(buffer, source, n + 1);
*out = buffer;
return 0;
}
int main(void) {
char *result = NULL;
if (copy_text("hello", &result) != 0) return 1;
if (strcmp(result, "hello") != 0) return 2;
free(result);
result = NULL;
if (copy_text("012345678901234567890123456789012", &result) != -2 || result != NULL) return 3;
if (copy_text("", &result) != 0 || strcmp(result, "") != 0) return 4;
free(result);
puts("PASS: exact allocation, upper bound, empty string");
}
~~~
## Why this design works
The policy cap prevents overflow of n+1 and bounds the allocation. The test verifies a normal copy, rejected input with 33 bytes and an empty string, which still allocates one terminator byte. strlen itself assumes a valid terminated source. For arbitrary incoming data use a length-delimited input and verify the claimed accessible size before scanning memory. calloc is not a substitute for capacity checks and memcpy does not check destination size.
## Reproduce the diagnosis safely
Compile with gcc -std=c11 -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer -g heap_buffer_lab.c -o heap_buffer_lab && ./heap_buffer_lab. A sanitizer can report invalid memory access along paths it runs, but does not establish universal safety.
## Practice and expected evidence
Change the policy to 16 and verify that a 17-byte value is rejected. Explain why an allocation of n rather than n+1 would be wrong. Consider the behavior when out aliases source storage and document a non-aliasing precondition; the helper is intended for distinct caller-owned output pointers. Capture expected and observed results for each boundary.
**Authoritative reference:** https://clang.llvm.org/docs/AddressSanitizer.html
### stack buffer overflow
Source-URL: https://ded-sec.space/learn/en/en-121.html
# Stack buffer overflow — a fixed-array copy with failure atomicity
## What the failure actually means
Stack-buffer-overflow means an automatic array on the stack is accessed beyond its bounds. A frequent mistake is treating an eight-byte destination as capacity for eight visible characters when a C string also needs one NUL byte. Replacing strcpy with an unchecked memcpy does not solve the problem; the destination capacity must be part of the contract.
## Controlled solution
Implement a helper that receives the actual destination capacity and checks strlen(source) before copying. The example uses an eight-byte local array and shows a seven-character input succeeds, an eight-character input is rejected without changing the previous string, and the empty input leaves a valid terminator. Unlike an unsafe reproducer, no call intentionally writes outside the array.
## Source example
Save this as stack_buffer_lab.c.
~~~c
#include
#include
static int copy_label(char dest[8], size_t capacity, const char *source) {
if (!dest || !source || capacity == 0) return -1;
size_t n = strlen(source);
if (n >= capacity) return -2; /* account for the final NUL */
memcpy(dest, source, n + 1);
return 0;
}
int main(void) {
char small[8] = {0};
if (copy_label(small, sizeof small, "example") != 0) return 1;
if (strcmp(small, "example") != 0) return 2;
if (copy_label(small, sizeof small, "12345678") != -2) return 3;
if (strcmp(small, "example") != 0) return 4;
if (copy_label(small, sizeof small, "") != 0) return 5;
if (strcmp(small, "") != 0) return 6;
puts("PASS: exact fit, rejected long input, unchanged buffer");
}
~~~
## Why this design works
The precondition is that source is a valid, terminated C string. strlen on an invalid or unterminated pointer can already read beyond accessible memory, so parsing binary or untrusted buffers must use bounded input lengths instead. A function parameter written char dest[8] is adjusted to a pointer in C; sizeof dest inside the helper would not return eight. That is why the caller supplies sizeof small explicitly.
## Reproduce the diagnosis safely
Compile gcc -std=c11 -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer -g stack_buffer_lab.c -o stack_buffer_lab && ./stack_buffer_lab. Expected output is PASS. Build without the sanitizer only if it is unavailable and record the reduced coverage.
## Practice and expected evidence
Extend the tests to a one-byte destination, zero capacity, and a missing pointer without dereferencing it. Discuss why an error must not partially alter output. Try passing capacity 7 instead of sizeof small and verify that the conservative check rejects a seven-character input. Explain why exact buffer bounds matter more than whether data lives on the stack or heap.
**Authoritative reference:** https://clang.llvm.org/docs/AddressSanitizer.html
### Compiler diagnostic reference — C++, Rust and Go
Source-URL: https://ded-sec.space/learn/en/en-122.html
# Compiler diagnostic reference — C++, Rust and Go
## no matching function for call
### Meaning
Overload resolution cannot find a function accepting the supplied arguments. Read the rejected candidate signatures, including argument count, order, namespace, constness, references and template constraints.
### Reproducible example
~~~cpp
#include
#include
void repeat(std::string_view text, int count) {
for (int i=0; i usize { text.len() }
fn main() {
let message = String::from("hello");
// let size = consume(message); println!("{}", message); // E0382
let size = consume(message.clone());
assert_eq!(size, 5);
assert_eq!(message, "hello");
}
~~~
## Decide whether copying is actually necessary
Clone allocates another String. When the function only reads text, borrow a slice instead:
~~~rust
fn measure(text: &str) -> usize { text.len() }
fn check() {
let original = String::from("hello");
assert_eq!(measure(&original), 5);
assert_eq!(original, "hello");
}
~~~
## Lab and counterexample
Deliberately uncomment the moved-value sequence and run cargo check to observe E0382. Compare a String with an integer i32, which implements Copy. Draw a small ownership map after each statement. If the callee must own the data, redesign how the result or the data flows back; cloning everything can hide unnecessary memory costs.
Reference: https://doc.rust-lang.org/error_codes/E0382.html
## Check bytes versus ownership, not just compilation
Make the borrowed version accept `&str` and call it twice with the same `String`; neither call consumes the owner. Use a string such as `"é"` and compare `.len()` (UTF-8 bytes) with `.chars().count()` (Unicode scalar values). This catches a separate semantic bug that the borrow checker cannot catch. A `String` is not `Copy`, while `i32` is; don't infer ownership moves from the appearance of assignments alone. For a queue that must *retain* ownership of a submitted message, moving may be the desired API contract. Show the compiler error with a failing fixture, then test borrowing and deliberate cloning as distinct fixes.
### E0502
Source-URL: https://ded-sec.space/learn/en/en-125.html
# Rust E0502 — immutable and mutable borrows overlap
## The conflicting lifetimes
Rust allows multiple read-only references, or a unique mutable reference, but not both active on the same data. A Vec push may reallocate its backing buffer, invalidating references into it.
~~~rust
fn main() {
let mut names = vec![String::from("Ada")];
let first = &names[0];
// names.push(String::from("Grace")); // E0502 if first used below
println!("{}", first);
names.push(String::from("Grace")); // immutable borrow is finished
assert_eq!(names.len(), 2);
}
~~~
## Repair through phases
End the borrowing read before modifying the structure. For a membership check, return a boolean before mutating:
~~~rust
fn add_if_missing(names: &mut Vec, candidate: &str) {
let exists = names.iter().any(|name| name == candidate);
if !exists { names.push(candidate.to_owned()); }
}
~~~
## Test deliberately
Check an already-present value and a new value. Create a failing variation that uses first after push, then fix it without unsafe. For mutation of independent pieces of a slice, investigate split_at_mut, which gives nonoverlapping mutable references. RefCell has runtime borrow checks and is not a generic fix for poorly scoped references.
Reference: https://doc.rust-lang.org/error_codes/E0502.html
## Why storing indices can be safer than storing borrows
A `Vec` may grow its allocation after `push`, so holding `&names[0]` across that mutation is invalid. Store index `0` instead, append another element, and only *then* borrow `&names[0]`. Verify the first element is still `"Ada"` and the final length is two. If you need a snapshot independent of future mutations, `let first = names[0].clone()` has different allocation semantics. A borrow that is never used after `push` ends before the mutation under non-lexical lifetimes. Do not conclude that an earlier `let first = &names[0]` is forbidden by itself.
### E0597
Source-URL: https://ded-sec.space/learn/en/en-126.html
# Rust E0597 — borrowed value does not live long enough
## The invalid lifetime
A reference cannot outlive its owner. If a function tries to return a reference into a local String, that String is destroyed on return. Lifetime annotations do not create extra storage or prolong the underlying object.
~~~rust
// fn broken<'a>() -> &'a str {
// let local = String::from("temporary");
// &local // invalid reference to destroyed storage
// }
fn owned() -> String {
String::from("persistent")
}
fn main() {
let text = owned();
let view: &str = &text;
assert_eq!(view, "persistent");
}
~~~
## Borrow from the caller instead
If the returned slice should refer to an existing argument, make that relationship explicit:
~~~rust
fn first_word(input: &str) -> &str {
input.split_whitespace().next().unwrap_or("")
}
~~~
The returned &str is usable while the input remains alive. If the caller needs to keep the result after discarding the input, return an owned String instead.
## Experiment
Call first_word on a long-lived String, then attempt to keep the borrowed result outside that String's scope. Read the compiler's lifetime diagnostic and change the API contract, not the annotation to a fabricated static lifetime. Repeat with a struct that must store either a borrowed view with a legitimate lifetime parameter or an owned String.
Reference: https://doc.rust-lang.org/error_codes/E0597.html
## A lifetime is a relationship, not a memory allocator
For `fn first_word(input: &str) -> &str`, the returned value is a view inside `input`. Test `first_word("") == ""`, `first_word("Ada Lovelace") == "Ada"` and `first_word(" Alan") == "Alan"`. Now redesign a cache that must retain a word after the source buffer is dropped: return `String` with `.to_owned()`, rather than claiming `&'static str`. A literal string is static, but a slice into a caller-owned String is not. In a struct storing both a String and a reference into itself, a self-referential design requires special care; simpler ownership or stable indices are often safer than inventing lifetime parameters.
### E0277
Source-URL: https://ded-sec.space/learn/en/en-127.html
# Rust E0277 — a required trait is not implemented
## A real compile-time requirement
A generic operation can require a trait such as Debug, Display, Clone or Send. A type without that trait cannot be used, even if its fields seem straightforward.
~~~rust
// struct Record { number: i32 }
// println!("{:?}", Record { number: 3 }); // E0277: Debug missing
#[derive(Debug)]
struct Record { number: i32 }
fn main() {
let record = Record { number: 3 };
println!("{:?}", record);
}
~~~
## Match the requested trait
Debug and Display are not interchangeable; the former is primarily intended for diagnostic formatting and the latter for user-facing values. A function that requires Display can express that constraint:
~~~rust
fn show(value: T) -> String {
format!("{value}")
}
~~~
Try show(42) and show("Ada"), then try show(Record { number: 3 }) as a compile-fail example until Display is explicitly implemented.
## Safety and review
Deriving Debug on a type with secrets can leak data into logs. Before adding a trait, ask whether it expresses the intended API. Do not add unsafe implementations to satisfy thread-bound traits without proving their invariants.
Reference: https://doc.rust-lang.org/error_codes/E0277.html
## Implement the missing contract deliberately
Try implementing `std::fmt::Display` only for the safe public field of the record:
~~~rust
impl std::fmt::Display for Record {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "record #{}", self.number)
}
}
~~~
Now `show(Record { number: 3 })` can compile and yield `"record #3"`. Verify this separately from `{:?}`, which uses `Debug`. Do not derive Debug for a type that holds credentials unless sensitive members are intentionally omitted from logs. A trait error might also arise from missing bounds on an enclosing generic function; implementing a trait globally is not always the correct API repair.
### E0308
Source-URL: https://ded-sec.space/learn/en/en-128.html
# Rust E0308 — an expression has the wrong type
## Find the incompatible branch
Rust branches producing a value need compatible types. An accidental semicolon converts a value expression into unit (), causing a mismatch with the declared return type.
~~~rust
fn classify(score: u8) -> &'static str {
if score >= 50 { "pass" } else { "retry" }
}
fn main() {
assert_eq!(classify(49), "retry");
assert_eq!(classify(50), "pass");
}
~~~
The following deliberately broken function would yield a mismatch:
~~~rust
// fn broken() -> i32 {
// let value = 3;
// value; // semicolon returns unit (), not i32
// }
~~~
## Repair the type contract
Read both sides of if, every match arm, the function return type, and the final block expression. Decide whether two string branches should return both borrowed &str values or both owned Strings. Do not use an unchecked cast simply to make the error disappear.
## Independent exercise
Rewrite classify to return an enum with Pass and Retry variants, derive PartialEq and test scores 0, 49, 50, 100, 255. Compiler type correctness and business threshold correctness are separate requirements.
Official diagnostic: https://doc.rust-lang.org/error_codes/E0308.html
## Diagnose the type of each branch
A frequent repair is to wrap *both* outcomes in the same algebraic type rather than forcing a cast:
~~~rust
fn parse_port(text: &str) -> Result {
match text.parse::() {
Ok(value) if value > 0 => Ok(value),
Ok(_) => Err("port must be nonzero"),
Err(_) => Err("invalid decimal port"),
}
}
~~~
Test `"8080"` as success, `"0"` as domain failure and `"70000"` as parse failure. An `Ok(8080)` arm and a bare `"invalid"` arm are incompatible: the latter must be `Err(...)`. Keeping a typed error result is clearer than silencing a mismatch with unchecked numeric conversions. Also inspect the final expression: `Ok(value);` followed by no expression returns `()`.
### NullPointerException
Source-URL: https://ded-sec.space/learn/en/en-135.html
# NullPointerException — locate the boundary, not just the crash
## What the failure actually means
In Java, a NullPointerException is thrown when code uses a null reference in an operation requiring an object. A typical example is calling a string method on Map.get(key) when the key is absent: Map.get returns null in that case, and some maps may also store actual null values. A long stack trace identifies where the dereference happened but not necessarily where the missing value originated.
## Controlled solution
Build an API boundary that distinguishes a programming error (null map or key) from an expected but absent configuration entry. Objects.requireNonNull gives a clear diagnostic for forbidden null arguments. The helper checks that a key exists and holds nonblank text before calling strip. It intentionally reports a user-facing IllegalArgumentException for missing configuration rather than accidentally generating an NPE at the string method.
## Source example
Save this as NullSafetyLab.java.
~~~java
import java.util.Map;
import java.util.Objects;
public class NullSafetyLab {
static String label(Map config, String key) {
Objects.requireNonNull(config, "config map is required");
Objects.requireNonNull(key, "lookup key is required");
String value = config.get(key);
if (value == null || value.isBlank()) {
throw new IllegalArgumentException("missing or blank setting: " + key);
}
return value.strip();
}
public static void main(String[] args) {
if (!"ready".equals(label(Map.of("mode", " ready "), "mode"))) throw new AssertionError();
try {
label(Map.of(), "mode");
throw new AssertionError("missing key accepted");
} catch (IllegalArgumentException expected) {
if (!expected.getMessage().contains("mode")) throw new AssertionError();
}
try {
label(null, "mode");
throw new AssertionError("null map accepted");
} catch (NullPointerException expected) {
if (!"config map is required".equals(expected.getMessage())) throw new AssertionError();
}
System.out.println("PASS: explicit API contract and missing-key diagnosis");
}
}
~~~
## Why this design works
The test intentionally exercises both branches using local immutable fixtures. It checks the normal value, a missing key and a null map. The caller catches the documented exceptions and confirms their messages instead of swallowing every RuntimeException. Do not replace all null checks with Optional indiscriminately; decide where null is allowed, where absence is a normal result, and where it is a contract violation.
## Reproduce the diagnosis safely
Compile and run on Java 11+ (the code uses isBlank and strip): javac NullSafetyLab.java && java NullSafetyLab. Expected output begins PASS. Run java -version and javac -version if compilation or execution fails, because SDK and runtime versions may differ.
## Practice and expected evidence
Remove the value check experimentally and predict the precise expression that triggers the NPE when Map.get returns null. Restore it, then test a blank string and a null key. Compare explicit checks with Objects.requireNonNull and record which exception class each is intended to represent. Never log secret configuration values while diagnosing a missing setting.
**Authoritative reference:** https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Objects.html
### Compiler and SQL error triage: names, constraints and syntax
Source-URL: https://ded-sec.space/learn/en/en-138.html
# Compiler and SQL error triage: names, constraints and syntax
## cannot find symbol
**Language / environment:** Java
### Meaning
A name, type or method cannot be resolved at compile time.
### Repair
Check imports, package declaration, spelling and method signature.
## UNIQUE constraint failed
### Exact diagnosis
A UNIQUE index protects business identities or other unique combinations. Duplicate writes can mean repeated requests, bad source data or a race between checking and inserting. A SELECT-before-INSERT check is not atomic; the constraint remains the authority. Treat conflict policies explicitly rather than deleting conflicting rows.
### Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE jobs(key TEXT PRIMARY KEY, attempts INTEGER NOT NULL)")
sql = """INSERT INTO jobs(key, attempts) VALUES (?, 1)
ON CONFLICT(key) DO UPDATE SET attempts = attempts + 1"""
db.execute(sql, ("job-1",))
db.execute(sql, ("job-1",))
assert db.execute("SELECT attempts FROM jobs WHERE key='job-1'").fetchone()[0] == 2
assert db.execute("SELECT COUNT(*) FROM jobs").fetchone()[0] == 1
~~~
### Resolution procedure
Define whether the operation is create-only, a true update or a retry of the same event. ON CONFLICT targets a specific uniqueness rule; use it intentionally. INSERT OR REPLACE can delete and reinsert, affecting row IDs, triggers and foreign keys. Store idempotency keys when retries must not increase counts or charges.
### Lab and boundary conditions
Change the example so repeating job-1 does not increment attempts. Add a second unique field and test which conflict target is triggered. Verify that unrelated integrity violations still raise instead of being swallowed.
## syntax error near
### Exact diagnosis
A SQL parser error occurs before a statement can execute. The named token is where the parser became unable to continue, not necessarily where the incorrect delimiter began. Syntax depends on the engine and version: a MySQL clause may not be valid in SQLite or PostgreSQL. Treat values and SQL identifiers differently when constructing statements.
### Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE measures(value INTEGER)")
bad = "INSERT INTO measures(value,) VALUES (3)"
try:
db.execute(bad)
except sqlite3.OperationalError as exc:
assert "syntax" in str(exc).lower()
else:
raise AssertionError("bad SQL parsed")
db.execute("INSERT INTO measures(value) VALUES (?)", (3,))
assert db.execute("SELECT value FROM measures").fetchone() == (3,)
~~~
### Resolution procedure
Capture the exact SQL statement with sensitive parameter values redacted. Minimize to the first failing clause while preserving engine/version context. Look for trailing commas, unmatched quotes and reserved identifiers. Parameter placeholders bind values only: choose identifiers from a validated allowlist rather than inserting untrusted column names.
### Lab and boundary conditions
Try a table name that is a reserved keyword, repair it with the quoting rules for your chosen SQL engine, and test a parameter containing an apostrophe without manual escaping. Distinguish parser errors from no-such-column errors.
### UnsupportedClassVersionError
Source-URL: https://ded-sec.space/learn/en/en-139.html
# UnsupportedClassVersionError — bytecode target versus active JVM
## What the failure actually means
Java class files contain a header beginning with the magic bytes CAFEBABE, a two-byte minor version and a two-byte major version. If an older JVM tries to load bytecode created for a newer Java release, it can throw UnsupportedClassVersionError. For example, class file major 61 represents Java 17 and major 65 represents Java 21. A project's compile step passing does not establish that its deployment JVM understands the resulting bytecode.
## Controlled solution
This portable probe reads byte arrays without executing untrusted class files. It checks the class file magic and major-version field, including an intentionally invalid magic header. It is not a complete parser or security validator, but it teaches which bytes a version diagnostic concerns.
## Source example
Save this as ClassVersionLab.java.
~~~java
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class ClassVersionLab {
static int major(byte[] bytes) throws IOException {
try (DataInputStream input = new DataInputStream(new ByteArrayInputStream(bytes))) {
if (input.readInt() != 0xCAFEBABE) throw new IOException("not a class file");
input.readUnsignedShort(); // minor class-file version
return input.readUnsignedShort();
}
}
public static void main(String[] args) throws Exception {
byte[] java17 = {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, 0, 0, 0, 61};
byte[] java21 = {(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, 0, 0, 0, 65};
if (major(java17) != 61 || major(java21) != 65) throw new AssertionError();
try {
major(new byte[]{0, 0, 0, 0, 0, 0, 0, 65});
throw new AssertionError("invalid class accepted");
} catch (IOException expected) {
if (!expected.getMessage().contains("class file")) throw new AssertionError();
}
System.out.println("PASS: Java 17/21 class versions and invalid magic");
}
}
~~~
## Why this design works
Run javac ClassVersionLab.java && java ClassVersionLab on a JVM capable of compiling this file (tested with Java 21). A real jar can be inspected without running it: use javap -verbose -classpath app.jar fully.qualified.ClassName to see its major version, or inspect one .class safely with a standard binary viewer. Avoid assuming the name of a jar proves compatibility.
## Reproduce the diagnosis safely
If deploying to Java 17, compile source and dependencies for that baseline, e.g. javac --release 17 Source.java when supported. The --release flag controls APIs available to the compiler as well as bytecode target; -source and -target alone can permit accidental references to newer APIs. Third-party dependencies also have their own class file targets, so inspect them separately. Verify java -version on the actual service host, container or Android-compatible runtime, not only on the developer laptop.
## Practice and expected evidence
Document exact compiler version, runtime version, the major version of the failing class and the earliest version required. Do not download random precompiled bytecode tools to bypass version checks. If a newer runtime cannot be installed, rebuild from compatible source and dependencies rather than editing major bytes in the header: changing the number does not backport newer bytecodes or library APIs.
**Authoritative reference:** https://docs.oracle.com/javase/specs/jvms/se21/html/jvms-4.html
### CS0103
Source-URL: https://ded-sec.space/learn/en/en-140.html
# CS0103 — The name does not exist in the current context
**Environment:** C# compiler (Roslyn), during compilation.
## What the diagnostic actually says
The compiler cannot resolve an identifier at the point where it is used. Most often, the name is misspelled, capitalization differs, or a local variable was declared inside a block whose scope already ended. Importing a namespace will not repair a missing local variable. Check the line and column in the compiler output before changing imports.
## Reproduce: scope, not missing package
~~~csharp
using System;
class Program {
static void Main() {
if (true) { int attempts = 3; }
Console.WriteLine(attempts); // CS0103: attempts is out of scope
}
}
~~~
Move the declaration into the enclosing method and then assign within the conditional:
~~~csharp
using System;
class Program {
static void Main() {
int attempts = 0;
if (true) { attempts = 3; }
Console.WriteLine(attempts);
}
}
~~~
**Expected output:** `3`. With the first version, `dotnet build` should report CS0103 if these sources belong to a valid C# project; in the second, the identifier is in scope and definitely assigned.
## Investigation path
1. Compare spelling and capitalization with the declaration. `Attempt` and `attempt` are different names.
2. Look for closing braces between the declaration and the use. A local declared in `if`, `for`, or a helper method cannot be used outside that scope.
3. If you intended to access an instance field, make sure you are inside the appropriate instance context and use `this.field` where helpful; a static method cannot directly access a nonstatic field.
4. For generated source or conditional compilation, verify the expected declaration is present in this build configuration.
5. Rebuild the **specific project** showing the error. Inspect the first diagnostic rather than fixing secondary cascades.
## Boundary test and mistake to avoid
Try changing `attempts` to `Attempts` in just the print statement and observe the failure again. Do not make the variable global merely to silence CS0103: choose the smallest correct scope, and pass values as parameters when crossing method boundaries.
### CS0246
Source-URL: https://ded-sec.space/learn/en/en-141.html
# CS0246 — Type or namespace name could not be found
**Environment:** C# project compiler; type and namespace resolution.
## Identify which dependency is missing
CS0246 concerns a *type or namespace*, unlike CS0103 which often concerns a local identifier. Possible causes include a missing `using` directive, an absent project/package reference, a namespace spelling error, a mismatched target framework, or a type that is not publicly accessible.
## Reproduce and resolve a missing import
In a C# project without an implicit/global import for `System.Collections.Generic`, this declaration fails:
~~~csharp
using System;
// List values = new(); // CS0246 if Collections.Generic is not imported
~~~
Two correct choices are:
~~~csharp
using System.Collections.Generic;
List values = new() { 2, 4, 6 };
System.Console.WriteLine(values.Count);
~~~
or `System.Collections.Generic.List` without the import. **Expected output:** `3`. Modern SDK-style templates may provide implicit global usings, so test in a project with that feature disabled or use a distinct missing namespace for a reliable reproduction.
## Distinguish imports from references
A `using` only makes an already-referenced namespace easier to name. It cannot install a NuGet package or add a project dependency. For an external type, inspect the `.csproj` for `PackageReference` or `ProjectReference`, restore dependencies with `dotnet restore`, and check the package version and target framework. If source code defines the type, verify the namespace declaration and `public` visibility where projects are separate.
## Practical debugging order
1. Read the **first** CS0246 and note the exact unresolved type.
2. Use a fully qualified type name to test whether it is only an import problem.
3. Search the project for the actual namespace and verify case.
4. Check project references, generated build assets and SDK/target framework; then rebuild.
5. Avoid installing a similarly named random package just because a search result mentions it.
## Boundary case
If `List` builds with no explicit `using`, inspect `ImplicitUsings` or global usings before claiming the diagnostic is unreproducible. Compilation context matters.
### CS0029
Source-URL: https://ded-sec.space/learn/en/en-142.html
# CS0029 — Cannot implicitly convert one type to another
**Environment:** C# static type checking.
## Understand the conversion boundary
CS0029 occurs when the expression's type cannot be assigned implicitly to the destination. C# does not turn a string into an integer merely because its characters are digits. It also refuses some numeric conversions that could lose range or precision; the correct repair depends on the data contract.
## Reproduce a real mismatch
~~~csharp
// int quantity = "42"; // CS0029: string cannot be assigned to int
~~~
Validate text at the boundary rather than hiding the mismatch with a cast:
~~~csharp
using System;
string input = "42";
if (!int.TryParse(input, out int quantity)) {
Console.Error.WriteLine("Not a valid whole number");
return;
}
Console.WriteLine(quantity + 1);
~~~
**Expected output:** `43` in a modern SDK-style project supporting top-level statements. Change `input` to `"42x"` and the program should take the validation branch instead of crashing.
## Numeric conversions are a separate case
An assignment such as `int small = 3000000000L;` fails at compile time because the long value is outside `int` range. An explicit cast can discard information or, in a `checked` context, throw. Prefer preserving `long` if that represents the real domain. For nullable types, decide what `null` means before unwrapping; avoid using `!` to silence a different warning without proof.
## Repair checklist
1. Identify the expression type and destination type; do not guess from displayed text.
2. Decide whether you need parsing, a safe explicit conversion, a different destination type, or a mapping function.
3. Test valid, malformed, empty and out-of-range inputs.
4. Preserve validation errors as useful diagnostics; do not swallow them into a default zero.
5. Rebuild and add a regression test for the original failing input.
A cast such as `(int)"42"` is not a legal string-to-int conversion. Parsing is the correct mechanism for text.
### SQLITE_CONSTRAINT
Source-URL: https://ded-sec.space/learn/en/en-143.html
# SQLITE_CONSTRAINT: identify the violated data invariant
## Exact diagnosis
SQLITE_CONSTRAINT is an umbrella result, not a sufficient diagnosis. SQLite can reject CHECK, NOT NULL, PRIMARY KEY, UNIQUE or FOREIGN KEY violations. Python typically reports sqlite3.IntegrityError; inspect sqlite_errorname on supported Python versions and the table definition. Repeating an unchanged invalid write does not repair the invariant.
## Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE tickets(id INTEGER PRIMARY KEY, code TEXT NOT NULL UNIQUE, qty INTEGER CHECK(qty >= 0))")
db.execute("INSERT INTO tickets(code, qty) VALUES (?, ?)", ("A1", 2))
for record in (("A1", 4), ("B2", -1), (None, 1)):
try:
db.execute("INSERT INTO tickets(code, qty) VALUES (?, ?)", record)
except sqlite3.IntegrityError as exc:
print(getattr(exc, "sqlite_errorname", "integrity violation"))
else:
raise AssertionError("invalid row accepted")
assert db.execute("SELECT COUNT(*) FROM tickets").fetchone()[0] == 1
~~~
## Resolution procedure
Read the live schema with SELECT sql FROM sqlite_schema WHERE name='tickets', then classify the constraint and the failing input. Validate before writes, but retain database constraints as the final guard against races. For multi-statement operations, use a transaction and roll back only the failed unit. Do not solve a UNIQUE conflict using INSERT OR REPLACE unless deletion-and-reinsertion semantics are intended.
## Lab and boundary conditions
Add a separate CHECK for a maximum quantity and a regression test for its boundary. Record whether an invalid write leaves earlier committed rows intact and explain the difference between application validation and database enforcement.
### no such table
Source-URL: https://ded-sec.space/learn/en/en-144.html
# SQLite no such table: distinguish schema absence from wrong file
## Exact diagnosis
An SQLite connection can succeed while pointing to an empty database. sqlite3.connect('name.db') creates that file if it does not exist; the next SELECT may fail with no such table. This is different from a missing table due to unapplied migrations, an attached database requiring schema qualification or a typo in the SQL.
## Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as root:
file = Path(root) / "catalog.db"
db = sqlite3.connect(file)
try:
db.execute("SELECT * FROM products")
except sqlite3.OperationalError as exc:
assert "no such table" in str(exc)
db.execute("CREATE TABLE products(id INTEGER PRIMARY KEY, name TEXT NOT NULL)")
db.execute("INSERT INTO products(name) VALUES (?)", ("book",))
assert db.execute("SELECT name FROM products").fetchone()[0] == "book"
print(db.execute("PRAGMA database_list").fetchall())
db.close()
~~~
## Resolution procedure
Log the resolved absolute database location (excluding sensitive user paths from shared logs). Inspect PRAGMA database_list and SELECT name,sql FROM sqlite_schema WHERE type='table'. Confirm whether the expected migration ran and which schema it targets. For read-only diagnostics use sqlite3.connect('file:/absolute/path?mode=ro', uri=True) so a typo cannot create a new empty file.
## Lab and boundary conditions
Run the example twice with different temporary paths, explain why two catalog.db filenames can be distinct databases, then build a startup migration check that fails clearly if the expected schema version is absent.
### no such column
Source-URL: https://ded-sec.space/learn/en/en-145.html
# SQLite: no such column — inspect the actual schema and aliases
**Environment:** SQLite SQL execution or statement preparation.
## What the error means
SQLite cannot resolve a name as a column visible at that point in the query. Common causes: an outdated table definition, a typo, referencing an alias in a clause where it is not visible, or querying the wrong database file. Do not guess which migration ran; read the schema currently open by the process.
## Safe local experiment
Run `sqlite3 :memory:` and enter:
~~~sql
CREATE TABLE tasks (id INTEGER PRIMARY KEY, title TEXT NOT NULL);
INSERT INTO tasks (title) VALUES ('review');
SELECT status FROM tasks; -- Error: no such column: status
PRAGMA table_info(tasks);
SELECT title FROM tasks; -- review
~~~
The `PRAGMA` output lists `id` and `title`, not `status`. A valid qualified query is `SELECT t.title FROM tasks AS t;`. If a query uses `t.title` before declaring alias `t`, check its FROM/JOIN clause.
## Production investigation
1. Capture the exact failing SQL (with input values redacted) and the database connection target. SQLite files with identical names in different working directories are different databases.
2. Run `PRAGMA database_list;`, `PRAGMA table_info(tasks);` or `SELECT sql FROM sqlite_schema WHERE name='tasks';` **read-only** first.
3. Compare the live schema with version-controlled migrations and the expected release. Test migrations against a disposable copy before changing data.
4. Fix the query if the column name was wrong. If schema evolution is intended, create a reviewed migration with backups and rollback notes. Never blindly add columns merely to silence an error.
5. Reproduce both with a fresh database and a copy of an older schema; this catches upgrade-only failures.
## Common trap
Quoted string handling differs from column resolution; avoid relying on SQLite's historical permissive double-quoted-string behavior. Parameter placeholders protect **values**, not arbitrary identifier names: choose permitted table/column identifiers from a fixed allowlist when SQL is constructed dynamically.
### database is locked
Source-URL: https://ded-sec.space/learn/en/en-146.html
# SQLite database is locked: reproduce writer contention safely
## Exact diagnosis
SQLite permits concurrent readers but serializes writers. An open write transaction can block another connection; timeout controls how long to wait, not whether the data conflict is semantically safe to retry. Long transactions, idle cursors and forgotten rollback calls often cause persistent lock complaints.
## Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
from tempfile import TemporaryDirectory
from pathlib import Path
with TemporaryDirectory() as d:
file = Path(d) / "test.db"
one = sqlite3.connect(file, timeout=0)
two = sqlite3.connect(file, timeout=0)
one.execute("CREATE TABLE events(v INTEGER)")
one.commit()
try:
one.execute("BEGIN IMMEDIATE")
one.execute("INSERT INTO events VALUES (1)")
try:
two.execute("INSERT INTO events VALUES (2)")
except sqlite3.OperationalError as exc:
assert "locked" in str(exc).lower()
else:
raise AssertionError("second writer unexpectedly succeeded")
finally:
one.rollback()
two.execute("INSERT INTO events VALUES (2)")
two.commit()
one.close()
two.close()
~~~
## Resolution procedure
Determine which connection holds an uncommitted transaction. Use short transactions, explicit close/rollback paths and bounded busy timeouts. WAL mode can improve reader/writer concurrency but does not allow two simultaneous SQLite writers. For a persistent production lock, capture request durations and transaction boundaries before tuning timeouts.
## Lab and boundary conditions
Replace rollback with commit after releasing the conflicting transaction and test the resulting row count. Evaluate whether automatic retry could duplicate a payment-like event and design an idempotency key before adding a retry loop.
### FOREIGN KEY constraint failed
Source-URL: https://ded-sec.space/learn/en/en-147.html
# SQLite FOREIGN KEY failed: validate parent lifecycle and enforcement
## Exact diagnosis
A child row may refer only to an existing parent unless the schema defines nullable or cascading behavior. Crucially, SQLite foreign-key enforcement is per connection and must be enabled where needed. A schema declaration without PRAGMA foreign_keys=ON can leave integrity unprotected in many configurations.
## Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("PRAGMA foreign_keys = ON")
assert db.execute("PRAGMA foreign_keys").fetchone()[0] == 1
db.execute("CREATE TABLE users(id INTEGER PRIMARY KEY)")
db.execute("CREATE TABLE notes(id INTEGER PRIMARY KEY, user_id INTEGER REFERENCES users(id))")
try:
db.execute("INSERT INTO notes(user_id) VALUES (99)")
except sqlite3.IntegrityError:
pass
else:
raise AssertionError("orphan accepted")
db.execute("INSERT INTO users(id) VALUES (99)")
db.execute("INSERT INTO notes(user_id) VALUES (99)")
assert db.execute("PRAGMA foreign_key_check").fetchall() == []
~~~
## Resolution procedure
Check PRAGMA foreign_keys at connection creation, then inspect PRAGMA foreign_key_list(notes). For unexpected delete failures, read ON DELETE rules: RESTRICT, CASCADE, SET NULL and NO ACTION have different effects. Fix the ordering of parent/child writes or the business lifecycle. Avoid globally disabling enforcement to let bad data through.
## Lab and boundary conditions
In a disposable database try deleting the parent while a child exists, then create a variant with ON DELETE CASCADE. Verify exactly which rows remain. For an existing file use PRAGMA foreign_key_check to detect legacy orphans.
### Database relation access and shell parsing failures
Source-URL: https://ded-sec.space/learn/en/en-150.html
# Database relation access and shell parsing failures
## relation does not exist
### Exact diagnosis
PostgreSQL error 42P01 reports an unresolved relation name. The table may exist in another database or schema, may be absent because migrations did not run, or may require a quoted mixed-case identifier. Unquoted identifiers are folded to lowercase in PostgreSQL; this differs from naive expectations when importing schemas.
### Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~sql
-- Execute on an isolated PostgreSQL database, not production.
SELECT current_database(), current_schema();
SHOW search_path;
SELECT to_regclass('public.orders');
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_name ILIKE 'orders';
-- Compare public.orders with explicitly quoted "Orders".
~~~
### Resolution procedure
First confirm which connection string and database the application really uses. Inspect current_schema() and search_path, then qualify the relation as schema_name.table_name. Verify migration state and ownership without creating tables just to silence the error. Dynamic identifiers must be composed with safe identifier quoting, not value placeholders.
### Lab and boundary conditions
Create a table in a dedicated lab schema; show that an unqualified lookup may fail when search_path excludes that schema but a qualified lookup succeeds. Compare names orders and "Orders". Clean up only the temporary lab schema.
## permission denied for relation
### Exact diagnosis
PostgreSQL error 42501 indicates insufficient privilege on an object for the current role. Permission on the database is not the same as permission on a particular table or schema. Table SELECT privileges, schema USAGE, sequences used by inserts and row-level security can be separate issues. Do not switch the application to a superuser to make the error disappear.
### Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~sql
-- Run read-only role checks as an authorized operator:
SELECT current_user, session_user, current_database();
SELECT has_schema_privilege(current_user, 'public', 'USAGE');
SELECT has_table_privilege(current_user, 'public.orders', 'SELECT');
-- Inspect granted privileges through information_schema
-- or psql \dp for the specific relation.
~~~
### Resolution procedure
Capture the required operation (SELECT, INSERT, UPDATE or DELETE) and the effective database role. Inspect schema USAGE, table grants and relevant sequence permissions. A database administrator should grant the minimum privileges to the intended role after review; avoid GRANT ALL to PUBLIC. For row-level security, distinguish a denied table privilege from permitted SQL returning zero visible rows.
### Lab and boundary conditions
In a disposable PostgreSQL database create a read-only test role, grant schema USAGE and SELECT on one table, and verify reading succeeds while INSERT fails. Record the exact grant and revoke commands for cleanup, and confirm unrelated tables remain inaccessible.
## unexpected EOF while looking for matching
**Language / environment:** Bash
### Meaning
A quote or block delimiter is not closed.
### Repair
Check quotes and here-doc terminators above the final reported line.
### deadlock detected
Source-URL: https://ded-sec.space/learn/en/en-151.html
# PostgreSQL deadlock detected: enforce lock ordering and safe retries
## Exact diagnosis
PostgreSQL deadlock SQLSTATE 40P01 occurs when transactions form a cycle of waits: neither can progress. The server detects the cycle and aborts one transaction. Increasing the timeout does not remove the conflicting lock order. Contention without a cycle can cause waits or lock timeouts but is not the same diagnosis.
## Disposable reproduction or inspection
Run only on an isolated local database or an authorized nonproduction environment.
~~~sql
-- Shared lab table in an isolated database; two sessions are required:
CREATE TABLE deadlock_lab_balances (id INTEGER PRIMARY KEY, amount INTEGER);
INSERT INTO deadlock_lab_balances VALUES (1, 100), (2, 100);
-- Connection A: BEGIN; UPDATE deadlock_lab_balances SET amount=amount+1 WHERE id=1;
-- Connection B: BEGIN; UPDATE deadlock_lab_balances SET amount=amount+1 WHERE id=2;
-- A then updates id=2; B then updates id=1 (deadlock cycle).
-- Prefer both transactions updating ids in ascending order.\n-- Drop the lab table after both sessions finish: DROP TABLE deadlock_lab_balances;
~~~
## Resolution procedure
Collect database deadlock diagnostics and application transaction traces, with query parameters redacted. Keep transactions short, take locks in consistent order and avoid calling external services while holding locks. PostgreSQL aborts a deadlocked transaction: retry the WHOLE transaction with bounded exponential backoff only when the operation is idempotent or otherwise safe. Never retry one statement after a failed transaction without proper rollback.
## Lab and boundary conditions
Use two PostgreSQL sessions with permanent test tables (TEMP tables are not shared across sessions) to reproduce conflicting row-lock order, then align both sessions to ascending id order. Compare the event to a lock timeout and document the different SQLSTATE values.
### command not found
Source-URL: https://ded-sec.space/learn/en/en-153.html
# command not found: diagnose executable discovery
## Recognize the actual failure
The shell searches executable names through PATH unless the user supplies an explicit path. The program may not be installed, PATH may omit its directory, the name may be misspelled, or the script may use a command available only in another OS. Installing a package is not always the correct first step.
## Inspect safely before changing anything
~~~sh
printf '%s\n' "$PATH"
command -v python
command -v python3
uname -s
~~~
## Repair the cause rather than suppressing the warning
On Termux use its own pkg repository, not arbitrary Debian apt instructions. Check pkg search NAME and pkg show PACKAGE before installing. In PowerShell inspect Get-Command NAME and $env:Path instead; cmd.exe uses where NAME. Do not prepend '.' or a world-writable directory to PATH as a shortcut.
**Reference:** https://www.gnu.org/software/bash/manual/html_node/Command-Search-and-Execution.html
## Prove whether the executable or PATH is wrong
~~~sh
printf 'PATH=%s\n' "$PATH"
command -v python3 || printf 'python3 absent from PATH\n'
type -a python3 2>/dev/null || true
~~~
Run the same checks in an interactive shell and the failing script or CI job. If one succeeds, print both environments rather than installing the language again. Explicit relative paths such as `./script.sh` bypass PATH lookup; they can then fail with a different execution error. The same diagnostic on PowerShell is `Get-Command python -All`; on cmd.exe use `where python`.
## Resolve portability deliberately
On Termux search the supported `pkg` catalogue rather than following Linux distribution apt instructions blindly; Android's filesystem and package layout are not a desktop distro. Prefer invoking `python3 -m pip` with the interpreter you actually located. If a command exists only inside a virtual environment, activate it or use the environment's direct executable path. Never add the current directory to the start of PATH to silence this failure: it makes accidental executable substitution easier.
### Permission denied
Source-URL: https://ded-sec.space/learn/en/en-154.html
# Permission denied: determine which access was refused
## Recognize the actual failure
Permission denied may arise when opening a file, traversing a directory, executing a nonexecutable script or accessing Android shared storage. File read/write permission and directory execute (traverse) permission are distinct. Do not assume chmod 777 fixes a security policy or Android permission boundary.
## Inspect safely before changing anything
~~~sh
id
pwd
ls -ld -- .
ls -l -- target.sh
# Inspect before any chmod/chown.
~~~
## Repair the cause rather than suppressing the warning
Prefer invoking a readable shell script as bash target.sh if appropriate, or add execute permission only to files you own after checking their content. For Termux external storage, verify Android permissions and termux-setup-storage, but note that Android scoped-storage restrictions still apply. Windows ACL errors need Get-Acl rather than chmod.
**Reference:** https://man7.org/linux/man-pages/man2/access.2.html
## Identify which permission actually failed
~~~sh
id
ls -ld . ./example.sh
stat ./example.sh
~~~
A regular file needs execution permission for direct launch, but every parent directory also needs search/execute permission. Conversely, `bash ./example.sh` opens a readable script through Bash and can work even when direct execution is forbidden. Filesystems mounted `noexec` and Android shared storage add separate restrictions; `chmod +x` is not a universal fix.
## Minimal experiment
In a disposable directory create a two-line `example.sh` with `#!/bin/sh` and `printf 'ok\n'`. Try launching directly and through `sh ./example.sh` before/after granting user execute permission to *that specific file*. Expected behavior depends on the mount, interpreter availability and containing directory. Never use `chmod -R 777` or recursively change ownership to solve one error. For an error while opening a data file, inspect the parent directory and whether the process needs read or write access rather than executable access.
### bad interpreter
Source-URL: https://ded-sec.space/learn/en/en-155.html
# bad interpreter: inspect the shebang and line endings
## Recognize the actual failure
An executable script begins with #! identifying its interpreter. 'bad interpreter: No such file or directory' often means the path after #! does not exist; a carriage return from CRLF can also become part of the interpreter name. The script itself can exist while its interpreter is missing.
## Inspect safely before changing anything
~~~sh
head -n 1 script.sh | od -An -tx1
command -v bash
file script.sh
~~~
## Repair the cause rather than suppressing the warning
Use #!/usr/bin/env bash when env and bash are available and the script deliberately targets Bash. On Termux a hard-coded /bin/bash path from Linux is typically wrong; check command -v bash. Convert CRLF in a copy only after confirming file format. Never run arbitrary downloaded scripts with elevated privileges to bypass the error.
**Reference:** https://www.gnu.org/software/bash/manual/html_node/Shell-Scripts.html
## Determine whether the shebang contains a hidden carriage return
~~~sh
head -n 1 ./demo.sh | cat -v
od -An -tx1 -N40 ./demo.sh
command -v bash
~~~
A first line ending in `^M` or hex `0d 0a` signals CRLF, which can make the system look for `/bin/bash\r`. Use a proper text editor to save LF line endings and test again; do not blindly strip every carriage return from arbitrary binary files.
## Match the runtime, not a copied path
`#!/bin/bash` may exist on a Linux server but not on Termux. `#!/usr/bin/env bash` can be more portable when `env` and `bash` are both available in the actual environment. Check the first line, the interpreter's location and executable permissions separately. On Windows cmd.exe does not interpret POSIX shebangs directly; use an appropriate shell such as Bash. Compare direct launch with `bash demo.sh` to distinguish kernel shebang dispatch from parsing of the script body.
### unbound variable
Source-URL: https://ded-sec.space/learn/en/en-157.html
# Bash: unbound variable under nounset
**Environment:** Bash scripts using `set -u` or `set -o nounset`.
## Understand the failing expansion
With nounset enabled, expanding an unset parameter is an error. This can reveal misspelled configuration names, missing environment variables or ordering bugs early. An empty but **set** variable is not the same as an unset variable, so a blindly supplied default can hide missing required input.
## Reproduce without changing files
~~~bash
bash -c 'set -u; printf "%s\n" "$MISSING_VALUE"'
~~~
**Expected behavior:** a nonzero exit and a diagnostic mentioning `MISSING_VALUE: unbound variable`; wording depends on Bash version. Now handle a genuinely optional value:
~~~bash
bash -c 'set -u; printf "%s\n" "${MISSING_VALUE:-guest}"'
~~~
**Expected output:** `guest`.
## Pick the right contract
For an optional setting, `${name:-fallback}` substitutes when the name is unset **or empty**. `${name-fallback}` substitutes only when it is unset. For required settings, `: "${TOKEN:?TOKEN is required}"` aborts with a clear message, but avoid printing the token. To detect whether a variable exists without expanding its secret content, use `[[ -v TOKEN ]]` in Bash.
## Debugging path
1. Locate the **first** expansion named in the error, not the line that happens to call the script.
2. Inspect how values are passed: positional arguments, environment inheritance and configuration file sourcing. Child processes only inherit variables exported into their environment.
3. Check spelling and case; `API_KEY` and `api_key` differ.
4. Decide whether the parameter must exist or can have a default. Explicitly initialize local variables in each function.
5. Test unset, empty, whitespace-only and valid values separately.
## Portability warning
These examples invoke **Bash** intentionally. Termux may have Bash installed, but scripts launched by `sh script.sh` may run a different shell. Use an appropriate shebang or invoke `bash script.sh` when relying on Bash-only `[[ -v ]]`. Do not disable `set -u` globally to suppress one faulty expansion.
### Missing files and Python module troubleshooting
Source-URL: https://ded-sec.space/learn/en/en-158.html
# Missing files and Python module troubleshooting
## No such file or directory
**Language / environment:** Shell / Linux
### Meaning
A file or folder path cannot be resolved.
### Repair
Inspect quoting, working directory, case-sensitive names and mount permissions.
## ModuleNotFoundError: flask
**Language / environment:** DedSec
### Meaning
Flask is unavailable in the Python interpreter that launched the script.
### Repair
Use DedSec .venv on Linux or Termux setup Python; verify python -c "import flask".
## No module named flask_socketio
**Language / environment:** DedSec
### Meaning
The Flask-SocketIO package is missing from the selected environment.
### Repair
Run appropriate setup for the selected platform and import flask_socketio in the same interpreter.
## A repeatable diagnosis for Python module failures
Run the failing program and the diagnostic code with the exact same Python executable. Print `sys.executable`, `sys.version`, `Path.cwd()` and inspect the absolute location of the imported package. A package installed into one virtual environment is not necessarily importable from another interpreter. If `flask` or `flask_socketio` cannot be imported, compare the interpreter's `-m pip` output with the environment that actually launches the application, and verify that the project declares the dependency.
~~~python
from pathlib import Path
import sys
print(sys.executable)
print(Path.cwd())
print((Path.cwd() / "config.json").resolve())
~~~
A missing relative file usually points to a working-directory or deployment-layout problem, not missing permissions. Test the program from a separate directory, then use a known location such as the script's parent when appropriate. For `flask_socketio`, the package distribution name and Python import name need not be identical; consult the installed package metadata before changing source imports. Keep the actual exception trace and interpreter version in your report.
## Proof before closing the incident
After correcting either the package environment or resource path, repeat the original import/read operation. Test one missing-path case and one existing file with synthetic contents. Record which executable was used and avoid running administrator-level commands merely to silence the error.
### externally-managed-environment
Source-URL: https://ded-sec.space/learn/en/en-159.html
# Python externally managed: preserve the system interpreter
## Recognize the actual failure
PEP 668 allows an OS-managed Python installation to tell pip not to install into the interpreter's global environment. This avoids conflicts with distro-managed packages. The diagnostic is a policy boundary, not evidence that pip or Python is corrupted.
## Inspect safely before changing anything
~~~sh
python3 -m venv .venv
. .venv/bin/activate
python -m pip install PACKAGE
~~~
## Repair the cause rather than suppressing the warning
Install the distribution's python3-venv package if needed on Debian/Ubuntu. On Termux inspect its Python packaging rules; do not blindly apply Debian package names. Avoid --break-system-packages as an everyday fix: it bypasses a protection and may damage distro tooling. Use pipx for isolated CLI applications where available.
**Reference:** https://peps.python.org/pep-0668/
## Work with a project-owned environment
PEP 668 distinguishes OS-managed Python installations from application dependencies. The safe default for a project is an isolated environment:
~~~sh
python3 -m venv .venv
.venv/bin/python -m pip --version
.venv/bin/python -m pip install requests
~~~
This installs into the temporary/project venv rather than overwriting distro-managed Python packages. On Windows use `.venv\Scripts\python.exe`; some Linux distributions require their venv support package first. Check `sys.executable` inside the project to make sure your editor and CI use the same interpreter.
## Stop the misleading fixes
Do not recommend `--break-system-packages` as the first fix. It opts out of protection and may damage system tooling. For CLI tools, consider `pipx` when supported. Termux is not simply Ubuntu on Android; inspect the actual package manager and Python installation rather than assuming that the same PEP 668 marker is present.
### pip: Failed building wheel
Source-URL: https://ded-sec.space/learn/en/en-160.html
# pip Failed building wheel: read the first compiler failure
## Recognize the actual failure
Some Python packages ship a wheel for a particular CPython version, OS and CPU architecture; others need a compiler and development headers. 'Failed building wheel' is usually a final summary, not the root cause. On Android/Termux many desktop Linux wheels are incompatible.
## Inspect safely before changing anything
~~~sh
python -VV
python -m pip --version
python -m pip install -v PACKAGE
~~~
## Repair the cause rather than suppressing the warning
Inspect the earliest error above the summary: missing header, unsupported Python version, Rust/C compiler requirement or dependency metadata. Confirm a legitimate package release and supported platform before installing toolchains. Prefer a compatible prebuilt wheel or documented distro package. Never paste arbitrary compiler flags from an untrusted forum.
**Reference:** https://pip.pypa.io/en/stable/cli/pip_install/
## Read the first real compiler failure
`Failed building wheel` is often only pip's final summary. Find the first preceding error: `Python.h: No such file`, missing C compiler, `pkg-config` dependency, Rust toolchain, unsupported Python ABI or invalid package source. Inspect the package's `pyproject.toml` build backend and check Python version/architecture. These are different causes and cannot all be fixed by upgrading pip.
## Controlled investigation
In your own source project, run `python -m pip wheel --no-deps . -v` from an activated venv to capture a local build without installing the result system-wide. If that succeeds but dependency installation fails, investigate a dependency rather than this project. Do not install arbitrary build tools as root until the package's documented prerequisites justify them. On Termux wheels published for desktop Linux may not apply to Android; a source build may require supported local libraries or may simply be unsupported.
### Termux API unavailable
Source-URL: https://ded-sec.space/learn/en/en-164.html
# Termux:API unavailable: app, plugin and runtime distinction
## Recognize the actual failure
Termux:API commands require support from the companion Android Termux:API application and matching termux-api CLI package. Installing a Python library with a similar name is not equivalent. A missing command, permission denial and unavailable Android feature are different failure categories.
## Inspect safely before changing anything
~~~sh
command -v termux-battery-status
pkg show termux-api
termux-info
~~~
## Repair the cause rather than suppressing the warning
Verify installation source compatibility, Android app permissions and battery/background restrictions. Test a read-only API such as battery status before enabling location, contacts, SMS or other sensitive capabilities. A disabled permission is not a request to work around OS safeguards; offer a clear optional feature path.
**Reference:** https://github.com/termux/termux-api
## Separate Android integration from shell installation
The `termux-api` package inside Termux exposes command wrappers, while the separately installed Termux:API Android application supplies the Android-side services. A missing wrapper is different from an installed wrapper unable to contact the add-on. Run:
~~~sh
command -v termux-battery-status
termux-battery-status
~~~
If the command is missing, verify the Termux package. If it starts but cannot contact the app, inspect the Android add-on, compatibility/signing source and permissions. Android battery information and other API features can be restricted or unavailable depending on OS version; grant only permissions required by the tested command.
## Privacy-safe fixture
Use battery status as a low-risk initial probe. Do not test contact, SMS, microphone or location APIs simply to verify installation, and do not recommend sideloading random APKs. Record whether failure occurs before launching the command, at Android app handoff, or at runtime permission checking. Termux's package name and signing source matter, so mixing incompatible distribution sources can break the integration.
### Git repository recovery and history diagnostics
Source-URL: https://ded-sec.space/learn/en/en-166.html
# Git repository recovery and history diagnostics
## fatal: refusing to merge unrelated histories
### Meaning and differential diagnosis
Git reports unrelated histories when no commit is a common ancestor of the two tips. This happens when a local repository was initialized separately from a web-created remote, or when history was rewritten. Combining them can be valid, but only after checking whether the two projects really belong together.
### Reproduction / nondestructive inspection
Use an isolated test directory or an authorized service. Do not modify real remotes or production systems while diagnosing.
~~~sh
git remote -v
git fetch --prune origin
git log --graph --oneline --decorate --all -n 25
git merge-base HEAD origin/main || echo "No common ancestor"
# No mutation above except fetching remote objects.
# Only with verified intent and a backup:
# git merge --allow-unrelated-histories origin/main
~~~
### Interpret evidence and fix the cause
Inspect the root commits using git rev-list --max-parents=0 HEAD and the remote equivalent. Check remotes carefully to rule out a URL pointing at another project. Compare trees or README contents and choose one intended canonical history. If the repositories are unrelated by mistake, fix the remote rather than using --allow-unrelated-histories.
### Practical lab
Create two independent temporary repositories, each with one different commit. Verify merge-base fails, then try an intentional merge in a disposable copy and inspect the graph. Explain why a forced push would hide rather than reconcile the second line of history.
## detached HEAD
### Meaning and differential diagnosis
Detached HEAD means HEAD points to a specific commit rather than a branch reference. It is normal while examining an old commit or CI checkout, but new commits may become hard to discover after switching away if no branch points to them. Detached does not mean the repository is corrupted.
### Reproduction / nondestructive inspection
~~~sh
git status -sb
git symbolic-ref -q --short HEAD || echo "Detached HEAD"
git log -1 --oneline
# If you created a valuable commit while detached:
# git switch -c preserve-experiment
# Alternatively find it via git reflog before cleanup.
~~~
### Interpret evidence and fix the cause
Find what commit you are on with git rev-parse HEAD. Before switching, create a branch at the desired commit; do not confuse git switch -c (creates a branch) with git switch (moves to an existing branch). Reflog can locate recent otherwise-unreferenced tips, but garbage collection may eventually prune unreachable commits.
### Practical lab
In a disposable repository commit two changes, switch --detach HEAD~1, commit a third experimental change, create a named branch, and verify git branch --contains includes it. Demonstrate recovering the old tip with reflog without any force push.
## repository not found
### Meaning and differential diagnosis
A remote host may return repository not found for an incorrect owner/name, a deleted or renamed repository, or private content to which the current credentials have no access. Some providers deliberately avoid revealing a private repository's existence. The error alone does not identify which case applies.
### Reproduction / nondestructive inspection
~~~sh
git remote -v
git config --get remote.origin.url
git ls-remote origin HEAD
# For HTTPS test the exact known URL, not a guessed variant:
# git ls-remote https://github.com/OWNER/REPO.git HEAD
~~~
### Interpret evidence and fix the cause
Confirm the repository URL from an authorized browser session and check owner/name case and renames. Verify your credential helper or SSH key identity without printing tokens. Check installation/organization access for the connected account. Never paste access tokens into command-line URLs or logs. Retry only after distinguishing URL mismatch from permissions.
### Practical lab
Point a disposable local repo at a deliberately nonexistent repository name and observe the exit status. Then test a known accessible repository. Document why the failure does not prove that a private repository is absent.
### non-fast-forward
Source-URL: https://ded-sec.space/learn/en/en-167.html
# Git non-fast-forward — preserve both people's commits
## Recognize the exact condition
A normal push to main is rejected when the remote contains a commit that is not an ancestor of your local branch tip. The refusal protects remote work that arrived after your last fetch. It does not mean that GitHub has lost code, that credentials are wrong or that a forced push is appropriate. In a single-main-branch project, update your remote-tracking information before deciding how to reconcile histories.
## Run a fully local two-clone reproduction
Save as reproduce.sh and run sh reproduce.sh with Git installed. This fixture creates a local bare repository and two disposable working copies called alice and bob, without any internet, real GitHub credentials or actual project repository. Alice pushes a change; Bob tries to push from an older base and receives the expected rejection. A fetch and rebase preserve both commits, and a normal push completes the test.
~~~sh
#!/usr/bin/env sh
set -eu
work=$(mktemp -d)
trap 'rm -rf -- "$work"' EXIT
git init -q --bare "$work/remote.git"
git -C "$work/remote.git" symbolic-ref HEAD refs/heads/main
git init -q -b main "$work/seed"
git -C "$work/seed" config user.name 'Local Example'
git -C "$work/seed" config user.email 'example@invalid.test'
printf 'baseline\n' > "$work/seed/README.md"
git -C "$work/seed" add README.md
git -C "$work/seed" commit -qm 'seed'
git -C "$work/seed" remote add origin "$work/remote.git"
git -C "$work/seed" push -q -u origin main
git clone -q "$work/remote.git" "$work/alice"
git clone -q "$work/remote.git" "$work/bob"
for who in alice bob; do
git -C "$work/$who" config user.name 'Local Example'
git -C "$work/$who" config user.email 'example@invalid.test'
done
printf 'from Alice\n' > "$work/alice/alice.txt"
git -C "$work/alice" add alice.txt
git -C "$work/alice" commit -qm 'alice'
git -C "$work/alice" push -q origin main
printf 'from Bob\n' > "$work/bob/bob.txt"
git -C "$work/bob" add bob.txt
git -C "$work/bob" commit -qm 'bob'
if git -C "$work/bob" push -q origin main 2> "$work/rejection.log"; then
echo 'FAIL: non-fast-forward unexpectedly accepted' >&2
exit 1
fi
git -C "$work/bob" fetch -q origin main
git -C "$work/bob" rebase -q origin/main
git -C "$work/bob" push -q origin main
git -C "$work/remote.git" cat-file -e main:alice.txt
git -C "$work/remote.git" cat-file -e main:bob.txt
printf 'PASS: rejection observed; remote history preserved without force push\n'
~~~
## Repair your actual project cautiously
First inspect git status and git fetch origin, then compare git log --oneline HEAD..origin/main with git log --oneline origin/main..HEAD. If the working tree has unsaved changes, commit or safely stash them before reconciliation. For independent local commits, git rebase origin/main replays them over the remote tip; a merge may be preferable when your team explicitly preserves merge commits. Resolve conflicts deliberately, run affected tests, then push without --force. If the remote changed again, fetch and reconcile again. Do not treat --force-with-lease as an automatic fix; it can still discard work if used without understanding the protected branch.
## Failure interpretation
1. In the fixture, explain which commit is present only in Alice's history immediately after she pushes.
2. Modify the same README line in both clones instead of separate files. Reproduce a rebase conflict and show how to resolve it in a throwaway repository.
3. Run git log --graph --oneline --all after the successful push and explain the new parent chain.
4. If you cannot safely rebase because of published local commits, discuss a non-destructive merge. Never reset a production branch just to suppress the rejection.
**Evidence:** expected rejection, successful reconciliation, and verification that both alice.txt and bob.txt remain in remote/main.
**Reference:** https://docs.github.com/en/get-started/using-git/dealing-with-non-fast-forward-errors
### Pytest discovery, fixture resolution and port conflicts
Source-URL: https://ded-sec.space/learn/en/en-170.html
# Pytest discovery, fixture resolution and port conflicts
## pytest collected 0 items
### Meaning and differential diagnosis
Pytest may find no tests because filenames, function names or configured testpaths do not match discovery rules. A collection error is different from an empty test suite, as is running pytest in the wrong directory. Do not make a CI job green by silently accepting zero collected tests.
### Reproduction / nondestructive inspection
~~~python
# Save as test_arithmetic.py; requires pytest.
def add(a, b):
return a + b
def test_add_integers():
assert add(2, 3) == 5
def test_add_negative():
assert add(-2, 2) == 0
~~~
### Interpret evidence and fix the cause
Run python3 -m pytest --collect-only -q from the repository root. Inspect pyproject.toml, pytest.ini or setup.cfg for python_files, python_functions and testpaths. Verify the desired tests appear by node ID. Exit code 5 generally indicates no tests collected; a different nonzero code may mean import/collection errors. Avoid renaming arbitrary production files just to satisfy discovery.
### Practical lab
Rename the file to arithmetic_checks.py and confirm default discovery no longer sees it; run pytest --collect-only -q against its explicit path and explain the difference. Add an assertion in CI that the expected critical test node is present.
## pytest fixture not found
### Meaning and differential diagnosis
Pytest interprets names in a test function's parameters as fixture requests. A typo, a fixture defined in an inaccessible conftest.py, an optional plugin not installed or a mismatched fixture scope may break setup. A regular local variable with the same spelling does not become a pytest fixture automatically.
### Reproduction / nondestructive inspection
~~~python
# Save as test_catalog.py; requires pytest.
import pytest
@pytest.fixture
def catalog():
return {"books": ["Algorithms", "Networks"]}
def test_catalog_has_books(catalog):
assert "Algorithms" in catalog["books"]
assert len(catalog["books"]) == 2
~~~
### Interpret evidence and fix the cause
Read the name of the missing fixture and list available ones using python3 -m pytest --fixtures -q. Trace where conftest.py is located relative to the test module; fixtures in a sibling subtree are not automatically visible. Plugin fixtures depend on the selected interpreter. Prefer narrowly scoped fixtures with explicit setup and teardown over mutable module-global state.
### Practical lab
Rename catalog to catalogue in the decorator function without updating the test parameter; inspect the missing-fixture message. Restore it, then move the fixture into conftest.py and confirm both tests in that directory can reuse it.
## address already in use
### Meaning and differential diagnosis
EADDRINUSE usually means that the requested local address/port combination is already bound. Causes include a second server instance, a listener bound to all interfaces, or address-family differences. Depending on options and OS, recently closed sockets can also affect rebinding. Killing an arbitrary process by port number is unsafe.
### Reproduction / nondestructive inspection
~~~python
import errno
import socket
first = socket.socket()
second = socket.socket()
try:
first.bind(("127.0.0.1", 0)) # OS chooses a free port.
port = first.getsockname()[1]
try:
second.bind(("127.0.0.1", port))
except OSError as exc:
assert exc.errno == errno.EADDRINUSE
else:
raise AssertionError("duplicate bind accepted")
finally:
first.close()
second.close()
~~~
### Interpret evidence and fix the cause
Inspect listeners with ss -ltnp on Linux/Termux where supported, or lsof -iTCP -sTCP:LISTEN. Confirm process ownership and its working directory before stopping a service. Investigate interface binding (127.0.0.1 versus 0.0.0.0), container port mapping, and IPv6 behavior. SO_REUSEADDR is not a universal fix for two actively listening servers.
### Practical lab
Rerun the fixture on the same host, recording the dynamically chosen port and exception errno. Next run one local test server, try to start a second on that port, then stop only the known first server and verify the second can bind.
### Network diagnostics: connection refused, HTTP 404 and HTTP 403
Source-URL: https://ded-sec.space/learn/en/en-173.html
# Network diagnostics: connection refused, HTTP 404 and HTTP 403
## connection refused
### Meaning and differential diagnosis
ECONNREFUSED normally means an address was reached but the connection was actively rejected, often because no process listens on the target port. It differs from a timeout (no timely response), name-resolution failure (host cannot be resolved) and HTTP 403/404 (a server responded at the application layer).
### Reproduction / nondestructive inspection
~~~python
import socket
listener = socket.socket()
listener.bind(("127.0.0.1", 0))
port = listener.getsockname()[1]
listener.listen(1)
with socket.create_connection(("127.0.0.1", port), timeout=1):
pass # Success: listener exists.
listener.close()
# Connecting now normally raises ConnectionRefusedError.
try:
with socket.create_connection(("127.0.0.1", port), timeout=1):
pass
except ConnectionRefusedError:
print("connection refused as expected")
~~~
### Interpret evidence and fix the cause
Check the exact host, port and protocol. If using localhost, verify IPv4 versus IPv6 resolution; a process bound to 127.0.0.1 need not listen on ::1 or on a LAN address. Test locally on the server before checking firewall and network routes. Use ss -ltn for listener state. An HTTP URL in a browser requires an HTTP server, not just any open TCP socket.
### Practical lab
Compare three fixtures: local port with a live listener, local port after closing it, and an intentionally invalid host name. Record which layer produces the failure and why retrying an unchanged refused port rarely helps.
## HTTP 404
### Meaning and differential diagnosis
HTTP 404 means an HTTP server or intermediary did respond but could not (or chose not to) expose a representation for the target resource. It is distinct from DNS failure, refused TCP connection and TLS verification errors. A 404 on a static site can be caused by filename case, bad relative URLs, a missing build artifact or an incorrect publishing root.
### Reproduction / nondestructive inspection
~~~sh
# From a directory of harmless sample files:
mkdir -p /tmp/dedsec-404-lab
printf 'ok\n' > /tmp/dedsec-404-lab/index.html
# Terminal A:
# python3 -m http.server 8765 --bind 127.0.0.1 --directory /tmp/dedsec-404-lab
# Terminal B:
# curl -i http://127.0.0.1:8765/index.html # 200
# curl -i http://127.0.0.1:8765/missing.txt # 404
~~~
### Interpret evidence and fix the cause
Capture requested URL, method, response status and headers without leaking cookies or credentials. For GitHub Pages, check path case and the deployed branch/folder; for Cloudflare Pages, inspect generated output and rewrite rules. Check that relative paths work from nested pages, not only from /. Do not blindly redirect every missing page to the homepage: this can create misleading soft 404s.
### Practical lab
Move index.html into a nested subdirectory, request both paths, and explain the results. Write a link checker that walks local HTML href values, resolves relative paths and distinguishes anchors, remote URLs and missing local targets.
## HTTP 403
### Meaning and differential diagnosis
HTTP 403 indicates that a server understood the request but refuses to authorize it. A valid login does not necessarily grant access to a particular path, organization resource or object. Some services use 404 instead to avoid disclosing object existence. A 403 may originate from an application policy, reverse proxy, CDN or WAF.
### Reproduction / nondestructive inspection
~~~sh
# Inspect response metadata for a resource you are allowed to test:
curl -i --max-time 5 https://example.com/
# For a LOCAL application in development:
# curl -i http://127.0.0.1:8000/admin
# Review status and server logs; do not paste bearer tokens.
~~~
### Interpret evidence and fix the cause
Compare a permitted account and a deliberately unauthorized test account, using synthetic fixtures. Inspect server-side authorization for the exact resource and HTTP method; check middleware order, allowlists, cookies, CSRF requirements and file/server permissions separately. A temporary chmod 777 or disabling the WAF is not a safe diagnosis. Distinguish 401 (authentication required) from 403 (access refused).
### Practical lab
Create a local route that returns 200 to a test role and 403 to a guest, then assert both HTTP statuses and response bodies without connecting to real protected systems. Test direct object access so an unauthorized user cannot bypass the UI check.
### certificate verify failed
Source-URL: https://ded-sec.space/learn/en/en-174.html
# TLS certificate verify failed: distinguish clock, chain and interception
## Recognize the actual failure
A certificate verification failure can mean the system clock is wrong, the trust store is stale, the server omitted an intermediate certificate, or a proxy is intercepting HTTPS. It is not safe to infer that disabling validation makes the connection trustworthy.
## Inspect safely before changing anything
~~~sh
date -u
python -c "import ssl; print(ssl.get_default_verify_paths())"
# Verify hostname and issuer using a trusted browser.
~~~
## Repair the cause rather than suppressing the warning
Check device date/time, current trust-store updates and the expected hostname/certificate issuer. In controlled environments inspect proxy configuration. Do not set PYTHONHTTPSVERIFY=0, curl -k, or git config http.sslVerify false for routine use: these disable protections against man-in-the-middle attacks.
**Reference:** https://docs.python.org/3/library/ssl.html
## Diagnose trust without disabling verification
A TLS verifier checks the certificate chain and the requested hostname against trusted certificate authorities. A wrong device clock, missing or obsolete CA bundle, intercepted traffic, a corporate proxy, or a server configuration mistake can produce similar errors. Start with:
~~~sh
date -u
python -c "import ssl; print(ssl.get_default_verify_paths())"
~~~
The first check isolates an obviously incorrect clock; the second reports the Python OpenSSL trust lookup, which is not necessarily the same source of trust as a browser on the same device.
## Keep the secure property
Do not use `verify=False`, `curl -k` or global environment overrides as a repair. Inspect the URL's hostname, system trust updates and verified organizational proxy configuration. In a controlled test, compare the same endpoint through a browser and Python and note which CA store each uses; differences suggest a client configuration issue rather than proof that the server is safe. If the certificate is wrong or untrusted, stop instead of bypassing verification.
### HTTP 500
Source-URL: https://ded-sec.space/learn/en/en-177.html
# HTTP 500 — server error with a useful investigation trail
**Environment:** Web servers, reverse proxies, API backends and browser clients.
## Interpret the response correctly
HTTP 500 means the server encountered a condition preventing it from fulfilling a request. It is a broad server-side result, not a precise diagnosis. A `500` differs from `404` (resource not found), `429` (rate limiting) and `502`/`503` (often gateway/upstream or service availability problems). A browser `fetch()` promise can resolve successfully **with** status 500; callers must inspect `response.ok`.
## Reproduce a safe client response
This local server intentionally sends status 500; it is a **simulation**, not an example of a real unhandled exception:
~~~python
from http.server import BaseHTTPRequestHandler, HTTPServer
class Demo(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(500)
self.send_header("Content-Type", "text/plain; charset=utf-8")
self.end_headers()
self.wfile.write(b"Internal failure")
HTTPServer(("127.0.0.1", 8766), Demo).serve_forever()
~~~
In a second terminal, run `curl -i http://127.0.0.1:8766/`. **Expected:** `HTTP/1.0 500 Internal Server Error` and a short body. Stop with Ctrl-C. The loopback-only bind keeps this exercise off the public network.
## Diagnose the real failing backend
1. Capture timestamp, path, sanitized inputs and a correlation/request ID. Do not log tokens, passwords or personal data.
2. Match the request ID to structured **server** logs and exception details accessible only to maintainers.
3. Compare the active deployment revision, environment configuration, dependency health, database migrations and resource limits.
4. Reproduce in staging with the same non-sensitive request class; add a regression test around the confirmed failure.
5. Return a stable, non-sensitive error message to clients. Keep stack traces, environment variables and internals out of public responses.
## Client behavior and boundaries
A JS client can check `if (!response.ok) { /* handle status */ }`. Do not automatically retry every POST: an operation may have partially committed before the 500, and blind retries can create duplicates. Use idempotency keys where the application protocol supports them and distinguish transient faults from deterministic application bugs.
### Programming foundations: modules and reproducible debugging
Source-URL: https://ded-sec.space/learn/en/en-178.html
# Programming foundations: modules and reproducible debugging
## Foundations index
01. What is a program? — `01_What_is_a_program.md`
02. Variables and types — `02_Variables_and_types.md`
03. Conditional logic — `03_Conditions.md`
04. Loops and iteration — `04_Loops.md`
05. Functions and parameters — `05_Functions.md`
06. Lists, maps and sets — `06_Collections.md`
07. Strings and Unicode — `07_Strings_and_unicode.md`
08. Files and paths — `08_Files_and_paths.md`
09. Errors and exception handling — `09_Exceptions.md`
10. Modules, packages and imports — `10_Modules.md`
11. Algorithms and complexity — `11_Algorithms.md`
12. Queues, stacks and indexes — `12_Data_structures.md`
13. Unit tests and regression checks — `13_Unit_testing.md`
14. Reproducible debugging — `14_Debugging.md`
15. Git and safe change history — `15_Git.md`
16. Environments and reproducible builds — `16_Environment.md`
17. HTTP, JSON and API boundaries — `17_APIs.md`
18. Secure defaults and user consent — `18_Security.md`
19. Cross-platform and accessibility — `19_Portability.md`
20. Release checklist and documentation — `20_Release.md`
## Modules, packages and imports
Split large code into cohesive modules with explicit public interfaces. Avoid importing a script that executes installations or prompts at module import time. Keep a main guard for runnable code.
### Worked example
```text
def main():
print("starting")
if __name__ == "__main__":
main()
```
### Practice
Explain what happens when another module imports this file.
### Corrected result / hint
Functions are defined but main() is not auto-called.
### Track which Python module was imported
~~~python
import importlib.util
spec = importlib.util.find_spec("json")
print(spec.origin if spec else "missing")
~~~
Run this from a fresh disposable directory. Now create a local file named `json.py` in that same directory and start a **new interpreter**. The import may resolve to your local file rather than the standard library. An eventual `AttributeError` when calling `json.loads` is a symptom of shadowing; inspecting `json.__file__` identifies the actual origin. Rename the local file and verify resolution again. In another scratch module, put a printing statement under `if __name__ == "__main__":`, import the module, and explain why other top-level assignments can still run. Independently compare imports from two working directories and capture `sys.executable` and `sys.path`. Reference: https://docs.python.org/3/tutorial/modules.html
## Reproducible debugging
Record the expected result, actual result, exact command, platform, and smallest example that reproduces the problem. Change one thing at a time. Log context but never print secrets or personal data.
### Worked example
```text
def divide(a, b):
if b == 0:
raise ValueError("b must be nonzero")
return a / b
print(divide(6, 2))
```
### Practice
Write a bug report for divide(6, 0).
### Corrected result / hint
Expected: controlled error; actual: ValueError with clear message.
### Reduce a failure to the smallest counterexample
~~~python
def clean_name(value):
result = value.strip()
if not result:
raise ValueError("empty")
return result
assert clean_name(" Ada ") == "Ada"
~~~
Calling `clean_name(None)` fails before checking the empty-name rule. Add `isinstance(value, str)` **before** `strip`, raise a meaningful `TypeError`, and preserve a regression test. A different mistake is checking `if not value` before stripping: whitespace-only input then bypasses validation. Reproduce each defect separately with its smallest input. Record environment, stack trace, expected/actual result and the specific changed line. Never confuse suppressing an exception with repairing its root cause; avoid logging secrets and personal records while investigating. Reference: https://docs.python.org/3/library/pdb.html
### What is a program?
Source-URL: https://ded-sec.space/learn/en/en-179.html
# What is a program? A testable input-to-output contract
## Concept and intended result
A program is a set of steps the computer executes using explicit input and rules. For a simple shop receipt, the inputs are a price in integer cents and an item quantity. The output is the total in cents. Decide the allowed domain before writing code: prices cannot be negative, and the quantity is a whole number from zero through 100. A syntactically valid multiplication can still be a wrong program if it quietly accepts negative amounts.
## Runnable Python 3 exercise
Save as `01_What_is_a_program.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def total_cents(price_cents, count):
if type(price_cents) is not int or price_cents < 0:
raise ValueError("price must be nonnegative integer cents")
if type(count) is not int or not 0 <= count <= 100:
raise ValueError("invalid quantity")
return price_cents * count
assert total_cents(125, 3) == 375
assert total_cents(125, 0) == 0
for inputs in ((-1,2),(100,-1),(100,101),(True,2)):
try: total_cents(*inputs)
except ValueError: pass
else: raise AssertionError("invalid inputs accepted")
print("PASS input -> checked rule -> output")
~~~
## Why this works
The function isolates one calculation and returns a result rather than printing inside the logic. Its caller can display euros later, but the core keeps integer cents to avoid decimal rounding problems. The `type(...) is int` check intentionally rejects Boolean input, even though Python considers bool a subtype of int. Separate invalid input from a legitimate total of zero. Assertions express the expected behavior in a form a machine can check.
## Guided learner lab
Draw a three-box diagram for input, validation and output. Change the unit price to 149 cents and quantity to four; calculate 596 cents on paper before running. Predict outputs for quantity zero and the rejected cases. Add a maximum-price check and write one test on each side of its boundary. Keep the same result for the same input so the helper stays deterministic.
## Diagnosing mistakes
If the output seems incorrect, print or inspect the two inputs before multiplication and identify whether their units are cents or euros. If a program fails while another example runs, capture its exact input and traceback. A passing example is evidence for those cases, not proof of every possible input.
### Variables and types
Source-URL: https://ded-sec.space/learn/en/en-180.html
# Variables and types — convert input before arithmetic
## Concept and intended result
A variable holds a reference to a value. In Python, the value has a type: `"12"` is text and `12` is an integer, so they are not interchangeable in arithmetic. Many command-line and form inputs arrive as strings. Here we define a deliberate conversion boundary: ASCII decimal digits only, no leading zeros except zero itself, and an upper bound of 50 units.
## Runnable Python 3 exercise
Save as `02_Variables_and_types.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def parse_units(token):
if type(token) is not str or not token.isascii() or not token.isdecimal():
raise ValueError("ASCII decimal text required")
if len(token) > 1 and token.startswith("0"):
raise ValueError("no leading zeros")
number = int(token)
if number > 50: raise ValueError("limit 50")
return number
count = parse_units("12")
label = "pieces"
assert count == 12 and type(count) is int
assert type(label) is str
assert f"{count} {label}" == "12 pieces"
for bad in ("03","-2","2.0","٢",True,"51"):
try: parse_units(bad)
except ValueError: pass
else: raise AssertionError("bad text accepted")
print("PASS typed quantity conversion")
~~~
## Why this works
Converting `int(token)` without checking the input shape can accept forms that do not belong to the chosen user interface. The explicit ASCII rule rejects other Unicode numeral scripts; this is a product decision rather than a universal rule about all numeric writing systems. `type(token) is str` prevents True or an integer from being silently accepted as a string. The final f-string converts a validated integer into display text only when producing the label.
## Guided learner lab
Before executing, predict `"12" + "3"` and `12 + 3`, and explain why the first produces text rather than 15. Test '0', '50', '51', '03', '٢' and '-1'. Decide whether your real interface needs internationalized numeral input; if so, define a different parser explicitly instead of removing checks at random. Add one test proving that type(label) remains str.
## Diagnosing mistakes
TypeError often identifies a mismatch between values and operations, not a reason to stringify every value. If the user enters unexpected numerals, keep the original input and show the required format. Do not swallow errors and replace every invalid value with zero, because zero may mean something legitimate.
### Conditional logic
Source-URL: https://ded-sec.space/learn/en/en-181.html
# Conditions — mutually exclusive branches at exact boundaries
## Concept and intended result
A condition chooses which instructions execute. A learner receives retry for scores below 50, passed for 50 through 89 and excellent for 90 through 100. These ranges must not overlap or leave gaps, and invalid scores must be rejected before classification. `if`, `elif` and a final `return` express the mutually exclusive paths directly.
## Runnable Python 3 exercise
Save as `03_Conditions.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def outcome(score):
if type(score) is not int or not 0 <= score <= 100:
raise ValueError("score must be 0..100")
if score >= 90:
return "excellent"
elif score >= 50:
return "passed"
return "retry"
assert [outcome(x) for x in (0,49,50,89,90,100)] == [
"retry","retry","passed","passed","excellent","excellent"]
for bad in (-1,101,50.5,True):
try: outcome(bad)
except ValueError: pass
else: raise AssertionError("invalid score accepted")
print("PASS branch and boundary checks")
~~~
## Why this works
Python evaluates conditions from top to bottom. If the 50-point threshold were checked first, a score of 95 would return passed rather than excellent. The type check rejects True and fractional values so scores remain within the stated integer domain. The test matrix includes the exact values on both sides of each threshold. The operator `==` compares values; `=` assigns a name and cannot replace it inside an ordinary Python condition.
## Guided learner lab
Write a table for 49, 50, 89 and 90 before executing. Reverse the two if statements and describe the mistake. Add a new 70–89 'good' category without changing existing results for 0–49, 50–69 and 90–100. For each added boundary provide at least two assertions, immediately below and at the threshold.
## Diagnosing mistakes
A surprising classification is often caused by branch order or a missing validation boundary. Inspect the exact score type and each comparison. Avoid broad except blocks that return retry for malformed input: retry is a legitimate classification, not a synonym for errors.
### Loops and iteration
Source-URL: https://ded-sec.space/learn/en/en-182.html
# Loops — reason about the stopping condition
## Concept and intended result
A loop repeats an operation. This exercise sums every even number from zero through an inclusive upper limit, using a while loop rather than a built-in sum. The stopping condition is `current <= limit`, and each iteration adds two to current. To show termination, identify a measure that moves monotonically toward the boundary and cannot cycle forever within the allowed range.
## Runnable Python 3 exercise
Save as `04_Loops.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def even_sum(limit):
if type(limit) is not int or not 0 <= limit <= 1000:
raise ValueError("limit out of bounds")
total = 0
current = 0
while current <= limit:
total += current
current += 2
return total
assert even_sum(0) == 0
assert even_sum(6) == 12
assert even_sum(7) == 12
assert even_sum(10) == sum(n for n in range(11) if n%2==0)
try: even_sum(-1)
except ValueError: pass
else: raise AssertionError("invalid limit accepted")
print("PASS terminating while loop")
~~~
## Why this works
With a nonnegative upper bound at most 1000, current begins at zero and increases by two. Eventually it becomes greater than limit, so the condition becomes false. The accumulated total remains the sum of even values already visited; this is the loop invariant. A for loop with range(0, limit+1, 2) would express the same task more compactly, but the explicit while version helps inspect updates and off-by-one mistakes.
## Guided learner lab
Trace current and total for limit 6 on paper, row by row. Change `<=` to `<` and show the boundary at which the result changes. Remove `current += 2` only in a disposable test and explain the infinite-loop risk without running it. Rewrite with a for loop and compare results for every limit from zero through 100.
## Diagnosing mistakes
If execution never ends, inspect whether the loop variable changes toward the stop condition. If the final value is missing, check the inclusive versus exclusive comparison. Do not run intentionally unbounded loops on a shared or battery-limited phone; reason about them from a finite trace.
### Functions and parameters
Source-URL: https://ded-sec.space/learn/en/en-183.html
# Functions — named inputs, default values and a rounding policy
## Concept and intended result
A function lets you reuse a calculation without copying it into multiple screens. Here apply_discount receives integer cents and an optional whole-number percentage from zero through 100. If the caller omits the discount, the default is zero. The return value is the discounted total in integer cents rather than a printed message, making the helper straightforward to test and use from a terminal or UI.
## Runnable Python 3 exercise
Save as `05_Functions.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def apply_discount(total_cents, percentage=0):
if (type(total_cents) is not int or total_cents < 0 or
type(percentage) is not int or not 0<=percentage<=100):
raise ValueError("invalid price or discount")
# Explicit round-down of fractional cents.
return total_cents*(100-percentage)//100
assert apply_discount(1000) == 1000
assert apply_discount(1000,25) == 750
assert apply_discount(101,50) == 50
assert apply_discount(500,100) == 0
for p in (-1,101):
try: apply_discount(100,p)
except ValueError: pass
else: raise AssertionError("bad percentage accepted")
print("PASS function contract and default arguments")
~~~
## Why this works
The expression multiplies before dividing and uses integer floor division to discard fractional cents. That is an explicitly chosen round-down policy: 101 cents with a 50% discount becomes 50 cents, not 51. The policy is not automatically suitable for every merchant or jurisdiction; an application must document its rounding rule. Avoid mutable lists or dicts as default arguments because Python creates default values once at function definition time.
## Guided learner lab
Predict results for 1000 cents at 25%, 101 cents at 50% and 500 cents at 100%. Add a test that passing no percentage equals passing zero. Introduce a separate tax function instead of mixing tax policy into the discount helper. Test different rounding policies on odd-cent totals without silently changing existing behavior.
## Diagnosing mistakes
If callers see None, check that the function returns a value on every valid branch rather than printing. If totals differ by one cent, inspect multiplication and division order and the explicit rounding decision. Keep user-facing formatting separate from business arithmetic.
### Lists, maps and sets
Source-URL: https://ded-sec.space/learn/en/en-184.html
# Collections — keep order, count repetitions and build uniqueness
## Concept and intended result
Lists, dictionaries and sets answer different questions. In a user-selected list of names, order and duplicates may matter. A frequency dictionary counts how often each name occurs. A unique-name list can preserve only the first appearance of each name. A plain set loses meaningful occurrence information and should not automatically replace the original list.
## Runnable Python 3 exercise
Save as `06_Collections.py` and run with Python 3. Predict the output before executing; every example has assertions and uses only local synthetic values.
~~~python
def catalog(names):
if not isinstance(names, list) or not all(type(x) is str and x for x in names):
raise ValueError("list of nonempty names required")
counts = {}
for name in names:
counts[name] = counts.get(name, 0) + 1
unique_first_seen = list(dict.fromkeys(names))
return unique_first_seen, counts
unique, counts = catalog(["Ada","Grace","Ada","Αθηνά"])
assert unique == ["Ada","Grace","Αθηνά"]
assert counts == {"Ada":2,"Grace":1,"Αθηνά":1}
assert catalog([]) == ([], {})
try: catalog(["ok",None])
except ValueError: pass
else: raise AssertionError("wrong element type accepted")
print("PASS ordered collection and frequency map")
~~~
## Why this works
The code loops through the list once to build counts and uses dict.fromkeys to preserve first-seen order in supported modern Python versions. The dictionary provides expected efficient key lookup, while the list preserves display order. Unicode text such as Αθηνά works as a dictionary key. Empty input returns two empty containers without being confused with invalid elements; None is rejected by the stated schema.
## Guided learner lab
Add one extra Ada and predict the count without running. Change the order of names and confirm the frequency dictionary stays the same while unique_first_seen changes. Compare `set(names)` with the ordered unique list; write down which requirement gets lost. Try a list containing an integer, empty string and a tuple instead of a list, and record the rejection.
## Diagnosing mistakes
If `KeyError` occurs when counting, use counts.get(name,0) rather than assuming the key exists. If duplicates disappear unexpectedly, find where a list was converted to a set. Avoid relying on a set's iteration order to present user-facing results; preserve an explicit order when the interface needs one.
### Strings and Unicode
Source-URL: https://ded-sec.space/learn/en/en-185.html
# Strings and Unicode
Files in DedSec include Greek names and UTF-8 documents. Treat text encodings explicitly; do not assume a byte is the same as a character. Use pathlib and encoding="utf-8" for portable files.
## Worked example
```text
from pathlib import Path
p = Path("greek_demo.txt")
p.write_text("Καλημέρα", encoding="utf-8")
print(p.read_text(encoding="utf-8"))
```
## Practice
Explain why using Unicode filenames matters to Greek project paths.
## Corrected result / hint
UTF-8 preserves Greek characters across supported systems.
## Unicode has more than one notion of length
`len("é")` is 1 for the precomposed form; `len("e\u0301")` is 2 code points although both can look identical. UTF-8 stores variable numbers of bytes. Distinguish byte length, code-point count and grapheme clusters; none is automatically a display width.
```python
import unicodedata
a="é"; b="e\u0301"
assert a!=b
assert unicodedata.normalize("NFC",a)==unicodedata.normalize("NFC",b)
assert len(a.encode("utf-8"))==2
```
Normalize for comparison only when your product's requirements allow it. Accent-insensitive search may help readers but must not silently rewrite filenames or tokens. For Greek, case folding changes sigma variants; test `ς` and `σ`.
**Exercise:** build a small search index of Greek and English titles with and without accents; measure false matches instead of declaring all diacritics irrelevant.
## Unicode laboratory: same glyph, different bytes
~~~python
import unicodedata
a, b = "é", "e\u0301"
assert a != b
assert unicodedata.normalize("NFC", a) == unicodedata.normalize("NFC", b)
assert a.encode("utf-8") != b.encode("utf-8")
~~~
The two strings can look identical in a UI but differ as sequences of code points and UTF-8 bytes. Do not assume that `len(text)` counts human-perceived characters. To deliberately reproduce a decoding error, call `b"\xff".decode("utf-8")` and inspect `UnicodeDecodeError`. Replacing or ignoring invalid bytes loses information, so only apply that policy intentionally. As an independent exercise, create two visually identical filenames with distinct normalization forms (if the filesystem permits), inspect their bytes, and define an explicit NFC policy for searching Greek and accented names. Reference: https://docs.python.org/3/library/unicodedata.html
### Files and paths
Source-URL: https://ded-sec.space/learn/en/en-186.html
# Files and paths
Resolve files relative to known locations, not the caller's accidental working directory. Avoid overwriting user files. For data, write to a temp file first and replace only after success.
## Worked example
```text
from pathlib import Path
p = Path("notes.txt")
if not p.exists():
p.write_text("first note\n", encoding="utf-8")
print(p.read_text(encoding="utf-8"))
```
## Practice
Change this to append a new line without erasing existing notes.
## Corrected result / hint
Open the file using mode="a" and encoding="utf-8".
## A file path is contextual
`Path("data.json")` is relative to the current working directory, not automatically to the script that mentions it. For read-only bundled data use `Path(__file__).resolve().parent / "data.json"`; for writable application data use a deliberately selected user directory. Do not place credentials in source directories.
```python
from pathlib import Path
root=Path(__file__).resolve().parent
candidate=(root/"fixtures"/"sample.txt").resolve()
if not candidate.is_relative_to(root):
raise ValueError("outside workspace")
```
Path containment checks can be invalidated by symlink races during subsequent open operations; they are a useful first check, not a complete secure file API. Shared Android storage may be non-executable; keep scripts in Termux private `$HOME` and treat `~/storage` as interchange.
**Exercise:** run the same script from two different working directories and prove that its bundled input resolves identically.
## File-system boundary: isolated fixture
~~~python
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as directory:
target = Path(directory) / "δοκιμή.txt"
target.write_text("line\n", encoding="utf-8")
assert target.read_text(encoding="utf-8") == "line\n"
assert target.is_file()
~~~
Keep each test inside a disposable directory. Compare opening a nonexistent path with calling `read_text` on a directory: the failures are not interchangeable. For untrusted relative paths, resolve a candidate beneath an allowed root and verify containment with `Path.is_relative_to`, but note that symlink changes between check and open create a race. As a separate persistence experiment write a temporary file in the same directory and `replace` the destination. Explain why atomic rename does not alone guarantee durability after a sudden power failure. Reference: https://docs.python.org/3/library/pathlib.html
### Errors and exception handling
Source-URL: https://ded-sec.space/learn/en/en-187.html
# Errors and exception handling
Handle only failures you can recover from. Keep meaningful error messages and avoid a catch-all that silently hides problems. Use finally or context managers for cleanup.
## Worked example
```text
text = "123"
try:
value = int(text)
except ValueError:
print("not a number")
else:
print(value * 2)
```
## Practice
Try text="abc" and explain the new branch.
## Corrected result / hint
The ValueError branch reports invalid numeric text.
## Exceptions are part of the interface
Catch an exception only where you can make a useful decision. An absent optional file may trigger a default; a corrupt required configuration should fail clearly. Do not swallow all errors or silently replace malformed input with good-looking values.
```python
from pathlib import Path
def load_name(path):
try: text=Path(path).read_text(encoding="utf-8")
except FileNotFoundError: return "anonymous"
if not text.strip(): raise ValueError("empty name file")
return text.strip()
```
Differentiate `FileNotFoundError`, `PermissionError` and `UnicodeDecodeError`; they demand different repairs. Use `raise ... from exc` when translating a low-level failure into a domain-specific one. `finally` is for cleanup, not suppressing errors.
**Exercise:** test missing file, unreadable file where practical, empty file, invalid UTF-8 and valid file; assert that each produces the intended outcome.
## Distinguish parsing from application rules
~~~python
def parse_score(text):
try:
value = int(text)
except ValueError as exc:
raise ValueError("not an integer") from exc
if value < 0:
raise ValueError("negative score")
return value
assert parse_score("0") == 0
assert parse_score("12") == 12
~~~
Test `"bad"` and `"-2"` separately. Both produce `ValueError`, but one originates in conversion and one in a documented domain constraint. Preserve the original cause when wrapping an exception. Returning zero in `except Exception` would silently turn corrupted input into a valid score. Extend this into file input: handle `FileNotFoundError` at the file operation, use a context manager for cleanup, and add `unittest.assertRaisesRegex` for each rejection. Record precisely which exception each boundary may recover from. Reference: https://docs.python.org/3/tutorial/errors.html
### Algorithms and complexity
Source-URL: https://ded-sec.space/learn/en/en-189.html
# Algorithms and complexity
Estimate how work scales with input size. One pass through n items is O(n); nested full passes are usually O(n²). A correct, readable O(n) program is often better than premature optimization.
## Worked example
```text
def find_item(items, wanted):
for item in items:
if item == wanted:
return True
return False
print(find_item([2, 4, 8], 4))
```
## Practice
What is the worst-case number of comparisons for 100 elements?
## Corrected result / hint
Up to 100 comparisons (linear time).
## Complexity is a model, not a stopwatch
Big-O describes growth as inputs scale. A nested loop may be O(n²); a hash lookup is expected average O(1) but depends on hashing; a sort is typically O(n log n). Always specify n and which operation counts. Storage also matters: materializing all rows versus streaming can change memory from O(n) to O(1).
```python
def duplicates(values):
seen=set()
for value in values:
if value in seen:return True
seen.add(value)
return False
assert duplicates([2,4,2])
assert not duplicates([2,4,6])
```
This algorithm uses average O(n) time and O(n) extra space. Compare to a double nested scan (O(n²) time, O(1) extra memory).
**Exercise:** generate lists of length 100, 1,000 and 10,000. Record median time from multiple trials, control warm-up, and explain why microbenchmarks never prove the asymptotic bound alone.
## Lower-bound search and its invariant
~~~python
def lower_bound(items, target):
lo, hi = 0, len(items)
while lo < hi:
mid = (lo + hi) // 2
if items[mid] < target:
lo = mid + 1
else:
hi = mid
return lo
assert lower_bound([], 4) == 0
assert lower_bound([1, 3, 3, 8], 3) == 1
assert lower_bound([1, 3, 3, 8], 4) == 3
~~~
The contract requires sorted input. Each iteration preserves the range of possible answers and shortens it; duplicates must not accidentally return the last match. The returned insertion position does **not** establish that the target exists. Compare this algorithm with a linear scan over randomly generated sorted lists using a reproducible seed, including empty input and out-of-range targets. Sorting a fresh input for every query costs `O(n log n)`, not the `O(log n)` of the search alone. Reference: https://docs.python.org/3/library/bisect.html
### Queues, stacks and indexes
Source-URL: https://ded-sec.space/learn/en/en-190.html
# Choosing data structures from the operations you actually need
A stack processes the most recently added item first (LIFO). A queue processes the oldest item first (FIFO). A hash-based set is useful for membership tests, but doesn't preserve all duplicate occurrences. These aren't just names: the desired operations determine both correctness and cost.
## A runnable FIFO example in Python
~~~python
from collections import deque
pending = deque(["first", "second"])
pending.append("third")
assert pending.popleft() == "first"
assert pending.popleft() == "second"
assert list(pending) == ["third"]
~~~
A deque is appropriate because removing from its left end is efficient. Repeatedly removing index zero from a Python list shifts the remaining elements, giving linear-time work for each removal. A list is still a good stack with append and pop at the right end. Be explicit about which end your application reads from before choosing a container.
## Test an invariant rather than just printing
A queue should return enqueued items in enqueue order. For an empty queue, popleft raises IndexError, so an application needs a deliberate policy: check before removing or catch the exception. An undo history instead uses a stack so the most recent edit is reverted first. Model the difference with the sequence A, B, C: the queue returns A; the stack returns C.
## Sets, dictionaries, and misleading performance claims
For repeated membership checks on many distinct identifiers, a set usually offers average constant-time lookup, whereas searching a list is linear in its length. Hash collisions and adversarial inputs mean this average is not a universal worst-case bound. If you need to map product codes to counts, choose a dictionary, not a set. If you need every repeated event in its original order, don't replace the event log with a set.
## Independent exercise and expected evidence
Implement a simple task processor with four events, including a duplicate identifier. Predict the output order before execution. Add a cancellation operation by identifier and explain why removal by arbitrary value is different from popleft. Note the chosen Python version and compare time costs qualitatively as data grows; do not claim a benchmark that wasn't run.
### Unit tests and regression checks
Source-URL: https://ded-sec.space/learn/en/en-191.html
# Unit tests and regression checks
A test asserts expected behavior for representative cases and edge cases. In DedSec, static tests avoid importing dangerous or stateful scripts merely to check syntax. Use isolated temporary directories and fakes for network or file access.
## Worked example
```text
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
```
## Practice
Add a test for add(0, 0).
## Corrected result / hint
assert add(0, 0) == 0.
## Write tests that can fail for the right reason
A useful test has a clear input, expected output and reason it would fail. Test the normal case, both boundaries, empty input and invalid type separately. `unittest` is included with Python:
```python
import unittest
def clamp(v,lo,hi):
if lo>hi: raise ValueError("bounds reversed")
return min(hi,max(lo,v))
class ClampTests(unittest.TestCase):
def test_inside(self): self.assertEqual(clamp(5,0,10),5)
def test_lower(self): self.assertEqual(clamp(-1,0,10),0)
def test_invalid(self):
with self.assertRaises(ValueError): clamp(0,4,2)
if __name__=="__main__": unittest.main()
```
A regression test should fail against the known broken behavior, then pass against the fix. Mock a network client at your own application's boundary rather than depending on a live service.
**Exercise:** intentionally change `max(lo,v)` to `min(lo,v)` and observe which test catches it; add one that detects it if none does.
## Mutation lab: a test must detect a broken rule
~~~python
import unittest
def clean(s):
if not isinstance(s, str):
raise TypeError("text required")
return s.strip().casefold()
class Checks(unittest.TestCase):
def test_name(self):
self.assertEqual(clean(" Ada "), "ada")
def test_blank(self):
self.assertEqual(clean(" "), "")
def test_type(self):
with self.assertRaises(TypeError):
clean(None)
if __name__ == "__main__":
unittest.main()
~~~
Run the fixture in a scratch `test_clean.py`, then remove `strip()` temporarily. The test of `" Ada "` must fail. Restore the function and confirm green again. This is a mutation check: if deliberately breaking a feature leaves tests green, a passing suite may be misleading. Add a non-ASCII name and a regression fixture for an earlier bug. Keep external services and clocks out of the unit-test boundary. Documentation: https://docs.python.org/3/library/unittest.html
### Git history, safe changes and recovery
Source-URL: https://ded-sec.space/learn/en/en-193.html
# Git history, safe changes and recovery
## Git and safe change history
Create a branch or make a local backup before risky changes. Review git diff and git status; do not overwrite the canonical origin. A working tree with uncommitted user changes is not a safe target for reset --hard.
### Worked example
```text
git status --short
git remote -v
git diff --check
git log -5 --oneline
```
### Practice
Explain the difference between git fetch and git pull.
### Corrected result / hint
fetch obtains remote objects; pull also attempts integration.
### Reversible edits in a disposable repository
~~~sh
mkdir git-scratch && cd git-scratch
git init -b main
printf 'first\n' > note.txt
git add note.txt
git diff --cached --check
git commit -m "Record baseline"
printf 'second\n' >> note.txt
git diff -- note.txt
git status --short
~~~
Set a local author identity if Git requests one. `git diff` shows unstaged edits and `git diff --cached` shows staged edits: the two states must not be conflated. Commit the second change, inspect `git log --oneline`, and use `git revert ` to create a new reversal commit. Explain why `reset --hard` can destroy uncommitted tracked work and is not an automatic repair for shared `main`. Verification must be tied to the exact commit SHA: a successful push never proves browser or lesson quality. Documentation: https://git-scm.com/docs
## Git history, branches, merge conflicts and recovery
A Git commit records a snapshot and ancestry. Branches are movable references to commits. A merge combines histories; rebase rewrites local ancestry. Avoid force-pushing shared branches, especially when automations or teammates depend on commit identity.
### Safe review commands
```bash
git status --short
git remote -v
git log --oneline -5
git diff --check
git diff --stat
```
A `non-fast-forward` rejection means your local branch does not simply advance the remote reference. Fetch, inspect and reconcile upstream history instead of immediately using `--force`. A backup copy and a clean worktree reduce accidental loss.
### Practice
1. Create a topic branch, intentionally conflict and resolve it.
2. Compare `git revert` with `git reset --hard` and explain which preserves shared history.
3. Recover a recently lost local commit using reflog.
## git: not a git repository
### Meaning and differential diagnosis
Git cannot locate repository metadata from the current directory upward. This may be an ordinary folder, a folder copied without its .git metadata, a deleted working tree, or an unexpectedly changed current directory in a script. Do not run git init reflexively: that creates a new, unrelated history.
### Reproduction / nondestructive inspection
~~~sh
pwd
git rev-parse --show-toplevel
git rev-parse --git-dir
git status --short
# If outside a repository, commands above fail by design.
# Inspect the intended folder before changing it:
ls -la /path/to/project
git -C /path/to/project rev-parse --show-toplevel
~~~
### Interpret evidence and fix the cause
Capture pwd from the same shell or process that fails. Distinguish a worktree (.git may be a file) from a plain directory; never assume .git must be a directory. If the repository is missing, recover from the known remote or backup after preserving local files. If a script changed directory, anchor paths to its own location and fail early.
### Practical lab
Run the rev-parse commands in a temporary plain directory and in an existing clone; record exit status, stdout and stderr. Check that a repair does not create a second .git inside a real repository.
### Environments and reproducible builds
Source-URL: https://ded-sec.space/learn/en/en-194.html
# Reproducible Python environments on Linux, Windows, and Termux
When one Python process imports a package successfully and another reports ModuleNotFoundError, the first question is which interpreter each process uses. A virtual environment isolates a project from system-wide libraries, but it does not automatically solve CPU architecture, operating-system support, or unavailable native dependencies.
## Inspect before installing anything
~~~python
import sys
import platform
from pathlib import Path
print(sys.executable)
print(sys.version.split()[0])
print(platform.system(), platform.machine())
print(Path.cwd())
~~~
Save this as inspect_env.py and run it through the exact interpreter used by the failing application. sys.executable identifies the running Python binary; the shell prompt alone is not reliable evidence that the right virtual environment is active. Path.cwd() is the working directory, which may differ from the script's location.
## Use a project-owned interpreter when supported
On desktop Linux, a standard option is creating a venv using python3 -m venv .venv, then running .venv/bin/python -m pip --version. On Windows its interpreter normally lives under .venv\Scripts\python.exe. The module invocation ensures pip belongs to the interpreter named before -m. Some systems require separately installing venv support. On Termux, Python is supplied through its own pkg repository; confirm availability of venv and compatible wheels on that installation rather than copying distro-specific fixes.
## Two failures that look similar but aren't
If pip says a requirement is installed, yet the application can't import it, compare the pip interpreter, sys.executable, and project launch command. A package might instead import but fail later because a native library is absent: installing it into the correct venv is then necessary but not sufficient. For a dependency with compiled extensions, the Python ABI and Android/Linux/Windows platform tags matter.
## Practical investigation
Create an empty disposable project with inspect_env.py, print the values in a system interpreter and a project venv, and note which paths differ. Then record a minimal dependency manifest and rebuild the environment without copying the original site-packages folder. Compare interpreter version, dependency version, OS and architecture. Report observed outputs separately from predictions; passing installation alone is not proof the whole application works.
## Cross-platform and accessibility
Do not assume Android tools exist on Ubuntu, or Windows paths exist on Termux. Test real input devices and screen readers where applicable. For command-line menus, support keyboard flow and preserve exit behavior.
### Worked example
```text
import sys
from pathlib import Path
print(sys.platform)
print(Path.home())
```
### Practice
Describe why hard-coding /storage/emulated/0 fails on desktop Linux.
### Corrected result / hint
The Android path is not present on a normal Linux machine.
### HTTP, JSON and API boundaries
Source-URL: https://ded-sec.space/learn/en/en-195.html
# HTTP, JSON and API boundaries
A browser UI sends HTTP requests to a server. Validate all input on the server, check status codes, and never trust that a button click implies a saved state. For DedSec OS, trace the client event to the /api/ handler and persisted file.
## Worked example
```text
import json
payload = {"ok": True, "count": 3}
encoded = json.dumps(payload)
print(json.loads(encoded)["count"])
```
## Practice
Add a "version" key without breaking the old "count" consumer.
## Corrected result / hint
Adding an optional JSON field keeps this read compatible.
## Separate transport, protocol and application failure
An HTTP request may fail before reaching a server (DNS, connection, TLS), return an HTTP error (400, 404, 429, 503) or succeed at HTTP level but carry invalid JSON. Implement finite timeouts, validate returned structure and retry only transient failures where repeating the operation is safe.
```python
import json
def read_items(response_text):
obj=json.loads(response_text)
if not isinstance(obj,dict) or not isinstance(obj.get("items"),list):
raise ValueError("expected an object with items array")
return obj["items"]
assert read_items('{"items":[]}')==[]
```
When using a real client, distinguish `401` credentials from `403` access policy, `404` missing resource, `429` backoff/rate limit. Never indiscriminately retry a money transfer or non-idempotent POST.
**Exercise:** supply malformed JSON, JSON with the wrong root type and JSON with missing items; add specific error handling for each without masking the failure.
## Test the application contract without a network request
~~~python
import json
payload = json.loads('{"items":[{"id":1},{"id":2}]}')
assert [item["id"] for item in payload["items"]] == [1, 2]
try:
json.loads('{"items":[')
except json.JSONDecodeError:
pass
else:
raise AssertionError("invalid JSON accepted")
~~~
An HTTP 200 alone does not establish a valid schema. Treat malformed JSON, missing `items`, a 404 response and a 429 rate limit as **different** failure classes. A paginated client should stop when the documented next-page cursor is absent, rather than fetching page one forever. Keep credentials out of logs; simulate server errors with a stub response instead of hitting a live endpoint. Independent task: define bounded retry/backoff for transient 503 failures but not for a malformed local payload. Reference: https://www.rfc-editor.org/rfc/rfc9110
### Programming knowledge encyclopedia
Source-URL: https://ded-sec.space/learn/en/en-199.html
# Programming knowledge encyclopedia
- [Reading an unfamiliar codebase](https://ded-sec.space/learn/en/en-242.html)
- [Types and conversions](https://ded-sec.space/learn/en/en-242.html)
- [Mutable state and aliasing](https://ded-sec.space/learn/en/en-242.html)
- [Functions and contracts](https://ded-sec.space/learn/en/en-245.html)
- [Iteration and invariants](https://ded-sec.space/learn/en/en-245.html)
- [Recursion and termination](https://ded-sec.space/learn/en/en-245.html)
- [Error handling boundaries](https://ded-sec.space/learn/en/en-245.html)
- [Unicode and text encoding](https://ded-sec.space/learn/en/en-245.html)
- [Numeric precision and money](https://ded-sec.space/learn/en/en-250.html)
- [Parsing and validation](https://ded-sec.space/learn/en/en-250.html)
- [Time complexity](https://ded-sec.space/learn/en/en-250.html)
- [Space complexity](https://ded-sec.space/learn/en/en-250.html)
- [Hash maps and sets](https://ded-sec.space/learn/en/en-212.html)
- [Stacks and queues](https://ded-sec.space/learn/en/en-212.html)
- [Sorting and stable ordering](https://ded-sec.space/learn/en/en-212.html)
- [Binary search correctness](https://ded-sec.space/learn/en/en-215.html)
- [Graph traversal](https://ded-sec.space/learn/en/en-216.html)
- [Dynamic programming](https://ded-sec.space/learn/en/en-217.html)
- [Greedy choices](https://ded-sec.space/learn/en/en-218.html)
- [Property based testing](https://ded-sec.space/learn/en/en-219.html)
- [Reproducing a bug](https://ded-sec.space/learn/en/en-212.html)
- [Stack traces](https://ded-sec.space/learn/en/en-227.html)
- [Logging and observability](https://ded-sec.space/learn/en/en-227.html)
- [Unit integration and end-to-end tests](https://ded-sec.space/learn/en/en-227.html)
- [Mocks and test doubles](https://ded-sec.space/learn/en/en-230.html)
- [Regression protection](https://ded-sec.space/learn/en/en-227.html)
- [Performance profiling](https://ded-sec.space/learn/en/en-227.html)
- [HTTP request and response](https://ded-sec.space/learn/en/en-266.html)
- [REST and resource modeling](https://ded-sec.space/learn/en/en-266.html)
- [Caching and freshness](https://ded-sec.space/learn/en/en-266.html)
- [HTML accessibility](https://ded-sec.space/learn/en/en-266.html)
- [JavaScript events and asynchronous state](https://ded-sec.space/learn/en/en-266.html)
- [Browser security boundaries](https://ded-sec.space/learn/en/en-271.html)
- [Relational modeling](https://ded-sec.space/learn/en/en-220.html)
- [SQL parameterization](https://ded-sec.space/learn/en/en-221.html)
- [Transactions and consistency](https://ded-sec.space/learn/en/en-222.html)
- [Indexes and query plans](https://ded-sec.space/learn/en/en-223.html)
- [Data migrations](https://ded-sec.space/learn/en/en-224.html)
- [JSON and schema evolution](https://ded-sec.space/learn/en/en-220.html)
- [Processes and threads](https://ded-sec.space/learn/en/en-220.html)
- [Race conditions and locks](https://ded-sec.space/learn/en/en-220.html)
- [Async IO and cancellation](https://ded-sec.space/learn/en/en-261.html)
- [Filesystem paths and symlinks](https://ded-sec.space/learn/en/en-261.html)
- [Subprocess safety](https://ded-sec.space/learn/en/en-261.html)
- [Environment variables and secrets](https://ded-sec.space/learn/en/en-264.html)
- [Cross-platform development](https://ded-sec.space/learn/en/en-264.html)
- [Threat modeling](https://ded-sec.space/learn/en/en-264.html)
- [Least privilege](https://ded-sec.space/learn/en/en-264.html)
- [Input and output encoding](https://ded-sec.space/learn/en/en-254.html)
- [Password hashing](https://ded-sec.space/learn/en/en-254.html)
- [Authorization versus authentication](https://ded-sec.space/learn/en/en-254.html)
- [Dependency and supply-chain risk](https://ded-sec.space/learn/en/en-257.html)
- [Backup recovery and integrity](https://ded-sec.space/learn/en/en-257.html)
- [Git history and branches](https://ded-sec.space/learn/en/en-257.html)
- [Code review checklist](https://ded-sec.space/learn/en/en-257.html)
- [Continuous integration](https://ded-sec.space/learn/en/en-257.html)
- [Semantic versioning and compatibility](https://ded-sec.space/learn/en/en-236.html)
- [Documentation that stays accurate](https://ded-sec.space/learn/en/en-236.html)
- [Feature flags and rollback](https://ded-sec.space/learn/en/en-236.html)
- [Modular architecture](https://ded-sec.space/learn/en/en-236.html)
- [Configuration layering](https://ded-sec.space/learn/en/en-236.html)
- [Release and artifact verification](https://ded-sec.space/learn/en/en-236.html)
- [Compilers and interpreters](https://ded-sec.space/learn/en/en-200.html)
- [Memory allocation and lifetimes](https://ded-sec.space/learn/en/en-201.html)
- [Networking timeouts and retries](https://ded-sec.space/learn/en/en-202.html)
- [Distributed systems consistency](https://ded-sec.space/learn/en/en-203.html)
- [Data pipelines and ETL](https://ded-sec.space/learn/en/en-204.html)
- [Machine learning fundamentals](https://ded-sec.space/learn/en/en-205.html)
- [Regex and text processing](https://ded-sec.space/learn/en/en-206.html)
- [Binary files and serialization](https://ded-sec.space/learn/en/en-207.html)
- [Domain and unit testing for AI generated code](https://ded-sec.space/learn/en/en-208.html)
- [Software licensing fundamentals](https://ded-sec.space/learn/en/en-209.html)
### Compilers and interpreters
Source-URL: https://ded-sec.space/learn/en/en-200.html
# Compilers and interpreters: parsing before execution
## Mental model
A compiler translates one representation into another: source code into bytecode, an intermediate representation, or machine instructions. An interpreter evaluates a representation. Real implementations combine the two. For example, CPython parses and compiles a module into bytecode before executing that bytecode with its virtual machine. A JavaScript runtime may interpret a function first and later optimize frequently executed code.
The pipeline can be divided into tokenization, parsing, semantic analysis, intermediate representation, optimization and execution or artifact generation. A syntax error means the parser cannot form the requested structure; a missing name may instead be detected by semantic analysis or at runtime, depending on the language.
## Reproducible precedence experiment
The expression 2 + 3 * 4 has an addition node at the root and a multiplication node on its right. Parentheses in (2 + 3) * 4 make multiplication the root. The results are 14 and 20 respectively.
~~~python
import ast
normal = ast.parse("2 + 3 * 4", mode="eval")
grouped = ast.parse("(2 + 3) * 4", mode="eval")
assert isinstance(normal.body.op, ast.Add)
assert isinstance(normal.body.right.op, ast.Mult)
assert isinstance(grouped.body.op, ast.Mult)
assert isinstance(grouped.body.left.op, ast.Add)
try:
ast.parse("2 + * 3", mode="eval")
except SyntaxError:
pass
else:
raise AssertionError("Expected syntax error")
print(ast.dump(normal, indent=2))
~~~
Save the code as parse_lab.py and run python3 parse_lab.py. It inspects the syntax tree without executing the input expression. The negative test confirms that malformed syntax is rejected before any program logic runs.
## Debugging by compilation stage
If a diagnostic reports an unexpected token, reduce the input and inspect earlier delimiters and operators. If it reports an unknown name, ask whether name resolution occurs at compile time or execution time. If the compiler emits object files but the linker fails, inspect symbol definitions and linking flags. If the program builds but crashes, focus on runtime state and inputs instead of the parser.
## Independent challenge
Write a recursive evaluator that accepts only integer literals, addition and multiplication from Python AST nodes. Reject function calls, names and attribute access. Check the two precedence expressions and a deliberately rejected function call. Explain why a syntax tree is a useful intermediate form but not a guarantee that a program is safe.
**Reference:** https://docs.python.org/3/library/ast.html
### Memory allocation and lifetimes
Source-URL: https://ded-sec.space/learn/en/en-201.html
# Memory and resource lifetimes — cleanup on exceptional paths
## Lifecycle contract
An object being reachable, an object owning a resource, and a resource remaining open are different properties. Python can reclaim ordinary memory through reference counting or garbage collection, but a file handle or socket has an external lifetime that should not depend on a future collection cycle. In C, returning a pointer to an automatic local object produces a dangling reference; in Rust the borrow checker instead enforces ownership constraints before execution. Do not assume that a higher-level language removes the need to close resources.
## Executable cleanup fixture (Python 3)
Save as lifetime_lab.py and run python3 lifetime_lab.py. Contextlib.ExitStack registers the resources and releases them in reverse order even when parsing raises a simulated exception.
~~~python
from contextlib import ExitStack
from io import StringIO
closed = []
class Tracked(StringIO):
def __init__(self, name):
super().__init__(name)
self.name = name
def close(self):
if not self.closed:
closed.append(self.name)
super().close()
first, second = Tracked("first"), Tracked("second")
try:
with ExitStack() as stack:
a = stack.enter_context(first)
b = stack.enter_context(second)
assert a.read() == "first" and b.read() == "second"
raise RuntimeError("simulated parse failure")
except RuntimeError:
pass
assert first.closed and second.closed
assert closed == ["second", "first"]
print("PASS: reverse-order cleanup on failure")
~~~
## What the assertions establish
Both text handles are closed after the exception. Because contexts unwind in reverse registration order, second closes before first. An ExitStack offers a useful mechanism when a variable number of resources are opened gradually; if the third acquisition fails, the first two must still be closed. The test checks logical resource ownership; it does not measure garbage-collector timings or prove leak freedom for arbitrary native allocations.
## Bounded investigation and diagnostics
1. Add a third Tracked resource, trigger a failure before entering it, and check exactly which handles close.
2. Temporarily remove ExitStack. Capture the difference between an explicit cleanup guarantee and eventual garbage collection, then restore context management.
3. Build a cache holding a file path rather than an open handle. Explain the changed resource lifetime and stale-data tradeoff.
4. Sketch the corresponding ownership rules for C malloc/free and Rust moves/borrows without executing unsafe C on personal files. If you have a compiler, exercise sanitizers on a disposable demonstration only.
**Evidence:** PASS, cleanup order, exception trace and an ownership diagram. Distinguish memory reclamation from operating-system handle cleanup.
### Networking timeouts and retries
Source-URL: https://ded-sec.space/learn/en/en-202.html
# Networking failures — bounded retries and idempotent writes
## Failure model
A timeout tells the client that it did not receive an answer; it does not prove the remote server performed no work. A POST that committed just before its reply was lost must not create a second charge during retry. Distinguish permanent bad requests (400 or 401) from potentially transient 429 and 503 responses. A real client must also respect Retry-After when valid, a total deadline, connection and read timeouts, and a maximum number of attempts.
## Executable failure simulation (Python 3)
Save as retry_lab.py and run python3 retry_lab.py. The transport is simulated; no HTTP request, financial transaction or network access takes place. A response is deliberately lost after the first logical write.
~~~python
def plan(statuses, max_attempts=3):
visits = []
for status in statuses[:max_attempts]:
visits.append(status)
if status == 200:
return ("OK", visits)
if status not in (429, 503):
raise ValueError("permanent HTTP failure")
raise TimeoutError("attempt budget exhausted")
assert plan([503, 429, 200]) == ("OK", [503, 429, 200])
for bad in ([400, 200], [503, 503, 503]):
try:
plan(bad)
except (ValueError, TimeoutError):
pass
else:
raise AssertionError("bad retry accepted")
ledger = {}
def post(key, fail_response=False):
if not key:
raise ValueError("idempotency key required")
if key not in ledger:
ledger[key] = len(ledger) + 1
if fail_response:
raise TimeoutError("reply lost after commit")
return ledger[key]
try:
post("order-7", True)
except TimeoutError:
pass
else:
raise AssertionError("missing simulated timeout")
assert post("order-7") == 1 and len(ledger) == 1
print("PASS: bounded retries and no double commit")
~~~
## Why retry safety is not just a loop
The plan stops immediately on a permanent response and throws after the attempt budget. The ledger uses a stable idempotency key: two attempts with order-7 refer to the same operation and return the same ID. Real servers must persist idempotency keys and their results atomically with the side effect; a local dictionary cannot do this across restarts. A server that rejects or forgets keys after a TTL needs an explicitly documented retry window. GET is generally intended to be safe/idempotent, but intermediaries and poorly designed endpoints can violate assumptions.
## Exercises and diagnostics
1. Change statuses to [503, 400, 200]; only two attempts should occur and the permanent error should propagate.
2. Make the server fail after committing twice without a stable idempotency key. Show the duplicate, then restore the key and verify one logical write.
3. Add a capped exponential delay schedule and deterministic jitter generated from a seeded random source. Test only calculation, never use real sleeps in unit tests.
4. Design the clock budget: a 2-second total deadline and a per-attempt timeout must leave time for at least one response. Explain why unlimited backoff violates this guarantee.
**Completion proof:** PASS, an explicit 429/503/400 policy, a lost-response trace, and a note identifying durable idempotency as a server requirement. The simulation does not establish reliability of a real provider.
### Distributed systems consistency
Source-URL: https://ded-sec.space/learn/en/en-203.html
# Distributed consistency — duplicate events and stale replicas
## Problem and terminology
Suppose two replicas display a counter derived from delivered order events. Replica A receives order-7, but replica B has not received it yet. A read of B returns an older value even though A already processed the event. Eventual consistency permits this transient gap, assuming delivery eventually succeeds. Read-your-writes consistency would require routing or tracking a version so the original writer does not observe an older state. Linearizability is stronger: all operations must appear at one instant between their invocation and completion.
## Executable deterministic model
Save as replica_lab.py and run python3 replica_lab.py. There is no network, consensus engine or actual database: this is a bounded delivery model that demonstrates idempotent handling and temporary disagreement.
~~~python
class Replica:
def __init__(self):
self.total = 0
self.events = set()
self.version = 0
def apply(self, event):
if event["id"] in self.events:
return False
self.events.add(event["id"])
self.total += event["delta"]
self.version += 1
return True
a, b = Replica(), Replica()
event = {"id": "order-7", "delta": 2}
assert a.apply(event)
assert not a.apply(event)
assert a.total == 2 and b.total == 0
assert b.apply(event) and b.total == 2
assert not b.apply(event)
assert a.events == b.events
print("PASS: stale read, duplicate delivery, convergence")
~~~
## What this proves and what it cannot prove
An event ID prevents duplicate application *within one replica* as long as the seen set survives. It does not grant exactly-once delivery; messages may be delivered at least once. The example eventually converges after B receives the same event. It does not solve conflicting concurrent writes, lost durable storage, Byzantine faults or leader election. A counter that combines independent updates across replicas needs a formal merge rule or ordered event log, not the simplistic latest-version overwrite.
## Bounded lab tasks
1. Deliver the event to A only, show B's stale read, then deliver it twice to B. Log versions and counters after every step.
2. Introduce a second event with a distinct ID. Try both delivery orders at A and B and check whether the final counter agrees.
3. Simulate a restart that discards the seen IDs and replay order-7. Observe the duplicate count; specify where deduplication state must be made durable.
4. Draw a timeline of a client writing at A and reading from B. State which consistency guarantee the observed stale read violates, and which weaker guarantee still allows it.
**Evidence:** PASS, step-by-step event timeline, explicit assumptions of reliable eventual delivery and one limitation of this model. Do not claim a simulated dictionary implements distributed consensus.
### Data pipelines and ETL
Source-URL: https://ded-sec.space/learn/en/en-204.html
# ETL pipelines — atomic batches, replay and conflicting records
## Scenario
A local synchronizer receives a sequence of item IDs and statuses. It should validate before insertion, store accepted rows, and permit identical input to be replayed after a crash without introducing duplicates. An identical ID paired with different content is *not* automatically safe to overwrite: it may indicate a corrupt source, a version conflict or an actual update with a different schema. This exercise chooses to reject conflicts rather than invent update semantics.
## Runnable SQLite/Python lab
Save as etl_lab.py and run python3 etl_lab.py. The database is entirely in memory, uses bound parameters, and tests rollback after an error late in a batch.
~~~python
import sqlite3
def etl(db, records):
for identifier, status in records:
if type(identifier) is not int or identifier <= 0:
raise ValueError("invalid ID")
if status not in {"new", "done"}:
raise ValueError("invalid status")
old = db.execute("SELECT status FROM item WHERE id=?", (identifier,)).fetchone()
if old:
if old[0] != status:
raise ValueError("conflicting replay")
else:
db.execute("INSERT INTO item VALUES (?,?)", (identifier, status))
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE item (id INTEGER PRIMARY KEY, status TEXT NOT NULL)")
with db:
etl(db, [(1, "new"), (2, "done")])
with db:
etl(db, [(1, "new"), (2, "done")])
assert db.execute("SELECT count(*) FROM item").fetchone()[0] == 2
try:
with db:
etl(db, [(3, "new"), (2, "new")])
except ValueError:
pass
else:
raise AssertionError("conflicting replay accepted")
assert db.execute("SELECT count(*) FROM item").fetchone()[0] == 2
print("PASS: replay, conflict detection, atomic rollback")
~~~
## Atomicity and checkpoint semantics
The sqlite3 context manager commits the transaction when its body exits successfully and rolls it back if an exception propagates. When the second row of the failing batch conflicts, the earlier row with ID 3 must also disappear. This prevents partially applied batches. A durable ETL pipeline should advance its checkpoint only in the same transaction as the rows it considers committed, otherwise crash recovery can skip data or repeat uncommitted work. Retried upserts are not automatically correct when source records can change without a version or timestamp.
## Hands-on fault boundaries
1. Replace the second replay with a feed containing an identical ID but changed status. Capture the conflict and verify the old row remains.
2. Reverse the order of the failing batch: compare the immediate error position with the final stored state. Test a separate invalid status and a negative ID.
3. Store a source version with each ID and define an explicit policy for an authorized update. Show how that differs from blind INSERT OR REPLACE.
4. Create a disposable file-based SQLite database, close and reopen it, and show that a committed checkpoint survives process exit. Never use a production database as a fixture.
**Evidence:** PASS, before/after row counts, a crash-replay matrix and a documented contract for conflicting data. The demonstration models small batches, not a streaming job controller.
### Machine learning fundamentals
Source-URL: https://ded-sec.space/learn/en/en-205.html
# Machine learning — honest temporal validation and leakage checks
## Problem and baseline
A binary classifier predicts events from time-stamped observations. Split the data chronologically so no training row occurs after a test row. Estimate preprocessing statistics, such as the mean used for scaling, from training examples only; fitting a scaler to all rows leaks information about the future. Compare any trained model against a majority-class baseline and report positive-class recall in addition to accuracy.
## Executable model-free experiment
Save as ml_lab.py and run python3 ml_lab.py. No machine-learning framework or external datasets are required. The experiment explicitly calculates a confusion matrix and compares train-only with leaked normalization statistics.
~~~python
def metrics(actual, predicted):
tp = sum(a == 1 and p == 1 for a,p in zip(actual,predicted))
fn = sum(a == 1 and p == 0 for a,p in zip(actual,predicted))
tn = sum(a == 0 and p == 0 for a,p in zip(actual,predicted))
fp = sum(a == 0 and p == 1 for a,p in zip(actual,predicted))
return tp,fn,tn,fp
train = [(1,1,0),(2,2,0),(3,3,0),(4,4,1)]
test = [(5,100,0),(6,101,1),(7,99,1)]
assert train[-1][0] < test[0][0]
baseline = [0] * len(test)
tp,fn,tn,fp = metrics([r[2] for r in test], baseline)
assert (tp,fn,tn,fp) == (0,2,1,0)
assert (tp+tn) / len(test) == 1/3
mean_train = sum(r[1] for r in train) / len(train)
mean_all = sum(r[1] for r in train+test) / len(train+test)
assert mean_train == 2.5 and mean_all > 30
print("PASS: temporal split, class recall, leakage")
~~~
## Reading the metrics
The baseline predicts the negative class for all three test observations. It therefore receives one correct answer out of three, and zero positive recall despite a nonzero accuracy. The train-only feature mean is 2.5; including future test values drastically shifts the mean and would improperly influence any model that used this preprocessing during training. Accuracy alone can conceal rare-class failure. A production evaluation also needs appropriate calibration, representativeness and uncertainty estimates.
## Exercises, failure cases, evidence
1. Rearrange the rows randomly and examine whether any future timestamp enters training. Explain why an unconstrained random split can leak time information.
2. Write precision, recall and specificity formulas, including explicit behavior when the denominator is zero.
3. Compare a baseline that always predicts positive. Which errors change, and why should the threshold depend on the relative cost of false alarms and missed events?
4. Group multiple observations by subject and make sure one subject cannot appear in both splits when that is the intended generalization target.
**Completion:** PASS, recorded confusion matrix, both means, and a written explanation of how leakage makes evaluation look better than deployment. These synthetic counts do not validate a real classifier.
### Regex and text processing
Source-URL: https://ded-sec.space/learn/en/en-206.html
# Regular expressions — literal user queries and Unicode boundaries
## Intent and threat model
An offline search box should treat a user-entered expression as literal text by default. The user may enter a+b, [note] or punctuation that has meaning in regular-expression syntax. Passing the string directly to re.compile changes the intended search. Use re.escape to build a literal pattern. If the application intentionally offers regular expressions, validate and bound input size, communicate that they are a different search mode, and avoid feeding adversarial unbounded strings to nested ambiguous quantifiers.
## Executable Python 3 example
Save as regex_lab.py and run python3 regex_lab.py. It checks literal escaping, fullmatch, greedy/lazy quantifiers and the difference between a Unicode word class and ASCII letters.
~~~python
import re
needle = "a+b"
assert re.search(re.escape(needle), "code a+b end").group() == "a+b"
assert re.findall(r"<.*>", "") == [""]
assert re.findall(r"<.*?>", "") == ["",""]
assert re.fullmatch(r"[0-9]{4}", "2026")
assert not re.fullmatch(r"[0-9]{4}", "x2026")
assert re.fullmatch(r"\w+", "Αθήνα")
assert not re.fullmatch(r"[A-Za-z]+", "Αθήνα")
print("PASS: literal escaping, greedy vs lazy, Unicode")
~~~
## Why the distinctions matter
re.search finds a substring while re.fullmatch must consume the entire input. The expression <.*> is greedy and consumes both bracketed fields as one match, whereas <.*?> stops at the closest compatible closing bracket. Neither expression is a real HTML parser; tags can be nested, malformed or contain quoted angle brackets. Python's Unicode-aware word character class includes Greek letters, while [A-Za-z] covers only basic Latin letters. For security-sensitive IDs, a precise allowed-character contract is safer than an ambiguous definition of a word.
## Bounded exercises and diagnostics
1. Search literally for [a+b] and compare escaped versus unescaped behavior; capture the regex compilation exception for an unmatched bracket.
2. Try empty text, a 1,024-character query and several accented Greek words. Decide on a documented maximum size and expected result for the empty query.
3. Construct a tiny synthetic string with nested ambiguous quantifiers such as (a+)+$ and a mismatching suffix. Do not benchmark catastrophic backtracking on arbitrary large inputs; prefer a safe parser or an engine with time limits for untrusted patterns.
4. Compare greedy and lazy matches when quotes or nesting are introduced. State why a structured parser is necessary.
**Evidence:** PASS, seven concrete assertions, escaped literal examples, and an explicit separation between literal search and regex mode.
### Binary files and serialization
Source-URL: https://ded-sec.space/learn/en/en-207.html
# Binary formats — bounded parsing, versions and integrity checks
## Define a wire format before writing bytes
Design a small record containing UTF-8 text. Its header is eleven bytes: magic DSK1 (four bytes), version (one unsigned byte), payload length (two-byte unsigned big-endian integer) and CRC32 (four-byte unsigned big-endian integer). The payload follows immediately. This explicit layout is portable across little-endian and big-endian machines. The application limits payloads to 64 bytes and rejects unknown versions, extra trailers, truncated messages and corrupt checksums.
## Run the parser in isolation
Save as binary_lab.py and run python3 binary_lab.py. There are no external packages, network calls or writes. Every failure is deliberately triggered on synthetic bytes.
~~~python
import struct
import zlib
MAGIC, LIMIT = b"DSK1", 64
def encode(content):
raw = content.encode("utf-8")
if len(raw) > LIMIT:
raise ValueError("payload too large")
return struct.pack(">4sBHI", MAGIC, 1, len(raw), zlib.crc32(raw)) + raw
def decode(frame):
if len(frame) < 11:
raise ValueError("short header")
magic, version, size, checksum = struct.unpack(">4sBHI", frame[:11])
if magic != MAGIC or version != 1 or size > LIMIT or len(frame) != 11 + size:
raise ValueError("invalid header or length")
raw = frame[11:]
if zlib.crc32(raw) != checksum:
raise ValueError("corrupted bytes")
return raw.decode("utf-8")
good = encode("γειά")
assert decode(good) == "γειά"
for bad in (good[:10], good[:-1], good[:5] + b"\xff" + good[6:],
good[:11] + b"x" + good[12:], good + b"x"):
try:
decode(bad)
except (ValueError, UnicodeError):
pass
else:
raise AssertionError("corruption accepted")
print("PASS: length/version/checksum and UTF-8 checks")
~~~
## Why validation precedes allocation and decode
The header length must be checked before struct.unpack, and the claimed payload size must be bounded before consuming it. The real received length must match the header exactly; otherwise a valid prefix could hide unwanted trailing data. CRC32 detects accidental corruption but is not authentication or a cryptographic signature: an attacker can recompute it. UTF-8 decoding can fail even when the checksum is valid if the payload was deliberately constructed with invalid bytes. Do not use pickle with untrusted input because it may invoke arbitrary code during deserialization.
## Bounded investigative tasks
1. Flip one version byte and one character byte, then observe which check fails first. Restore the original bytes after each test.
2. Replace the text with Greek and an emoji. Compare len(text) with len(text.encode('utf-8')); the length field must count bytes.
3. Claim an impossible size of 65535 in the header. The parser must reject before allocating a matching buffer.
4. Define version 2 as a separate format; do not interpret old payloads under an unannounced new layout. Explain how you would test backward compatibility.
**Evidence:** PASS, a byte-layout diagram, five malformed frames, and a written distinction between integrity and authenticity.
### Domain and unit testing for AI generated code
Source-URL: https://ded-sec.space/learn/en/en-208.html
# Reviewing generated code — independent business contracts and property checks
## A plausible but incorrect implementation
An assistant proposes a discount function that subtracts int(cents * percentage / 100), silently rounding every fractional-cent discount toward zero. It passes tests such as a 20% discount on 100 cents, yet violates a contract requiring half-up rounding of the discount. Start from the requirements independently of the suggested implementation: amounts are nonnegative integer cents, percentages are integers from 0 to 100, and discount rounding uses decimal ROUND_HALF_UP.
## Executable Python 3 review
Save as review_lab.py and run python3 review_lab.py. The example deliberately demonstrates one counterexample against the flawed implementation and then tests the corrected version over several hundred inputs.
~~~python
from decimal import Decimal, ROUND_HALF_UP
def wrong(cents, pct):
return cents - int(cents * pct / 100)
def safe(cents, pct):
if type(cents) is not int or cents < 0 or type(pct) is not int or not 0 <= pct <= 100:
raise ValueError("bad input")
discount = (Decimal(cents) * Decimal(pct) / 100).quantize(
Decimal("1"), rounding=ROUND_HALF_UP)
return cents - int(discount)
assert wrong(101, 50) == 51 and safe(101, 50) == 50
for pct in (0,25,50,100):
assert all(safe(c,pct) <= safe(c+1,pct) for c in range(300))
assert safe(999,0) == 999 and safe(999,100) == 0
for args in ((True,50),(-1,25),(10,101)):
try:
safe(*args)
except ValueError:
pass
else:
raise AssertionError("bad input accepted")
print("PASS: independent rounding contract and properties")
~~~
## What the tests do and do not prove
At 101 cents and 50%, the flawed function returns 51 cents but the specified calculation returns 50. The property tests check monotonic behavior for a bounded set of amounts and discount rates, plus zero and full discount invariants. They do not constitute a mathematical proof over every integer or a compliance review of real-world taxes and promotions. Requiring exact types rejects bool despite its integer subclass relationship in Python. Review external dependencies, licensing, permission boundaries and unsafe subprocess or file operations separately.
## Bounded review process
1. Write the acceptance contract before consulting implementation output. Include sign, units, rounding mode, domain boundaries and the treatment of missing values.
2. Mutate the corrected code to use float and truncate; verify the smallest counterexample is caught by a regression assertion.
3. Add randomized tests with a fixed seed alongside deterministic edge cases. Compare both against a separately written reference rather than code copied from the proposal.
4. Review a proposed repository patch for changes outside its requested scope, new dependencies, exposed credentials and error paths before merging.
**Evidence:** PASS, the 101-cent counterexample, invariant outcomes and a compact code-review checklist. Passing these tests does not certify an unexamined generated project.
### Software licensing fundamentals
Source-URL: https://ded-sec.space/learn/en/en-209.html
# Software licensing — traceable release inventory, not a guessed permission
## Distribution problem
A source repository may contain code written by its owner, third-party dependencies, artwork, fonts and bundled binaries. Visibility of source code does not automatically grant redistribution rights, and a copyright statement is not a substitute for an explicit license grant. Before preparing an archive, maintain an inventory identifying every shipped component, version or provenance, license documentation, notices and whether distribution has been reviewed. Unknown is a blocker for review, not a synonym for MIT or public domain.
## Executable inventory completeness check
Save as license_lab.py and run python3 license_lab.py. The sample uses fabricated component records; it does not fetch third-party code or pronounce any license legally sufficient.
~~~python
def inventory(entries):
seen, problems = set(), []
for e in entries:
name = e.get("name")
if not name or name in seen:
problems.append("missing/duplicate component")
seen.add(name)
if e.get("origin") == "third-party":
if not e.get("license_id") or e["license_id"] == "UNKNOWN":
problems.append("unknown license: " + str(name))
if not e.get("notice"):
problems.append("missing notice: " + str(name))
return problems
good = [
{"name":"main","origin":"owned"},
{"name":"helper","origin":"third-party","license_id":"MIT","notice":"fixture notice"},
]
assert inventory(good) == []
bad = good + [{"name":"art","origin":"third-party","license_id":"UNKNOWN","notice":""}]
assert len(inventory(bad)) == 2
print("PASS: missing license and notice detected")
~~~
## What automation can realistically determine
The function checks for duplicate or missing component identifiers, and flags missing license identifiers and notices for items marked third-party. It cannot decide whether the recorded identifier matches the actual source, whether a particular commercial use is permitted, or whether source-offer, attribution, patents, trademarks or copyleft distribution obligations have been satisfied. These issues require reviewing the real terms and the exact redistributed artifacts. Keep a list of excluded build-time packages separate from included runtime files.
## Bounded audit exercises
1. Add a copied image asset with UNKNOWN license and no notice. Confirm two separate problems; do not replace UNKNOWN with a guessed license just to satisfy the script.
2. Introduce two components with the same inventory name but different versions. Explain why unique full identifiers are necessary to avoid missed obligations.
3. Compare source-only distribution with shipping a compiled bundle that includes a library. Identify how the required inventory changes.
4. Create a third-party-notices file for a *synthetic* MIT-licensed helper and verify it is included in a trial archive. The completeness checker alone does not validate the notice's legal text.
**Evidence:** PASS, inventory entries for code/assets/dependencies, open compliance questions and a documented human review step. This is operational education, not legal advice.
### Algorithms and collections — hashing, queues and ordering
Source-URL: https://ded-sec.space/learn/en/en-212.html
# Algorithms and collections — hashing, queues and ordering
## Hash maps and sets
### Mechanism and scope
Hash maps associate keys with values and sets track membership. Average hash lookup is often O(1), but equality/hash rules matter and an adversarial collision pattern can affect performance.
### Implementation example
~~~python
from collections import Counter
counts=Counter(['red','blue','red'])
assert counts['red']==2
assert {'red','blue'}==set(counts)
~~~
### Reproduce and investigate
Implement duplicate detection with a set, then compare against nested-list searches. Test hashability of a list as a key and identify TypeError.
### Evidence to record
For Hash maps and sets, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
## Stacks and queues
### Mechanism and scope
A stack processes newest items first (LIFO); a queue processes oldest first (FIFO). DFS is naturally stack-based and breadth-first traversal queue-based, so substituting one changes search order.
### Implementation example
~~~python
from collections import deque
s=[1,2]; q=deque([1,2]);
assert s.pop()==2
assert q.popleft()==1
~~~
### Reproduce and investigate
Validate parentheses using a stack, then schedule tasks using a deque. Explain why list.pop(0) differs in complexity from deque.popleft().
### Evidence to record
For Stacks and queues, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
## Sorting and stable ordering
### Mechanism and scope
A stable sort keeps the prior relative order of elements that compare equal. This supports multi-key sorting by applying stable passes from least significant to most significant key.
### Implementation example
~~~python
rows=[('Ada',2),('Bob',1),('Carl',2)]
result=sorted(rows,key=lambda r:r[1]);
assert result==[('Bob',1),('Ada',2),('Carl',2)]
~~~
### Reproduce and investigate
Reverse input order of equal-score rows and inspect stability. Add a primary name sort followed by score sort; explain how order of passes changes the final result.
### Evidence to record
For Sorting and stable ordering, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
## Further engineering detail
An ordered traversal needs a unique tie-breaker even when a hash map efficiently finds individual records. For paginated database results, persist the complete sort key in the cursor. This avoids confusing lookup identity with traversal order, especially when many events share one timestamp.
[Keyset pagination with stable ordering](https://ded-sec.space/learn/en/fieldnotes-en-38.html)
### Binary search correctness
Source-URL: https://ded-sec.space/learn/en/en-215.html
# Binary search — leftmost insertion point with a provable invariant
## Preconditions and use case
An offline index contains sorted numeric IDs. Search for the first position whose value is not less than the requested ID. If all values are smaller, return the length of the list. Duplicates must resolve to the leftmost position, not an arbitrary matching element. Sorting is a precondition: using binary search on unsorted input can return a plausible but incorrect answer.
## Executable Python 3 fixture
Save as binary_search_lab.py and run python3 binary_search_lab.py. The independently implemented function is compared with the standard-library bisect_left on empty arrays, repeated values and values before, inside and after the indexed range.
~~~python
from bisect import bisect_left
def lower_bound(items, target):
low, high = 0, len(items)
while low < high:
mid = (low + high) // 2
if items[mid] < target:
low = mid + 1
else:
high = mid
return low
for row, targets in [
([], [-1, 0]),
([1,1,2,4], [0,1,2,3,4,5]),
([-5,0,0,8], [-8,-5,0,1,9])
]:
for target in targets:
index = lower_bound(row, target)
assert index == bisect_left(row, target)
assert all(value < target for value in row[:index])
assert all(value >= target for value in row[index:])
print("PASS: leftmost insertion, duplicates, empty and boundaries")
~~~
## Why the algorithm is correct
At every iteration the interval [low, high) contains the earliest valid insertion point. Values strictly before low are less than target; values at or beyond high are greater than or equal to it. If items[mid] is less than target, the earliest candidate must lie after mid, so advance low to mid+1. Otherwise the candidate is at mid or earlier and high becomes mid. The interval strictly shrinks until low equals high. With n sorted elements the loop uses O(log n) comparisons and O(1) auxiliary space; slicing inside the tests does not belong to the algorithm's runtime cost.
## Bounded investigation and diagnostics
1. Change the comparison from less-than to less-than-or-equal. Observe how a duplicate search now yields an upper insertion point instead of the leftmost.
2. Test empty input, one value, all duplicates, negatives and absent targets. State the return index for each before running the function.
3. Try an unsorted fixture, document the violated precondition, and decide whether callers must sort or the API should raise.
4. Add a binary-search variant returning a matching index or None. Explain why the leftmost insertion interface can also support range queries.
**Evidence:** PASS, interval invariant, 10+ edge-case comparisons and the distinction between lower and upper bounds.
### Graph traversal
Source-URL: https://ded-sec.space/learn/en/en-216.html
# Graph traversal — cycle-safe breadth-first search
## Contract
A small offline dependency graph is represented as a mapping from every known node to its neighbors. Return a shortest path in *number of edges* between two existing nodes; return None when no route exists. Reject unknown start or goal nodes and dangling neighbor references. With unweighted edges, breadth-first search visits nodes in layers and can guarantee the minimum edge count. Dijkstra is needed when edge weights differ.
## Executable Python 3 lab
Save as bfs_lab.py and run python3 bfs_lab.py. The graph contains a cycle, two equally short choices, and a disconnected island. Neighbors are sorted to make tie-breaking deterministic for the fixture.
~~~python
from collections import deque
def shortest(graph, start, goal):
if start not in graph or goal not in graph:
raise ValueError("unknown node")
pending = deque([(start, [start])])
visited = {start}
while pending:
node, path = pending.popleft()
if node == goal:
return path
for neighbor in sorted(graph[node]):
if neighbor not in graph:
raise ValueError("dangling neighbor")
if neighbor not in visited:
visited.add(neighbor)
pending.append((neighbor, path + [neighbor]))
return None
g = {"a":["c","b"],"b":["a","d"],"c":["a","d"],
"d":["b","c"],"island":[]}
assert shortest(g,"a","d") == ["a","b","d"]
assert shortest(g,"a","island") is None
assert shortest(g,"a","a") == ["a"]
try:
shortest(g,"ghost","a")
except ValueError:
pass
else:
raise AssertionError("unknown start accepted")
print("PASS: BFS shortest edges, cycles, no path")
~~~
## Invariants and complexity
Add a node to visited when it is *enqueued*, not when it is dequeued. That prevents two parents from repeatedly adding it and keeps the queue bounded. A FIFO deque ensures all paths with k edges are processed before paths with k+1 edges. Traversal visits each vertex and edge at most a constant number of times, O(V+E), assuming adjacency iteration is already available. This example sorts each adjacency list, adding sorting cost; the path-list copying also introduces extra work, so a production implementation for large graphs should track predecessor nodes and reconstruct the path once.
## Controlled failure cases
1. Add a self-loop and duplicate neighbors. Ensure the search terminates and returns the same shortest edge count.
2. Remove island's connections or the goal itself: distinguish no-path (None) from unknown-node (ValueError).
3. Replace the deque with a LIFO stack and find a graph where the first route is longer than the BFS answer.
4. For an undirected edge, verify the reverse edge is present. For directed graphs, explain why it need not be.
**Evidence:** PASS, queue/visited trace, one disconnected case and a written note on weighted edges and tie-breaking.
### Dynamic programming — applied explanation
Source-URL: https://ded-sec.space/learn/en/en-217.html
# Dynamic programming — minimum coins, unreachable states and memory
## Problem
A local payment-change helper must choose the fewest coins needed to make an amount. A greedy pick of the largest coin is not always optimal: for denominations 1, 3 and 4, a target of 6 is best made by 3+3 (two coins), rather than 4+1+1 (three coins). Dynamic programming uses already solved smaller amounts. Define dp[x] as the minimum number of coins to make exactly x; use None to represent an unreachable amount.
## Executable Python 3 lab
Save as coin_dp_lab.py and run python3 coin_dp_lab.py. The amount is bounded to 10,000 to prevent an untrusted request from allocating arbitrary memory; invalid and zero-valued denominations are rejected.
~~~python
def min_coins(amount, denoms):
if type(amount) is not int or not 0 <= amount <= 10000:
raise ValueError("amount outside bounded lab")
if not denoms or any(type(c) is not int or c <= 0 for c in denoms):
raise ValueError("invalid denominations")
dp = [None] * (amount + 1)
dp[0] = 0
for value in range(1, amount + 1):
options = [dp[value-c] + 1 for c in denoms
if c <= value and dp[value-c] is not None]
dp[value] = min(options) if options else None
return dp[amount]
assert min_coins(6,(1,3,4)) == 2
assert min_coins(3,(2,)) is None
assert min_coins(0,(2,)) == 0
try:
min_coins(10,(0,))
except ValueError:
pass
else:
raise AssertionError("zero coin accepted")
print("PASS: optimal count and unreachable amounts")
~~~
## State transition and proof sketch
The initial case dp[0]=0 is reachable with no coins. For every x from 1 to the target, consider each denomination c not greater than x. If dp[x-c] exists, candidate dp[x-c]+1 represents a valid solution ending with c. Taking the minimum over all final coins cannot miss the optimal choice. The running time is O(amount × number_of_denominations) and memory is O(amount). A very large amount can still be impractical despite polynomial complexity in the numeric value.
## Bounded exercises and diagnostics
1. Reconstruct the actual coin sequence by storing which final denomination produced each dp entry, not just the count.
2. Remove denomination 1 and test an amount that cannot be represented. Contrast None with zero, which represents only amount zero.
3. Implement the naive greedy choice and use amount 6 with 1/3/4 coins as a counterexample.
4. Compare top-down memoization and bottom-up iteration for a maximum amount of 1000, recording recursion depth and memory use.
**Evidence:** PASS, a state table for amounts 0 through 6, one unreachable case and a justified complexity bound.
### Greedy choices
Source-URL: https://ded-sec.space/learn/en/en-218.html
# Greedy algorithms — optimal interval scheduling under clear assumptions
## Contract
Given a set of jobs represented by integer start and end times, select the maximum possible *number* of nonoverlapping jobs on one resource. Each job has unit value, start is strictly less than end, and the end of one job may equal the start of another. Under these assumptions, selecting the available job that finishes earliest is optimal. Sorting by earliest start instead is not: one long job can block several short jobs.
## Executable Python 3 example
Save as intervals_lab.py and run python3 intervals_lab.py. The first long interval begins earliest but is deliberately rejected in favor of three short jobs.
~~~python
def select(intervals):
if any(type(s) is not int or type(e) is not int or s >= e
for s,e in intervals):
raise ValueError("invalid interval")
chosen, end = [], None
for start, finish in sorted(intervals, key=lambda pair:(pair[1],pair[0])):
if end is None or start >= end:
chosen.append((start,finish))
end = finish
return chosen
jobs = [(0,5),(1,2),(2,3),(3,4)]
assert select(jobs) == [(1,2),(2,3),(3,4)]
assert select([]) == []
try:
select([(2,2)])
except ValueError:
pass
else:
raise AssertionError("empty interval accepted")
print("PASS: earliest finish and interval boundaries")
~~~
## Exchange argument and limitations
Let G be the earliest-finishing compatible job and O the first job of any optimal schedule. Replacing O with G cannot reduce the time left for subsequent jobs because G ends no later. Repeating the same argument constructs an optimal schedule with greedy first choices at every step. Sorting costs O(n log n), and scanning the sorted intervals costs O(n). The selected output is O(n) space. The proof does not extend to weighted job values, multiple resources or jobs with precedence constraints; those need different models.
## Bounded diagnostic exercises
1. Insert an interval whose start equals the prior selected end. Show why it is allowed under the half-open interval convention.
2. Add duplicate intervals, a zero-duration job and a negative-duration job. Decide whether to reject, deduplicate or count repeats.
3. Enumerate every subset for at most eight jobs and compare the best valid cardinality with the greedy result.
4. Assign weights to jobs and construct a counterexample where earliest finish selects a lower-value set than a weighted optimizer.
**Evidence:** PASS, the exchange argument in your own words, at least one invalid interval and one weighted counterexample.
### Property based testing
Source-URL: https://ded-sec.space/learn/en/en-219.html
# Property-based testing — seeded cases plus explicit invariants
## Subject under test
Build a stable deduplication routine: preserve each distinct hashable value once, in the order of its *first* appearance. A few handwritten examples cannot exercise every sequence length and repetition pattern. Generate many bounded examples with a fixed pseudorandom seed so a failure is reproducible. Compare with an independent standard-library oracle and also assert structural properties that should hold for every input.
## Executable Python 3 fixture
Save as property_lab.py and run python3 property_lab.py. The generator produces 100 sequences of up to 39 integers from 0 through 9, so there is no external service or unbounded random work.
~~~python
import random
def unique(items):
seen, result = set(), []
for item in items:
if item not in seen:
seen.add(item)
result.append(item)
return result
rng = random.Random(17)
for _ in range(100):
xs = [rng.randrange(10) for _ in range(rng.randrange(40))]
result = unique(xs)
assert result == list(dict.fromkeys(xs))
assert unique(result) == result
assert set(result) == set(xs)
positions = [xs.index(value) for value in result]
assert positions == sorted(positions)
assert unique([]) == []
print("PASS: seeded properties and order preservation")
~~~
## What makes a useful property
Idempotence: deduplicating an already deduplicated list changes nothing. Membership preservation: the output contains exactly the set of input values. Order preservation: the first appearance positions must be strictly increasing. These properties do not prove correctness in every case, and the standard-library dict reference may share assumptions with the implementation. Independent specifications and hand-picked edge cases remain necessary. A seed makes the run repeatable, but a real property-based library can also shrink a failing sample into a smaller counterexample.
## Bounded experiments
1. Intentionally reverse the resulting list and verify which property notices the defect; a mere membership check will miss ordering bugs.
2. Include empty input, only repeated values and all-unique values. Record which tests are deterministic.
3. Try unhashable list values. Decide whether the contract rejects them or needs an alternative equality-only algorithm.
4. Increase the seed count and record the first failing seed for a deliberately mutated implementation. Explain how shrinking helps debugging.
**Evidence:** PASS, four independently stated properties, a reproducible seed and at least one mutation detected by a property.
### Data modeling: relational and JSON schema evolution
Source-URL: https://ded-sec.space/learn/en/en-220.html
# Data modeling: relational and JSON schema evolution
## Relational modeling
### Mechanism and scope
A relational model stores facts in tables linked by keys. Normalizing repeated entity details into separate tables reduces update anomalies, while denormalization can be a deliberate measured performance choice.
### Implementation example
~~~sql
PRAGMA foreign_keys=ON;
CREATE TABLE authors(id INTEGER PRIMARY KEY,name TEXT UNIQUE NOT NULL);
CREATE TABLE books(id INTEGER PRIMARY KEY,author_id INTEGER REFERENCES authors(id));
~~~
### Reproduce and investigate
Insert two books for one author, update the author's name once and verify both relationships. Attempt a child row referencing a missing author.
### Evidence to record
For Relational modeling, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
## JSON and schema evolution
### Mechanism and scope
Changing a JSON API requires more than adding a field: clients may reject unknown keys, interpret absent keys differently and assume exact numeric types. Additive changes are often safer but not always compatible.
### Implementation example
~~~python
import json
old=json.loads('{"id":1}')
new=json.loads('{"id":1,"status":"ready"}')
assert old['id']==new['id']
~~~
### Reproduce and investigate
Write strict and permissive consumers and test both payloads. Define a migration policy for a removed field, null versus absent, and version negotiation.
### Evidence to record
For JSON and schema evolution, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
### SQL parameterization — applied explanation
Source-URL: https://ded-sec.space/learn/en/en-221.html
# SQL parameters — distinguish query structure from values
## Problem
A user searches local notes by title. The program must interpret the supplied title as literal data, not as part of SQL syntax. Even a harmless title containing an apostrophe can break a string-concatenated statement; deliberately crafted text may change a predicate. Prepared parameter placeholders keep the query structure fixed while supplying values separately. This example compares the unsafe technique with the safe technique *only in a disposable in-memory SQLite database*.
## Executable Python 3 demonstration
Save as sqlite_parameters_lab.py and run python3 sqlite_parameters_lab.py. The malicious-looking string is synthetic and the demonstration only performs SELECT queries over two test notes.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE notes (id INTEGER PRIMARY KEY, title TEXT NOT NULL)")
db.executemany("INSERT INTO notes(title) VALUES (?)",
[("alpha",), ("beta",)])
probe = "alpha' OR 1=1 --"
count = db.execute(
"SELECT COUNT(*) FROM notes WHERE title = ?", (probe,)
).fetchone()[0]
assert count == 0
# Demonstration ONLY: never compose application SQL like this.
insecure_sql = "SELECT COUNT(*) FROM notes WHERE title = '" + probe + "'"
assert db.execute(insecure_sql).fetchone()[0] == 2
assert db.execute(
"SELECT title FROM notes WHERE title = ?", ("alpha",)
).fetchone()[0] == "alpha"
print("PASS: literal parameter vs vulnerable concatenation")
~~~
## Correct reasoning
The bound placeholder SELECT ... WHERE title = ? treats the entire probe as a title and returns zero matches. Unsafe concatenation inserts the same text into the SQL grammar, changing the WHERE condition and returning both rows. Parameterization also handles Unicode and apostrophes without manual quote escaping. Placeholders cannot stand in for identifiers such as table names or ORDER BY column syntax: those must be chosen from a strict allowlist. Always apply access controls to the resulting query independently; safe parameters do not automatically authorize users to read every row.
## Bounded verification tasks
1. Search for an ordinary title and a Greek title containing an apostrophe. Confirm that binding treats them as values.
2. Replace the placeholder with direct string concatenation in the disposable fixture only, observe altered results, then restore the secure call.
3. Attempt to parameterize a table name. Explain why SQL parsers treat identifiers and values differently, and implement an allowlisted selector for one of two known columns.
4. Show that a parameterized UPDATE still needs a WHERE clause and permissions: injection prevention is not a substitute for domain authorization.
**Evidence:** PASS, query results from safe versus unsafe construction, allowed-identifier policy and a statement of authorization boundaries.
### Transactions and consistency
Source-URL: https://ded-sec.space/learn/en/en-222.html
# Database transactions — all-or-nothing wallet transfer
## Domain contract
An offline wallet ledger moves positive integer cents from one existing account to another. No balance may become negative. A successful transfer preserves the sum of all balances; a missing destination or insufficient source funds must leave *every* balance unchanged. The two UPDATE statements form a single transaction. Never report a transfer completed after only the subtraction succeeded.
## Executable SQLite/Python 3 example
Save as transfer_lab.py and run python3 transfer_lab.py. The database exists only in memory, holds synthetic balances, uses bound parameters, and deliberately fails a transfer whose destination does not exist.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("""CREATE TABLE wallet(
id INTEGER PRIMARY KEY,
balance INTEGER NOT NULL CHECK(balance >= 0))""")
db.executemany("INSERT INTO wallet VALUES (?,?)",[(1,100),(2,0)])
db.commit()
def transfer(src, dst, amount):
if type(amount) is not int or amount <= 0 or src == dst:
raise ValueError("invalid transfer")
with db:
old = db.execute("SELECT balance FROM wallet WHERE id=?", (src,)).fetchone()
if old is None or old[0] < amount:
raise ValueError("insufficient or unknown source")
db.execute("UPDATE wallet SET balance=balance-? WHERE id=?", (amount,src))
updated = db.execute("UPDATE wallet SET balance=balance+? WHERE id=?",
(amount,dst)).rowcount
if updated != 1:
raise ValueError("unknown destination")
transfer(1,2,40)
assert db.execute("SELECT sum(balance) FROM wallet").fetchone()[0] == 100
try:
transfer(1,99,10)
except ValueError:
pass
else:
raise AssertionError("unknown destination accepted")
assert db.execute("SELECT balance FROM wallet WHERE id=1").fetchone()[0] == 60
print("PASS: atomic transfer and rollback")
~~~
## How the guarantee works
The connection context manager commits after the successful body and rolls back when ValueError propagates. The first UPDATE of the failed transfer is therefore undone when the second UPDATE finds no destination. The CHECK constraint prevents negative balances but does not prove that a destination exists, nor does it protect against every concurrency race when transfers span multiple systems. In a file-backed multi-writer system, understand SQLite locking, transaction modes and busy timeouts; an in-memory single-connection test does not reproduce concurrent isolation anomalies.
## Bounded exercises and diagnostics
1. Transfer more than the source balance, zero cents, a boolean amount and an unknown source. Verify all fail with unchanged state.
2. Remove the row-count check for destination and observe a misleading successful return even though money disappears. Restore the validation.
3. Attempt to update two unrelated accounts during the same transaction and raise an exception. Confirm all updates roll back.
4. Repeat with a disposable file-backed database and two connections, checking visibility before and after commit without touching real financial records.
**Evidence:** PASS, sum-of-balances invariant, a missing-destination rollback and a clear explanation of isolation versus atomicity.
### Indexes and query plans
Source-URL: https://ded-sec.space/learn/en/en-223.html
# Database indexes — verify an actual query plan
## Use case
A local catalogue searches a note by exact title. Without an index on the title, SQLite may need to inspect every row. An index can allow a targeted search and, when all selected columns are held in the index, a covering lookup. Indexes cost storage and make writes more expensive, so add them based on real workloads and measured plans rather than as decoration.
## Executable SQLite/Python 3 experiment
Save as index_lab.py and run python3 index_lab.py. Create 200 synthetic notes, inspect EXPLAIN QUERY PLAN for title equality, then add a title index and inspect the same bound query. The test checks the two expected plan descriptions on this SQLite fixture.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE docs(id INTEGER PRIMARY KEY,title TEXT NOT NULL)")
db.executemany("INSERT INTO docs(title) VALUES (?)",
[(f"title-{i}",) for i in range(200)])
sql = "EXPLAIN QUERY PLAN SELECT title FROM docs WHERE title=?"
before = db.execute(sql, ("title-11",)).fetchall()
db.execute("CREATE INDEX idx_docs_title ON docs(title)")
after = db.execute(sql, ("title-11",)).fetchall()
assert any("SCAN docs" in line[3] for line in before), before
assert any("USING COVERING INDEX idx_docs_title" in line[3]
for line in after), after
print("PASS: scan before index, indexed search afterward")
~~~
## Interpret the evidence carefully
A SCAN docs step means SQLite scans the table. After CREATE INDEX, the plan should include SEARCH ... USING COVERING INDEX idx_docs_title for the exact-title SELECT, because the index contains the selected title. This observation is not a universal performance benchmark; for tiny tables the planner may decide a scan is faster, and a different predicate or collation may prevent the chosen index from being useful. A unique index also enforces uniqueness, whereas the demonstrated ordinary index does not.
## Bounded exercises and diagnostics
1. Change SELECT title to SELECT id,title and inspect whether the index still covers the result in SQLite rowid tables.
2. Use WHERE title LIKE with a leading wildcard. Explain why a normal B-tree index is unlikely to help for arbitrary suffix searches.
3. Measure insert time with and without the index for a fixed synthetic dataset. Report sizes, SQLite version and at least three runs.
4. Add a second query sorted by title and compare a query plan with and without the index; separate indexing needs from correctness constraints.
**Evidence:** PASS, complete before/after query plans, the matching predicate and a note on index maintenance cost.
### Data migrations
Source-URL: https://ded-sec.space/learn/en/en-224.html
# Database migrations — version checks and repeatable upgrades
## Schema contract
An offline app has a tasks table with ID and title in schema version 1. Version 2 adds a done field that must be 0 or 1, defaulting to 0 for existing records. The migration must preserve old data, advance the schema version only after successful changes, and be safe to call again. Unknown schema versions must be rejected rather than silently treated as the latest layout.
## Executable Python/SQLite migration
Save as migration_lab.py and run python3 migration_lab.py. The database is in memory. PRAGMA user_version records the schema version; explicit BEGIN, commit and rollback keep DDL plus version changes in one SQLite transaction.
~~~python
import sqlite3
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE tasks(id INTEGER PRIMARY KEY,title TEXT NOT NULL)")
db.execute("INSERT INTO tasks(title) VALUES ('one')")
db.commit()
db.execute("PRAGMA user_version=1")
def migrate():
version = db.execute("PRAGMA user_version").fetchone()[0]
if version == 2:
return
if version != 1:
raise ValueError("unknown schema version")
db.execute("BEGIN")
try:
db.execute("""ALTER TABLE tasks ADD COLUMN done INTEGER
NOT NULL DEFAULT 0 CHECK(done IN (0,1))""")
db.execute("PRAGMA user_version=2")
db.commit()
except Exception:
db.rollback()
raise
migrate()
migrate()
assert db.execute("PRAGMA user_version").fetchone()[0] == 2
assert db.execute("SELECT done FROM tasks").fetchone()[0] == 0
print("PASS: versioned and repeatable migration")
~~~
## Safety boundaries
A second call sees version 2 and returns without trying to add the column again. Existing records acquire done=0 because of the NOT NULL DEFAULT clause. Updating the version marker outside the migration transaction would be dangerous: a crash could leave metadata claiming version 2 while the column was never created. SQLite permits transactional schema changes for this example; do not assume every database engine supports identical DDL transaction behavior. For a real release, back up the file, test forward upgrade from every supported version and provide explicit failure recovery.
## Bounded exercises
1. Remove the version check and run the migration twice. Capture the duplicate-column failure, then restore idempotence.
2. Set user_version to 99 and verify that the migration refuses to guess an upgrade path.
3. Introduce an invalid SQL statement before the version update and ensure rollback preserves the original schema and version.
4. Add a version 3 migration with a separate function, run 1→2→3 on a disposable file database and reopen it to validate persistence.
**Evidence:** PASS, schema descriptions before and after, an explicit unknown-version rejection, and a documented backup and recovery process.
### Software diagnostics — stack traces, logging and testing
Source-URL: https://ded-sec.space/learn/en/en-227.html
# Software diagnostics — stack traces, logging and testing
## Stack traces
### Practical explanation
A stack trace records active call frames at a failure. Read from the triggering exception and locate the nearest relevant frame in your own code, while distinguishing cause from later propagation.
### Worked illustration
~~~python
def read_score(data): return int(data['score'])
def handle(data): return read_score(data)
try: handle({'score':'oops'})
except ValueError as exc: assert 'invalid' in str(exc)
~~~
### Realistic exercise
Capture and inspect traceback on a disposable input. Compare original failure with a broad except that hides it, and show how to preserve exception chaining.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Stack traces from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
## Logging and observability
### Practical explanation
Logs record events; metrics summarize numerical signals and traces connect operations across components. Combining them can identify bottlenecks, but they answer different questions and require privacy controls.
### Worked illustration
~~~python
import logging
logging.basicConfig(level=logging.INFO)
logging.info('batch completed count=%d',3)
~~~
### Realistic exercise
Add a request correlation ID and timing metric for a synthetic batch. Keep tokens and raw personal records out of the log message.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Logging and observability from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
## Unit integration and end-to-end tests
### Practical explanation
A unit test isolates a function, an integration test exercises boundaries such as a real database, and an end-to-end test covers a user flow. They expose different failures and have different cost/stability.
### Worked illustration
~~~python
def normalize(text):return text.strip().casefold()
assert normalize(' Ada ')=='ada'
~~~
### Realistic exercise
Turn the assertion into unittest. Then build a SQLite integration check using a temporary database, without calling the integration check a unit test.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Unit integration and end to end tests from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
## Regression protection
### Practical explanation
A regression test preserves the smallest case that exposed a previously fixed defect. Without checking that it failed before the fix, the new test might not guard the actual bug.
### Worked illustration
~~~python
def safe_ratio(a,b):
if b==0:raise ZeroDivisionError('denominator')
return a/b
assert safe_ratio(4,2)==2
~~~
### Realistic exercise
Write a test requiring the expected exception for a zero denominator and compare with a previous version that returned a misleading default.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Regression protection from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
## Performance profiling
### Practical explanation
Profiling observes where CPU time, allocations or IO waits occur. Optimizing the most visually complex function without measurement may not affect actual latency.
### Worked illustration
~~~python
import cProfile
cProfile.run('sum(i*i for i in range(10000))')
~~~
### Realistic exercise
Profile an intentionally slow nested-loop duplicate finder and a set-based alternative. Run multiple trials and avoid conflating startup with steady-state behavior.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Performance profiling from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
## Unit, integration, regression and property-based testing
### Separate a contract from implementation details
A good unit test asserts behavior that would remain true after an internal refactor. For a parser that accepts two comma-separated positive integers, define an explicit contract: either return both positive integers or raise ValueError for malformed input. Do not duplicate the parser logic inside the assertion, as both implementation and test could share the same mistake.
~~~python
def parse_pair(raw: str) -> tuple[int, int]:
chunks = raw.split(",")
if len(chunks) != 2:
raise ValueError("expected two fields")
try:
left, right = (int(chunk.strip()) for chunk in chunks)
except ValueError as exc:
raise ValueError("invalid integer") from exc
if left <= 0 or right <= 0:
raise ValueError("both integers must be positive")
return left, right
assert parse_pair("2, 3") == (2, 3)
for malformed in ("", "2", "2,a", "0,3", "2,3,4"):
try:
parse_pair(malformed)
except ValueError:
pass
else:
raise AssertionError("accepted invalid input")
~~~
Test a case like " 2 , 3 " to specify whitespace behavior. Explain whether "+2,3" should be accepted: the current int conversion permits plus signs, so the test suite must either document that or enforce a stricter grammar.
### Unit, integration and end-to-end scope
A unit test checks this small parsing contract. An integration test would check that the value reaches the database or downstream function as expected. An end-to-end test would exercise the actual user's form and error rendering. Passing a syntax check on JavaScript does not imply that mobile scrolling, visibility or input focus works.
### Property-based versus examples
For generated positive pairs, parsing their decimal representation should return the same pair. But a generator restricted to valid values will miss invalid boundary cases; explicitly test empty input, non-ASCII digits, overflow policy and extra delimiters. Preserve a reproducible failing seed when generated tests expose a defect.
### Regression discipline
Before a fix, write a test that reproduces the observed failure and fails for the old implementation. Only then change the code and confirm the same test passes. Keep the smallest failing fixture in version control without private user data.
### Verification
Submit test command, environment/version, failures observed before the fix and successful output afterward. Do not claim a test was run merely because the snippet contains assertions; assertions are proposed checks until executed.
## Logs, metrics, traces and actionable diagnostics
Logs describe discrete events; metrics summarize quantities over time; traces show causality across calls. Use structured event names, timestamps with timezone, severity levels and stable correlation identifiers. Error messages should explain *what* failed, *where*, and *what to do next*, without exposing credentials.
### Example
```python
import json
from datetime import datetime, timezone
record = {'event': 'backup.finished',
'time': datetime.now(timezone.utc).isoformat(),
'files': 12}
assert json.loads(json.dumps(record))['files'] == 12
```
### Practice
1. Make setup logs readable on a phone.
2. Record a failed update without capturing secret environment variables.
3. Add a correlation ID to a multi-step request.
4. Create diagnostic output for missing dependencies without reinstalling them automatically.
## Reproducing a bug
### Practical explanation
A reproducible bug report contains environment, input, steps, expected behavior and actual behavior. Remove irrelevant setup until the smallest case still fails; otherwise debugging effort can chase unrelated symptoms.
### Worked illustration
~~~python
def broken(items=[]):
items.append(1)
return len(items)
assert broken()==1
assert broken()==2
~~~
### Realistic exercise
Change the default to None and create a new list per call. Write a regression assertion that fails on the original implementation and passes on the fix.
### Review the actual contract
Describe how a caller can distinguish valid behavior for Reproducing a bug from a silent failure. Check both a normal input and a boundary input, recording the source version and observed result.
### Mocks and test doubles
Source-URL: https://ded-sec.space/learn/en/en-230.html
# Test doubles — injected clocks and transports with observable calls
## Scenario and independent contract
A local client fetches a document by slug but must not contact its transport after the deadline. Invalid slugs are rejected, responses must contain a title, and a timeout leaves the transport untouched. Unit tests should not make real network requests or depend on wall-clock sleeps. Inject a clock and transport interface so fixtures can advance time deterministically and inspect the exact requested slug.
## Executable Python 3 lab
Save as mock_lab.py and run python3 mock_lab.py. The fake transport records calls instead of sending packets. The fake clock starts at zero and can be moved without waiting.
~~~python
class FakeClock:
def __init__(self):
self.tick = 0
def now(self):
return self.tick
class FakeTransport:
def __init__(self, answer):
self.answer = answer
self.calls = []
def request(self, slug):
self.calls.append(slug)
return self.answer
def fetch(slug, transport, clock, deadline):
if clock.now() > deadline:
raise TimeoutError("deadline exceeded")
if not isinstance(slug,str) or not slug.isascii() or not slug.isalnum():
raise ValueError("invalid slug")
value = transport.request(slug)
if not isinstance(value,dict) or "title" not in value:
raise ValueError("invalid response")
return value["title"]
clock = FakeClock()
stub = FakeTransport({"title":"local"})
assert fetch("abc2",stub,clock,10) == "local"
assert stub.calls == ["abc2"]
clock.tick = 11
try:
fetch("abc2",stub,clock,10)
except TimeoutError:
pass
else:
raise AssertionError("deadline bypassed")
assert stub.calls == ["abc2"]
print("PASS: injected clock, transport and call history")
~~~
## What is a mock, stub or fake?
A stub supplies canned responses. A fake provides a small working implementation of a collaborator. A mock primarily verifies interactions, such as whether request was called exactly once. Our FakeTransport combines canned responses with a call history; labels are less important than the test's explicit expectations. Tests that merely duplicate the implementation's own branching logic are weak: write the deadline and input contracts separately before coding. Contract tests against a real transport implementation are still needed because injected fakes cannot discover protocol incompatibilities.
## Failure-oriented exercises
1. Change the fake response to an empty dictionary and ensure validation raises rather than returning success.
2. Try a slug containing a slash, space or Unicode character. Decide whether your application wants a different explicit slug policy.
3. Move the clock to exactly the deadline, then one tick later. Document whether the rule uses greater-than or greater-than-or-equal.
4. Create a faulty implementation that sends before checking the clock. The existing call-history assertion should fail; restore correct ordering afterwards.
**Evidence:** PASS, an unchanged call count on timeout, invalid-response test, and one boundary convention for the deadline.
### Software delivery — versioning, configuration, rollbacks and release checks
Source-URL: https://ded-sec.space/learn/en/en-236.html
# Software delivery — versioning, configuration, rollbacks and release checks
## Semantic versioning and compatibility
### Design principle and reasoning
Semantic versioning uses major.minor.patch according to a declared public API. A breaking signature change merits a major version under SemVer; adding a backwards-compatible behavior can be minor.
### Study a concrete case
~~~text
1.4.2 -> 1.4.3 bug fix
1.4.3 -> 1.5.0 compatible feature
1.5.0 -> 2.0.0 breaking public API
~~~
### Independent exercise
Classify a removed parameter, new optional flag and security bug fix. Discuss why pre-1.0 packages need explicitly documented stability guarantees.
### Evidence for review
For Semantic versioning and compatibility, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Documentation that stays accurate
### Design principle and reasoning
Documentation becomes stale when commands and files change without updating examples. Runnable snippets, explicit platform prerequisites and ownership for maintenance make it testable.
### Study a concrete case
~~~text
For every changed CLI flag:
1. update help output
2. update the usage example
3. run the example in a scratch workspace
4. check EN/EL parity
~~~
### Independent exercise
Break one command in a duplicated README example, then repair the single canonical source and verify linked language versions.
### Evidence for review
For Documentation that stays accurate, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Feature flags and rollback
### Design principle and reasoning
A feature flag selects behavior without requiring immediate code rollback, but flag states themselves need tests and cleanup. A database schema change might not be reversible merely by disabling UI.
### Study a concrete case
~~~python
def total(items, enhanced=False):
if enhanced:return sum(x for x in items if x>=0)
return sum(items)
assert total([3,-1],True)==3
~~~
### Independent exercise
Test both flag states and a transition while requests are in flight. Decide what happens to data written by the new path if the flag turns off.
### Evidence for review
For Feature flags and rollback, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Modular architecture
### Design principle and reasoning
Modules should have cohesive responsibilities and explicit dependencies. Circular imports and shared mutable globals make isolation difficult, while an interface boundary supports independent testing.
### Study a concrete case
~~~python
def parse(raw): return int(raw)
def present(number): return f'count={number}'
assert present(parse('4'))=='count=4'
~~~
### Independent exercise
Move parse and present into separate modules and make a CLI call them. Confirm importing either module performs no file writes.
### Evidence for review
For Modular architecture, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Configuration layering
### Design principle and reasoning
Configurations combine defaults, environment and explicit overrides with precedence rules. Without deterministic precedence, a production flag can silently be overwritten by a stale local value.
### Study a concrete case
~~~python
defaults={'port':8000,'debug':False}
override={'port':9000}
settings={**defaults,**override}
assert settings['port']==9000
~~~
### Independent exercise
Add a third layer, document precedence and reject unknown keys. Compare explicitly absent values with empty strings in environment variables.
### Evidence for review
For Configuration layering, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Release and artifact verification
### Design principle and reasoning
Build verification links an artifact to a known commit, toolchain and independently trusted digest or signature. Hashing a file against a digest delivered by the same attacker-controlled source is not authentic provenance.
### Study a concrete case
~~~sh
git rev-parse HEAD
sha256sum path/to/release.zip
# Compare against independently trusted release metadata.
~~~
### Independent exercise
Create a synthetic binary, record its hash, modify one byte and check the mismatch. Document why an authentic signer matters beyond checksum equality.
### Evidence for review
For Release and artifact verification, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Release checklist and documentation
Before releasing: read the diff, check tests, perform a real install on target platforms, preserve legal and credits, verify the archive, and publish accurate limitations. A green CI status cannot replace device testing.
### Worked example
```text
python -m compileall -q Scripts tests
python -m pytest -q tests
git diff --check
```
### Practice
Name three checks that require a physical Termux device.
### Corrected result / hint
Android permissions, first-run setup, interactive menu behavior.
### Reading code: types, aliasing and mutable state
Source-URL: https://ded-sec.space/learn/en/en-242.html
# Reading code: types, aliasing and mutable state
## Reading an unfamiliar codebase
### Core explanation
Read the invocation before editing implementations. Identify entry point, command-line arguments, configuration source, imports, caller graph, actual output, and the test suite. Reading every file alphabetically tells you far less than tracing one concrete input end-to-end. A function name is a hypothesis about behavior, not evidence.
### Runnable example
~~~python
def price_after_discount(cents: int, discount: int) -> int:
if not 0 <= discount <= 100:
raise ValueError("invalid discount")
return cents * (100 - discount) // 100
def main():
print(price_after_discount(1999, 10))
if __name__ == "__main__":
main()
~~~
### Interpret the results
Run `python app.py` after saving the snippet as app.py: the output is 1799 integer cents, rounded down. Trace main → price_after_discount → input check → arithmetic → print. Merely importing app does not print because its `__name__` guard protects main. Write down these observations before guessing which other files matter.
### Independent practical lab
Create a trace table with columns input, responsible function, transformation, output. Predict and test discount 0, 100 and -1. Identify the missing contract for negative `cents` separately from discount validation. In a real repo, determine whether the file is generated, vendored, tested or maintained by the project before changing it. Preserve a minimal repro and rerun affected tests.
**Reference:** https://docs.python.org/3/library/__main__.html
## Types and conversions
### Core explanation
A conversion that succeeds syntactically may still violate a business rule. Python `int(3.9)` truncates rather than rounds, and `bool` is a subclass of `int`. A text field containing digits still needs grammar and range validation before it becomes a safe value for arithmetic, persistence or permissions.
### Runnable example
~~~python
def parse_quantity(value: object) -> int:
if not isinstance(value, str):
raise TypeError("expected text")
if not value.isascii() or not value.isdecimal():
raise ValueError("ASCII digits only")
number = int(value)
if number > 500:
raise ValueError("range 0..500")
return number
assert parse_quantity("004") == 4
for invalid in ("-1", "3.5", "٥", "501"):
try:
parse_quantity(invalid)
except ValueError:
pass
else:
raise AssertionError(invalid)
~~~
### Interpret the results
The accepted grammar allows leading zeros but rejects signs, decimals, non-ASCII numeral symbols, and values above 500. `isdecimal()` alone would also recognize certain Unicode numeral characters; `isascii()` explicitly limits this input protocol to ASCII digits. An empty string is rejected because `isdecimal()` is false.
### Independent practical lab
Extend the function to reject leading zeros except the literal '0'. Test whitespace, True, None, 500, 501 and a 100,000-digit string. Introduce a maximum input length before integer conversion to bound resource consumption. Do not replace every exception with a default zero: invalid text, missing values and a legitimate zero must remain distinguishable.
**Reference:** https://docs.python.org/3/library/stdtypes.html#str.isdecimal
## Mutable state and aliasing
### Core explanation
Two variable names can refer to the same mutable object. Copying an outer list does not necessarily copy dictionaries or lists nested within it; a modification through one reference can change another apparently separate view. Rebinding a name is different from mutating the shared object.
### Runnable example
~~~python
from copy import deepcopy
original = [{"name": "Ada", "scores": [8]}]
shallow = original.copy()
shallow[0]["scores"].append(9)
assert original[0]["scores"] == [8, 9]
isolated = deepcopy(original)
isolated[0]["scores"].append(10)
assert original[0]["scores"] == [8, 9]
assert isolated[0]["scores"] == [8, 9, 10]
~~~
### Interpret the results
The first `copy()` duplicates only the outer list; its elements still refer to the original dictionary and nested scores list. `deepcopy` recursively copies these ordinary containers, so later changes to the isolated copy do not change the source. Deep copying sockets, locks or resource-owning objects is a different problem and may not be valid.
### Independent practical lab
Draw an object graph with arrows from original, shallow and isolated to their inner structures. Rebind shallow[0] to an entirely new dictionary and check if original changes. Next design a function accepting read-only input and returning a new value instead of mutating its parameter. Compare memory cost and behavioral isolation explicitly.
**Reference:** https://docs.python.org/3/library/copy.html
### Functions, invariants, recursion and error boundaries
Source-URL: https://ded-sec.space/learn/en/en-245.html
# Functions, invariants, recursion and error boundaries
## Functions and contracts
### Design principle and reasoning
A function contract specifies accepted inputs, outputs, errors and side effects. Type hints alone do not enforce numeric ranges or filesystem permissions; runtime checks are necessary for untrusted inputs.
### Study a concrete case
~~~python
def percent(part,total):
if total<=0 or not 0<=part<=total: raise ValueError('range')
return 100*part/total
assert percent(2,4)==50
~~~
### Independent exercise
Test zero total and part>total and prove the caller observes clear exceptions. Decide if fractional inputs are allowed.
### Evidence for review
For Functions and contracts, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Iteration and invariants
### Design principle and reasoning
A loop invariant is true before every iteration and remains true afterward. In an accumulator loop, total equals the sum of elements already processed; termination requires measurable progress.
### Study a concrete case
~~~python
def total(xs):
s=0
for x in xs:s+=x
return s
assert total([2,3,4])==9
~~~
### Independent exercise
Instrument iterations and assert that the running sum matches a prefix. Test empty input and negative elements.
### Evidence for review
For Iteration and invariants, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Recursion and termination
### Design principle and reasoning
Every recursive call must reduce a well-founded measure until a base case applies. An argument that never changes causes unbounded recursion, and increasing the interpreter stack limit does not correct logic.
### Study a concrete case
~~~python
def depth(n):
if n<0: raise ValueError()
if n==0:return 0
return 1+depth(n-1)
assert depth(4)==4
~~~
### Independent exercise
Trace the call stack for n=3. Compare iterative implementation at n=20000 and explain recursion depth limits.
### Evidence for review
For Recursion and termination, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Error handling boundaries
### Design principle and reasoning
Errors should be handled where a component can make a meaningful decision: a parser reports invalid data, while the CLI chooses whether to show a message or exit. Catching Exception around everything can hide defects.
### Study a concrete case
~~~python
def parse_port(s):
n=int(s)
if not 1<=n<=65535:raise ValueError('port')
return n
assert parse_port('443')==443
~~~
### Independent exercise
Distinguish integer conversion failure, out-of-range values and missing files. Only translate errors at a boundary where you can add useful context.
### Evidence for review
For Error handling boundaries, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
### Foundations — numeric precision, validation and complexity
Source-URL: https://ded-sec.space/learn/en/en-250.html
# Foundations — numeric precision, validation and complexity
## Numeric precision and money
### Problem and mental model
Binary floats cannot exactly represent every decimal fraction. Repeated rounding can produce totals that differ from legal or business expectations. Decide whether to use integer cents or Decimal with a documented rounding mode; never assume a formatted display string is suitable for further calculations.
### Reproducible illustration
~~~python
from decimal import Decimal, ROUND_HALF_UP
price = Decimal('19.99')
vat = Decimal('0.24')
total = (price * (1 + vat)).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
assert total == Decimal('24.79')
print(total)
~~~
### Independent validation
Expected output: 24.79. Try three invoice lines and compare rounding each line with rounding at the final total. Test negative adjustments, quantity zero, and a currency with a different minor-unit convention. Document why your policy is reproducible.
**Authoritative documentation:** https://docs.python.org/3/library/decimal.html
## Parsing and validation
### Design principle and reasoning
Parsing turns text into structured values; validation determines whether those values satisfy domain rules. A syntactically valid JSON object may contain negative counts or unexpected keys.
### Study a concrete case
~~~python
import json
obj=json.loads('{"count":4}')
if set(obj)!={'count'} or type(obj['count']) is not int or obj['count']<0:raise ValueError()
assert obj['count']==4
~~~
### Independent exercise
Change JSON to a list, string count, boolean count and extra key. Separate JSONDecodeError from schema error.
### Evidence for review
For Parsing and validation, identify one failure mode beyond the happy path and specify a test or observation that would expose it. Write the expected result first, then validate the exact boundary without altering a production environment.
## Time complexity
### Mechanism and scope
Time complexity describes operation count as input size grows, not guaranteed milliseconds. Linear scan visits at most n items; nested full scans do n² comparisons. For small n, cache effects and setup can dominate.
### Implementation example
~~~python
def pair_count(n):
return sum(1 for i in range(n) for j in range(n))
assert pair_count(10)==100
~~~
### Reproduce and investigate
Measure n=50,100,200 and count iterations rather than relying only on wall time. Compare growth factors with a one-loop function; account for measurement noise.
### Evidence to record
For Time complexity, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
## Space complexity
### Mechanism and scope
Space complexity measures auxiliary memory relative to input size. Creating a full transformed list consumes O(n) extra space; yielding one transformed item at a time can have O(1) generator state when the consumer is streaming.
### Implementation example
~~~python
def squares(values):
for n in values: yield n*n
assert list(squares(range(4)))==[0,1,4,9]
~~~
### Reproduce and investigate
Contrast list(squares(range(n))) against sum(squares(range(n))) and measure memory. A generator does not save memory if it is immediately materialized.
### Evidence to record
For Space complexity, document the exact input that changes this outcome, the operation responsible for the change, and one falsifying test. Measure memory or timing only where it changes the claim, and do not treat a successful demonstration as a proof for every input.
### Input encoding, password storage and access control
Source-URL: https://ded-sec.space/learn/en/en-254.html
# Input encoding, password storage and access control
## Input and output encoding
**Track:** Security
### Core explanation
Validate untrusted data for business rules, and escape output for its destination context: HTML text, attribute, JavaScript, shell or SQL have different hazards. Do not apply a single escaping routine everywhere.
### Hands-on application
Explain why HTML escaping does not make a shell command safe.
### Concrete trust boundary
Validation and output encoding solve different problems. Validate input according to its meaning, then escape for the *destination context*: HTML text, HTML attribute, URL parameter, JavaScript string and SQL parameter each require different handling. Stripping all angle brackets can corrupt legitimate user data.
### Controlled demonstration
```python
from html import escape
value=''
safe=escape(value,quote=True)
assert '<script>' in safe
assert '