Jump to content
SirGod

[RST] [Tutorial Linux BASH] Photo on login fail

Recommended Posts

Este un mic ghid pentru a evita sau a afla cine incearca sa ne faca glume proaste, sau pentru a ne ajuta sa identificam un "intrus". Este facut si testat pe Ubuntu 14.04, cel mai probabil variaza de la distributie la distributie, dar se rezolva din configurare.

1. Instalam streamer pentru a captura poza. Puteti folosi si altceva: ffmpeg, mplayer etc.

sudo apt-get install streamer

2. Instalam mutt pentru a trimite mail cu atasament:

sudo apt-get install mutt

3. Gasim camera pe care vrem sa o folosim. De obicei este video0 (in special in cazul laptopurilor, fiind incorporata):

ls /dev | grep video

4. Acum avem doua fisiere: config.cfg si script.sh.

>>> config.cfg


# The string to look
forstringName = unix_chkpwd

# The file to look into
logFile = /var/log/auth.log


# The device address
deviceAddress = /dev/video0


# Screenshot save location
saveLocation = /home/path


# E-mail address
emailAddress = yourmail@gmail.com


# Body text
bodyText =/home/path/message.txt

>>> script.sh

#!/bin/bash

# CONFIGURATION


FILE_NO_FILE=/tmp/file_net
FILE_NO=1
STRING=`cat config.cfg | grep stringName | cut -d'=' -f 2`
DEVICE=`cat config.cfg | grep deviceAddress | cut -d'=' -f 2`
LOGFILE=`cat config.cfg | grep logFile | cut -d'=' -f 2`
LOCATION=`cat config.cfg | grep saveLocation | cut -d'=' -f 2`
EMAIL=`cat config.cfg | grep emailAddress | cut -d'=' -f 2`
BODY=`cat config.cfg | grep bodyText | cut -d'=' -f 2`


#DO IT


while :


do


if grep $STRING $LOGFILE


then


# CHECK FILE NUMBER


if [ -f $FILE_NO_FILE ]; then
FILE_NO=`cat $FILE_NO_FILE`
fi


let FILE_NO=FILE_NO+1
echo $FILE_NO > $FILE_NO_FILE


streamer -c $DEVICE -b 16 -o $LOCATION/file_$FILE_NO.jpeg
mutt -s "Photo for failed login attempt!" $EMAIL -a $LOCATION/file_$FILE_NO.jpeg < $BODY
cat /dev/null > /var/log/auth.log


sleep 1 # SECONDS


fi

done

Acum sa vedem ce si cum:

>>> config.cfg

stringName tine un string care este scris in log-ul de autentificare (in cazul Ubuntu) in momentul in care exista un failed login attempt.

logFile este log-ul unde cautam stringul.

deviceAddress este locatia camerei web cu care facem poza.

saveLocation este locatia unde vrem sa salvam pozele.

emailAddress este adresa de mail la care sa trimita poza.

bodyText este body-ul mail-ului.

>>> script.sh

FILE_NO_FILE este un fisier unde stocam un numar pe care il adaugam la sfarsitul pozei pentru a nu rescrie poza.

FILE_NO este variabila unde tinem numarul initial.

STRING, LOGFILE, LOCATION, DEVICE, BODY si EMAIL sunt variabilele in care stocam datele scrise in fisierul de configurare.

Putem totul intr-un loop infinit pentru a ne asigura ca ruleaza permanent. Mai departe, verificam daca FILE_NO_FILE exista, apoi incrementam numarul. Daca string-ul este gasit in log, comanda pentru captura poza este executata si mail-ul este trimis catre noi. Am adaugat si un timeout de 1 secunda intre executii pentru a evita alte situatii. Ulterior golim logul.

5. Executarea scriptului

Pentru a evita terminarea executiei in momentul in care se face log off/lock, vom rula scriptul cu nohup:

sudo nohup ./script.sh &

Acum asteptati "intrusi". Se poate adauga la startup daca aveti nevoie. Cu siguranta exista si variante mai bune, le astept.

  • Upvote 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...