가칭) 텍스트 캡챠 ... 테스트 좀 부탁 드립니다. > 자유게시판

자유게시판

가칭) 텍스트 캡챠 ... 테스트 좀 부탁 드립니다. 정보

가칭) 텍스트 캡챠 ... 테스트 좀 부탁 드립니다.

본문

기존에 등록방지에 사용하던 이미지형 캡챠는 웹접근성에 위배(?) 된다고 하여 안되는 머리로 몇날 몇일을 고심하여 급조한 캡챠 프로그램 입니다.
음성지원이 되는 reCaptcha 등의 사용도 고려해 보았으나 다국어 지원이 되지 않는것 같습니다.

http://sir.co.kr/plugin/tcaptcha/sample.php

많은 테스트 부탁 드리며, 문제점은 댓글로 남겨주시면 바로 확인하여 가능한 부분이면 빨리(?) 반영해 놓겠습니다.
이번중 일요일까지 캡챠를 가장 먼저 뚫어 주시는 분께는 지운이 아빠가 사용하던 텀블러를 깨끗히 씻어서 착불로 보내 드리도록 하겠습니다.
감사합니다. 

개발 참고사이트)
http://textcaptcha.com/demo



추천
0

댓글 20개

좋습니다
더욱더 괜찮은거는
문근영 원빈 등등 인물을 마우스로 똑같이 그리는 캡챠형식이 좋을듯합니다. 정밀분석하며
사람의 두뇌 발전에 힘을 쓰게 만들고 노안걱정까지 걱정하여 나라에서 큰 수상을 내릴지도 모릅니다
섬세함과 고도에 집착력을 넣는 마우스로 안되는분들도 계시겠지만
걱정하지마십시요 놀라운 터치터치 터치펜! 지금 9302원에 구매가능합니다

[바로가기] 문의전화 [안받음]
매크로...만들면 근데 금방 뚫립니다. .한5번 시도하면 다시 갱신되는걸로 하셔야될듯요...

매크로로 1부터 숫자올라가서 대입하게만들었더니 몇초안에 뚫리는 문제점이..
분석기 만들수 있을거 같은데요
텍스트를 숫자로 기호로 치환하고 순서별 연산이 들어가면
간단한 봇을 만드는 형태로도 뚫릴거라 예상합니다.
경우의 수가 너무 적은게 문제 인거 같아요
텀블러 준다는글에 후다닥 짰더니..
다시보니 "사용하던" 텀블러;;
제길;;

http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=841197
어제 밤에 잠깐보고 소스 만들다, 테스트 페이지가 폼을 전송하는 것이 아니라,  말았는데, 실제로는 폼을 전송하는 구조일테고 이건 그냥 뚤리는 구조입니다. 캡차는 이미지가 아니라 텍스트이면 분석이 가능합니다. 만들다만 소스를 올립니다:

<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>sir.co.kr - tcaptcha뚫기</title>
</head>
<body topmargin="0" leftmargin="0" >

tcaptcha 를 뚫어볼까요...?

<button id="post_btn" onclick="get_textCaptcha();">켑찹뿌리기</button> <br/>
<input type="text" value="" size="50" id="display_text" /><br />
<input type="text" value="" size="5" id="display_number" /><br />

<script type="text/javascript">

var test_url = 'http://sir.co.kr/plugin/tcaptcha/sample.php';
var tcaptcha_run_url = 'http://sir.co.kr/plugin/tcaptcha/run.php';
var transport = 'http://localhost/test/sir.tcaptcha/transport.php';

var phpsessid = '';
var req = getHttpRequest();


function getHttpRequest()
{
var req = null;

if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");  // 5.0 이후 버전 
}
catch(e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");  // 5.0 이전 버전
}
catch(e1) {
req = null;
}
}
}
else if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
}
catch (e) {
req = null;
}
}

return req;
}


function get_textCaptcha()
{
var param = 'transport_url='+encodeURI(tcaptcha_run_url)+'&transport_method=get';
param += '&t='+(new Date).getTime();

req.open('POST', transport, true);

req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader('content-length', param.length);
req.setRequestHeader('Connection', 'close');

req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
// do nothing;
if (req.responseText.length) {
//alert(req.responseText);
display_it(req.responseText, translate(req.responseText));
}
}
}
};

req.send(param);
}


function display_it(text, number)
{
document.getElementById('display_text').value = text;
document.getElementById('display_number').value = number;
}


function trim(str)
{
return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
function translate(text)
{
//<strong>5</strong>, <strong>이십</strong> 그리고 <strong>25</strong> ~ 중에서 가장 큰 수는?
//~ 중에서 가장 작은 수는?
//여섯 더하기 9 ?
//10 더하기 열셋 ?
//열하나 + 15 = ?

var matches = text.match(/^(.*) 중에서 가장 (큰|작은) 수는 ?$/);
if (matches) {
var num = matches[1];
var min_max = matches[2];

num = num.replace('그리고', ',').replace('<strong>', '').replace('</strong>', '');
var num_arr = num.split(',');

var ret = 0;

for (var i = 0; i < num_arr.length; i++) {
if (i == 0) ret = intify(trim(num_arr[i]));
else {
var tmp = intify(trim(num_arr[i]));
if (min_max == '큰' && (ret < tmp)) ret = tmp;
else if (min_max == '작은' && (ret > tmp)) ret = tmp;
}
}

return ret;
}

var num_arr = text.split(' ');
if (num_arr) {
var n1 = intify(num_arr[0]);
var op = num_arr[1];
var n2 = intify(num_arr[2]);

switch(op) {
case '+':
case '더하기':
return n1 + n2;
case '-':
case '빼기':
return n1 - n2;
case '*':
case '곱하기':
return n1 * n2;
case '/':
case '나누기':
return n1 / n2;
default: return null;
}
}

return null;
}


function intify(input)
{
if (input.test(/^([0-9]+)$/)) return parseInt(input);

// 여기는 아직 완성이 안됐음...


}

// 그냥 n millis 동안 멈추기
function pause(milis)
{
var now = new Date();
var exitTime = now.getTime()+milis;

while (true) {
now = new Date();
if (now.getTime() > exitTime) return;
}
}


</script>

</body>
</html>

trnasport.php는 예전에 잠깐 사용한 jacobswell 아이디로 쓴 글에 있으니까 찾아보면 나옵니다.
전체 196,492 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT