Created
July 12, 2024 09:50
-
-
Save rossigee/a01d16b37cbb17d19dbff46dcdbf294c to your computer and use it in GitHub Desktop.
RouterOS7 Base64 string decoding function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:global int2chr do={ | |
:local symbolsHex {"\00";"\01";"\02";"\03";"\04";"\05";"\06";"\07";"\08";"\09";"\0A";"\0B";"\0C";"\0D";"\0E";"\0F";"\10";"\11";"\12";"\13";"\14";"\15";"\16";"\17";"\18";"\19";"\1A";"\1B";"\1C";"\1D";"\1E";"\1F";"\20";"\21";"\22";"\23";"\24";"\25";"\26";"\27";"\28";"\29";"\2A";"\2B";"\2C";"\2D";"\2E";"\2F";"\30";"\31";"\32";"\33";"\34";"\35";"\36";"\37";"\38";"\39";"\3A";"\3B";"\3C";"\3D";"\3E";"\3F";"\40";"\41";"\42";"\43";"\44";"\45";"\46";"\47";"\48";"\49";"\4A";"\4B";"\4C";"\4D";"\4E";"\4F";"\50";"\51";"\52";"\53";"\54";"\55";"\56";"\57";"\58";"\59";"\5A";"\5B";"\5C";"\5D";"\5E";"\5F";"\60";"\61";"\62";"\63";"\64";"\65";"\66";"\67";"\68";"\69";"\6A";"\6B";"\6C";"\6D";"\6E";"\6F";"\70";"\71";"\72";"\73";"\74";"\75";"\76";"\77";"\78";"\79";"\7A";"\7B";"\7C";"\7D";"\7E";"\7F";"\80";"\81";"\82";"\83";"\84";"\85";"\86";"\87";"\88";"\89";"\8A";"\8B";"\8C";"\8D";"\8E";"\8F";"\90";"\91";"\92";"\93";"\94";"\95";"\96";"\97";"\98";"\99";"\9A";"\9B";"\9C";"\9D";"\9E";"\9F";"\A0";"\A1";"\A2";"\A3";"\A4";"\A5";"\A6";"\A7";"\A8";"\A9";"\AA";"\AB";"\AC";"\AD";"\AE";"\AF";"\B0";"\B1";"\B2";"\B3";"\B4";"\B5";"\B6";"\B7";"\B8";"\B9";"\BA";"\BB";"\BC";"\BD";"\BE";"\BF";"\C0";"\C1";"\C2";"\C3";"\C4";"\C5";"\C6";"\C7";"\C8";"\C9";"\CA";"\CB";"\CC";"\CD";"\CE";"\CF";"\D0";"\D1";"\D2";"\D3";"\D4";"\D5";"\D6";"\D7";"\D8";"\D9";"\DA";"\DB";"\DC";"\DD";"\DE";"\DF";"\E0";"\E1";"\E2";"\E3";"\E4";"\E5";"\E6";"\E7";"\E8";"\E9";"\EA";"\EB";"\EC";"\ED";"\EE";"\EF";"\F0";"\F1";"\F2";"\F3";"\F4";"\F5";"\F6";"\F7";"\F8";"\F9";"\FA";"\FB";"\FC";"\FD";"\FE";"\FF"}; | |
:return ($symbolsHex->[:tonum $1]) | |
} | |
:global base64decode do={ | |
:global int2chr | |
:local encoded $1; | |
:local decoded "" | |
:local b64 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" | |
:for pos from=0 to=([:len $encoded]-1) step=4 do={ | |
:local part [:pick $encoded $pos ($pos+4)] | |
:local n 0 | |
:local idx 0 | |
:for step from=0 to=4 step=1 do={ | |
:local c [:pick $part $step ($step+1)] | |
:set idx [:find $b64 $c 0] | |
:set $n ($n + ($idx << (18-$step*6))) | |
} | |
:for shift from=16 to=0 step=-8 do={ | |
:local asciicode (($n >> $shift) & 255) | |
:set $decoded ($decoded . [$int2chr $asciicode]) | |
} | |
} | |
:return $decoded | |
} | |
{ | |
:local data2 "dGhpcyBpcyBzYW1wbGUgdGV4dCwgZW5jb2RlZCBpbnRvIGJhc2U2NCBmb3IgZnVuIGFuZCBwcm9maXQh" | |
:put "encoded: $data2" | |
:local decoded [$base64decode $data2] | |
:put "decoded: $decoded" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment