Perl Shell Execution - PullRequest
       0

Perl Shell Execution

0 голосов
/ 25 декабря 2011

Я уверен, что вы все использовали Metasploit .

В Metasploit, когда пользователь нажимает клавишу ввода или вводит любую команду, которую Metasploit выполняет, и возвращает обратно с msf:>.

Мне было интересно, как я могу сделать это в Perl (в значительной степени создать оболочку Perl, которая выполняет команды и возвращает обратно с этим небольшим идентификатором).

while (1) {
    if (<STDIN> eq defined) {
        print ">>"
    }

    $command = <STDIN>;
    if ($command =~ m/help/) {
        print "Help is on its way";
    } elsif ($command =~ m/exit/) {
        exit (1);
    }
}

Ответы [ 3 ]

2 голосов
/ 25 декабря 2011

Взгляните на термин :: * модули

термин :: ReadLine

термин :: Shell

1 голос
/ 26 декабря 2011

После ответа Дэвида пришло время продвигать Zoidberg.Zoidberg - это еще одна оболочка Perl (например, PSh), но она является модульной, встраиваемой и расширяемой.

  1. Вы можете использовать Zoidberg::Shell для создания оболочки для вашего приложения или
  2. вы можете использовать систему плагинов Zoidberg::Fish для создания плагина для ваших нужд, который будет работать внутриZoidberg сама.Скорее всего, он определит некоторые команды и, возможно, синтаксис и режим работы.Каноническим примером этого является плагин SQL, который позволяет Zoidberg распознавать операторы SQL, а затем передавать их в ожидающий обработчик БД и возвращать результаты непосредственно из оболочки!

Как это происходит, яЯ новый сопровождающий.Zoidberg только что выпустил свой первый релиз за несколько лет, в котором исправлено несколько ошибок, которые появлялись за эти годы.Так что, хотя я еще не эксперт в этом, я, вероятно, ближе всего к тому, кто существует.

Начните читать о Zoidberg со страницы руководства zoiduser, затемПодробнее о плагинах читайте в zoiddevel.

0 голосов
/ 26 декабря 2011

На самом деле есть нечто, называемое Perl Shell (psh) и доступное из архива CPAN.

Я не пробовал, но все документы есть:

$ cpan
cpan> install Psh

EDIT

Я немного поиграл с этим. Я должен был изменить PS1, чтобы он не мешал Psh. Первоначально мой PS1 был установлен на:

PS1=$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")

Но Пш не понравилось. Вместо этого, если я использую настройки Bash, он прекрасно работает:

PS1="\u@\h:\W: PSH> "

При запуске я также получаю следующие предупреждения:

Using an array as a reference is deprecated at /Library/Perl/5.12/Psh/StrategyBunch.pm line 260.
Using an array as a reference is deprecated at /Library/Perl/5.12/Psh/Strategy/Darwin_apps.pm line 47.

Но он запускается. Я не разобрался с редактированием истории оболочки, но он требует сценариев Perl:

david@DaveBook:david: PSH> foreach $foo (<*>) {
> print "$foo\n";
> }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...