TestController.php 13.7 KB
<?php
namespace console\controllers;
/**
 * Created by PhpStorm.
 * User: scott
 * Date: 8/15/18
 * Time: 11:32 AM
 */

use domain\device\DeviceRepository;
use Yii;
use common\exts\Aes;
use common\exts\RSACrypt;
use common\exts\Http;
use common\helpers\Utils;

use GuzzleHttp\Psr7;
use yii\console\Controller;

use function chr;

class TestController extends Controller
{

   public function actionGen()
   {
       $no = hexdec('000A') + 1;
       echo sprintf('%04X', $no);
       echo "=================\r\n";
       $v = "0:998654321:A0";
       //echo preg_match('/^[0-9a-fA-F:]{12,18}$/', $v);

       //echo Utils::macGenerate();

       //echo "\r\n";
       //echo Utils::coverToMacAddress("aaaddddd");
       $regex = '/^([0-9a-fA-F]{2})(([:|-]{0,1}[0-9a-fA-F]{2}){5})$/';
       if (preg_match($regex, $v)) {
           $v = str_replace('-', '',$v);
           $v = str_replace(':','', $v);
           echo Utils::coverToMacAddress($v);
       }



       echo "\r\n";
   }

    public function actionCheckSign()
    {
        $str = '{"manufacture":"0001","device_id":"4705BF36C376","project":"0001","model":"0001","production":"0001","timestamp":"1500000000","sign":"f16b3f969714a400e155e04e0ea29938"}';
        $arr = json_decode($str, true);
        //md5($arr[''])
    }



    public function actionUpgrade()
    {
        $url = 'http://kingb:8012/app-api/web/reportDeviceVersion';
        $params = [
            'barcode' => '00001',
            'device_id' => 'DEVICE001',
            'software_version' => 'V1.0.1',
            'hardware_version' => 'V1.0.2',
            'timestamp' => 1500000000
        ];

        $postResult = Http::POST($url, $params);
        echo $postResult;
    }

    public function actionAec()
    {
        $aes = new Aes('12345678');
        $encrypted = $aes->encrypt('this is en AES testing');
        echo '要加密的字符串:this is en AES testing<br>加密后的字符串:'. $encrypted. '<hr>';
        $decrypted = $aes->decrypt($encrypted);
        echo '要解密的字符串:'. $encrypted, '<br>解密后的字符串:'. $decrypted;
    }

    public function actionDeviceSt()
    {
        $url = 'http://kingb:8012/app-api/web/reportDeviceVersion';
        //$url = 'http://47.107.95.101/app-api/web/reportDeviceVersion';
        $params = [
            'barcode' => '0002000100010001',
            'device_id' => 'DEVICE000000002',
            'software_version' => 'V1.0.20191001',
            'hardware_version' => '',
            'timestamp' => time()
        ];
        $params = json_encode($params);

        $data = array(
            '119.120'.'.'.rand(1,255).'.'.rand(1,255),
            '124.174'.'.'.rand(1,255).'.'.rand(1,255),
            '116.249'.'.'.rand(1,255).'.'.rand(1,255),
            '118.125'.'.'.rand(1,255).'.'.rand(1,255),
            '42.175'.'.'.rand(1,255).'.'.rand(1,255),
            '124.162'.'.'.rand(1,255).'.'.rand(1,255),
            '211.167'.'.'.rand(1,255).'.'.rand(1,255),
            '58.206'.'.'.rand(1,255).'.'.rand(1,255),
            '117.24'.'.'.rand(1,255).'.'.rand(1,255),
            '203.93'.'.'.rand(1,255).'.'.rand(1,255),
        );

        $ip = $data[array_rand($data)];
        $header = [
            'CLIENT-IP:'.$ip,
            'X-FORWARDED-FOR:'.$ip,
        ];
        $params = '{"barcode":"0002000100010001","device_id":"DGDEVBICEID00BB8", "software_version":"V1.0.1", "hardware_version":"", "timestamp":'.time().'}';
        $postResult = Http::POST($url, $params,true, $header);

        echo $postResult;
    }

    public function actionCheckAppUpdate()
    {
        //actionCheckAppVersion
        $url = 'http://47.107.95.101/app-api/web/checkAppVersion';
        $params = [
            'barcode' => '0004000100010001',
            'device_id' => 'V1.00.20190708',
            'current_version' => '1',
            'package_name' => 'com.kingboard.settings',
        ];
        $params = json_encode($params);
        //$params = '{"barcode":"0004000100010001","device_id":"DGDEVBICEID00001","package_name":"com.kingboard.settings","current_version":"V1.00.20190708"}';

        $postResult = Http::POST($url, $params);
        echo $postResult;
    }

