কোনও কমান্ডের জন্য কোনও প্রম্পট ব্যবহার করে বাশে সংবেদনশীল ডেটা পাস করার কোনও উপায় আছে কি?


40

ধরুন আমি sha1passকমান্ড লাইনে কিছু সংবেদনশীল পাসওয়ার্ডের একটি হ্যাশ তৈরি করতে ব্যবহার করছি। আমি sha1pass mysecretএকটি হ্যাশ তৈরি করতে ব্যবহার করতে পারি mysecretতবে এটির অসুবিধাটি mysecretএখন বাশ ইতিহাসে is mysecretসাধারণ- passwdস্টাইল প্রম্পট ব্যবহার করে, সরল পাঠ্যটি প্রকাশ করা এড়িয়ে গিয়ে এই আদেশের শেষ লক্ষ্য অর্জন করার কোনও উপায় আছে কি ?

আমি কোনও কমান্ডের সংবেদনশীল ডেটা দেওয়ার জন্য এটি করার একটি সাধারণ পদ্ধতিতেও আগ্রহী। সংবেদনশীল ডেটা আর্গুমেন্ট হিসাবে যেমন পাস করা হয় (যেমন ইন sha1pass) বা কোনও কমান্ডে এসটিডিআইএন-এ পাঠানো হবে তখন পদ্ধতিটি পরিবর্তিত হবে ।

এটি সম্পাদন করার কোনও উপায় আছে?


সম্পাদনা করুন : এই প্রশ্নটি অনেক মনোযোগ আকর্ষণ করেছে এবং নীচে বেশ কয়েকটি ভাল উত্তর দেওয়া হয়েছে। সংক্ষিপ্তসারটি হ'ল:

  • অনুযায়ী @ Kusalananda এর উত্তর , আদর্শভাবে এক একটি পাসওয়ার্ড বা একটি ইউটিলিটি করার জন্য একটি কম্যান্ড-লাইন আর্গুমেন্ট হিসাবে গোপন দিতে হবে না। এটি তাঁর বর্ণনা অনুসারে বিভিন্ন উপায়ে ঝুঁকিপূর্ণ এবং একটি ভাল ডিজাইনের ইউটিলিটি ব্যবহার করা উচিত যা এসটিডিআইএন-এ গোপন ইনপুট নিতে সক্ষম of
  • @ ভিএফবিসিলবার উত্তরটি কীভাবে বাশ ইতিহাসে জিনিসগুলি সংরক্ষণ করা থেকে রক্ষা করতে পারে তা বর্ণনা করে
  • @ জোনাথনের জবাবটি যতক্ষণ না এসটিডিইএন-তে গোপনীয় তথ্য গ্রহণ করতে পারে ততক্ষণ এটি সম্পাদন করার জন্য একটি দুর্দান্ত পদ্ধতি সম্পর্কে বর্ণনা করা হয়েছে। যেমন, আমি এই উত্তরটি গ্রহণ করার সিদ্ধান্ত নিয়েছি। sha1passআমার ওপিতে একটি উদাহরণ ছিল, তবে আলোচনাটি প্রতিষ্ঠিত করেছে যে আরও ভাল সরঞ্জাম রয়েছে যা এসটিডিইএন-এ ডেটা নেয়।
  • যেমন @ আর .. তার উত্তরে নোট করে , ভেরিয়েবলের উপর কমান্ড প্রসারণের ব্যবহার নিরাপদ নয়

সুতরাং, সংক্ষেপে, আমি @ জোনাথনের উত্তর গ্রহণ করেছি কারণ এটি আপনার পক্ষে একটি ভাল নকশাযুক্ত এবং ভাল আচরণের জন্য কাজ করার জন্য সর্বোত্তম সমাধান। কমান্ড-লাইন আর্গুমেন্ট হিসাবে পাসওয়ার্ড বা গোপনীয়করণটি মূলত অনিরাপদ হলেও, অন্য উত্তরগুলি সহজ সুরক্ষা উদ্বেগ প্রশমিত করার উপায় সরবরাহ করে।


6
শুধু তা-ই নয়: চলমান প্রক্রিয়াগুলির তালিকা করার অনুমতি নিয়ে একই মেশিনে থাকা যে কেউ সম্ভাব্যভাবে sha1pass mysecretএটি চলমান দেখতে পাবে , এবং তাই এটি কী তা জানতে পারে mysecret। (প্রোগ্রামটি প্রকৃতপক্ষে চলাকালীন এটি কেবল কয়েক সেকেন্ডের জন্যই কাজ করে ...)
ম্যাথমেটিক্যালআরচিড

