Advertisement
FoddEx

Cipher tool

Jun 17th, 2020
2,186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.81 KB | None | 0 0
  1. @echo off&setlocal enabledelayedexpansion&chcp 65001>nul&goto x
  2. :e.2
  3. if %ecx% GTR %cl% goto ei
  4. set "ec=%ea:~0,1%"&set /a ecx+=1
  5. if "%ec%"=="%es%" goto e%m%
  6. set "ea=%ea:~1%"&goto e.2
  7. :e0
  8. set /a enx=((%ecx%+%k%+%em%)%%%cl%+%cl%)%%%cl%
  9. set /a em+=((%ecx%-%k%)%%%cl%+%cl%)%%%cl%
  10. goto e.3
  11. :e1
  12. set /a enx=(((%ecx%-%k%-2-%em%)%%%cl%+%cl%)%%%cl%)-1
  13. set /a em+=((%enx%-%k%+1)%%%cl%+%cl%)%%%cl%
  14. goto e.3
  15. :e.1
  16. if not defined ei_ goto e.e
  17. set "es=%ei_:~0,1%"&set ecx=0
  18. set /a p+=1
  19. set /a _p=%p%*100/%ilen%
  20. title Processing... %_p%%%
  21. goto e.2
  22. :e.3
  23. set "en=!c:~%enx%,1!"
  24. set "eo=%eo%%en%"&set "ei_=%ei_:~1%"&set "ea=%c%"&goto e.1
  25. :x
  26. set m=0
  27. set "mc=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/="&call :l "!mc!"&set cl=!il!
  28. set /a r_cl=!cl!-1
  29. set r_n=0&for /l %%A in (1,1,%r_cl%) do set "r_n=!r_n!, %%A"
  30. :k
  31. cls&set /p "k=Numerical key> "&if !k! EQU +!k! (if !k! LEQ 2147483333 (call :r "!k!"&goto m) else (echo Invalid key&timeout /t 2 >nul&goto k)) else (echo Invalid key.&timeout /t 2 >nul&goto k)
  32. :m
  33. title Cipher tool 3.0 - %USERNAME% Edition&cls&echo.&echo  Your key:  !k!&echo.&echo. /k ^<key^> to change key&echo.&set /p i="Message> "&if "!i:~0,3!"=="/k " (set "tk=!i:~3!"&if !tk! EQU +!tk! (if !tk! LEQ 2147483333 (call :r "!tk!"&set k=!tk!) else (echo Invalid key&timeout /t 2 >nul)) else (echo Invalid key&timeout /t 2 >nul))&goto m
  34. if "!i!"=="" goto m
  35. if "!i:~0,4!"=="_MCD" (set "i=!i:~4!"&if !m!==0 call :a) else if !m!==1 call :a
  36. if !m!==0 call :d0
  37. call :l "!i!"&set ilen=!il!
  38. echo.&call :e "!i!"&goto m
  39. :e
  40. setlocal
  41. set "ei=%~1"&set "ei_=%~1"&if !m!==0 (set em=3) else set em=2
  42. set "ea=!c!"&goto e.1
  43. :e.e
  44. if !m!==1 call :d1
  45. if !m!==0 (if "!eo!"=="" (echo ERROR) else echo._MCD!eo!
  46. <nul set /p _="```_MCD!eo!```"|clip&pause>nul) else if "!eo!"=="" (echo ERROR) else echo.!eo!&pause>nul
  47. endlocal&goto :eof
  48. :l
  49. set "l_i=%~1"&set il=0
  50. goto z
  51. :z
  52. if not defined l_i goto :eof
  53. set /a il+=1
  54. set "l_i=!l_i:~0,-1!"&goto z
  55. :a
  56. if !m!==0 (set m=1) else set m=0
  57. goto :eof
  58. :r
  59. set "c="&for /f "usebackq tokens=*" %%A in (`powershell -command "%r_n% | get-random -count %cl% -setseed %~1"`) do set "c=!c!!mc:~%%A,1!"
  60. call :l "!c!"&if !il! LSS !cl! echo.INVALID SHUFFLE:&echo.c  ^(!cl!^) = !c!&echo.mc ^(!il!^) = !mc!&pause>nul&exit
  61. goto :eof
  62. :ei
  63. echo ERROR: CHARACTER INDEX OUT OF RANGE ^(!es!^).&pause>nul&endlocal&goto :eof
  64. :d0
  65. set ds=!i:"=\`"!
  66. set ds=!ds:'=''!
  67. set ds=!ds:+=\+!
  68. set "ps=powershell -command "$b = [System.Text.Encoding]::UTF8.GetBytes('!ds!'); ^
  69.     [System.Convert]::ToBase64String($b)""
  70. for /f "usebackq tokens=*" %%A in (`%ps%`) do set "i=%%A"
  71. goto :eof
  72. :d1
  73. set "ps=powershell -command "$b = [System.Convert]::FromBase64String('!eo!'); ^
  74.     [System.Text.Encoding]::UTF8.GetString($b)""
  75. for /f "usebackq tokens=*" %%A in (`%ps%`) do set "eo=%%A"
  76. set eo=!eo:\`="!
  77. set eo=!eo:\+=+!
  78. goto :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement