Newsgroup: it.comp.www.php
Titolo: Re: Socket: check porta senza aprirla

doverla aprire.
Vuoi dire, sapere se una porta sia in ascolto senza dover aprire una
connessione completa verso la stessa.
La risposta è "Sì, ma non da PHP e non in modo affidabile".
Non solo: TCP non prevede estensioni per verificare se un servizio è
o meno in ascolto, sicché ti tocca usare sistemi poco regolari, che,
manco a dirlo, fanno incazzare come torelli parecchi firewall.
Puoi avere quindi quattro scenari "scomodi":
a) Il sistema non funziona (PHP ti dice "Nessun VNC", ma non è vero)
b) Come sopra, e il proprietario anziché il dialog di VNCViewer vede
   una schermata fiammeggiante con scritto RILEVATA MINACCIA!!!.
c) Come sopra, e magari il tuo indirizzo/sottorete e' blacklistata.
Aggiungici il fatto che inviare un portscan verso un WKS di un SW di
amministrazione remota - VNC o Remote Desktop, etc. - è una attività
considerata tipicamente "sospetta" e quindi si apre lo scenario
d) Il tuo hoster si irrita moltissimo e/o ti blocca il sito.
Il sistema IRREGOLARE meno irregolare che puoi usare è un "portscan"
a mezzo connessione half-open, che però da PHP non puoi fare (anzi -
in genere devi disporre di diritti piuttosto forzuti sul sistema e/o
sul suo firewall, e/o installare strumenti appositi tipo packetforge
o peggio. Che, quasi dimenticavo, sono considerati SOFTWARE SOSPETTO
- POTENZIALE VIRUS da molti antivirus e firewall).
===
Quindi, direi che sia il caso di fare un passo indietro e cominciare
a domandarsi, "Cosa vuoi fare, esattamente?".
(Che so, "Sistema di assistenza remota...")
Leonardo
-- 
Surstangas via akcipitr', la ceval' fojnumas nur:
Jen vigla damo en brakum', kaj vi pensas pri forkur'?
Do li turnis sin, kaj turnis sin, kaj ekdormis sen singard';
Kaj lin apudis je l' vekigx, soldatoj kaj Barnard'.

Leonardo Serni ha scritto quanto segue il 22/08/2011 1.02>

L'"half-open" mi servirebbe non per operazioni di hacking ma per 
verificare in una intranet se un pc è accesso o spento. Nella parte in 
cui posso intervenire uso il ping ma in un altro troncone ho pensato a 
questo sistema.
Seguendo il tuo spunto, sono giunto a:
nmap.exe -sS -p 80 xxx.xxx.xxx.xxx -T5
sullo stesso range ip sembra funzionare ma tento su un range diverso non va.
Cosa posso fare?
Esistono altri sistemi in Win32 per l'"half-open"?
ty :)

Esistono altri sistemi in Win32 per l'"half-open"?
No; nel senso che HO è HO; che tu lo faccia con nmap o packetforge o chi
sa cosa non cambia la faccenda. Se non funziona, però, il problema è che
probabilmente l'altro range è isolato e non funziona neanche connect().
Per altro, là sopra stai usando la porta 80... ma VNC usa la 5900.



Hai ragione, il fatto è che la tecnica mi serve anche per VNC e me ne 
ero dimenticato. Su VNC dovrebbe funzionare perché lo gestisco nello 
stesso server.

piuttosto voluminoso.
packetforge. In Windows è identico a nmap, cambiano solo gli switch (che
ovviamente non ricordo, né per l'uno né per l'altro). A dirti il vero ho
il dubbio che packetforge sotto Windows non sia supportato.
Comunque, ti dico, sei circa nello stadio in cui dovresti dire, a chi ti
ha dato l'incarico, "Mi servono gli strumenti" -- e questi potrebbero ad
esempio essere dei tool SNMP da "deployare" sulla rete. v1 e v2 li trovi
di serie; v3, piu' sicuro, lo trovi a pago da varie fonti... oppure c'e'
http://net-snmp.sourceforge.net/
 .
A questo punto PHPv5.2.4+ puo' farsi i fatti delle varie macchine con la
massima (si fa per dire) facilita'.
Ovviamente l'amministrazione sistemi deve provvedere alla configurazione
degli agent sulle macchine da esaminare. Ma questa e' l'unica strada che
ti garantisce un minimo di standard: altrimenti, rischi che una modifica
qualsiasi al sistema - per es.: ricordati che il raw socketing NON E' un
"protocollo" standard, su Win esiste "on sufferance" - faccia si' che l'
intero ambaradan smetta di funzionare. E verranno a cercare te :-)