@ গণিতের অর্কিড এটি একটি ব্যক্তিগত ভার্চুয়াল মেশিনে চালিয়ে এড়ানো যেতে পারে। তবে এটি কেবলমাত্র একটি একক পাসওয়ার্ড তৈরি করতে খুব বেশি কাজ হতে পারে ... :-)
কুসালানন্দ

5
@ কুসালানন্দ আমার বক্তব্যটি আরও বেশি ছিল "কমান্ড লাইনে সংবেদনশীল তথ্য কখনও রাখবেন না, এমনকি যদি আপনি কীভাবে কমান্ডের ইতিহাস বন্ধ করবেন তাও বুঝতে পারেন" ...
গাণিতিক

2
ঠিক তাই আপনি জানেন, SHA-1 কে কয়েক বছর ধরে কী বা পাসওয়ার্ড হ্যাশগুলির জন্য অবচিত করা হয়েছে।
ডেভিড ফোস্টারস্টার 21

2
নোট করুন যে সিস্টেমটি যদি অডিট ডিমন চালাচ্ছে, সমস্ত ব্যবহারকারী এবং সমস্ত কমান্ড এবং সমস্ত আর্গুমেন্ট মূলভাবে মূলভাবে লগইন করেছেন, সুতরাং যে কেউ এই লগগুলিতে অ্যাক্সেস করতে পারে সে এটি দেখতে পাবে।
র্যান্ডল

উত্তর:


20

যদি শেল zshবা bashশেলটি ব্যবহার করে থাকে readতবে টার্মিনাল ডিভাইস থেকে এটি কোনও প্রতিধ্বনিত না করে কোনও লাইন পড়তে শেল বিল্টিনে -s বিকল্পটি ব্যবহার করুন ।

IFS= read -rs VARIABLE < /dev/tty

তারপরে আপনি স্টিডিন হিসাবে ভেরিয়েবলটি ব্যবহার করতে কিছু অভিনব পুনর্নির্দেশ ব্যবহার করতে পারেন।

sha1pass <<<"$VARIABLE"

যদি কেউ psদৌড়ে যায় তবে তারা যা দেখতে পাবে তা হ'ল "শা 1 পাস"।

এটি ধরে নেওয়া হয় যে sha1passস্ট্রিনের পাসওয়ার্ড পড়ে (এক লাইনে, লাইন ডিলিমিটার উপেক্ষা করে) যখন কোনও যুক্তি না দেওয়া হয়।


আমি বিশ্বাস করি যে আমরা প্রতিষ্ঠিত করেছি যা sha1passএর স্ট্যান্ডার্ড ইনপুট স্ট্রিমটি ব্যবহার করে না।
কুসালানন্দ

@ কুসালানন্দ ঠিক আছে, তবে এই পদ্ধতিটি স্ট্যান্ডিনের পড়া প্রোগ্রামগুলির জন্য কাজ করবে।
জোনাথন

সুতরাং, ধরে নিই ইউটিলিটি এসটিডিনে এটির গোপন ইনপুট নিতে পারে, এটি সুরক্ষা-ভিত্তিক কী একটি সুরক্ষিত এবং নিরাপদ সমাধান?
কবর দিন

আমি এই উত্তরটি গ্রহণ করার সিদ্ধান্ত নিয়েছি, এটি দিয়ে দেওয়া আপনার পক্ষে একটি সুনির্দিষ্ট নকশাকৃত প্রোগ্রাম রয়েছে বলে সর্বাধিক সমাধান দেওয়া হয়েছে। sha1passআমার ওপিতে এটি একটি উদাহরণ ছিল এবং স্পষ্টতই এটির জন্য সর্বোত্তম পছন্দ নয়।
cemulate

1
@ সিমুলেট করুন, ... কমান্ড লাইনে নিরাপদ নয় । একটি উত্তরাধিকারী বা এখানে বর্ণের প্রসঙ্গে (উত্তর হিসাবে এখানে) এটি প্রকাশ করা হয় নি ps, তবে একটি অস্থায়ী ফাইলে লিখিত হতে পারে - যদি কেউ তা এড়াতে চায় তবে sshpass < <(printf '%s\n' "$VARIABLE")বিবেচনা করা যেতে পারে (কারণ printfএকটি বিল্টিন, একটি নয় বাহ্যিক কমান্ড, এটি পাস করা হয়নি execvএবং এর মাধ্যমে অ্যাক্সেসযোগ্য ps)।
চার্লস ডাফি

