> 백엔드 개발 > PHP 튜토리얼 > PHP를 사용하여 웹사이트 확인 code_php 기술을 해독하는 방법

PHP를 사용하여 웹사이트 확인 code_php 기술을 해독하는 방법

WBOY
풀어 주다: 2016-05-16 20:07:54
원래의
945명이 탐색했습니다.

인증코드 기능은 일반적으로 악성등록, 무차별 대입 크랙, 프로그램을 이용한 일괄 게시 등을 방지하기 위해 설정됩니다. 소위 인증 코드는 무작위로 생성된 숫자나 기호의 문자열에서 사진을 생성하는 것으로, OCR을 방지하기 위해 사진에 일부 간섭 픽셀이 추가됩니다. 확인을 위해 양식을 작성하고 웹사이트에 제출하면 기능을 사용할 수 있습니다. 인증코드 크래킹/식별 기술을 배우면 인증코드의 원리를 이해하는 데 도움이 될 뿐만 아니라, 인증코드 크랙을 방지하는 방법도 알려줍니다.

가장 일반적인 인증 코드는 다음과 같습니다.

1. 4자리, 임의의 1자리 문자열, 가장 독창적인 인증코드로 인증효과는 거의 0입니다.
2. 랜덤 디지털 사진 인증 코드. 사진의 문자는 매우 규칙적이며 일부는 임의의 인터페론이 첨가되었을 수 있으며 일부는 임의의 문자 색상이 있으므로 이전보다 확인 효과가 더 좋습니다. 그래픽과 이미지에 대한 기본 지식이 없는 사람은 이를 깨뜨릴 수 없습니다!
3. 다양한 이미지 형식의 임의의 숫자, 임의의 대문자 영문자, 임의의 간섭 픽셀 및 임의의 위치.
4. 한자는 등록을 위한 최신 인증 코드로, 무작위로 생성되어 입력하기가 더 어렵고 사용자 경험에 영향을 미치므로 일반적으로 덜 사용됩니다.
단순화를 위해 크래킹 지침은 주로 두 번째 유형에 대한 것입니다. 먼저 인터넷에서 흔히 볼 수 있는 이 인증 코드의 사진을 살펴보겠습니다.

  • 첫 번째가 가장 쉽습니다. 그림 배경과 숫자가 같은 색상을 사용하고, 문자가 규칙적이고 문자가 같은 위치에 있습니다.
  • 두 번째는 사실 쉽지 않은 것 같습니다. 배경색과 인터페론이 아무리 바뀌더라도 규칙을 찾아보면 규칙적이고 같은 색이기 때문에 매우 쉽습니다. 인터페론을 없애기 위해서는 비문자색소인 한 모든 비문자색소가 제거됩니다.
  • 세 번째는 위에서 언급한 배경색과 인터페론의 끊임없는 변화에 더해 인증문자의 색상도 바뀌고, 각 문자의 색상도 달라서 좀 더 복잡한 것 같습니다.
  • 네 번째 방법은 세 번째 사진에 언급된 기능 외에 텍스트에 간섭률의 두 직선을 ​​추가하는 것입니다. 어려울 것 같지만 실제로는 쉽습니다.

인증코드 인식은 일반적으로 다음과 같은 단계로 나누어집니다.

1. 폰트 꺼내기 인증코드를 알아낸다. 역시 전문적인 OCR 인식은 아니다. 게다가 각 사이트마다 인증코드가 다르기 때문에 가장 일반적인 방법은 인증코드를 설정하는 것이다. 이 인증 코드 라이브러리의 특징입니다. 글꼴을 제거할 때 이 그림에 모든 문자가 포함되도록 몇 장의 그림을 더 다운로드해야 합니다. 여기에 있는 문자에는 그림만 있으므로 0-9를 포함한 그림만 수집하면 됩니다.
2. 이진화 이진화는 숫자를 이용하여 사진 속 인증번호의 각 픽셀을 1로, 그 외의 부분은 0으로 표현하는 것입니다. 이러한 방식으로 각 디지털 글꼴을 계산하고 기록하고 키로 사용할 수 있습니다.
3. 특징 계산 인식할 이미지를 이진화하여 이미지 특징을 얻습니다.
4. 제어 샘플 3단계의 이미지 기능 코드와 인증 코드의 글꼴 패턴을 비교하여 인증 이미지의 숫자를 알아냅니다.
현재 방식으로는 인증코드 인식이 기본적으로 100% 가능합니다.

