처음에는 파일 제목 필터링 같은 단순한 필터링으로 막던 애들이, 공유자들이 파일 이름 요상하게 변경해가면서 필터링을 피해가자(물론 필터링 허술하다고 저작권자들에게 웹하드들이 무더기로 고소당하는 사태까지 겪었으니까), 요즘은 파일 지문까지 생성해 가면서 이름 바꾸고 별짓 다 해도 인식할 수 있게 해놓고 있다. 덕분에, 파일 지문 뜨기 우회를 위해 압축파일에 패스워드를 걸어놓는가 하면, 한동안 머릿속에서 사라지다시피 했던 구석기 시대 압축 포맷들 - .ARJ 라던가, .LZH 같은 것들(.LZH는 요즘도 일본에선 사용되긴 하나 보던데..)이 등장하기도 한다. 한동안 웹하드 업계에 .EGG 파일이 넘쳐났던 이유 중에 하나가, EGG를 웹하드 등의 필터링 툴이 못 풀어냈기 때문이라나 뭐라나.
어제는, 무언가 다운로드 받으러 클럽박스에 갔더니, 어디서 듣도 보도 못했던 요상한 압축 포맷을 들고와서는 그걸로 압축을 풀라고 한다. 확장자를 보니 .ENC 라는 확장자다. 압축 푸는 툴도 일본어로 되어 있는 걸로 봐서 일본 쪽에서 나온 툴인 것 같은데, 파일 확장자로 봐서는 압축툴이라기보단 소스 파일을 사용자가 입력한 SEED(흔히 말하는 패스워드)를 사용해서 암호화하는 것 같다. 어찌 되었거나 필터링 툴이 압축을 못 푸는 이상 필터링은 불가능할 것이니, 소기의 성과는 충분히 거둔 셈이다. 물론 이것도 오래는 못 갈 거다. 막으려는 측에서도 분명히 무언가 대책을 세울 테니.
싸움 구경이 원래 재미있는 거라지만, 참 재미있는 광경이다.
필터링 전쟁을 보면서 얼핏 든 생각이지만, 파일 사이즈와 시간을 생각하지 않는다면, 꽤 유용할 것 같은 필터링 우회 방법이 있다. 바로 Base64를 이용하는 방법이다. 이건 이메일에 파일을 첨부할 때도 쓰이는데, 어떤 파일이건 이 규칙을 사용하여 변환하면 텍스트 파일이 된다. CD이미지건, 동영상 파일이건, 여기를 거치고 나면 모두 길다란 텍스트가 되어버리는 것이다.
3바이트를 읽어서 4바이트로 쓰는 특징 때문에 용량이 3분의 4배(약 1.33배)로 커지고, 다시 ZIP 등으로 압축한다고 해도 원래 파일을 압축하는 것보다는 조금 더 큰 파일이 만들어지며, 결정적으로 변환에 시간이 많이 걸린다. 350메가바이트 정도 되는 동영상 파일을 하나 변환하는 데 한 시간도 넘게 걸리니, 실제로 사용하기에는 심하게 무리가 있는 방법이기도 하다. 그러나, 애초에 바이너리 파일이 전혀 형태와 크기가 다른 텍스트 파일이 되어버리는데, 이게 필터링이 될 리가 없지.
최악의 경우, 일정 타이밍마다 쓰레기 문자를 끼워넣어두거나, 64개의 문자 대응 배열을 일정한 규칙에 따라 변경할 수도 있겠다. 다운로드 후에 원상태로 디코딩할 때는 해당 쓰레기 문자를 삭제하면서 디코딩하거나, 변경된 규칙에 따라서 디코딩하면 원래의 파일을 얻어내는 데는 문제가 없다. 그러나 자동 필터링 툴 따위가 그런 규칙을 알고 있을 리가 없으니, 자동으로 필터링한다는 것은 불가능에 가깝다. 사람이 일일이 돌아다니면서 블럭을 먹인다면 모르지만..
....그런데, 350메가 짜리 인코딩 하는 데 한시간 넘게 걸린다는 걸 나는 어떻게 알고 있는걸까. 어떻게 알고 있긴. 실제로 툴 만들어서 인코딩을 해 봤으니까 알지. (또 쓸데없는 짓을!)
3바이트를 읽어서 4바이트로 쓰는 특징 때문에 용량이 3분의 4배(약 1.33배)로 커지고, 다시 ZIP 등으로 압축한다고 해도 원래 파일을 압축하는 것보다는 조금 더 큰 파일이 만들어지며, 결정적으로 변환에 시간이 많이 걸린다. 350메가바이트 정도 되는 동영상 파일을 하나 변환하는 데 한 시간도 넘게 걸리니, 실제로 사용하기에는 심하게 무리가 있는 방법이기도 하다. 그러나, 애초에 바이너리 파일이 전혀 형태와 크기가 다른 텍스트 파일이 되어버리는데, 이게 필터링이 될 리가 없지.
최악의 경우, 일정 타이밍마다 쓰레기 문자를 끼워넣어두거나, 64개의 문자 대응 배열을 일정한 규칙에 따라 변경할 수도 있겠다. 다운로드 후에 원상태로 디코딩할 때는 해당 쓰레기 문자를 삭제하면서 디코딩하거나, 변경된 규칙에 따라서 디코딩하면 원래의 파일을 얻어내는 데는 문제가 없다. 그러나 자동 필터링 툴 따위가 그런 규칙을 알고 있을 리가 없으니, 자동으로 필터링한다는 것은 불가능에 가깝다. 사람이 일일이 돌아다니면서 블럭을 먹인다면 모르지만..
....그런데, 350메가 짜리 인코딩 하는 데 한시간 넘게 걸린다는 걸 나는 어떻게 알고 있는걸까. 어떻게 알고 있긴. 실제로 툴 만들어서 인코딩을 해 봤으니까 알지. (또 쓸데없는 짓을!)




