Mac adres

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rob Pomba

Rob Pomba

31/07/2023 18:58:08
Quote Anchor link
Hoi ik moet een simple pagina maken die via bepaalde macadressen benaderd kan worden.
Dus als het macadres erin staat moet het naar een link verwijzen .. zoniet dan moet het iets zeggen als forbidden ofzo.
Dit heb ik voor zover bij elkaar kunnen toveren :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
#Retrieve the MAC address of the client device:
#In PHP, you can use the $_SERVER['REMOTE_ADDR'] variable to get the IP address of the client device.
#Then, you can use the arp command in PHP's exec() function to retrieve the MAC address associated with that IP address.


$ipAddress = $_SERVER['REMOTE_ADDR'];
$macAddress = exec("arp -a $ipAddress");

#Compare the retrieved MAC address with the allowed MAC addresses:
#Maintain a list of allowed MAC addresses in your PHP code or a database.
#Compare the retrieved MAC address with the allowed MAC addresses to determine if access should be granted.

$allowedMACAddresses = ['44:62:88:92:33:03', '11:22:33:44:55:66'];

if (in_array($macAddress, $allowedMACAddresses)) {
    // Grant access to the webpage
    echo '<p>Access</p>';
    
}
else {
    // Deny access to the webpage
        echo '<p>Forbidden</p>';
}


?>

Zou iemand mij hiermee kunnen helpen ?
 
PHP hulp

PHP hulp

28/04/2024 09:22:57
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 20:33:45
Quote Anchor link
En wat is je exacte probleem?
 
Rob Pomba

Rob Pomba

31/07/2023 20:56:22
Quote Anchor link
Hoi het werkt niet ...
Ik heb ook helemaal geen verstand van php heb dit gevonden via chatpgp oid.
Als ik met de goede mac op die pagina komt dan zegt ie forbidden.
Het is de bedoeling dat wanneer het klopt er naar een link wordt doorverwezen.
Gewijzigd op 31/07/2023 20:57:22 door Rob Pomba
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 20:59:26
Quote Anchor link
ChatGPT is wel leuk, maar het slaat vaak de plank mis.
Je moet wel weten hoe je script werkt.

Kijk eens wat er in $macAddress zit? Echo het eens of haal het door var_dump().
Ik vermoed dat je nog een hoop fratsen moet uithalen om de output ervan uit te pluizen op het juiste MAC-adres.
Gewijzigd op 31/07/2023 21:00:31 door - Ariën -
 
Rob Pomba

Rob Pomba

31/07/2023 21:01:58
Quote Anchor link
Dank u wel voor uw reactie maar voor mij is dit eenmalig.
Ik ben meer van de schema's en solderen enzo ... van php heb ik echt geen kaas gegeten ... vandaar dat ik iemand zocht die mij kon helpen.
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 21:05:49
Quote Anchor link
Daarom is mijn advies ook om stap voor stap bij het begin te kijken wat de inhoud is van exec(). Als het goed is moet dit in een array zitten.

Ik voeg even de $output variabele toe die beschreven staat op exec.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$macAddress = exec("arp -a $ipAddress",$output);
echo "De inhoud is:". print_r($output);
Gewijzigd op 31/07/2023 21:09:00 door - Ariën -
 
Rob Pomba

Rob Pomba

31/07/2023 21:13:54
Quote Anchor link
Dank u wel voor uw reactie maar ik heb echt geen idee wat u bedoeld.
Maar bedankt voor uw moeite.
Vriendelijke groet Rob
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 21:14:04
Quote Anchor link
Ik heb het even wat simpeler gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$ipAddress
= $_SERVER['REMOTE_ADDR'];

$macAddress = exec("arp -a $ipAddress",$output);
echo "<h1>De inhoud is:</h1>";
echo "<pre>".print_r($output,true)."</pre>";
?>


Voer dit eens uit. Wat is de output?
Gewijzigd op 31/07/2023 21:15:34 door - Ariën -
 
Rob Pomba

Rob Pomba

31/07/2023 21:18:30
Quote Anchor link
Ok dus dit moet ik in het script zetten ?
Ik ga het proberen.
Dit zie ik dan :