위의 과정을 통해서도 인터페론을 제거하는 방법을 아직 발견하지 못했다고 말씀하셨을 텐데요! 실제로 인터페론을 제거하는 방법은 매우 간단합니다. 인터페론의 중요한 특징은 인증코드의 표시 효과에 영향을 미치지 않는다는 것입니다. 따라서 인터페론을 만들 때 그 RGB가 특정 값보다 낮을 수도 있고 높을 수도 있습니다. 제가 예시한 사진에서는 인터페론의 RGB 값이 125를 넘지 않아 인터페론을 쉽게 제거할 수 있습니다.

간편인증코드는 숫자와 문자로만 구성되어 있으며, 통일된 형식과 표시될 때마다 고정된 위치를 가지고 있습니다. 이번에 확인해야 할 목표는 인증코드가 문자와 숫자로 구성되어 있는지, 인증코드가 회전되는지(아마도 왼쪽과 오른쪽 모두), 위치가 고정되어 있지 않은지 등이다. , 문자간 접착력이 있고, 인증코드에는 인터페론이 더 강합니다.

설명을 위해 다음 사진을 예로 들어보겠습니다.

1단계: 이진화. 인증코드 부분은 1로, 배경부분은 0으로 표현합니다. 식별방법은 매우 간단합니다. 인증코드 전체 그림을 RGB로 출력한 후, 그 규칙을 분석합니다. RGB 코드를 통해 위 그림의 R 값이 120보다 크고 G와 B 값이 80보다 작은 것을 쉽게 구분할 수 있으므로 이 규칙에 따라 위 그림을 쉽게 이진화할 수 있습니다.

위의 세 번째 인증코드 사진을 살펴보겠습니다

얼핏 보면 매우 복잡해 보입니다. 인증코드 사진의 배경색은 매번 다르며, 각 인증코드 번호의 색상도 매번 다릅니다. 이진화하기 어려울 것 같지만 실제로는 RGB 값을 출력해 보면 쉽게 찾을 수 있습니다. 확인번호의 색상이 어떻게 변하더라도 해당 번호의 RGB값은 항상 125보다 작은 값을 가지므로 다음과 같은 판단이 내려집니다. $rgbarray['red'] < ]<125|| $rgbarray[ 'blue'] < 125 숫자가 어디에 있고 배경이 어디에 있는지 쉽게 알 수 있습니다.

이러한 규칙을 찾을 수 있는 이유는 인증코드의 인터페론을 만들 때 인터페론이 숫자의 표시 효과에 영향을 미치지 않도록 인터페론의 RGB와 디지털 RGB가 각각 독립적이어야 하기 때문입니다. 서로 간섭하지 않고 서로. 이 규칙을 이해하는 한 쉽게 이진화를 달성할 수 있습니다.

우리가 찾은 120, 80, 125 및 기타 임계값은 실제 RGB와 다를 수 있으므로 때때로 이진화 후 일부 위치에 인증 코드의 고정 위치에 1이 표시됩니다. 간섭이 너무 심해요. 하지만 인증번호의 위치가 불확실한 사진의 경우 글자를 자를 때 간섭이 발생할 가능성이 높습니다. 따라서 이진화 후에 노이즈 제거가 필요합니다.

2단계: 잡음 제거. 노이즈 제거의 원리는 매우 간단합니다. 즉, 고립된 유효 값을 제거하는 것입니다. 노이즈가 상대적으로 높고 필요한 효율이 상대적으로 높을 경우 수행해야 할 작업이 많습니다. 다행스럽게도 여기서는 그렇게 많은 깊이가 필요하지 않습니다. 점이 1이면 점의 8개 방향의 숫자가 1인지 확인합니다. 1이 아니면 1입니다. 건조점으로 간주되면 1로 설정하면 됩니다.

위 그림과 같이 빨간색 상자 안의 1이 건조점임을 쉽게 알아내고 직접 1로 설정하는 방식을 사용합니다. 우리는 판단할 때 트릭을 사용합니다. 노이즈 포인트가 2개의 연속된 1일 수 있으므로 이 포인트의 8개 방향에 있는 값의 합을 계산하고 최종적으로 그 합이 특정 임계값보다 작은지 여부를 판단합니다. .

