AntiMailBomber v PHP

6. března 2002

Aj vám už niekto poslal stovky či tisíce nevyžiadaných emailov do schránky? Museli ste vymazávať množstvo emailov, či sťahovať mnoho megabytov, ktoré ste aj tak vymazali? Ukáži vám až 5 spôsobov, ako tieto emaily cez PHP efektívne mazať.

V PHP existujú funkcie, ktoré majú názov IMAP funkcie. Pomocou protokolu IMAP a IMAP funkcí tak môžete pracovať s emailmi aj cez PHP. Tieto funkcie sú zakompilované na skoro všetkých platených serveroch, a zväčša i na free serveroch. A práve tie vám pomôžu.

Mailbomber, fake-mail a spam

Mailbomber je buď utilita napísaná v prakticky hocakom vyspelejšom jazyku, ale napr. aj v PHP. Táto dokáže za niekoľko sekúnd odoslať tisíce emailov. Tieto emaily majú zväčša rovnakú veľkosť a zhodný text, proste sú na vlas rovnaké. Tomu, kto ich poslal, ide len o to, aby vám zaplnil mailbox emailmi.

Fake-mail je email, ktorý má v podstate zmenené hlavičky. Tým pádom sa adresát, ak je odosielateľ šikovný, vôbec nemusí dozvedieť odkiaľ tento email prišiel. Keď vám niekto pošle spam (nevyžiadaný email), zväčša nepríde jeden – v dnešnej dobe se na amerických stránkach neoplatí nechávať svoj email – firmy platia ohromné peniaze za databázu týchto emailov. A potom vám denne chodia ponuky na "300% zrýchlenie počítača", či "Heslá na pornostránky" len za $14.99.

Na peť spôsobov

Najjednoduchšie je asi všetky emaily vymazať. Druhá možnosť je vymazať emaily s konštantnou veľkosťou (emaily z mail-bomberov majú zväčša rovnakú veľkosť – všetky), tretia je mazať emaily od určitého odosielateľa, ďaľšia mazať emaily z určitým predmetom a tá posledná je mazať maily od niekoho alebo s nejakým predmetom, ak odosielaleľa/predmet poznáte.

Zmazať všetky emaily

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);

for($i=0; $i<Count($s); $i++):
imap_delete($spoj, $i+1);
endfor;

Imap_expunge($spoj);
?>

Do tohoto skriptu doplňte adresu vášho mail servera. Môžete do neho doplniť i svoje meno a heslo, ale kvôli bezpečnosti ho odporúčam zadávať buď z formuláru, alebo priamo v url: skript.php?meno=LOGIN&heslo=HESLO. Skript sa veľmi jednoducho pripojí na mail server. Potom si zistí počet správ a do poľa $s uloží čísla správ. Potom pomocou cyklu for označíte emaily na zmazanie funkciou imap_delete(). Po ukončení cyklu ich definitívne vymažete funkciou imap_expunge().

Teraz prídu na rad troška zložtejšie skripty. Najskôr zdrojový kód, potom globálne vysvetlenie.

Zmazanie podľa veľkosti

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);

for($i=0; $i<Count($s); $i++):
$sub = substr($s[$i], -20, 20);
$sub = strtr($sub, "()", "–");
eregi("-(.*)-", $sub, $subs);
$velkost = substr($subs, 1, -7);
if(is_numeric($pocet[$velkost[$i]])) $pocet[$velkost[$i]]++;
else $pocet[$velkost[$i]] = 1;
endfor;

while(list($velk, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$sub2 = substr($s[$q], -20, 20);
$sub2 = strtr($sub2, "()", "–");
eregi("-(.*)-", $sub2, $subs2);
$velkost = substr($subs2, 1, -7);
if($velkost==$velk) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Zmazanie podľa odosielateľa

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);
for($i=0; $i<Count($s); $i++):
$ee = imap_fetch_header($spoj, $i+1);
eregi("From: (.*)X-sender", $ee, $eee);
$from = substr($eee, 6, -9);
if(is_numeric($pocet[$from[$i]])) $pocet[$from[$i]]++;
else $pocet[$from[$i]] = 1;
endfor;

while(list($fro, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("From: (.*)X-sender", $ee2, $eee2);
$from2 = substr($eee2, 6, -9);
if($from2==$fro) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Zmazanie podľa predmetu správy

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
$s = imap_headers($spoj);
for($i=0; $i<Count($s); $i++):
$ee = imap_fetch_header($spoj, $i+1);
eregi("Subject: (.*)Message-ID", $ee, $eee);
$from = substr($eee, 9, -11);
if(is_numeric($pocet[$from[$i]])) $pocet[$from[$i]]++;
else $pocet[$from[$i]] = 1;
endfor;

while(list($fro, $poc) = each($pocet)):
if($poc>9):
reset($s);
for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("Subject: (.*)Message-ID", $ee2, $eee2);
$from2 = substr($eee2, 9, -11);
if($from2==$fro) imap_delete($spoj, $q+1);
endfor;
endwhile;

imap_expunge($spoj);

?>

Už viete, ako sa pripojiť k serveru. Ďalej načítate do premennej $s hlavičky emailov. A teraz prichádzate k cyklu – prejdete všetky hlavičky. Tu je to skoro to isté – pomocou textových funkcií sa snažíte dostať k hľadanému reťazcu: či už ide o veľkosť emailu, odosielateľa, alebo predmet správy. Pri všetkých emailoch sú tieto položky usporiadané rovnako, čo je vynikajúci pevný bod. Teraz si vytvorte pole $pocet, do ktorého ukladáte počet emailov s rovnakou veľkosťou alebo rovnakým predmetom/odosielateľom. To je jedna časť. Keď už viete, ktoré emaily máte mazať, vymažte ich. Prejdite si pole $pocet, a emaily, ktorých je rovnakých viac ako 9, jednoducho vymažte. Postupujte rovnako, ako v prvej časti: nájdite si pevný bod. Potom porovnajte tieto dva údaje a ak sa zhodujú, tento email vymažte. Resp. nastavte ho na vymazanie, ukončite cyklus a pomocou funkcie imap_expunge tieto emaily definitívne vymažte.

Inteligentné mazanie

<?
$spoj = Imap_Open("{VAS_MAIL_SERVER/pop3}INBOX", $meno, $heslo);
if($how=="predmet") $txt = "Subject: (.*)Message-ID";
elseif($how=="od") $txt = "From: (.*)X-sender";

for($q=0; $q<Count($s); $q++):
$ee2 = imap_fetch_header($spoj, $q+1);
eregi("From: (.*)X-sender", $ee2, $eee2);
$from2 = substr($eee2, 6, -9);
if($from2==$value) imap_delete($spoj, $q+1);
endfor;
imap_expunge($spoj); ?>

Skript pracuje v podstate na rovnakom princípe. Ani vysvetlovať netreba dvakrát. Tento skript však musíte volať s dvema premennými, buď (predpokladajme, že sa volá skript.php): skript.php?how=predmet&value=Od+Hackera, alebo napr. skript.php?how=od&value=cosi@cosi.cz. Do premennej how dosadíte spôsob: buď podľa predmetu (how=predmet), alebo podľa odosielateľa (how=od). Do premennej value dosadíte hodnotu, ktorú idete mazať (value=predmet+správy; value=od@cojaviemkoho.cz).

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *