Re: [Python-es] ayuda con scapy
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
Ó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
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
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
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
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/