2013-08-28 3 views
3

У меня есть пакетный скрипт с паролем, сидящим в нем как часть команды, требующей учетных данных, которые я не хочу запрашивать для учетных данных. Меня не беспокоят внешние угрозы, но я действительно не хочу, чтобы сотрудник работал там и видел этот пароль. Хотя я им доверяю, чтобы не злоупотреблять им, я бы предпочел не иметь его там вообще.Обфускация пароля в пакетном скрипте

Я смог сделать это довольно легко с помощью PowerShell, просто сохранив защищенную строку в текстовом файле. Довольно простой, но, по крайней мере, нет простых текстовых паролей. Это все, что мне действительно нужно.

Как я могу запутать пароль в пакетном скрипте?

+0

вы не можете скрыть пароль эффективно без сторонних инструментов в пакетном режиме. – Endoro

+0

вы можете попробовать закодировать его с помощью 'certutil' в hex или base64 (или обоих) -> http://ss64.com/nt/certutil.html. Это самая простая вещь, которая приходит ко мне прямо сейчас. – npocmaka

+0

@npocmaka Это может сработать, мне даже не нужно его зашифровывать ... просто все, что не является простым текстом. – tnw

ответ

6

Вы также можете скрыть пароль в незашифрованном альтернативный поток данных:

Во-первых, добавьте несколько секретный пароль альтернативный поток данных вашего скрипта:

echo somewhatsecretpassword>script.bat:pwd 

Вот как запросить пароль в переменную %p%:

for /f "usebackq delims=" %i in (script.bat:pwd) do set p=%i 

Изнутри самого пакетного файла, который вы ма у использовать что-то вроде:

for /f "usebackq delims=" %%i in (%~0:pwd) do set p=%%i 

Это не безопасно!

Пожалуйста, обратите внимание:

  • Это не безопасно!
  • Альтернативные потоки данных не копируется везде (FAT)
  • паролей, содержащих специальные символы, возможно, должны быть экранированы, чтобы получить письменные правильно поток
  • ... это не безопасно
+1

Я бы рекомендовал использовать командную строку немедленно в 'FOR', чтобы избежать сохранения пароля в переменных среды. –

+0

nitpicky grammar: «Вы также можете скрыть пароль в альтернативном потоке данных [n]». форма «an» всегда используется, когда начинается следующее слово с гласным звуком (сравните «двигатель» с «двигателем»).Решение - это то, что я искал, хотя и достаточно, чтобы предотвратить поверхностное любопытство и секрет, который будет потерян, если файл будет скопирован. – Charemer

+0

@Charemer Я только что скорректировал это, я действительно понял это на второй линии .... – marapet

2

сделать что-то вроде

:main 
set a=pas 
set b=rd 
set /p input= 
if %input%==%a%swo%b% goto start 
:start 
<your code here> 
goto main 

пароль «пароль», но это немного запутанным.

Смежные вопросы