1
0
mirror of https://github.com/byReqz/blackmate.git synced 2024-11-01 11:33:13 +00:00
blackmate/blackmate.sh

207 lines
6.5 KiB
Bash
Raw Normal View History

2016-07-11 03:40:40 +00:00
#!/bin/bash
#
# Blackmate v0.41
2016-07-11 03:40:40 +00:00
#
2016-09-23 18:57:21 +00:00
# Description : BlackMate is a menu generator for the BlackArch Linux os tools, made for the wm xfce4.
# It will fetch the latest database of BlackArch and create an entry for each of them in the menu.
# Start from the version 0.4, the support for mate desktop is removed.
# You may run the script as often a new added tools is available.
2016-09-23 18:57:21 +00:00
#
2016-07-11 03:40:40 +00:00
#
# Author : Dimitri Mader -> dimitri@linux.com
# Url : https://github.com/Anyon3/blackmate
# Gnu / GPL v3
2016-09-25 11:19:22 +00:00
#Check if the script have the root permission
if [[ $EUID -ne 0 ]]; then
printf 'Blackmate must run with root permission (use sudo or the script will fail)';
exit 1;
fi
2016-07-11 03:40:40 +00:00
2016-09-23 18:57:21 +00:00
printf "[*] Creating the new menu entry\n";
2016-07-11 03:40:40 +00:00
2016-07-25 09:15:16 +00:00
#Clean any previous application entry and categorie entry
rm /usr/share/applications/ba-*.desktop 2> /dev/null || true
rm /usr/share/desktop-directories/BlackArch*.directory 2> /dev/null || true
2016-07-11 03:40:40 +00:00
2016-07-25 09:15:16 +00:00
#Update X.BlackArch.menu
cp /usr/share/blackmate/X-BlackArch.menu /etc/xdg/menus/applications-merged/X-BlackArch.menu
2016-07-11 03:40:40 +00:00
2016-07-25 09:15:16 +00:00
#Copy the directory file BlackArch (Blackarch -> categorie -> tools...)
cp /usr/share/blackmate/BlackArch.directory /usr/share/desktop-directories/
#Generate the new categorie entry menu
2016-09-25 11:19:22 +00:00
for u in $( ls --color=auto /usr/share/blackmate/menu-i/ | sort ); do
c=`echo $u | sed 's/BlackArch-//' | sed 's/\.png//'`;
cat /usr/share/blackmate/dfdir | sed 's/^Name=.*/Name='$c'/' |
2016-09-25 11:19:22 +00:00
sed 's/^Icon=.*/Icon=BlackArch-'$c'/' > /usr/share/desktop-directories/BlackArch-$c.directory
2016-07-25 09:15:16 +00:00
done
#Fetch the current icons theme in use
2016-09-23 18:57:21 +00:00
printf "[*] Update the icons theme in use\n";
if [[ -f /home/$SUDO_USER/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ]]; then
2016-09-25 11:19:22 +00:00
thic=`cat /home/$SUDO_USER/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml | grep IconThemeName |
sed 's/<property name="IconThemeName" type="string" value\="//' | tr -d '"/>' | tr -d ' '`;
#If the file do not exist, we assume the current theme is the default one (gnome)
else
2016-09-25 11:19:22 +00:00
thic=`echo gnome`;
fi
2016-09-23 18:57:21 +00:00
#Copy the extra icons into the icons theme
cp /usr/share/blackmate/menu-i/* /usr/share/icons/$thic/32x32/apps/ 2> /dev/null || true
#Set the proper chown and chmod
chown $SUDO_USER:$SUDO_USER /usr/share/icons/$thic/32x32/apps/ -R 2> /dev/null || true
chmod 755 /usr/share/icons/$thic/32x32/apps/ -R 2> /dev/null || true
2016-09-23 18:57:21 +00:00
2016-07-25 09:15:16 +00:00
#Download and generate the latest tools list
printf "[*] Download the tools list, please wait...\n";
2016-07-25 09:15:16 +00:00
mkdir /usr/share/blackmate/tmp
wget -q -P /usr/share/blackmate/ https://mirror.yandex.ru/mirrors/blackarch/blackarch/os/x86_64/blackarch.db.tar.gz
2016-07-25 09:15:16 +00:00
tar -zxf /usr/share/blackmate/blackarch.db.tar.gz -C /usr/share/blackmate/tmp
2016-07-11 03:40:40 +00:00
2016-09-23 18:57:21 +00:00
#Terminal to use for the blackarch entry
terminal=`echo xfce4-terminal`;
printf "[*] Generating the menu, please wait...\n";
2016-07-11 03:40:40 +00:00
2016-09-23 18:57:21 +00:00
#Start to loop each tools, set $subc as subcategorie and $tname as name of the tool
for u in $( ls --color=auto /usr/share/blackmate/tmp/ | sort ); do
2016-07-11 03:40:40 +00:00
#Subcategorie
subc=`cat /usr/share/blackmate/tmp/$u/desc | sed 's/blackarch//' |
2016-09-25 11:19:22 +00:00
sed '/^\s*$/d' | sed -n '/%GROUPS%/{n;p}' | sed 's/-//'`;
2016-07-11 03:40:40 +00:00
#Check the group of the current tool, if empty, go to the next iteration
if [[ -z "$subc" ]]; then
2016-09-25 11:19:22 +00:00
continue 1;
fi
#Name of the tool
tname=`cat /usr/share/blackmate/tmp/$u/desc | sed 's/blackarch//' |
2016-09-25 11:19:22 +00:00
sed '/^\s*$/d' | sed -n '/%NAME%/{n;p}' | cut -d "-" -f 2`;
2016-07-25 09:15:16 +00:00
#Set categorie of the subcategorie tool branche
if [[ $subc == "code-audit" ]] || [[ $subc == 'decompiler' ]] ||
2016-09-25 11:19:22 +00:00
[[ $subc == 'disassembler' ]] || [[ $subc == 'reversing' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Audit;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'automation' ]]; then
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Automation;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'backdoor' ]] || [[ $subc == 'keylogger' ]] ||
2016-09-25 11:19:22 +00:00
[[ $subc == 'malware' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Backdoor;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'binary' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Binary;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'bluetooth' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Bluetooth;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'cracker' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Cracker;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'crypto' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Crypto;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'defensive' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Defensive;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'dos' ]]; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Dos;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'exploitation' ]] || [[ $subc == 'social' ]] ||
2016-09-25 11:19:22 +00:00
[[ $subc == 'spoof' ]] || [[ $subc == 'fuzzer' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Exploitation;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'forensic' ]] || [[ $subc == "anti-forensic" ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Forensic;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'honeypot' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Honeypot;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'mobile' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Mobile;`;
elif [[ $subc == 'networking' ]] || [[ $subc == 'fingerprint' ]] ||
2016-09-25 11:19:22 +00:00
[[ $subc == 'firmware' ]] || [[ $subc == 'tunnel' ]] ; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Networking;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'scanner' ]] || [[ $subc == 'recon' ]] ; then
2016-07-11 03:40:40 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Scanning;`;
2016-07-11 03:40:40 +00:00
elif [[ $subc == 'sniffer' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Sniffer;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'voip' ]]; then
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Voip;`;
elif [[ $subc == 'webapp' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Webapp;`;
2016-07-25 09:15:16 +00:00
elif [[ $subc == 'windows' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Windows;`;
elif [[ $subc == 'wireless' ]]; then
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Wireless;`;
2016-07-25 09:15:16 +00:00
else
2016-07-25 09:15:16 +00:00
2016-09-25 11:19:22 +00:00
namecat=`echo X-BlackArch-Misc;`;
2016-07-25 09:15:16 +00:00
fi
2016-07-25 09:15:16 +00:00
#For each tools of the target categorie
for i in $tname; do
2016-07-25 09:15:16 +00:00
#Parse the default launcher and set his name
cat /usr/share/blackmate/dfdesk | sed 's/^Name=.*/Name='$i'/' |
#Set the bash command to execute
sed 's/^Exec=.*/Exec='$terminal' -e "bash -ic \\"\/usr\/bin\/'$i'; exec bash"\\"/' |
#Set the categorie to the launcher && Set the name file to ba-`toolsname`.desktop
sed 's/Categories=.*/Categories='$namecat';/' > /usr/share/blackmate/ba-$i.desktop
#End of the current tool
done
2016-07-11 03:40:40 +00:00
#End of the current categorie
2016-07-11 03:40:40 +00:00
done
printf "[*] Cleanup...\n";
2016-07-11 03:40:40 +00:00
#Move the .desktop to the right directory
mv /usr/share/blackmate/ba-*.desktop /usr/share/applications
2016-07-11 03:40:40 +00:00
#Delete tmp directory
rm -rf /usr/share/blackmate/tmp/
rm /usr/share/blackmate/blackarch.db.tar.gz
2016-07-11 03:40:40 +00:00
echo "[*] Done, in order to have a correct display of the new menu, you may need to restart xfce4";