.
675 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | tool_name=kali-whoami
2 |
3 | src_dir=/usr/share
4 | trigger_dir=/usr/bin
5 |
6 | install:
7 |
8 | install -m 755 kali-whoami $(trigger_dir)
9 | mkdir -p $(src_dir)/$(tool_name)/backups
10 | cp -vr assets $(src_dir)/$(tool_name)
11 | cp -vr $(src_dir)/$(tool_name)/assets/kali-whoami.desktop /usr/share/kali-menu/applications/
12 | mv -v $(src_dir)/$(tool_name)/assets/kali-whoami.desktop /usr/share/applications/
13 |
14 |
15 | uninstall:
16 |
17 | rm -Rf $(trigger_dir)/$(tool_name)
18 | rm -Rf $(src_dir)/$(tool_name)
19 | rm -Rf $(src_dir)/kali-menu/applications/kali-whoami.desktop
20 | rm -Rf $(src_dir)/applications/kali-whoami.desktop
21 |
22 | reinstall:
23 |
24 | rm -Rf $(trigger_dir)/$(tool_name)
25 | rm -Rf $(src_dir)/$(tool_name)
26 | rm -Rf $(src_dir)/kali-menu/applications/kali-whoami.desktop
27 | rm -Rf $(src_dir)/applications/kali-whoami.desktop
28 | install -m 755 kali-whoami $(trigger_dir)
29 | mkdir -p $(src_dir)/$(tool_name)/backups
30 | cp -vr assets $(src_dir)/$(tool_name)
31 | cp -vr $(src_dir)/$(tool_name)/assets/kali-whoami.desktop /usr/share/kali-menu/applications/
32 | mv -vr $(src_dir)/$(tool_name)/assets/kali-whoami.desktop /usr/share/applications/
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Whoami - Enhanced Privacy and Anonymity for Debian and Arch-based Linux Distributions
9 |
10 |
11 |
12 | Feature Request |
13 | Report a Bug
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | ---
32 |
33 |
34 | ## About the Project
35 |
36 | Whoami is a user-friendly privacy and anonymity tool designed for Debian and Arch-based Linux distributions. With its simple interface and ease of use, it leverages **9+ powerful modules** to ensure the highest level of anonymity. The tool also includes a **Bug Fixer** module (currently in development) to solve issues without user intervention.
37 |
38 | > **Note:** While Whoami enhances your anonymity, remember there is no such thing as 100% security on the internet!
39 |
40 | For detailed documentation, visit the official website: [Whoami Project](https://owerdogan.github.io/whoami-project).
41 |
42 | ---
43 |
44 |
45 | ## Modules
46 |
47 | | Module Name | Description |
48 | |-----------------------|-----------------------------------------------------------------------------|
49 | | **Anti MITM** | Automatically bans attackers during Man-In-The-Middle (MITM) attacks. |
50 | | **Log Killer** | Securely deletes system log files using the overwrite method. |
51 | | **IP Changer** | Redirects all network traffic through a Tor transparent proxy. |
52 | | **DNS Changer** | Replaces default ISP DNS servers with privacy-focused alternatives. |
53 | | **MAC Changer** | Randomizes the MAC address for all network interfaces. |
54 | | **Anti Cold Boot** | Prevents RAM dumps by securely deleting sensitive traces. |
55 | | **Timezone Changer** | Sets system time to UTC to avoid location leaks through timestamps. |
56 | | **Hostname Changer** | Randomizes the hostname to hide system identity. |
57 | | **Browser Anonymization** | Configures your browser for maximum privacy. |
58 |
59 | For an in-depth explanation of each module, see the [Documentation](https://whoamiproject.tech).
60 |
61 | ---
62 |
63 |
64 | ## Getting Started
65 |
66 | Before installing Whoami, ensure your system is updated and has the required dependencies installed. Use the following command to update your system and install the necessary packages:
67 |
68 | ```bash
69 | sudo apt update && sudo apt install tar tor curl python3 python3-scapy network-manager
70 | ```
71 |
72 | ### Installation
73 |
74 | 1. Clone the repository:
75 | ```bash
76 | git clone https://github.com/owerdogan/whoami-project
77 | ```
78 |
79 | 2. Install the tool using the Makefile:
80 | ```bash
81 | sudo make install
82 | ```
83 |
84 | That's it! You're now ready to use Whoami.
85 |
86 | ### Usage
87 |
88 | You can start using the tool via the GUI or the terminal. Run the following command for a list of available options:
89 |
90 | ```bash
91 | sudo kali-whoami --help
92 | ```
93 |
94 | | Parameter | Description |
95 | |--------------|--------------------------------------------|
96 | | `--start` | Makes backups and starts the program. |
97 | | `--stop` | Closes the program and restores backups. |
98 | | `--status` | Displays the current working status. |
99 | | `--fix` | Repairs the system in case of a bug. |
100 | | `--help` | Shows the help menu with all commands. |
101 |
102 | ---
103 |
104 |
105 | ## Upcoming Release
106 |
107 | 
108 |
109 |
110 |
111 | ## License
112 |
113 | Distributed under the **GPL v3 License**. See the [LICENSE](https://github.com/owerdogan/whoami-project/blob/main/LICENSE) file for more information.
114 |
115 | ---
116 |
--------------------------------------------------------------------------------
/assets/icons/kali-whoami.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/owerdogan/whoami-project/e461ea906a91272a7aafa76c2968c84c2a7a5f22/assets/icons/kali-whoami.png
--------------------------------------------------------------------------------
/assets/kali-whoami.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=Kali Whoami
3 | Encoding=UTF-8
4 | Exec=/usr/share/kali-menu/exec-in-shell "sudo kali-whoami --help"
5 | Icon=/usr/share/kali-whoami/assets/icons/kali-whoami.png
6 | StartupNotify=false
7 | Terminal=true
8 | Type=Application
9 | X-Kali-Package=kali-whoami
--------------------------------------------------------------------------------
/assets/scripts/anti_cold_boot:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_anti_cold_boot(){
4 |
5 | swapoff -a
6 | swapon -a
7 | echo 1024 >/proc/sys/vm/min_free_kbytes
8 | echo 3 >/proc/sys/vm/drop_caches
9 | echo 1 >/proc/sys/vm/oom_kill_allocating_task
10 | echo 1 >/proc/sys/vm/overcommit_memory
11 | echo 0 >/proc/sys/vm/oom_dump_tasks
12 | info "Anti cold boot successfully enabled"
13 |
14 | }
--------------------------------------------------------------------------------
/assets/scripts/anti_mitm:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | from scapy.all import Ether, ARP, srp, sniff, conf, os, subprocess
4 | def get_mac(ip):
5 | p = Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)
6 | result = srp(p, timeout=3, verbose=False)[0]
7 | return result[0][1].hwsrc
8 | def process(packet):
9 | if packet.haslayer(ARP):
10 | if packet[ARP].op == 2:
11 | try:
12 | real_mac = get_mac(packet[ARP].psrc)
13 | response_mac = packet[ARP].hwsrc
14 | if real_mac != response_mac:
15 | os.system("iptables -A INPUT -m mac --mac-source " + response_mac + " -j DROP")
16 | except IndexError:
17 | pass
18 | sniff(store=False, prn=process)
--------------------------------------------------------------------------------
/assets/scripts/browser_anonymization:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_browser_anonymization(){
4 |
5 | source /usr/share/kali-whoami/assets/sources/config
6 |
7 | # check and configure browser anonymity settings
8 | if [[ "$browser_anonymization_status" == "Disable" ]]; then
9 | if [ -d /etc/firefox-esr ]; then
10 | cp $SRCDIR/sources/whoami.js /etc/firefox-esr/
11 | sed -i 's/browser_anonymization_status="Disable"/browser_anonymization_status="Enable"/g' $SRCDIR/sources/config
12 | info "Browser anonymization successfully enabled"
13 | else
14 | warn "Browser anonymization only supports firefox and firefox not found on your system"
15 | fi
16 | else
17 | warn "Browser anonymization is already running"
18 | fi
19 |
20 | }
21 |
22 | stop_browser_anonymization(){
23 |
24 | source /usr/share/kali-whoami/assets/sources/config
25 | rm -fr /etc/firefox-esr/whoami.js
26 | sed -i 's/browser_anonymization_status="Enable"/browser_anonymization_status="Disable"/g' $SRCDIR/sources/config
27 | info "Browser anonymization successfully disabled"
28 |
29 | }
--------------------------------------------------------------------------------
/assets/scripts/dns_changer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_dns_changer(){
4 |
5 | source /usr/share/kali-whoami/assets/sources/config
6 |
7 | if [[ "$ip_changer_status" == "Disable" ]]; then
8 |
9 | #backup and configure nameservers
10 | if [[ "$dns_changer_status" == "Disable" ]]; then
11 |
12 | cat /etc/resolv.conf > $BACKUPDIR/resolv.conf.bak
13 | cat >"/etc/resolv.conf" < /etc/resolv.conf && rm -fr $BACKUPDIR/resolv.conf.bak
36 | sed -i 's/dns_changer_status="Enable"/dns_changer_status="Disable"/g' $SRCDIR/sources/config
37 | info "Dns changer successfully disabled"
38 |
39 | }
--------------------------------------------------------------------------------
/assets/scripts/fix:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | get_backups(){
4 |
5 | cat /etc/resolv.conf > $BACKUPDIR/resolv.conf.bak
6 | cat /etc/hostname > $BACKUPDIR/hostname.bak
7 | cat $TORRC > $BACKUPDIR/torrc.bak
8 | iptables-save > $BACKUPDIR/iptables.rules.bak
9 | mkdir $BACKUPDIR/mac_addresses
10 | IFACES=$(ip -o link show | awk -F': ' '{print $2}')
11 | for IFACE in $IFACES; do
12 | if [ $IFACE != "lo" ]; then
13 | cat /sys/class/net/$IFACE/address > $BACKUPDIR/mac_addresses/$IFACE
14 | fi
15 | done
16 | timedatectl show | grep Timezone | sed 's/Timezone=//g' > $BACKUPDIR/timezone.bak
17 | cd $BACKUPDIR && tar -czf whoami_fix_backups.tar.gz *
18 | rm -fr $BACKUPDIR/*.bak $BACKUPDIR/mac_addresses
19 |
20 | }
21 |
22 | restore_system(){
23 |
24 | rm -fr $BACKUPDIR/*.bak $BACKUPDIR/mac_addresses && cd $BACKUPDIR && tar -xzf $BACKUPDIR/whoami_fix_backups.tar.gz
25 | cat $BACKUPDIR/resolv.conf.bak > /etc/resolv.conf
26 | cat $BACKUPDIR/hostname.bak > /etc/hostname
27 | cat $BACKUPDIR/torrc.bak > /etc/tor/torrc
28 | iptables-restore <$BACKUPDIR/iptables.rules.bak
29 | for device in $(ls $BACKUPDIR/mac_addresses) ; do
30 | ip link set $device down
31 | ip link set $device address $(cat $BACKUPDIR/mac_addresses/$device)
32 | ip link set $device up
33 | done
34 | restore_timezone=$(cat $BACKUPDIR/timezone.bak) && timedatectl set-timezone $restore_timezone
35 | rm -fr $BACKUPDIR/*.bak $BACKUPDIR/mac_addresses
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/assets/scripts/hostname_changer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_hostname_changer(){
4 |
5 | if [[ "$hostname_changer_status" == "Disable" ]]; then
6 |
7 | source /usr/share/kali-whoami/assets/sources/config
8 | #backup hostname and change
9 | cat /etc/hostname > $BACKUPDIR/hostname.bak
10 |
11 | array[0]="Windows10-Enterprise "
12 | array[1]="Windows10-Pro"
13 | array[2]="Windows10-Enterprise-LTSC "
14 | array[3]="Windows8.1O-EM"
15 | array[4]="Windows8-Enterprise"
16 | array[5]="Windows8.1-Pro"
17 | array[6]="Windows7-Professional"
18 | array[7]="Windows7-Enterprise"
19 | array[8]="Windows7-Ultimate"
20 | array[9]="Windows-Vista-Business"
21 | array[10]="WindowsXP-Professional"
22 | array[11]="macOS11"
23 | array[12]="OSX10.11"
24 | array[13]="MacBook-Air"
25 | array[14]="MacBook"
26 | array[15]="MacBook-Pro"
27 |
28 | size=${#array[@]}
29 | index=$(($RANDOM % $size))
30 |
31 | echo "${array[$index]}" > /etc/hostname
32 | sed -i 's/hostname_changer_status="Disable"/hostname_changer_status="Enable"/g' $SRCDIR/sources/config
33 | info "Hostname changer successfully enabled"
34 | else
35 | warn "Hostname changer is already running"
36 | fi
37 |
38 | }
39 |
40 | stop_hostname_changer(){
41 |
42 | source /usr/share/kali-whoami/assets/sources/config
43 | cat $BACKUPDIR/hostname.bak > /etc/hostname && rm -fr $BACKUPDIR/hostname.bak
44 | sed -i 's/hostname_changer_status="Enable"/hostname_changer_status="Disable"/g' $SRCDIR/sources/config
45 | info "Hostname changer successfully disabled"
46 |
47 | }
--------------------------------------------------------------------------------
/assets/scripts/ip_changer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_ip_changer(){
4 |
5 | source /usr/share/kali-whoami/assets/sources/config
6 |
7 | if [[ "$dns_changer_status" == "Disable" ]]; then
8 |
9 | # backup and configuring transparent proxy for tor
10 | if [[ "$ip_changer_status" == "Disable" ]]; then
11 | cat $TORRC > $BACKUPDIR/torrc.bak
12 | cat /etc/resolv.conf > $BACKUPDIR/resolv.conf.bak
13 | iptables-save > $BACKUPDIR/iptables.rules.bak
14 |
15 | iptables -F
16 | iptables -X
17 | iptables -t nat -F
18 | iptables -t nat -X
19 | iptables -t nat -A OUTPUT -d 10.192.0.0/10 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
20 | iptables -t nat -A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
21 | iptables -t nat -A OUTPUT -m owner --uid-owner $tor_uid -j RETURN
22 | iptables -t nat -A OUTPUT -o lo -j RETURN
23 |
24 | for lan in 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16; do
25 | iptables -t nat -A OUTPUT -d $lan -j RETURN
26 | done
27 |
28 | iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
29 | iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
30 | iptables -A INPUT -i lo -j ACCEPT
31 | iptables -A INPUT -j DROP
32 | iptables -A FORWARD -j DROP
33 | iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
34 | iptables -A OUTPUT -m state --state INVALID -j DROP
35 | iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
36 | iptables -A OUTPUT -m owner --uid-owner $tor_uid -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j ACCEPT
37 | iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT
38 | iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 9040 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
39 | iptables -A OUTPUT -j DROP
40 | iptables -P INPUT DROP
41 | iptables -P FORWARD DROP
42 | iptables -P OUTPUT DROP
43 |
44 | cat >"/etc/tor/torrc" <"/etc/resolv.conf" </dev/null 2>&1; then
59 | systemctl stop tor.service
60 | fi
61 |
62 | sysctl -w net.ipv6.conf.all.disable_ipv6=1 &> /dev/null
63 | sysctl -w net.ipv6.conf.default.disable_ipv6=1 &> /dev/null
64 | systemctl start tor.service &>/dev/null
65 | sed -i 's/ip_changer_status="Disable"/ip_changer_status="Enable"/g' $SRCDIR/sources/config
66 | info "Ip changer successfully enabled"
67 |
68 | else
69 | warn "Ip changer is already running"
70 | fi
71 | else
72 | warn "The Ip changer is not available. (Dns changer enabled)"
73 | fi
74 |
75 | }
76 |
77 | stop_ip_changer(){
78 |
79 | source /usr/share/kali-whoami/assets/sources/config
80 |
81 | iptables -F
82 | iptables -X
83 | iptables -t nat -F
84 | iptables -t nat -X
85 | iptables -P INPUT ACCEPT
86 | iptables -P FORWARD ACCEPT
87 | iptables -P OUTPUT ACCEPT
88 | systemctl stop tor.service
89 | iptables-restore <$BACKUPDIR/iptables.rules.bak
90 | sysctl -w net.ipv6.conf.all.disable_ipv6=0 &> /dev/null
91 | sysctl -w net.ipv6.conf.default.disable_ipv6=0 &> /dev/null
92 |
93 | cat $BACKUPDIR/torrc.bak > $TORRC && cat $BACKUPDIR/resolv.conf.bak > /etc/resolv.conf && rm -fr $BACKUPDIR/resolv.conf.bak $BACKUPDIR/torrc.bak $BACKUPDIR/iptables.rules.bak
94 | sed -i 's/ip_changer_status="Enable"/ip_changer_status="Disable"/g' $SRCDIR/sources/config
95 | info "Ip changer successfully disabled"
96 |
97 | }
--------------------------------------------------------------------------------
/assets/scripts/log_killer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_log_killer(){
4 |
5 | log_list=( "/var/log/messages" "/var/log/auth.log" "/var/log/kern.log" "/var/log/cron.log" "/var/log/maillog" "/var/log/boot.log" "/var/log/mysqld.log" "/var/log/secure" "/var/log/utmp" "/var/log/wtmp " "/var/log/yum.log" "/var/log/system.log" "/var/log/DiagnosticMessages" "~/.zsh_history" "~/.bash_history")
6 |
7 | for log in ${log_list[@]}; do
8 | if [ -f "$log" ];then
9 | shred -vfzu $log && :> $log
10 | fi
11 | done &>/dev/null
12 | info "Log killer successfully enabled"
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/assets/scripts/mac_changer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_mac_changer(){
4 |
5 | source /usr/share/kali-whoami/assets/sources/config
6 |
7 | if [[ "$mac_changer_status" == "Disable" ]]; then
8 |
9 | # backup mac addresses
10 | if [ ! -d $BACKUPDIR/mac_addresses ];then
11 | mkdir $BACKUPDIR/mac_addresses
12 | fi
13 | IFACES=$(ip -o link show | awk -F': ' '{print $2}')
14 | for IFACE in $IFACES; do
15 | if [ $IFACE != "lo" ]; then
16 | cat /sys/class/net/$IFACE/address > $BACKUPDIR/mac_addresses/$IFACE
17 | fi
18 | done
19 |
20 | # check virtual machine and change mac address
21 | IFACES=$(ip -o link show | awk -F': ' '{print $2}')
22 |
23 | changer_func(){
24 | while :
25 | do
26 | command &&
27 | RAND_MAC() {
28 |
29 | gen() {
30 | NUM="$(tr -dc '0-9a-f' /dev/null; then
56 | if nmcli dev | grep wifi &>/dev/null; then
57 | for IFACE in $IFACES; do
58 | if [ $IFACE != "lo" ] && [ $IFACE != "eth0" ]; then
59 | changer_funcs
60 | fi
61 | done
62 | else
63 | warn "The virtual machine was detected, but no network interface was found to be suitable for changing mac addresses"
64 | fi
65 | else
66 | for IFACE in $IFACES; do
67 | if [ $IFACE != "lo" ] ; then
68 | changer_func
69 | fi
70 | done
71 | fi
72 | else
73 | warn "Mac changer is already running"
74 | fi
75 | }
76 |
77 |
78 | stop_mac_changer(){
79 |
80 | source /usr/share/kali-whoami/assets/sources/config
81 | for device in $(ls $BACKUPDIR/mac_addresses) ; do
82 | ip link set $device down
83 | ip link set $device address $(cat $BACKUPDIR/mac_addresses/$device)
84 | ip link set $device up
85 | done
86 | rm -fr $BACKUPDIR/backups/mac_addresses && sed -i 's/mac_changer_status="Enable"/mac_changer_status="Disable"/g' $SRCDIR/sources/config
87 | info "Mac successfully disabled"
88 |
89 | }
90 |
--------------------------------------------------------------------------------
/assets/scripts/timezone_changer:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | start_timezone_changer(){
4 |
5 | source /usr/share/kali-whoami/assets/sources/config
6 |
7 | if [[ "$timezone_changer_status" == "Disable" ]]; then
8 |
9 | timedatectl show | grep Timezone | sed 's/Timezone=//g' > $BACKUPDIR/timezone.bak
10 | timedatectl set-timezone UTC &> /dev/null
11 | sed -i 's/timezone_changer_status="Disable"/timezone_changer_status="Enable"/g' $SRCDIR/sources/config
12 | info "Timezone changer successfully enabled"
13 | else
14 | warn "Timezone changer is already running"
15 |
16 | fi
17 | }
18 |
19 | stop_timezone_changer(){
20 |
21 | source /usr/share/kali-whoami/assets/sources/config
22 | restore_timezone=$(cat $BACKUPDIR/timezone.bak) && timedatectl set-timezone $restore_timezone && rm -fr $BACKUPDIR/timezone.bak
23 | sed -i 's/timezone_changer_status="Enable"/timezone_changer_status="Disable"/g' $SRCDIR/sources/config
24 | info "Timezone changer successfully disabled"
25 | }
--------------------------------------------------------------------------------
/assets/sources/config:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # colors
4 | RESET="\e[0m"
5 | YELLOW="\e[33m"
6 | BOLD="\e[1m"
7 | RED="\e[31m"
8 | GREEN='\033[0;36m'
9 | BLUE='\033[1;32m'
10 | BLUEB='\033[30;106m'
11 |
12 | # backup dir
13 | BACKUPDIR="/usr/share/kali-whoami/backups"
14 | SRCDIR="/usr/share/kali-whoami/assets"
15 |
16 | # tor config file
17 | TORRC="/etc/tor/torrc"
18 | tor_uid="$(id -u debian-tor)"
19 |
20 | #Defaults
21 | anti_mitm_status="Disable"
22 | ip_changer_status="Disable"
23 | dns_changer_status="Disable"
24 | mac_changer_status="Disable"
25 | timezone_changer_status="Disable"
26 | hostname_changer_status="Disable"
27 | browser_anonymization_status="Disable"
28 | anti_mitm_pid="0"
29 |
30 | # print error and exit
31 | err() {
32 | echo -e "${RED}[-]${RESET} ${@}"
33 | exit 1
34 | }
35 |
36 | # print warning
37 | warn() {
38 | echo -e "${YELLOW}[!]${RESET} ${@}"
39 | }
40 |
41 | # print message
42 | msg() {
43 | echo -e "${GREEN}[+]${RESET} ${@}"
44 | }
45 |
46 | # print info
47 | info() {
48 | echo -e "${BLUE}[*]${RESET} ${@}"
49 | }
50 |
51 | # read input
52 | input() {
53 | echo -ne "
54 | ${BLUEB}:: Select the options you want and then press enter ::${RESET}${GREEN}\n\n┌─[whoami]─[~]\n└─╼ $ ${RESET}"
55 | }
56 |
57 | # print banner
58 | banner() {
59 | clear
60 | echo -e "${GREEN} ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
61 | __
62 | | | |__| / \ /\ |\/| |
63 | |/\| | | \__/ /~~\ | | |
64 | ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
65 | ${RESET}"
66 | }
--------------------------------------------------------------------------------
/assets/sources/whoami.js:
--------------------------------------------------------------------------------
1 | pref("privacy.firstparty.isolate", true);
2 | pref("privacy.resistFİngerprinting", true);
3 | pref("privacy.trackingprotection.fingerprinting.enabled", true);
4 | pref("privacy.trackingprotection.cryptomining.enabled", true);
5 | pref("privacy.trackingprotection.enabled", true);
6 | pref("browser.send_pings", false);
7 | pref("browser.urlbar.spectulativeConnect.enabled", false);
--------------------------------------------------------------------------------
/kali-whoami:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Whoami | Coded by Ömer Doğan
3 |
4 | #check source files
5 | source /usr/share/kali-whoami/assets/sources/config 2> /dev/null || { clear;echo -e "\e[31m [-] FATAL ERROR: MAIN CONFIG COULD NOT BE SOURCED!\e[0m";exit 1;}
6 |
7 | banner
8 | # run with a root privilege
9 | [ $UID != 0 ] && err "Whoami must be run as root. ${GREEN}'sudo $(basename ${0})'${RESET}"
10 |
11 | src_check() {
12 |
13 | check_status="1"
14 | for i in $(seq 1 ${#}) ; do
15 | if [ -f $SRCDIR/scripts/${@:i:1} ];then
16 | source $SRCDIR/scripts/${@:i:1}
17 | else
18 | warn "The source file could not be found. Please re-install the tool. (Module: ${@:i:1})"
19 | check_status="0"
20 | fi
21 | done
22 | if [ "${check_status}" = "0" ] ; then
23 | err "Please run this command:\n'${GREEN}git clone https://github.com/omer-dogan/kali-whoami && cd kali-whoami && sudo make reinstall${RESET}'"
24 | fi
25 | }
26 | src_check fix log_killer ip_changer dns_changer mac_changer anti_cold_boot hostname_changer timezone_changer browser_anonymization
27 |
28 | #check dependences function
29 | dep_check() {
30 | check_status="1"
31 | for i in $(seq 1 ${#}) ; do
32 | [ $(command -v ${@:i:1}) ] || { warn "${@:i:1}: could not be found." ; check_status="0" ; }
33 | done
34 | if [ "${check_status}" = "0" ] ; then
35 | err "Please run this command: '${GREEN}sudo apt update && sudo apt install tar tor curl python3 python3-scapy network-manager${RESET}'"
36 | fi
37 | }
38 |
39 | start(){
40 |
41 | #check dependences
42 | dep_check tar tor curl python3 scapy
43 |
44 | #get a backup to fix it in case of a possible error
45 | if [ ! -f $BACKUPDIR/whoami_fix_backups.tar.gz ]; then
46 | get_backups
47 | fi
48 |
49 | options=("Anti Mitm" "Log killer" "Ip changer" "Dns changer" "Mac changer" "Timezone changer" "Hostname changer" "Browser anonymization" "Anti cold boot")
50 |
51 | menu() {
52 | info "Avaliable features:\n"
53 | for opt in ${!options[@]}; do
54 | printf "[%s] %s\n" $((opt+1)) "${options[opt]} ${choices[opt]}"
55 | done
56 | [[ "$stat" ]] && msg "$stat"; :
57 | }
58 |
59 | while banner && menu && input && read -r num && [[ "$num" ]]; do
60 | [[ "$num" != *[![:digit:]]* ]] &&
61 | (( num > 0 && num <= ${#options[@]} )) ||
62 | { stat="Invalid option: $num"; continue; }
63 | ((num--)); stat="${options[num]} was ${choices[num]:+un}checked"
64 | [[ "${choices[num]}" ]] && choices[num]="" || choices[num]="✓"
65 | done
66 | banner
67 | #detect selected features and run
68 | for opt in ${!options[@]}; do
69 |
70 | start_anti_mitm(){
71 | python3 /usr/share/kali-whoami/assets/scripts/anti_mitm &
72 | antimitmpid="$!"
73 | sed -i 's/anti_mitm_pid="0"/anti_mitm_pid="'$antimitmpid'"/g;s/anti_mitm_status="Disable"/anti_mitm_status="Enable"/g' $SRCDIR/sources/config
74 | info "Anti mitm successfully enabled"
75 | }
76 |
77 | for st in $(seq 0 $(( ${#options[@]} - 1 ))) ; do
78 | if [[ "${choices[opt]}" ]] && [[ "${options[opt]}" == ${options[st]} ]]; then
79 | $(echo start_${options[st]} | sed -e 's/ /_/g;s/\(.*\)/\L\1/;s/ı/i/g')
80 | fi
81 | done
82 |
83 | done
84 |
85 | }
86 |
87 | stop(){
88 |
89 | #detect enable features and stop
90 | if $(cat $SRCDIR/sources/config | grep Enable &>/dev/null);then
91 |
92 | options=("anti_mitm" "ip_changer" "dns_changer" "mac_changer" "timezone_changer" "hostname_changer" "browser_anonymization")
93 |
94 | stop_anti_mitm(){
95 |
96 | kill $anti_mitm_pid
97 | sed -i 's/anti_mitm_pid="'$anti_mitm_pid'"/anti_mitm_pid="0"/g;s/anti_mitm_status="Enable"/anti_mitm_status="Disable"/g' $SRCDIR/sources/config
98 | info "Anti mitm successfully disabled"
99 | }
100 |
101 | for st in $(seq 0 $(( ${#options[@]} - 1 ))) ; do
102 | status="${options[st]}_status"
103 | if [[ ${!status} == "Enable" ]] ; then
104 | stop_${options[st]}
105 | fi
106 | done
107 |
108 | else
109 | err "No features are active. (Run to activate '${GREEN}sudo kali-whoami --start${RESET}')"
110 | fi
111 | }
112 |
113 | status(){
114 |
115 | msg "Kali Whoami status:
116 |
117 | ${GREEN}Anti Mitm :${RESET} $anti_mitm_status
118 | ${GREEN}Ip changer :${RESET} $ip_changer_status
119 | ${GREEN}Dns changer :${RESET} $dns_changer_status
120 | ${GREEN}Mac changer :${RESET} $mac_changer_status
121 | ${GREEN}Timezone changer :${RESET} $timezone_changer_status
122 | ${GREEN}Hostname changer :${RESET} $hostname_changer_status
123 | ${GREEN}Browser anonymization :${RESET} $browser_anonymization_status"
124 |
125 | }
126 |
127 | fix(){
128 |
129 | #repair system with backups received for a possible bug
130 | if [ -f $BACKUPDIR/whoami_fix_backups.tar.gz ]; then
131 | restore_system
132 | msg "System successfully repaired"
133 | else
134 | err "Whoami backup file not found"
135 | fi
136 | }
137 |
138 | help() {
139 |
140 | msg "Usage : sudo kali-whoami ${GREEN}[option]${RESET}
141 |
142 | ${GREEN}--start :${RESET} It will make backups and start the program.
143 | ${GREEN}--stop :${RESET} Closes the program using a backup.
144 | ${GREEN}--status :${RESET} Provides information about IP address and working status.
145 | ${GREEN}--fix :${RESET} Used to repair the system in case of a possible bug.
146 | ${GREEN}--help :${RESET} This shows the menu."
147 | }
148 |
149 | main() {
150 |
151 | if [[ "$#" -eq 0 ]]; then
152 | warn "Whoami: Argument required"
153 | info "Run ${GREEN}'kali-whoami --help'${RESET} for more information."
154 | exit 1
155 | fi
156 |
157 | case "$1" in
158 | --[sS][tT][aA][rR][tT]|-[sS][tT])
159 | start
160 | ;;
161 | --[sS][tT][oO][pP]|-[sS][pP])
162 | stop
163 | ;;
164 | --[sS][tT][aA][tT][uU][sS]|-[sS][sS])
165 | status
166 | ;;
167 | --[fF][iI][xX]|-[fF])
168 | fix
169 | ;;
170 | --[hH][eE][lL][pP]|-[hH])
171 | help
172 | exit 1
173 | ;;
174 | *)
175 | warn "Whoami: Invalid option ${RED}'$1'${RESET}"
176 | info "Run ${GREEN}'kali-whomai --help'${RESET} parameter for more information."
177 | exit 1
178 | ;;
179 | esac
180 | }
181 |
182 |
183 | # call main
184 | main "${@}"
185 |
186 | # EOF
187 |
--------------------------------------------------------------------------------