![]() |
[PERL] Сканер портов. Требуется помощь
Есть сканер портов на перле...сканит диапазон ипов на один открытый порт...скорость откровенно крейсерная... поправьте ошибки и помогите прикрутить многопоточность
Код:
#!/usr/bin/perl |
Тут недавно вроде как уже был подобный вопрос...исходники тоже есть)
|
я прошу поправить конкретно мой случай
|
люди ну ап в конце концов...репой не обижу
|
ненавижу перл! перл учат лохи. (c) KSURi.
|
Цитата:
|
Kaimi ты же прошарен в перле...помоги новичку освоиться в нём
|
Нене...чоткее пасаны ждут похапе 6 и собираются кодить на нем... =\
|
чоткие патсаны на кубейсеке кодят
какой то страшный код, особенно вот это повергло в шок my $fip=$flist[0]*256*256*256+$flist[1]*256*256+$flist[2]*256+$flist[3]; =\\\ это что за пздц? я даже код боюсь разбирать Помню слип писал небольшой сканер ипов по порту, поищи Мб канеш с этим кто то поможет, но не я =( |
Меня пугает код) + Дофига сканеров портов по диапазону быстрых, зачем именно на перле
|
ну вот мне нужен конкретно на перле...мож у кого сорцы завалялись? ну или поправьте этот в конце концов..он работает..нужно только могопоточность прикрутить
|
Код:
use warnings; |
Один из лучших сканеров портов написан на перл а точнее nmap
Я бы на вашем месте посмотрел его исходники. |
zer0ska
Written in C, C++, Python |
Цитата:
|
Perl умер в 2003 году.
|
Kaimi не корректно работает...почему то всегда 10 потоков :(
|
Серверную винду поставь... или патч стек tcp/ip
|
пёрл умрет. останутся лишь интерпритаторы и все.
|
Точно, давайте дружно песать на яве
|
Цитата:
P.S.: читайте новости. abc рулит! |
Цитата:
Код HTML:
http://216.239.59.104/search?q=cache:DToLCztY8HUJ:www.tiobe.com/tiobe_index/index.htm+%22Programming+Language+Popularity%22&hl=ru&ct=clnk&cd=2&client=opera |
[offtopic]
Спасибо,поржал :) PHPoozy: Хм...а то пых под натиском питона, явы и прочего не умрет? или ты сидишь дро^W молишься на пхп6 ? :)) ЗЫЖ Думаю, тем кому нужен перл или тем кому тупо удобнее на нем писать - для тех он не умрет :)Или предлагаешь писать простые скрипты-однострочники на PHP^W быдлоязыках? ЗЗЫЖ Все вышенаписанное лишь личное мнение... [/offtopic] |
май ланг ис пайтон. питон всех порвет в скором будущем!
|
Цитата:
P.S.: PHP 94 тоже не молод. |
Гм...ну ты уж определись чтоли похапе или питон.... :))
В скором будущем, я думаю, уже не надо будет заморачиваться насчет этого, ибо производительность железа будет такой, что хоть на кубейсике клепай cgi, дело каждого - на чем он пишет, может кому-то удобнее пхп, кому-то перл, кому-то C# итд итп...а вот из-за тебя,как видишь - сплошной оффтоп пошел(или ты просто посты набивал) ;))) ЗЫЖ А вы, товарищ, как я посмотрю - любитель похоливарить на пустом месте :) |
Цитата:
|
Цитата:
|
это надо так засрать тему...2 страницы оффтопа...поналепить бы всем минусов
|
Цитата:
|
С чего ты взял что создается именно 10 потоков?
|
посчитал когда он работал
|
Каким образом?
|
Sharky, там в самом начале было что-то про оптимизацию, так вот у меня вопрос в связи с этим: "А какая именно часть работает долго? Та что вычисляет ip адреса или что осуществляет подключение?"
Соответственно предложение следующее: если долго вычисляются ip-шники, то надо менять код их вычисления! На мой взгляд можно было все это сделать намного проще и передавать в функцию пинг готовый ip. Если вычисляется сравнительно быстро (по сравнению с пингом), то выносить каждый пинг в отдельный поток. Правда, насколько я знаю, потоки действенны, когда их кол-во до 16 штук. |
сама генерация ипов вроде быстро проходит...а вот коннекты долго
Kaimi они выводятся по 10 штук за раз |
А на каком диапазоне ты проверяешь? Почему именно 10? если увеличить диапазон, что-то меняется?
|
вроде нет
|
А по поводу оптимизации кода:
for (my $i=$fip; $i<=$tip; $i++) заменить на for ($fip .. $tip) $ip="$d1.$d2.$d3.$d4"; заменить на $ip=join ".", ($d1,$d2,$d3,$d4); print "$_[0] is Good\n"; заменить на print $_[0]." is Good\n"; После этого производительность должна увеличится на доли миллисекунд. :-) Но это факт! И вообще вычисление ip-шников вынести в отдельную функцию. И тогда программа должна работать по следующему алгоритму: 1)Получаем начальный и конечный ip; 2)Вычисляем все ip, которые будем пинговать, и переписываем их в общий массив; 3)Для каждого ip из общего массива создаем отдельный поток, который будет вызывать функцию sock(); |
| Время: 11:19 |