[Python] WhoPingMe by LordRNA.

Iniciado por [L]ord [R]NA, 19 Septiembre 2010, 06:46 AM

0 Miembros y 1 Visitante están viendo este tema.

[L]ord [R]NA

Disculpen los comentarios en ingles... escribi el script para publicarlo en otro lugar pero soy fiel a mi origen, :xD eso fue una excusa... Los puse en ingles y me da peresa traducir. :silbar: :silbar:

Cualquier pregunta o duda, no duden en postearla.

PsData: Fue probado en Linux, se necesitan privilegios para ejecutar.

Código (python) [Seleccionar]
#! /usr/bin/env python
########################################################################
#Script     : WhoPingMe.py                                             #
#Description: Detect if you receive a Ping and make a list with Date.  #
#By         : LordRNA                                                  #
#Date`      : Sept 19th-2010                                           #
#Comments   : Tested on Python 2.6.5                                   #
########################################################################

import socket, datetime

def whopingme(date):
   source = '' #To put the IP Source.
   header = ["%i"%ord(x) for x in data]
#I made a list of int values for each byte in data variable.
   if int(header[20])==8:#If Type(ICMP) is 8, i received a Echo Request.
       for x in range(4):#To make a string with the IP Source.
           source += str(header[12+x])
           if x<3:source +='.'
       date = str(datetime.datetime.today())
       print date[:len(date)-7]+" ---> "+ str(source)
#I deleted the Miliseconds with [:len(date)-7]

sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
#ICMP Protocol on RAW Socket

while 1:
   data = sock.recv(21)#I Just want these bytes, IPHeader Lenght + Type(ICMPHeader)
   whopingme(data)#Sending data to whopingme() function.


Muestra de la Salida del programa:

rna@rna-laptop:~$ sudo python ./whopingme.py
2010-09-19 00:47:57 ---> 192.168.10.230
2010-09-19 00:47:58 ---> 192.168.10.230
2010-09-19 00:47:59 ---> 192.168.10.230


Edito: Segun me ha dicho Karcrack, LittleHorse y ctlon deberia funcionar en windows con privilegios de administrador.

Debci

Muy bien jeje gran code, solo que una pregunta, que pasa si el ping no se hace con icmp?

Saludos

[L]ord [R]NA

entonces ya no es un ping. :xD... ese es el protocolo especifico para hacer pings

aaronduran2

#3
Una pregunta, que no controlo mucho de esto...

Si se cambia el valor de la longitud del paquete y el tipo, se puede detectar la llegada de otro tipo de paquetes, ¿no?

Un saludo ;)

[L]ord [R]NA


braulio--

Muy bueno.

Este puede ser el principio de un gran IDS xD

[L]ord [R]NA

No tome un punto de vista asi... pero se necesitaria bastante... cuando digo bastante es sumamente bastante informacion.

Karcrack

Segun la documentacion oficial en Windows deberia ir perfectamente :-\
http://docs.python.org/library/socket.html

Littlehorse

Cita de: Karcrack en 20 Septiembre 2010, 07:39 AM
Segun la documentacion oficial en Windows deberia ir perfectamente :-\
http://docs.python.org/library/socket.html

Siempre y cuando tengas los privilegios adecuados, caso contrario cualquier operación retornara permiso denegado.

Saludos

An expert is a man who has made all the mistakes which can be made, in a very narrow field.

[L]ord [R]NA

tenia entendido que en Windows XP SP2 y posteriores el usuario no podia utilizar Sockets Raw.