    public function actionCheckOtaUpdate()
    {
        //actionCheckAppVersion
        $url = 'http://47.107.95.101/app-api/web/checkOtaVersion';
        //$url = 'http://kingb:8012/app-api/web/checkOtaVersion';
        $params = [
            'barcode' => '0001000100010001',
            'device_id' => 'DGDEVBICEID00001',
            'software_version' => 'V1.00.1A.20191002',
            'hardware_version' => '',
        ];
        $params = json_encode($params);
        //$params = '{"barcode":"0001000100010001","device_id":"DEVICEID00001","software_version":"V1.00.1A.20191002","hardware_version":""}';
        $postResult = Http::POST($url, $params);
        echo $postResult;
    }

    //{"barcode":"0001000100010001","device_id":"DEVICEID00001","current_version":"V1.00.1A.20191022","target_version":"V1.00.1A.20191022","status":5,"timestamp":"1572759793"}

    public function actionReportOtaEvent()
    {
        //actionCheckAppVersion
        $url = 'http://47.107.95.101/app-api/web/reportOtaUpgradeEvent';
        $url = 'http://kingb:8012/reportOtaUpgradeEvent';

        $params = [
            "barcode" => '0001000100010001',
            "device_id" => 'DGDEVBICEID00002',
            "current_version" => 'V1.00.1A.20191022',
            "target_version" => 'V1.00.1A.20191022',
            "status"           => 3,
            "error_code"       => '',
            "timestamp"        => time()
        ];
        $params = json_encode($params);
        //$params = '{"barcode":"0001000100010001","device_id":"DGDEVBICEID00002", "current_version":"V1.00.1A.20191022", "target_version":"V1.00.1A.20191023","status":5,"error_code":"", "timestamp":"1572759793"}';
        $postResult = Http::POST($url, $params);
        echo $postResult;
    }

    public function actionReportAppEvent()
    {
        //actionCheckAppVersion
        $url = 'https://hiboard.cn/reportAppUpgradeEvent';
        //$url = 'http://kingb:8012/reportAppUpgradeEvent';

        $params = [
            'barcode' => '0001000100010002',
            'device_id' => 'DHDEVBICEID00001',
            'current_version' => 'V1.0.1',
            'target_version' => 'V1.0.1',
            'package_name'     => 'com.app.king.dd',
            "status"           => 1,
            "error_code"       => '',
            "timestamp"        => time()

        ];
        $params = json_encode($params);
        //$params = '{"barcode":"0001000100010001","device_id":"DGDEVBICEID00001","current_version":"1","target_version":"2","status":"5","error_code":"0","timestamp":"1572767677"}';
        $postResult = Http::POST($url, $params);
        echo $postResult;
    }

    public function actionEncodePost()
    {
        $url = 'http://kingb:8012/app-api/web/CryptTxt';
        $randKey = '98765432';//Utils::rand(32);
        $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1'];
        $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']);
        $aes = new Aes($randKey);
        $deviceId = 'oelooeloeloeloe';
        $manufactureNo = '0001';
        $tt = time();
        $sign = md5($deviceId . $tt . $randKey);
        $dd = json_encode(['manufacture' => $manufactureNo, 'timestamp' => $tt, 'sign' => $sign, 'device_id' => $deviceId]);
        $params = [
            'randomKey' => $rsa->encrypt($randKey),
            'content'   => $aes->encrypt($dd)
        ];
        $params = json_encode($params);
        $postResult = Http::POST($url, $params);
        $postResult = json_decode($postResult, true);
        $decodeJson = $aes->decrypt($postResult['content']);
        print_r($decodeJson);
    }

    /**
     * 授权设备,加密过
     */
    public function actionAuthDevice()
    {
        $url = 'http://kingb:8012/authDevice';
        $url = 'https://hiboard.cn/authDevice';
        $manufactureNo = '0001';
        $device_id = 'HDEVICEG0000001';
        $projectNo = '0001';
        $modelNo = '0001';
        $productionNo = '0001';
        $timestamp = time();

        $randKey = Utils::rand(16);
        $salt = "13456";
        $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt);
        $deviceParams = [
            'manufacture' => $manufactureNo,
            'device_id' => $device_id,
            'project' => $projectNo,
            'model' => $modelNo,
            'production' => $productionNo,
            'timestamp' => $timestamp,
            'sign' => $sign,
        ];
        $deviceParams = json_encode($deviceParams);
        $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1'];
        $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']);

        $randomKey = $rsa->encrypt($randKey);
        $aes = new Aes(substr(md5($randKey.'12356'), 8, 16));
        $params = [
            'randomKey' => $randomKey,
            'content'   => $aes->encrypt($deviceParams)
        ];
        $params = json_encode($params);

        $postResult = Http::POST($url, $params);

        $postResult = json_decode($postResult, true);
        $decodeJson = $aes->decrypt($postResult['content']);

