암호화 된 뷰 또는 저장 프로 시저를 보는 방법


27

타사 데이터베이스에서 작업하고 있습니다.

나는 마우스 오른쪽 버튼으로 클릭하여 뷰의 정의를보고 할 때 CREATE TO까지 다음과 NEW QUERY EDIT WINDOW나는 오류를 얻고있다 :

이 속성에이 속성이 없거나 액세스 권한이 부족하여 검색 할 수 없습니다. 텍스트가 암호화됩니다.


필요한 경우 SQL 프로파일 러 추적을 실행하고 SP SQL이이 방식으로 수행하는 작업을 캡처 할 수도 있습니다.
Pimp Juice IT

SQL 프로파일 러를 통해 암호화 된 tsql을 얻을 수 있습니까? @PimpJuiceIT
wenzzzel

@wenzzzel 나는 그것이 믿지만 100 % 정확도로 당신에게 정확하게 말하지는 않지만 암호화 된 SP로 과거를 믿었다면 프로파일 러 추적을 실행하여 필요한 것을 보았습니다. 나는 이것을 확인할 수있는 환경을 지원하지 않지만 암호화 된 프로세스에서 온 프로파일 추적으로 실행되는 것을 볼 수 있다고 생각합니다.
Pimp Juice IT

좋아, 내가 얻는 모든 원인이 확실하지 않다-- Encrypted text
wenzzzel

답변:


12

암호화 된 객체를 즉석에서 해독하는 데 사용할 수있는 다른 타사 도구는 Red Gate의 SQL 프롬프트입니다. http://www.red-gate.com/products/sql-development/sql-prompt/features

저장 프로 시저 위로 마우스를 가져 가면 암호 해독 된 생성 스크립트를 볼 수 있습니다.

면책 조항 :이 도구는 상용이며 (14 일 무료 평가판 사용) Red Gate에서 근무합니다.


18

이 문제에 대한 자세한 설명이 여기 있습니다 .

요컨대, 객체는 실제로 암호화되지 않고 오히려 난독 처리됩니다. 따라서 우리는 원본을 되 찾을 수 있습니다. 이 방법은 약간 복잡하지만 다음 단계로 구성됩니다.

  1. 전용 관리자 연결을 사용하여 인스턴스에 연결
  2. 다음과 같이 난독 처리 된 코드를 선택하십시오.

    SELECT @secret = imageval
    FROM   sys.sysobjvalues
    WHERE  objid = OBJECT_ID(@object_name);
  3. 같은 이름 같은 OBJECT_ID 바이트에서 같은 길이가 다른 하나를 사용하여 객체를 교체합니다 (예를 들어, 사용 ALTER PROCEDURE)

  4. 위와 같은 방식으로 새로 난독 처리 된 코드 가져 오기
  5. 세 값을 함께 XOR (난독 화 된 원본, 교체 및 난독 화 된 교체)

그러면 원래 코드가 제공됩니다. 그러나 Kin이 언급했듯이 지원과 법적 영향을 줄 수 있으므로 변호사와 먼저 상담하십시오.


14

모듈 텍스트는 RC4 스트림 암호를 사용하여 암호화됩니다.

RC4 초기화 키는 다음의 SHA-1 해시 에서 계산됩니다 .

  • 데이터베이스 패밀리 GUID (에서 sys.database_recovery_status )
    에서 변환 된 고유 식별자이진 (16)
  • 모듈의 오브젝트 ID (카탈로그 뷰에서)
    에서 변환 된 정수 리틀 엔디안으로 이진 (4)
  • 모듈의 오브젝트 서브 ID가
    변환 SMALLINT 리틀 엔디안으로 이진 (2) .

모듈의 객체 하위 ID는 다음과 같습니다.

  • 번호가 지정되지 않은 저장 프로 시저의 경우 1; 또는
  • (더 이상 사용되지 않는) 번호가 매겨진 저장 프로 시저의 프로 시저 번호입니다. 또는
  • 그렇지 않으면 0입니다.

적절한 권한을 가진 사용자는 다음을 통해 모듈을 해독 할 수 있습니다.

  1. sys.sysobjvalues 에서 암호화 된 바이너리 가져 오기 (DAC 사용)
  2. 위에서 설명한 RC4 키 계산
  3. 바이너리에서 잘 알려진 표준 RC4 알고리즘 실행
  4. 이진수에서 nvarchar (max) 로 결과 변환

내 기사에서 자세한 내용과 전체 코드 구현 :

내부 WITH ENCRYPTION


타사 도구를 설치하는 것이 실현 가능한 솔루션이 아닌 가장 간단하고 비상업적 인 방법이라고 생각합니다.
John Eisbrener

12

DAC (Dedicated Administrator Connection) 를 사용하여 SQL Server에 연결 한 다음 저장 프로 시저의 SQL 텍스트를 볼 수 있습니다. 다음을 사용하여 DAC에 연결하십시오.

admin:Your_Servername

당신은에 필요한 모든 단계를 찾을 수 있습니다 스택 오버플로이 답변 에 의해 마틴 스미스 .

또 다른 대안은 SQL Server 2005, 2008 및 R2의 암호화 된 저장 프로 시저, 뷰, 함수 암호 해독에 언급 된 일부 타사 스크립트를 사용하는 것입니다.

참고로 -타사 데이터베이스이고 prod에서 데이터베이스를 제공하는 경우 공급 업체가이를 지원합니까? SP 또는보기를 암호화해야 할 적절한 이유가있을 수 있습니다. 백업을 한 다음 더 좋아하는 것이 좋습니다.


8

원본 DDL 스크립트를 미리 보거나 암호화 된 객체를 해독하려면 ApexSQL Decrypt를 확인하십시오.

SSMS에 통합하고 원본 DDL 스크립트를 미리 볼 수있는 옵션이있는 무료 독립형 도구입니다. 또한 여러 서버에있는 객체를 한 번에 해독 할 수 있습니다. dbForge SQL Decryptor 가 도움이 될 수있는 도구 중 하나입니다.


0

한 번에 여러 저장 프로 시저를 해독하는 데 자주 사용하는 방법은 ...

RedGate의 SQL 비교를 사용하여 데이터베이스를 빈 데이터베이스 (또는 저장 프로 시저가없는 데이터베이스)와 비교하십시오. 배포 스크립트를 만들고 SSMS에 복사하십시오. WITH ENCRYPTION 을 찾아 공백으로 바꿉니다 . 그런 다음 CREATE PROCEDURE를 ALTER PROCEDURE로 변경하십시오. 원본 데이터베이스에 대해 RedGate 스크립트를 실행하면 모든 저장 프로 시저 암호화가 제거되었습니다.

400 개 이상의 저장 프로 시저가있는 데이터베이스가 있었고 SQL Prompt가 편리하지만 400 개 이상의 저장 프로 시저에 대해 마우스 오른쪽 단추를 클릭하여 복사하고 붙여 넣을 시간이 없었습니다. RedGate SQL 비교를 사용하여 약 10 분 안에 400 개 이상의 저장 프로 시저에서 암호화를 제거 할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.