@aanoaa - Perl, 콧수염, 야구, 자전거, 낙타, 돌고래, 포청천 마니아. 아이유 열혈 삼촌팬. Perl과 Javascript, 안드로이드 어플리케이션 개발에 능하다. Perl 코드 사용시 탭 문자 대신 4칸 공백을 사용한다. 일신 상의 이유로 Vim을 버리고 Emacs로 투신. 현재 콧수염 블로그를 운영하고 있다.
Perl 코드를 실행할 수 있다는 것은 소스 코드도 읽을 수 있다는 것을 뜻합니다. 하지만 단 몇 줄의 Perl 코드로 여러분의 코드를 감쪽같이 숨길 수도 있습니다.
먼저 숨기고자 하는 문자열을 비트스트림으로 보고 '0'
과 '1'
로만 이루어진 문자열로 바꿉니다.
그런 다음, 이것을 다시 공백(" "
)과 탭("\t"
)으로만 이루어진 문자열로 바꿉니다.
그러면 여러분의 코드는 아무리 모니터를 뚫어지게 쳐다봐도, 백번 인쇄를 해도 읽어낼 수 없게 됩니다!
예를 들어 아래와 같은 내용이 주어졌다면,
1 | 안녕하세요 |
먼저 이렇게 0
과 1
로만 이루어진 문자열로 바꿉니다.
1 | 00110111101010010001000111010111101000011010100110110111101010010001100100110111001000010001110100110111010110010010100101010000 |
그리고 0
과 1
을 각각 공백과 탭 문자로 바꾸면 읽을 수도 없고 인쇄할 수는 문자열이 완성됩니다!
1 | " " |
보이지 않게 된 문자열을 큰 따옴표로 묶은 모습입니다.
먼저 Perl 내부로 읽어들인 문자열을
unpack 함수를 사용하여 '0'
과 '1'
의 바이트 시퀀스로 변형합시다.
1 2 | my $text = <STDIN>; $text = unpack "b*" , $text ; |
다음으로 '0'
은 ' '
로, '1'
은 "\t"
로 바꿉니다.
1 | $text =~ tr /01/ \t/; |
이게 끝입니다! 전체 코드로 한번 볼까요?
1 2 3 4 | my $text = <STDIN>; $text = unpack "b*" , $text ; $text =~ tr /01/ \t/; print $text ; |
결과 화면은 다음과 같습니다.
"Hello Susan!"
을 입력하면 빨간 박스에
표시한 부분만큼 공백이 출력된 것을 볼 수 있습니다.
역순으로 실행하면 ' '
와 "\t"
로 이루어진 텍스트를
원상태로 복구할 수 있을 겁니다.
Perl을 사용하면 이렇게 간단하게 문자열을 조작할 수 있습니다.
문서와 명령행 옵션이 깔끔하게 포함된
s3cr3t 전체 소스코드도 꼭 확인해보세요.
Articles by Seoul Perl Mongers
Illustrated by Hyunsu Park, Designed by Hojung Youn, Edited by Hojung Youn & Keedi Kim