35

আদর্শভাবে, আপনি কোনও কমান্ডের যুক্তি হিসাবে কমান্ড লাইনে একটি পরিষ্কার-পাঠ্য পাসওয়ার্ড টাইপ করেন না। এটি করা পাসওয়ার্ডটি কমান্ডের পক্ষে একটি আর্গুমেন্ট তৈরি করে এবং কমান্ড লাইন আর্গুমেন্টগুলি প্রক্রিয়া টেবিলের মতো সাধারণ সরঞ্জামগুলি ব্যবহার করতে psবা কিছু নিরীক্ষার লগগুলিতে লগ ইন করে দেখা যেতে পারে ।

এটি বলার পরে, শেলের কমান্ডের ইতিহাস থেকে প্রকৃত পাসওয়ার্ডটি অবশ্যই গোপন করার উপায় রয়েছে।

sha1pass "$( head -n 1 )"

তারপরে পাসওয়ার্ডটি টাইপ করুন এবং টিপুন Enter। এখানে headব্যবহৃত কমান্ডটি সঠিকভাবে একটি লাইন ইনপুট গ্রহণ করে এবং আপনি যে সর্বশেষ নিউলাইনটি টাইপ করেন তা ডেটা যে অংশটি প্রেরণ করা হবে না তার অংশ হবে না sha1pass

অক্ষরগুলি প্রতিধ্বনি থেকে রোধ করতে:

sha1pass "$( stty -echo; head -n 1; stty echo )"

stty -echoটার্মিনাল টাইপ অক্ষরের অনুনাদী বন্ধ কমান্ড পালাক্রমে। প্রতিধ্বনির পরে পুনরুদ্ধার করা হয় stty echo

স্ট্যান্ডার্ড ইনপুটটি পাস করার জন্য, সেই শেষ কমান্ডটি পরিবর্তন করা যেতে পারে ( sha1passস্ট্যান্ডার্ড ইনপুটটিতে ডেটা গ্রহণ করা হলে আপনি এটি করতেন তবে এই বিশেষ ইউটিলিটি তার স্ট্যান্ডার্ড ইনপুটটিকে উপেক্ষা করছে বলে মনে হয়):

{ stty -echo; head -n 1; stty echo; } | somecommand

আপনি বহু-লাইন ইনপুট দরকার তা যদি (উপরোক্ত অনুমান একটি একক লাইন শেষে কোন newline অক্ষর সঙ্গে, পাস হওয়া উচিত), তারপর পুরো প্রতিস্থাপন headসঙ্গে কমান্ড catএবং ইনপুট বিনষ্ট (অভিমানী somecommandনিজেই শেষ অফ ফাইল পর্যন্ত সার্চ) Ctrl+D( নিম্নলিখিতটি Returnযদি আপনি ইনপুটটিতে একটি নতুন লাইন অক্ষর অন্তর্ভুক্ত করতে চান, বা না হলে দ্বিগুণ)।

আপনি কোন শেল ব্যবহার করছেন তা নির্বিশেষে এটি কাজ করবে (যতক্ষণ না এটি বোর্নের মতো বা আরসি-মতো শেল ছিল)।

কমান্ডটি আগে কোনও স্থান দ্বারা চালিত হলে কিছু শেল তাদের ইতিহাসের ফাইলগুলিতে টাইপ-ইন কমান্ডগুলি সংরক্ষণ না করার জন্য তৈরি করা যেতে পারে। এর মধ্যে সাধারণত HISTCONTROLমান সেট করা জড়িত ignorespace। এটি কমপক্ষে bashএবং kshওপেনবিএসডি দ্বারা সমর্থিত , তবে উদাহরণস্বরূপ ksh93বা দ্বারা নয় dashzshব্যবহারকারীরা উপেক্ষা করতে কোনও প্যাটার্ন সংজ্ঞায়িত করতে histignorespaceবিকল্প বা তাদের HISTORY_IGNOREপরিবর্তনশীল ব্যবহার করতে পারেন।

readটার্মিনালটিতে অক্ষরগুলি প্রতিধ্বনিত না করে পড়া শেলগুলিতে আপনি ব্যবহার করতে পারেন

IFS= read -rs password     # -s turns off echoing in bash or zsh
                           # -r for reading backslashes as-is,
                           # IFS= to preserve leading and trailing blanks
sha1pass "$password"

