একটি এলোমেলো পাসওয়ার্ড তৈরি করা; কেন এই বহনযোগ্য নয়?


21

আমি একটি এলোমেলো পাসওয়ার্ড তৈরি করতে চাই এবং এটি এর মতো করে করছি:

</dev/urandom tr -dc [:print:] | head -c 64

আমার ল্যাপটপে, যা উবুন্টু চালায়, এটি কেবল মুদ্রণযোগ্য অক্ষর তৈরি করে, যেমনটি করা হয়। কিন্তু যখন আমি আমার স্কুলের সার্ভারে প্রবেশ করি, যা রেড হ্যাট এন্টারপ্রাইজ লিনাক্স চালায় এবং সেখানে চালাও, আমি আউটপুটগুলি পেয়ে যাব 3!ri�b�GrӴ��1�H�<�oM����&�nMC[�Pb�|L%MP�����9��fL2q���IFmsd|l�K, যা কিছু করবে না। এখানে কি ভুল হতে পারে?

উত্তর:


34

এটি আপনার স্থানীয় এবং টিআর সমস্যা।

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

$ </dev/urandom LC_ALL=vi_VN.tcvn tr -dc '[:print:]' | head -c 64
`�pv���Z����c�ox"�O���%�YR��F�>��췔��ovȪ������^,<H ���>

শেলটি মাল্টি-বাইট অক্ষরগুলি সঠিকভাবে মুদ্রণ করবে, তবে জিএনইউ trএটি মুদ্রণযোগ্য বলে মনে করে বাইটগুলি সরিয়ে ফেলবে।

আপনি যদি এটি স্থিতিশীল রাখতে চান তবে আপনাকে অবশ্যই লোকাল সেট করতে হবে:

$ </dev/urandom LC_ALL=C tr -dc '[:print:]' | head -c 64
RSmuiFH+537z+iY4ySz`{Pv6mJg::RB;/-2^{QnKkImpGuMSq92D(6N8QF?Y9Co@

14
+1 কারণ এটি আমাকে উপলব্ধ করেছে (প্রায় 30 বছর ধরে ইউনিক্স / লিনাক্সের শেল ব্যবহার করে), যে স্ট্যান্ডিন / স্ট্ডআউট / স্টার্ডার পুনর্নির্দেশটি প্রযোজ্য কমান্ডের পরে অবস্থিত হবে না।
অ্যান্থন

কেবল একটি মন্তব্য, যদি কিছু অদ্ভুত লোকেল সেট করা থাকে তবে শেলটি কি অসি না হলেও অক্ষরগুলি সঠিকভাবে মুদ্রণ করতে সক্ষম হবে না? কমপক্ষে একটি সক্ষম শেল (অবশ্যই এক্সটার্ম বাদে)?
orion

2
@ ওরিওন: শেল অক্ষরগুলি সঠিকভাবে মুদ্রণ করবে। এই ক্ষেত্রে, এটি টিআর সমস্যা। এটি মুদ্রণযোগ্য বলে মনে করে বাইটগুলি সরিয়ে ফেলেছে, ফলাফলটিকে অদ্ভুত করে তোলে।
cuonglm

@ ওরিওন বাইটগুলির একটি অভিন্ন র্যান্ডম স্ট্রিম, সাধারণভাবে, সু-গঠিত ইউটিএফ -8 অক্ষর এনকোডিংগুলির একটি অভিন্ন র্যান্ডম স্ট্রিম হবে না ।
zwol

এছাড়াও, যদি না আপনি নিজের পাসওয়ার্ডে ফাঁকা থাকেন, তবে :graph:পরিবর্তে আপনার ব্যবহার করা উচিত :print::</dev/urandom LC_ALL=C tr -dc '[:graph:]' | head -c 64
এডান

11

পরিবর্তে বিবেচনা করুন

$ dd if=/dev/urandom bs=48 count=1 status=none | base64
imW/X60Sk9TQzl+mdS5PL7sfMy9k/qFBWWkzZjbYJttREsYpzIguWr/uRIhyisR7

এর দুটি সুবিধা রয়েছে:

  • আপনি এলোমেলো ডিভাইস থেকে কেবল 48 বাইট পড়েন, 8KB ডলার নয়; যদি একই হোস্টের অন্যান্য প্রক্রিয়াগুলিতে এলোমেলো সংখ্যার প্রয়োজন হয় তবে 8KB একবারে সমস্ত নিকাশ একটি গুরুতর সমস্যা হতে পারে। (হ্যাঁ, তর্কযোগ্যভাবে কেউ অবরুদ্ধ র্যান্ডম ডিভাইস ব্যবহার করা উচিত নয়, তবে লোকেরা তা করে do )

  • এর আউটপুটটিতে base64বিশেষ অর্থ সহ প্রায় কোনও অক্ষর নেই। (মোটেও কারও জন্যই না, শেষটি পরীক্ষা | tr +/ -_করুন এবং উদাহরণ হিসাবে) নিশ্চিত করুন যে বাইট ইনপুটটির সংখ্যা base643 এর একাধিক হয়)

এই ভাবে উত্পন্ন একটি পাসওয়ার্ড এনট্রপি, যা ঠিক 384 বিট আছে কিছুটা কম তুমি কি করছিলে (লগ ইন করুন 2 96 64 ≈ 421.4), কিন্তু অধিকাংশ উদ্দেশ্যে (এনট্রপি এর 256 বিট জন্য যথেষ্ট বেশী "এ এখনও মনন নিরাপদে হয় সান " আরএসএ কীগুলি, আফাইক) বাদে " অঞ্চলটাকে জ্বালিয়ে দিয়েছে " ।


3

অন্যান্য ব্যক্তি ইতিমধ্যে চিহ্নিত করেছেন যে লোকেল কী [:print:]বোঝায় তা নির্ধারণ করে । তবে, সমস্ত মুদ্রণযোগ্য অক্ষরগুলি পাসওয়ার্ডের জন্য উপযুক্ত নয় (এমনকি এসসিআই তেও নয়)। আপনি কি সত্যিই ফাঁকা স্থান, ট্যাব এবং # $% ^ চান না? আপনার পাসওয়ার্ডে - এটি মনে রাখা কেবল কঠিন নয়, অন্তর্নিহিত প্রমাণীকরণ সিস্টেমের পক্ষেও এটি সম্ভাব্য বিপজ্জনক, কোনও ইনপুট ক্ষেত্রে প্রবেশ করা অসম্ভব হতে পারে, ইত্যাদি। এই ক্ষেত্রে, আপনার কেবল ম্যানুয়ালি "বুদ্ধিমান" অক্ষর নির্বাচন করা উচিত:

LC_ALL=C </dev/urandom tr -dc '[:alnum:]_' | head -c 64

বা সহজভাবে

</dev/urandom tr -dc 'A-Za-z0-9_' | head -c 64

বা আরও ভাল, base64অন্যান্য উত্তর হিসাবে পরামর্শ হিসাবে ব্যবহার করুন ।


প্রশ্নযুক্ত পাসওয়ার্ডটি কখনই মানুষের দ্বারা প্রবেশ করা যায় না (যদি এটির পরিবর্তে আমি ডাইসওয়্যার ব্যবহার করতাম) এবং আমি নিশ্চিত যে অন্তর্নিহিত সিস্টেমটি সমস্যা ছাড়াই বিশেষ অক্ষরগুলি পরিচালনা করতে পারে। যাই হোক ধন্যবাদ.
তাইমন

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

2
যদি আপনার লেখক সিস্টেম বা ইনপুট ক্ষেত্রগুলি নিয়মিত ASCII চিহ্নগুলিতে শ্বাসরোধ করে ... তবে আপনি কিছু ভুল করছেন এবং আমার ব্যক্তিগত তথ্যের সাথে বিশ্বাসযোগ্য হবেন না। আপনার পাসওয়ার্ডে সমস্ত ধরণের অক্ষর (স্পেস সহ) স্বীকার না করার কোনও কারণ নেই।
nzifnab

2
মনে হয় এটি এখানে ঘটেনি, তবে এটি যখন মানুষের ইনপুটটিতে আসে তখন একটি দীর্ঘ বর্ণমালার পাসওয়ার্ড মনে রাখা খুব সহজ যা প্রতীকের সংক্ষিপ্ত ঝাঁকুনির চেয়ে মালিকের কাছে একটি অনন্য অর্থ ধারণ করে। এই ক্যারেক্টারগুলিকে বিভিন্ন কীবোর্ডগুলিতে ইনপুট দেওয়ার বিষয়টিও রয়েছে (প্রথম স্তরের প্রত্যেকেরই নেই এবং বেশিরভাগ লোকেরা জানেন না যে কোথায় বা কী ব্যাকটিক রয়েছে), ইনপুট বাক্সগুলি অবশ্যই ট্যাব অক্ষরটি পরিচালনা করতে পারে না এবং একটি আউট অবাক করা ওয়েবফর্মগুলির সংখ্যা এখনও বৈধতা ত্রুটিগুলি, এসকিউএল ইঞ্জেকশন, বা এমনকি অনিশ্চিত কেস সংবেদনশীলতায় সংবেদনশীল।
orion

1
কেবল একটি নোট: সি লোকেল [:print:]শ্রেণিতে ট্যাব অন্তর্ভুক্ত নয় । এটি কেবলমাত্র [:alnum:]+ [:punct:]+ স্থান (একক স্থান, নয় [:space:] )।
জিম্মিজ

2

কি সম্পর্কে

tr -dc [:print:] < /dev/urandom | head -c 64 | strings

স্ট্রিংগুলি প্রিন্টযোগ্য ফর্ম্যাটে ইউরানডমের আউটপুট মুদ্রণ করা উচিত


এটি দেয়-bash: /dev/urandom: Permission denied
অ্যান্থন

দুঃখিত অগ্রণী বিড়ালটি ভুলে গেছেন
ব্লাইন্ডস্টিলার

2

আপনি /dev/randomপাসওয়ার্ড উত্পন্ন করার কোনও কারণ আছে কিনা তা আমি জানি না , তবে আমি আপনার ব্যথা কমাতে pwgen ব্যবহার করার পরামর্শ দিচ্ছি।

$ pwgen -s 10 1

যেখানে 10 হ'ল পাসওয়ার্ডের দৈর্ঘ্য।

http://man.cx/pwgen


1
#Chars allowed in password (I don't like l,o,O, etc):
P="0123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz"

#Or such:
#P="a-zA-Z0-9"

head -c 8 < /dev/urandom | tr '\000-\377' "$P$P$P$P$P"
echo

/ Dev / urandom থেকে ডেটা গ্রহণ করলে এই পদ্ধতিটি আইএমএইচও আরও স্মার্ট হয় $ পি $ পি $ পি হিসাবে স্ট্রিংটি আটকানো হয় ... কমপক্ষে 256 টি দীর্ঘ হতে হবে।

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