'ADODB'에 해당되는 글 1건

  1. 2008.09.16 ADODB 개체를 이용한 포트 스캔
컴퓨터2008.09.16 15:13

ADODB.connection 를 이용해서 특정포트의 사용여부를 확인하는 스크립트에 대한 내용입니다.

일반적으로 포트를 스캔하는 방법은 여러가지가 있습니다.

1. telnet 프로그램을 이용한 방법
2. 어플리케이션을 이용한 방법
(superscan, nmap, ... )
3. ADODB 개체를 이용한 방법

일반적으로 telnet 과 어플리케이션을 이용한 방법은 널리 알려져서 한번이라도 보신적이 있는 내용일것입니다.
하지만 ADODB 개체라고 하는 조금 생소한 것에 대해서 알아보면 다음과 같습니다.

인용
액티브엑스 데이터 오브젝트(ADO)는 데이터 원본에 접근하기 위해 마이크로소프트 표준으로 제작된 컴포넌트 오브젝트 모델 객체들의 모임이자, 프로그래밍 인터페이스(API)이다.

연결 객체(Connection Object): 특정 DBMS(데이터베이스 관리 시스템)이나 다른 데이터 소스에 대한 연결을 설정한다. 또한 데이터베이스에 쿼리를 보낼 수도 있다
 

역시나 말이 좀 어렵습니다. 데이터베이스 연결을 위해 이미 설치되어 있는 통로라는 이야기입니다. 이중 제가 말하고자 하는 핵심은 특정 데이터가 아닌 다른 서버의 데이터베이스로의 연결객체 부분입니다.

"특정DBMS나 다른 데이터 소스에 대한 연결을 설정한다."

즉, 특정 서버로 연결을 시도할수도 있다는것이고,  효율적인 활용을 위해서 여러가지의 포트 접근이 허용되어 있다는 것입니다.( 기본 개념이며, 방화벽등 네트워크 환경에 따라서 특정 포트로의 연결이 허용되지 않을수 있습니다.)
ADODB 의 주된 용도가 데이터베이스로의 연결이기때문에 네트워크 연결시도시 연결이 안될때에는 에러코드와 함께 연결이 종료됩니다.

이런 연결이 가능할때와 불가능할때의 에러코드가 달리지는 성질을 이용한 방법이 ADODB 를 이용한 포트 스캔입니다.

ADODB 를 이용한 포트 스캔 스크립트
 Dim targetip, portNum
 targetip = "10.10.1.165"           ' 접속테스트를 위한 서버IP
 portNum = 80                            ' 스캔할 포트번호
 On Error Resume Next
 set conn = CreateObject("ADODB.connection")           ' ADODB 사용
 connstr="Provider=SQLOLEDB.1;Data Source= "&targetip&","&portNum&";UserID=lake2;Password=;"
 conn.ConnectionTimeout = 1    ' 연결이 열릴 때까지 대기하는 시간(초)입니다 - MSDN
 conn.open connstr
 If Err Then
  If Err.number = -2147217843 or Err.number = -2147467259 Then
   If InStr(Err.description, "(Connect()).") > 0 Then
    wscript.echo (targetip & ":" & portNum & ".........불가")
   Else
    wscript.echo (targetip & ":" & portNum & ".........가능")
   End If
  End If
 End If
 

사용자 삽입 이미지

- 참고
Posted by Zasfe