Re: [Python-es] ayuda con scapy

2010-02-24 Por tema David Villa
2010/2/23 Boris Perez Canedo inf200...@ucf.edu.cu:
 El 23 de febrero de 2010 17:38, Boris Perez Canedo
 inf200...@ucf.edu.cu escribió:

 Hace pocos dias escribi sobre la instalacion de scapy en Windows. En ese
 momento
 trataba de instalar scapy  usando python2.6. Me daba un error de sintaxis
 con la
 palabra with que es reservada para python2.6 en adelante y que
 aparentemente scapy
 usa como variable. Hice algo que no se si esta del todo bien, borre la
 variable with
 que se pasaba como argumento en dos funciones de la siquiente manera:

 tr = map(lambda x: Gnuplot.Data(x,lines), trt.values())# with = lines

 world = Gnuplot.File(conf.gnuplot_world,lines)# with = lines

 donde ahora esta lines antes estuvo with = lines pero esto en
 python2.6 da el
 error ya mencionado.

 Es posible que el truco funcione.

 Hacerte notar que el fallo está en Gnuplot, más que en scapy. Aunque
 el proyecto python-gnuplot hace tiempo que no se actualiza,
 distribuciones como ubuntu han sustituído en gnuplot 'with' por
 'with_' (con subrayado), cambiando la API que usan otros paquetes como
 scapy:

 http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3


 Todo parecia funcionar bien hasta que corro este script y me da el
 siguiente error que
 me parece no tiene nada que ver con lo que hice ya que el paquete para
 graficos no lo
 instale pq no lo necesitaba.

 Obtener todos los ip usados en una subred.
 mi subnet mask es 255.255.252.0
 mi direccion ip 10.14.19.12
 por si me equivoque al determinar la direccion de red.(10.14.16.0/22)

 from scapy import *

 ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
 ans.summary(lambda (s,r): r.sprintf(%Ether.src% %ARP.psrc%) )

 El error:

 Begin emission:
 Finished to send 1024 packets.(aqui todo parece bien)

 Traceback (most recent call last):
   File D:\Trabajo\scripts\arping.py, line 2, in module

 ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
   File C:\Python26\lib\site-packages\scapy.py, line 11295, in srp
     a,b,c=sndrcv(s ,x,*args,**kargs)
   File C:\Python26\lib\site-packages\scapy.py, line 3, in sndrcv
     os.write(1, .)
 OSError: [Errno 9] Bad file descriptor

 Hola y disculpen haber tenido que escribir tanto sobre mi problema.


 Acabo de correr el script en Windows y funciona, lo que sucedia era que
 antes lo corri desde el IDLE de python2.6 y por eso daba el error, pero
 cuando lei tu comentario

 Da error al intentar escribir en el fichero con id=1, probablemente
 stdout/stdin en sistemas linux.


 se me ocurrio correrlo desde la consola. Voy a ver si en Ubuntu obtengo el
 mismo resultado.

 Muchas gracias.

 Otra cosa, estoy utilizando el scapy para obtener entre otras cosas los ips
 utilizados en una subred dada.

 Mientras me rompia la cabeza pensando que era lo que salia mal con
 scapy, pense en hacer algo como esto:

 import os,re
 from multiprocessing import Process, Lock

 def ping(lck, host):
     options = '-n 1 -w 2 '
     f = os.popen('ping ' + options + host)
     data = f.read()
     match = re.search(r\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL), data) #
 machea una direccion ip utilizada
     if match:
     ip = match.group()
     lck.acquire()
     print ip
     lck.release()


 if __name__ == '__main__':
     lock = Lock()

     for host in ['10.14.16.5','10.14.19.12']:
     Process(target=ping, args=(lock, host)).start()

 Que parece funcionar bien. Pero aqui el problema es como a partir de una
 direccion de red (10.14.16.0/22) generar una lista de ip similar a la que
 utilizo arriba (pero con todos).

 Saludos.
 Boris



 

 La mejor vacuna contra el virus A(H1N1) es la higiene personal

 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/



También puedes usar scapy para eso. En el propio manual de scapy
tienes un ejemplo [1]

 net = IP(dst=10.14.16.0/22)
 [pkt for pkt in net]
