/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
portscanner med fsockopen
Fra : Pimin Konstantin Kef~


Dato : 22-07-03 00:34

$ports = array(21,22,23,80,110);
while($current = array_shift($ports)) {
@$fp = fsockopen(www.microsoft.com, $current, $errnum, $errstr, 1);
if($fp) {
echo $current.": ".getservbyport($current,"tcp")."<br>";
fclose($fp);
}
}
.....
PROBLEM: hvis ports-array bliver for langt, crasher apache øjeblikkeligt.
Nogen der kan lure hvorfor?

skipperkongen




 
 
Anders K. Madsen (22-07-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 22-07-03 00:43

On Tue, 22 Jul 2003 01:34:27 +0200
"Pimin Konstantin Kefaloukos" <fakemail@fakemail.dk> wrote:

> $ports = array(21,22,23,80,110);
> while($current = array_shift($ports)) {
> @$fp = fsockopen(www.microsoft.com, $current, $errnum, $errstr, 1);
> if($fp) {
> echo $current.": ".getservbyport($current,"tcp")."<br>";
> fclose($fp);
> }
> }
> ....
> PROBLEM: hvis ports-array bliver for langt, crasher apache øjeblikkeligt.
> Nogen der kan lure hvorfor?
>

Måske den der 'while($current = array_shift($ports)) {'.
Men det er bare et løst gæt.

Jeg ville nok bruge:

$ports = array(21,22,23,80,110);
foreach ($ports as $current) {
$fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1);
if ($fp) {
echo $current . ': ' . getservbyport($current, 'tcp') . '<br />';
@fclose($fp);
}
}

@ undertrykker fejlmeddelelser fra funktioner, så den er til ingen nytte i
sammenhængen '@$fp'.
Desuden vil det være smart at bruge @ sammen med fclose() når man bruger den
sammen med fsockopen(), sa fclose ellers vil melde fejl når der ikke er en
resource at lukke i $fp.
Og det ville fsockopen() jo have meldt fejl om da den ikke kunne åbne den, så
kun at bruge en er lidt fjollet, hvis du forstår.

Mvh.
   Madsen


--
- - - - - - - - - - - - - - + - - - - - - - - - - - - - - +
| Anders K. Madsen
http://lillesvin.linux.dk |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| There are 10 types of people in the world... |
Those who understand binary - and those who don't.
| - http://bash.org |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

Pimin Konstantin Kef~ (22-07-2003)
Kommentar
Fra : Pimin Konstantin Kef~


Dato : 22-07-03 00:50


foreach ($ports as $current) {
$fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1);
if ($fp) {
echo $current . ': ' . getservbyport($current, 'tcp') . '<br />';
@fclose($fp);
}
}

Jep, virker af en eller anden grund meget bedre. tak skal DU ha

>@ undertrykker fejlmeddelelser fra funktioner, så den er til ingen nytte i
>sammenhængen '@$fp'.......

ok ok ok... det gik lidt stærk med de @

skipperkongen



Pimin Konstantin Kef~ (22-07-2003)
Kommentar
Fra : Pimin Konstantin Kef~


Dato : 22-07-03 01:08

> foreach ($ports as $current) {
> $fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1);
> if ($fp) {
> echo $current . ': ' . getservbyport($current, 'tcp') . '<br />';
> @fclose($fp);
> }
> }
>
hvis jeg tildeler $ports en masse værdier, f.eks range(20,80) crasher
apache...
virkede ellers umiddelbart mere stabilt med en foreach (selvom det ikke
giver meget mening....)

Jeg var ellers lige ved at blive glad

skipperkongen



Peter Brodersen (22-07-2003)
Kommentar
Fra : Peter Brodersen


Dato : 22-07-03 02:12

On Tue, 22 Jul 2003 01:42:37 +0200, "Anders K. Madsen"
<madsen@sjovedyr.dk> wrote:

> $fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1);
> if ($fp) {

Evt. bare:
> if ($fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1)) {

... og nej, det er rigtigt nok ingen grund til at @'e fclose.

--
- Peter Brodersen

Anders K. Madsen (22-07-2003)
Kommentar
Fra : Anders K. Madsen


Dato : 22-07-03 03:49

On Tue, 22 Jul 2003 02:08:18 +0200
"Pimin Konstantin Kefaloukos" <fakemail@fakemail.dk> wrote:

> > foreach ($ports as $current) {
> > $fp = @fsockopen('www.microsoft.com', $current, $errnum, $errstr, 1);
> > if ($fp) {
> > echo $current . ': ' . getservbyport($current, 'tcp') . '<br />';
> > @fclose($fp);
> > }
> > }
> >
> hvis jeg tildeler $ports en masse værdier, f.eks range(20,80) crasher
> apache...
> virkede ellers umiddelbart mere stabilt med en foreach (selvom det ikke
> giver meget mening....)
>
> Jeg var ellers lige ved at blive glad
>

Har du prøvet at køre den i command-line?
Jeg har nemlig prøvet at køre den i command-line med range(1,10000) og det
virker både fint og hurtigt...
Der hvor jeg vil hen er, at det lyder mere som et Apache-problem end et
PHP-problem, så prøv eventuelt i en Apache-gruppe... Det kan være nogen har
oplevet noget lignende.

Nu er du vel godt klar over at portscanninger er ulovlige, med mindre du
selvfølgelig gør det på din egen maskine...
Og den her måde med at åbne en direkte socket-connection er temmelig let at
spore, så måske skulle du overveje at lade være med at scanne microsoft.com
f.eks.

Mvh.
   Madsen

--
- - - - - - - - - - - - - - + - - - - - - - - - - - - - - +
| Anders K. Madsen
http://lillesvin.linux.dk |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| There are 10 types of people in the world... |
Those who understand binary - and those who don't.
| - http://bash.org |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste