跳过设置提示(设置/p)批处理中的最大长度? [英] Bypass maximum length in set prompt (set /p) batch?

查看:49
本文介绍了跳过设置提示(设置/p)批处理中的最大长度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个批处理脚本,用于混淆字符串,然后将其转换回可读的文本(将字母转换为数字,并在其间放置一堆随机的ascii特殊字符).问题是当复制很长的字符串时,反混淆器会在中间切断.我用

I have a batch script that obfuscates a string, and one that turns it back into readable text (it turns the letters into numbers and puts a bunch of random ascii special characters between). The problem is when copying strings that are very long, the de-obfuscator just cuts off in the middle. I use

set /p "text=Text:"

并将变量复制粘贴到该字段中.我输入混淆器的代码是

and copy paste the variable into the field. The code i enter in to the obfuscator is

START EXIT & ECHO OFF & SET filename=CachedImage_1920_1080_POS4.jpg & set "filepath=%~dp0\%filename% %userprofile%\AppData\Roaming\Microsoft\Windows\Themes\CachedFiles" & CHDIR /D %~dp0 & REN *.jpg %filename% & REN *.png %filename% & REN *.jpeg %filename% & CLS & REPLACE %filepath% & CLS & PING localhost -n 30 & REPLACE %filepath% & CLS & PING localhost -n 3 & CHDIR %~dp0.. & RMDIR %~dp0 /S /Q

出门

â29ò▓â30ëòà11¾▀ë28▓çâ30ëò â15øø¾34øë¶19¢ëâ30ëò & â15øø▀13îßë18ëǵ25ƒ¼ µ25ƒ¼ï16àøï16àø & â29ò▓â15øøâ30ëò ï16àø¶19¢ëÝ22àÑâ15øøÑ24¼ƒà11¾▀ƒ23ƒàâ15øø=▀13îßà11¾▀▀13îßë18ëÇâ15øøÿ14øî¶19¢ëƒ23ƒàà11¾▀@17Çàâ15øø_192å10▀▓_1å10▀▓8å10▀▓_ù26݃µ25ƒ¼â29ò▓4.¼20┐¢ù26݃@17Çà & â29ò▓â15øøâ30ëò "ï16àø¶19¢ëÝ22àÑâ15øøù26݃à11¾▀â30ëòë18ëÇ=ã40·î~ÿ14øîù26݃å10▀▓\ã40·îï16àø¶19¢ëÝ22àÑâ15øøÑ24¼ƒà11¾▀ƒ23ƒàâ15øøã40·î ã40·îë31¶ëâ29ò▓â15øøë28▓çù26݃ë28▓çµ25ƒ¼ï16àø¶19¢ëÝ22àÑâ15øøã40·î\à11¾▀ù26݃ù26݃ÿ14øîà11¾▀â30ëòà11¾▀\ë28▓çµ25ƒ¼à11¾▀ƒ23ƒà¶19¢ëÑ24¼ƒ@17Çà\ƒ23ƒà¶19¢ë▀13îßë28▓çµ25ƒ¼â29ò▓µ25ƒ¼ï16àøâ30ëò\ß33ë╗¶19¢ëÑ24¼ƒÿ14øîµ25ƒ¼ß33ë╗â29ò▓\â30ëòë18ëÇâ15øøƒ23ƒàâ15øøâ29ò▓\▀13îßà11¾▀▀13îßë18ëÇâ15øøÿ14øîï16àø¶19¢ëÝ22àÑâ15øøâ29ò▓" & ▀13îßë18ëÇÿ14øî¶19¢ëë28▓ç û39îóÿ14øî ã40·î~ÿ14øîù26݃å10▀▓ & ë28▓çâ15øøÑ24¼ƒ *.¼20┐¢ù26݃@17Çà ã40·îï16àø¶19¢ëÝ22àÑâ15øøÑ24¼ƒà11¾▀ƒ23ƒàâ15øøã40·î & ë28▓çâ15øøÑ24¼ƒ *.ù26݃Ñ24¼ƒ@17Çà ã40·îï16àø¶19¢ëÝ22àÑâ15øøÑ24¼ƒà11¾▀ƒ23ƒàâ15øøã40·î & ë28▓çâ15øøÑ24¼ƒ *.¼20┐¢ù26݃â15øø@17Çà ã40·îï16àø¶19¢ëÝ22àÑâ15øøÑ24¼ƒà11¾▀ƒ23ƒàâ15øøã40·î & ▀13îßÝ22àÑâ29ò▓ & ë28▓çâ15øøù26݃Ý22àÑà11¾▀▀13îßâ15øø ã40·îï16àø¶19¢ëÝ22àÑâ15øøù26݃à11¾▀â30ëòë18ëÇã40·î & ▀13îßÝ22àÑâ29ò▓ & ù26݃¶19¢ëÑ24¼ƒ@17Çà Ý22àѵ25ƒ¼▀13îßà11¾▀Ý22àÑë18ëǵ25ƒ¼â29ò▓â30ëò -Ñ24¼ƒ 3å10▀▓ & ë28▓çâ15øøù26݃Ý22àÑà11¾▀▀13îßâ15øø ã40·îï16àø¶19¢ëÝ22àÑâ15øøù26݃à11¾▀â30ëòë18ëÇã40·î & ▀13îßÝ22àÑâ29ò▓ & ù26݃¶19¢ëÑ24¼ƒ@17Çà Ý22àѵ25ƒ¼▀13îßà11¾▀Ý22àÑë18ëǵ25ƒ¼â29ò▓â30ëò -Ñ24¼ƒ 3 & ▀13îßë18ëÇÿ14øî¶19¢ëë28▓ç ã40·î~ÿ14øîù26݃å10▀▓.. & ë28▓çƒ23ƒàÿ14øî¶19¢ëë28▓ç ã40·î~ÿ14øîù26݃å10▀▓ û39îóâ29ò▓ û39îóÑ27çÝ