[IP  dst=10.14.16.0 |, IP  dst=10.14.17.0 |, IP  dst=10.14.18.0
|, IP  dst=10.14.19.0 |, IP  dst=10.14.16.1 |, IP
dst=10.14.17.1 |, IP  dst=10.14.18.1 |, IP  dst=10.14.19.1 |, IP
 dst=10.14.16.2 |, IP  dst=10.14.17.2 |, IP  dst=10.14.18.2 |,
IP  dst=10.14.19.2 |,...

Intenta hacer funcionar scapy porque él ya implementa todo lo que
puedas necesitar.

Esto sería más o menos lo que buscas. Lista las IP de los host que
respondan a ping.

ans, unans = sr(IP(dst=10.14.18.0/22)/ICMP(), timeout=10)
for pkt in ans:
print pkt[0].dst


Saludos

[1] http://www.secdev.org/projects/scapy/doc/usage.html
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ayuda con scapy

2010-02-24 Por tema Boris Perez Canedo
Óo9~Ë­­ªwÓ¾|÷Nµã^6ÛM5Ó


 import os,re 
 from multiprocessing import Process, Lock 
 
 def ping(lck, host): 
 ��� options
= '-n 1 -w 2 ' 
 ��� f = os.popen('ping ' + options + host)

 ��� data = f.read() 
 ���
match = re.search(r\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL), data) # 
 machea una direccion ip utilizada 
 ��� if match:

 ��� ip = match.group() 
 ��� lck.acquire() 

��� print ip 

��� lck.release() 
 


 if __name__ == '__main__': 
 ��� lock =
Lock() 
 
 ��� for host in
['10.14.16.5','10.14.19.12']: 
 ���
Process(target=ping, args=(lock, host)).start() 
 
 Que parece
funcionar bien. Pero aqui el problema es como a partir de una 
 direccion
de red (10.14.16.0/22) generar una lista de ip�similar a la que 

utilizo arriba (pero con todos). 
 
 Saludos. 

Boris�
 
 
 Tambi�n puedes usar scapy para eso. En el
propio manual de scapy 
 tienes un ejemplo [1] 
 
 net = IP(dst=10.14.16.0/22) 
 [pkt
for pkt in net] 
 [IP dst=10.14.16.0 |, IP dst=10.14.17.0 |,
IP dst=10.14.18.0 
 |, IP dst=10.14.19.0 |, IP
dst=10.14.16.1 |, IP 
 dst=10.14.17.1 |, IP dst=10.14.18.1
|, IP dst=10.14.19.1 |, IP 
 dst=10.14.16.2 |, IP
dst=10.14.17.2 |, IP dst=10.14.18.2 |, 
 IP dst=10.14.19.2
|,... 
 
 Intenta hacer funcionar scapy porque �l ya
implementa todo lo que 
 puedas necesitar. 
 
 Esto
ser�a m�s o menos lo que buscas. Lista las IP de los host que 

respondan a ping. 
 
 ans, unans =
sr(IP(dst=10.14.18.0/22)/ICMP(), timeout=10) 
 for pkt in ans: 
 print pkt[0].dst 
 
 
 Saludos 
 
Hola,
Ok, eso hare.
El problema es que para el trabajo que tengo que hacer
me gustaria no tener que instalar scapy, digamos que es algo problematico para 
Windows
ya que fue pensado para Linux �y lo que tengo que hacer debe funcionar en 
Windows y
Linux, ademas scapy es un monstruo en el buen sentido de la palabra, yo lo
usaria en un proyecto que realmente explotara sus posibilidades, claro si no me 
queda
otra opcion lo voy a usar.

El script que mostre arriba me funciona y ya
resolvi lo de generar las ip a partir de la direccion de red. Lo que no puedo 
resolver
es que en vez de imprimir en pantalla los ip me los ponga en una lista y la 
devuelva.

Si hago algo asi:

import os,re,�hosts
 from multiprocessing
import Process, Lock�

ipList� = []� #
la lista de ips

def ping(lck, host):
�
...etc, etc


lck.acquire()
ipList.append(ip)� #Cambie
print ip por append(ip)�
 lck.release()

etc,
etc

for host in hosts.GetList():
�
se cuelga.

 import os,re  from multiprocessing import Process, Lock   def ping(lck, host):   options
= '-n 1 -w 2 '   f = os.popen('ping ' + options + host)
  data = ""  
match = re.search(r\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL), data) #  machea una direccion ip utilizada   if match:
  ip = match.group()   lck.acquire() 
 print ip 
 lck.release()  
 if __name__ == '__main__':   lock =
