#!/bin/bash
## DOWNLOADED FROM https://git.ncltech.co.uk/phil/.dotfiles
# My Alias
# Custom ffmpeg shortcuts
# mp4 to mp3
alias mp4-mp3-folder='for vid in *.mp4; do ffmpeg -i "$vid" -f mp3 -ab 320000 "${vid%.mp4}.mp3"; done'
alias mp4-mp3='mp4mp3(){ ffmpeg -i "$1" -f mp3 -ab 320000 "${1%.mp4}.mp3"; unset -f mp4mp3;}; mp4mp3'
# mkv to mp4
alias mkv-mp4-folder='for vid in *.mkv; do ffmpeg -i "$vid" -vcodec copy -acodec copy "${vid%.mkv}.mp4"; done'
alias mkv-mp4='mkvmp4(){ ffmpeg -i "$1" "${1%.mkv}.mp4"; unset -f mkvmp4;}; mkvmp4' 
# mkv to mp3
alias mkv-mp3-folder='for vid in *.mkv; do ffmpeg -i "$vid" -vn -c:a libmp3lame -y "${vid%.mkv}.mp3"; done'
alias mkv-mp3='mkvmp3(){ ffmpeg -i "$1" -vn -c:a libmp3lame -y "${1%.mkv}.mp3"; unset -f mkvmp3;}; mkvmp3'
# flac to mp3
alias flac-mp3='flacmp3(){ ffmpeg -i "$1" -ab 320k -map_metadata 0 -id3v2_version 3 "${1%.flac}.mp3"; unset -f flacmp3;}; flacmp3'
alias flac-mp3-folder='for flac in *.flac; do ffmpeg -i "$flac" -ab 320k -map_metadata 0 -id3v2_version 3 "${flac%.flac}.mp3"; done'
# webm to mp3
alias webm-mp3='webmmp3(){ ffmpeg -i "$1" -vn -ab 128k -ar 44100 -y "${1%.webm}.mp3"; unset -f webmmp3;}; webmmp3'
alias webm-mp3-folder='for webm in *.webm; do ffmpeg -i "$webm" -ab 320k -map_metadata 0 -id3v2_version 3 "${webm%.webm}.mp3"; done'
# avi to mp4
alias avi-mp4-folder='for vid in *.avi; do ffmpeg -i "$vid" -c:v copy -c:a copy -y "${vid%.avi}.mp4"; done'
alias avi-mp4='avimp4(){ ffmpeg -i "$1" -c:v copy -c:a copy -y  "${1%.avi}.mp4"; unset -f avimp4;}; avimp4' 
# When you get bored
alias telnet-starwars='telnet towel.blinkenlights.nl'
alias nethack-online='ssh nethack@nethack.alt.org ; clear'
alias tron-online='ssh sshtron.zachlatta.com ; clear'
# My IP Info
alias myip='curl -s https://ipv4.am.i.mullvad.net/json | jq'
alias ports-in-use='sudo lsof -i -P -n | grep LISTEN'
# Typo
alias whosi='whois'
alias gti='git'
alias dc='cd'
# Custom
alias untar='tar xvf'
alias nano='vim'
alias nanoo='/usr/bin/nano'
alias svim='sudo vim'
alias del='shred -f -n 30 -z -u -v'
alias del-quick='shred -f -n 3 -z -u -v'
#amass
alias amass-subdomain='domain(){ /opt/amass/amass enum -passive -d "$1" -r 1.1.1.1 9.9.9.9 8.8.8.8 >> /opt/amass-scans/"$1".txt; unset -f domain;}; domain'
#SAV Command
alias sav-start='sudo service sav-protect start'
alias sav-stop='sudo service sav-protect stop'
# wget Shortcuts
alias get-nordserverlist="wget https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip"
alias get-wp6="wget https://git.ncltech.co.uk/Phil/hak5_WiFi_Pineapple_NANO_Tools/raw/commit/b97f2cdae7d0df34f659f199b5a71e448f2f79d5/wp6.sh"
# Hack the Box
alias htb-vpn-starting_point='sudo openvpn ~/CTF/HTB/vpn/starting_point_NCLtech.ovpn'
alias htb-vpn-lab-vip1='sudo openvpn ~/CTF/HTB/vpn/lab_NCLtech-EU-VIP1.ovpn'
alias htb-vpn-lab-vip2='sudo openvpn ~/CTF/HTB/vpn/lab_NCLtech-EU-VIP2.ovpn'
alias htb-folder='cd ~/git/CTF/HTB/'
# TryHackMe
alias thm-vpn='sudo openvpn ~/CTF/THM/vpn/NCLtech.ovpn'
alias thm-network-wreath='sudo openvpn ~/CTF/THM/vpn/NCLtech-wreath.ovpn'
alias thm-folder='cd ~/git/CTF/THM'
# Enable aliases to be sudo’ed
alias sudo='sudo '
# View HTTP traffic
function sniff() {
  sudo ngrep -d $(ip route | grep '^default' | awk '{print $5}') -t '^(GET|POST) ' 'tcp and port 80'
}
function httpdump() {
  sudo tcpdump -i $(ip route | grep '^default' | awk '{print $5}') -n -s 0 -w - | grep -a -o -E \"Host\\: .*|GET \\/.*\"
}
# Start-msfconsole
function mfsconsole-start(){
if [ -d "/opt/sophos-av" ];then
    	    sudo service sav-protect stop >> /dev/null
    	    msfconsole
    	else 
    	   msfconsole
   fi
}
# nmap-basic
function nmap-initial() {
  if [ -d "./nmap" ];then
			sudo nmap -sC -sV -oA ./nmap/initial $1 -v
	else
			mkdir ./nmap
			sudo nmap -sC -sV -oA ./nmap/initial $1 -v
fi
}
# nmap-basic
function nmap-allports() {
  if [ -d "./nmap" ];then
			sudo nmap -sC -p- -oA "./nmap/$1-allports" $1 -v
	else
			mkdir ./nmap
			sudo nmap -sC -p- -oA "./nmap/$1-allports" $1 -v
fi
}
# Wireshark Shortcuts
alias wireshark-pfsense="sudo su -c 'wireshark -k -i <(ssh root@192.168.0.3 -p 2222 tcpdump -i lagg0 -U -w - )'"
alias wireshark-pfsense-lab="sudo su -c 'wireshark -k -i <(ssh root@10.74.85.11 -p 2222 tcpdump -i xn0 host not 192.168.120.27 -U -w - )'"
# Git Functions
function gpm() {
  if [ "$(grep -c '\[branch "master"\]' .git/config )" -gt 0 ]; then
    git push origin master
  elif [ "$(grep -c '\[branch "main"\]' .git/config )" -gt 0 ]; then
    git push origin main
  else
    echo "fatal: not a git repository (or any of the parent directories): .git"
  fi
}
function gac() {
if [ -d ".git" ]; then
echo "Log Message: "
read logmessage
git add --all && git commit --allow-empty-message -m "$logmessage"
else
echo "No .git Folder found in Directory. Are you in the Correct Folder?"
fi
}
# Pull all Git repos in this dir
function pullall() {
  for dir in * ; do
    # Execute in subshell
    (
      cd "$dir" || exit 1
      # If it's a git directory, then update it
       if test -d .git; then
	# Check if its Master or Main
        if [ "$(grep -c -i ""master"" .git/config )" -gt 0 ]; then
         echo "$dir is a Git repo. Pulling master branch..." && git checkout master && git pull && echo ""
       
      elif [ "$(grep -c -i ""main"" .git/config )" -gt 0 ]; then
        echo "$dir is a Git repo. Pulling main branch..." && git checkout main && git pull && echo ""
               fi
      else
        echo "$dir is not a Git repo." && echo ""
      fi
    )
 done
}
# Pull Dotfiles inside ~/.dotfiles/
function pulldots() {
  # Check if folders are there and if its Master or Main
  if grep -q -i "master" ~/.dotfiles/.git/config; then
    CURRENTDIR=$(pwd)
    echo "dotfiles Found, Pulling master branch..."
    cd ~/.dotfiles/
    git checkout master
    git pull
    cd "$CURRENTDIR"
    echo ""
    
  elif grep -q -i "main" ~/.dotfiles/.git/config; then
    CURRENTDIR=$(pwd)
    echo "dotfiles Found, Pulling main branch..."
    cd ~/.dotfiles/
    git checkout main
    git pull
    cd "$CURRENTDIR"
    echo ""
    
  else
    echo "I can't seem to file any dotfiles folders" && echo ""
  fi
}
## UPDATE FUNCTIONS
## Update Snaps
function update_snap() {
sudo -v
   # if command -v snap >/dev/null; then
   # echo "Updating Snaps..."
   # sudo snap refresh
    if [[ -f "/usr/bin/snapctl" ]];then
	    echo "Updating Snaps..."
	    sudo snap refresh
	else
	 echo "No Snap Found"
  fi
 
}
## Update Flatpak
function update_flatpak() {
sudo -v
    if [[ -f "/usr/bin/flatpak" ]];then
	    echo "Updating Flatpaks..."
	    sudo flatpak update
	else
	 echo "No Flatpak Found"
  fi
}
## Updates packages for all Linux Distros
function update_linux() {
sudo -v	
  
## Parrot OS
if [ "$(grep -c "parrot" /etc/os-release)" -gt 0 ]; then
    echo "Updating Apt Packages..."
    	  if [ -d "/opt/sophos-av" ];then
    	    sudo service sav-protect stop >> /dev/null
    	    sudo parrot-upgrade -y && sudo apt full-upgrade -y
    	    sudo service sav-protect start >> /dev/null
    	else 
    	   sudo parrot-upgrade -y && sudo apt full-upgrade -y
	
  fi
##Kali
elif [ "$(grep -c "kali" /etc/os-release)" -gt 0 ]; then
    echo "Updating Apt Packages..."
    	  if [ -d "/opt/sophos-av" ];then
    	    sudo service sav-protect stop >> /dev/null
    	    sudo apt update && sudo apt --autoremove full-upgrade -y
    	    sudo service sav-protect start >> /dev/null
    	else 
    	    sudo apt update && sudo apt --autoremove full-upgrade -y	
  fi
## Debian
elif [ "$(grep -c "debian" /etc/os-release)" -gt 0 ]; then
    echo "Updating Apt Packages..."
    	  if [ -d "/opt/sophos-av" ];then
    	    sudo service sav-protect stop >> /dev/null
    	    sudo apt clean && sudo apt update && sudo apt full-upgrade -y
    	    sudo service sav-protect start >> /dev/null
    	else 
    	    sudo apt clean && sudo apt update && sudo apt full-upgrade -y	
  fi
  
##Arch
elif [ "$(grep -c "arch" /etc/os-release)" -gt 0 ]; then
      echo "Updating Pacman Packages"
          if [ -d "/opt/sophos-av" ];then
	         sudo service sav-protect stop >> /dev/null
	         sudo pacman -Syy -y $$ && sudo -v && sudo pacman -Syu -y && sudo pacman --noconfirm -R $(pacman -Qdtq)
	         sudo service sav-protect start >> /dev/null
	    else 
	       pacmanorphan=$(sudo pacman -Qdt)
	       sudo pacman -Syy -y && sudo -v && sudo pacman -Syu -y && sudo pacman --noconfirm -R $(pacman -Qdtq)
  fi
  
## Fedora
elif [ "$(grep -c "fedora" /etc/os-release)" -gt 0 ]; then
  echo "Updating DNF Packages"
  if [ -d "/opt/sophos-av" ];then
    sudo service sav-protect stop >> /dev/null
    sudo dnf update -y && sudo dnf autoremove -y
    sudo service sav-protect start >> /dev/null
  else 
    sudo dnf update -y && sudo dnf autoremove -y
  fi
else
    echo "No apt or pacman found. I guess you're out of luck"
  fi
}
## Update All package managers
function update() {
## Update Snaps
update_snap
## Update Flatpaks
update_flatpak
## Update Linux
update_linux
}
# Decrypt pfSence backup configs # pfdecrypt 'File-in'  'File-out'  'Password'
pfdecrypt() {
cat "$1" | sed -e '1d' -e '$d' | base64 -d | openssl enc -d -aes-256-cbc -md md5 -out "$2" -k "$3"
}
# Extract Function
extract() {
  if [ ! -f "$1" ];
  then
   printf '"%s" is not a valid file.' "$1"
   exit 1
  fi
 
  case $1 in
   *.tar.bz2)  tar xjf "$1"    ;;
   *.tar.gz)   tar xzf "$1"    ;;
   *.bz2)      bunzip2 "$1"    ;;
   *.rar)      unrar x "$1"    ;;
   *.gz)       gunzip "$1"     ;;
   *.tar)      tar xf "$1"     ;;
   *.tbz2)     tar xjf "$1"    ;;
   *.tgz)      tar xzf "$1"    ;;
   *.zip)      unzip "$1"      ;;
   *.Z)        uncompress "$1" ;;
   *.7z)       7z x "$1"       ;;
   *.deb)      ar x "$1"       ;;
   *.tar.xz)   tar xf "$1"     ;;
   *)          printf 'cannot extract "%s" with extract()' "$1" ;;
   esac
 }