তবে সম্ভবত প্রক্রিয়া সারণীতে পাসওয়ার্ডটি সম্ভাব্যভাবে প্রকাশ করার ক্ষেত্রে এটি একই সমস্যা রয়েছে।

যদি ইউটিলিটি স্ট্যান্ডার্ড ইনপুট থেকে পড়ে এবং শেলটি "এখানে-স্ট্রিংগুলি" সমর্থন করে তবে উপরেরটি পরিবর্তন করা যেতে পারে

IFS= read -rs password
somecommand <<<"$password"

নীচের মন্তব্যের সংক্ষিপ্তসার:

  • কমান্ড লাইনে প্রদত্ত একটি পাসওয়ার্ড সহ একটি কমান্ড কার্যকর করা, যা উপরের সমস্ত কমান্ডগুলি কমান্ডটিতে ডেটা পাইপ করা ব্যতীত, সম্ভাব্যভাবে psএকই সময়ে চলমান যে কারও কাছে পাসওয়ার্ডটি দৃশ্যমান করে দেবে । ইন্টারেক্টিভ শেল থেকে চালিত হলে উপরের কমান্ডগুলির মধ্যে শেলের ইতিহাস ফাইলটিতে টাইপড পাসওয়ার্ড সংরক্ষণ করা যাবে না।

  • ভাল আচরণযুক্ত প্রোগ্রাম যা পরিষ্কার-টেক্সট পাসওয়ার্ডগুলি পড়ে তাদের স্ট্যান্ডার্ড ইনপুট থেকে, কোনও ফাইল থেকে, বা সরাসরি টার্মিনাল থেকে পড়ে do

  • sha1pass কমান্ড লাইনে পাসওয়ার্ডের প্রয়োজন হয়, হয় সরাসরি টাইপ করা হয় বা কমান্ড প্রতিস্থাপনের কোনও ফর্ম ব্যবহার করে।

  • যদি সম্ভব হয় তবে অন্য একটি সরঞ্জাম ব্যবহার করুন।


11
এটি ভুল। কমান্ড সম্প্রসারণের ফলাফলটি $(...)কমান্ড লাইনের অংশ এবং psকঠোর / প্রোক সহ একটি সিস্টেম ব্যতীত আউটপুটে দৃশ্যমান হবে ।
আর ..

3
@ কুসালানন্দ, এমনকি ওভাররাইটটি সংঘটিত হওয়ার আগে আপনি আরজিভিটি মুছে ফেলার পরে একটি অরক্ষিত উইন্ডো ছেড়ে দিচ্ছেন; এটি একটি প্রশমন, স্থির নয়।
চার্লস ডাফি

5
@ কুসালানন্দ, পাসওয়ার্ডগুলি হ্যাশ করার জন্য কোনও সু-নকশিত প্রোগ্রামের জন্য কমান্ড লাইনে ইনপুট লাগবে না, সুতরাং শর্তসাপেক্ষটি মূলত একটি প্রদত্ত - যদি তা না হয় তবে একটি আলাদা সরঞ্জাম চয়ন করা উচিত।
চার্লস ডাফি

4
@ চার্লসডুফি: এখানকার হাতিয়ারটি মূলত ভাঙ্গা মনে হচ্ছে। sha1passকমান্ড লাইনে কোনও পাসওয়ার্ড না দিয়ে চালানো কোনও কিছু না পড়েই আউটপুট উত্পাদন করে বলে মনে হচ্ছে ... সুতরাং ওপিকে একটি আলাদা সরঞ্জাম চয়ন করতে হবে।
আর ..

8
সুরক্ষা দৃষ্টিকোণ থেকে এই উত্তরটি অনিরাপদ, এবং একমাত্র সুবিধা হ'ল পাসওয়ার্ডটি শেল ইতিহাসে প্রদর্শিত হয় না, তবে কমান্ডের সামনে একটি জায়গা অন্তর্ভুক্ত করে এই সুবিধাটি অর্জন করা সহজ
ফেরিবিগ

25

আপনি যদি এটির HISTCONTROLমতো সেট করেন :

HISTCONTROL=ignorespace

এবং একটি স্থান দিয়ে কমান্ড শুরু করুন:

~$  mycommand

এটি ইতিহাসে সংরক্ষণ করা হবে না।


10

একটি পাইপ বা এখানে-ডক মাধ্যমে সংবেদনশীল ডেটা পাস করুন:

command_with_secret_output | command_with_secret_input

বা:

command_with_secret_input <<EOF
$secret
EOF

