Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import poplib, smtplib, datetime, os
- from email.Parser import Parser
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- from email.mime.multipart import MIMEMultipart
- from email.MIMEBase import MIMEBase
- from email import Encoders
- def mandaemail(user,passw,smtp,aquien,subject,texto,adjunto):
- msg = MIMEMultipart()
- textomsg=MIMEText(texto)
- msg['Subject']=subject
- msg['From']=user
- msg['To']=aquien
- msg.attach(textomsg)
- if adjunto<>"":
- part = MIMEBase('application', "octet-stream")
- part.set_payload( open(adjunto,"rb").read() )
- Encoders.encode_base64(part)
- (directorio, fichero) = os.path.split(adjunto)
- part.add_header('Content-Disposition', 'attachment; filename="%s"'
- % fichero)
- msg.attach(part)
- smtp=smtplib.SMTP(smtp)
- smtp.login(user,passw)
- smtp.sendmail(msg['From'],msg['To'],msg.as_string())
- smtp.close()
- def dhcp_log():
- # el nombre del fichero log dhcp a pelo
- ruta = r'c:\windows\system32\dhcp'
- dia = datetime.datetime.now().strftime('%a')
- return ruta + '\DhcpSrvLog-' + dia + '.log'
- #
- fic_dhcp_hoy = dhcp_log()
- fic_fichados = 'dchp_fichados.txt'
- dic={}
- email=1
- haynuevo=0
- texnuevo=''
- # Id., fecha, hora, descripción, dirección IP, nombre de host, dirección MAC
- # cagemos id = 11 que tiene la mac
- # leemos todos los pc que tenemos grabados
- if os.path.exists(fic_fichados):
- fic_abre_fichados = open(fic_fichados,"r")
- lista=fic_abre_fichados.readlines()
- for cada in lista:
- cadena=cada.split(chr(9))[:-1]
- if len(cadena)>0:
- dic[cadena[0]]=cada[:-1]
- fic_abre_fichados.close()
- # vemos los pcs asignados del log dhcp
- if os.path.exists(fic_dhcp_hoy):
- fic_abre_dhcp_hoy = open(fic_dhcp_hoy,"r")
- for row in fic_abre_dhcp_hoy.readlines():
- fila=row.split(",")
- try:
- pc = fila[5]
- mac = fila[6]
- ip = fila[4]
- fecha = fila[1]
- hora = fila[2]
- id = fila[0]
- except:
- continue
- if pc <> '' and not pc in dic:
- if id=='11':
- dic[pc] = pc + chr(9) + ip + chr(9) + mac + chr(9) + fecha + chr(9) + hora
- haynuevo += 1
- texnuevo = texnuevo + pc.split(".")[0] + '+'
- # grabamos nueva lista pcs grabados
- if haynuevo>0:
- fic_abre_fichados = open(fic_fichados,"w")
- ordenado=sorted(dic.items())
- for cada in ordenado:
- fic_abre_fichados.write(dic[cada [0]] + '\n' )
- fic_abre_fichados.close()
- # mandamos email de aviso
- if email>0:
- asunto = 'dhcp_nuevos_'+str(haynuevo)
- texto = texnuevo
- adjunto = fic_fichados
- aquien=destinatario
- mandaemail(remitente,remitente_contraseña,servidor_smtp,aquien,asunto,texto,adjunto)
- exit()
- '''
- Registro de actividad del servicio DHCP de Microsoft
- ID de suceso Significado
- 00 Se inició el registro.
- 01 Se detuvo el registro.
- 02 Se pausó temporalmente el registro debido a la falta de espacio en disco.
- 10 Se concedió una nueva dirección IP a un cliente.
- 11 Un cliente renovó la concesión.
- 12 Un cliente liberó la concesión.
- 13 Se encontró una dirección IP en uso en la red.
- 14 No se pudo atender una solicitud de concesión debido a que
- se agotó el conjunto de direcciones del ámbito.
- 15 Se denegó una concesión.
- 16 Se eliminó una concesión.
- 17 Caducó una concesión.
- 20 Se concedió una dirección BOOTP a un cliente.
- 21 Se concedió una dirección dinámica BOOTP a un cliente.
- 22 No se pudo atender una solicitud de BOOTP debido a que
- se agotó el conjunto de direcciones del ámbito para BOOTP.
- 23 Se eliminó una dirección BOOTP IP después de comprobar
- que no estaba en uso.
- 24 Se ha iniciado la operación de eliminación de direcciones IP.
- 25 Estadísticas de eliminación de direcciones IP.
- 30 Solicitud de actualización de DNS para el servidor DNS nombrado
- 31 Error de actualización de DNS
- 32 Actualización correcta de DNS
- 50+ Los códigos superiores a 50 se usan para información de detección de servidores Rogue.
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement