PDA

Ver la versión completa : Saber la version de phpBB3 con este script Python



chewarrior
26-05-2014, 21:01
Aquí dejo el script por si puede ayudar a alguien que este empezando en Python:



import socket
import sys
import random

#Python 2.7
#By Chewarrior script phpBB3 version alfa



Browser = ["Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0"
, "Mozilla/5.0 (X11; Linux i686; rv:29.0) Gecko/20100101 Firefox/29.0",
"User-Agent: Googlebot/2.1", ]

Defectcss = ["styles/subsilver2/style.cfg",
"styles/prosilver/style.cfg"]


def check():




if len(sys.argv) < 4:
print ("Parametros insuficientes")
print ("URL PATH PORT")
print ("Ejemplo: ./checkphpbb www.phpBB.es / 80 ")
print ("Ejemplo: ./checkphpbb www.phpBB.es /Foro/ 80")
print ("Ejemplo: ./checkphpbb foro.phpBB.es /Micarpeta/ 80")

else:
return 1


def VersionCms(datos,cont):
tam=len(datos)
Buffer="\t"
pos = datos.find("version",0,tam)

if pos == -1:
print ("\tError al leer style.conf")
else:
Buffer = Buffer+"Read "+Defectcss[cont]+" "
Buffer = Buffer+"PhpBB "+datos[pos:tam]

print (Buffer+" ")

def InfoServer(datosServer):


aux = "0"
BufferServer = ""
posServer = datosServer.find("Server:", 0)




if posServer == -1:
print ("\tError al leer datos del Servidor")
else:
while (ord(aux)!=10):

aux = datosServer[posServer]
BufferServer = BufferServer+aux
posServer = posServer +1

print ("\n\t .....................Version phpBB.....................\n")
print ("\t"+BufferServer)


def conectar(URL,PORT,peticion):

data = ""

#print peticion
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((URL, int(PORT)))
s.send(peticion)
data = s.recv(2024)
#print data

s.close()
return data


if check() == 1:

cont = 0
chekingServer = 0
URL = sys.argv[1]
Puerto = sys.argv[3]
PATH = sys.argv[2]
while (cont < 2):




peticion = "GET "+PATH+Defectcss[cont]+" /HTTP/1.1\r\nHOST:"+URL+"\r\n"\
+Browser[random.randrange(3)]+"\r\n\r\n"

data = conectar(URL, Puerto, peticion)

if chekingServer == 0:
InfoServer(data)

VersionCms(data,cont)




cont = cont + 1
chekingServer = 1
else:
exit


Para Python 3.x:

Dado los cambios en el tratamiento de los tipos de datos y las codificaciones de caracteres de python 3.x si queréis hacer funcionar el script en esta versiones tenéis que codificar en unicode las variables que se envían por el socket y luego decodificar las que se reciben.