我确定你们都使用了Metasploit。
在Metasploit中,当用户按下回车键或键入任何命令Metasploit执行它时,返回msf:>
。
我想知道如何在Perl中执行此操作(几乎可以创建一个Perl shell,它执行命令并使用该小标识符返回)。
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);
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
按照大卫的回答,我有时间宣传Zoidberg
。 Zoidberg
是另一个Perl shell(如PSh
),但它是模块化的,可嵌入的和可扩展的。
Zoidberg::Shell
为您的应用程序构建shell,或Zoidberg::Fish
插件系统为您的需求构建一个插件,该插件可以在Zoidberg
内部运行。它很可能定义一些命令,可能还有语法和操作模式。这个典型的例子是一个SQL插件,它允许Zoidberg识别SQL语句,然后将它们传递给等待的数据库句柄并直接从shell内部返回结果!碰巧,我是新的维护者。 Zoidberg刚刚在几年内首次发布,它纠正了多年来出现的几个漏洞。因此,虽然我还不是它的专家,但我可能最接近存在。
答案 2 :(得分:0)
实际上有一些名为 Perl Shell (psh)的内容,可从CPAN档案中获取。
我还没试过,但文档就在那里:
$ cpan
cpan> install Psh
我玩了一下。我不得不改变PS1
所以它不会干扰Psh。最初,我的PS1设置为:
PS1=$(print -n "`logname`@`hostname`:";if [[ "${PWD#$HOME}" != "$PWD" ]] then; print -n "~${PWD#$HOME}"; else; print -n "$PWD";fi;print "\n$ ")
但是,Psh并不喜欢它。相反,如果我使用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.
但它确实启动了。我还没有想出shell历史编辑,但它确实需要Perl脚本:
david@DaveBook:david: PSH> foreach $foo (<*>) {
> print "$foo\n";
> }