bash இல் கடவுத்தொடர் தேரி

Published by Arun Isaac on

In other languages: English

Tags: மென்பொருள், bash

இன்னொரு கடவுத்தொடர் தேரி, இந்த முறை bash இல்…

Electronic Frontier Foundation எளிமையான பயன்மையை மனதில் கொண்டு கடவுத்தொடர் தேர்ந்தெடுப்பதற்குப் புதிய சொல் பட்டியல்களை வெளியிட்டுள்ளது. பகடைக் காய்கள் வாங்க சோம்பலாக இருந்ததால், கடவுத்தொடர் தேர்ந்தெடுப்பதற்கு bash இல் உரைநிரல் ஒன்றை எழுதினேன்.

random-line செயலாற்றி /dev/random யிடமிருந்து இரண்டு எண்ணுண்மிகளை (0 முதல் 65535 வரையான எண்கள்) எடுத்து, rejection sampling மூலம் சீரற்ற முறையில் சொல் பட்டியலிலிருந்து சொற்களைத் தேர்ந்தெடுக்கிறது. இயல்பாக, இந்த உரைநிரலால் 65536 சொற்களுக்கு மேலுள்ள சொல் பட்டியல்களைக் கையாள முடியாது. ஆனால் அது பரவாயில்லை.

நினைவுகூர்வதற்குக் கடவுச்சொற்களை விட கடவுத்தொடர்கள் எளிமையானவை. ஆனால் தட்டச்சிட கடினமானவை. இது எவ்வளவு தொல்லையாக இருக்குமென்று தெரியவில்லை. பார்க்கலாம்.

WORDLIST=~/eff_large_wordlist.txt
NO_OF_WORDS=6

function random-line {
    NO_OF_LINES=$1
    RANDOM_NO=$(od -An -N 2 -t u2 < /dev/random)
    if [[ $RANDOM_NO -lt $NO_OF_LINES ]]
    then
        echo $(expr $RANDOM_NO + 1)
    else
        random-line $NO_OF_LINES
    fi
}

NO_OF_LINES=$(wc -l < $WORDLIST)
for i in $(seq 1 $NO_OF_WORDS)
do
    RANDOM_LINE=$(random-line $NO_OF_LINES)
    RANDOM_WORD=$(sed -n ${RANDOM_LINE}p $WORDLIST | awk '{print $2}')
    printf "%s " $RANDOM_WORD
done
printf "\n"

பதிவிறக்கங்கள்

ppgen.sh – கடவுத்தொடர் தேரி உரைநிரல்