2011/12/31
ImageMagickでCAPTCHA生成
LAVELOG にはコメントスパムが良く来る。
CAPTCHA が貧弱過ぎて簡単にスパム業者に突破されているんだろう。 これは CAPTCHA になって無いよねw
ここのブログがなかなか面白くて実際にはてなの CAPTCHA を突破している。
- JPEG 画像を最大圧縮する
ってのを思い付いた。 テキストの画像は ImageMagick を使うと簡単にできるのでちょっと試してみる。
圧縮率 3% で文字は16pt。
これで十分な気もするが ImageMagick は色々できるのでもう少し遊んでみた。
拡大してみる。
画像を歪ませる -swirl と言うオプションに気が付いたのでこれも追加してみた。
十分実用レベルだな。
CAPTCHA が貧弱過ぎて簡単にスパム業者に突破されているんだろう。 これは CAPTCHA になって無いよねw

- 「はてなのCAPTCHAは簡単に破れる」
http://blogs.wankuma.com/nagise/archive/2007/10/26/104428.aspx
- JPEG 画像を最大圧縮する
ってのを思い付いた。 テキストの画像は ImageMagick を使うと簡単にできるのでちょっと試してみる。
圧縮率 3% で文字は16pt。
convert -quality 3 -size 100x30 xc:white \ -pointsize 16 -weight 1 \ -fill black -draw "text 10,20 password" captcha.jpg
これで十分な気もするが ImageMagick は色々できるのでもう少し遊んでみた。
- ランダムな位置に XOR で●を書く。
- ±20度のランダムな角度を付ける。
#!/bin/bash x1=`expr $RANDOM % 80 + 10` y1=`expr $RANDOM % 10 + 10` x2=`expr $x1 + 8` y2=`expr $y1 + 8` r=`expr $RANDOM % 40 - 20` convert -size 100x30 \ \( xc:none -fill black -pointsize 16 -weight 1 -draw "text 10,20 $1" \) \ \( xc:none -fill black -draw "circle $x1,$y1 $x2,$y2" \) \ -compose Xor -composite png:- \ | convert png:- -quality 10 -background white -flatten -alpha off -rotate $r captcha.jpgこうなった。
拡大してみる。
画像を歪ませる -swirl と言うオプションに気が付いたのでこれも追加してみた。
#!/bin/bash x1=`expr $RANDOM % 80 + 10` y1=`expr $RANDOM % 10 + 10` x2=`expr $x1 + 8` y2=`expr $y1 + 8` r=`expr $RANDOM % 40 - 20` convert -size 100x30 \ \( xc:none -fill black -pointsize 20 -weight 1 -draw "text 10,20 $1" -swirl 50 \) \ \( xc:none -fill black -draw "circle $x1,$y1 $x2,$y2" \) \ -compose Xor -composite png:- \ | convert png:- -quality 40 -background white -flatten -alpha off -rotate $r captcha.jpg
十分実用レベルだな。
この投稿へのコメント

コメント・フォーム