이러한 코드를 이해하려면 주로 ASP의 이진 데이터의 객체를 ADODB.stream! 이 프로그램은 주로 ADODB.Stream을 사용합니다.이 기초가 있으면 기타 점수, 그라디언트 배경 색상, 짧은 스트로크 및 OCR 인식을 향상시키는 등의 기능을 추가로 추가 할 수 있습니다. 어제 좋은 식별 엔진이 없지만 이미지 확인 코드를 인식한다고 주장하는 90%를 다운로드했습니다! 4321 ~ 89910을 식별하면 이미지 코드가 여전히 더 안전합니다. 인터넷에서 폭력적인 균열을 보았습니다. 이미지 추가 코드를 사용하여 오류 계정에 10 개의 암호를 제출할 수 있습니다. 페이지는 외부 제출을 제출하는 데 금지됩니다. ASP 파일 : code.asp 데이터 파일 : body.fix, head.fix 사용법 : <img src = "code.asp"> <% 응답 .buffer = true Numcode 함수 numcode () 응답 .expires = -1 Response.addheader "Pragma", "No-Cache" response.addheader "Cache-Clm", "No-Cache" Dim Znum, I, J. Dim Ados, ADOS1 Timeer를 무작위 화하십시오 무작위 4 자리 생성 : Znum = Cint (8999*RND 1000) 세션에 전달하십시오 세션 ( "getCode") = Znum for 루프는 임의의 숫자를 3 개의 정착지 배열에 넣는 것입니다. 이는 후속 배열 변환을 제공하기에 편리합니다. Dim Zimg (3), nstr nstr = cstr (znum) i = 0 ~ 3의 경우 Zimg (I) = Cint (MID (NSTR, I 1,1)))) 다음 Dim POS '이미지 데이터 작동을 위해 두 개의 adodb.stream binary 객체를 정의하십시오. set ados = server.createobject ( "adodb.stream") ados.mode = 3 ados.type = 1 ados.open set ados1 = server.createobject ( "adodb.stream") ados1.mode = 3 ados1.type = 1 ADOS1. OPEN '로드 0 ~ 9 디지털 데이터 10x100, GBR 배열 데이터, 각 320 바이트, 10 숫자 3200Byte 'Bgr One Point, 10x10 포인트 숫자, 1 점 3 바이트 (바이러스 8- 비트, 16 진수 00 ~ ff) '10 포인트 30 바이트 라인 끝 00 00 00 00 00 00 00 2 -Byte 32 바이트, 10x100은 긴 이미지보다 작고 각 숫자 10x10은 320 바이트입니다. '넓은 것보다 더 커지면 마크 0000을 종료 할 방법이 없으며 직접 300 바이트입니다. 이것들은 BMP 24 비트의 데이터입니다. '머리는 길이와 너비, 이미지 시작 표시 등을 포함하여 매우 간단합니다. ados.loadfromfile (server.mappath ( "body.fix")) ados1.Write ados.Read (1280) '루프의 첫 번째, 해당 4 개의 숫자는 10x100에서 생성 된 임의 숫자 수에서 추출됩니다. 그러나 수직 번호 배열 i = 0 ~ 3의 경우 ados.position = (9-zimg (i))*320 ados1.position = i*320 ados1. ados.read (320) 다음 '소비 된 ADOS의 데이터를 지우고 새 이미지 헤드를 조정하여 헤더 파일의 바이트를 조정하십시오. ados.loadfromfile (server.mappath ( "head.fix")) pos = lenb (ados.read ()) ados.positation = pos 'POS 위치 지정, 54 바이트 위치에 그래픽 데이터를 추가 할 수 있습니다. 루프의 두 번째, 수직 블록에서 수평 숫자 블록에 이르기까지 숫자 수 이 방법은 4 배 320 바이트를 추출하여 ADOS 객체에 30 바이트를 작성한 다음 두 번째 줄을 이동시키는 이미지 데이터를 추출하는 것입니다. 30 바이트는 BMP에 00 00 행이있는 최종 레이블로 인한 것입니다. i = 0 ~ 9의 경우 1 단계 j = 0 ~ 3의 경우 ados1.position = i*32 j*320 ados.positation = pos 30*ji*120 ados.write ados1.read (30) 다음 다음 ados.positation = 0 Response.BinaryWrite 직접 이미지 데이터를 클라이언트에 보냅니다 응답 .contentType = "image/bmp" response.binarywrite ados.read () ados.close : set ados = nothing ADOS1.CLOSE : SET ADOS1 = 아무것도 엔드 기능 |