Captcha : More simple sum and save in /var/tmp
This commit is contained in:
parent
76d6b4f3d4
commit
321161ef89
@ -15,7 +15,9 @@
|
||||
|
||||
INPUT=$1
|
||||
|
||||
TRANSFORMATIONS=(DECOUPE.A DECOUPE.B INTRUS.A INTRUS.B SOMME.A SOMME.B)
|
||||
TRANSFORMATIONS=(INTRUS SOMME)
|
||||
|
||||
FILENAME="/var/tmp/captcha/$(date "+%Y-%m-%d-%H%M").png"
|
||||
|
||||
if test -n ${BASH_VERSION:-''} ; then
|
||||
get_random ()
|
||||
@ -31,23 +33,22 @@ else
|
||||
}
|
||||
fi
|
||||
|
||||
DECOUPE.A()
|
||||
DECOUPE()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
MID=$((LENGTH / 2))
|
||||
|
||||
echo "Tapez ${INPUT:0:$MID}\n suivi de ${INPUT:$MID:$MID}"
|
||||
}
|
||||
|
||||
DECOUPE.B()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
MID=$((LENGTH / 2))
|
||||
get_random
|
||||
R=$(($R % 2))
|
||||
|
||||
echo "Saisissez ${INPUT:0:$MID}\n puis ${INPUT:$MID:$MID}"
|
||||
if [[ $R -eq 1 ]]; then
|
||||
echo "Tapez ${INPUT:0:$MID}\n suivi de ${INPUT:$MID:$MID}"
|
||||
else
|
||||
echo "Saisissez ${INPUT:0:$MID}\n puis ${INPUT:$MID:$MID}"
|
||||
fi
|
||||
}
|
||||
|
||||
INTRUS.A()
|
||||
INTRUS()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
NUMBERS=$(echo $INPUT | grep -o . | tr '\n' ' ')
|
||||
@ -81,80 +82,41 @@ INTRUS.A()
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Tapez $NEWINPUT en\n supprimant les $INTRUS"
|
||||
}
|
||||
|
||||
INTRUS.B()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
NUMBERS=$(echo $INPUT | grep -o . | tr '\n' ' ')
|
||||
SORTED_UNIQ_NUM=$(echo "${NUMBERS[@]}" | sort -u | tr '\n' ' ')
|
||||
INTRUS=-1
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
|
||||
for i in 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
if [[ ! " ${SORTED_UNIQ_NUM[@]} " =~ " ${i} " ]]; then
|
||||
INTRUS=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Worst case
|
||||
if [[ $INTRUS -eq "-1" ]]
|
||||
then
|
||||
echo Tapez "$INPUT \n sans changement"
|
||||
return
|
||||
fi
|
||||
|
||||
for num in ${NUMBERS[@]}
|
||||
do
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
|
||||
if [[ $R -lt 60 ]]; then
|
||||
NEWINPUT=${NEWINPUT}${num}${INTRUS}
|
||||
else
|
||||
NEWINPUT=${NEWINPUT}${num}
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Saisissez $NEWINPUT en\n enlevant les $INTRUS"
|
||||
}
|
||||
|
||||
SOMME.A()
|
||||
{
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT / 2))
|
||||
B=$A
|
||||
if [[ $R -lt 50 ]]; then
|
||||
echo "Tapez $NEWINPUT en\n supprimant les $INTRUS"
|
||||
else
|
||||
A=$(($INPUT / 2))
|
||||
B=$(($A+1))
|
||||
echo "Saisissez $NEWINPUT en\n enlevant les $INTRUS"
|
||||
fi
|
||||
}
|
||||
|
||||
SOMME()
|
||||
{
|
||||
get_random
|
||||
RA=$(($RA % 100))
|
||||
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT - $RA))
|
||||
B=$RA
|
||||
else
|
||||
B=$(($INPUT + $RA))
|
||||
A=$RA
|
||||
fi
|
||||
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
A=$(($A - $R))
|
||||
B=$(($B + $R))
|
||||
|
||||
echo "Tapez le résultat\n de $A + $B"
|
||||
}
|
||||
|
||||
SOMME.B()
|
||||
{
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT / 2))
|
||||
B=$A
|
||||
if [[ $R -lt 25 ]]; then
|
||||
echo "Tapez le résultat\n de $A + $B"
|
||||
elif [[ $R -lt 50 ]]; then
|
||||
echo "Sommez\n $A et $B"
|
||||
elif [[ $R -lt 75 ]]; then
|
||||
echo "Additionnez\n $A et $B"
|
||||
else
|
||||
A=$(($INPUT / 2))
|
||||
B=$(($A+1))
|
||||
echo "Saisissez le résultat\n de $A + $B"
|
||||
fi
|
||||
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
A=$(($A - $R))
|
||||
B=$(($B + $R))
|
||||
|
||||
echo "Saisissez le résultat\n de $A + $B"
|
||||
}
|
||||
|
||||
get_random
|
||||
@ -164,6 +126,15 @@ RAND_ANGLE=$(($R % 3))
|
||||
get_random
|
||||
RAND_INDEX=$(($R % ${#TRANSFORMATIONS[@]}))
|
||||
|
||||
convert -size 300x60 xc:none -pointsize 20 \
|
||||
\( -clone 0 -fill black \
|
||||
-stroke black -strokewidth 1 \
|
||||
-annotate "${RAND_ANGLE}x${RAND_ITALIC}+0+0" "\n $(${TRANSFORMATIONS[$RAND_INDEX]})" \
|
||||
-roll +$ROLL_X+0 \
|
||||
-wave "$WAVE1_AMPLITUDE"x"$WAVE1_LENGTH" \
|
||||
-roll -$ROLL_X+0 \) \
|
||||
-flatten -crop 300x60 +repage -quality 500 -depth 11 png:$FILENAME
|
||||
|
||||
convert -size 300x60 xc:none -pointsize 20 \
|
||||
\( -clone 0 -fill black \
|
||||
-stroke black -strokewidth 1 \
|
||||
|
@ -15,7 +15,9 @@
|
||||
|
||||
INPUT=$1
|
||||
|
||||
TRANSFORMATIONS=(DECOUPE.A DECOUPE.B INTRUS.A INTRUS.B SOMME.A SOMME.B)
|
||||
TRANSFORMATIONS=(INTRUS SOMME)
|
||||
|
||||
FILENAME="/var/tmp/captcha/$(date "+%Y-%m-%d-%H%M").png"
|
||||
|
||||
if test -n ${BASH_VERSION:-''} ; then
|
||||
get_random ()
|
||||
@ -31,23 +33,22 @@ else
|
||||
}
|
||||
fi
|
||||
|
||||
DECOUPE.A()
|
||||
DECOUPE()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
MID=$((LENGTH / 2))
|
||||
|
||||
echo "Tapez ${INPUT:0:$MID}\n suivi de ${INPUT:$MID:$MID}"
|
||||
}
|
||||
|
||||
DECOUPE.B()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
MID=$((LENGTH / 2))
|
||||
get_random
|
||||
R=$(($R % 2))
|
||||
|
||||
echo "Saisissez ${INPUT:0:$MID}\n puis ${INPUT:$MID:$MID}"
|
||||
if [[ $R -eq 1 ]]; then
|
||||
echo "Tapez ${INPUT:0:$MID}\n suivi de ${INPUT:$MID:$MID}"
|
||||
else
|
||||
echo "Saisissez ${INPUT:0:$MID}\n puis ${INPUT:$MID:$MID}"
|
||||
fi
|
||||
}
|
||||
|
||||
INTRUS.A()
|
||||
INTRUS()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
NUMBERS=$(echo $INPUT | grep -o . | tr '\n' ' ')
|
||||
@ -81,80 +82,41 @@ INTRUS.A()
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Tapez $NEWINPUT en\n supprimant les $INTRUS"
|
||||
}
|
||||
|
||||
INTRUS.B()
|
||||
{
|
||||
LENGTH=${#INPUT}
|
||||
NUMBERS=$(echo $INPUT | grep -o . | tr '\n' ' ')
|
||||
SORTED_UNIQ_NUM=$(echo "${NUMBERS[@]}" | sort -u | tr '\n' ' ')
|
||||
INTRUS=-1
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
|
||||
for i in 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
if [[ ! " ${SORTED_UNIQ_NUM[@]} " =~ " ${i} " ]]; then
|
||||
INTRUS=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Worst case
|
||||
if [[ $INTRUS -eq "-1" ]]
|
||||
then
|
||||
echo Tapez "$INPUT \n sans changement"
|
||||
return
|
||||
fi
|
||||
|
||||
for num in ${NUMBERS[@]}
|
||||
do
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
|
||||
if [[ $R -lt 60 ]]; then
|
||||
NEWINPUT=${NEWINPUT}${num}${INTRUS}
|
||||
else
|
||||
NEWINPUT=${NEWINPUT}${num}
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Saisissez $NEWINPUT en\n enlevant les $INTRUS"
|
||||
}
|
||||
|
||||
SOMME.A()
|
||||
{
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT / 2))
|
||||
B=$A
|
||||
if [[ $R -lt 50 ]]; then
|
||||
echo "Tapez $NEWINPUT en\n supprimant les $INTRUS"
|
||||
else
|
||||
A=$(($INPUT / 2))
|
||||
B=$(($A+1))
|
||||
echo "Saisissez $NEWINPUT en\n enlevant les $INTRUS"
|
||||
fi
|
||||
}
|
||||
|
||||
SOMME()
|
||||
{
|
||||
get_random
|
||||
RA=$(($RA % 100))
|
||||
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT - $RA))
|
||||
B=$RA
|
||||
else
|
||||
B=$(($INPUT + $RA))
|
||||
A=$RA
|
||||
fi
|
||||
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
A=$(($A - $R))
|
||||
B=$(($B + $R))
|
||||
|
||||
echo "Tapez le résultat\n de $A + $B"
|
||||
}
|
||||
|
||||
SOMME.B()
|
||||
{
|
||||
if [[ $(($INPUT % 2)) -eq 0 ]]; then
|
||||
A=$(($INPUT / 2))
|
||||
B=$A
|
||||
if [[ $R -lt 25 ]]; then
|
||||
echo "Tapez le résultat\n de $A + $B"
|
||||
elif [[ $R -lt 50 ]]; then
|
||||
echo "Sommez\n $A et $B"
|
||||
elif [[ $R -lt 75 ]]; then
|
||||
echo "Additionnez\n $A et $B"
|
||||
else
|
||||
A=$(($INPUT / 2))
|
||||
B=$(($A+1))
|
||||
echo "Saisissez le résultat\n de $A + $B"
|
||||
fi
|
||||
|
||||
get_random
|
||||
R=$(($R % 100))
|
||||
A=$(($A - $R))
|
||||
B=$(($B + $R))
|
||||
|
||||
echo "Saisissez le résultat\n de $A + $B"
|
||||
}
|
||||
|
||||
get_random
|
||||
@ -164,6 +126,15 @@ RAND_ANGLE=$(($R % 3))
|
||||
get_random
|
||||
RAND_INDEX=$(($R % ${#TRANSFORMATIONS[@]}))
|
||||
|
||||
convert -size 300x60 xc:none -pointsize 20 \
|
||||
\( -clone 0 -fill black \
|
||||
-stroke black -strokewidth 1 \
|
||||
-annotate "${RAND_ANGLE}x${RAND_ITALIC}+0+0" "\n $(${TRANSFORMATIONS[$RAND_INDEX]})" \
|
||||
-roll +$ROLL_X+0 \
|
||||
-wave "$WAVE1_AMPLITUDE"x"$WAVE1_LENGTH" \
|
||||
-roll -$ROLL_X+0 \) \
|
||||
-flatten -crop 300x60 +repage -quality 500 -depth 11 png:$FILENAME
|
||||
|
||||
convert -size 300x60 xc:none -pointsize 20 \
|
||||
\( -clone 0 -fill black \
|
||||
-stroke black -strokewidth 1 \
|
||||
|
Loading…
Reference in New Issue
Block a user