3단계: 문자를 자릅니다. 문자를 자르는 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 아래와 같이 먼저 세로로 문자를 자른 다음 가로 방향으로 초과된 0000을 제거하는 것입니다.

첫 번째 단계는 빨간색 선 부분을 잘라내고, 두 번째 단계는 파란색 선 부분을 잘라서 독립된 문자를 얻을 수 있도록 하는 것입니다. 그런데 다음과 같은 상황

위의 방법은 dw 문자를 하나의 문자로 자르는 것이므로 잘못된 자르기이므로 여기서는 글루 문자 자르기를 포함합니다.

4단계: 접착된 문자 자르기. 인증코드를 만들 때 일반 문자끼리의 접착은 분리가 쉬우며, 문자 자체의 크기를 조정하면 변형 처리가 어려울 수 있으니 분석해 보면 위의 문자 접착 방식은 매우 간단하다는 것을 알 수 있습니다. , 단지 일반 문자이므로 이 상황을 처리하기 위해 매우 간단한 방법도 사용합니다. 분할 작업을 완료한 후에는 분할된 부분이 문자인지 즉시 판단할 수 없으므로 검증의 핵심 요소는 절단된 문자의 너비가 임계값보다 큰지 여부입니다. 캐릭터가 어떻게 회전하든 변형은 이 임계값보다 크지 않으므로 잘라낸 블록이 이 임계값보다 크면 접착된 캐릭터로 간주될 수 있습니다. 두 개의 임계값이 있는 경우 세 개의 문자가 붙어 있는 것으로 간주됩니다. 이 규칙을 알고 나면 끈끈한 문자를 자르는 것은 매우 간단합니다. 그것이 붙어 있는 문자 블록이라는 것을 알게 되면, 블록을 두 개 이상의 새로운 블록으로 나눌 수 있습니다. 물론 캐릭터를 더 잘 복원하기 위해 일반적으로 1과 -1을 사용하여 캐릭터 블록을 적절하게 보완합니다.

5단계: 문자를 일치시킵니다. 회전된 문자에 대한 기능 코드를 생성하는 방법은 다양하므로 여기서는 심층적인 연구를 진행하지 않겠습니다. 여기서 사용하는 가장 간단한 방법은 모든 캐릭터의 모든 상황에 맞는 매칭 라이브러리를 구축하는 것이기 때문에 제가 제공한 코드에 스터디 작업을 추가했습니다. 먼저 누군가가 사진의 인증 코드를 수동으로 식별하도록 한 다음 사용하는 것이 목적입니다. 작성하는 학습방법 기능코드 라이브러리를 입력하세요. 이러한 방식으로 더 많은 이미지 데이터가 기록될수록 더 정확한 행을 확인하고 식별할 수 있습니다.

위 단계를 거쳐 오늘날 인터넷에 있는 대부분의 인증 코드를 기본적으로 식별할 수 있습니다. 여기서는 OCR 지식을 사용하지 않고 가장 간단한 방법을 사용합니다.

인증 코드 생성에 대한 추가 제안:

인증코드 식별 프로그램에서 가장 어려운 부분은 인증문자 자르기와 기능코드 설정입니다. 많은 국내 프로그래머들이 인증코드만 만들 때 항상 인터페론과 간섭선을 많이 추가하는 것을 좋아합니다. , 영향은 말할 것도 없고 여전히 좋은 결과를 얻을 수 없습니다. 따라서 인증 코드를 인식하기 어렵게 만들려면 다음 두 가지 사항을 수행하세요.

1. 캐릭터 접착, 모든 캐릭터에 접착 파츠가 있는 것이 바람직합니다. 2. 인증코드의 각 부분에 대해 서로 다른 비율의 스케일링이나 회전을 사용하지 마십시오.
이 두 지점이 달성되거나 이 두 지점의 변형이 달성되는 한 인식 프로그램에서 식별하기가 어렵습니다.

위는 이 기사의 전체 내용입니다. PHP를 사용하여 웹사이트 인증 코드를 크랙하는 것이 모든 사람의 학습에 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