从PHP获取计算机唯一ID

Tit*_*ito 9 php hardware-id cpuid unique-id

我已经使用PHP创建了一个应用程序,我将把它卖给我当地的市场.我个人会去他们的位置安装/配置Apache和MySQL以及安装我自己的代码.

我想要一个安全系统,以便如果有人试图将我的代码复制到未经授权的机器,它将无法运行.

我知道没有人可以阻止逆向工程应用程序.甚至.exe(二进制)文件都被破解,并且PHP(源代码)任何人都可以做.

在我的国家,那些反向工程师真的很难找到,所以我想提出最小的安全选项,如:

1)创建类(比如说Navigation),它标识系统信息,如CPU ID,计算机名称或硬件ID的任意组合,以生成UNIQUE_ID并与我给定的UNIQUE_ID(我向其销售应用程序的个人)匹配.如果有效,则返回导航菜单.否则它只会破坏数据库并通过抛出异常来停止执行,可能就像:

class Navigation {

    public function d() {
        return current system UNIQUE_ID;
    }

    public function get() {
        $a = file_get_contents('hash');
        $c = $this->d();
        if (crypt($c) != $a) {
            //destory database
            throw new Exception('');
        } else {
            return "<ul><li><a>home</a></li></ul>"; //navigation menu
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

2)然后在安装过程中,我将在"hash"文件中更改系统UNIQUE_ID,创建一个对象,并将其保存到文件(nav.obj)中:

(install.php了)

<?php
      $a=new Navigation;
      $out=serialize($a);
      file_put_contents('nav.obj', $out);
Run Code Online (Sandbox Code Playgroud)

3)在header.php中(包含在每个文件中):

<?php
     $menu=file_get_contents('nav.obj');
     $menu=unserialize($a);
     echo $menu->get();
 ?>
Run Code Online (Sandbox Code Playgroud)

我知道这种方法不是完全证明,但我很确定大约60%的PHP开发人员无法破解它!

现在我只需要获取当前系统UNIQUE_ID.

car*_*eol 17

我创建了这个函数来获取基于硬件(硬盘UUID)的唯一ID.可以使用不同的资源(如计算机名称,域或甚至硬盘大小)来根据您的需要获得更好的方法.

 function UniqueMachineID($salt = "") {
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        $temp = sys_get_temp_dir().DIRECTORY_SEPARATOR."diskpartscript.txt";
        if(!file_exists($temp) && !is_file($temp)) file_put_contents($temp, "select disk 0\ndetail disk");
        $output = shell_exec("diskpart /s ".$temp);
        $lines = explode("\n",$output);
        $result = array_filter($lines,function($line) {
            return stripos($line,"ID:")!==false;
        });
        if(count($result)>0) {
            $result = array_shift(array_values($result));
            $result = explode(":",$result);
            $result = trim(end($result));       
        } else $result = $output;       
    } else {
        $result = shell_exec("blkid -o value -s UUID");  
        if(stripos($result,"blkid")!==false) {
            $result = $_SERVER['HTTP_HOST'];
        }
    }   
    return md5($salt.md5($result));
}


echo UniqueMachineID();
Run Code Online (Sandbox Code Playgroud)