# Disable ipv6
function ipv6-disable() {
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo  sysctl -w net.ipv6.conf.default.disable_ipv6=1
}
# Enable ipv6
function ipv6-enable() {
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
}
# Start CyberChef
alias cyberchef="open /opt/cyberchef/cyberchef.sh"
# Local IP  lookup
alias ips="ip a | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'"
alias eth0="ip a s eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
alias eth1="ip a s eth1 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
alias wlan0="ip a s wlan0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
alias wlan1="ip a s wlan1 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
alias tun0="ip a s tun0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
alias tun1="ip a s tun1 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'"
# Sublist3r
alias sublist3r="python3 /opt/Sublist3r/sublist3r.py"
# Get PentestMonkey Reverse php Shell
alias phpshell='wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php -O "shell.php"'
# Start reverse_shell_generator
alias reverse-shell-gen-start='docker start a2f132aa528a; open http://localhost:3321'
alias reverse-shell-gen-stop='docker stop a2f132aa528a'
# WG quick gen
alias wg-gen="wg genkey | sudo tee ~/wg/"$1"-priv | wg pubkey | sudo tee ~/wg/"$1"-pub"
# Wireguard - TheHomeTunnel
alias thehometunnel-up="sudo wg-quick up TheHomeTunnel"
alias thehometunnel-down="sudo wg-quick down TheHomeTunnel"
# Wireguard - C2-Gateway1
alias c2-gateway1-up="sudo wg-quick up C2-Gateway1"
alias c2-gateway1-down="sudo wg-quick down C2-Gateway1"
# windirstat shortcut for ncdu
alias windirstat="ncdu"
#What OS
alias os='cat /etc/os-release'
## My Domains Expiry dates - Add list of domains to ~/.domains/domains.txt
function my-domains()
{
lines=$(cat ~/.domains/domains.txt);for domain in $lines; do echo "$(whois $domain | grep -i 'Expiry date:')" -  $domain; done
}
## Change Default Shell
alias shell="cat /etc/shells"
alias set-shell-bash="chsh -s /usr/bin/bash"
alias set-shell-zsh="chsh -s /usr/bin/zsh"
alias set-shell-tmux="chsh -s /usr/bin/tmux"
## Get Costco Fuel Price
function costco-fuel-price {
## Get website data with curl
costco_gateshead_site=$(curl -s https://www.costco.co.uk/store-finder/Gateshead)
## Grep text from website for different fuel
costco_diesel=$(echo $costco_gateshead_site | grep -oP '"gas-title">Premium Diesel \K.*' | grep -oE '^.{5}')
costco_premium_unleaded=$(echo $costco_gateshead_site | grep -oP '"gas-title">Premium Unleaded Petrol \K.*' | grep -oE '^.{5}')
costco_unleaded=$(echo $costco_gateshead_site | grep -oP '"gas-title">Unleaded Petrol \K.*' | grep -oE '^.{5}')
## Print fuel prices
echo "Premium Diesel - $costco_diesel p"
echo "Premium Unleaded - $costco_premium_unleaded p"
echo "Unleaded - $costco_unleaded p"
}
## Curl Dump1090 data from scanner
alias fr24feed="curl --http0.9 192.168.10.21:30003 --output -"
alias fr24feed-dump1090="sh -c 'dump1090-mutability --net --net-only --net-bi-port 30004 --interactive & nc 192.168.10.21 30005 | nc 127.0.0.1 30004'
"
## Subnet Table
function subnet-table() {
echo " --------------------------------------------------------------------------"
echo "| Bit Length |  Max Hosts  |   Subnet Mask   | Binary Mask | Mask Length |"
echo "--------------------------------------------------------------------------"
echo "|     0      |     1       | 255.255.255.255 |  11111111   |      32     |"
echo "|     0      |     2       | 255.255.255.254 |  11111110   |      31     |"
echo "|     0      |     4       | 255.255.255.252 |  11111100   |      30     |"
echo "|     0      |     8       | 255.255.255.248 |  11111000   |      29     |"
echo "|     0      |     16      | 255.255.255.240 |  11110000   |      28     |"
echo "|     0      |     32      | 255.255.255.224 |  11100000   |      27     |"
echo "|     0      |     64      | 255.255.255.192 |  11000000   |      26     |"
echo "|     0      |     128     | 255.255.255.128 |  10000000   |      25     |"
echo "|     0      |     256     | 255.255.255.0   |  11111111   |      24     |"
echo "|     0      |     512     | 255.255.254.0   |  11111110   |      23     |"
echo "|     0      |     1024    | 255.255.252.0   |  11111100   |      22     |"
echo "|     0      |     2048    | 255.255.248.0   |  11111000   |      21     |"
echo "|     0      |     4096    | 255.255.240.0   |  11110000   |      20     |"
echo "|     0      |     8192    | 255.255.224.0   |  11100000   |      19     |"
echo "|     0      |     16384   | 255.255.192.0   |  11000000   |      18     |"
echo "|     0      |     32768   | 255.255.128.0   |  10000000   |      17     |"
echo "|     0      |     65536   | 255.255.0.0     |  11111111   |      16     |"
echo "|     0      |     131072  | 255.255.0.0     |  11111110   |      15     |"
echo "|     0      |     262144  | 255.254.0.0     |  11111100   |      14     |"
echo "|     0      |     524288  | 255.252.0.0     |  11111000   |      13     |"
echo "|     0      |     1048576 | 255.240.0.0     |  11110000   |      12     |"
echo "|     0      |     2097152 | 255.224.0.0     |  11100000   |      11     |"
echo "|     0      |     4194304 | 255.192.0.0     |  11000000   |      10     |"
echo "|     0      |     8388608 | 255.128.0.0     |  10000000   |      9      |"
echo "|     0      |     16777216| 255.0.0.0       |  11111111   |      8      |"
echo "--------------------------------------------------------------------------"
}
## Check AbuseIPdb
abuseip_check() {
ip="$1"
abuseipdb_api_key="$HOME/.api/.abuseipdb_api_key"
    if [ ! -f "$abuseipdb_api_key" ]; then
        echo "API key file not found at $abuseipdb_api_key"
        return 1
    fi
    api_key=$(cat "$abuseipdb_api_key")
    if [ -z "$ip" ]; then
        echo "Usage: abuseip_check "
        return 1
    fi
    curl --silent -G https://api.abuseipdb.com/api/v2/check \
        --data-urlencode "ipAddress=$ip" \
        -d maxAgeInDays=90 \
        -d verbose \
        -H "Key: $api_key" \
        -H "Accept: application/json" | jq
}
## Pi Temp
alias temp="vcgencmd measure_temp"
## Lookup IP
alias iplookup='iplookup-get(){ curl "ip.nclte.ch/json?ip=$1"; unset -f iplookup-get; }; iplookup-get'
## Make random dir
alias mkdir-random='mkdir $(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 50 | head -n 1) && echo "Directory created: $(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 50 | head -n 1)"'
## Display all commands in this Alias file
alias my-alias="cat ~/.aliases | grep -oP 'alias\s\K[^=]+' | sort -n"