국제인도주의 물자를 싣고 가던 배 <마린호>가 좌초되었다. 사고 원인은 조정체계에 바이러스가 침투하여 착오가 생긴 것이었다. 인도주의 원칙에 따라서 배를 고쳐주기로 하고, 김책공업종합대학 자동공학부 졸업생인 진화가 진성호 조종 프로그램 개발을 위해 선박수리소로 내려간다.
마린호의 고장은 무라야마가 음모를 꾸미고, 인도주의 물자의 운송을 방해하려는 태풍 작전에 의한 계략이었다.
적들은 카멜레온이라는 첩자를 통해 석태를 협박한다. 아버지가 간첩 행위를 하다가 죽은 줄 알고 있던 석태는 마음이 크게 흔들려 메시지대로 계산을 일부러 실수하며, 진화가 개발하던 프로그램을 삭제하기도 한다.
석태 아버지의 사건 이후 석태를 예의주시하던 보위성에서는 적의 간첩들이 석태에게 접근했다는 것을 파악한다. 보위부에서는 석태의 정체가 쉽게 드러날 수 있는 일을 시키고 또 만나자고 하는 것을 의심한다.
역사박물관에서 카멜레온과 만나기로 한 석태는 만나지 못하고 돌아온다. 보위부장은 석태를 만나 아버지가 간첩이 아니라 오히려 정보를 빼려는 적을 잡는 데 공을 세운 ‘화성’이라는 이름을 가진 정보원이었음을 알려준다.
카멜레온을 추격하던 보위부는 카멜레온이 가공부 직장장 김덕규라는 것을 알아낸다. 석태는 덕규에게 접근하여, 세계 적십자의 날까지 마린호를 잡아두는 것이 임무라는 것을 알아낸다. 미국과 일본은 북한을 테러국가로 몰아가기 위해서 마린호를 폭파하려는 것이었다.
진화의 노력으로 마린호는 배의 조종프로그램을 새로 세팅하고 출항 준비를 마친다. 마린호의 출항을 앞두고 선원들은 바닷가로 놀러 나간다. 바닷가에서 세꾸트리라는 선원이 통조림으로 위장한 원격 폭탄을 몰래 버린다.
진화가 떠나기 직전 보위부장은 석태가 보안원이라는 것을 알린다. 진화와 석태가 만나는 순간 갑자기 트럭이 이들을 덮친다. 석태는 진화를 구하고 큰 부상을 입는다. 기술과장 박상철이 두 사람을 죽이려 한 것이었다.
간첩 카멜레온과 푸른상어에 대한 수색이 벌어진다. 푸른상어는 도망치다가 절벽 아래로 차를 몰고는 몸을 피한다. 보위성은 마린호에 폭탄을 숨기던 카멜레온을 체포하지만 폭탄은 가짜였다. 기만 작전이라는 것을 알고는 곧 배에 대한 수색을 시작하지만 배에서는 폭탄을 찾지 못한다.
한편 부상을 입은 석태는 부기사장이 낚시질 하던 위치를 떠올려 제보한다. 보위부원들은 바위에서 낚시를 하는 척하면서 마린호를 폭파시키려던 푸른상어를 체포한다.
재판이 열리고, 증인이 된 마린호 선원 세꾸트리는 돈에 눈이 멀어서 스파이가 되었으며 테러 세력은 미국과 일본이라고 증언한다.
건강을 회복한 석태는 진화에게 과업을 해도 계급의 눈만 흐리지 않으면 그것이 곧 우리의 계급진지를 지키는 것이라는 것을 간직하며 살자고 다짐한다.