De inhoud is:

Array
(
)
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 21:22:04
Quote Anchor link
Dan is er blijkbaar geen uitvoer, net zoals je het in de commandline zou uitvoeren?
Welk besturingssysteem gebruik je? Linux?

Want ik zie op mijn Windows-installatie 'No ARP Entries Found.' staan als er niks gevonden is.
 
Rob Pomba

Rob Pomba

31/07/2023 21:24:20
Quote Anchor link
Ik gebruik windows 11.
Dit zie ik dus in mijn browser staan nadat ik het heb geupload.
Sorry voor de moeite ... ik dacht dat dit iets makkelijks was.
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 21:27:28
Quote Anchor link
Ik zou eerst eens droog oefenen in de commandline, tot je een uitvoer krijg die je wenst.
Maar het lijkt niet eenvoudig op MAC-adres. Op IP-adres moet wel makkelijker gaan.
 
Rob Pomba

Rob Pomba

31/07/2023 21:32:28
Quote Anchor link
Ok dank u wel voor uw tijd en moeite.
Fijne avond.
Rob
 
- Ariën  -
Beheerder

- Ariën -

31/07/2023 21:33:33
Quote Anchor link
Graag gedaan, en veel succes!
Als je verder nog vragen hebt, dan horen we die graag.
 
Rob Pomba

Rob Pomba

31/07/2023 21:40:46
Quote Anchor link
Dank u wel :)
 
Willem vp

Willem vp

03/08/2023 02:28:30
Quote Anchor link
- Ariën - op 31/07/2023 21:27:28:
Maar het lijkt niet eenvoudig op MAC-adres.

Het is niet eens 'niet eenvoudig', maar gewoon 'niet mogelijk'. Die MAC-adressen worden niet doorgegeven door een router, dus dat arp-commando ziet alleen maar MAC-adressen van computers op hetzelfde subnet.
 
- Ariën  -
Beheerder

- Ariën -

03/08/2023 09:14:40
Quote Anchor link
Het is wel mogelijk, maar enkel op je eigen lokale netwerk.
 
Willem vp

Willem vp

03/08/2023 10:01:54
Quote Anchor link
Op je lokale netwerk/subnet is het wel mogelijk inderdaad, maar daar lijkt een dergelijke beveiliging me het minst zinnig. Dan moet je wel heel erg weinig vertrouwen hebben in je huisgenoten of collega's, als je een dergelijk dure beveiliging in wilt bouwen ('duur' in de betekenis van 'kost veel tijd/cpu-kracht').

Er is misschien wel een use case te bedenken voor een MAC-filter, maar op dit moment kan ik eigenlijk niets bedenken dat niet op een efficiëntere manier kan worden opgelost.

Let trouwens op dat bij het commando
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$macAddress = exec("arp -a $ipAddress",$output);

$nacAddress alleen de waarde true of false zal hebben om aan te geven of de exec() goed is gegaan of niet. De naam van de variabele is dus slecht gekozen, aangezien de waarde een andere betekenis heeft dan de naam suggereert. Aangezien $output leeg blijft, vermoed ik dat $macAddress dan ook de waarde 'false' zal hebben en dat er iets mis is gegaan.

Let op dat de exec() op de server wordt uitgevoerd en niet door de browser. Ik ga er voor het gemak even vanuit dat de server op het lokale systeem draait, of op zijn minst op een Windows 11-systeem. Het probleem waar je dan met exec() tegenaan zou kunnen lopen, is dat de webserver (dat zal Apache zijn, gok ik, of heel misschien nginx) draait onder het Local System Account. Het zal waarschijnlijk beter werken als je een nieuwe gebruiker aanmaakt en de service (die zal waarschijnlijk 'wampapache' of zo heten) onder dat account laat draaien.

Maar als je dergelijke trucs moet gaan uithalen om de boel werkend te krijgen, moet je je denk ik eerst afvragen wat nu precies het probleem is dat je wilt oplossen.
 
- Ariën  -
Beheerder

- Ariën -

03/08/2023 10:21:14
Quote Anchor link
Daar ga ik met je in mee, Willem.

