Vous n'êtes pas identifié(e).
HAHA,
gwctl
Version 0.1
Application permetant de surveiller l'ARP poisoning de votre GW
#DEPENDANCES :
beep
screen
# INSTALLATION :
#cp gwctl.sh /opt/bin
#chmod +x /opt/bin/gwctl.sh
Pour Debian like <8 (application en mode service screen init systemV ):
#cp gwctl /etc/init.d
#update-rc.d gwctl defaults
Pour Centos like <7 ( application en mode service screen, upstart )
#cp gwctl /etc/init.d
#chkconfig
#fichier de configuration :
a creer ( ou pas ) dans /etc/gwctl.conf et mettre :
MAC=aa:bb:cc:dd:ee:ff
( avec la valeur de la mac de votre gw )
#Usage :
#service gwctl start
démmare le service
#service gwctl stop
arete le service
#service gwctl control
prend le controle de la session screen attacher au service
pour sortir de la session screen : "ctrl-a d"
#comportement :
Lors qu'une attaque ARP sur votre reseau au niveau de votre gw, gwctl affichera un message sur toutes les consoles, et emmetera des beeps aléatoires.
Le script :
#!/bin/bash
#Gestion des dépendance et installation des dépendances :
declare -a DEPENDENCIES=("beep screen");
declare -a MANAGERS=("dnf" "apt-get");
for DEPENDENCY in ${DEPENDENCIES[@]};
do
echo -n "Verification des dépendances : $DEPENDENCY "
if hash $DEPENDENCY 2>/dev/null
then
echo "- OK"
else
echo "- ERREUR"
for MANAGER in ${MANAGERS[@]}
do
if hash $MANAGER 2>/dev/null
then
echo -n "$DEPENDENCY manquante, Voullez-vous l'installer via $MANAGER ? [Y/N] (default is Y): "
read ANSWER
if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
then
$MANAGER" install "$DEPENDENCY
else
echo "Terminating"
exit -1
fi
unset ANSWER
fi
done
fi
done
##################################################################
# Déclaration des variables
ficmac="/etc/gwctl.conf"
out="/dev/null"
nbbeep=3
ipgwsalle=$(ip r | grep default | cut -d " " -f 3)
enablelog=0
log=./macgw.log
# L'adresse MAC est stockée dans un fichier au premier lancement du script
if [[ -f $ficmac ]]
then
source $ficmac
macgwinit=$MAC
else
echo -e "Erreur de chargement du fichier $ficmac"
read -p "Voullez qu'il soit rempli automatiquement ? [Y:n]" ANSWER
if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
then
ping -c 1 $ipgwsalle >$out 2>$out
ip n | sed -n '/10.25.255.254/ s/.*addr \([^\s]*\) .*$/MAC=\1/p' > $ficmac
source $ficmac
macgwinit=$MAC
else
echo "Yolo"
exit -1
fi
unset ANSWER
fi
#MAC DE DEBUG : rend un faux positif
#macgwinit="00:23:47:c5:23:c1"
#################
affichtop ()
{
clear
echo "--------------------------------------"
echo "| IP Passerelle : $ipgwsalle |"
echo "| MAC Passerelle : $macgwinit |"
echo "--------------------------------------"
echo ""
}
affichmaj ()
{
echo ""
echo ""
echo ' /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\'
echo " _ "
echo " / \ Changement de l'adresse MAC de $ipgwsalle"
echo "/ ! \ MAC : $macgw"
echo "----- "
echo ' /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\'
echo ""
echo " [ Relevé initial : $horodadeb -> $macdeb ]"
echo ""
}
# Debut du script
while :
do
ping -c1 $ipgwsalle >$out
macgw=$(ip n | grep $ipgwsalle | cut -d " " -f 5)
if [[ $macgw != $macgwinit ]]
then
# On conserve l'horodatage du constat du premier changement
if [[ -z $horodadeb ]]
then
horodadeb=$(date +"%F %R")
macdeb=$macgw
[[ $enablelog = 1 ]] && echo "$horodadeb [suivigw] - " >>$log
fi
affichtop
affichmaj
lsmod | grep "^pcspkr "
if [[ $? -ne 0 ]]
then
snd=off
modprobe pcspkr 2>$out
fi
echo ""
echo ""
echo ""
echo "---------------------------------------------"
echo "Controle en cours ; <CTRL> + <C> pour Quitter"
echo "---------------------------------------------"
beep -l ${RANDOM%%??} -f ${RANDOM%%??}
beep -l ${RANDOM%%??} -f ${RANDOM%%??}
beep -l ${RANDOM%%??} -f ${RANDOM%%??}
affichmaj > /dev/console
fi
sleep 1
affichtop
echo "-------------------------------------------------------"
echo "Controle en cours ; <CTRL> + <c> pour Quitter----------"
echo "Controle en cours ; <CTRL> + <a> puis <d>pour détacher-"
echo "-------------------------------------------------------"
done
Le scrip INIT :
#!/bin/bash
### BEGIN INIT INFO
# Provides: gwctl
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Arp poisoning
### END INIT INFO
# /etc/init.d/gwctl
#version 0.1
#Settings
SERVICE='gwctl.sh'
SCREEN=gwctl
USERNAME="root"
BIN="/opt/bin"
ME=$(whoami)
as_user() {
if [ "$ME" == "$USERNAME" ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}
gw_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
echo "Tried to start but $SERVICE was already running!"
else
echo "$SERVICE was not running... starting."
cd $BIN
as_user "cd $BIN && screen -dmS $SCREEN $BIN/$SERVICE"
sleep 1
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Could not start $SERVICE."
fi
fi
}
gw_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
echo "$SERVICE is running... stopping."
as_user "screen -p 0 -S $SCREEN -X stuff $'\003'"
else
echo "$SERVICE was not running."
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
echo "$SERVICE could not be shut down... still running."
else
# rm $BIN/.macgwinit
echo "$SERVICE is shut down."
fi
}
gw_control() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
as_user "screen -r $SCREEN -d"
else
echo "gwctl is not running"
fi
}
#Start-Stop here
case "$1" in
start)
gw_start
;;
stop)
gw_stop
;;
restart)
gw_stop
gw_start
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $BIN/$SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;
control)
gw_control
;;
*)
echo "Usage: /etc/init.d/gwctl {start|stop|status|restart|control}"
exit 1
;;
esac
exit 0
vi est mon ami pour la vie
Ph'nglui nglw-nafh Cthulhu R'lyeh wgah-nagl fhtagn
Hors ligne
Cool, merci pour le script
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
po, po, po !
viperr, tu vas me faire griller le reste de mes neurones !
déjà, que j'ai pas grand chose
nous sommes vraiment, pas tous égaux à la naissance !
misère de misère !
PC: HP-pavilion a6227.fr | wifi: Awus036H et HWGUSB2-54 | CG: NVIDIA geforce 8400 GS | OS: Debian-8.1.0-i386 Xfce | EN TESTE kali-linux-openbox-rolling-i386.iso (KaliBang), bento-openbox-14.04.3-i386.iso et Viperr8_i686.iso
Hors ligne