Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: EvilGoblin en 16 Abril 2010, 04:36 am



Título: [python] ayuda con script ¨^^(SOLUCIONADO)
Publicado por: EvilGoblin en 16 Abril 2010, 04:36 am
Código
  1. from subprocess import STDOUT, PIPE,Popen
  2. from tempfile import NamedTemporaryFile
  3.  
  4.  
  5. command = "iwlist wlan0 scan"
  6. tmpout = open("datos.txt","w+")
  7. p=Popen(command, stdout=PIPE,stderr=PIPE,shell=True).communicate()[0]
  8.  
  9. aux =p.rfind("Cell ")
  10.  
  11. cantidad = int (p[aux+5:aux+7])
  12. print cantidad
  13.  
  14. lista=[[0 for col in range(9)] for row in range(15)]
  15. i=0
  16.  
  17. aux=0
  18. aux2=0
  19. aux3=0
  20. #numero, ap, canal, calidad, ruido, encriptacion, bitrate
  21. while i < cantidad:
  22. aux=p.find("Cell ",aux+1)
  23. lista[i][0]=i
  24. lista[i][1] = p[aux+19:aux+36]
  25. aux2=p.find("\"",aux+1)
  26. aux3=p.find("\"",aux2+1)
  27. lista[i][2] = p[aux2+1:aux3]
  28. aux2=p.find("Channel",aux)
  29. aux3=p.find("\n",aux2+2)
  30. lista[i][3]=p[aux2+8:aux3]
  31. aux2=p.find("Quality=",aux)
  32. aux2=p.find("=",aux2)
  33. aux3=p.find(" ",aux2)
  34. lista[i][4]=p[aux2+1:aux3]
  35. aux2=p.find("level",aux2)
  36. aux2=p.find(":",aux2)
  37. aux3=p.find("\n",aux2)
  38. lista[i][5]=p[aux2+1:aux3]
  39. aux2=p.find("key",aux2)
  40. aux2=p.find(":",aux2)
  41. aux3=p.find("\n",aux2)
  42. lista[i][6]=p[aux2+1:aux3]
  43. aux2=p.find("Extra",aux)
  44. aux2=p.rfind("Mb/s",aux2)
  45. aux3=p.find(" ",aux2-3)
  46. lista[i][7]=p[aux2-10:aux3]
  47. i=i+1
  48.  
  49. print p
  50. i=0
  51. while i < cantidad:
  52. print lista[i][0]
  53. print lista[i][1]
  54. print lista[i][2]
  55. print lista[i][3]
  56. print lista[i][4]
  57. print lista[i][5]
  58. print lista[i][6]
  59. print lista[i][7]
  60. print "-----------------"
  61. i=i+1
  62.  
  63.  
  64. print "aca no deberia pasar"
  65.  
  66.  


la salida es esta

Código:
bash-3.1# python scan.py
2
wlan0     Scan completed :
          Cell 01 - Address: 00:15:6D:65:38:C7
                    ESSID:"5k Pro1"
                    Mode:Master
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=11/100  Signal level:7/100
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
                    Extra:tsf=0000002b77712736
                    Extra: Last beacon: 1000ms ago
          Cell 02 - Address: 00:24:D2:D6:95:D3
                    ESSID:"Speedy-WiFi"
                    Mode:Master
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=23/100  Signal level:8/100
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Extra:tsf=000000335db5179c
                    Extra: Last beacon: 968ms ago


0
00:15:6D:65:38:C7
5k Pro1
1
11/100
7/100
off
 Mb/s; 54
-----------------
1
00:24:D2:D6:95:D3
Speedy-WiFi
1
23/100
8/100
off
968ms ago

-----------------
aca no deberia pasar
bash-3.1#        

Mi pregunta es pork en el ultimo no llega a imprimir como deberia ( Mb/s; 54) y me imprime la final de linea

tmb me gustaria saber como evitar que imprima el final de linea en cada linea, o como concatenar el texto para formar 1 sola linea

Grax!


Título: Re: [python] ayuda con script ¨^^
Publicado por: Novlucker en 16 Abril 2010, 13:46 pm
No tengo idea y no tengo para probar, pero es raro que no aparezca eso :xD
Sobre la línea ...
2.6
Código
  1. print algo,
Lo importante es la coma final
3.x
Código
  1. print(algo,end='')
En python 3000 el print es una función, por lo que hay que cambiar los parámetros que trae por default, en este caso el valor default del end es '\n', así que lo dejamos como vacío :D

Saludos


Título: Re: [python] ayuda con script ¨^^
Publicado por: EvilGoblin en 17 Abril 2010, 01:35 am
Gracias !!!

si era con la coma el problema

y el otro tmb lo resolvi,

con rfind se va hasta el final de la linea entonces buscaba el ultimo valor y por eso nunca me daba lo que queria
lo solucione asi

Código
  1. aux2=p.rfind("Mb/s",aux,aux2)
  2.  
entonces busca desde la posicion de aux2 hasta aux en reversa :P



Título: Re: [python] ayuda con script ¨^^(SOLUCIONADO)
Publicado por: Novlucker en 17 Abril 2010, 03:02 am
Aaaaah :D
No me había pidido fijar bien, en fin solucionado entonces :P

Saludos