সিক্রেটগুলি (অ-রফতানি করা) শেল ভেরিয়েবলগুলিতে থাকা ভাল তবে আপনি কেবলমাত্র এখানে-নথি এবং শেল ইন্টার্নালগুলিতে কমান্ড লাইনে এই পরিবর্তনগুলি ব্যবহার করতে পারবেন না।

যেমনটি একটি মন্তব্যে কুসালানন্দ লিখেছেন, আপনি যদি একটি ইন্টারেক্টিভ শেলটিতে কমান্ড লিখছেন, আপনি এখানে নথির জন্য যে লাইনগুলি সন্নিবেশ করেছেন সেটি শেল ইতিহাসে সংরক্ষণ করা হবে, সুতরাং সেখানে একটি পাসওয়ার্ড টাইপ করা নিরাপদ নয়, তবে এটি এখনও হওয়া উচিত গোপন ਰੱਖਣ ਵਾਲੇ শেল ভেরিয়েবল ব্যবহার করা নিরাপদ; ইতিহাসে প্রসারিত $secretপ্রবন্ধের চেয়ে পাঠ্য থাকবে $secret

কমান্ড বিস্তারের ব্যবহার নিরাপদ নয় :

command_with_secret_input "$(command_with_secret_output)"

কারণ আউটপুটটি কমান্ড লাইনে অন্তর্ভুক্ত করা হবে এবং psহার্ড / প্রোক সহ সিস্টেমগুলি ব্যতীত আউটপুট (অথবা ম্যানুয়ালি পঠন করা) এ দৃশ্যমান হবে ।

একটি ভেরিয়েবলের বরাদ্দও ঠিক আছে:

secret=$(command_with_secret_output)

আমি যা খুঁজছি তা হ'ল একটি আসল কমান্ড command_with_secret_outputযা আমাকে গোপন আউটপুট টাইপ করতে দেয় । এই জাতীয় আদেশ এখানে প্রতিস্থাপন করা যেতে পারে?
কবর দিন

নোট করুন যে একটি ইন্টারেক্টিভ bash সেশনে এখানে-নথিটি টাইপ করা হস্তান্তর ফাইলটিতে নথিটি সংরক্ষণ করবে।
কুসালানন্দ

@ এসমুলেট: খালি বিল্টিন ব্যবহার করুন read, যেমন read -r secret। তারপরে আপনার গোপনীয়তা আছে $secret। আপনি চাইলে ইনপুটটি আড়াল করতে আপনি এর আগে / পরে স্টটি চালাতে পারেন।
আর ..

3
@ কুসালানন্দ: sha1passমূলত ভাঙ্গা / অপব্যবহারযোগ্য / অনিরাপদ বলে মনে হচ্ছে যেহেতু এটি স্টিডিন বা কোনও ফাইল থেকে পাসওয়ার্ড পড়তে পারে না। আমি মনে করি সমস্যাটি সমাধানের জন্য আলাদা ইউটিলিটি প্রয়োজন।
আর ..

1
@ এস কে আপনার শেষ মন্তব্যটি ঠিক ঠিক সেই জায়গায়। এ কারণেই এটি কোনও উপকারে আসবে না। read -rsকাজটি করবে (যদি আপনি এতে -rব্যাকস্ল্যাশগুলির সাথে পাসওয়ার্ড রাখতে সক্ষম হন তবে) তবে আপনি আবার প্রক্রিয়া তালিকার পাসওয়ার্ডটি প্রদর্শন করতে ফিরে এসেছেন (এবং প্রক্রিয়া অ্যাকাউন্টিং চালু আছে কিনা এবং এটি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে) প্রক্রিয়া অ্যাকাউন্টিং লগ হিসাবেও)।
কুসালানন্দ

6

একটি ফাইলের মধ্যে কেবল মূল্য লিখুন এবং ফাইলটি পাস করুন:

$ cat > mysecret
Big seecreeeet!
$ cat mysecret | sha1pass 

আমি কীভাবে sha1passকাজ করে তা নিশ্চিত নই , যদি এটি কোনও ফাইলকে ইনপুট হিসাবে গ্রহণ করতে পারে তবে আপনি ব্যবহার করতে পারেন sha1pass < mysecret। যদি তা না হয় তবে এটি ব্যবহার catকরা সমস্যা হতে পারে কারণ এটিতে চূড়ান্ত নিউলাইনটি অন্তর্ভুক্ত। যদি এটি হয় তবে ব্যবহার করুন (যদি আপনার headসমর্থন করে -c):

head -c-1 mysecret | sha1pass 

