2012-07-11 16 views
6

Eventuali duplicati:
Why does ping work without administrator privileges?Come mai ping non ha bisogno di privilegi amministrativi su Windows?

Da un articolo di MSDN su TCP/IP prime prese di corrente:

... E 'importante capire che alcune prese di tipo SOCK_RAW potrebbe ricevere molti datagrammi imprevisti. Ad esempio, un programma ping può creare una presa di tipo SOCK_RAW inviare richieste echo ICMP e ricevere risposte ....

Questo passaggio suggerisce che, per eseguire un ping ICMP, si deve usare socket non elaborati su Windows piattaforme. Tuttavia, lo stesso articolo dice anche:

Nota: Per utilizzare una presa di tipo SOCK_RAW richiede privilegi amministrativi. Gli utenti che eseguono applicazioni Winsock che utilizzano socket non elaborati devono essere membri del gruppo Administrators nel computer locale, altrimenti le chiamate socket non funzionanti avranno esito negativo con un codice di errore di WSAEACCES. In Windows Vista e versioni successive, l'accesso per i socket raw viene applicato alla creazione del socket. Nelle versioni precedenti di Windows, l'accesso per i socket non elaborati viene applicato durante altre operazioni socket.

Non ho certamente bisogno di essere un amministratore per gli altri ping. Quindi lo ping.exe ottiene un trattamento speciale, usa addirittura socket grezzi o c'è qualcos'altro che mi manca?

+3

Forse 'ping' non sta utilizzando socket raw? –

+0

"Questo passaggio implica che per eseguire un ping ICMP, è necessario utilizzare socket raw su piattaforme Windows." -- no non lo fa. – tenfour

+0

@tenfour Hai ragione, * implica * è una parola troppo forte. – Tibor

risposta

5

Come ha commentato Uwe, ping non utilizza solo socket non elaborati. Utilizza API specifiche che inviano richieste di eco chiamate IcmpSendEcho o IcmpSendEcho2.

È possibile utilizzare Dependency Walker su c:\windows\system32\ping.exe per vederlo da soli.

+2

Mi aspetto che la vera ragione sia la storia; sui sistemi basati su unix, ping richiede spesso che l'utente si trovi in ​​un gruppo speciale, o più tipicamente il programma ping abbia un bit speciale da eseguire come quel gruppo (ma internamente non permetterà agli utenti ordinari di generare ping flood). Windows eredita dalle precedenti versioni di Windows senza un concetto di account utente o privilegi, quindi c'è probabilmente una aspettativa da parte degli utenti sul fatto che il ping dovrebbe funzionare come un tempo. –