Форум сайта python.su
Написал небольшой скрипт, который ищет открытые директории в корне сайта:
class CheckingThread ( threading.Thread ):
def __init__ ( self, length ):
# length - the length of the strings being checked
threading.Thread.__init__ ( self )
self.length = length
def run ( self ):
ml = ('abcdefghijklmnopqrstuvwxyz')
stra = ""
self.genstr(stra, 0, self.length, ml, 0, self.isdir)
def isdir( self, patha ):
global fileh
path = "http://www.site.com/" + patha + "/"
site = urlopen(path).read()
if(site.startswith("<!DOCTYPE HTML PUBLIC \"-//W")):
print path + "\t\t => Exists"
fileh.write(path + "\n")
else:
print path + "\t\t => -"
def genstr( self, stra, k, n, a, count, fun ):
# Generates all possible strings of n length out of the given
# list of symbols (a) and passes each of them to function fun
#print a
if(k<n):
for i in a:
if(len(stra) == k):
stra += i
else:
stra = stra[:-1] + i
count = self.genstr(stra, k+1, n, a, count, fun)
return count
else:
fun(stra)
return count + 1
fileh = open("ahaha.txt", 'w')
for x in xrange ( 13 ):
z = x + 3
CheckingThread ( z ).start()
fileh.close()
Офлайн
Ну, наверное 13 потоков наверное все таки много памяти кушают, когда запущены все одновременно и, особенно, когда используется рекурсия :)
Я бы использовал try…except и вывел stack traceback при возникновении ошибки, чтобы понять в каком месте она возникает.
Кроме того, использовать 1 файл для записи из разных потоков - не самая лучшая идея.
А зачем вам открытые директории чужих сайтов?
Офлайн
Я только начал работать с потоками, поэтому еще плохо представляю, как они работают, сколько ресурсов едят и как их определять :) Спасибо за ссылку, сейчас буду читать и пробовать. Пока что интерпретатор выдает в stack traceback, что ошибка вылетает при попытке открытия url в одном из потоков.
Какое количество потоков можно считать оптимальным? Например, для моей задачи.
Как лучше организовать работу с файлами при использовании потоков?
Идея скрипта возникла, когда я у знакомого на сайт зашел и решил проверить дырки. Самой большой дырой оказались некоторые открытые системные директории. Захотелось найти все, чтобы сразу ему на них указать (и заодно прибавить трафика, пусть и с одного IP). Но написание простого скрипта несколько затянулось… стало интересно разобраться с потоками.
Отредактировано (Ноя. 29, 2009 15:05:14)
Офлайн
Ghost2008Подбирать экспериментально.
Какое количество потоков можно считать оптимальным? Например, для моей задачи.
Ghost2008В данном случае можно использовать Queue или Lock.
Как лучше организовать работу с файлами при использовании потоков?
Ghost2008Только не забывайте, что благими намерениями можно и навредить. Так, например, одним из этапов подготовки нападения на сайт хакеров есть как раз проверка доступных извне ресурсов.
Идея скрипта возникла, когда я у знакомого на сайт зашел и решил проверить дырки. Самой большой дырой оказались некоторые открытые системные директории.
Офлайн