Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 13h24   #1
Membre du Club
 
Avatar de paradeofphp
 
Inscription : décembre 2005
Messages : 312
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 312
Points : 58
Points : 58
Par défaut Récupérer l'adresse Mac

Bonjour,

Je suis entrain de développer une application extranet.

Pour renforcer la sécurité de l'application, il m'a été demandé de faire une vérification login/pass/mac du client avant qu'il se connecte.

Les adresses mac des clients sont stockées dans la base de données.

Le problème que j'ai est comment je peux récupérer leurs adresse mac pour faire la vérification avec celles stockées dans ma base de données.

En cherchant un petit peu dans le net, j'ai trouvé ce code mais il n'a pas l'air de bien marcher.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function returnMacAddress() {
    // This code is under the GNU Public Licence
    // Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com
    // Tested only on linux, please report bugs
 
    // WARNING: the commands 'which' and 'arp' should be executable
    // by the apache user; on most linux boxes the default configuration
    // should work fine
 
    // Get the arp executable path
    $location = `which arp`;
    // Execute the arp command and store the output in $arpTable
    $arpTable = `$location`;
    // Split the output so every line is an entry of the $arpSplitted array
    $arpSplitted = split("\n",$arpTable);
 
    // Get the remote ip address (the ip address of the client, the browser)
    $remoteIp = $_SERVER['REMOTE_ADDR'];
    // Cicle the array to find the match with the remote ip address
    foreach ($arpSplitted as $value) {
        // Split every arp line, this is done in case the format of the arp
        // command output is a bit different than expected
        $valueSplitted = split(" ",$value);
        foreach ($valueSplitted as $spLine) {
            if (preg_match("/$remoteIp/",$spLine)) {
                $ipFound = true;
 
            }
            // The ip address has been found, now rescan all the string
            // to get the mac address
            if ($ipFound) {
                // Rescan all the string, in case the mac address, in the string
                // returned by arp, comes before the ip address
                // (you know, Murphy's laws)
                reset($valueSplitted);
                foreach ($valueSplitted as $spLine) {
                    if (preg_match("/[0-9a-f][0-9a-f][:-]".
                    "[0-9a-f][0-9a-f][:-]".
                    "[0-9a-f][0-9a-f][:-]".
                    "[0-9a-f][0-9a-f][:-]".
                    "[0-9a-f][0-9a-f][:-]".
                    "[0-9a-f][0-9a-f]/i",$spLine)) {
                        return $spLine;
                    }
                }
            }
            $ipFound = false;
        }
    }
    return false;    
}

Si vous avez des suggestions je suis preneur.
Merci
paradeofphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h59   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 786
Points : 35 786
A ma connaissance, tu n'as pas la possibilité de récupérer l'adresse MAC avec PHP.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h21   #3
Membre du Club
 
Avatar de paradeofphp
 
Inscription : décembre 2005
Messages : 312
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 312
Points : 58
Points : 58
Alors y a-t-il un autre moyen pour la récupérer ?
paradeofphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h32   #4
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Ton script doit pouvoir marcher mais il suppose que tu sois sur un serveur dédié (linux) où l'utilisateur apache à les droit d'éxecuter which et arp. C'est expliqué dans le script.

Au passage une sécurité sur l'adresse mac ne sert à rien puisque sous linux ça se change en une ligne de commande (MAC adress spoofing pour un peu de culture).
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h09   #5
Membre du Club
 
Avatar de paradeofphp
 
Inscription : décembre 2005
Messages : 312
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 312
Points : 58
Points : 58
Citation:
Ton script doit pouvoir marcher mais il suppose que tu sois sur un serveur dédié (linux) où l'utilisateur apache à les droit d'éxecuter which et arp. C'est expliqué dans le script.
En fait l'application va tourner sur un serveur Windows avec php/mysql/apache installé dessus.

Citation:
Au passage une sécurité sur l'adresse mac ne sert à rien puisque sous linux ça se change en une ligne de commande (MAC adress spoofing pour un peu de culture).
En fait, les clients de cette application sont des agents de la campagnie. L'administrateur réseau a les adresses MAC de chaque agent et sont stockées dans une base de données. Donc à chaque tentative de connexion à l'application, il faudra vérifier en plus du login/pass l'adresse MAC. Si l'agent change son adresse MAC, il pourra pas se connecter.
paradeofphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 19h42   #6
Nb
Candidat au titre de Membre du Club
 
Inscription : décembre 2003
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 9
Points : 14
Points : 14
Il est impossible de récuperer l'adresse mac d'un "client" si un routeur vous sépare. La table arp que tu interroges avec la commande ARP contient la correspondance @IP/@mac pour le meme segment ethernet uniquement.
Comme tu sembles dire qu'il s'agit d'un extranet par definition ton serveur et tes clients ne sont pas dans le meme "LAN" donc ton serveur ne pourra jamais connaitre leur adresse mac. En php cela me semble donc impossible puisque ca tourne coté serveur.

En revanche il est pas impossible qu'un applet Java te permette ca (à vérifier ca fait bien bien longtemps que j'ai pas touché au java).



Citation:
Envoyé par paradeofphp Voir le message
En fait, les clients de cette application sont des agents de la campagnie. L'administrateur réseau a les adresses MAC de chaque agent et sont stockées dans une base de données. Donc à chaque tentative de connexion à l'application, il faudra vérifier en plus du login/pass l'adresse MAC. Si l'agent change son adresse MAC, il pourra pas se connecter.
Bah si, c'est ce que grunk essaye de te dire : une adresse mac ca n'a aucune valeur car ca se spoof facilement, tout comme une ip, un pass et un login d'un collegue ca se récupere facilement...etc. Bref faut pas etre paranoiaque et adapter les methodes de protections à son "public", mais il faut quand meme etre conscient que tu as peu de chance d'arreter une personne competente et motivée pour peter tes sécurités.
Nb est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/02/2012, 16h20   #7
Futur Membre du Club
 
Homme
Étudiant
Inscription : mai 2011
Messages : 22
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 22
Points : 19
Points : 19
Citation:
Envoyé par Nb Voir le message
Bah si, c'est ce que grunk essaye de te dire : une adresse mac ca n'a aucune valeur car ca se spoof facilement, tout comme une ip, un pass et un login d'un collegue ca se récupere facilement...etc. Bref faut pas etre paranoiaque et adapter les methodes de protections à son "public", mais il faut quand meme etre conscient que tu as peu de chance d'arreter une personne competente et motivée pour peter tes sécurités.
Même dans mon modem, j'ai une option pour usurper une adresse mac

Si tu ne peut pas retrouver l'adresse mac du client, demande lui de te l'envoyer, mais c'est moins sécurisé.
zeroc00l est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h05.


 
 
 
 
Partenaires

Hébergement Web