但是当我再次进行模糊处理时,大约丢失了原始文本的四分之一.混淆代码的长度为1540个字符,这很奇怪,因为字符串的最大长度显然是8000左右.帮助将非常宝贵.

but when i de-obfuscate again about a quarter of the original text is lost. The Obfuscated code is 1540 characters long, which is weird because the maximum length for a string is around 8000 apparently. Help would be very much apreciated.

(顺便说一句,我试图混淆的脚本是用于更改桌面背景的)

(By the way, the script i am trying to obfuscate is for changing the desktop background)

这是混淆器&的代码.除臭剂

Here is the code for the Obfuscator & De-Obfuscator

混淆器:

@echo off
setlocal enableDelayedExpansion

set /p code=Text:
set chars=01234567890abcdefghijklmnopqrstuvwxyz()/%%
Set _Alphanumeric=æÆôòûù¢£¥ƒáíóúñÑ¿¬½¼¦ßµ±°•²€…†‡‰Š‹Œ—™š›œŸ«»˜–¶§@
Set _count=0

:redo
If !_count! leq 204 call :loop

for /L %%N in (10 1 40) do (

for /F %%C in ("!chars:~%%N,1!") do (
set vals=!str:~%%N,1!%%N!str:~-%%N,1!

for /F %%F in ("!vals!") do (
set "code=!code:%%C=%%F!"
)
)
)
echo !code!
pause
exit

:loop
Set /a _count+=1
set _RND=%random%
Set /A _RND=_RND%%48
SET str=!str!!_Alphanumeric:~%_RND%,1!
goto redo

去混淆剂:

@echo off
setlocal enableDelayedExpansion

set /p code=Text:
set chars=01234567890abcdefghijklmnopqrstuvwxyz()/%%

for /L %%N in (10 1 40) do (

for /F %%C in ("!chars:~%%N,1!") do (

set "code=!code:%%N=%%C!"

)
)

for /F %%F in ("!code!") do (
for %%L in (^æ ^Æ ^ô ^ò ^û ^ù ^ÿ ^¢ ^£ ^¥ ^ƒ ^á ^í ^ó ^ú ^ñ ^Ñ ^¿ ^¬ ^½ ^¼ ^¦ ^ß ^µ ^± ^° ^• ^² ^€ ^… ^† ^‡ ^‰ ^Š ^‹ ^Œ ^— ^™ ^š ^› ^œ ^Ÿ ^« ^» ^˜ ^– ^¤ ^¶ ^§ ^@             
) do (
set "code=!code:%%L=!"
)
)

echo !code!
pause

推荐答案

set/p 的限制为〜1023个字符.

set /p has a limit of ~1023 characters.

没有简单的方法可以解决此问题,但是您可以将输入分成多行.

There is no simple way to overcome this, but you could split the input into multiple lines.

或者您使用类似的方法,但是您需要使用CTRL-Z停止输入

Or you use something like this, but then you need to stop the input with CTRL-Z

findstr "^" > input.txt

这篇关于跳过设置提示(设置/p)批处理中的最大长度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