본문 바로가기

보안/산업 제어

modbus 서버 및 클라이언트 실습

modbus 서버 (slave)

https://www.dropbox.com/s/lstf39hbnsymizr/ModbusPal.jar?dl=

해당 링크를 통해 modbuspal 설치파일을 다운로드 받는다

[그림1] 자바 설치

다운받은 jar 파일을 설치를 한다

 

 

[그림2] modbuspal 의 모습

설치가 완료가 되면 다음과 같은 modbuspal 모습을 확인할수 있다.

이 프로그램은 슬레이브 역할 즉 modbus 서버이다.

클라이언트에서 서버로 연결해주는 프로그램은 매우 다양하다

 

modbus slaves 라는 칸이 있는데 그곳은 하나의 장비들모임이라고 생각하면 된다.

[그림3] slave 추가

slave를 일단 한개만 추가를 해본다.

[그림 3-2] 이름 설정

생성한 machine은 A machine이라는 이름을 지어줬다.

외부에서 입력이 들어오면 A machine 슬레이브를 거쳐서 입력에 대한 데이터에 실행을 할것이다.

눈 모양을 누르면 [그림 4]를 확인할 수 있다.

[그림4] slave 설정

레지스터 정보와 코일 정보를 확인 할수 있다.

[그림5] 레지스터 생성

레지스터를 총 5개를 생성한다.

[그림 6] 생성된 레지스터

생성 된 레지스터는 모두 0의 값(value)을 갖고 있다.

[그림 7]  값 입력

Value값이 최대 65535까지 생성이 가능하다

[그림 8] 코일 생성

코일 생성 또한 총 5개를  생성해 보았다.

[그림 9] 값 입력

코일의 경우 Value는 1 과 0 만 된다.

[그림 10] 실행

이제 run 버튼을 통해 실행을 이어간다.

[그림 11] 모드버스 실행 확인

nmap을 통해 modbus 포트가 실행 된것을 확인할 수 있다.

 

 

modbus 클라이언트(master)

이전에도 설명했듯이 모드버스 클라이언트 프로그램은 종류가 매우 많다.

실습은 Qmodmaster 프로그램을 이용할 것이다.

https://www.dropbox.com/s/dfr3evmgaheipva/qModMaster.zip?dl=0

[그림 12] qmodmaster

설치가완료 되면 [그림12]와 같은 화면을 확인할 수 있다.

우측 위쪽에 (빨간색 밑줄) 버튼을 눌러서 서버 ip 설정을 해둔다

[그림 13] ip 설정

서버 ip에 기본 포트인 502로 하고 ok버튼을 누른다.

[그림 14] 서버와 연결

전기 콘센트 버튼 (빨간색 밑줄)을 눌러서 설정해둔 ip와 연결을 한다

좌측 아래에 tcp: 192.168.180.147 이라고 써져있는 부분 좌측에 캡쳐화면처럼 빨간색이면 연결이 안된거고 초록색이면 연결이 된것이다.

[그림 15]  코일 확인

function code는 01 read coils 로 했다.

start address는 0인데 이것은 인덱스 번호이기 때문에 0부터 시작하는것이 맞다.

number of coils는 10으로 했었는데 서버 세팅할때 코일은 5개만 만들어놔서 5로 다시 설정해둔다

= 코일의 원래 갯수보다 적게는 괜찮지만 그보다 많은 상태로 하면 에러가 난다.

[그림 16] 패킷 확인

가운데쯤에 모니터 버튼(노란색 하이라이트)를 누르면 패킷을 주고 받을때마다 패킷에 관한 내용들을 모니터링 할수 있다

연결버튼 우측에 (빨간색 밑줄)을 누르면 설정해둔 내용들이 실행이 되어 결과물을 확인 할수 있다

[그림 17] 모드버스 모니터링

unction code가 1로 read 이고 0번째 어드레스부터 5번까지 확인 한것을 확인 할수 있다

[그림18] write

이번에는 function code 를 05로 write 으로 해볼것 이다.

이전 실습에서 read를 통해 00100이라는것을 알아 냈다

 

start address를 3으로 설정을 해서 4번 address 내용을 0이 아닌 1로 바꿀것이다( 0 부터 시작이었으니까)

[그림19] 값 바꾸기

아래 화면에는 4번 address 내용인 0 만 뜨는데 해당 값을 1로 바꾼다.

그리고 read/write 버튼(빨간색 밑줄)을 누르면 내용이 갱신이 된다.

 

[그림 20] 갱신된 내용 확인

4번 address가 1로 바뀐것을 확인 할수 있다.

[그림 21] 갱신 내용 모니터링창에서 확인

function code:05 Starting Address:0003  Output Value 0000 을 확인 할수 있다.

 

[그림 22] write multiple coil

 이전 까지 실습은 write 따로 read 따로따로 할 수 있었다면

조회와 수정을 한번에 할수 있는 function code가 있다. 

write multiple coil(0x010) 이다

[그림 23] 갱신 내용 확인

손 쉽게 조회와 갱신을 바로  할 수 있다

반응형

'보안 > 산업 제어' 카테고리의 다른 글

Osint를 통한 ICS 실습  (0) 2024.02.19
산업제어 시스템 프로토콜 modbus 분석  (0) 2024.01.26
산업제어 시스템 이란  (0) 2024.01.25