Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] поправить строки под x64 (http://forum.oszone.net/showthread.php?t=303170)

c4uran 31-07-2015 10:31 2534765

[решено] поправить строки под x64
 
в огромном скрипте есть блок отвечающий за ввод пароля и от греха по дальше скрывающий символы ввода:

Код:

echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>%tmp%\in.com 
set /p= Entered symbols will be hide:<nul
for /f "tokens=*" %%i in ('%tmp%\in.com') do set "password=%%i" 
del /q %tmp%\in.com>nul

на x64 системах вываливает ошибку, похоже in.com не существует в x64 или не работает
Возможно ли переписать этот блок под x64 или альтернативным способом скрыть вводимые символы с экрана в переменную?

NickM 31-07-2015 11:33 2534782

Какая ошибка? И с чего Вы взяли что in.com не существует? Вы Сами его созадете и заполняете символами в первой строке приведенного Вами кода.

sov44 31-07-2015 11:52 2534804

Цитата:

Цитата c4uran
похоже in.com не существует в x64 или не работает »

не нужно создавать файл in.com, создайте обычный текстовик

Код:

@echo off
setlocal enabledelayedexpansion

echo 4568736219>%tmp%\pass.txt 

:1
echo.
Set /p choice="Введите пароль: "
if not defined choice goto 1
for /f %%i in (%tmp%\pass.txt) do if not "%%i"=="choice" echo ошибка ввода& pause>nul& cls& goto 1
pause
exit


Georgio 31-07-2015 12:31 2534831

Цитата:

Цитата c4uran
на x64 системах вываливает ошибку, похоже in.com... в x64... не работает »



Да, это так.




Цитата:

Цитата c4uran
Возможно ли переписать этот блок под x64 или альтернативным способом скрыть вводимые символы с экрана в переменную? »



Возможно только применение альтернативной "технологии":

Код:

for /f "delims=" %%i in ('
 mshta "about:<html><head><title>Your title</title></head><script language="javascript">function a(){new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(window.frm.t.value);close();}</script><body><center><br><br><br><br><br><br><br><br><br><br><form id='frm'><input type='password' name='t' size=12><input type='button' value='Entered symbols will be hide. Press this button after entering.' onclick='a();'></form></center></body></html>"
') do set password=%%i

.

c4uran 01-08-2015 15:57 2535414

sov44 не очень понял ваш код он сравнивает веденый пароль с тем что в файле

Georgio метод работает(это безумие даже понять не могу как такое пришло вам в голову), спасибо, это конешн круто как я понимаю альтернатив больше нет?

Iska 01-08-2015 18:36 2535506

Цитата:

Цитата c4uran
как я понимаю альтернатив больше нет? »

PowerShell. Написать свой или перекомпилировать in.com под новую архитектуру.

Georgio 02-08-2015 02:16 2535680

Цитата:

Цитата Iska
PowerShell. »



Угу. Например, так:
Код:

$password = ($x = [System.Runtime.InteropServices.Marshal])::PtrToStringAuto($x::SecureStringToBSTR((Read-Host 'Entered symbols will be hide' -AsSecureString)))
.

Можно и в пакетный файл вставить:

Код:

for /f "delims=" %%i in ('
 powershell "($x=[System.Runtime.InteropServices.Marshal])::PtrToStringAuto($x::SecureStringToBSTR((Read-Host 'Entered symbols will be hide' -AsSecureString)))"
') do set password=%%i

.

c4uran 02-08-2015 12:26 2535803

Georgio,
ТЫСЯЧА СПАСИБО ТО ЧТО НУЖНО!!!! ГЕНИАЛЬНО!!!

если не сложно поясните пожалуйста код powershell, что делает каждый вызов


Время: 06:29.

Время: 06:29.
© OSzone.net 2001-