3. Anàlisi de sessions¶
Les línies següents s’han extret dels registres d’inici de sessió de diferents ordinadors:
Mar 7 18:09:52 srv01 sshd[539841]: Invalid user jeel from 128.199.33.46 port 42742
Mar 7 18:09:52 dsktp27 sshd[539841]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=128.199.33.46
Mar 7 18:09:52 a936 sshd[539841]: pam_unix(sshd:auth): check pass; user unknown
De tota la informació d’una línia només ens interessa l’adreça IPv4. Una adreça IPv4 està formada per quatre nombres entre 0 i 255 separats per punts. A l’exemple anterior apareix l’adreça 128.199.33.46 a les dues primeres línies mentre que no n’apareix cap a la darrere. Suposa que una adreça IPv4 apareix o bé entre les paraules from i port, o bé darrere de rhost=. En aquest darrer cas, poden haver-hi espais en blanc darrere de l’adreça IPv4. Observa que from i port estan separades de l’adreça IPv4 per un espai en blanc i que l’adreça IPv4 de darrere rhost= està al final de la línia.
Dissenya la funció següent i desa-la al mòdul sessions
(sessions.py):
- sessions.extreu_ip(linia, ip)¶
Retorna l’adreça IPv4 continguda en linia i també la línia havent substituït l’adreça IPv4 original per ip. Si linia no conté cap adreça IPv4, retorna l'string buit i la línia original.
Per exemple:
>>> l = 'Mar 7 18:09:52 srv01 sshd[539841]: Invalid user jeel from 128.199.33.46 port 42742' >>> i, r = extreu_ip(l, '10.0.0.1') >>> i '128.199.33.46' >>> r 'Mar 7 18:09:52 srv01 sshd[539841]: Invalid user jeel from 10.0.0.1 port 42742' >>> l = 'Mar 7 18:09:52 dsktp27 sshd[539841]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=128.199.33.46 ' >>> i, r = extreu_ip(l, '10.0.0.2') >>> i '128.199.33.46' >>> r 'Mar 7 18:09:52 dsktp27 sshd[539841]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.2 ' >>> l = 'Mar 7 18:09:52 a936 sshd[539841]: pam_unix(sshd:auth): check pass; user unknown' >>> i, r = extreu_ip(l, '10.0.0.3') >>> i '' >>> r 'Mar 7 18:09:52 a936 sshd[539841]: pam_unix(sshd:auth): check pass; user unknown'
Trobaràs més tests al fitxer
test-sessions-extreu_ip.txt