<p>> El 23 de febrero de 2010 17:38, Boris Perez Canedo <br />>
<inf200523@ucf.edu.cu> escribió: <br />> <br />>> Hace pocos dias
escribi sobre la instalacion de scapy en Windows. En ese momento <br />>> trataba
de instalar scapy usando python2.6. Me daba un error de sintaxis con la <br
/>>> palabra "with" que es reservada para python2.6 en adelante y que
aparentemente scapy <br />>> usa como variable. Hice algo que no se si esta del
todo bien, borre la variable with <br />>> que se pasaba como argumento
en dos funciones de la siquiente manera: <br />>> <br />>> tr =
map(lambda x: Gnuplot.Data(x,"lines"), trt.values())# with = "lines"
<br />>> <br />>> world =
Gnuplot.File(conf.gnuplot_world,"lines")# with = "lines" <br
/>>> <br />>> donde ahora esta "lines" antes estuvo with =
"lines" pero esto en python2.6 da el <br />>> error ya mencionado. <br
/>> <br />> Es posible que el truco funcione. <br />> <br />> Hacerte notar
que el fallo está en Gnuplot, más que en scapy. Aunque <br />> el
proyecto python-gnuplot hace tiempo que no se actualiza, <br />> distribuciones como
ubuntu han sustituído en gnuplot 'with' por <br />> 'with_' (con subrayado),
cambiando la API que usan otros paquetes como <br />> scapy: <br />> <br />>
<http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3> <br />> <br />>
<br />>> Todo parecia funcionar bien hasta que corro este script y me da el
siguiente error que <br />>> me parece no tiene nada que ver con lo que hice ya
que el paquete para graficos no lo <br />>> instale pq no lo necesitaba. <br
/>>> <br />>> Obtener todos los ip usados en una subred. <br />>> mi
subnet mask es 255.255.252.0 <br />>> mi direccion ip 10.14.19.12 <br />>>
por si me equivoque al determinar la direccion de red.(10.14.16.0/22) <br />>> <br
/>>> from scapy import * <br />>>
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="10.14.16.0/22"),timeout=2)
<br />>> ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%") )
<br />>> <br />>> El error: <br />>> <br />>> Begin emission:
<br />>> Finished to send 1024 packets.(aqui todo parece bien) <br />>> <br
/>>> Traceback (most recent call last): <br />>> File
"D:\Trabajo\scripts\arping.py", line 2, in <module> <br />>>
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="10.14.16.0/22"),timeout=2)
<br />>> File "C:\Python26\lib\site-packages\scapy.py", line
11295, in srp <br />>> a,b,c=sndrcv(s ,x,*args,**kargs) <br
/>>> File "C:\Python26\lib\site-packages\scapy.py", line 11113,
in sndrcv <br />>> os.write(1, ".") <br />>>
OSError: [Errno 9] Bad file descriptor <br />> <br />Hola y disculpen haber
tenido que escribir tanto sobre mi problema. <br /><br /><br />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 <br /><br />> Da
error al intentar escribir en el fichero con id=1, probablemente <br />> stdout/stdin
en sistemas linux. <br />> <br /><br />se me ocurrio correrlo desde la consola. Voy a
ver si en Ubuntu obtengo el mismo resultado.<br /><br />Muchas gracias.<br /><br />Otra
cosa, estoy utilizando el scapy para obtener entre otras cosas los ips utilizados en una
subred dada.<br /><br />Mientras me rompia la cabeza pensando que era lo que salia mal
con scapy, pense en hacer algo como esto:<br /><br />import os,re<br />from
multiprocessing import Process, Lock</p>
<p>def ping(lck, host):<br /> options = '-n 1 -w 2 '<br
/> f = os.popen('ping ' + options + host)<br /> data
= f.read()<br /> match =
re.search(r"\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL)", data) # machea una
direccion ip utilizada<br /> if match:<br
/> ip = match.group()<br
/> lck.acquire()<br
/> print ip<br
/> lck.release()<br /> </p>
<p>if __name__ == '__main__':<br /> lock = Lock()</p>
<p> for host in ['10.14.16.5','10.14.19.12']:<br
/> Process(target=ping, args=(lock,
host)).start()</p>
<p><br />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).<br /><br />Saludos.<br />Boris<br /><br /> </p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p></p>
<hr>
<p>La mejor vacuna contra el virus A(H1N1) es la higiene personal</p>
</body>
</html>