Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Miguel Ángel González Gallardo
/
AnalizadorLogs
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a9beee39
authored
Mar 23, 2021
by
Juan Santos Poyato
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Directorios y proporciones obtenidas. Faltan Flags
parent
75075733
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
61 additions
and
39 deletions
codigo/Cesta.py
codigo/Gestor.py
codigo/ObtencionRegistro.py
codigo/__pycache__/Cesta.cpython-39.pyc
codigo/__pycache__/ObtencionRegistro.cpython-39.pyc
codigo/__pycache__/idsUsuarioSesion.cpython-39.pyc
codigo/idsUsuarioSesion.py
codigo/Cesta.py
View file @
a9beee39
...
@@ -6,8 +6,9 @@ class Cesta:
...
@@ -6,8 +6,9 @@ class Cesta:
self
.
directorios
=
directorios
self
.
directorios
=
directorios
self
.
flags
=
None
self
.
flags
=
None
# Se obtienen los directorios aquellos que cumplen el umbral
# Se obtienen los directorios aquellos que cumplen el umbral
def
obtenerDirectorios
(
registros
):
def
obtenerDirectorios
(
registros
,
umbral
):
directorios
=
[]
directorios
=
[]
contadores
=
[]
contadores
=
[]
...
@@ -17,17 +18,36 @@ def obtenerDirectorios(registros):
...
@@ -17,17 +18,36 @@ def obtenerDirectorios(registros):
directorios
.
append
(
r
.
url
)
directorios
.
append
(
r
.
url
)
contadores
.
append
(
1
)
contadores
.
append
(
1
)
else
:
else
:
pos
=
contadore
s
.
index
(
r
.
url
)
pos
=
directorio
s
.
index
(
r
.
url
)
contadores
[
pos
]
+=
1
contadores
[
pos
]
+=
1
# Sacamos aquellas que no superan el umbral
directorios
,
contadores
=
quitarExcluidos
(
directorios
,
contadores
,
umbral
)
umbral
=
int
(
len
(
registros
)
*
5
/
1000
)
return
directorios
,
contadores
# Se quitan los directorios que no vamos a incluir
def
quitarExcluidos
(
directorios
,
contadores
,
umbral
):
excluidos
=
[]
# Indicamos aquellas que no superan el umbral
for
i
in
range
(
len
(
contadores
)):
if
contadores
[
i
]
<
umbral
:
excluidos
.
append
(
i
)
# Las sacamos de las listas resultado en orden
sacados
=
0
excluidos
.
sort
()
for
i
in
excluidos
:
directorios
.
pop
(
i
-
sacados
)
contadores
.
pop
(
i
-
sacados
)
sacados
+=
1
return
directorios
,
contadores
return
directorios
,
contadores
# Se obtiene la cesta transformada final
# Se obtiene la cesta transformada final
def
obtenerCestaTransformada
(
registros
,
directorios
):
def
obtenerCestaTransformada
(
registros
,
directorios
):
cesta
=
[]
cesta
=
[]
return
cesta
return
cesta
\ No newline at end of file
codigo/Gestor.py
View file @
a9beee39
...
@@ -6,10 +6,11 @@ RUTA_ARCHIVO = "../access_log_Aug95_reducido"
...
@@ -6,10 +6,11 @@ RUTA_ARCHIVO = "../access_log_Aug95_reducido"
E_SPIDERING
=
True
E_SPIDERING
=
True
EXTENSIONES_ADMITIDAS
=
[]
EXTENSIONES_ADMITIDAS
=
[]
EXTENSIONES_NOADMITIDAS
=
[]
EXTENSIONES_NOADMITIDAS
=
[]
UMBRAL_DIRECTORIOS
=
0.5
UMBRAL_SESIONES
=
1800
FACTOR_UMBRAL
=
0.5
def
printRegistro
(
registros
):
def
printRegistro
(
registros
):
print
(
"Resultados: "
)
print
(
"Resultados: "
)
informe
=
(
informe
=
(
" - Registro {} -
\n
Host Remoto: {}
\n
Fecha: {}
\n
Metodo de Petición: {}
\n
URL: {}
\n
Protocolo: {}
\n
Status Code: {}
\n
"
" - Registro {} -
\n
Host Remoto: {}
\n
Fecha: {}
\n
Metodo de Petición: {}
\n
URL: {}
\n
Protocolo: {}
\n
Status Code: {}
\n
"
...
@@ -17,43 +18,49 @@ def printRegistro(registros):
...
@@ -17,43 +18,49 @@ def printRegistro(registros):
)
)
i
=
0
i
=
0
for
r
in
registros
:
for
r
eg
in
registros
:
i
+=
1
i
+=
1
print
(
informe
.
format
(
i
,
r
.
hostRemoto
,
r
.
fecha
,
r
.
metodoPeticion
,
r
.
url
,
r
.
vProtocolo
,
print
(
informe
.
format
(
i
,
r
eg
.
hostRemoto
,
reg
.
fecha
,
reg
.
metodoPeticion
,
reg
.
url
,
reg
.
vProtocolo
,
r
.
statusCode
,
r
.
volumenTransf
,
r
.
marcaTiempo
,
r
.
idUsuario
,
r
.
idSesion
)
r
eg
.
statusCode
,
reg
.
volumenTransf
,
reg
.
marcaTiempo
,
reg
.
idUsuario
,
reg
.
idSesion
)
)
)
def
printDirectorios
(
d
,
num_dir
,
num_reg
):
def
printDirectorios
(
d
,
cont
,
num_dir
,
num_reg
):
print
(
"Directorios más solicitados: "
)
print
(
"Directorios más solicitados: "
)
barra
=
"="
informe
=
(
informe
=
(
" - VALOR {} -
\n
Directorio: {}
\n
P
(
%
): {}
\n
Cuenta: {}
\n
Proporción: {}
\n
"
" - VALOR {} -
\n
Directorio: {}
\n
P
(
%
): {}
\n
Cuenta: {}
\n
Proporción: [{}]
\n
"
)
)
barra
=
"*"
# Se imprime el total de directorios incluidos
total
=
0
for
suma
in
cont
:
total
+=
suma
barra
*=
total
print
(
informe
.
format
(
"TOTAL"
,
" "
,
'
%.2
f'
%
(
total
*
100
/
num_reg
),
total
,
barra
))
# Se imprimen todos los directorios
for
i
in
range
(
num_dir
):
for
i
in
range
(
num_dir
):
barra
+=
barra
c
=
cont
[
i
]
print
(
informe
.
format
(
""
,
float
(
num_dir
*
100
/
num_reg
),
num_dir
,
barra
))
barra
=
"="
*
c
for
di
in
d
:
print
(
informe
.
format
(
i
+
1
,
d
[
i
],
'
%.2
f'
%
(
c
*
100
/
num_reg
),
c
,
barra
))
barra
=
"*"
c
=
cont
[
d
.
index
(
di
)]
for
i
in
range
(
c
):
barra
+=
barra
print
(
informe
.
format
(
di
.
url
,
float
(
num_dir
*
100
/
num_reg
),
c
,
barra
))
def
printCestaTransformada
(
c
):
def
printCestaTransformada
(
c
):
return
return
# Se crean los registros, identificando usuarios y sesiones y se muestran
# Se crean los registros, identificando usuarios y sesiones y se muestran
r
=
obtenerRegistros
(
RUTA_ARCHIVO
,
E_SPIDERING
,
EXTENSIONES_ADMITIDAS
,
EXTENSIONES_NOADMITIDAS
)
r
=
obtenerRegistros
(
RUTA_ARCHIVO
,
E_SPIDERING
,
EXTENSIONES_ADMITIDAS
,
EXTENSIONES_NOADMITIDAS
,
UMBRAL_SESIONES
)
num_reg
=
len
(
r
)
num_reg
=
len
(
r
)
printRegistro
(
r
)
printRegistro
(
r
)
# Se obtienen los directorios con contadores y la cesta
# Se obtienen los directorios con contadores y la cesta
umbral
=
int
(
num_reg
*
UMBRAL_DIRECTORIOS
)
umbral
=
int
(
num_reg
*
FACTOR_UMBRAL
/
100
)
d
,
cont
=
obtenerDirectorios
(
r
)
d
,
cont
=
obtenerDirectorios
(
r
,
umbral
)
num_dir
=
len
(
d
)
num_dir
=
len
(
d
)
printDirectorios
(
d
,
num_dir
,
num_reg
)
printDirectorios
(
d
,
cont
,
num_dir
,
num_reg
)
# Obtiene cesta transformada y la muestra
# Obtiene cesta transformada y la muestra
cesta
=
obtenerCestaTransformada
(
r
,
d
)
cesta
=
obtenerCestaTransformada
(
r
,
d
)
printCestaTransformada
(
cesta
)
printCestaTransformada
(
cesta
)
codigo/ObtencionRegistro.py
View file @
a9beee39
...
@@ -3,7 +3,7 @@ from idsUsuarioSesion import identificaciones
...
@@ -3,7 +3,7 @@ from idsUsuarioSesion import identificaciones
# Lee el fichero log
# Lee el fichero log
def
obtenerRegistros
(
ruta
,
espidering
,
extensionesAdmitidas
,
extensionesNoAdmitidas
):
def
obtenerRegistros
(
ruta
,
espidering
,
extensionesAdmitidas
,
extensionesNoAdmitidas
,
umbral
):
ret
=
leerLog
(
ruta
,
extensionesAdmitidas
,
extensionesNoAdmitidas
)
ret
=
leerLog
(
ruta
,
extensionesAdmitidas
,
extensionesNoAdmitidas
)
# Compruebo si hay que hacer el e-Spidering
# Compruebo si hay que hacer el e-Spidering
...
@@ -11,7 +11,7 @@ def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmiti
...
@@ -11,7 +11,7 @@ def obtenerRegistros(ruta, espidering, extensionesAdmitidas, extensionesNoAdmiti
ret
=
eSpidering
(
ret
)
ret
=
eSpidering
(
ret
)
print
(
"Procesados "
,
len
(
ret
),
"registros"
)
print
(
"Procesados "
,
len
(
ret
),
"registros"
)
return
identificaciones
(
ret
)
return
identificaciones
(
ret
,
umbral
)
# Obtengo los registros
# Obtengo los registros
...
...
codigo/__pycache__/Cesta.cpython-39.pyc
View file @
a9beee39
No preview for this file type
codigo/__pycache__/ObtencionRegistro.cpython-39.pyc
View file @
a9beee39
No preview for this file type
codigo/__pycache__/idsUsuarioSesion.cpython-39.pyc
View file @
a9beee39
No preview for this file type
codigo/idsUsuarioSesion.py
View file @
a9beee39
# Asignamos un umbral como el de EPA para asignar nuevas sesiones a los usuarios
UMBRAL_SESIONES
=
1800
# Identifica a los usuarios con un unico ID para cada usuario
# Identifica a los usuarios con un unico ID para cada usuario
def
identificaciones
(
registros
):
def
identificaciones
(
registros
,
umbral
):
idsUsados
=
[]
idsUsados
=
[]
cont
=
0
cont
=
0
...
@@ -18,11 +14,11 @@ def identificaciones(registros):
...
@@ -18,11 +14,11 @@ def identificaciones(registros):
else
:
# Si no, simplemente se agrega el id del que ya disponía
else
:
# Si no, simplemente se agrega el id del que ya disponía
reg
.
idUsuario
=
idsUsados
.
index
(
ip
)
+
1
reg
.
idUsuario
=
idsUsados
.
index
(
ip
)
+
1
return
ordenaRegistros
(
registros
)
return
ordenaRegistros
(
registros
,
umbral
)
# Se ordenan los registros segun los usuarios y su marca de tiempo
# Se ordenan los registros segun los usuarios y su marca de tiempo
def
ordenaRegistros
(
registros
):
def
ordenaRegistros
(
registros
,
umbral
):
tam
=
len
(
registros
)
tam
=
len
(
registros
)
for
i
in
range
(
tam
):
for
i
in
range
(
tam
):
...
@@ -39,11 +35,11 @@ def ordenaRegistros(registros):
...
@@ -39,11 +35,11 @@ def ordenaRegistros(registros):
registros
[
i
]
=
reg2
registros
[
i
]
=
reg2
registros
[
j
+
i
]
=
reg1
registros
[
j
+
i
]
=
reg1
return
identificacionSesiones
(
registros
)
return
identificacionSesiones
(
registros
,
umbral
)
# Identifica las sesiones de los usuarios
# Identifica las sesiones de los usuarios
def
identificacionSesiones
(
registros
):
def
identificacionSesiones
(
registros
,
umbral
):
tam
=
len
(
registros
)
tam
=
len
(
registros
)
registros
[
0
]
.
idSesion
=
1
registros
[
0
]
.
idSesion
=
1
...
@@ -53,7 +49,7 @@ def identificacionSesiones(registros):
...
@@ -53,7 +49,7 @@ def identificacionSesiones(registros):
# Si se supera el umbral o son diferentes usuarios se crea nueva sesion
# Si se supera el umbral o son diferentes usuarios se crea nueva sesion
dif
=
reg2
.
marcaTiempo
-
reg1
.
marcaTiempo
dif
=
reg2
.
marcaTiempo
-
reg1
.
marcaTiempo
if
dif
>
UMBRAL_SESIONES
or
reg1
.
idUsuario
is
not
reg2
.
idUsuario
:
if
dif
>
umbral
or
reg1
.
idUsuario
is
not
reg2
.
idUsuario
:
reg2
.
idSesion
=
reg1
.
idSesion
+
1
reg2
.
idSesion
=
reg1
.
idSesion
+
1
else
:
# Si no se asigna la sesion antigua
else
:
# Si no se asigna la sesion antigua
reg2
.
idSesion
=
reg1
.
idSesion
reg2
.
idSesion
=
reg1
.
idSesion
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment