mac地址绑定
1.导入第三方类库:
<?php
/**
* FILE_NAME : Macaddr.php
* linux平台获取服务器mac地址
* @filesource
*/
class Macaddr { private static $return_array = array(); //返回带有MAC地址的字串数组
private static $mac_addr; //MAC 地址 public function __construct() {
echo 1;
} /**
* 获取当前机器的MAC地址
*/
public static function getMac() {
$os_type = PHP_OS;
switch ( strtolower($os_type) ) {
case "linux":
self::forLinux();
break;
case "solaris":
break;
case "unix":
break;
case "aix":
break;
default:
self::forWindows();
break;
} $temp_array = array();
foreach (self::$return_array as $row) {
foreach ($row as $value) {
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", $value, $temp_array) ) {
self::$mac_addr = $temp_array[0];
break;
}
}
if (!empty(self::$mac_addr)) {
break;
}
}
unset($temp_array); return self::$mac_addr;
} private static function forWindows(){
@exec("ipconfig /all", $macInfo);
if ( $macInfo ) {
self::$return_array[] = $macInfo;
} else {
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
if ( is_file($ipconfig) ) {
@exec($ipconfig." /all", $macInfo);
}else {
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $macInfo);
} self::$return_array[] = $macInfo;
}
return self::$return_array;
} private static function forLinux(){
@exec("/sbin/ifconfig", $macInfo);
if ( $macInfo ) {
self::$return_array[] = $macInfo;
} else {
$file_arr = array('ifcfg-eth0', 'ifcfg-eth1', 'ifcfg-eth2', 'ifcfg-eth3', 'ifcfg-em1', 'ifcfg-em2', 'ifcfg-em3', 'ifcfg-em4');
foreach ($file_arr as $file) {
if (file_exists('/etc/sysconfig/network-scripts/'.$file)) {
self::$return_array[] = file('/etc/sysconfig/network-scripts/'.$file);
}
}
} return self::$return_array;
}
} /* End of file config.php */
/* Location: ./system/application/config/config.php */
?>
2.CI中使用示例:
<?php
class A extends CI_Controller {
public function checkMac()
{
$this->load->library('Macaddr');//导入类库
$currentMac = Macaddr::getMac();
$macList = array();//在配置文件中写死
if( !empty($currentMac) && !in_array($currentMac, $macList) ) {
exit();
}
}
}
mac地址绑定的更多相关文章
- Mac地址绑定的wifi
可以仿冒mac地址连接到wifi. 1.首先使用cdlinux扫描ssid,抓握手包--当捕获某个连接该wifi的client的时候,记下该client的mac地址. 2.用eswa解码抓包文件,获取 ...
- inux网卡与MAC地址绑定方法总结
使用linux系统时会出现这样的情况,当你安装了某个网卡的驱动程序时,或者安装了与网卡相关的程序后. 网卡会出现所谓的漂移现象.(注意:不是飘逸).可能的表象为: (1):网卡顺序颠倒,比如之 ...
- 修改MAC地址的方法 破解MAC地址绑定(抄)
修改MAC地址的方法 破解MAC地址绑定 网卡的MAC地址是固化在网上EPROM中的物理地址,是一块网卡的“身份证”,通常为48位.在平常的应用中,有很多方面与MAC地址相关,如有些软件是和MAC ...
- 纠结好久的VM虚拟机MAC地址绑定问题
VM虚拟机(centos)采用桥接的方式访问网络,搭建一个Online Judger 的 web服务端.本想让虚拟机的ip能够固定下来,因此在路由上采用MAC和IP绑定的方式解决. 结果:每次重启虚拟 ...
- 交换机端口与Mac地址绑定(基于Cisco模拟器)
实验设备: 二层交换机一台,主机三台 实验步骤: 1.进入相应的接口 (以端口1设置Mac地址绑定,PC0接1端口举例) Switch>enable Switch#config Configur ...
- IP地址和MAC地址绑定的必要性
计算机网络是一个共通的网络,世界上任何计算机都可以互相访问. 实现的原理基于网络通讯的互联网交互五层模型. 计算机网络的历史发展 当计算机网络技术初始利用的时代,几台计算机通过集线器连接,就可以实现网 ...
- IP地址与Mac地址绑定错误
有个application,有时候可以正常访问,有时候又返回404错误,百思不得其解.刚开始以为是文件夹权限问题,折腾了好久. 后来没在服务器上monitor到包,所以猜想是到了错误的mac地址,用a ...
- 018 cisco 3560 MAC地址绑定
在3560交换机上show ip dhcp binding 可以看到通过DHCP服务广播出去的IP地址与MAC地址的对应表: 比如: Switch#show ip dhcp binding IP ad ...
- ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
[故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和M ...
随机推荐
- JAVA常见算法题(二十)
package com.xiaowu.demo; /** * * 打印出如下图案(菱形) * * * * @author WQ * */ public class Demo20 { public st ...
- 路由器漏洞复现分析第三弹:DVRF INTRO题目分析
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...
- appium python api(转)
Appium_Python_Api文档 1.contextscontexts(self): Returns the contexts within the current session. 返回当前会 ...
- 泳池水面fresnel 的近似替代
vs float4 ep = TBMultiply(ModelViewMatrix, FinalPosition); DistFromEye.x = TBSaturate( 10.0 + ep.z / ...
- C语言:宽字符集操作函数
C语言:宽字符集操作函数 (unicode编码) 字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测 ...
- 【Hadoop】Hadoop MR 性能优化 Combiner机制
1.概念 2.参考资料 提高hadoop的mapreduce job效率笔记之二(尽量的用Combiner) :http://sishuo(k).com/forum/blogPost/list/582 ...
- .Net普通三层->工厂模式->线程内唯一+单元工作模式->WebService分布式三层
在软件世界分层的思想无处不在 主要是为了提高软件系统的维护性,扩展性,复用性和解耦等 软件的三层构架是一种最基本的分层思想的体现 结构图大体如下: 如此一来,开发人员可以只关注其中一层,而无需关心下一 ...
- 【共享单车】—— React后台管理系统开发手记:Redux集成开发
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...
- git学习——查看提交历史
git log可以查看提交历史: 用-p选项展开显示每次提交的内容差异,用-2则仅显示最近两次的更新:git log -p -2 在-p选项后面使用--word-diff选项进行单词层面的对比.这其中 ...
- 单一按钮显示/隐藏&&提示框效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...