Lock()for host in
['10.14.16.5','10.14.19.12']:  
Process(target=ping, args=(lock, host)).start()   Que parece
funcionar bien. Pero aqui el problema es como a partir de una  direccion
de red (10.14.16.0/22) generar una lista de ipsimilar a la que 
utilizo arriba (pero con todos).   Saludos. 
Boris   Tambin puedes usar scapy para eso. En el
propio manual de scapy  tienes un ejemplo [1]   net = IP(dst=10.14.16.0/22)  [pkt
for pkt in net]  [IP dst=10.14.16.0 |, IP dst=10.14.17.0 |,
IP dst=10.14.18.0  |, IP dst=10.14.19.0 |, IP
dst=10.14.16.1 |, IP  dst=10.14.17.1 |, IP dst=10.14.18.1
|, IP dst=10.14.19.1 |, IP  dst=10.14.16.2 |, IP
dst=10.14.17.2 |, IP dst=10.14.18.2 |,  IP dst=10.14.19.2
|,...   Intenta hacer funcionar scapy porque l ya
implementa todo lo que  puedas necesitar.   Esto
sera ms o menos lo que buscas. Lista las IP de los host que 
respondan a ping.   ans, unans =
sr(IP(dst=10.14.18.0/22)/ICMP(), timeout=10)  for pkt in ans:  print pkt[0].dstSaludos  Hola,Ok, eso hare.El problema es que para el trabajo que tengo que hacer
me gustaria no tener que instalar scapy, digamos que es algo problematico para Windows
ya que fue pensado para Linux y lo que tengo que hacer debe funcionar en Windows y
Linux, ademas scapy es un monstruo en el buen sentido de la palabra, yo lo
usaria en un proyecto que realmente explotara sus posibilidades, claro si no me queda
otra opcion lo voy a usar.El script que mostre arriba me funciona y ya
resolvi lo de generar las ip a partir de la direccion de red. Lo que no puedo resolver
es que en vez de imprimir en pantalla los ip me los ponga en una lista y la devuelva.Si hago algo asi:import os,re,hosts from multiprocessing
import Process, LockipList = [] #
la lista de ipsdef ping(lck, host):
...etc, etclck.acquire()ipList.append(ip) #Cambie
print ip por append(ip) lck.release()etc,
etcfor host in hosts.GetList():se cuelga.___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ayuda con scapy

2010-02-24 Por tema Boris Perez Canedo


Disculpen, parece que meti la pata con el cliente.

Por cierto mientras
trataba de enviar una disculpa me rebotaba el correo diciendo que era spam.


saludos.
Boris


---
La mejor vacuna contra el virus A(H1N1) es la higiene personal
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] ayuda con scapy

2010-02-23 Por tema Boris Perez Canedo


Hola a todos,

Hace pocos dias escribi sobre la instalacion de scapy en
Windows. En ese momento trataba de instalar scapy �usando python2.6. Me daba un
error de sintaxis con la palabra with que es reservada para python2.6 en
adelante y que aparentemente scapy usa como variable. Hice algo que no se si 
esta del
todo bien, borre la variable with que se pasaba como argumento en�dos funciones 
de
la siquiente manera:

tr = map(lambda x: Gnuplot.Data(x,lines),
trt.values())# with = lines

world =
Gnuplot.File(conf.gnuplot_world,lines)# with = lines

donde ahora esta lines antes estuvo with = lines pero esto en
python2.6 da el error ya mencionado.

Todo parecia funcionar bien hasta que
corro este script y me da el siguiente error que me parece no tiene nada que 
ver con lo
que hice ya que el paquete para graficos no lo instale pq�no lo necesitaba.

Obtener todos los ip usados en una subred.
mi subnet mask es
255.255.252.0
mi direccion ip 10.14.19.12
por si me equivoque al determinar la
direccion de red.(10.14.16.0/22)

from scapy import *
ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
ans.summary(lambda (s,r): r.sprintf(%Ether.src% %ARP.psrc%) )

El error:

Begin emission:
Finished to send 1024 packets.(aqui todo
parece bien)

