繁体   English   中英

我不明白的编码和解码系统

[英]The encode and decode system I don't understand

我找到了这样的代码:

Setlocal EnableDelayedExpansion
Set _RNDLength=8
Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Set _Str=%_Alphanumeric%987654321
:_LenLoop
IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop
SET _tmp=%_Str:~9,1%
SET /A _Len=_Len+_tmp
Set _count=
SET _RndAlphaNum=
:a
Set /a _count+=1
SET _RND=%Random%
Set /A _RND=_RND%%%_Len%
SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
If !_count! lss %_RNDLength% goto a
for /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a)
for /F "skip=1 delims=" %%F in ('
    wmic PATH Win32_LocalTime GET Day^,Month^,Year /FORMAT:TABLE
') do (
    for /F "tokens=1-3" %%L in ("%%F") do (
        set CurrDay=0%%L
        set CurrMonth=0%%M
        set CurrYear=%%N
    )
)
set CurrDay=%CurrDay:~-2%
set CurrMonth=%CurrMonth:~-2%


for /f "tokens=1-2" %%i in ('fastboot.exe devices') do (set devices=%%i)
echo Your Key : !_RndAlphaNum!%devices% 

:loop
set /p input="Enter key: "
echo -------------------------------------------------

echo WScript.Echo StrReverse("%input%"^) >reverse.vbs
for /f "delims=" %%a in ('cscript //nologo reverse.vbs') do set "reversed=%%a"
>nul del reverse.vbs


for /F "tokens=* USEBACKQ" %%F in (`call abc.bat -decode %reversed%`) do (set key=%%F)
set day=%key:~0,2%
set mth=%key:~2,2%
set yrs=%key:~4,4%
set expire=%key:~6,2%
set keydevice=%key:~22%

for /F "tokens=* USEBACKQ" %%F in (`call calday.exe %day% %mth% %yrs% %CurrDay% %CurrMonth% %CurrYear% `) do (set period=%%F)
set /a expire1=%expire% - %period%

if %keydevice%==%devices% (

    if %expire1% GTR 0 (call:install) else (
    ehco Key expired , please use new key ! 
    pause    
)
) 

echo Wrong key, do again !

goto loop

还有这个:

@if (@X)==(@Y) @end /* JScript comment
    @echo off
    

    cscript //E:JScript //nologo "%~f0"  %*

    exit /b %errorlevel%
    
@if (@X)==(@Y) @end JScript comment */


var toCall=null;
var input=null;
var ev=false;

function parseArgs(){
    var args=WScript.Arguments;
    if(args.Length==0){
        printHelp();
        WScript.Quit(0);
    }
    
    var help = [
        "-h",
        "-help",
        "-?",
        "/h",
        "/help",
        "/?"    
    ];
    
    for(var i=0;i<help.length;i++){
        if(args.Item(0).toLowerCase()==help[i]){
            printHelp();
            WScript.Quit(0);
        }
    }
    
    if(args.Length%2!=0){
        WScript.Echo("Wrong number of arguments");
        WScript.Quit(1);
    }
    
    for(var i=0;i<args.Length-1;i+=2){
        switch(args.Item(i).toLowerCase()){
            case "-decode":
                toCall=Base64.decode;
                input=args.Item(i+1);
                //return;
                break;
            case "-encode":
                toCall=Base64.encode;
                input=args.Item(i+1);
                //return;
                break;
            case "-eval":
                if(args.Item(i+1).toLowerCase()=="yes" || args.Item(i+1).toLowerCase()=="true"){
                    ev=true;
                }
                break;
                
            default:
                WScript.Echo("Wrong argument: "+args.Item(i));
                WScript.Quit(2);
                break;
        }
    }
    
    if(toCall==null || input==null){
        WScript.Echo("Wrong arguments");
        WScript.Quit(1);
    }
    
}

//http://stackoverflow.com/a/24294348/388389

var jsEscapes = {
  'n': '\n',
  'r': '\r',
  't': '\t',
  'f': '\f',
  'v': '\v',
  'b': '\b'
};

function decodeJsEscape(_, hex0, hex1, octal, other) {
  var hex = hex0 || hex1;
  if (hex) { return String.fromCharCode(parseInt(hex, 16)); }
  if (octal) { return String.fromCharCode(parseInt(octal, 8)); }
  return jsEscapes[other] || other;
}

function decodeJsString(s) {
  return s.replace(
      // Matches an escape sequence with UTF-16 in group 1, single byte hex in group 2,
      // octal in group 3, and arbitrary other single-character escapes in group 4.
      /\\(?:u([0-9A-Fa-f]{4})|x([0-9A-Fa-f]{2})|([0-3][0-7]{0,2}|[4-7][0-7]?)|(.))/g,
      decodeJsEscape);
}

function printHelp(){
    WScript.Echo(WScript.ScriptName + "  decodes or encodes base64 strings");
    WScript.Echo("");
    WScript.Echo("Usage:");
    WScript.Echo("");
    WScript.Echo(WScript.ScriptName + "{-decode|-encode} input [-eval {yes|no}]");
    WScript.Echo("  -eval - evaluate the special characters input");
    WScript.Echo("");
    WScript.Echo("Examples:");
    WScript.Echo("");
    WScript.Echo(WScript.ScriptName + " -encode \"\\u0022Hello\\u0022\" -eval yes " );
    WScript.Echo(WScript.ScriptName + " -decode \"SGVsbG8=\"");
}


//http://www.webtoolkit.info/javascript-base64.html#.WMpLPzuGOqk
var Base64 = {

// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",

// public method for encoding
encode : function (input) {
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;

    input = Base64._utf8_encode(input);

    while (i < input.length) {

        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
            enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
            enc4 = 64;
        }

        output = output +
        this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
        this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

    }

    return output;
},

// public method for decoding
decode : function (input) {
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    while (i < input.length) {

        enc1 = this._keyStr.indexOf(input.charAt(i++));
        enc2 = this._keyStr.indexOf(input.charAt(i++));
        enc3 = this._keyStr.indexOf(input.charAt(i++));
        enc4 = this._keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output = output + String.fromCharCode(chr1);

        if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
        }

    }

    output = Base64._utf8_decode(output);

    return output;

},

// private method for UTF-8 encoding
_utf8_encode : function (string) {
    string = string.replace(/\r\n/g,"\n");
    var utftext = "";

    for (var n = 0; n < string.length; n++) {

        var c = string.charCodeAt(n);

        if (c < 128) {
            utftext += String.fromCharCode(c);
        }
        else if((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
        }
        else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
        }

    }

    return utftext;
},

// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;

    while ( i < utftext.length ) {

        c = utftext.charCodeAt(i);

        if (c < 128) {
            string += String.fromCharCode(c);
            i++;
        }
        else if((c > 191) && (c < 224)) {
            c2 = utftext.charCodeAt(i+1);
            string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
        }
        else {
            c2 = utftext.charCodeAt(i+1);
            c3 = utftext.charCodeAt(i+2);
            string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }

    }

    return string;
}

}

parseArgs();

if(ev && toCall==Base64.encode) {
    input=decodeJsString(input);
}
//Why is this not working?
//WScript.Echo(toCall(input));

if(toCall==Base64.encode){
    WScript.Echo(Base64.encode(input));
} else {
    WScript.Echo(Base64.decode(input));
}

有人可以告诉我这些是什么意思以及如何解码密钥吗?

我试过base64编码,utf8编码,但结果还是不成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM