diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
index cfb702b..55a7f7f 100644
--- a/.github/CODE_OF_CONDUCT.md
+++ b/.github/CODE_OF_CONDUCT.md
@@ -1,46 +1,5 @@
-# Contributor Covenant Code of Conduct
+# Contributor Code of Conduct
-## Our Pledge
+_be excellent to each other_
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at trimstray@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
+thank you for coming to my Ted talk
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 785e504..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-open_collective: trimstray
-github: trimstray
diff --git a/.github/ISSUE_TEMPLATE/broken-link-or-update.yml b/.github/ISSUE_TEMPLATE/broken-link-or-update.yml
new file mode 100644
index 0000000..aa53f0f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/broken-link-or-update.yml
@@ -0,0 +1,42 @@
+name: Broken Link or Outdated Resource
+description: Report a dead link, moved resource, or something that needs updating
+title: "[Fix] Broken/Outdated: Brief description"
+labels: ["maintenance", "bug"]
+body:
+ - type: input
+ id: url
+ attributes:
+ label: Problematic URL
+ validations:
+ required: true
+
+ - type: input
+ id: location
+ attributes:
+ label: Where is this link located?
+ placeholder: e.g., README.md line 456, or ./hacking-pentesting/wordlists.md
+
+ - type: dropdown
+ id: issue_type
+ attributes:
+ label: Type of Issue
+ options:
+ - 404 / Not Found
+ - 403 / Forbidden
+ - Redirected / Moved
+ - Outdated / Deprecated
+ - Better Alternative Exists
+ - Other
+ validations:
+ required: true
+
+ - type: textarea
+ id: suggestion
+ attributes:
+ label: Suggested Fix / Replacement
+ placeholder: "Replace with https://new-working-url.com (status 200); or remove if obsolete."
+
+ - type: textarea
+ id: context
+ attributes:
+ label: Additional Context
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..dd84ea7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,38 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..2ec26ac
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false # Disable "Open a blank issue" to encourage template use
+contact_links:
+ - name: General Questions or Discussions
+ url: https://github.com/jacob-kraniak/the-book-of-secret-knowledge/discussions
+ about: For questions, ideas, or open discussion โ please use Discussions instead of issues.
+ - name: Contact Maintainer (Jacob)
+ url: https://x.com/JacobSk92
+ about: For private or urgent outreach.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..bbcbbe7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/general-enhancement.yml b/.github/ISSUE_TEMPLATE/general-enhancement.yml
new file mode 100644
index 0000000..7cc011b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/general-enhancement.yml
@@ -0,0 +1,20 @@
+name: General Enhancement or Idea
+description: Propose any other improvement (navigation, formatting, new feature like search, etc.)
+title: "[Enhancement] Short title"
+labels: ["enhancement"]
+body:
+ - type: textarea
+ id: description
+ attributes:
+ label: Description of the Enhancement
+ value: |
+ **Is your feature request related to a problem? Please describe.**
+ A clear and concise description of what the problem is.
+
+ **Describe the solution you'd like**
+ A clear and concise description of what you want to happen.
+
+ **Additional context**
+ Add any other context or screenshots about the feature request here.
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/question-or-discussion.md b/.github/ISSUE_TEMPLATE/question-or-discussion.md
new file mode 100644
index 0000000..50104d8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question-or-discussion.md
@@ -0,0 +1,18 @@
+---
+name: Question or Open Discussion
+description: Have a question or want to discuss something? โ Use Discussions instead!
+title: "[Discussion] "
+labels: ["question"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for wanting to start a conversation!
+
+ For questions, brainstorming, or non-actionable discussion, please use **GitHub Discussions** instead:
+
+ ๐ https://github.com/jacob-kraniak/the-book-of-secret-knowledge/discussions/new
+
+ This helps keep Issues focused on actionable work (bugs, features, migrations).
+
+ You can close this issue now โ or comment if you really prefer it here.
diff --git a/.github/ISSUE_TEMPLATE/resource-suggestions.yml b/.github/ISSUE_TEMPLATE/resource-suggestions.yml
new file mode 100644
index 0000000..47c8d2e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/resource-suggestions.yml
@@ -0,0 +1,76 @@
+name: Resource Suggestion
+description: Suggest adding or updating a tool, link, blog, cheat sheet, one-liner, etc.
+title: "[Resource] Short descriptive title"
+labels: ["resource", "enhancement"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for suggesting a resource! Please fill out as much as possible.
+
+ - type: input
+ id: name
+ attributes:
+ label: Resource Name
+ description: Name of the tool, blog, list, one-liner collection, etc.
+ placeholder: e.g., "nmap", "PayloadsAllTheThings", "Shell One-liner: Find large files"
+ validations:
+ required: true
+
+ - type: input
+ id: url
+ attributes:
+ label: URL / Location
+ description: Direct link (or file path if already in repo)
+ placeholder: https://example.com/tool or ./shell-utils/one-liners/find-large-files.md
+ validations:
+ required: true
+
+ - type: dropdown
+ id: category
+ attributes:
+ label: Which section/category does this belong to?
+ options:
+ - CLI Tools
+ - GUI Tools
+ - Web Tools
+ - Systems & Services
+ - Networks
+ - Containers & Orchestration
+ - Manuals / Howtos / Tutorials
+ - Inspiring Lists
+ - Blogs / Podcasts / Videos
+ - Hacking / Penetration Testing
+ - Daily Knowledge / News
+ - Cheat Sheets
+ - Shell One-liners / Tricks / Functions
+ - Other (please specify below)
+ default: 0
+ validations:
+ required: true
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description & Why Include It
+ description: Brief summary + why it's valuable / unique / up-to-date.
+ placeholder: "nmap is the de facto network scanner; still actively maintained in 2026."
+ validations:
+ required: true
+
+ - type: input
+ id: tags
+ attributes:
+ label: Suggested Tags / Keywords
+ description: Comma-separated (helps future search/tagging)
+ placeholder: nmap, scanning, network, cli
+
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: Checklist
+ options:
+ - label: I have searched existing resources / issues to avoid duplicates
+ required: true
+ - label: The resource is legal, ethical, and publicly available
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/section-migration.yml b/.github/ISSUE_TEMPLATE/section-migration.yml
new file mode 100644
index 0000000..27f855a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/section-migration.yml
@@ -0,0 +1,47 @@
+name: Section Migration / Restructure
+description: Propose or work on moving a README section to subfolder/files
+title: "[Migration] Move/Refactor: Section Name"
+labels: ["migration", "structural", "help wanted"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Use this for tracking the big structural refactor (moving content from README.md into dedicated folders/files).
+
+ - type: input
+ id: section
+ attributes:
+ label: Section / Subsection to Migrate
+ placeholder: e.g., CLI Tools โ Network subsection, or Hacking/Penetration Testing โ Labs & CTFs
+ validations:
+ required: true
+
+ - type: input
+ id: target
+ attributes:
+ label: Proposed Target Location
+ placeholder: e.g., /cli-tools/network.md or /hacking-pentesting/labs-ctfs.md
+ validations:
+ required: true
+
+ - type: textarea
+ id: notes
+ attributes:
+ label: Migration Notes / Decisions
+ description: Any consolidation, deduplication, renaming, or special handling needed?
+ placeholder: "Consolidate multiple CTF/lab mentions into one file; remove 404 links; add YAML frontmatter for tags."
+
+ - type: textarea
+ id: blockers
+ attributes:
+ label: Potential Blockers or Dependencies
+ placeholder: "Depends on folder skeleton being created first; needs review of overlapping sections."
+
+ - type: checkboxes
+ id: status
+ attributes:
+ label: Current Status (self-check)
+ options:
+ - label: This is a proposal (not yet started)
+ - label: In progress (link PR below if exists)
+ - label: Ready for review
diff --git a/.github/workflows/ai-pr-review b/.github/workflows/ai-pr-review
new file mode 100644
index 0000000..a10eab4
--- /dev/null
+++ b/.github/workflows/ai-pr-review
@@ -0,0 +1,110 @@
+name: Grok AI PR Review
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened]
+
+permissions:
+ pull-requests: write
+ contents: read
+
+jobs:
+ review:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Needed for git diff
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install openai requests
+
+ - name: Run Grok Review
+ env:
+ XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
+ GROK_MODEL: ${{ vars.GROK_MODEL || 'grok-code-fast-1' }} # fallback to fast coding model
+ run: |
+ python - << 'EOF'
+ import os
+ import requests
+ from openai import OpenAI
+
+ # Use OpenAI SDK with custom base URL for xAI compatibility
+ client = OpenAI(
+ api_key=os.environ["XAI_API_KEY"],
+ base_url="https://api.x.ai/v1"
+ )
+
+ # Get PR diff via GitHub API (or git diff origin/${{ github.base_ref }}...HEAD)
+ repo = "${{ github.repository }}"
+ pr_number = ${{ github.event.pull_request.number }}
+ token = os.environ.get("GITHUB_TOKEN") # built-in
+
+ headers = {
+ "Accept": "application/vnd.github.v3.diff",
+ "Authorization": f"token {token}"
+ }
+ diff_url = f"https://api.github.com/repos/{repo}/pulls/{pr_number}"
+ diff_response = requests.get(diff_url, headers=headers)
+ diff_text = diff_response.text
+
+ if not diff_text.strip():
+ print("No diff found or empty PR.")
+ exit(0)
+
+ # Truncate if too long (Grok context is large, but save tokens)
+ max_chars = 30000
+ if len(diff_text) > max_chars:
+ diff_text = diff_text[:max_chars] + "\n\n[Diff truncated; full context may be larger]"
+
+ # Strong, repo-specific prompt (tune this!)
+ prompt = f"""
+ You are a senior security & knowledge-base curator reviewing changes to 'The Book of Secret Knowledge' โ a curated list of cybersecurity, pentesting, CLI/GUI tools, shell tricks, and secret-finding resources.
+
+ Review this PR diff carefully:
+ {diff_text}
+
+ Provide concise, actionable feedback in Markdown:
+ - **Summary**: One-sentence overview of changes
+ - **Strengths**: What is good (e.g., new valuable resources, clean formatting)
+ - **Issues/Suggestions**:
+ - Formatting/consistency (links, headings, lists)
+ - Potential inaccuracies or outdated info
+ - Security risks (e.g., dangerous commands without warnings)
+ - Improvements (clarity, better structure, missing cross-references)
+ - **Overall**: Approve, Request changes, or Comment (with emoji rating)
+
+ Be strict but constructive. Flag anything promotional/spammy.
+ """
+
+ response = client.chat.completions.create(
+ model=os.environ["GROK_MODEL"],
+ messages=[
+ {"role": "system", "content": "You are an expert code/knowledge reviewer."},
+ {"role": "user", "content": prompt}
+ ],
+ temperature=0.4, # lower for focused reviews
+ max_tokens=1200
+ )
+
+ review_body = response.choices[0].message.content.strip()
+
+ # Post as comment
+ comment_url = f"https://api.github.com/repos/{repo}/issues/{pr_number}/comments"
+ comment_headers = {
+ "Accept": "application/vnd.github+json",
+ "Authorization": f"Bearer {token}",
+ "X-GitHub-Api-Version": "2022-11-28"
+ }
+ payload = {"body": f"### Grok AI Review\n\n{review_body}"}
+ requests.post(comment_url, json=payload, headers=comment_headers)
+ print("Review posted.")
+ EOF
diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml
new file mode 100644
index 0000000..4613569
--- /dev/null
+++ b/.github/workflows/label.yml
@@ -0,0 +1,22 @@
+# This workflow will triage pull requests and apply a label based on the
+# paths that are modified in the pull request.
+#
+# To use this workflow, you will need to set up a .github/labeler.yml
+# file with configuration. For more information, see:
+# https://github.com/actions/labeler
+
+name: Labeler
+on: [pull_request_target]
+
+jobs:
+ label:
+
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
+
+ steps:
+ - uses: actions/labeler@v4
+ with:
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml
new file mode 100644
index 0000000..09d7d08
--- /dev/null
+++ b/.github/workflows/link-check.yml
@@ -0,0 +1,29 @@
+name: Check Markdown Links
+
+on:
+ push:
+ branches: [ "JK_Revisions" ]
+ pull_request:
+ branches: [ "JK_Revisions" ]
+ schedule:
+ - cron: "0 12 * * 1" # Weekly on Mondays at 12:00 UTC
+ workflow_dispatch: # Manual trigger
+
+jobs:
+ link-check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Run Markdown Link Checker
+ uses: gaurav-nelson/github-action-markdown-link-check@v1
+ with:
+ use-verbose-mode: "yes"
+ check-modified-files-only: "false"
+ folder-path: "."
+ file-extension: ".md"
+ config-file: ".markdown-link-check.json" # Create this for ignores
+ max-depth: 2 # Adjust as needed
diff --git a/.github/workflows/markdown-link.yml b/.github/workflows/markdown-link.yml
new file mode 100644
index 0000000..e47f1ea
--- /dev/null
+++ b/.github/workflows/markdown-link.yml
@@ -0,0 +1,22 @@
+name: Lint Markdown
+
+on:
+ push:
+ branches: [ "*" ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # needed for some linters
+
+ - name: Lint Markdown files
+ uses: nosborn/github-action-markdown-cli@v3
+ with:
+ files: .
+ config_file: ".markdownlint.json"
+ ignore_path: ".markdownlintignore"
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
new file mode 100644
index 0000000..75c2d84
--- /dev/null
+++ b/.github/workflows/pre-commit.yml
@@ -0,0 +1,33 @@
+name: Pre-commit Checks
+
+on:
+ push:
+ branches: [ "JK_Revisions" ]
+ pull_request:
+ branches: [ "JK_Revisions" ]
+ schedule:
+ - cron: "0 8 * * 1" # Weekly on Mondays at 08:00 UTC
+ workflow_dispatch: # Allows manual trigger from Actions tab
+
+jobs:
+ pre-commit:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install pre-commit
+ run: |
+ python -m pip install --upgrade pip
+ pip install pre-commit
+
+ - name: Run pre-commit hooks
+ run: pre-commit run --all-files --show-diff-on-failure
diff --git a/.github/workflows/update-toc.yml b/.github/workflows/update-toc.yml
new file mode 100644
index 0000000..99e9929
--- /dev/null
+++ b/.github/workflows/update-toc.yml
@@ -0,0 +1,33 @@
+name: Update TOC
+
+on:
+ push:
+ branches: [ JK_Revisions ]
+ paths:
+ - '**.md' # Trigger on any markdown change
+
+jobs:
+ update-toc:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Important for commit history
+
+ - name: Install doctoc
+ run: npm install -g doctoc
+
+ - name: Run doctoc on README and INDEX files
+ run: |
+ doctoc README.md
+ doctoc tools/_INDEX.md # or tools/INDEX.md after rename
+ doctoc documentation/INDEX.md
+ # Add more files as needed, e.g.:
+ # doctoc tools/security/INDEX.md
+
+ - name: Commit changes if any
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: "chore: auto-update TOC [skip ci]"
+ branch: JK_Revisions
+ skip_dirty_check: false
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..00dd520
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+
+/.obsidian
\ No newline at end of file
diff --git a/.markdown-link-check.json b/.markdown-link-check.json
new file mode 100644
index 0000000..9fb64f5
--- /dev/null
+++ b/.markdown-link-check.json
@@ -0,0 +1,16 @@
+{
+ "ignorePatterns": [
+ { "pattern": "^https?://stackoverflow.com" },
+ { "pattern": "^https?://github.com/.*compare" },
+ { "pattern": "^#" },
+ { "pattern": "\\.md$" },
+ { "pattern": "^https?://(www\\.)?github.com" }
+ ],
+ "replacementPatterns": [],
+ "timeout": "10s",
+ "retryOn429": true,
+ "retryCount": 3,
+ "httpHeaders": [
+ { "name": "User-Agent", "value": "markdown-link-check" }
+ ]
+}
\ No newline at end of file
diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 0000000..c04a951
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,10 @@
+{
+ "default": true,
+ "MD004": { "style": "dash" }, // enforce - bullets
+ "MD007": { "indent": 2 }, // consistent indent
+ "MD013": false, // no line length limit (large lists)
+ "MD022": true, // blank lines around headings
+ "MD029": { "style": "one" }, // ordered lists start with 1.
+ "MD033": { "allowed_elements": ["a", "code", "pre", "em", "strong"] }, // restrict HTML
+ "MD041": false // no first-line heading req
+}
diff --git a/.markdownlintignore b/.markdownlintignore
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.markdownlintignore
@@ -0,0 +1 @@
+
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..ffda743
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,30 @@
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v5.0.0
+ hooks:
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
+ - id: check-yaml
+ - id: check-added-large-files
+ args: ['--maxkb=500']
+
+ - repo: https://github.com/igorshubovych/markdownlint-cli
+ rev: v0.44.0
+ hooks:
+ - id: markdownlint
+ args: ["--config", ".markdownlint.json"]
+
+ - repo: https://github.com/tcort/markdown-link-check
+ rev: v3.13.7
+ hooks:
+ - id: markdown-link-check
+ args: ["--config", ".markdown-link-check.json"]
+
+ - repo: local
+ hooks:
+ - id: validate-tool-tables
+ name: Validate Tool Table Schema
+ entry: python scripts/validate-tool-tables.py
+ language: python
+ files: ^tools/.*\.md$
+ types: [markdown]
\ No newline at end of file
diff --git a/Contibuting.md b/Contibuting.md
new file mode 100644
index 0000000..543eb24
--- /dev/null
+++ b/Contibuting.md
@@ -0,0 +1,10 @@
+I've recently started actively developing a fork of trimstray/the-book-of-secret-knowledge on my branch JK_Revisions.
+
+This original repo has been inactive since late 2024 with over 100 open PRs, and your PR shows updates reflecting an interest in ongoing maintenance. I'd love to centralize efforts to avoid fragmentation. My branch already has linting setup, GitHub Actions for PR labeling, .gitignore/CONTRIBUTING.md improvements, and markdown placeholders ready for content.
+
+If you have changes/PRs from earlier (or ongoing work), would you consider submitting them as PRs or Issues to my fork? We can coordinate there, keep momentum going, and if trimstray returns, push a clean consolidation back upstream.
+
+Happy to discuss direction, merge strategy, or even make you a collaborator if it aligns.
+
+Looking forward to your thoughts!
+Jacob
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
index bd287cf..79d1c58 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2017 trimstray
+Copyright (c) 2026 by Jacob K
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 2c1b9e4..bfc1412 100644
--- a/README.md
+++ b/README.md
@@ -1,277 +1,95 @@
-
-
-
-
-
+## Active Development Branch: JK_Revisions
-"Knowledge is powerful, be careful how you use it!"
+**This branch is under heavy revision โ do not merge to main yet.**
-A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools, and more.
+- All recent work (since fork on 2026-03-03) is by @jacob-kraniak
+- Upstream history (pre-2026 commits) remains from original trimstray repo for credit & context
-
+**See only my changes:**
+- [Commits by me on this branch](https://github.com/jacob-kraniak/the-book-of-secret-knowledge/commits/JK_Revisions?author=jacob-kraniak)
+- [Full branch compare (if main diverges later)](https://github.com/jacob-kraniak/the-book-of-secret-knowledge/compare/main...JK_Revisions)
-
-
-
-
-
-
-
-
+When ready: Plan to squash-merge or rebase + clean history into main.
-
+## Fork Attribution & My Contributions
-****
+**Forked on 2026-03-03** from [trimstray/the-book-of-secret-knowledge](https://github.com/trimstray/the-book-of-secret-knowledge) (MIT licensed, last major upstream activity ~2024).
+## Repository Contents
-## :notebook_with_decorative_cover: What is it?
+
+Click to expand full directory structure
-This repository is a collection of various materials and tools that I use every day in my work. It contains a lot of useful information gathered in one piece. It is an invaluable source of knowledge for me that I often look back on.
+- **documentation/** โ Guides, how-tos, one-liners, cheat sheets, learning material
+ - [INDEX.md](./documentation/INDEX.md) โ Documentation overview
+ - **learning-resources/**
+ - [daily-knowledge-news.md](./documentation/learning-resources/daily-knowledge-news.md)
+ - **manuals-howtos-guides/**
+ - [shell-one-liners.md](./documentation/manuals-howtos-guides/shell-one-liners.md)
+ - [shell-tricks-functions.md](./documentation/manuals-howtos-guides/shell-tricks-functions.md)
+ - [other-cheat-sheets.md](./documentation/other-cheat-sheets.md)
+ - readme - to refactor.md *(legacy โ planned for migration)*
-## :restroom: For whom?
+- **tools/** โ Curated collections of tools across security, networking, sysadmin & devops
+ - [_INDEX.md](./tools/_INDEX.md) โ Tools overview (recommended rename โ INDEX.md)
+ - [my-contributions.md](./tools/my-contributions.md) โ Personally added / heavily used tools
+ - [system-services.md](./tools/system-services.md)
+ - **network-engineering/**
+ - **diagnostics-troubleshooting/** โ Bandwidth & performance, tracing, online utilities, protocols
+ - **dns-dhc-ipam/**
+ - [dns-tools.md](./tools/network-engineering/dns-dhc-ipam/dns-tools.md)
+ - **routing-bgp-ospf/**
+ - [BGP & Routing Tools.md](./tools/network-engineering/routing-bgp-ospf/BGP%20%26%20Routing%20Tools.md)
+ - **security/**
+ - [Untitled.md](./tools/security/Untitled.md) *(to be reviewed / renamed)*
+ - **pentest-recon-enum/**
+ - [Packet Capture & Analysis.md](./tools/security/pentest-recon-enum/Packet%20Capture%20%26%20Analysis.md)
+ - [Port Scanners & Network Discovery.md](./tools/security/pentest-recon-enum/Port%20Scanners%20%26%20Network%20Discovery.md)
+ - [Recon & Threat Reputation.md](./tools/security/pentest-recon-enum/Recon%20%26%20Threat%20Reputation.md)
+ - [ssl-tls-web-security.md](ssl-tls-web-security.md)
+ - **vuln-analysis-exploitation/**
+ - [Packet Crafting & Manipulation.md](./tools/security/vuln-analysis-exploitation/Packet%20Crafting%20%26%20Manipulation.md)
+ - [Vulnerability & Exploit Databases.md](./tools/security/vuln-analysis-exploitation/Vulnerability%20%26%20Exploit%20Databases.md)
+ - **sysadmin-devops/**
+ - [Remote Access + SSH Clients.md](./tools/sysadmin-devops/Remote%20Access%20%2B%20SSH%20Clients.md)
+ - **https-web-services/**
+ - **benchmark-load/**
+ - **browsers/**
+ - **clients-inspectors/**
+ - **security-hardening/**
+ - **system-monitoring-tracing/**
+ - [Log Analyzers.md](./tools/sysadmin-devops/system-monitoring-tracing/Log%20Analyzers.md)
+ - **terminal-shell-productivity/**
+ - [Files & Directories.md](./tools/sysadmin-devops/terminal-shell-productivity/Files%20%26%20Directories.md)
+ - [Shells.md](./tools/sysadmin-devops/terminal-shell-productivity/Shells.md)
+ - [Terminal Emulators.md](./tools/sysadmin-devops/terminal-shell-productivity/Terminal%20Emulators.md)
+ - [Text Editors.md](./tools/sysadmin-devops/terminal-shell-productivity/Text%20Editors.md)
-For everyone, really. Here everyone can find their favourite tastes. But to be perfectly honest, it is aimed towards System and Network administrators, DevOps, Pentesters, and Security Researchers.
+- **Meta & Configuration**
+ - [.github/](./.github/)
+ - [.obsidian/](./.obsidian/) โ optional personal vault settings
+ - [.gitignore](./.gitignore)
+ - [.markdownlint.json](./.markdownlint.json)
+ - [.markdownlintignore](./.markdownlintignore)
+ - [Contributing.md](./Contributing.md)
+ - [LICENSE.md](./LICENSE.md)
+ - [README.md](./README.md) โ you are here
+ - [TOOL-TABLE-SCHEMA.md](./TOOL-TABLE-SCHEMA.md) โ format standard for all tool tables
-## :information_source: Contributing
+
-If you find something which doesn't make sense, or something doesn't seem right, please make a pull request and please add valid and well-reasoned explanations about your changes or comments.
+### Quick Access
-A few simple rules for this project:
+| Area | Focus | Main Entry Point |
+|-----------------------------|----------------------------------------------------|-----------------------------------------------------------------------------|
+| Tools โ Overview | All categories & personal contributions | [_INDEX.md](./tools/_INDEX.md) |
+| Security Tools | Recon, scanning, TLS/web security, exploits | [tools/security/](./tools/security/) |
+| Network Engineering | Diagnostics, DNS/IPAM, BGP/OSPF/routing | [tools/network-engineering/](./tools/network-engineering/) |
+| SysAdmin / DevOps | SSH, web services, monitoring, shell productivity | [tools/sysadmin-devops/](./tools/sysadmin-devops/) |
+| Documentation & Guides | One-liners, cheat sheets, daily learning | [documentation/INDEX.md](./documentation/INDEX.md) |
+| My Contributions | Personally vetted / added tools & notes | [tools/my-contributions.md](./tools/my-contributions.md) |
+| Tool Table Format | Schema used in every tool list | [TOOL-TABLE-SCHEMA.md](./TOOL-TABLE-SCHEMA.md) |
-- inviting and clear
-- not tiring
-- useful
-
-These below rules may be better:
-
-- easy to contribute to (Markdown + HTML ...)
-- easy to find (simple TOC, maybe it's worth extending them?)
-
-Url marked **\*** is temporary unavailable. Please don't delete it without confirming that it has permanently expired.
-
-Before adding a pull request, please see the **[contributing guidelines](.github/CONTRIBUTING.md)**. You should also remember about this:
-
-```diff
-+ This repository is not meant to contain everything but only good quality stuff.
-```
-
-All **suggestions/PR** are welcome!
-
-### Code Contributors
-
-This project exists thanks to all the people who contribute.
-
-
-
-### Financial Contributors
-
-
-
-
-
-
-
-
-
-
-## :newspaper: RSS Feed & Updates
-
-GitHub exposes an [RSS/Atom](https://github.com/trimstray/the-book-of-secret-knowledge/commits.atom) feed of the commits, which may also be useful if you want to be kept informed about all changes.
-
-## :ballot_box_with_check: ToDo
-
-- [ ] Add new stuff...
-- [ ] Add useful shell functions
-- [ ] Add one-liners for collection tools (eg. CLI Tools)
-- [ ] Sort order in lists
-
-New items are also added on a regular basis.
-
-## :anger: Table of Contents
-
-Only main chapters:
-
-- **[CLI Tools](#cli-tools-toc)**
-- **[GUI Tools](#gui-tools-toc)**
-- **[Web Tools](#web-tools-toc)**
-- **[Systems/Services](#systemsservices-toc)**
-- **[Networks](#networks-toc)**
-- **[Containers/Orchestration](#containersorchestration-toc)**
-- **[Manuals/Howtos/Tutorials](#manualshowtostutorials-toc)**
-- **[Inspiring Lists](#inspiring-lists-toc)**
-- **[Blogs/Podcasts/Videos](#blogspodcastsvideos-toc)**
-- **[Hacking/Penetration Testing](#hackingpenetration-testing-toc)**
-- **[Your daily knowledge and news](#your-daily-knowledge-and-news-toc)**
-- **[Other Cheat Sheets](#other-cheat-sheets-toc)**
-- **[Shell One-liners](#shell-one-liners-toc)**
-- **[Shell Tricks](#shell-tricks-toc)**
-- **[Shell Functions](#shell-functions-toc)**
-
-## :trident: The Book of Secret Knowledge (Chapters)
-
-#### CLI Tools [[TOC]](#anger-table-of-contents)
-
-##### :black_small_square: Shells
-
-
- GNU Bash - is an sh-compatible shell that incorporates useful features from the Korn shell and C shell.
- Zsh - is a shell designed for interactive use, although it is also a powerful scripting language.
- tclsh - is a very powerful cross-platform shell, suitable for a huge range of uses.
- bash-it - is a framework for using, developing and maintaining shell scripts and custom commands.
- Oh My ZSH! - is the best framework for managing your Zsh configuration.
- Oh My Fish - the Fishshell framework.
- Starship - the cross-shell prompt written in Rust.
- powerlevel10k - is a fast reimplementation of Powerlevel9k ZSH theme.
-
-
-##### :black_small_square: Shell plugins
-
-
- z - tracks the folder you use the most and allow you to jump, without having to type the whole path.
- fzf - is a general-purpose command-line fuzzy finder.
- zsh-autosuggestions - Fish-like autosuggestions for Zsh.
- zsh-syntax-highlighting - Fish shell like syntax highlighting for Zsh.
- Awesome ZSH Plugins - A list of frameworks, plugins, themes and tutorials for ZSH.
-
-
-##### :black_small_square: Managers
-
-
- Midnight Commander - is a visual file manager, licensed under GNU General Public License.
- ranger - is a VIM-inspired filemanager for the console.
- nnn - is a tiny, lightning fast, feature-packed file manager.
- screen - is a full-screen window manager that multiplexes a physical terminal.
- tmux - is a terminal multiplexer, lets you switch easily between several programs in one terminal.
- tmux-cssh - is a tool to set comfortable and easy to use functionality tmux-sessions.
-
-
-##### :black_small_square: Text editors
-
-
- vi - is one of the most common text editors on Unix.
- vim - is a highly configurable text editor.
- emacs - is an extensible, customizable, free/libre text editor, and more.
- micro - is a modern and intuitive terminal-based text editor.
- neovim - is a free open source, powerful, extensible and usable code editor.
- spacemacs - a community-driven Emacs distribution.
- spacevim - a community-driven vim distribution.
-
-
-##### :black_small_square: Files and directories
-
-
- fd - is a simple, fast and user-friendly alternative to find.
- ncdu - is an easy to use, fast disk usage analyzer.
-
-
-##### :black_small_square: Network
-
-
- PuTTY - is an SSH and telnet client, developed originally by Simon Tatham.
- Mosh - is a SSH wrapper designed to keep a SSH session alive over a volatile connection.
- Eternal Terminal - enables mouse-scrolling and tmux commands inside the SSH session.
- nmap - is a free and open source (license) utility for network discovery and security auditing.
- zmap - is a fast single packet network scanner designed for Internet-wide network surveys.
- Rust Scan - to find all open ports faster than Nmap.
- masscan - is the fastest Internet port scanner, spews SYN packets asynchronously.
- pbscan - is a faster and more efficient stateless SYN scanner and banner grabber.
- hping - is a command-line oriented TCP/IP packet assembler/analyzer.
- mtr - is a tool that combines the functionality of the 'traceroute' and 'ping' programs in a single tool.
- mylg - utility which combines the functions of the different network probes in one diagnostic tool.
- netcat - utility which reads and writes data across network connections, using the TCP/IP protocol.
- socat - utility which transfers data between two objects.
- tcpdump - is a powerful command-line packet analyzer.
- tshark - is a tool that allows us to dump and analyze network traffic (wireshark cli).
- Termshark - is a simple terminal user-interface for tshark.
- ngrep - is like GNU grep applied to the network layer.
- netsniff-ng - is a Swiss army knife for your daily Linux network plumbing if you will.
- sockdump - dump unix domain socket traffic.
- stenographer - is a packet capture solution which aims to quickly spool all packets to disk.
- tcpterm - visualize packets in TUI.
- bmon - is a monitoring and debugging tool to capture networking related statistics and prepare them visually.
- iptraf-ng - is a console-based network monitoring program for Linux that displays information about IP traffic.
- vnstat - is a network traffic monitor for Linux and BSD.
- iPerf3 - is a tool for active measurements of the maximum achievable bandwidth on IP networks.
- ethr - is a Network Performance Measurement Tool for TCP, UDP & HTTP.
- Etherate - is a Linux CLI based Ethernet and MPLS traffic testing tool.
- echoip - is a IP address lookup service.
- Nemesis - packet manipulation CLI tool; craft and inject packets of several protocols.
- packetfu - a mid-level packet manipulation library for Ruby.
- Scapy - packet manipulation library; forge, send, decode, capture packets of a wide number of protocols.
- impacket - is a collection of Python classes for working with network protocols.
- ssh-audit - is a tool for SSH server auditing.
- aria2 - is a lightweight multi-protocol & multi-source command-line download utility.
- iptables-tracer - observe the path of packets through the iptables chains.
- inception - a highly configurable tool to check for whatever you like against any number of hosts.
- mRemoteNG - a fork of mRemote, multi-tabbed PuTTy on steroids!
-
-
-##### :black_small_square: Network (DNS)
-
-
- dnsdiag - is a DNS diagnostics and performance measurement tools.
- fierce - is a DNS reconnaissance tool for locating non-contiguous IP space.
- subfinder - is a subdomain discovery tool that discovers valid subdomains for websites.
- sublist3r - is a fast subdomains enumeration tool for penetration testers.
- amass - is tool that obtains subdomain names by scraping data sources, crawling web archives, and more.
- namebench - provides personalized DNS server recommendations based on your browsing history.
- massdns - is a high-performance DNS stub resolver for bulk lookups and reconnaissance.
- knock - is a tool to enumerate subdomains on a target domain through a wordlist.
- dnsperf - DNS performance testing tools.
- dnscrypt-proxy 2 - a flexible DNS proxy, with support for encrypted DNS protocols.
- dnsdbq - API client providing access to passive DNS database systems.
- grimd - fast dns proxy, built to black-hole internet advertisements and malware servers.
- dnstwist - detect typosquatters, phishing attacks, fraud, and brand impersonation.
-
-
-##### :black_small_square: Network (HTTP)
-
-
- curl - is a command line tool and library for transferring data with URLs.
- kurly - is an alternative to the widely popular curl program, written in Golang.
- HTTPie - is an user-friendly HTTP client.
- wuzz - is an interactive cli tool for HTTP inspection.
- h2spec - is a conformance testing tool for HTTP/2 implementation.
- h2t - is a simple tool to help sysadmins to hardening their websites.
- htrace.sh - is a simple Swiss Army knife for http/https troubleshooting and profiling.
- httpstat - is a tool that visualizes curl statistics in a way of beauty and clarity.
- httplab - is an interactive web server.
- Lynx - is a text browser for the World Wide Web.
- Browsh - is a fully interactive, real-time, and modern text-based browser.
- HeadlessBrowsers - a list of (almost) all headless web browsers in existence.
- ab - is a single-threaded command line tool for measuring the performance of HTTP web servers.
- siege - is an http load testing and benchmarking utility.
- wrk - is a modern HTTP benchmarking tool capable of generating significant load.
- wrk2 - is a constant throughput, correct latency recording variant of wrk.
- vegeta - is a constant throughput, correct latency recording variant of wrk.
- bombardier - is a fast cross-platform HTTP benchmarking tool written in Go.
- gobench - http/https load testing and benchmarking tool.
- hey - HTTP load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom.
- boom - is a script you can use to quickly smoke-test your web app deployment.
- SlowHTTPTest - is a tool that simulates some Application Layer Denial of Service attacks by prolonging HTTP.
- gobuster - is a free and open source directory/file & DNS busting tool written in Go.
- ssllabs-scan - command-line reference-implementation client for SSL Labs APIs.
- http-observatory - Mozilla HTTP Observatory cli version.
- Hurl - is a command line tool to run and test HTTP requests with plain text.
-
-
-##### :black_small_square: SSL
-
-
- openssl - is a robust, commercial-grade, and full-featured toolkit for the TLS and SSL protocols.
- gnutls-cli - client program to set up a TLS connection to some other computer.
- sslyze
- - fast and powerful SSL/TLS server scanning library.
- sslscan - tests SSL/TLS enabled services to discover supported cipher suites.
- testssl.sh - testing TLS/SSL encryption anywhere on any port.
- cipherscan - a very simple way to find out which SSL ciphersuites are supported by a target.
- spiped - is a utility for creating symmetrically encrypted and authenticated pipes between socket addresses.
- Certbot - is EFF's tool to obtain certs from Let's Encrypt and (optionally) auto-enable HTTPS on your server.
- mkcert - simple zero-config tool to make locally trusted development certificates with any names you'd like.
- certstrap - tools to bootstrap CAs, certificate requests, and signed certificates.
- Sublert - is a security and reconnaissance tool to automatically monitor new subdomains.
- mkchain - open source tool to help you build a valid SSL certificate chain.
- ssl-cert-check - SSL Certification Expiration Checker.
-
+All tool-list markdown files follow the structure and linking rules defined in [TOOL-TABLE-SCHEMA.md](./TOOL-TABLE-SCHEMA.md).
##### :black_small_square: Security
@@ -295,41 +113,6 @@ Only main chapters:
PEASS - privilege escalation tools for Windows and Linux/Unix and MacOS.
-##### :black_small_square: System Diagnostics/Debuggers
-
-
- strace - diagnostic, debugging and instructional userspace utility for Linux.
- DTrace - is a performance analysis and troubleshooting tool.
- ltrace - is a library call tracer, used to trace calls made by programs to library functions.
- ptrace-burrito - is a friendly wrapper around ptrace.
- perf-tools - performance analysis tools based on Linux perf_events (aka perf) and ftrace.
- bpftrace - high-level tracing language for Linux eBPF.
- sysdig - system exploration and troubleshooting tool with first class support for containers.
- Valgrind - is an instrumentation framework for building dynamic analysis tools.
- gperftools - high-performance multi-threaded malloc() implementation, plus some performance analysis tools.
- glances - cross-platform system monitoring tool written in Python.
- htop - interactive text-mode process viewer for Unix systems. It aims to be a better 'top'.
- bashtop - Linux resource monitor written in pure Bash.
- nmon - a single executable for performance monitoring and data analysis.
- atop - ASCII performance monitor. Includes statistics for CPU, memory, disk, swap, network, and processes.
- lsof - displays in its output information about files that are opened by processes.
- FlameGraph - stack trace visualizer.
- lsofgraph - convert Unix lsof output to a graph showing FIFO and UNIX interprocess communication.
- rr - is a lightweight tool for recording, replaying and debugging execution of applications.
- Performance Co-Pilot - a system performance analysis toolkit.
- hexyl - a command-line hex viewer.
- Austin - Python frame stack sampler for CPython.
-
-
-##### :black_small_square: Log Analyzers
-
-
- angle-grinder - slice and dice log files on the command line.
- lnav - log file navigator with search and automatic refresh.
- GoAccess - real-time web log analyzer and interactive viewer that runs in a terminal.
- ngxtop - real-time metrics for nginx server.
-
-
##### :black_small_square: Databases
@@ -381,14 +164,7 @@ Only main chapters:
#### GUI Tools [[TOC]](#anger-table-of-contents)
-##### :black_small_square: Terminal emulators
-
- Guake - is a dropdown terminal made for the GNOME desktop environment.
- Terminator - is based on GNOME Terminal, useful features for sysadmins and other users.
- Kitty - is a GPU based terminal emulator that supports smooth scrolling and images.
- Alacritty - is a fast, cross-platform, OpenGL terminal emulator.
-
##### :black_small_square: Network
@@ -454,35 +230,7 @@ Only main chapters:
sslClientInfo - client test (incl TLSv1.3 information).
-##### :black_small_square: SSL/Security
-
- SSLLabs Server Test - performs a deep analysis of the configuration of any SSL web server.
- SSLLabs Server Test (DEV) - performs a deep analysis of the configuration of any SSL web server.
- ImmuniWebยฎ SSLScan - test SSL/TLS (PCI DSS, HIPAA and NIST).
- SSL Check - scan your website for non-secure content.
- SSL Scanner - analyze website security.
- CryptCheck - test your TLS server configuration (e.g. ciphers).
- urlscan.io - service to scan and analyse websites.
- Report URI - monitoring security policies like CSP and HPKP.
- CSP Evaluator - allows developers and security experts to check if a Content Security Policy.
- Useless CSP - public list about CSP in some big players (might make them care a bit more).
- Why No HTTPS? - top 100 websites by Alexa rank not automatically redirecting insecure requests.
- TLS Cipher Suite Search- cipher suite search engine.
- cipherli.st - strong ciphers for Apache, Nginx, Lighttpd, and more.*
- dhtool - public Diffie-Hellman parameter service/tool.
- badssl.com - memorable site for testing clients against bad SSL configs.
- tlsfun.de - registered for various tests regarding the TLS/SSL protocol.
- CAA Record Helper - generate a CAA policy.
- Common CA Database - repository of information about CAs, and their root and intermediate certificates.
- CERTSTREAM - real-time certificate transparency log update stream.
- crt.sh - discovers certificates by continually monitoring all of the publicly known CT.
- Hardenize - deploy the security standards.
- Cipher suite compatibility - test TLS cipher suite compatibility.
- urlvoid - this service helps you detect potentially malicious websites.
- security.txt - a proposed standard (generator) which allows websites to define security policies.
- ssl-config-generator - help you follow the Mozilla Server Side TLS configuration guidelines.
- TLScan - pure python, SSL/TLS protocol and cipher scanner/enumerator.
##### :black_small_square: HTTP Headers & Web Linters
@@ -495,27 +243,7 @@ Only main chapters:
##### :black_small_square: DNS
-
- ViewDNS - one source for free DNS related tools and information.
- DNSLookup - is an advanced DNS lookup tool.
- DNSlytics - online DNS investigation tool.
- DNS Spy - monitor, validate and verify your DNS configurations.
- Zonemaster - helps you to control how your DNS works.
- Leaf DNS - comprehensive DNS tester.
- Find subdomains online - find subdomains for security assessment penetration test.
- DNSdumpster - dns recon & research, find & lookup dns records.
- DNS Table online - search for DNS records by domain, IP, CIDR, ISP.
- intoDNS - DNS and mail server health checker.
- DNS Bajaj - check the delegation of your domain.
- BuddyDNS Delegation LAB - check, trace and visualize delegation of your domain.
- dnssec-debugger - DS or DNSKEY records validator.
- PTRarchive.com - this site is responsible for the safekeeping of historical reverse DNS records.
- xip.io - wildcard DNS for everyone.
- nip.io - dead simple wildcard DNS for any IP Address.
- dnslookup (ceipam) - one of the best DNS propagation checker (and not only).
- What's My DNS - DNS propagation checking tool.
- DNSGrep - quickly searching large DNS datasets.
-
+
##### :black_small_square: Mail
@@ -540,22 +268,6 @@ Only main chapters:
The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis.
-##### :black_small_square: Net-tools
-
-
- Netcraft - detailed report about the site, helping you to make informed choices about their integrity.*
- RIPE NCC Atlas - a global, open, distributed Internet measurement platform.
- Robtex - uses various sources to gather public information about IP numbers, domain names, host names, etc.
- Security Trails - APIs for Security Companies, Researchers and Teams.
- Online Curl - curl test, analyze HTTP Response Headers.
- Online Tools for Developers - HTTP API tools, testers, encoders, converters, formatters, and other tools.
- Ping.eu - online Ping, Traceroute, DNS lookup, WHOIS and others.
- Network-Tools - network tools for webmasters, IT technicians & geeks.
- BGPview - search for any ASN, IP, Prefix or Resource name.
- Is BGP safe yet? - check BGP (RPKI) security of ISPs and other major Internet players.
- Riseup - provides online communication tools for people and groups working on liberatory social change.
- VirusTotal - analyze suspicious files and URLs to detect types of malware.
-
##### :black_small_square: Privacy
@@ -654,16 +366,7 @@ performance of any of your sites from across the globe.
##### :black_small_square: CVE/Exploits databases
-
- CVE Mitre - list of publicly known cybersecurity vulnerabilities.
- CVE Details - CVE security vulnerability advanced database.
- Exploit DB - CVE compliant archive of public exploits and corresponding vulnerable software.
- 0day.today - exploits market provides you the possibility to buy/sell zero-day exploits.
- sploitus - the exploit and tools database.
- cxsecurity - free vulnerability database.
- Vulncode-DB - is a database for vulnerabilities and their corresponding source code if available.
- cveapi - free API for CVE data.
-
+
##### :black_small_square: Mobile apps scanners
@@ -784,54 +487,6 @@ performance of any of your sites from across the globe.
LBNL's Network Research Group - home page of the Network Research Group (NRG).
-#### Containers/Orchestration [[TOC]](#anger-table-of-contents)
-
-##### :black_small_square: CLI Tools
-
-
- gvisor - container runtime sandbox.
- ctop - top-like interface for container metrics.
-
-
-##### :black_small_square: Web Tools
-
-
- Moby - a collaborative project for the container ecosystem to assemble container-based system.
- Traefik - open source reverse proxy/load balancer provides easier integration with Docker and Let's encrypt.
- kong - The Cloud-Native API Gateway.
- rancher - complete container management platform.
- portainer - making Docker management easy.
- nginx-proxy - automated nginx proxy for Docker containers using docker-gen.
- bunkerized-nginx - nginx docker image "secure by default".
-
-
-##### :black_small_square: Security
-
-
- docker-bench-security - checks for dozens of common best-practices around deploying Docker.
- trivy - vulnerability scanner for containers, suitable for CI.
- Harbor - cloud native registry project that stores, signs, and scans content.
- Houdini - hundreds of offensive and useful docker images for network intrusion.
-
-
-##### :black_small_square: Manuals/Tutorials/Best Practices
-
-
- docker-cheat-sheet - a quick reference cheat sheet on Docker.
- awesome-docker - a curated list of Docker resources and projects.
- docker_practice - learn and understand Docker technologies, with real DevOps practice!
- labs
- - is a collection of tutorials for learning how to use Docker with various tools.
- dockerfiles - various Dockerfiles I use on the desktop and on servers.
- kubernetes-the-hard-way - bootstrap Kubernetes the hard way on Google Cloud Platform. No scripts.
- kubernetes-the-easy-way - bootstrap Kubernetes the easy way on Google Cloud Platform. No scripts.
- cheatsheet-kubernetes-A4 - Kubernetes CheatSheets in A4.
- k8s-security - kubernetes security notes and best practices.
- kubernetes-production-best-practices - checklists with best-practices for production-ready Kubernetes.
- kubernetes-production-best-practices - kubernetes security - best practice guide.
- kubernetes-failure-stories - is a compilation of public failure/horror stories related to Kubernetes.
-
-
#### Manuals/Howtos/Tutorials [[TOC]](#anger-table-of-contents)
##### :black_small_square: Shell/Command line
@@ -1228,68 +883,6 @@ CyberTalks - talks, interviews, and article about cybersecurity.
Diffie-Hellman Key Exchange (short version) - how Diffie-Hellman Key Exchange worked.
-#### Hacking/Penetration Testing [[TOC]](#anger-table-of-contents)
-
-##### :black_small_square: Pentesters arsenal tools
-
-
- Sandcat Browser - a penetration-oriented browser with plenty of advanced functionality already built in.
- Metasploit - tool and framework for pentesting system, web and many more.
- Burp Suite - tool for testing web app security, intercepting proxy to replay, inject, scan and fuzz.
- OWASP Zed Attack Proxy - intercepting proxy to replay, inject, scan and fuzz HTTP requests.
- w3af - is a Web Application Attack and Audit Framework.
- mitmproxy - an interactive TLS-capable intercepting HTTP proxy for penetration testers.
- Nikto2 - web server scanner which performs comprehensive tests against web servers for multiple items.
- sqlmap - tool that automates the process of detecting and exploiting SQL injection flaws.
- Recon-ng - is a full-featured Web Reconnaissance framework written in Python.
- AutoRecon - is a network reconnaissance tool which performs automated enumeration of services.
- Faraday - an Integrated Multiuser Pentest Environment.
- Photon - incredibly fast crawler designed for OSINT.
- XSStrike - most advanced XSS detection suite.
- Sn1per - automated pentest framework for offensive security experts.
- vuls - is an agent-less vulnerability scanner for Linux, FreeBSD, and other.
- tsunami - is a general purpose network security scanner with an extensible plugin system.
- aquatone - a tool for domain flyovers.
- BillCipher - information gathering tool for a website or IP address.
- WhatWaf - detect and bypass web application firewalls and protection systems.
- Corsy - CORS misconfiguration scanner.
- Raccoon - is a high performance offensive security tool for reconnaissance and vulnerability scanning.
- dirhunt - find web directories without bruteforce.
- John The Ripper - is a fast password cracker, currently available for many flavors of Unix, Windows, and other.
- hashcat - world's fastest and most advanced password recovery utility.
- p0f - is a tool to identify the players behind any incidental TCP/IP communications.
- ssh_scan - a prototype SSH configuration and policy scanner.
- LeakLooker - find open databases - powered by Binaryedge.io
- exploitdb - searchable archive from The Exploit Database.
- getsploit - is a command line utility for searching and downloading exploits.
- ctf-tools - some setup scripts for security research tools.
- pwntools - CTF framework and exploit development library.
- security-tools - collection of small security tools created mostly in Python. CTFs, pentests and so on.
- pentestpackage - is a package of Pentest scripts.
- python-pentest-tools - python tools for penetration testers.
- fuzzdb - dictionary of attack patterns and primitives for black-box application fault injection.
- AFL - is a free software fuzzer maintained by Google.
- AFL++ - is AFL with community patches.
- syzkaller - is an unsupervised, coverage-guided kernel fuzzer.
- pwndbg - exploit development and reverse engineering with GDB made easy.
- GDB PEDA - Python Exploit Development Assistance for GDB.
- IDA - multi-processor disassembler and debugger useful for reverse engineering malware.
- radare2 - framework for reverse-engineering and analyzing binaries.
- routersploit - exploitation framework for embedded devices.
- Ghidra - is a software reverse engineering (SRE) framework.
- Cutter - is an SRE platform integrating Ghidra's decompiler.
- Vulnreport - open-source pentesting management and automation platform by Salesforce Product Security.
- Mentalist - is a graphical tool for custom wordlist generation.
- archerysec - vulnerability assessment and management helps to perform scans and manage vulnerabilities.
- Osmedeus - fully automated offensive security tool for reconnaissance and vulnerability scanning.
- beef - the browser exploitation framework project.
- AutoSploit - automated mass exploiter.
- SUDO_KILLER - is a tool to identify and exploit sudo rules' misconfigurations and vulnerabilities.
- yara - the pattern matching swiss knife.
- mimikatz - a little tool to play with Windows security.
- sherlock - hunt down social media accounts by username across social networks.
- OWASP Threat Dragon - is a tool used to create threat model diagrams and to record possible threats.
-
##### :black_small_square: Pentests bookmarks collection
@@ -1545,2898 +1138,3 @@ AWS deployment tool.
simple-computer - the scott CPU from "But How Do It Know?" by J. Clark Scott.
littleosbook - the little book about OS development.
-
-###### DNS Servers list (privacy)
-
-| IP | URL |
-| :--- | :--- |
-| **`84.200.69.80`** | [dns.watch](https://dns.watch/) |
-| **`94.247.43.254`** | [opennic.org](https://www.opennic.org/) |
-| **`64.6.64.6`** | [verisign.com](https://www.verisign.com/en_US/security-services/public-dns/index.xhtml) |
-| **`89.233.43.71`** | [censurfridns.dk](https://blog.uncensoreddns.org/) |
-| **`1.1.1.1`** | [cloudflare.com](https://1.1.1.1/) |
-| **`94.130.110.185`** | [dnsprivacy.at](https://dnsprivacy.at/) |
-
-###### TOP Browser extensions
-
-| Extension name | Description |
-| :--- | :--- |
-| **`IPvFoo`** | Display the server IP address and HTTPS information across all page elements. |
-| **`FoxyProxy`** | Simplifies configuring browsers to access proxy-servers. |
-| **`HTTPS Everywhere`** | Automatically use HTTPS security on many sites. |
-| **`uMatrix`** | Point & click to forbid/allow any class of requests made by your browser. |
-| **`uBlock Origin`** | An efficient blocker: easy on memory and CPU footprint. |
-| **`Session Buddy`** | Manage browser tabs and bookmarks with ease. |
-| **`SuperSorter`** | Sort bookmarks recursively, delete duplicates, merge folders, and more. |
-| **`Clear Cache`** | Clear your cache and browsing data. |
-| **`d3coder`** | Encoding/Decoding plugin for various types of encoding. |
-| **`Web Developer`** | Adds a toolbar button with various web developer tools. |
-| **`ThreatPinch Lookup`** | Add threat intelligence hover tool tips. |
-
-###### TOP Burp extensions
-
-| Extension name | Description |
-| :--- | :--- |
-| **`Active Scan++`** | Extends Burp's active and passive scanning capabilities. |
-| **`Autorize`** | Automatically detects authorization enforcement. |
-| **`AuthMatrix`** | A simple matrix grid to define the desired levels of access privilege. |
-| **`Logger++`** | Logs requests and responses for all Burp tools in a sortable table. |
-| **`Bypass WAF`** | Adds headers useful for bypassing some WAF devices. |
-| **`JSON Beautifier`** | Beautifies JSON content in the HTTP message viewer. |
-| **`JSON Web Tokens`** | Enables Burp to decode and manipulate JSON web tokens. |
-| **`CSP Auditor`** | Displays CSP headers for responses, and passively reports CSP weaknesses. |
-| **`CSP-Bypass`** | Passively scans for CSP headers that contain known bypasses. |
-| **`Hackvertor`** | Converts data using a tag-based configuration to apply various encoding. |
-| **`HTML5 Auditor`** | Scans for usage of risky HTML5 features. |
-| **`Software Vulnerability Scanner`** | Vulnerability scanner based on vulners.com audit API. |
-| **`Turbo Intruder`** | Is a powerful bruteforcing tool. |
-| **`Upload Scanner`** | Upload a number of different file types, laced with different forms of payload. |
-
-###### Hack Mozilla Firefox address bar
-
-In Firefox's address bar, you can limit results by typing special characters before or after your term:
-
-- `^` - for matches in your browsing history
-- `*` - for matches in your bookmarks.
-- `%` - for matches in your currently open tabs.
-- `#` - for matches in page titles.
-- `@` - for matches in web addresses.
-
-###### Chrome hidden commands
-
-- `chrome://chrome-urls` - list of all commands
-- `chrome://flags` - enable experiments and development features
-- `chrome://interstitials` - errors and warnings
-- `chrome://net-internals` - network internals (events, dns, cache)
-- `chrome://network-errors` - network errors
-- `chrome://net-export` - start logging future network activity to a file
-- `chrome://safe-browsing` - safe browsing options
-- `chrome://user-actions` - record all user actions
-- `chrome://restart` - restart chrome
-- `chrome://dino` - ERR_INTERNET_DISCONNECTED...
-- `cache:` - view the cached version of the web page
-
-###### Bypass WAFs by Shortening IP Address (by [0xInfection](https://twitter.com/0xInfection))
-
-IP addresses can be shortened by dropping the zeroes:
-
-```
-http://1.0.0.1 โ http://1.1
-http://127.0.0.1 โ http://127.1
-http://192.168.0.1 โ http://192.168.1
-
-http://0xC0A80001 or http://3232235521 โ 192.168.0.1
-http://192.168.257 โ 192.168.1.1
-http://192.168.516 โ 192.168.2.4
-```
-
- > This bypasses WAF filters for SSRF, open-redirect, etc where any IP as input gets blacklisted.
-
-For more information please see [How to Obscure Any URL](http://www.pc-help.org/obscure.htm) and [Magic IP Address Shortcuts](https://stuff-things.net/2014/09/25/magic-ip-address-shortcuts/).
-
-###### Hashing, encryption and encoding (by [Michal ล paฤek](https://twitter.com/spazef0rze))
-
-_Hashing_
-
-plaintext :arrow_right: hash
-hash :no_entry: plaintext
-
-_Symmetric encryption_
-
-plaintext :arrow_right: :key: :arrow_right: ciphertext
-plaintext :arrow_left: :key: :arrow_left: ciphertext
-(:key: shared key)
-
-_Asymmetric encryption_
-
-plaintext :arrow_right: :key: :arrow_right: ciphertext
-plaintext :arrow_left: :part_alternation_mark: :arrow_left: ciphertext
-(:key: public key, :part_alternation_mark: private key)
-
-_Encoding_
-
-text :arrow_right: encoded
-text :arrow_left: encoded
-
-#### Shell One-liners [[TOC]](#anger-table-of-contents)
-
-##### Table of Contents
-
- * [terminal](#tool-terminal)
- * [busybox](#tool-busybox)
- * [mount](#tool-mount)
- * [fuser](#tool-fuser)
- * [lsof](#tool-lsof)
- * [ps](#tool-ps)
- * [top](#tool-top)
- * [vmstat](#tool-vmstat)
- * [iostat](#tool-iostat)
- * [strace](#tool-strace)
- * [kill](#tool-kill)
- * [find](#tool-find)
- * [diff](#tool-diff)
- * [vimdiff](#tool-vimdiff)
- * [tail](#tool-tail)
- * [cpulimit](#tool-cpulimit)
- * [pwdx](#tool-pwdx)
- * [tr](#tool-tr)
- * [chmod](#tool-chmod)
- * [who](#tool-who)
- * [last](#tool-last)
- * [screen](#tool-screen)
- * [script](#tool-script)
- * [du](#tool-du)
- * [inotifywait](#tool-inotifywait)
- * [openssl](#tool-openssl)
- * [secure-delete](#tool-secure-delete)
- * [dd](#tool-dd)
- * [gpg](#tool-gpg)
- * [system-other](#tool-system-other)
- * [curl](#tool-curl)
- * [httpie](#tool-httpie)
- * [ssh](#tool-ssh)
- * [linux-dev](#tool-linux-dev)
- * [tcpdump](#tool-tcpdump)
- * [tcpick](#tool-tcpick)
- * [ngrep](#tool-ngrep)
- * [hping3](#tool-hping3)
- * [nmap](#tool-nmap)
- * [netcat](#tool-netcat)
- * [socat](#tool-socat)
- * [p0f](#tool-p0f)
- * [gnutls-cli](#tool-gnutls-cli)
- * [netstat](#tool-netstat)
- * [rsync](#tool-rsync)
- * [host](#tool-host)
- * [dig](#tool-dig)
- * [certbot](#tool-certbot)
- * [network-other](#tool-network-other)
- * [git](#tool-git)
- * [awk](#tool-awk)
- * [sed](#tool-sed)
- * [grep](#tool-grep)
- * [perl](#tool-perl)
-
-##### Tool: [terminal](https://en.wikipedia.org/wiki/Linux_console)
-
-###### Reload shell without exit
-
-```bash
-exec $SHELL -l
-```
-
-###### Close shell keeping all subprocess running
-
-```bash
-disown -a && exit
-```
-
-###### Exit without saving shell history
-
-```bash
-kill -9 $$
-unset HISTFILE && exit
-```
-
-###### Perform a branching conditional
-
-```bash
-true && echo success
-false || echo failed
-```
-
-###### Pipe stdout and stderr to separate commands
-
-```bash
-some_command > >(/bin/cmd_for_stdout) 2> >(/bin/cmd_for_stderr)
-```
-
-###### Redirect stdout and stderr each to separate files and print both to the screen
-
-```bash
-(some_command 2>&1 1>&3 | tee errorlog ) 3>&1 1>&2 | tee stdoutlog
-```
-
-###### List of commands you use most often
-
-```bash
-history | \
-awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | \
-grep -v "./" | \
-column -c3 -s " " -t | \
-sort -nr | nl | head -n 20
-```
-
-###### Sterilize bash history
-
-```bash
-function sterile() {
-
- history | awk '$2 != "history" { $1=""; print $0 }' | egrep -vi "\
-curl\b+.*(-E|--cert)\b+.*\b*|\
-curl\b+.*--pass\b+.*\b*|\
-curl\b+.*(-U|--proxy-user).*:.*\b*|\
-curl\b+.*(-u|--user).*:.*\b*
-.*(-H|--header).*(token|auth.*)\b+.*|\
-wget\b+.*--.*password\b+.*\b*|\
-http.?://.+:.+@.*\
-" > $HOME/histbuff; history -r $HOME/histbuff;
-
-}
-
-export PROMPT_COMMAND="sterile"
-```
-
- > Look also: [A naive utility to censor credentials in command history](https://github.com/lbonanomi/go/blob/master/revisionist.go).
-
-###### Quickly backup a file
-
-```bash
-cp filename{,.orig}
-```
-
-###### Empty a file (truncate to 0 size)
-
-```bash
->filename
-```
-
-###### Delete all files in a folder that don't match a certain file extension
-
-```bash
-rm !(*.foo|*.bar|*.baz)
-```
-
-###### Pass multi-line string to a file
-
-```bash
-# cat >filename ... - overwrite the file
-# cat >>filename ... - append to a file
-cat > filename << __EOF__
-data data data
-__EOF__
-```
-
-###### Edit a file on a remote host using vim
-
-```bash
-vim scp://user@host//etc/fstab
-```
-
-###### Create a directory and change into it at the same time
-
-```bash
-mkd() { mkdir -p "$@" && cd "$@"; }
-```
-
-###### Convert uppercase files to lowercase files
-
-```bash
-rename 'y/A-Z/a-z/' *
-```
-
-###### Print a row of characters across the terminal
-
-```bash
-printf "%`tput cols`s" | tr ' ' '#'
-```
-
-###### Show shell history without line numbers
-
-```bash
-history | cut -c 8-
-fc -l -n 1 | sed 's/^\s*//'
-```
-
-###### Run command(s) after exit session
-
-```bash
-cat > /etc/profile << __EOF__
-_after_logout() {
-
- username=$(whoami)
-
- for _pid in $(ps afx | grep sshd | grep "$username" | awk '{print $1}') ; do
-
- kill -9 $_pid
-
- done
-
-}
-trap _after_logout EXIT
-__EOF__
-```
-
-###### Generate a sequence of numbers
-
-```bash
-for ((i=1; i<=10; i+=2)) ; do echo $i ; done
-# alternative: seq 1 2 10
-
-for ((i=5; i<=10; ++i)) ; do printf '%02d\n' $i ; done
-# alternative: seq -w 5 10
-
-for i in {1..10} ; do echo $i ; done
-```
-
-###### Simple Bash filewatching
-
-```bash
-unset MAIL; export MAILCHECK=1; export MAILPATH='$FILE_TO_WATCH?$MESSAGE'
-```
-
----
-
-##### Tool: [busybox](https://www.busybox.net/)
-
-###### Static HTTP web server
-
-```bash
-busybox httpd -p $PORT -h $HOME [-c httpd.conf]
-```
-
-___
-
-##### Tool: [mount](https://en.wikipedia.org/wiki/Mount_(Unix))
-
-###### Mount a temporary ram partition
-
-```bash
-mount -t tmpfs tmpfs /mnt -o size=64M
-```
-
- * `-t` - filesystem type
- * `-o` - mount options
-
-###### Remount a filesystem as read/write
-
-```bash
-mount -o remount,rw /
-```
-
-___
-
-##### Tool: [fuser](https://en.wikipedia.org/wiki/Fuser_(Unix))
-
-###### Show which processes use the files/directories
-
-```bash
-fuser /var/log/daemon.log
-fuser -v /home/supervisor
-```
-
-###### Kills a process that is locking a file
-
-```bash
-fuser -ki filename
-```
-
- * `-i` - interactive option
-
-###### Kills a process that is locking a file with specific signal
-
-```bash
-fuser -k -HUP filename
-```
-
- * `--list-signals` - list available signal names
-
-###### Show what PID is listening on specific port
-
-```bash
-fuser -v 53/udp
-```
-
-###### Show all processes using the named filesystems or block device
-
-```bash
-fuser -mv /var/www
-```
-
-___
-
-##### Tool: [lsof](https://en.wikipedia.org/wiki/Lsof)
-
-###### Show process that use internet connection at the moment
-
-```bash
-lsof -P -i -n
-```
-
-###### Show process that use specific port number
-
-```bash
-lsof -i tcp:443
-```
-
-###### Lists all listening ports together with the PID of the associated process
-
-```bash
-lsof -Pan -i tcp -i udp
-```
-
-###### List all open ports and their owning executables
-
-```bash
-lsof -i -P | grep -i "listen"
-```
-
-###### Show all open ports
-
-```bash
-lsof -Pnl -i
-```
-
-###### Show open ports (LISTEN)
-
-```bash
-lsof -Pni4 | grep LISTEN | column -t
-```
-
-###### List all files opened by a particular command
-
-```bash
-lsof -c "process"
-```
-
-###### View user activity per directory
-
-```bash
-lsof -u username -a +D /etc
-```
-
-###### Show 10 largest open files
-
-```bash
-lsof / | \
-awk '{ if($7 > 1048576) print $7/1048576 "MB" " " $9 " " $1 }' | \
-sort -n -u | tail | column -t
-```
-
-###### Show current working directory of a process
-
-```bash
-lsof -p | grep cwd
-```
-
-___
-
-##### Tool: [ps](https://en.wikipedia.org/wiki/Ps_(Unix))
-
-###### Show a 4-way scrollable process tree with full details
-
-```bash
-ps awwfux | less -S
-```
-
-###### Processes per user counter
-
-```bash
-ps hax -o user | sort | uniq -c | sort -r
-```
-
-###### Show all processes by name with main header
-
-```bash
-ps -lfC nginx
-```
-
-___
-
-##### Tool: [find](https://en.wikipedia.org/wiki/Find_(Unix))
-
-###### Find files that have been modified on your system in the past 60 minutes
-
-```bash
-find / -mmin 60 -type f
-```
-
-###### Find all files larger than 20M
-
-```bash
-find / -type f -size +20M
-```
-
-###### Find duplicate files (based on MD5 hash)
-
-```bash
-find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33
-```
-
-###### Change permission only for files
-
-```bash
-cd /var/www/site && find . -type f -exec chmod 766 {} \;
-cd /var/www/site && find . -type f -exec chmod 664 {} +
-```
-
-###### Change permission only for directories
-
-```bash
-cd /var/www/site && find . -type d -exec chmod g+x {} \;
-cd /var/www/site && find . -type d -exec chmod g+rwx {} +
-```
-
-###### Find files and directories for specific user/group
-
-```bash
-# User:
-find . -user -print
-find /etc -type f -user -name "*.conf"
-
-# Group:
-find /opt -group
-find /etc -type f -group -iname "*.conf"
-```
-
-###### Find files and directories for all without specific user/group
-
-```bash
-# User:
-find . \! -user -print
-
-# Group:
-find . \! -group
-```
-
-###### Looking for files/directories that only have certain permission
-
-```bash
-# User
-find . -user -perm -u+rw # -rw-r--r--
-find /home -user $(whoami) -perm 777 # -rwxrwxrwx
-
-# Group:
-find /home -type d -group -perm 755 # -rwxr-xr-x
-```
-
-###### Delete older files than 60 days
-
-```bash
-find . -type f -mtime +60 -delete
-```
-
-###### Recursively remove all empty sub-directories from a directory
-
-```bash
-find . -depth -type d -empty -exec rmdir {} \;
-```
-
-###### How to find all hard links to a file
-
-```bash
-find -xdev -samefile filename
-```
-
-###### Recursively find the latest modified files
-
-```bash
-find . -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head
-```
-
-###### Recursively find/replace of a string with sed
-
-```bash
-find . -not -path '*/\.git*' -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
-```
-
-###### Recursively find/replace of a string in directories and file names
-
-```bash
-find . -depth -name '*test*' -execdir bash -c 'mv -v "$1" "${1//foo/bar}"' _ {} \;
-```
-
-###### Recursively find suid executables
-
-```bash
-find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -la {} \;
-```
-
-___
-
-##### Tool: [top](https://en.wikipedia.org/wiki/Top_(software))
-
-###### Use top to monitor only all processes with the specific string
-
-```bash
-top -p $(pgrep -d , )
-```
-
- * `` - process containing string (eg. nginx, worker)
-
-___
-
-##### Tool: [vmstat](https://en.wikipedia.org/wiki/Vmstat)
-
-###### Show current system utilization (fields in kilobytes)
-
-```bash
-vmstat 2 20 -t -w
-```
-
- * `2` - number of times with a defined time interval (delay)
- * `20` - each execution of the command (count)
- * `-t` - show timestamp
- * `-w` - wide output
- * `-S M` - output of the fields in megabytes instead of kilobytes
-
-###### Show current system utilization will get refreshed every 5 seconds
-
-```bash
-vmstat 5 -w
-```
-
-###### Display report a summary of disk operations
-
-```bash
-vmstat -D
-```
-
-###### Display report of event counters and memory stats
-
-```bash
-vmstat -s
-```
-
-###### Display report about kernel objects stored in slab layer cache
-
-```bash
-vmstat -m
-```
-
-##### Tool: [iostat](https://en.wikipedia.org/wiki/Iostat)
-
-###### Show information about the CPU usage, and I/O statistics about all the partitions
-
-```bash
-iostat 2 10 -t -m
-```
-
- * `2` - number of times with a defined time interval (delay)
- * `10` - each execution of the command (count)
- * `-t` - show timestamp
- * `-m` - fields in megabytes (`-k` - in kilobytes, default)
-
-###### Show information only about the CPU utilization
-
-```bash
-iostat 2 10 -t -m -c
-```
-
-###### Show information only about the disk utilization
-
-```bash
-iostat 2 10 -t -m -d
-```
-
-###### Show information only about the LVM utilization
-
-```bash
-iostat -N
-```
-
-___
-
-##### Tool: [strace](https://en.wikipedia.org/wiki/Strace)
-
-###### Track with child processes
-
-```bash
-# 1)
-strace -f -p $(pidof glusterfsd)
-
-# 2)
-strace -f $(pidof php-fpm | sed 's/\([0-9]*\)/\-p \1/g')
-```
-
-###### Track process with 30 seconds limit
-
-```bash
-timeout 30 strace $(< /var/run/zabbix/zabbix_agentd.pid)
-```
-
-###### Track processes and redirect output to a file
-
-```bash
-ps auxw | grep '[a]pache' | awk '{print " -p " $2}' | \
-xargs strace -o /tmp/strace-apache-proc.out
-```
-
-###### Track with print time spent in each syscall and limit length of print strings
-
-```bash
-ps auxw | grep '[i]init_policy' | awk '{print " -p " $2}' | \
-xargs strace -f -e trace=network -T -s 10000
-```
-
-###### Track the open request of a network port
-
-```bash
-strace -f -e trace=bind nc -l 80
-```
-
-###### Track the open request of a network port (show TCP/UDP)
-
-```bash
-strace -f -e trace=network nc -lu 80
-```
-
-___
-
-##### Tool: [kill](https://en.wikipedia.org/wiki/Kill_(command))
-
-###### Kill a process running on port
-
-```bash
-kill -9 $(lsof -i : | awk '{l=$2} END {print l}')
-```
-
-___
-
-##### Tool: [diff](https://en.wikipedia.org/wiki/Diff)
-
-###### Compare two directory trees
-
-```bash
-diff <(cd directory1 && find | sort) <(cd directory2 && find | sort)
-```
-
-###### Compare output of two commands
-
-```bash
-diff <(cat /etc/passwd) <(cut -f2 /etc/passwd)
-```
-
-___
-
-##### Tool: [vimdiff](http://vimdoc.sourceforge.net/htmldoc/diff.html)
-
-###### Highlight the exact differences, based on characters and words
-
-```bash
-vimdiff file1 file2
-```
-
-###### Compare two JSON files
-
-```bash
-vimdiff <(jq -S . A.json) <(jq -S . B.json)
-```
-
-###### Compare Hex dump
-
-```bash
-d(){ vimdiff <(f $1) <(f $2);};f(){ hexdump -C $1 | cut -d' ' -f3- | tr -s ' ';}; d ~/bin1 ~/bin2
-```
-
-###### diffchar
-
-Save [diffchar](https://raw.githubusercontent.com/vim-scripts/diffchar.vim/master/plugin/diffchar.vim) @ `~/.vim/plugins`
-
-Click `F7` to switch between diff modes
-
-Usefull `vimdiff` commands:
-
-* `qa` to exit all windows
-* `:vertical resize 70` to resize window
-* set window width `Ctrl+W [N columns]+(Shift+)<\>`
-
-___
-
-##### Tool: [tail](https://en.wikipedia.org/wiki/Tail_(Unix))
-
-###### Annotate tail -f with timestamps
-
-```bash
-tail -f file | while read ; do echo "$(date +%T.%N) $REPLY" ; done
-```
-
-###### Analyse an Apache access log for the most common IP addresses
-
-```bash
-tail -10000 access_log | awk '{print $1}' | sort | uniq -c | sort -n | tail
-```
-
-###### Analyse web server log and show only 5xx http codes
-
-```bash
-tail -n 100 -f /path/to/logfile | grep "HTTP/[1-2].[0-1]\" [5]"
-```
-
-___
-
-##### Tool: [tar](https://en.wikipedia.org/wiki/Tar_(computing))
-
-###### System backup with exclude specific directories
-
-```bash
-cd /
-tar -czvpf /mnt/system$(date +%d%m%Y%s).tgz --directory=/ \
---exclude=proc/* --exclude=sys/* --exclude=dev/* --exclude=mnt/* .
-```
-
-###### System backup with exclude specific directories (pigz)
-
-```bash
-cd /
-tar cvpf /backup/snapshot-$(date +%d%m%Y%s).tgz --directory=/ \
---exclude=proc/* --exclude=sys/* --exclude=dev/* \
---exclude=mnt/* --exclude=tmp/* --use-compress-program=pigz .
-```
-
-___
-
-##### Tool: [dump](https://en.wikipedia.org/wiki/Dump_(program))
-
-###### System backup to file
-
-```bash
-dump -y -u -f /backup/system$(date +%d%m%Y%s).lzo /
-```
-
-###### Restore system from lzo file
-
-```bash
-cd /
-restore -rf /backup/system$(date +%d%m%Y%s).lzo
-```
-
-___
-
-##### Tool: [cpulimit](http://cpulimit.sourceforge.net/)
-
-###### Limit the cpu usage of a process
-
-```bash
-cpulimit -p pid -l 50
-```
-
-___
-
-##### Tool: [pwdx](https://www.cyberciti.biz/faq/unix-linux-pwdx-command-examples-usage-syntax/)
-
-###### Show current working directory of a process
-
-```bash
-pwdx
-```
-
-___
-
-##### Tool: [taskset](https://www.cyberciti.biz/faq/taskset-cpu-affinity-command/)
-
-###### Start a command on only one CPU core
-
-```bash
-taskset -c 0
-```
-
-___
-
-##### Tool: [tr](https://en.wikipedia.org/wiki/Tr_(Unix))
-
-###### Show directories in the PATH, one per line
-
-```bash
-tr : '\n' <<<$PATH
-```
-
-___
-
-##### Tool: [chmod](https://en.wikipedia.org/wiki/Chmod)
-
-###### Remove executable bit from all files in the current directory
-
-```bash
-chmod -R -x+X *
-```
-
-###### Restore permission for /bin/chmod
-
-```bash
-# 1:
-cp /bin/ls chmod.01
-cp /bin/chmod chmod.01
-./chmod.01 700 file
-
-# 2:
-/bin/busybox chmod 0700 /bin/chmod
-
-# 3:
-setfacl --set u::rwx,g::---,o::--- /bin/chmod
-```
-
-___
-
-##### Tool: [who](https://en.wikipedia.org/wiki/Who_(Unix))
-
-###### Find last reboot time
-
-```bash
-who -b
-```
-
-###### Detect a user sudo-su'd into the current shell
-
-```bash
-[[ $(who -m | awk '{ print $1 }') == $(whoami) ]] || echo "You are su-ed to $(whoami)"
-```
-
-___
-
-##### Tool: [last](https://www.howtoforge.com/linux-last-command/)
-
-###### Was the last reboot a panic?
-
-```bash
-(last -x -f $(ls -1t /var/log/wtmp* | head -2 | tail -1); last -x -f /var/log/wtmp) | \
-grep -A1 reboot | head -2 | grep -q shutdown && echo "Expected reboot" || echo "Panic reboot"
-```
-
-___
-
-##### Tool: [screen](https://en.wikipedia.org/wiki/GNU_Screen)
-
-###### Start screen in detached mode
-
-```bash
-screen -d -m
-```
-
-###### Attach to an existing screen session
-
-```bash
-screen -r -d
-```
-
-___
-
-##### Tool: [script](https://en.wikipedia.org/wiki/Script_(Unix))
-
-###### Record and replay terminal session
-
-```bash
-### Record session
-# 1)
-script -t 2>~/session.time -a ~/session.log
-
-# 2)
-script --timing=session.time session.log
-
-### Replay session
-scriptreplay --timing=session.time session.log
-```
-
-___
-
-##### Tool: [du](https://en.wikipedia.org/wiki/GNU_Screen)
-
-###### Show 20 biggest directories with 'K M G'
-
-```bash
-du | \
-sort -r -n | \
-awk '{split("K M G",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}' | \
-head -n 20
-```
-
-___
-
-##### Tool: [inotifywait](https://en.wikipedia.org/wiki/GNU_Screen)
-
-###### Init tool everytime a file in a directory is modified
-
-```bash
-while true ; do inotifywait -r -e MODIFY dir/ && ls dir/ ; done;
-```
-
-___
-
-##### Tool: [openssl](https://www.openssl.org/)
-
-###### Testing connection to the remote host
-
-```bash
-echo | openssl s_client -connect google.com:443 -showcerts
-```
-
-###### Testing connection to the remote host (debug mode)
-
-```bash
-echo | openssl s_client -connect google.com:443 -showcerts -tlsextdebug -status
-```
-
-###### Testing connection to the remote host (with SNI support)
-
-```bash
-echo | openssl s_client -showcerts -servername google.com -connect google.com:443
-```
-
-###### Testing connection to the remote host with specific ssl version
-
-```bash
-openssl s_client -tls1_2 -connect google.com:443
-```
-
-###### Testing connection to the remote host with specific ssl cipher
-
-```bash
-openssl s_client -cipher 'AES128-SHA' -connect google.com:443
-```
-
-###### Verify 0-RTT
-
-```bash
-_host="example.com"
-
-cat > req.in << __EOF__
-HEAD / HTTP/1.1
-Host: $_host
-Connection: close
-__EOF__
-
-openssl s_client -connect ${_host}:443 -tls1_3 -sess_out session.pem -ign_eof < req.in
-openssl s_client -connect ${_host}:443 -tls1_3 -sess_in session.pem -early_data req.in
-```
-
-###### Generate private key without passphrase
-
-```bash
-# _len: 2048, 4096
-( _fd="private.key" ; _len="2048" ; \
-openssl genrsa -out ${_fd} ${_len} )
-```
-
-###### Generate private key with passphrase
-
-```bash
-# _ciph: aes128, aes256
-# _len: 2048, 4096
-( _ciph="aes128" ; _fd="private.key" ; _len="2048" ; \
-openssl genrsa -${_ciph} -out ${_fd} ${_len} )
-```
-
-###### Remove passphrase from private key
-
-```bash
-( _fd="private.key" ; _fd_unp="private_unp.key" ; \
-openssl rsa -in ${_fd} -out ${_fd_unp} )
-```
-
-###### Encrypt existing private key with a passphrase
-
-```bash
-# _ciph: aes128, aes256
-( _ciph="aes128" ; _fd="private.key" ; _fd_pass="private_pass.key" ; \
-openssl rsa -${_ciph} -in ${_fd} -out ${_fd_pass}
-```
-
-###### Check private key
-
-```bash
-( _fd="private.key" ; \
-openssl rsa -check -in ${_fd} )
-```
-
-###### Get public key from private key
-
-```bash
-( _fd="private.key" ; _fd_pub="public.key" ; \
-openssl rsa -pubout -in ${_fd} -out ${_fd_pub} )
-```
-
-###### Generate private key and CSR
-
-```bash
-( _fd="private.key" ; _fd_csr="request.csr" ; _len="2048" ; \
-openssl req -out ${_fd_csr} -new -newkey rsa:${_len} -nodes -keyout ${_fd} )
-```
-
-###### Generate CSR
-
-```bash
-( _fd="private.key" ; _fd_csr="request.csr" ; \
-openssl req -out ${_fd_csr} -new -key ${_fd} )
-```
-
-###### Generate CSR (metadata from existing certificate)
-
- > Where `private.key` is the existing private key. As you can see you do not generate this CSR from your certificate (public key). Also you do not generate the "same" CSR, just a new one to request a new certificate.
-
-```bash
-( _fd="private.key" ; _fd_csr="request.csr" ; _fd_crt="cert.crt" ; \
-openssl x509 -x509toreq -in ${_fd_crt} -out ${_fd_csr} -signkey ${_fd} )
-```
-
-###### Generate CSR with -config param
-
-```bash
-( _fd="private.key" ; _fd_csr="request.csr" ; \
-openssl req -new -sha256 -key ${_fd} -out ${_fd_csr} \
--config <(
-cat << __EOF__
-[req]
-default_bits = 2048
-default_md = sha256
-prompt = no
-distinguished_name = dn
-req_extensions = req_ext
-
-[ dn ]
-C = ""
-ST = ""
-L = ""
-O = ""
-OU = ""
-CN = ""
-
-[ req_ext ]
-subjectAltName = @alt_names
-
-[ alt_names ]
-DNS.1 =
-DNS.2 =
-DNS.3 =
-__EOF__
-))
-```
-
-Other values in `[ dn ]`:
-
-```
-countryName = "DE" # C=
-stateOrProvinceName = "Hessen" # ST=
-localityName = "Keller" # L=
-postalCode = "424242" # L/postalcode=
-postalAddress = "Keller" # L/postaladdress=
-streetAddress = "Crater 1621" # L/street=
-organizationName = "apfelboymschule" # O=
-organizationalUnitName = "IT Department" # OU=
-commonName = "example.com" # CN=
-emailAddress = "webmaster@example.com" # CN/emailAddress=
-```
-
-Example of `oids` (you'll probably also have to make OpenSSL know about the new fields required for EV by adding the following under `[new_oids]`):
-
-```
-[req]
-...
-oid_section = new_oids
-
-[ new_oids ]
-postalCode = 2.5.4.17
-streetAddress = 2.5.4.9
-```
-
-Full example:
-
-```bash
-( _fd="private.key" ; _fd_csr="request.csr" ; \
-openssl req -new -sha256 -key ${_fd} -out ${_fd_csr} \
--config <(
-cat << __EOF__
-[req]
-default_bits = 2048
-default_md = sha256
-prompt = no
-distinguished_name = dn
-req_extensions = req_ext
-oid_section = new_oids
-
-[ new_oids ]
-serialNumber = 2.5.4.5
-streetAddress = 2.5.4.9
-postalCode = 2.5.4.17
-businessCategory = 2.5.4.15
-
-[ dn ]
-serialNumber=00001111
-businessCategory=Private Organization
-jurisdictionC=DE
-C=DE
-ST=Hessen
-L=Keller
-postalCode=424242
-streetAddress=Crater 1621
-O=AV Company
-OU=IT
-CN=example.com
-
-[ req_ext ]
-subjectAltName = @alt_names
-
-[ alt_names ]
-DNS.1 = example.com
-__EOF__
-))
-```
-
-For more information please look at these great explanations:
-
-- [RFC 5280](https://tools.ietf.org/html/rfc5280)
-- [How to create multidomain certificates using config files](https://apfelboymchen.net/gnu/notes/openssl%20multidomain%20with%20config%20files.html)
-- [Generate a multi domains certificate using config files](https://gist.github.com/romainnorberg/464758a6620228b977212a3cf20c3e08)
-- [Your OpenSSL CSR command is out of date](https://expeditedsecurity.com/blog/openssl-csr-command/)
-- [OpenSSL example configuration file](https://www.tbs-certificats.com/openssl-dem-server-cert.cnf)
-- [Object Identifiers (OIDs)](https://www.alvestrand.no/objectid/)
-- [openssl objects.txt](https://github.com/openssl/openssl/blob/master/crypto/objects/objects.txt)
-
-###### List available EC curves
-
-```bash
-openssl ecparam -list_curves
-```
-
-###### Print ECDSA private and public keys
-
-```bash
-( _fd="private.key" ; \
-openssl ec -in ${_fd} -noout -text )
-
-# For x25519 only extracting public key
-( _fd="private.key" ; _fd_pub="public.key" ; \
-openssl pkey -in ${_fd} -pubout -out ${_fd_pub} )
-```
-
-###### Generate ECDSA private key
-
-```bash
-# _curve: prime256v1, secp521r1, secp384r1
-( _fd="private.key" ; _curve="prime256v1" ; \
-openssl ecparam -out ${_fd} -name ${_curve} -genkey )
-
-# _curve: X25519
-( _fd="private.key" ; _curve="x25519" ; \
-openssl genpkey -algorithm ${_curve} -out ${_fd} )
-```
-
-###### Generate private key and CSR (ECC)
-
-```bash
-# _curve: prime256v1, secp521r1, secp384r1
-( _fd="domain.com.key" ; _fd_csr="domain.com.csr" ; _curve="prime256v1" ; \
-openssl ecparam -out ${_fd} -name ${_curve} -genkey ; \
-openssl req -new -key ${_fd} -out ${_fd_csr} -sha256 )
-```
-
-###### Generate self-signed certificate
-
-```bash
-# _len: 2048, 4096
-( _fd="domain.key" ; _fd_out="domain.crt" ; _len="2048" ; _days="365" ; \
-openssl req -newkey rsa:${_len} -nodes \
--keyout ${_fd} -x509 -days ${_days} -out ${_fd_out} )
-```
-
-###### Generate self-signed certificate from existing private key
-
-```bash
-# _len: 2048, 4096
-( _fd="domain.key" ; _fd_out="domain.crt" ; _days="365" ; \
-openssl req -key ${_fd} -nodes \
--x509 -days ${_days} -out ${_fd_out} )
-```
-
-###### Generate self-signed certificate from existing private key and csr
-
-```bash
-# _len: 2048, 4096
-( _fd="domain.key" ; _fd_csr="domain.csr" ; _fd_out="domain.crt" ; _days="365" ; \
-openssl x509 -signkey ${_fd} -nodes \
--in ${_fd_csr} -req -days ${_days} -out ${_fd_out} )
-```
-
-###### Generate DH public parameters
-
-```bash
-( _dh_size="2048" ; \
-openssl dhparam -out /etc/nginx/ssl/dhparam_${_dh_size}.pem "$_dh_size" )
-```
-
-###### Display DH public parameters
-
-```bash
-openssl pkeyparam -in dhparam.pem -text
-```
-
-###### Extract private key from pfx
-
-```bash
-( _fd_pfx="cert.pfx" ; _fd_key="key.pem" ; \
-openssl pkcs12 -in ${_fd_pfx} -nocerts -nodes -out ${_fd_key} )
-```
-
-###### Extract private key and certs from pfx
-
-```bash
-( _fd_pfx="cert.pfx" ; _fd_pem="key_certs.pem" ; \
-openssl pkcs12 -in ${_fd_pfx} -nodes -out ${_fd_pem} )
-```
-
-###### Extract certs from p7b
-
-```bash
-# PKCS#7 file doesn't include private keys.
-( _fd_p7b="cert.p7b" ; _fd_pem="cert.pem" ; \
-openssl pkcs7 -inform DER -outform PEM -in ${_fd_p7b} -print_certs > ${_fd_pem})
-# or:
-openssl pkcs7 -print_certs -in -in ${_fd_p7b} -out ${_fd_pem})
-```
-
-###### Convert DER to PEM
-
-```bash
-( _fd_der="cert.crt" ; _fd_pem="cert.pem" ; \
-openssl x509 -in ${_fd_der} -inform der -outform pem -out ${_fd_pem} )
-```
-
-###### Convert PEM to DER
-
-```bash
-( _fd_der="cert.crt" ; _fd_pem="cert.pem" ; \
-openssl x509 -in ${_fd_pem} -outform der -out ${_fd_der} )
-```
-
-###### Verification of the private key
-
-```bash
-( _fd="private.key" ; \
-openssl rsa -noout -text -in ${_fd} )
-```
-
-###### Verification of the public key
-
-```bash
-# 1)
-( _fd="public.key" ; \
-openssl pkey -noout -text -pubin -in ${_fd} )
-
-# 2)
-( _fd="private.key" ; \
-openssl rsa -inform PEM -noout -in ${_fd} &> /dev/null ; \
-if [ $? = 0 ] ; then echo -en "OK\n" ; fi )
-```
-
-###### Verification of the certificate
-
-```bash
-( _fd="certificate.crt" ; # format: pem, cer, crt \
-openssl x509 -noout -text -in ${_fd} )
-```
-
-###### Verification of the CSR
-
-```bash
-( _fd_csr="request.csr" ; \
-openssl req -text -noout -in ${_fd_csr} )
-```
-
-###### Check the private key and the certificate are match
-
-```bash
-(openssl rsa -noout -modulus -in private.key | openssl md5 ; \
-openssl x509 -noout -modulus -in certificate.crt | openssl md5) | uniq
-```
-
-###### Check the private key and the CSR are match
-
-```bash
-(openssl rsa -noout -modulus -in private.key | openssl md5 ; \
-openssl req -noout -modulus -in request.csr | openssl md5) | uniq
-```
-
-___
-
-##### Tool: [secure-delete](https://wiki.archlinux.org/index.php/Securely_wipe_disk)
-
-###### Secure delete with shred
-
-```bash
-shred -vfuz -n 10 file
-shred --verbose --random-source=/dev/urandom -n 1 /dev/sda
-```
-
-###### Secure delete with scrub
-
-```bash
-scrub -p dod /dev/sda
-scrub -p dod -r file
-```
-
-###### Secure delete with badblocks
-
-```bash
-badblocks -s -w -t random -v /dev/sda
-badblocks -c 10240 -s -w -t random -v /dev/sda
-```
-
-###### Secure delete with secure-delete
-
-```bash
-srm -vz /tmp/file
-sfill -vz /local
-sdmem -v
-swapoff /dev/sda5 && sswap -vz /dev/sda5
-```
-
-___
-
-##### Tool: [dd](https://en.wikipedia.org/wiki/Dd_(Unix))
-
-###### Show dd status every so often
-
-```bash
-dd status=progress
-watch --interval 5 killall -USR1 dd
-```
-
-###### Redirect output to a file with dd
-
-```bash
-echo "string" | dd of=filename
-```
-
-___
-
-##### Tool: [gpg](https://www.gnupg.org/)
-
-###### Export public key
-
-```bash
-gpg --export --armor "" > username.pkey
-```
-
- * `--export` - export all keys from all keyrings or specific key
- * `-a|--armor` - create ASCII armored output
-
-###### Encrypt file
-
-```bash
-gpg -e -r "" dump.sql
-```
-
- * `-e|--encrypt` - encrypt data
- * `-r|--recipient` - encrypt for specific
-
-###### Decrypt file
-
-```bash
-gpg -o dump.sql -d dump.sql.gpg
-```
-
- * `-o|--output` - use as output file
- * `-d|--decrypt` - decrypt data (default)
-
-###### Search recipient
-
-```bash
-gpg --keyserver hkp://keyserver.ubuntu.com --search-keys ""
-```
-
- * `--keyserver` - set specific key server
- * `--search-keys` - search for keys on a key server
-
-###### List all of the packets in an encrypted file
-
-```bash
-gpg --batch --list-packets archive.gpg
-gpg2 --batch --list-packets archive.gpg
-```
-
-___
-
-##### Tool: [system-other](https://github.com/trimstray/the-book-of-secret-knowledge#tool-system-other)
-
-###### Reboot system from init
-
-```bash
-exec /sbin/init 6
-```
-
-###### Init system from single user mode
-
-```bash
-exec /sbin/init
-```
-
-###### Show current working directory of a process
-
-```bash
-readlink -f /proc//cwd
-```
-
-###### Show actual pathname of the executed command
-
-```bash
-readlink -f /proc//exe
-```
-
-##### Tool: [curl](https://curl.haxx.se)
-
-```bash
-curl -Iks https://www.google.com
-```
-
- * `-I` - show response headers only
- * `-k` - insecure connection when using ssl
- * `-s` - silent mode (not display body)
-
-```bash
-curl -Iks --location -X GET -A "x-agent" https://www.google.com
-```
-
- * `--location` - follow redirects
- * `-X` - set method
- * `-A` - set user-agent
-
-```bash
-curl -Iks --location -X GET -A "x-agent" --proxy http://127.0.0.1:16379 https://www.google.com
-```
-
- * `--proxy [socks5://|http://]` - set proxy server
-
-```bash
-curl -o file.pdf -C - https://example.com/Aiju2goo0Ja2.pdf
-```
-
- * `-o` - write output to file
- * `-C` - resume the transfer
-
-###### Find your external IP address (external services)
-
-```bash
-curl ipinfo.io
-curl ipinfo.io/ip
-curl icanhazip.com
-curl ifconfig.me/ip ; echo
-```
-
-###### Repeat URL request
-
-```bash
-# URL sequence substitution with a dummy query string:
-curl -ks https://example.com/?[1-20]
-
-# With shell 'for' loop:
-for i in {1..20} ; do curl -ks https://example.com/ ; done
-```
-
-###### Check DNS and HTTP trace with headers for specific domains
-
-```bash
-### Set domains and external dns servers.
-_domain_list=(google.com) ; _dns_list=("8.8.8.8" "1.1.1.1")
-
-for _domain in "${_domain_list[@]}" ; do
-
- printf '=%.0s' {1..48}
-
- echo
-
- printf "[\\e[1;32m+\\e[m] resolve: %s\\n" "$_domain"
-
- for _dns in "${_dns_list[@]}" ; do
-
- # Resolve domain.
- host "${_domain}" "${_dns}"
-
- echo
-
- done
-
- for _proto in http https ; do
-
- printf "[\\e[1;32m+\\e[m] trace + headers: %s://%s\\n" "$_proto" "$_domain"
-
- # Get trace and http headers.
- curl -Iks -A "x-agent" --location "${_proto}://${_domain}"
-
- echo
-
- done
-
-done
-
-unset _domain_list _dns_list
-```
-
-___
-
-##### Tool: [httpie](https://httpie.org/)
-
-```bash
-http -p Hh https://www.google.com
-```
-
- * `-p` - print request and response headers
- * `H` - request headers
- * `B` - request body
- * `h` - response headers
- * `b` - response body
-
-```bash
-http -p Hh https://www.google.com --follow --verify no
-```
-
- * `-F, --follow` - follow redirects
- * `--verify no` - skip SSL verification
-
-```bash
-http -p Hh https://www.google.com --follow --verify no \
---proxy http:http://127.0.0.1:16379
-```
-
- * `--proxy [http:]` - set proxy server
-
-##### Tool: [ssh](https://www.openssh.com/)
-
-###### Escape Sequence
-
-```
-# Supported escape sequences:
-~. - terminate connection (and any multiplexed sessions)
-~B - send a BREAK to the remote system
-~C - open a command line
-~R - Request rekey (SSH protocol 2 only)
-~^Z - suspend ssh
-~# - list forwarded connections
-~& - background ssh (when waiting for connections to terminate)
-~? - this message
-~~ - send the escape character by typing it twice
-```
-
-###### Compare a remote file with a local file
-
-```bash
-ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
-```
-
-###### SSH connection through host in the middle
-
-```bash
-ssh -t reachable_host ssh unreachable_host
-```
-
-###### Run command over SSH on remote host
-
-```bash
-cat > cmd.txt << __EOF__
-cat /etc/hosts
-__EOF__
-
-ssh host -l user $(&1 | tee -a "${_sesdir}/$(date +%Y%m%d).log"
-
-}
-
-# Alias:
-alias ssh='_ssh_sesslog'
-```
-
-###### Using Keychain for SSH logins
-
-```bash
-### Delete all of ssh-agent's keys.
-function _scl() {
-
- /usr/bin/keychain --clear
-
-}
-
-### Add key to keychain.
-function _scg() {
-
- /usr/bin/keychain /path/to/private-key
- source "$HOME/.keychain/$HOSTNAME-sh"
-
-}
-```
-
-###### SSH login without processing any login scripts
-
-```bash
-ssh -tt user@host bash
-```
-
-###### SSH local port forwarding
-
-Example 1:
-
-```bash
-# Forwarding our local 2250 port to nmap.org:443 from localhost through localhost
-host1> ssh -L 2250:nmap.org:443 localhost
-
-# Connect to the service:
-host1> curl -Iks --location -X GET https://localhost:2250
-```
-
-Example 2:
-
-```bash
-# Forwarding our local 9051 port to db.d.x:5432 from localhost through node.d.y
-host1> ssh -nNT -L 9051:db.d.x:5432 node.d.y
-
-# Connect to the service:
-host1> psql -U db_user -d db_dev -p 9051 -h localhost
-```
-
- * `-n` - redirects stdin from `/dev/null`
- * `-N` - do not execute a remote command
- * `-T` - disable pseudo-terminal allocation
-
-###### SSH remote port forwarding
-
-```bash
-# Forwarding our local 9051 port to db.d.x:5432 from host2 through node.d.y
-host1> ssh -nNT -R 9051:db.d.x:5432 node.d.y
-
-# Connect to the service:
-host2> psql -U postgres -d postgres -p 8000 -h localhost
-```
-
-___
-
-##### Tool: [linux-dev](https://www.tldp.org/LDP/abs/html/devref1.html)
-
-###### Testing remote connection to port
-
-```bash
-timeout 1 bash -c "//" >/dev/null 2>&1 ; echo $?
-```
-
- * `` - set remote host
- * `` - set destination port
-
-###### Read and write to TCP or UDP sockets with common bash tools
-
-```bash
-exec 5<>/dev/tcp//; cat <&5 & cat >&5; exec 5>&-
-```
-
-___
-
-##### Tool: [tcpdump](http://www.tcpdump.org/)
-
-###### Filter incoming (on interface) traffic (specific )
-
-```bash
-tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443
-```
-
- * `-n` - don't convert addresses (`-nn` will not resolve hostnames or ports)
- * `-e` - print the link-level headers
- * `-i [iface|any]` - set interface
- * `-Q|-D [in|out|inout]` - choose send/receive direction (`-D` - for old tcpdump versions)
- * `host [ip|hostname]` - set host, also `[host not]`
- * `[and|or]` - set logic
- * `port [1-65535]` - set port number, also `[port not]`
-
-###### Filter incoming (on interface) traffic (specific ) and write to a file
-
-```bash
-tcpdump -ne -i eth0 -Q in host 192.168.252.1 and port 443 -c 5 -w tcpdump.pcap
-```
-
- * `-c [num]` - capture only num number of packets
- * `-w [filename]` - write packets to file, `-r [filename]` - reading from file
-
-###### Capture all ICMP packets
-
-```bash
-tcpdump -nei eth0 icmp
-```
-
-###### Check protocol used (TCP or UDP) for service
-
-```bash
-tcpdump -nei eth0 tcp port 22 -vv -X | egrep "TCP|UDP"
-```
-
-###### Display ASCII text (to parse the output using grep or other)
-
-```bash
-tcpdump -i eth0 -A -s0 port 443
-```
-
-###### Grab everything between two keywords
-
-```bash
-tcpdump -i eth0 port 80 -X | sed -n -e '/username/,/=ldap/ p'
-```
-
-###### Grab user and pass ever plain http
-
-```bash
-tcpdump -i eth0 port http -l -A | egrep -i \
-'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' \
---color=auto --line-buffered -B20
-```
-
-###### Extract HTTP User Agent from HTTP request header
-
-```bash
-tcpdump -ei eth0 -nn -A -s1500 -l | grep "User-Agent:"
-```
-
-###### Capture only HTTP GET and POST packets
-
-```bash
-tcpdump -ei eth0 -s 0 -A -vv \
-'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' or 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
-```
-
-or simply:
-
-```bash
-tcpdump -ei eth0 -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
-```
-
-###### Rotate capture files
-
-```bash
-tcpdump -ei eth0 -w /tmp/capture-%H.pcap -G 3600 -C 200
-```
-
- * `-G ` - pcap will be created every `` seconds
- * `-C ` - close the current pcap and open a new one if is larger than ``
-
-###### Top hosts by packets
-
-```bash
-tcpdump -ei enp0s25 -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20
-```
-
-###### Excludes any RFC 1918 private address
-
-```bash
-tcpdump -nei eth0 'not (src net (10 or 172.16/12 or 192.168/16) and dst net (10 or 172.16/12 or 192.168/16))'
-```
-
-___
-
-##### Tool: [tcpick](http://tcpick.sourceforge.net/)
-
-###### Analyse packets in real-time
-
-```bash
-while true ; do tcpick -a -C -r dump.pcap ; sleep 2 ; clear ; done
-```
-
-___
-
-##### Tool: [ngrep](http://ngrep.sourceforge.net/usage.html)
-
-```bash
-ngrep -d eth0 "www.domain.com" port 443
-```
-
- * `-d [iface|any]` - set interface
- * `[domain]` - set hostname
- * `port [1-65535]` - set port number
-
-```bash
-ngrep -d eth0 "www.domain.com" src host 10.240.20.2 and port 443
-```
-
- * `(host [ip|hostname])` - filter by ip or hostname
- * `(port [1-65535])` - filter by port number
-
-```bash
-ngrep -d eth0 -qt -O ngrep.pcap "www.domain.com" port 443
-```
-
- * `-q` - quiet mode (only payloads)
- * `-t` - added timestamps
- * `-O [filename]` - save output to file, `-I [filename]` - reading from file
-
-```bash
-ngrep -d eth0 -qt 'HTTP' 'tcp'
-```
-
- * `HTTP` - show http headers
- * `tcp|udp` - set protocol
- * `[src|dst] host [ip|hostname]` - set direction for specific node
-
-```bash
-ngrep -l -q -d eth0 -i "User-Agent: curl*"
-```
-
- * `-l` - stdout line buffered
- * `-i` - case-insensitive search
-
-___
-
-##### Tool: [hping3](http://www.hping.org/)
-
-```bash
-hping3 -V -p 80 -s 5050 www.google.com
-```
-
- * `-V|--verbose` - verbose mode
- * `-p|--destport` - set destination port
- * `-s|--baseport` - set source port
- * `` - set scan type
- * `-F|--fin` - set FIN flag, port open if no reply
- * `-S|--syn` - set SYN flag
- * `-P|--push` - set PUSH flag
- * `-A|--ack` - set ACK flag (use when ping is blocked, RST response back if the port is open)
- * `-U|--urg` - set URG flag
- * `-Y|--ymas` - set Y unused flag (0x80 - nullscan), port open if no reply
- * `-M 0 -UPF` - set TCP sequence number and scan type (URG+PUSH+FIN), port open if no reply
-
-```bash
-hping3 -V -c 1 -1 -C 8 www.google.com
-```
-
- * `-c [num]` - packet count
- * `-1` - set ICMP mode
- * `-C|--icmptype [icmp-num]` - set icmp type (default icmp-echo = 8)
-
-```bash
-hping3 -V -c 1000000 -d 120 -S -w 64 -p 80 --flood --rand-source
-```
-
- * `--flood` - sent packets as fast as possible (don't show replies)
- * `--rand-source` - random source address mode
- * `-d --data` - data size
- * `-w|--win` - winsize (default 64)
-
-___
-
-##### Tool: [nmap](https://nmap.org/)
-
-###### Ping scans the network
-
-```bash
-nmap -sP 192.168.0.0/24
-```
-
-###### Show only open ports
-
-```bash
-nmap -F --open 192.168.0.0/24
-```
-
-###### Full TCP port scan using with service version detection
-
-```bash
-nmap -p 1-65535 -sV -sS -T4 192.168.0.0/24
-```
-
-###### Nmap scan and pass output to Nikto
-
-```bash
-nmap -p80,443 192.168.0.0/24 -oG - | nikto.pl -h -
-```
-
-###### Recon specific ip:service with Nmap NSE scripts stack
-
-```bash
-# Set variables:
-_hosts="192.168.250.10"
-_ports="80,443"
-
-# Set Nmap NSE scripts stack:
-_nmap_nse_scripts="+dns-brute,\
- +http-auth-finder,\
- +http-chrono,\
- +http-cookie-flags,\
- +http-cors,\
- +http-cross-domain-policy,\
- +http-csrf,\
- +http-dombased-xss,\
- +http-enum,\
- +http-errors,\
- +http-git,\
- +http-grep,\
- +http-internal-ip-disclosure,\
- +http-jsonp-detection,\
- +http-malware-host,\
- +http-methods,\
- +http-passwd,\
- +http-phpself-xss,\
- +http-php-version,\
- +http-robots.txt,\
- +http-sitemap-generator,\
- +http-shellshock,\
- +http-stored-xss,\
- +http-title,\
- +http-unsafe-output-escaping,\
- +http-useragent-tester,\
- +http-vhosts,\
- +http-waf-detect,\
- +http-waf-fingerprint,\
- +http-xssed,\
- +traceroute-geolocation.nse,\
- +ssl-enum-ciphers,\
- +whois-domain,\
- +whois-ip"
-
-# Set Nmap NSE script params:
-_nmap_nse_scripts_args="dns-brute.domain=${_hosts},http-cross-domain-policy.domain-lookup=true,"
-_nmap_nse_scripts_args+="http-waf-detect.aggro,http-waf-detect.detectBodyChanges,"
-_nmap_nse_scripts_args+="http-waf-fingerprint.intensive=1"
-
-# Perform scan:
-nmap --script="$_nmap_nse_scripts" --script-args="$_nmap_nse_scripts_args" -p "$_ports" "$_hosts"
-```
-
-___
-
-##### Tool: [netcat](http://netcat.sourceforge.net/)
-
-```bash
-nc -kl 5000
-```
-
- * `-l` - listen for an incoming connection
- * `-k` - listening after client has disconnected
- * `>filename.out` - save receive data to file (optional)
-
-```bash
-nc 192.168.0.1 5051 < filename.in
-```
-
- * `< filename.in` - send data to remote host
-
-```bash
-nc -vz 10.240.30.3 5000
-```
-
- * `-v` - verbose output
- * `-z` - scan for listening daemons
-
-```bash
-nc -vzu 10.240.30.3 1-65535
-```
-
- * `-u` - scan only udp ports
-
-###### Transfer data file (archive)
-
-```bash
-server> nc -l 5000 | tar xzvfp -
-client> tar czvfp - /path/to/dir | nc 10.240.30.3 5000
-```
-
-###### Launch remote shell
-
-```bash
-# 1)
-server> nc -l 5000 -e /bin/bash
-client> nc 10.240.30.3 5000
-
-# 2)
-server> rm -f /tmp/f; mkfifo /tmp/f
-server> cat /tmp/f | /bin/bash -i 2>&1 | nc -l 127.0.0.1 5000 > /tmp/f
-client> nc 10.240.30.3 5000
-```
-
-###### Simple file server
-
-```bash
-while true ; do nc -l 5000 | tar -xvf - ; done
-```
-
-###### Simple minimal HTTP Server
-
-```bash
-while true ; do nc -l -p 1500 -c 'echo -e "HTTP/1.1 200 OK\n\n $(date)"' ; done
-```
-
-###### Simple HTTP Server
-
- > Restarts web server after each request - remove `while` condition for only single connection.
-
-```bash
-cat > index.html << __EOF__
-
-
-
-
-
-
-
-
-
-
-
-
- Hello! It's a site.
-
-
-
-
-