Traceback (most recent call last):
� File
D:\Trabajo\scripts\arping.py, line 2, in module
���
ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
� File C:\Python26\lib\site-packages\scapy.py, line 11295, in srp
��� a,b,c=sndrcv(s ,x,*args,**kargs)
� File
C:\Python26\lib\site-packages\scapy.py, line 3, in sndrcv
��� os.write(1, .)
OSError: [Errno 9] Bad file
descriptor

Uso python2.6 pq necesito el modulo MySQLdb y no lo he encontrado
para python2.5
Existe scapy para python2.6 en Windows o MySQLdb para python2.5, de
tal manera que no tenga que editar ningun script?

Otra cosa probe el script
anterior en Ubuntu con el paquete python-scapy instalado y tampoco funciona, en 
este
caso solo se queda haciendo no se que y sin dar ninguna respuesta.

Saludos,
Boris.



---
La mejor vacuna contra el virus A(H1N1) es la higiene personal
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ayuda con scapy

2010-02-23 Por tema Chema Cortes
El 23 de febrero de 2010 17:38, Boris Perez Canedo
inf200...@ucf.edu.cu escribió:

 Hace pocos dias escribi sobre la instalacion de scapy en Windows. En ese 
 momento trataba de instalar scapy  usando python2.6. Me daba un error de 
 sintaxis con la palabra with que es reservada para python2.6 en adelante y 
 que aparentemente scapy usa como variable. Hice algo que no se si esta del 
 todo bien, borre la variable with que se pasaba como argumento en dos 
 funciones de la siquiente manera:

 tr = map(lambda x: Gnuplot.Data(x,lines), trt.values())# with = lines

 world = Gnuplot.File(conf.gnuplot_world,lines)# with = lines

 donde ahora esta lines antes estuvo with = lines pero esto en python2.6 
 da el error ya mencionado.

Es posible que el truco funcione.

Hacerte notar que el fallo está en Gnuplot, más que en scapy. Aunque
el proyecto python-gnuplot hace tiempo que no se actualiza,
distribuciones como ubuntu han sustituído en gnuplot  'with' por
'with_' (con subrayado), cambiando la API que usan otros paquetes como
scapy:

http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3


 Todo parecia funcionar bien hasta que corro este script y me da el siguiente 
 error que me parece no tiene nada que ver con lo que hice ya que el paquete 
 para graficos no lo instale pq no lo necesitaba.

 Obtener todos los ip usados en una subred.
 mi subnet mask es 255.255.252.0
 mi direccion ip 10.14.19.12
 por si me equivoque al determinar la direccion de red.(10.14.16.0/22)

 from scapy import *
 ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
 ans.summary(lambda (s,r): r.sprintf(%Ether.src% %ARP.psrc%) )

 El error:

 Begin emission:
 Finished to send 1024 packets.(aqui todo parece bien)

 Traceback (most recent call last):
   File D:\Trabajo\scripts\arping.py, line 2, in module
     
 ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)
   File C:\Python26\lib\site-packages\scapy.py, line 11295, in srp
     a,b,c=sndrcv(s ,x,*args,**kargs)
   File C:\Python26\lib\site-packages\scapy.py, line 3, in sndrcv
     os.write(1, .)
 OSError: [Errno 9] Bad file descriptor

Da error al intentar escribir en el fichero con id=1, probablemente
stdout/stdin en sistemas linux. Desconozco qué pretende hacer aquí.


 Uso python2.6 pq necesito el modulo MySQLdb y no lo he encontrado para 
 python2.5
 Existe scapy para python2.6 en Windows o MySQLdb para python2.5, de tal 
 manera que no tenga que editar ningun script?

Si no puedes actualizar scapy y sus dependencias, para python 2.5
puedes encontrar mysqldb-1.2.2 en la web de sourceforge:

http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.win32-py2.5.exe/download


 Otra cosa probe el script anterior en Ubuntu con el paquete python-scapy 
 instalado y tampoco funciona, en este caso solo se queda haciendo no se que y 
 sin dar ninguna respuesta.

En ubuntu (karmic) el paquete python-gnuplot tiene cambiada en su API
el 'with' por 'with_'. Intenta actualizar scapy y sus dependencias.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ayuda con scapy