        echo $decodeJson;
    }


    public function actionAuthDeviceN()
    {
        //$url = 'http://kingb:8012/authDeviceN';
        $url = 'http://47.107.95.101/app-api/web/authDeviceN';
        $manufactureNo = '0001';
        $device_id = 'BDEVICEG0000006';
        $projectNo = '0001';
        $modelNo = '0001';
        $productionNo = '0002';
        $timestamp = time();

        $salt = "13456";
        $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt);
        $deviceParams = [
            'manufacture' => $manufactureNo,
            'device_id' => $device_id,
            'project' => $projectNo,
            'model' => $modelNo,
            'production' => $productionNo,
            'timestamp' => $timestamp,
            'sign' => $sign,
        ];
        $deviceParams = json_encode($deviceParams);
        $postResult = Http::POST($url, $deviceParams);

        echo $postResult;
    }

    public function actionA()
    {
        $str = "87654321";
        $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1'];
        $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']);
        $deStr = "Eu2nx0APQBcicPXuw1r+4vKJCPJ5ln5uzepYXSJ1mfSaymjgdGdXT9s5SxNHXe4cK8ZRO9wK7RxO\/MjSJwOoTDvy7xez+rC96yBDJV3vZ5bv85OtKc8k6R60mfc\/Fasw+dTI1FBKs9BNY2fs6w+67HJqeUD1JenuZSyX4ryWM44=";

        //echo $deStr."\r\n";
        $randKey = $rsa->decrypt($deStr);
echo $randKey."\r\n";
        $randKey = substr(md5($randKey.'12356'), 8, 16)."\r\n";
        echo $randKey."\r\n";
        $aes = new Aes($randKey);
        echo $aes->decrypt("1nnp92dtMfxUSvmZHQPeWp4smz0DzVzp4ZDJHdR1R1Dt8KvPYZ2WC6TEc+ACbwOxCtop6gBIn1DNNNL5cVw3nU8kl4yRXIsMojciK064rekOCVmRln3Z2NHn6SThmcLcwthxwHt0rlXVdeWecvhpXve1QPk0eD1qEfGsP2B3D4X9iUlZ6JZndM3og7XpukrawtPWazIVaBqlfa4ugfD86mAHlD+RYl+ZW2QpDGVGPXk=");

    }

    /**
     *  批量产生授权数据
     */
    public function actionPGTest()
    {
        $url = 'http://47.107.95.101/app-api/web/authDevice';
        $manufactureNo = '000E';

        $projectNo = '0001';
        $modelNo = '000B';
        $productionNo = '0010';

        $salt = "13456";
        $rsaKeys = Yii::$app->params['AUTH_DEVICE_RSA_PKCS_1'];
        $rsa = new RSACrypt($rsaKeys['PRIVATE'], $rsaKeys['PUBLIC']);
        for($i = 1; $i < 5000; $i++) {
            $device_id = 'HDEVICEG000000'.sprintf('%04X',$i);
            $timestamp = time();
            $randKey = Utils::rand(16);

            $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt);
            $deviceParams = [
                'manufacture' => $manufactureNo,
                'device_id' => $device_id,
                'project' => $projectNo,
                'model' => $modelNo,
                'production' => $productionNo,
                'timestamp' => $timestamp,
                'sign' => $sign,
            ];
            $deviceParams = json_encode($deviceParams);
            $randomKey = $rsa->encrypt($randKey);
            $aes = new Aes(substr(md5($randKey.'12356'), 8, 16));
            $params = [
                'randomKey' => $randomKey,
                'content'   => $aes->encrypt($deviceParams)
            ];
            $params = json_encode($params);
            //echo $url." POST ".$params."\r\n";
            $postResult = Http::POST($url, $params);

            $postResult = json_decode($postResult, true);
            $decodeJson = $aes->decrypt($postResult['content']);
            echo $decodeJson."\r\n";
        }
    }

    /**
     * 批量产生不加密的设备授权数据
     */
    public function actionPgnTest()
    {
        $url = 'http://47.107.95.101/app-api/web/authDeviceN';
        $manufactureNo = '000E';
        $projectNo = '0001';
        $modelNo = '000B';
        $productionNo = '0010';
        for($i = 1; $i < 3; $i++) {
            $device_id = 'ADEVICEG000000'.sprintf('%04X',$i);
            $timestamp = time();
            $salt = "13456";
            $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp .$device_id. $salt);
            $deviceParams = [
                'manufacture' => $manufactureNo,
                'device_id' => $device_id,
                'project' => $projectNo,
                'model' => $modelNo,
                'production' => $productionNo,
                'timestamp' => $timestamp,
                'sign' => $sign,
            ];
            $deviceParams = json_encode($deviceParams);
            echo $url." POST ". $deviceParams."\r\n";
        }

    }
    public function actionB()
    {
        $url = [ 'http://47.107.95.101/app-api/web/authDevice' => 'https://hiboard.cn/authDevice'  ];
    }
}