<p>&gt; El 23 de febrero de 2010 17:38, Boris Perez Canedo <br />&gt;
&lt;inf200523@ucf.edu.cu&gt; escribi&oacute;: <br />&gt; <br />&gt;&gt; Hace pocos dias
escribi sobre la instalacion de scapy en Windows. En ese momento <br />&gt;&gt; trataba
de instalar scapy &nbsp;usando python2.6. Me daba un error de sintaxis con la <br
/>&gt;&gt; palabra &quot;with&quot; que es reservada para python2.6 en adelante y que
aparentemente scapy <br />&gt;&gt; usa como variable. Hice algo que no se si esta del
todo bien, borre la variable with <br />&gt;&gt; que se pasaba como argumento
en&nbsp;dos funciones de la siquiente manera: <br />&gt;&gt; <br />&gt;&gt; tr =
map(lambda x: Gnuplot.Data(x,&quot;lines&quot;), trt.values())# with = &quot;lines&quot;
<br />&gt;&gt; <br />&gt;&gt; world =
Gnuplot.File(conf.gnuplot_world,&quot;lines&quot;)# with = &quot;lines&quot; <br
/>&gt;&gt; <br />&gt;&gt; donde ahora esta &quot;lines&quot; antes estuvo with =
&quot;lines&quot; pero esto en python2.6 da el <br />&gt;&gt; error ya mencionado. <br
/>&gt; <br />&gt; Es posible que el truco funcione. <br />&gt; <br />&gt; Hacerte notar
que el fallo est&aacute; en Gnuplot, m&aacute;s que en scapy. Aunque <br />&gt; el
proyecto python-gnuplot hace tiempo que no se actualiza, <br />&gt; distribuciones como
ubuntu han sustitu&iacute;do en gnuplot 'with' por <br />&gt; 'with_' (con subrayado),
cambiando la API que usan otros paquetes como <br />&gt; scapy: <br />&gt; <br />&gt;
&lt;http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3&gt; <br />&gt; <br />&gt;
<br />&gt;&gt; Todo parecia funcionar bien hasta que corro este script y me da el
siguiente error que <br />&gt;&gt; me parece no tiene nada que ver con lo que hice ya
que el paquete para graficos no lo <br />&gt;&gt; instale pq&nbsp;no lo necesitaba. <br
/>&gt;&gt; <br />&gt;&gt; Obtener todos los ip usados en una subred. <br />&gt;&gt; mi
subnet mask es 255.255.252.0 <br />&gt;&gt; mi direccion ip 10.14.19.12 <br />&gt;&gt;
por si me equivoque al determinar la direccion de red.(10.14.16.0/22) <br />&gt;&gt; <br
/>&gt;&gt; from scapy import * <br />&gt;&gt;
ans,unans=srp(Ether(dst=&quot;ff:ff:ff:ff:ff:ff&quot;)/ARP(pdst=&quot;10.14.16.0/22&quot;),timeout=2)
<br />&gt;&gt; ans.summary(lambda (s,r): r.sprintf(&quot;%Ether.src% %ARP.psrc%&quot;) )
<br />&gt;&gt; <br />&gt;&gt; El error: <br />&gt;&gt; <br />&gt;&gt; Begin emission:
<br />&gt;&gt; Finished to send 1024 packets.(aqui todo parece bien) <br />&gt;&gt; <br
/>&gt;&gt; Traceback (most recent call last): <br />&gt;&gt; &nbsp; File
&quot;D:\Trabajo\scripts\arping.py&quot;, line 2, in &lt;module&gt; <br />&gt;&gt;
&nbsp;&nbsp;&nbsp;
ans,unans=srp(Ether(dst=&quot;ff:ff:ff:ff:ff:ff&quot;)/ARP(pdst=&quot;10.14.16.0/22&quot;),timeout=2)
<br />&gt;&gt; &nbsp; File &quot;C:\Python26\lib\site-packages\scapy.py&quot;, line
11295, in srp <br />&gt;&gt; &nbsp;&nbsp;&nbsp; a,b,c=sndrcv(s ,x,*args,**kargs) <br
/>&gt;&gt; &nbsp; File &quot;C:\Python26\lib\site-packages\scapy.py&quot;, line 11113,
in sndrcv <br />&gt;&gt; &nbsp;&nbsp;&nbsp; os.write(1, &quot;.&quot;) <br />&gt;&gt;
OSError: [Errno 9] Bad file descriptor <br />&gt;&nbsp;<br />Hola y disculpen haber
tenido que escribir tanto sobre mi problema.&nbsp;<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 />&gt; Da
error al intentar escribir en el fichero con id=1, probablemente <br />&gt; stdout/stdin
en sistemas linux. <br />&gt; <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,&nbsp;pense en hacer algo como esto:<br /><br />import os,re<br />from
multiprocessing import Process, Lock</p>
<p>def ping(lck, host):<br />&nbsp;&nbsp;&nbsp; options = '-n 1 -w 2 '<br
/>&nbsp;&nbsp;&nbsp; f = os.popen('ping ' + options + host)<br />&nbsp;&nbsp;&nbsp; data
= f.read()<br />&nbsp;&nbsp;&nbsp; match =
re.search(r&quot;\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL)&quot;, data) # machea una
direccion ip utilizada<br />&nbsp;&nbsp;&nbsp; if match:<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip = match.group()<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lck.acquire()<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ip<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lck.release()<br />&nbsp;&nbsp;&nbsp; </p>
<p>if __name__ == '__main__':<br />&nbsp;&nbsp;&nbsp; lock = Lock()</p>
<p>&nbsp;&nbsp;&nbsp; for host in ['10.14.16.5','10.14.19.12']:<br
/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp;similar a la que utilizo
arriba (pero con todos).<br /><br />Saludos.<br />Boris<br /><br />&nbsp;</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>