2010-02-23 Por tema Boris Perez Canedo



 El 23 de febrero de 2010 17:38, Boris Perez Canedo 

inf200...@ucf.edu.cu escribi�: 
 
 Hace pocos dias
escribi sobre la instalacion de scapy en Windows. En ese momento 
 trataba
de instalar scapy �usando python2.6. Me daba un error de sintaxis con la 
 palabra with que es reservada para python2.6 en adelante y que
aparentemente scapy 
 usa como variable. Hice algo que no se si esta del
todo bien, borre la variable with 
 que se pasaba como argumento
en�dos funciones de la siquiente manera: 
 
 tr =
map(lambda x: Gnuplot.Data(x,lines), trt.values())# with = lines

 
 world =
Gnuplot.File(conf.gnuplot_world,lines)# with = lines 
 
 donde ahora esta lines antes estuvo with =
lines pero esto en python2.6 da el 
 error ya mencionado. 
 
 Es posible que el truco funcione. 
 
 Hacerte notar
que el fallo est� en Gnuplot, m�s que en scapy. Aunque 
 el
proyecto python-gnuplot hace tiempo que no se actualiza, 
 distribuciones como
ubuntu han sustitu�do en gnuplot 'with' por 
 'with_' (con subrayado),
cambiando la API que usan otros paquetes como 
 scapy: 
 

http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3 
 


 Todo parecia funcionar bien hasta que corro este script y me da el
siguiente error que 
 me parece no tiene nada que ver con lo que hice ya
que el paquete para graficos no lo 
 instale pq�no lo necesitaba. 
 
 Obtener todos los ip usados en una subred. 
 mi
subnet mask es 255.255.252.0 
 mi direccion ip 10.14.19.12 

por si me equivoque al determinar la direccion de red.(10.14.16.0/22) 
 
 from scapy import * 

ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)

 ans.summary(lambda (s,r): r.sprintf(%Ether.src% %ARP.psrc%) )

 
 El error: 
 
 Begin emission:

 Finished to send 1024 packets.(aqui todo parece bien) 
 
 Traceback (most recent call last): 
 � File
D:\Trabajo\scripts\arping.py, line 2, in module 

���
ans,unans=srp(Ether(dst=ff:ff:ff:ff:ff:ff)/ARP(pdst=10.14.16.0/22),timeout=2)

 � File C:\Python26\lib\site-packages\scapy.py, line
11295, in srp 
 ��� a,b,c=sndrcv(s ,x,*args,**kargs) 
 � File C:\Python26\lib\site-packages\scapy.py, line 3,
in sndrcv 
 ��� os.write(1, .) 

OSError: [Errno 9] Bad file descriptor 
�
Hola y disculpen haber
tenido que escribir tanto sobre mi problema.�


Acabo de correr el
script en Windows y funciona, lo que sucedia era que antes lo corri desde el 
IDLE de
python2.6 y por eso daba el error, pero cuando lei tu comentario 

 Da
error al intentar escribir en el fichero con id=1, probablemente 
 stdout/stdin
en sistemas linux. 
 

se me ocurrio correrlo desde la consola. Voy a
ver si en Ubuntu obtengo el mismo resultado.

Muchas gracias.

Otra
cosa, estoy utilizando el scapy para obtener entre otras cosas los ips 
utilizados en una
subred dada.

Mientras me rompia la cabeza pensando que era lo que salia mal
con scapy,�pense en hacer algo como esto:

import os,re
from
multiprocessing import Process, Lock

def ping(lck, host):
��� options = '-n 1 -w 2 '
��� f = os.popen('ping ' + options + host)
��� data
= f.read()
��� match =
re.search(r\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL), data) # machea una
direccion ip utilizada
��� if match:
��� ip = match.group()
��� lck.acquire()
��� print ip
��� lck.release()
��� 

if __name__ == '__main__':
��� lock = Lock()

��� for host in ['10.14.16.5','10.14.19.12']:
��� Process(target=ping, args=(lock,
host)).start()


Que parece funcionar bien. Pero aqui el problema es como a partir de una
direccion de red (10.14.16.0/22) generar una lista de ip�similar a la que 
utilizo
arriba (pero con todos).

Saludos.
Boris

�


---
La mejor vacuna contra el virus A(H1N1) es la higiene personal
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/