Advertisement
SmartGenius

Base 64 Decoder (Batch)

Jul 6th, 2012
652
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. @echo off
  2. :: Decoder base64
  3. :: by Germaniac
  4. :: Mod by SmarGenius (pure batch instead of using VBS)
  5. setlocal enableextensions enabledelayedexpansion
  6. title Decoder base64
  7. set base64=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
  8.  
  9. :input
  10. cls
  11. set text=
  12. set /p text=Input base64 text:
  13. if defined text call :decoder
  14. goto :input
  15.  
  16. :decoder
  17. set char.equ=0
  18. set binario.total=
  19. set decimal.total=
  20. echo:Wait...
  21. call :base64.binario
  22. for /l %%a in (1 1 %char.equ%) do (
  23. set binario.total=!binario.total!000000
  24. set binario.total=!binario.total:~0,-8!)
  25. call :binario.ocho.bits
  26. call :decimal.ascii
  27. echo:Output ascii text:%ascii%
  28. pause>nul
  29. goto :eof
  30.  
  31. :base64.binario
  32. set char=%text:~0,1%
  33. if "!char!" equ "=" (set /a char.equ+=1) else call :char.binario
  34. set text=%text:~1%
  35. if not defined text goto :eof
  36. goto :base64.binario
  37.  
  38. :char.binario
  39. for /l %%a in (0 1 64) do (
  40. set value=!base64:~%%a,1!
  41. if "!char!" equ "!value!" (
  42. call :decimal.binario %%a))
  43. set binario.total=%binario.total%%binario%
  44. goto :eof
  45.  
  46. :decimal.binario
  47. set value=%1
  48. set binario=
  49. :binario.loop
  50. set /a mod=value%%2
  51. set /a value/=2
  52. set binario=%mod%%binario%
  53. if %value%==0 (
  54. call :count.char %binario%
  55. for /l %%a in (!digit! 1 5) do set binario=0!binario!
  56. goto :eof)
  57. goto :binario.loop
  58.  
  59. :count.char
  60. set value=%1
  61. set digit=1
  62. :count.loop
  63. set value=%value:~1%
  64. if not defined value goto :eof
  65. set /a digit+=1
  66. goto :count.loop
  67.  
  68. :binario.ocho.bits
  69. set count=0
  70. set decimal=0
  71. set ocho.bits=%binario.total:~0,8%
  72. call :binario.decimal
  73. if defined decimal.total (set decimal.total=%decimal.total%,%decimal%) else set decimal.total=%decimal%
  74. set binario.total=%binario.total:~8%
  75. if not defined binario.total goto :eof
  76. goto :binario.ocho.bits
  77.  
  78. :binario.decimal
  79. set bit=%ocho.bits:~-1%
  80. if "%bit%" equ "1" (
  81. set /a "add=1<<count"
  82. set /a decimal+=add)
  83. set /a count+=1
  84. set ocho.bits=%ocho.bits:~0,-1%
  85. if not defined ocho.bits goto :eof
  86. goto :binario.decimal
  87.  
  88. :decimal.ascii
  89. For %%a in (%decimal.total%) do (
  90. Cmd /cexit /b %%a
  91. Set "Ascii=!Ascii!!=ExitCodeAscii!")
  92. Goto :Eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement