Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/12/2008, à 19:17

saelyx

Scripts de simplification - configuration IP - configuration WIFI

ipconfig - Affiche la configuration IP, la passerelle par défaut et le serveur DNS, voici un exemple de sortie :

Interface réseau wlan0 [ 00:1c:bc:83:13:37 ] sur notebook

        Adresse IPv4 .........: 192.168.6.119 / 255.255.0.0
        Paserelle par défaut .: 192.168.1.1 / TTL=128 [ 00:12:42:55:13:37 ]
        Adresse IPv6 .........: fe90::41e:cffe:fe81:1337 / 64
        Serveur DNS primaire .: 192.168.1.1

Voilà le script :

#!/bin/bash

EXTERNE=0
IFCES=`ifconfig | grep -i "link" | grep -v "lo" | awk {'print $1'} | grep -v "wmaster"`


function adresse_ip()
{
  IFCE="$1"
  mac=`ifconfig $IFCE | grep "HW" | awk {'print $5'} | tr A-Z a-z | tr - : | cut -d':' -f1,2,3,4,5,6`
  mask=`ifconfig $IFCE | grep "inet adr" | awk {'print $4'} | cut -d':' -f2`
  ip4=`ifconfig $IFCE | grep "inet adr" | awk {'print $2'} | cut -d':' -f2`
  gw=`route -n | grep "$IFCE" | grep "UG" | awk {'print $2'}`
  ip6=`ifconfig $IFCE | grep inet6 | awk {'print $3'} | cut -d'/' -f1`
  scope=`ifconfig $IFCE | grep inet6 | awk {'print $3'} | cut -d'/' -f2`
  host=`hostname`
  if [ ! -z "$gw" ] ; then
    mac_gw=`sudo arping -c 1 -w 1 -I $IFCE $gw | grep -oE "([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])" 2>/dev/null | tr A-Z a-z`
  fi
  if [ $EXTERNE -eq 1 ] ; then httping -h 66.102.9.104 -t 1 -c 1 2>&1 >/dev/null ; [ $? -eq 0 ] && ipe=`/opt/bin/ip-extern` ; fi

  [ ! -z $gw ] && ttl=`ping -c 1 $gw -w 3 | grep ttl | awk {'print $6'} | cut -d'=' -f2`
  [ -z $ttl ] && ttl="??"
  echo -e "
Interface réseau \033[29;1m$IFCE\033[00m [ \033[32;1m$mac\033[00m ] sur \033[29;2m$host\033[00m
"

[ ! -z "$ip4" ] && echo -ne "	Adresse IPv4 .........: \033[29;1m$ip4"
[ ! -z "$mask" ] && echo -e " / $mask\033[00m"
[ -z "$mask" ] && echo -e "\033[00m"

[ ! -z "$gw" ] && echo -e "	Paserelle par défaut .: \033[29;1m$gw / TTL=\033[32;1m$ttl\033[00m [ \033[32;1m$mac_gw\033[00m\033[29;1m ]\033[00m"
[ ! -z "$ipe" ] && echo -e "	Adresse externe ......: \033[32;1m$ipe\033[00m"
[ ! -z "$ip6" ] && echo -e "	Adresse IPv6 .........: \033[29;1m$ip6\033[00m / \033[32;1m$scope\033[00m"
#  echo


}

[ $# -eq 2 ] && [ "$2" = "-e" ] && EXTERNE=1


dns=`cat /etc/resolv.conf | grep "nameserver" | head -n 1 | awk {'print $2'}`

if [ $# -eq 0 ]
then
  for IFCE in $IFCES
  do
    adresse_ip $IFCE
  done
  [ ! -z "$dns" ] && echo -e "	Serveur DNS primaire .: \033[29;1m$dns\033[00m"
  echo
  exit 0
fi


if [ $# -eq 1 ]
then
  echo $IFCES | grep "$1" 2>/dev/null >/dev/null
  if [ $? -ne 0 ]
  then
    echo ; echo "[-] L'interface $1 n'existe pas." ; echo
    exit 1
  fi
  IFCE=$1
  adresse_ip $IFCE
  [ ! -z "$dns" ] && echo -e "	Serveur DNS primaire .: \033[29;1m$dns\033[00m"
  echo
  exit 0
fi

wiconfig - Affiche la configuration WiFi de l'interface sans-fil de façon plus claire, sans manquer d'informations
Voici ce qu'il produit en sortie :


Interface sans-fil wlan0 [ 00:1c:bc:83:13:37 ] sur notebook

        Mode de la carte ........... : Managed
        Adresse MAC du P.A.  (BSSID) : 00:12:34:56:13:37
        Nom du point d'accès (ESSID) : "WIFI_TEST"
        Canal / Fréquence ...........: 64 / 5.32 GHz
        Qualité du signal ...........: 76 %

Et le script :

#!/bin/bash

EXTERNE=0
IFCES=`ifconfig | grep -E "wlan|ath|rausb|wifi" | awk {'print $1'}`


function adresse_ip()
{
  IFCE="$1"
  mac=`ifconfig $IFCE | grep "HW" | awk {'print $5'} | tr A-Z a-z | tr - : | cut -d':' -f1,2,3,4,5,6`
  host=`hostname`
  essid=`iwconfig $IFCE | grep -oE "ESSID\:\"([a-zA-Z0-9\.\-\ ]){1,20}\"" | cut -d':' -f2`
  ap=`iwconfig $IFCE | grep -oE "([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])"`
  channel=`iwlist $IFCE channel | grep "Current" | grep -oE "([0-9]){1,2}\)" | cut -d')' -f1`
  quality=`iwconfig $IFCE | grep "Quality" | awk {'print $2'} | cut -d'=' -f2 | cut -d':' -f2 | cut -d'/' -f1`
  freq=`iwconfig $IFCE | grep -oE "Frequency\:([0-9\.]){1,5}\ GHz" | cut -d':' -f2`
  mode=`iwconfig $IFCE | grep -oiE "mode\:([a-zA-Z]){1,10}" | cut -d':' -f2`

  [ ! -z $gw ] && ttl=`ping -c 1 $gw -w 3 | grep ttl | awk {'print $6'} | cut -d'=' -f2`
  [ -z $ttl ] && ttl="??"
  echo -e "
Interface sans-fil \033[29;1m$IFCE\033[00m [ \033[32;1m$mac\033[00m ] sur \033[29;2m$host\033[00m
"

[ ! -z "$mode" ] &&  echo   -e "	Mode de la carte ........... : \033[29;1m$mode\033[00m"
[ ! -z "$essid" ] && echo   -e "	Adresse MAC du P.A.  (BSSID) : \033[29;1m$ap\033[00m"
[ ! -z "$essid" ] && echo   -e "	Nom du point d'accès (ESSID) : \033[29;1m$essid\033[00m"
[ ! -z "$channel" ] && echo -e "	Canal / Fréquence ...........: \033[29;1m$channel / $freq\033[00m"
[ ! -z "$quality" ] && echo -e "	Qualité du signal ...........: \033[29;1m$quality %\033[00m"

}


if [ $# -eq 0 ]
then
  for IFCE in $IFCES
  do
    adresse_ip $IFCE
  done
  echo
  exit 0
else
  echo $IFCES | grep "$1" 2>/dev/null >/dev/null
  if [ $? -ne 0 ]
  then
    echo ; echo "[-] L'interface $1 n'est pas une interface sans fil. " ; echo
    exit 1
  fi
  IFCE=$1
  adresse_ip $IFCE
  echo
  exit 0
fi

Puis le plus intéressant, un script de connexion Wifi. Les préliminaires sont :

mkdir ~/deplacement/wifi
mkdir ~/deplacement/wpa
sudo ln -s /home/$USER/deplacement /root/deplacement
#!/bin/bash

airmonng='/opt/bin/airodump'
ipwraw='/opt/bin/ipwraw'

chemin='/root/deplacement/wpa'
app='wifi'

l=7 ; [ $USER = "root" ] && l=6
SAVED_FILE="$HOME/deplacement/wifi/"

# Programmes locaux
ifre='/opt/bin/ifre'
# strtoupper : wpa => WPA
# addquote   : "Neuf WiFi" = Neuf WiFi => 'Neuf WiFi'


# Valeurs par défaut
dhcp=1
verbose=0

echo

# Quitte le programme
function die()
{
	exit $1
}


# Affiche [+] en cas de probleme sinon [-]
function affiche()
{
	msg=$1
	err=$2
	if [ $err=$test ]
	then
		printf "[-] $msg \n"
	else
		printf "[+] $msg \n"
	fi
}



function usage()
{
echo "

Usage: $app   <-a | -l | -m | -v file>
            | <-i interface> <-e essid> <-b bssid> <-f freq> [-c wep|wpa [-k key] ] [-m PARAMS]
            | <-s interface>
            | <file>

 <file>       : Run configuration file
 -a           : Add a configuration file
 -v file      : View configuration file
 -m file      : Modifiy file with VIM
 -r file      : Remove configuration file
 -l           : List saved Access Point


 -s interface : Scan with airodump

 -i interface : Interface to use
 -e essid     : Access point's name
 -b bssid     : Access point's mac address
 -f freq      : Frequence, in fact this correspond to channel
 -c wep|wpa   : Set encodage to WEP or WPA
 -k key       : Key to use with previous encodage
 -m PARAMS    : If set, use manual configuration

 PARAMS :
 <ip address> <netmask> <broadcast> <gateway>
"

if [ $1 -eq 2 ] ; then

echo "
 > Example : Open access point, with DHCP network configuration
 $app -i eth1 -e INTERNET_FREE -f 11 -b 00:11:22:33:44:55

 > Example : Protected access point, with DHCP network configuration and WPA encryption
 $app -i eth1 -e WPA_PROTECTED -f 11 -b 00:12:34:56:78:9A -c wpa -k 'mon_code_wpa'

 > Example : Protected access point, with manual network configuration and WEP encryption
 $app -i eth1 -e WEP_PROTECTED -f 11 -b 00:12:34:56:78:9A -c wep -k '0123456789abcdef0123456789' -m 192.168.1.13 255.255.255.0 192.168.1.255 192.168.1.1
"

fi


exit $1
}


# Operations communes au reseau sans fil
function connexion_wifi()
{
	ifce=$1
	essid="$2"
	ch=$3
	ap=$4
	[ $# -eq 5 ] && key=$5

	affiche "Configuration de la carte $ifce" $? 0

	sleep 1

	[ $# -eq 4 ] && iwconfig $ifce essid "$essid" ap $ap channel $ch > /dev/null 2>/dev/null
	[ $# -eq 5 ] && iwconfig $ifce essid "$essid" ap $ap channel $ch key $key > /dev/null 2>/dev/null

	sleep 2

}



if [ $# -ne 1 -a $# -ne 8 -a $# -ne 12 -a $# -ne 17 -a $# -ne 10 -a $# -ne 2 ] ; then
	echo "[!] Incorrect parameter count ($#)."
	usage 1
fi

if [ $# -eq 1 ] ; then
	case $1 in
		-h)  usage 0  ;;

		-l)  echo '[-] Wifi configuration file list :'
		     echo '----------------------------------'
		     for f in  $SAVED_FILE/* ; do [ -f "$f" ] && echo "$f" | cut -d'/' -f$l ; done
		     i=0
		     for f in  $SAVED_FILE/*/* ; do
			     i=$((i+1))
			     if [ -f "$f" ] ; then
				     d=$(echo "$f" | cut -d'/' -f$l)
				     w=$(echo "$f" | cut -d'/' -f$((l+1)))
				     [ $i -le 2 ] && echo -e "\033[01;29m$d/$w\033[00m"
				     [ $i -ge 3 ] && echo -e "$d/$w"
				     [ $i -eq 4 ] && i=0
			     fi
		     done

		     echo
		     exit 0 ;;

		-a)  echo '[-] Specify configurationn file :'
		     echo '---------------------------------'
			 printf "\033[01;39mFile          =\033[00m " ; read file
			 printf "\033[01;32mInterface     =\033[00m " ; read ifce
			 printf "\033[01;32mESSID         =\033[00m " ; read essid
			 printf "\033[01;32mBSSID         =\033[00m " ; read bssid
			 printf "\033[01;32mChannel       =\033[00m " ; read channel
			 printf "\033[01;32mEncoding      = " ; read enc
		       if [ "$enc" = "WPA" -o "$enc" = "wpa" ] ; then
		     	 printf "\033[01;32mDriver [wext] =\033[00m " ; read driver
		       fi
		         [ -z $driver ] && driver="wext"
			 printf "\033[01;32mKey           = " ; read key
			 printf "\033[01;32mClient        =\033[00m " ; read client
			 printf "\033[01;32mNetwork       =\033[00m " ; read network
			 printf "\033[01;32mGateway       =\033[00m " ; read gateway
			 key=$(echo $key | sed s/':'//g)
			 echo "##WIFI##;$essid;$bssid;$channel;$key;$client;$network;$gateway;$ifce;$enc;$driver" > $SAVED_FILE/$file
			 echo >> $SAVED_FILE/$file

			 [ ! -z $client ] && echo "spoof $ifce mac $client" >> $SAVED_FILE/$file

			 echo "echo \"[+] Setting interface to managed mode\"" >> $SAVED_FILE/$file
			 echo "ifconfig $ifce down ; iwconfig $ifce mode managed ; ifconfig $ifce up" >> $SAVED_FILE/$file
			 echo >> $SAVED_FILE/$file

			 if [ ! -z "driver" ] ; then
				 echo "##WIFI##;$essid;$bssid;$channel;$key;$client;$network;$gateway;$ifce;$enc;$driver" > $chemin/$essid.wpa
				 wpa_passphrase $essid $key >> $chemin/$essid.wpa
				 affiche "Generated WPA passphrase of key" 0
			 fi

			 if [ -z "$key" -a -z "$enc" -a -z "$network" ] ; then
				 echo "wifi -i $ifce -e $essid -b $bssid -f $channel " >> $SAVED_FILE/$file

			 elif [ ! -z "$key" -a ! -z "$enc" -a -z "$network" ] ; then
				 echo "wifi -i $ifce -e $essid -b $bssid -f $channel -c $enc -k $key" >> $SAVED_FILE/$file

			 elif [ ! -z "$key" -a ! -z "$enc" -a ! -z "$network" ] ; then
				 echo "wifi -i $ifce -e $essid -b $bssid -f $channel -c $enc -k $key -m $network $gateway" >> $SAVED_FILE/$file

			 elif [ -z "$key" -a -z "$enc" -a ! -z "$network" ] ; then
				 echo "wifi -i $ifce -e $essid -b $bssid -f $channel -m $network $gateway" >> $SAVED_FILE/$file

			 fi

			 echo >> $SAVED_FILE/$file

			 chmod +x $SAVED_FILE/$file
		     exit 0 ;;
	esac
	$SAVED_FILE/$1
	exit $?
fi

if [ $# -eq 2 ] ; then
	case $1 in

	-v)
		echo "[-] $2 :"
		underline "[-] $2 :" ; echo
		essid=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f2`
		bssid=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f3`
		channel=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f4`
		key=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f5 | sed s/':'//g`
		client=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f6`
		network=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f7`
		gateway=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f8`
		ifce=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f9`
		enc=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f10`
		driver=`grep "##WIFI##" $SAVED_FILE/$2 | cut -d';' -f11`

		printf "\033[01;32mInterface =\033[00m $ifce
\033[01;32mESSID     =\033[00m $essid
\033[01;32mBSSID     =\033[00m $bssid\033[00m
\033[01;32mChannel   =\033[00m $channel
\033[01;32mEncoding  = $enc\033[00m"
	       if [ "$enc" = "WPA" -o "$enc" = "wpa" ] ; then
   	 printf "
\033[01;32mDriver    = $driver\033[00m "
	       fi

		printf "
\033[01;32mKey       = $key\033[00m
\033[01;32mClient    =\033[00m $client
\033[01;32mNetwork   =\033[00m $network
\033[01;32mGateway   =\033[00m $gateway"
if [ -z $key ] ; then
	printf "
\033[01;32mCommand   =\033[00m iwconfig $ifce essid $essid ap $bssid channel $channel

"
else
	printf "
\033[01;32mCommand   =\033[00m iwconfig $ifce essid $essid ap $bssid key $key channel $channel

"
fi
        echo
		exit 0
		;;


	-r)
		if [ -f $SAVED_FILE/$2 ] ; then
			echo -n "[-] Removing $2..."
			rm -f $SAVED_FILE/$2
			echo "done."
			echo
		else
			echo -n "[-] File not found : $SAVED_FILE/$2"
		    echo
			echo
		fi
		exit 0
		;;


	-m)
		if [ -f $SAVED_FILE/$2 ] ; then
			echo -n "[-] Editting $2..."
			vim $SAVED_FILE/$2
			echo "done."
			echo
		else
			echo -n "[-] File not found : $SAVED_FILE/$2"
		    echo
			echo
		fi
		exit 0
		;;


	-s)	$airmonng $2 ; exit 0
		;;

	esac

		usage 1
fi


while getopts "i:e:k:b:c:f:mvhxs:" option ; do
	case $option in
		i) ifce=$OPTARG ;;
		c) enc=$OPTARG ;;
		k) key=$OPTARG  ;;
		e) essid=$OPTARG ;; # echo `addquote $essid` ; exit ;;  #`addquote $OPTARG`  ;;
		b) bssid=$OPTARG  ;;
		m) dhcp=0 ;;
		f) ch=$OPTARG ;;
		v) verbose=1 ;;
		h) usage 0 ;;
		default) usage 2 ;;
	esac
done
shift $((OPTIND - 1))



# echo
echo "[-] Interface ......: $ifce"
# echo $key
[ -z $enc ] && enc="OPEN"
echo "[-] Codage .........: $enc"
# [ ! -z $key ] && echo "[-] Key ............: $key"
[ $dhcp -eq 1 ] && echo "[-] Network config. : DHCP"
[ $dhcp -eq 0 ] && echo "[-] Network config. : manual"
echo "[-] Access Point ...: $bssid"
echo



echo "[+] Associating interface with $essid : $ch"


if [ $enc != "OPEN" ] ; then
	if [ $enc = "WEP" ] ; then
		connexion_wifi $ifce "$essid" $ch $bssid $key
#		sleep 1
		iwconfig $ifce 2>&1 | grep -i "una" >/dev/null ; t1=$?
		iwconfig $ifce 2>&1 | grep -i "not" >/dev/null ; t2=$?
		if [ $t1 -eq 0 -o $t2 -eq 0 ] ; then echo "[!] Unable to associate with $essid" ; die 1 ; fi
		[ $dhcp -eq 0 ] && exec $ifre -m $ifce $*
		[ $dhcp -eq 1 ] && exec $ifre $ifce

		exit 0
	fi

	if [ $enc = "WPA" ] ; then
		for i in `seq 1 3` ; do pkill wpa_supplicant >/dev/null 2>/dev/null ; done
		affiche "Killed old wpa_suuplicant client" 0
		affiche "Configuration interface to no AP" 0
		iwconfig $ifce essid "" ; iwconfig $ifce ap 00:00:00:00:00:00
		sleep 1
		affiche "File : $chemin/$essid.wpa" 0
		#wpa_supplicant -B -i $ifce -c $chemin/$essid.wpa >/dev/null 2>/dev/null
		driver=`grep "##WIFI##" $chemin/$essid.wpa | cut -d';' -f11`
		printf "[-] Message : "
		wpa_supplicant -B -i $ifce -c $chemin/$essid.wpa -g $ifce -D $driver 2>&1 >/dev/null
		sleep 4
		iwconfig $ifce 2>&1 | grep -i "una" >/dev/null ; t1=$?
		iwconfig $ifce 2>&1 | grep -i "not" >/dev/null ; t2=$?
		sleep 1
		if [ $t1 -eq 0 -o $t2 -eq 0 ] ; then echo "[!] Unable to associate with $essid" ; die 1 ; fi
		[ $dhcp -eq 0 ] && exec $ifre -m $ifce $*
		[ $dhcp -eq 1 ] && exec $ifre $ifce
		exit 0
	fi
else
	connexion_wifi $ifce $essid $ch $bssid
	iwconfig $ifce 2>&1 | grep -i "una" >/dev/null ; t1=$?
	iwconfig $ifce 2>&1 | grep -i "not" >/dev/null ; t2=$?
	if [ $t1 -eq 0 -o $t2 -eq 0 ] ; then echo "[!] Unable to associate with $essid" ; die 1 ; fi
	[ $dhcp -eq 0 ] && exec $ifre -m $ifce $*
	[ $dhcp -eq 1 ] && exec $ifre $ifce
fi

A bon entendeurs...

Dernière modification par saelyx (Le 16/12/2008, à 00:28)


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne