FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Botnar som används för Black hat SEO är numera plåga som inte ungår någon forum eller blogg ägare, efter en slump sprungit på mjukvara som används för black hat SEO , så hittade jag url: http://www.stopforumspam.com/
Här är mitt bidrag till ett bättre internet, jag är hobby programmerare, därav får ni ta koden för vad den här. Jag har shell access på min burk, därav så kan förfarande som beskriv nedan vara lite annorlunda för webhotell som saknar shellaccess. Instruktioner nedan fungera för mac och linux användare, för Windows RTFM eller ladda hem Vbox , kör ingång virtuell maskin med linux. Värt att notera den första scriptet körs via enklast php_cli och det kommer troligen göra time out man kör det på webhotelll miljö via http. IP Ban filen innehåller ca 180k rader ip adresser,. Notera 2 : fopen ,kommer skapa filer i /tmp/ , kommer antaligen inte vara så populärt hos Ert webhotell, så byt /tmp till getcwd(). i det fopen avsnitt som finns nedan. När ni ser att scriptet fungera, så kommentara bort logg delen av koden. Kod 2 , förutsätter att man har loggat in på DBn redan. Hur gör? Se första raderna kod 1 fram till // Slut på DB login Och ni får jättegärna bidra med smartare kod och förbättringar.... Jag har inte märkt av någon prestanda problem. Men det kan bli ett problem i webhotell miljöer. Instruktioner : 1) Ladda hem databasen från http://www.stopforumspam.com/downloads/ Med blockerade IP addresser. Packa upp filen och dra upp ett bash skriv Kod:
cat filnamn | tr -t , '\n' > evil_ip.txt Kod:
CREATE TABLE `banIP` ( `ban_id` int(11) NOT NULL AUTO_INCREMENT, `ban_ip` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '', `ban_time` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ban_id`), KEY `ban_id` (`ban_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; Kod:
<? error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); define( DB_SERVER, "127.0.0.1"); define( DB_SERVER_USERNAME, "dittusername"); define( DB_SERVER_PASSWORD, "dittpassword"); define( DB_DATABASE, "dindatabas"); define("OUTPUT_CHARSET","ISO-8859-1"); $link = mysql_connect( DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD); $link = mysql_select_db( DB_DATABASE ); // Slut på DB login $ipfile ="/tmp/evil_ip.txt"; $handle = @fopen( $ipfile, "r"); if ($handle) { $X=0; while (!feof($handle)) { $data = fgets($handle, 32768 ); $INLINE2 = str_replace( "\n","", $data); $SQL0 = "SELECT * FROM banIP WHERE ban_ip='".$INLINE2."';"; $res0 = mysql_query ( $SQL0 ); if ( mysql_num_rows($res0) == 0 ) { $tid = time(); $SQL = "INSERT banIP ( ban_ip , ban_time ) VALUES ( '$INLINE2', '$tid' );"; $res = mysql_query ( $SQL ); print "\n".$SQL." res=".$res; } } } ?> Kod:
<? function CheckEvilIP ( $IP ) { $URL = "http://127.0.0.1/"; $SQL0 = "SELECT * FROM banIP WHERE ban_ip='".$IP."';"; $res0 = mysql_query ( $SQL0 ); if ( mysql_num_rows($res0) > 0 ) { // Finns ondskan i databasen? $handle = fopen("/tmp/evil-ip-address.txt", "a"); fwrite($handle,"\n". $_SERVER['REMOTE_ADDR'] ); fclose( $handle ); header ('HTTP/1.1 301 Moved Permanently'); header ('Location: '.$URL); } else if ( mysql_num_rows($res0) ==0 ) { // Det finns ingen ondska. $urlchecker = file_get_contents('http://www.stopforumspam.com/api?ip='.$IP); if (strpos($urlchecker, 'yes') ) { $handle = fopen("/tmp/evil-new-ip-address.txt", "a"); fwrite($handle,"\n". $_SERVER['REMOTE_ADDR'] ); fclose( $handle ); $tid = time(); $SQL = "INSERT banIP ( ban_ip , ban_time ) VALUES ( '$IP', '$tid' );"; $res = mysql_query ( $SQL ); header ('HTTP/1.1 301 Moved Permanently'); header ('Location: '.$URL); } } } ?> Slutligen : Anropa funktionen med : Kod:
CheckEvilIP ( $_SERVER['REMOTE_ADDR'] ); Senast redigerad av klein den 2011-10-06 klockan 15:21 |
||
![]() |
![]() |
|
|