2
আপনি যখন করতে পারেন তখন কেন আপনার প্রথম উদাহরণে পাসওয়ার্ডটি ডিস্কে লিখুন cat | sha1pass? cat mysecret | sha1passএবং sha1pass < mysecretচূড়ান্ত নতুন লাইন থেকে সম্মান সঙ্গে একই আচরণ আছে। catনতুন লাইন যোগ করা হয় না। যাইহোক, যদি sha1passস্ট্যান্ডার্ড ইনপুটটির মাধ্যমে পাসওয়ার্ডটি পাস করা সমর্থন করে তবে আমি এটি নিজেই চূড়ান্ত নিউলাইনটিকে উপেক্ষা করার আশা করব। লাইনগুলির সাথে ফাইলগুলি যেগুলি নিউলাইনগুলি দ্বারা বন্ধ করা হয় না ইউনিক্সগুলিতে সর্বোপরি অপ্রাকৃত, তাই কোনও নিউলাইন দ্বারা বন্ধ করা হয়নি এমন ফাইলের আশা করা অবাস্তব।
JoL

@ জোল আমি) কারণ আমি এটি ভেবে দেখিনি: / তবে কীভাবে এটি কাজ করবে? আমাকে কোনও ইনপুট প্রবেশের সুযোগ দেওয়ার আগে cat | sha1passদৌড়াচ্ছে বলে মনে হচ্ছে sha1pass। ii) না, অবশ্যই cat mysecretকোনও নতুন লাইন যুক্ত হয় না, আমি কখনই বলিনি catএটি যুক্ত করে, কেবল এটি এতে অন্তর্ভুক্ত করে।
terdon

আমি দেখতে পাচ্ছি, তবে এটি < mysecretএটিকে সরিয়ে দেওয়ার মতো নয় । :)
JoL

কিছু মনে করো না. এখন যখন আমি আবার পড়েছি, আমি দেখতে পাচ্ছি যে আপনি এটি পরে প্রস্তাব দেওয়ার জন্য বলেছিলেন head -c-1। আমি অনুমান করি যে কেন আমি ব্যবহার করব cat mysecret | sha1passএবং তারপরে প্রস্তাব করব তা নিয়ে আমি ঠিক বিভ্রান্ত হয়ে পড়েছি sha1pass < mysecret। আমার ধারণা উদ্বেগটি হ'ল sha1pass স্টিডিনের জন্য নিয়মিত ফাইলগুলি সম্পর্কে অভিযোগ করতে পারে; আমি নিশ্চিত না কেন।
জোল 16

@ জোল এটি আরও বেশি কারণ আমি অনুসন্ধান করতে ব্যয় করা কয়েক মিনিটের মধ্যে আমি কোনও sha1passম্যানুয়াল বা -hঅন্য কোনও ডকুমেন্টেশন ব্যবহার করি নি এবং খুঁজে পাইনি এবং এটি কোনও ইনপুট স্ট্রিং হিসাবে বা ইনপুট ফাইল হিসাবে sha1pass fooচিকিত্সা করছে কিনা তা বুঝতে পারি না foo। তাই আমি প্রতিটি সম্ভাবনা মোকাবেলার জন্য বিকল্পগুলি দিয়েছি।
terdon

1

যদি টেরডন যা করেছে তা সম্ভব হয়, তবে এটি স্ট্যান্ডার্ড ইনপুট দিয়ে যাওয়ার সর্বোত্তম সমাধান। কেবলমাত্র সমস্যাটি হ'ল তিনি পাসওয়ার্ডটি ডিস্কে লিখেছিলেন। পরিবর্তে আমরা এটি করতে পারি:

stty -echo
echo -n "password: "
head -1 | sha1pass
stty echo

যেমন কুসালানন্দ বলেছিলেন, stty -echoআপনি যা টাইপ করেছেন তা নিশ্চিত না করে যতক্ষণ না আপনি stty echoআবার না করেন। head -1স্ট্যান্ডার্ড ইনপুট থেকে একটি লাইন পাবেন এবং এতে প্রবেশ করবে sha1pass


0

আমি ব্যবহার করব

sha1pass "$(cat)"

catস্টিডিন থেকে পড়া পর্যন্ত হবে EOFযা Ctrl + D চেপে হতে পারে। তারপরে, ফলাফলটি যুক্তি হিসাবে পাস করা হবেsha1pass


3
আর .. এর উত্তরে কেন এটি অনিরাপদ তা ব্যাখ্যা করে।
এইচডিভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.