Als ik de eerste posts van de topicstarter lees, denk ik eerder: onervarenheid en onwetendheid.
Een mac-adres klinkt cooler dan een IP-adres, en ook het feit dat 'die mogelijk te blokkeren is', als gedachte. Echter wordt deze nooit over internet meegestuurd, en ik vermoed dat de TS daar niet op de hoogte van was.

Aldoende leert men ;-)
 
Rob Pomba

Rob Pomba

03/08/2023 10:46:04
Quote Anchor link
Goedemorgen "Php experts"
gelukkig zijn jullie er om mensen met "onervarenheid en onwetendheid" te helpen.
Als jullie min eerdere post hadden gelezen (Ik ben meer van de schema's en solderen enzo ... van php heb ik echt geen kaas gegeten ... vandaar dat ik iemand zocht die mij kon helpen) hadden jullie gezien dat ik hier geen verstand van heb.
Gelukkig kon de "beheerder" dit beamen (Als ik de eerste posts van de topicstarter lees, denk ik eerder: onervarenheid en onwetendheid)
En gelukkig dat hij de mening van "Willem" deelde.
En ik maar denken dat dit een forum was om mensen te helpen !
IK ben niet degene die de bovenstaande code heeft verzonnen.
Waarschijnlijk was het ook zoeen "expert" als jullie maar dat terzijde.
Nu heb ik als "onervaren en onwetende" toch een vraag aan jullie "experts".
In de wereld van iptv wordt er vaak gewerkt met macadressen ... en ja vanuit een remote setting.
Google een op hot iptv dan kom je op hun site.
Hier kun je je eigen lijst uploaden (nu komt het) na het invullen van je macadres !
Kunnen jullie "experts" aan deze "onervaren en onwetende" dan uitleggen hoe dat kan ?
Want hun server connect dan met je tv via de macadres.
Ik vraag mij echt af hoe dat werkt ... maar gelukkig zijn jullie "experts" er om dat te weten.
 
Willem vp

Willem vp

03/08/2023 11:45:51
Quote Anchor link
Kijk, nu komt de relevante informatie bovendrijven. ;-)

Er zijn ruwweg twee manieren waarop dat HotIPTV zou kunnen werken:
1) Alle systemen hangen in een VLAN met een ontzettend groot subnet (16, of misschien zelfs 8 bits)
2) De app stuurt in zijn communicatie het MAC-adres van het apparaat naar de server

In het geval van mogelijkheid 1 zou de arp-constructie kunnen werken, maar alleen als de webserver in hetzelfde VLAN hangt als de player.

Ik denk echter dat het waarschijnlijker is dat de player-app via een eigen protocol het MAC-adres naar de server doorstuurt; dan heb je ook niet het probleem/risico dat alle players wereldwijd elkaar kunnen zien.

Als de webpagina puur gericht is op een player in het lokale netwerk, dan zou toegang via MAC-adressen wel moeten kunnen werken (alhoewel ik me dan nog steeds afvraag waarom je voor een lokale player überhaupt toegangscontrole zou willen inbouwen) maar waarschijnlijk moet de webserver dan onder een ander service account gaan draaien; zie mijn vorige post.

Zoals ik al zei, gaat waarschijnlijk de exec() fout. Dat valt te controleren door de code die Ariën eerder postte iets uit te breiden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$ipAddress
= $_SERVER['REMOTE_ADDR'];

$resultaat = exec("arp -a $ipAddress",$output);
if ($resultaat) {
   echo "<h1>De inhoud is:</h1>";
   echo "<pre>".print_r($output,true)."</pre>";
   echo "<p>Dit is -als het goed is- de regel met het MAC-adres:</p>";
   $line = trim($output[3]);
   echo "<pre>$line</pre>";
   $addresses = preg_split('/\s+/', $line);
   $ip_address = $adresses[0];
   $mac_address = $addresses[1];
   echo "<p>Het MAC-adres is dan: $mac_address</p>";
}

else {
   echo "Het opvragen van het MAC-adres is mislukt";
}

?>

Ik heb helaas geen Windows-server om dit zelf uit te proberen.
Gewijzigd op 03/08/2023 12:00:29 door Willem vp
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.