34 stable releases
| 1.1.51 | Oct 30, 2024 |
|---|---|
| 1.1.47 | Oct 26, 2024 |
| 1.0.2 | Aug 25, 2024 |
#157 in Cryptography
2,168 downloads per month
1MB
383 lines
SHAD3
SHAD3 is an application using SHA3-512 to hash entries in a list or multiple lists, typically those made for Pi-hole. This is designed for SHATTER and similar applications or addons. Ideally, it serves to maintain the confidentiality of blocked content, which may include exploitative or abusive websites.
Example Usage
shad3 <blocklist-url-or-path> [output-path]
Installation Options with Architecture Detection
Binary Installation (Recommended)
Pre-built binaries are available in the releases section. The following one-liners automatically detect the CPU architecture and download the correct binary:
Linux Binary
ARCH=$(uname -m) && case $ARCH in 'x86_64') BIN=shad3-linux_x86_64.tar.gz ;; 'aarch64') BIN=shad3-linux_aarch64.tar.gz ;; *) echo "Unsupported architecture: $ARCH" && exit 1 ;; esac && curl -LO https://github.com/styromaniac/shad3/releases/latest/download/$BIN && tar -xzf $BIN && chmod +x shad3 && sudo mv shad3 /usr/local/bin && rm -rf $BIN
macOS Binary
ARCH=$(uname -m) && case $ARCH in 'x86_64') BIN=shad3-macos_x86_64.tar.gz ;; 'aarch64') BIN=shad3-macos_aarch64.tar.gz ;; *) echo "Unsupported architecture: $ARCH" && exit 1 ;; esac && curl -LO https://github.com/styromaniac/shad3/releases/latest/download/$BIN && tar -xzf $BIN && chmod +x shad3 && sudo mv shad3 /usr/local/bin && rm -rf $BIN
Windows Binary (PowerShell)
$ARCH = (Get-WmiObject Win32_Processor).Architecture
if ($ARCH -eq 9) {
$BIN = 'shad3-windows_x86_64.zip'
} elseif ($ARCH -eq 5) {
$BIN = 'shad3-windows_aarch64.zip'
} else {
Write-Host "Unsupported architecture: $ARCH" -ForegroundColor Red
exit
}
Invoke-WebRequest -Uri "https://github.com/styromaniac/shad3/releases/latest/download/$BIN" -OutFile $BIN
Expand-Archive -Path $BIN -DestinationPath .
Move-Item -Path .\shad3.exe -Destination "$env:ProgramFiles\shad3.exe"
Remove-Item -Recurse -Force $BIN
Termux Binary
ARCH=$(uname -m) && case $ARCH in 'x86_64') BIN=shad3-termux_x86_64.zip ;; 'aarch64') BIN=shad3-termux_aarch64.zip ;; *) echo "Unsupported architecture: $ARCH" && exit 1 ;; esac && curl -LO https://github.com/styromaniac/shad3/releases/latest/download/$BIN && unzip $BIN && chmod +x shad3 && mv shad3 ~/../usr/bin && rm -rf $BIN
Installation from Source
These one-liners download, build using Cargo, install, and clean up for each environment. They utilize Rust utilities and commands (cargo) where applicable, and account for Linux package managers. For Termux, rustup is avoided by using pkg to install Rust.
Linux Source
# Detect package manager and install Rust
if command -v apt &> /dev/null; then
sudo apt update && sudo apt install -y build-essential curl git cargo
elif command -v dnf &> /dev/null; then
sudo dnf install -y @development-tools curl git cargo
elif command -v pacman &> /dev/null; then
sudo pacman -Syu --noconfirm base-devel curl git cargo
else
echo "Unsupported package manager. Please install Rust and Cargo manually."
exit 1
fi && # Install SHAD3 using Cargo
cargo install shad3 && # Ensure Cargo bin directory is in PATH
export PATH="$HOME/.cargo/bin:$PATH" && # Optionally move the binary to a system-wide location
sudo cp ~/.cargo/bin/shad3 /usr/local/bin/
macOS Source
# Install Homebrew if not installed
if ! command -v brew &> /dev/null; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi && # Install Rust and Cargo using Homebrew
brew install rust && # Install SHAD3 using Cargo
cargo install shad3 && # Ensure Cargo bin directory is in PATH
export PATH="$HOME/.cargo/bin:$PATH" && # Optionally move the binary to a system-wide location
sudo cp ~/.cargo/bin/shad3 /usr/local/bin/
Windows Source (PowerShell)
# Install Rust using Cargo via Chocolatey
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
Set-ExecutionPolicy Bypass -Scope Process -Force;
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
}
choco install -y rustup.install && refreshenv && rustup default stable && # Install SHAD3 using Cargo
cargo install shad3 && # Move the binary to a system-wide location
Move-Item -Path "$env:USERPROFILE\.cargoin\shad3.exe" -Destination "$env:ProgramFiles\shad3.exe"
Termux Source
# Update packages and install Rust via pkg (avoiding rustup)
pkg update && pkg install -y rust git unzip && # Install SHAD3 using Cargo
cargo install shad3 && # Move the binary to a system-wide location
mv ~/.cargo/bin/shad3 ~/../usr/bin
Verification
After installation, verify with:
shad3
You should see the usage information for SHAD3, confirming a successful installation.
Platform Compatibility
SHAD3 is compatible with the following:
- Operating Systems: Linux, macOS, Windows, Termux (Android/ChromeOS)
- Architectures: x86-64, ARM64
Troubleshooting
If you encounter any issues during installation or use, please check:
- Dependencies and Build Tools:
- Linux/macOS: Ensure
curl,tar, andsudoare installed. - Windows: Ensure PowerShell is updated and has necessary permissions.
- Termux: Ensure
curl,tar,unzip, andrustare installed viapkg.
- Linux/macOS: Ensure
- Path Configuration:
- Verify the binary is added to your
PATHif using a direct download or Cargo installation.
- Verify the binary is added to your
- Rust-related Issues:
- For source installations, ensure Rust and Cargo are correctly installed and accessible.
- Consult the Rust documentation for issues related to
cargoor the Rust toolchain.
Notes:
- Rust Installation:
- For Linux, macOS, and Windows, the from source installation one-liners utilize the respective package managers to install Rust and Cargo, ensuring compatibility with the system's package management.
- For Termux, since
rustupis not available, Rust is installed via the package manager (pkg), and the environment is set up accordingly.
Dependencies
~13–31MB
~385K SLoC