첨부파일을 서버로 보내서 처리를 해야하는데

서버로 보내기전에 바이러스검사를 실시해야한다는 과제가 주어졌다.

이번에 사용해야하는 프로그램은 Symantec Endpoint Protection

요놈을 첨부파일을 대상으로 바이러스 체크를 실시해서

문제가 없을 경우에만 해당파일을 첨부해서 후속처리를 해야한다.


아주 간단하게 제어를 해보도록 한다.
1. 바이러스 체크를 실시한다.
2. 바이러스 체크결과를 확인한다.

위의 두가지만 만족된다면, 나머지는 프로젝트별로 제어를 할수가 있겠다.

어떻게 파일 하나만 정확하게 바이러스검사를 실시할수 있을까...
우선은 symantec의 서포트 페이지를 확인해보았다.

그랬더니 아래의 설치경로에 DoScan.exe 이라는게 존재한다는것을 알게되었다.

  • C:\Program Files\Symantec\Symantec Endpoint Protection\Doscan.exe – 32bit OS
  • C:\Program Files (x86)\Symantec\Symantec Endpoint Protection\Doscan.exe – 64bit OS

이것을 이용해서 스캔을 실시할수있다고 한다.

(*필자가 일본에 거주하고있어서 간혹 일어가 나오는점 양해바랍니다.)


[ SEP 11.0 RU5 이전버젼 ]

Doscan.exe /cmdlinescan [/LOGFILE="<로그파일의 경로와 파일명>"] [/SCANALLDRIVES]

옵션설명
/cmdlinescan액티브스캔을 실행한다.

/logfile="<로그파일의 경로와 파일명>"

로그파일을 작성한 장소와 파일명입니다. 지정한 파일명의 파일이 존재하는 경우는 덮어씁니다.
/scanalldrives

이 옵션은 /cmdlinescan 옵션과 연동되어 사용하면, 디폴트 액티브스캔에 더해져서 디스크전체 스캔을 실시합니다.


[ SEP 11.0 RU6 이후버젼 ]

DoScan [[/scanname <스캔명>] [(/scandrive <드라이브리스트>)+ | [(/scandir <디렉토리>)+ | (/scanfile <파일패스>)+]] | [/list] | [/cmdlinescan] [[/scanalldrives] | [/startupscans]]
옵션

설명

/scanname "<스캔명>"

설정된 스캔 중에서 지정한 검색 이름 검색을 수행합니다.
/scandrive "<드라이브리스트>"지정한 드라이브에 대해 기본 활성 검사를 수행합니다.
드라이브 목록의 예 : "A, C-E, V-S, Z"
/scandir "<디렉토리>"지정한 디렉토리에 대해 기본 활성 검사를 수행합니다.
이 옵션은 반복 할 수 있습니다.
/scanfile "<파일명>"지정한 파일 이름에 대해 기본 활성 검사를 수행합니다.
이 옵션은 반복마다 수 있습니다.
/list콘솔 창에 설정된 스캔 목록을 표시합니다.
/cmdlinescan기본 활성 검사를 수행합니다.
/scanalldrives이 옵션은 / cmdlinescan 옵션과 함께 사용하면 기본 활성 검사 이외에 모든 디스크 드라이브를 검색합니다.
/startupscans이 옵션은 / cmdlinescan 옵션과 함께 사용하면 부팅시 기본 활성 검사를 수행합니다.

일단 사용법을 대충 알았으니

바이러스 검사를 한번 실시해보자.

프로젝트를 하나 생성해서, 버튼을 하나 배치한다.

그리고 디자이너에서 버튼을 더블클릭해서 클릭이벤트를 생성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
 
        private void btnJustOne_Click(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardInput = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.Arguments = @"/C C:\DoScan.exe.lnk /scanfile D:\VirusTest\b.pdf";
            p.Start();
            p.WaitForExit();
        }
cs

코드를 이렇게 짜서 실행을 하면,

아래와같은 Manual Scan started on 윈도우가 표시된다.

스캔 시작합니다~~

1개의 파일을 스캔완료 했습니다~


문제가 있는경우는 Risks found 의 카운터가 0이 아닌 다른값이 셋팅된다고 한다.

※문제가 있는경우를 테스트하기 위해서 문제가 있을수있는 파일을 일부러 집어넣을 용기가 나에게는 생기지않으므로.. 생략하겠다..


p.StartInfo.Arguments = @"/C C:\DoScan.exe.lnk D:\VirusTest\b.pdf"; 

DoScan.exe 는 상단에 설명했듯이,

    C:\Program Files\Symantec\Symantec Endpoint Protection\

아래에 위치하지만, 설명을 위해서 lnk(쇼트컷)를 생성해서 간략화 하였으니, 혼돈이 없도록 주의하자.


/scanfile 를 넣으면 스캔시작~ 완료의 symantec 윈도우가 표시되지않고, 비하인드에서 실행된다.

 p.StartInfo.Arguments = @"/C C:\DoScan.exe.lnk /scanfile D:\VirusTest\b.pdf"; 

<스캔실시 로그를보면 스캔은 실행되고있다.>


이후는 위에 설명해둔 다양한 옵션을 써가면서 프로그램을 만들어보면 되겠다.

다음편에서는 실행한 로그를 바탕으로 스캔결과를 제어하는 방법을 다뤄보도록 하겠다.

+ Recent posts