Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Porttien tarkistaminen

JyKKemus [26.06.2007 13:40:34]

#

Pystyykö php:lla tarkistamaan onko portti auki palomuurissa?

ukko [26.06.2007 13:52:14]

#

Kyllä pystyy. Tee looppi joka tarkastaa esim fsockopen()-funktiolla halutut portit.

Kuten esim

<?php

 $host = ""; //hosti joka skannataan, ip käy myös
 $ap = ""; //aloitusportti
 $lp = ""; //lopetusportti

 echo '<h2>Porttiskannaus osoitteeseen '.$host.'.</h2>';

 for($i = $ap; $i < $lp; $i++){

   if( @fsockopen($host, $i) ){
     echo 'Portti '.$i.' auki <br/>';
   }//end if

 }//end for

?>

JyKKemus [26.06.2007 13:57:36]

#

Tuleekos tohon hostiin oma ip kun testaa onks omast adsl purkist vaiks 12345 portti auki?

Metabolix [26.06.2007 13:58:03]

#

Varmaankin olisi suotavaa myös sulkea ne avatut socketit, vaikka onkin kyse skriptikielestä, joka varmaankin hoitaa homman tarvittaessa myös itse.

if ($f = @fsockopen($host, $i)) {
   echo 'Portti '.$i.' auki <br/>';
   fclose($f);
}

ukko [26.06.2007 15:53:26]

#

fsockopen() sulkee portin automaattisesti, pfsockopen()-funktio jättää portin auki - siksi en erikseen sulkenut portteja.

Jykkemus, voit vaihtaa rivin

$host = "" //jne...

muotoon

$host = $_SERVER['REMOTE_ADDR'];

Niin koodi tutkii portit katselijan ip:stä.

Metabolix [26.06.2007 16:29:19]

#

ukko kirjoitti:

fsockopen() sulkee portin automaattisesti, pfsockopen()-funktio jättää portin auki

Tietyssä mielessä kyllä, mutta sulkeminen ei todellakaan tapahdu funktiossa vaan vasta skriptin lopuksi. Kuitenkin noin vähän matalamman tason kieliin tottuneena olen kovasti sitä mieltä, että vaikka järjestelmä osaisi itse sulkea tuon, kun skripti päättyy, niin kannattaa silti sulkea se itse. Tilanne on hieman sama kuin muistia varatessa: vaikka muistin vapautus toimii usein ihan käyttöjärjestelmätasolla, kun prosessi päättyy, niin siitä huolimatta varattu muisti kannattaa vapauttaa jo ohjelman aikana. Sitä paitsi tottahan tuokin skripti toimii nopeammin ja ennen muuta varmemmin, jos siinä on auki vain yksi portti kerrallaan, on aivan järjetöntä turhaa kuormitusta avata ne kaikki 65000 yhtä aikaa ja luottaa siihen, että kyllä ne lopuksi sulkeutuvat.

ukko [26.06.2007 21:38:05]

#

lainaus:

---Sitä paitsi tottahan tuokin skripti toimii nopeammin ja ennen muuta varmemmin, jos siinä on auki vain yksi portti kerrallaan ---

Aivan totta, isommassa skaalassa kyllä ja miksei pienemmässäkin ;). En tullut ollenkaan ajatelleeksi tuota tapausta jossa portteja yritetään avata tuhansia, kun kirjoitin koodin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta