[Python-es] ayuda con scapy

Chema Cortes pych3m4 en gmail.com
Mar Feb 23 19:55:51 CET 2010


El 23 de febrero de 2010 17:38, Boris Perez Canedo
<inf200523 en 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 11113, 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.



Más información sobre la lista de distribución Python-es