বাশ স্ক্রিপ্টগুলিতে স্ক্রিনে না দেখিয়ে পাসওয়ার্ড পড়া


20

টার্মিনালে প্রদর্শিত না হওয়া সরঞ্জামগুলির মতো এমনভাবে কীভাবে ব্যাশ স্ক্রিপ্টগুলিতে পাসওয়ার্ড পড়তে হয়?

(ফন্টকে কালো রঙে পরিবর্তন করা অনুলিপি করে সহজেই অনুলিপি করে পেস্ট করতে পারে - সুতরাং এটি সমাধান নয়)


3
যে কারও এটি পড়ার জন্য: প্রতিধ্বনিগুলি অন এবং ব্ল্যাক-অন-কালক দিয়ে পড়বেন না। পাসওয়ার্ডটি এখনও সঞ্চারিত হয়েছে, এবং যদি টার্মিনালটি আপনি ব্যবহার করেছেন এমন টার্মিনাল নির্দেশাবলী জানেন না, অক্ষরগুলি দৃশ্যমানভাবে প্রতিধ্বনিত হবে। প্রতিধ্বনি বন্ধ করুন। ব্যবহারের termios, stty, read -s, কিছু যে এটা আছে।
অ্যালেক্সিয়াস

সে কারণেই আমি লিখেছি, এটি কোনও সমাধান নয়;)।
গ্রেজগোর্জ ওয়েয়ারজোইকিকি

প্রকৃতপক্ষে! কখনও কখনও লোকেরা প্রশ্ন এড়িয়ে যায় এবং বিপথগামী সিদ্ধান্তে আসে। :)
অ্যালেক্সিয়াস

উত্তর:


30

থেকে help read:

-s        do not echo input coming from a terminal

1
গ্রেট। এটি আমার লেখা নেই man read, আমি চেক ইন করিনি help read। জানা ভাল.
গ্রেজগোর্জ ওয়েয়ারজোইকিকি

3
@ গ্রজেগোর্জউইয়ারজোওইকিকি: আপনি ভুল ম্যানুয়ালটি দেখছেন। আপনাকে man bashSilent mode. If input is coming from a terminal, characters are not echoed.
বাশের

5

আমি সর্বদা stty -echoপ্রতিধ্বনি বন্ধ করে দিতাম, তারপরে পড়তাম এবং তারপরে করতাম stty echo(ম্যান অফ দেখে stty- আরও পড়ুন man stty)। এটি প্রোগ্রামারদের দৃষ্টিভঙ্গি থেকে আরও কার্যকর কারণ আপনি প্রতিধ্বনি বন্ধ করতে পারেন এবং তারপরে জাভা, সি (++), পাইথন ইত্যাদির মতো প্রোগ্রামিং ভাষা থেকে পাসওয়ার্ড পড়তে পারেন তাদের "স্ট্যান্ডার্ড স্ট্যান্ডিন" দিয়ে।

ব্যাশে, ব্যবহারটি দেখতে এইরকম হতে পারে:

echo -n "USERNAME: "; read uname
echo -n "PASSWORD: "; stty -echo; read passwd; stty echo; echo
program $uname $passwd
passwd= # get rid of passwd

পাইথন উদাহরণস্বরূপ:

from sys import stdout
from os import system as term

uname = raw_input("USERNAME: ") # read input from stdin until [Enter] in 2
stdout.write("PASSWORD: ")
term("stty -echo") # turn echo off
try:
    passwd = raw_input()
except KeyboardInterrupt: # ctrl+c pressed
    raise SystemExit("Password attempt interrupted")
except EOFError: # ctrl+d pressed
    raise SystemExit("Password attempt interrupted")
finally:
    term("stty echo") # turn echo on again

print "username:", uname
print "password:", "*" * len(passwd)

পাইথনে আমাকে অনেক সময় এটি করতে হয়েছিল, তাই আমি এটিকে দৃষ্টিকোণ থেকে বেশ ভাল জানি। যদিও অন্য ভাষায় অনুবাদ করা খুব কঠিন নয়।


-1

আপনার প্রশ্নটি "সরঞ্জামগুলির মতো একরকমভাবে ???" বিভিন্ন ধরণের পড়ে সুতরাং আমি জানি না এটি আপনার পক্ষে কাজ করবে কিনা:

system1 $ passwd=abc123
system1 $ printf "%s\n" "${passwd//?/*}"
******
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.