- 한 대학의 신입 데이터베이스 프로그래머가 캠퍼스 네트워크 프린터 표시 문구를 바꿔 유료 출력 정책처럼 보이게 만든 만우절 사건임
- 장난은 HP 9000 K250 서버의 프린터 스풀 접근 권한과 LaserJet의 READY 메시지 변경 기능을 이용해 각 프린터에
INSERT 5 CENTS를 표시하는 방식이었음
- 프린터는 계속 정상 출력됐고 실제 변화는 표시 패널 문구뿐이었지만, 캠퍼스 전체 관리 메일링 리스트에 보낸 정책 안내 메일 때문에 일부 직원이 행정부에 직접 문의하며 일이 커짐
- 오전 8시 30분쯤 본부 사무실이 혼란스러워졌고, HR 책임자는 CFO 출근 전 정정 메일을 요구했으며 첫 정정문은 실제 페이지당 과금 논의와 충돌해 다시 고쳐야 했음
- 사건은 다음 인사 평가의 poor judgment 한 줄로 마무리됐고, 캠퍼스에서는 이전 장난보다 기술적으로 더 뛰어난 전설적 장난으로 기억됨
대학 전산실과 CARS 환경
- 첫 직장은 대학의 데이터베이스 프로그래머였고, 학부 전공은 컴퓨터와 관련이 없었지만 BSD/386과 SunOS 실무 지식, 전임자의 추천으로 채용됨
- 근무 대상 시스템은 Hewlett-Packard의 대형 PA-RISC 서버인 HP 9000 K250였음
- 서버실은 사무실 아래층에 있었고, 카드키 잠금장치와 halon 소화 시스템을 갖춘 온프레미스 환경이었음
- K250은 이전에 쓰던 Encore 계열 미니컴퓨터를 대체했으며, 같은 서버실에는 AIX RS/6000, T1 회선, 터미널 서버, Cabletron 라우터, 통신 장비도 있었음
- K250은 학생 정보 시스템 CARS를 실행했음
- CARS는 나중에 Jenzabar로 이름이 바뀐 시스템임
- 당시 운영체제와 데이터베이스는 각각 HP/UX 10.20과 Informix였음
- CARS 코드는 Informix 테이블, 화면, 저장 프로시저, 자체 텍스트 UI 라이브러리, Perform 화면, SQL, C-shell 스크립트, C, ESQL/C로 구성됐음
- 변경 관리는 RCS와 큰 Makefile로 이뤄짐
- 업무 범위는 자원 관리, 재무, 출석 추적 같은 관리 부문 코드 작성과 유지보수였고, 이후 CARS의 새 웹 모듈에서 Perl 기반 맞춤 애플리케이션도 만들었음
장난의 기술적 아이디어
- CARS는 캠퍼스의 대부분 프린터를 관리했으며, 일부 RS/6000 직결 프린터만 예외였음
- 캠퍼스 행정 프린터 대부분은 JetDirect 네트워크 카드를 단 HP LaserJet 4 계열이었음
- LaserJet의 VFD 패널에 표시되는 READY 메시지는 변경 가능했음
- 처음에는 상사가 출력할 때 프린터가 인사말을 표시하게 하는 정도로 사용함
- 이후 K250의 프린터 스풀 접근 권한과 스풀 디렉터리 이름이 호스트명과 같다는 점을 이용하면 캠퍼스의 모든 네트워크 LaserJet 위치를 알 수 있다는 사실을 장난에 활용함
- 만우절 계획은 매우 이른 시간에 출근해 모든 스풀 항목을 순회하며 각 프린터 표시 메시지를
INSERT 5 CENTS로 바꾸는 것이었음
- 모든 네트워크 LaserJet이 출력 전에 5센트 동전을 요구하는 것처럼 보이게 만드는 효과였음
- 실제 프린터 상태는 여전히 준비 상태였고, 출력 작업을 보내면 정상적으로 출력됨
실행 스크립트와 안내 메일
- 실제 스크립트는
/opt/carsi/spool 디렉터리의 모든 항목을 순회하면서 PJL 명령을 포트 9100으로 보내는 단순한 C-shell 스크립트였음
#!/bin/csh -f
cd /opt/carsi/spool
foreach i (*)
echo '^[%-12345X@PJL RDYMSG DISPLAY="INSERT 5 CENTS"' | netto $i 9100
end
^[는 ASCII 27 ESCape 문자였고, netto는 netcat이 널리 쓰이기 전 직접 작성한 netcat 비슷한 스크립트였음
- 장난의 효과를 키우기 위해 캠퍼스 전체 행정 메일링 리스트에 프린터 정책 변경 안내 메일을 보냄
- 서비스 비용 증가 때문에 캠퍼스 프린터를 페이지당 과금 방식으로 재프로그래밍한다는 내용이었음
- 대부분 프린터가 페이지당 5센트 예치금을 요구하며, 계정 결제나 기술자가 설치할 동전 수납 장치를 통해 지불할 수 있다고 적음
- 계정이 없는 사무실의 프린터는 출력할 페이지마다 5센트를 넣으라고 자동 요청할 것이라고 안내함
- 프린터 계정은 CARS에서 관리되며 Helpdesk에 전화하지 말고 자신에게 문의하라고 적었음
- 원래 계획은 하루가 끝날 때 모든 프린터 표시를 다시 READY로 되돌리고 조용히 넘어가는 것이었음
예상보다 커진 소동
- 메일 발송 뒤 몇몇 불안한 전화를 받았고, 상대가 장난임을 알게 되면 크게 웃었으며 해당 프린터는 수동으로 되돌림
- 글쓴이를 알고 장난을 좋아하는 사람들은 날짜를 보고 긍정적인 답장을 보냄
- 그날 늦게 한 사람은 레이저 프린터로 출력한 종이에 5센트 동전을 붙여 캠퍼스 내부 우편으로 보냈음
- 문제는 그를 모르는 사람들이 전화하지 않고 대학 행정부에 직접 연락하면서 시작됨
- 오전 8시 30분쯤 본부 사무실은 혼란스러워졌고, 이 상황은 그를 아는 HR 책임자에게 전달됨
- HR 책임자는 CFO가 출근하기 전에 정정 메일을 보내지 않으면 큰일 날 것이라고 말함
- 첫 정정문에는 캠퍼스 행정부가 페이지당 요금을 고려하지 않는다고 썼지만, 실제로는 그런 논의가 있었음
- 그래서 첫 정정문을 다시 정정하고, 그 사실에 주의를 끌지 않는 새 정정문을 보내야 했음
- 프린터 표시를 원래대로 되돌리는 스크립트도 예정보다 일찍 실행했고, 소동은 정오쯤 가라앉음
- 사무실 사람들은 이를 매우 재미있어했고, 공식적으로는 못마땅해한 상사도 어느 정도는 재미있어했음
상사의 휴가와 사후 처리
- 사건 당시 IT 디렉터, 즉 상사의 상사는 휴가 중이었음
- 글쓴이는 그 다음 주말과 주 초 일부를 스키 여행으로 보내는 전술적 실수를 했고, 디렉터는 그가 없는 동안 분노한 이메일들을 확인하게 됨
- 사무실 동료는 디렉터가 눈이 휘둥그레져 들어와 “그가 대체 뭘 한 거냐”고 물었다고 기억함
- 복귀 후 사무실 분위기는 매우 차가웠음
- 장난을 재미있어했던 부디렉터는 일을 막지 못했다는 이유로 곤란해짐
- 그는 애초에 일을 벌였다는 이유로 큰 곤란을 겪음
- 그는 사과했고, 상당히 오랫동안 이례적으로 모범 직원처럼 행동함
- 시간이 지나 사건은 공식적으로 종결됐지만, 다음 성과 평가에는 poor judgment가 남음
- 캠퍼스에서는 이 장난이 이전의 “입구 경비원이 인당 소액 입장료를 받는다”는 장난보다 기술적으로 더 완성도 높았다고 평가됐고, 여러 해가 지나도 전설적인 장난으로 회자됨