Mac adres
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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>';
}
?>
#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 ?
En wat is je exacte probleem?
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
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 -
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.
Ik voeg even de $output variabele toe die beschreven staat op exec.
Code (php)
1
2
2
$macAddress = exec("arp -a $ipAddress",$output);
echo "De inhoud is:". print_r($output);
echo "De inhoud is:". print_r($output);
Gewijzigd op 31/07/2023 21:09:00 door - Ariën -
Maar bedankt voor uw moeite.
Vriendelijke groet Rob
Ik ga het proberen.
Dit zie ik dan :
De inhoud is:
Array
(
)
Welk besturingssysteem gebruik je? Linux?
Want ik zie op mijn Windows-installatie 'No ARP Entries Found.' staan als er niks gevonden is.
Dit zie ik dus in mijn browser staan nadat ik het heb geupload.
Sorry voor de moeite ... ik dacht dat dit iets makkelijks was.
Maar het lijkt niet eenvoudig op MAC-adres. Op IP-adres moet wel makkelijker gaan.
Fijne avond.
Rob
Als je verder nog vragen hebt, dan horen we die graag.
Dank u wel :)
- 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.
Het is wel mogelijk, maar enkel op je eigen lokale netwerk.
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
$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.
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 ;-)
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.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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";
}
?>
$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