ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Perl с нуля на примере
  #1  
Старый 16.03.2006, 00:41
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
Smile Perl с нуля на примере

Решил написать статью. Опять таки для начинающих в области языка Perl.
Решил просто подробно описать иногда нужную прогу - парсер, написанный мною.

Надеюсь статья поможет новичкам

Эта програмка расчитана на создание словаря для брутуса в виде логин:логин
используя логины файла /etc/passwd

Вот собственно код:
Код:
#!/usr/bin/perl

$outfilename = 'parced.txt';
  
if ($ARGV[0] eq '') {print "\nsyntax:\n\tperl parcer.pl [filepath]\nExample: \n\tperl parcer.pl passwd";exit 0;}

$filepath = $ARGV[0];
open(inptfl,"< $filepath") or die print "\n\nError opening file!";
open(STDOUT,"> $outfilename") or die print "\n\nError writing file!";
@inputrow = <inptfl>;

foreach (@inputrow) {
$u = index $_,':',0;
$name = substr $_,0,$u;
$i = substr $name,0,1;
(print "$name:$name\n") unless (($i eq '#')or($name eq ''));
}

close(inptfl);
close(STDOUT);

Ну что ж... преступим к описанию.....
Итак. Ну я не буду ничего говорить про первую строку - итак все понятно.

Для удобства объявляем переменную $outfilename, в которой указываем
имя исходящего файла-словаря.
Далее мы оператором if проверяем входящий параметр, и если он не указан,
то выводим сообщение. Еще надо учесть что в перле есть несколько операторов
сравнения. Одни из них это '==' и 'eq'. Отличие в том, что первый сравнивает
численные значения переменных, а 'eq' сравнивает строки.
Мы используем массив ARGV. Это системный массив. В нем указываються все
входящие данные. И так как нам нужно первое, то пишем $ARGV[0], так как счет
всегда начинаеться с нуля.

Далее если ARGV пустой, то 'exit 0;' - выходим из программы, возвращая 0.
Если же нет, то идем далее. Записываем в переменную $filepath путь к файлу,
который откываем для парсинга. После этого открываем этот файл.
Синтаксис такой:

open ДЕСКРИПТОР, ИМЯ_ФАЙЛА;

так же в начале имени файла стоит знак '<' обозначающий, что файл открыт только на чтение
соответсвенно знак '>' - открытие на запись. после оператора OPEN идет OR DIE. Это место
код которого будет выполняться если не получиться открыть файл.

Будем использовать немного не стандартный, но более удобный (для меня =) ) метод записи в файл.
Далее поймете какой. Для начала файлу, куда записываем, присваеваем дескриптор STDOUT. это
указатель на исходящий буффер. То есть таким образом используя функцию вывода на экран (print)
мы будем писать в файл =)

Для удобства работы нужно разбить текст входящего файла по строкам. Для этого пишем:

@inputrow = <inptfl>;

Мы вписываем в массив 'inputrow' построчно данные из файла с дескриптором 'inptfl'
Если кто незнает, что такое дескриптор, то скажу. Дескриптор - это переменная-указатель на
файл.

Далее испрользуем оператор 'foreach'.
Синтаксис:

foreach $i
{
}

Этот оператор берет переменную или массив, и подставляет все значения поочередно в переменную '$_'
и повторяет свой блок пока не дойдет до конца массива.
Очень интересная функция 'index'. Она ищет указанный текст и возвращает его позицию.
Синтаксис:

index EXPR,STR,POS

EXPR - это та переменная, где ищем.
STR - выражение которое ищем.
POS - начальная позиция.

Мы ищем первый в строке элемент ':'. Его позицию записываем в переменную $u.
Теперь же ж нам нужно прочитать текст. Для этого воспользуемся функцией substr.
Синтаксис:

substr EXPR,POS1,POS2

EXPR - понятно...
POS1 - начальная позиция (откуда читать).
POS2 - конеченая позиция.

После всего этого сделаем проверку на наличие коментариев, или пустой строки.
Для этого воспользуемся оператором 'unless'. Этот оператор очень похож на if
но отличаеться тем, что выражение слева от него выполняеться всегда, кроме
случаев описанных справа.

Вообщем как я и говорил, с помощью print мы записываем данные в файл
далее с помощью 'close' закрываем открытые фалы, указывая в аргументе их
дескрипторы.

Запускаем и тестируем =))
 
Ответить с цитированием

  #2  
Старый 16.03.2006, 01:35
Аватар для w4rd3n
w4rd3n
Banned
Регистрация: 06.10.2005
Сообщений: 180
Провел на форуме:
244618

Репутация: -4
По умолчанию

Норм статья почему токо этот скрипт взял не поянл +1
 
Ответить с цитированием

  #3  
Старый 16.03.2006, 01:49
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

За смайлики в статье, минус бы поставил если мог...
Орфографических ошибок вроде нет, молодец...
 
Ответить с цитированием

  #4  
Старый 16.03.2006, 07:47
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

perldoc perlstyle
perldoc strict
Прежде, чем учить, выучись сам!!!
 
Ответить с цитированием

  #5  
Старый 13.04.2006, 17:48
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Неплохо бы сделать так, чтобы добавлялись пользователи с рабочими шелами.
 
Ответить с цитированием

  #6  
Старый 14.04.2006, 02:04
Аватар для CampeR
CampeR
Познающий
Регистрация: 21.03.2006
Сообщений: 50
Провел на форуме:
141332

Репутация: 16
Отправить сообщение для CampeR с помощью ICQ
По умолчанию

Неплохая статейка скопировал себе потом опробую, ставлю плюсик...
 
Ответить с цитированием

  #7  
Старый 14.04.2006, 07:45
Аватар для Desr0w
Desr0w
Постоянный
Регистрация: 01.02.2006
Сообщений: 523
Провел на форуме:
1730553

Репутация: 319


Отправить сообщение для Desr0w с помощью ICQ
По умолчанию

Цитата:
Эта програмка расчитана на создание словаря для брутуса в виде логин:логин
используя логины файла /etc/passwd
Скорее в виде комбо листа
+
 
Ответить с цитированием

  #8  
Старый 29.08.2006, 17:49
Аватар для Digimortal
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

Цитата:
Сообщение от TaNkist  
Неплохо бы сделать так, чтобы добавлялись пользователи с рабочими шелами.
Ага, но не с любыми а конкретно из числа рутовых на microsoft.com , pentagon.gov , и nasa.gov.

А вообще (говорю как новичек в Perl) - читать о написания парсера просто неинтересно. Такое в любом учебнике найти можно. Лучше б эксплойт какой-нить разобрал...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perl с нуля. Часть первая. tclover Авторские статьи 39 12.04.2010 19:08
Опасность ошибок Perl недооценивалась? 1251soldier Мировые новости 0 01.12.2005 20:56
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Проблемы безопасности Веб-интерфейсов почтовых сервисов на примере rambler.ru k00p3r Чужие Статьи 0 13.07.2005 08:54
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