이렇게 된 PHP 코드는 해독이 어려운가요?
본문
안녕하세요.
제가 CodeCanyon에서 PHP 난독화 도구를 구매하고 간단히 태스트 해보았습니다.
(무엇보다도 프로그램이 꽤 저렴해서 좋았습니다.)
난독화 된 코드
<?php /* File is protected by copyright law! Checksum: 900aaab886b1c22ab4ad6a5c6d127eab */ eval(base64_decode("JElsMWxsSWwxSWxJMWw9ZmlsZShwcmVnX3JlcGxhY2UoIkBcKC4qXCguKiRAIiwiIixfX0ZJTEVfXykpOw0KaWYocHJlZ19yZXBsYWNlKCJAXCguKlwoLiokQCIsIiIsX19GSUxFX18pPT1fX0ZJTEVfX3x8DQpwcmVnX3JlcGxhY2UoIkBcKC4qXCguKiRAIiwiIixfX0xJTkVfXykhPTMpZGllKCI8dHQ+RVJST1IiKTs"));eval(base64_decode("ZXJyb3JfcmVwb3J0aW5nKDApO2lmKCFmdW5jdGlvbl9leGlzdHMoIk8wME8wMDBPME8iKSl7ZnVuY3Rpb24gTzAwTzAwME8wTygkYSwkYil7JGM9YXJyYXkoMTA1MiwzMjQsMzIsNzcxKTskaz1nemluZmxhdGUoYmFzZTY0X2RlY29kZSgiS3lyTlRjb3NLUVlBIikpOyRPME8wPSRrWzZdLiRrWzFdLiRrWzNdLiRrWzZdLiRrWzVdLiRrWzBdOyRPMD0iJGtbNV0ka1swXSRrWzRdJGtbMl0iO2lmKCRiPT0zOCl7JGQ9JE8wTzAoJGEsJGNbMF0rJGNbMV0sJGNbMl0pO31lbHNlaWYoJGI9PTQwKXskZD0kTzBPMCgkYSwkY1swXSwkY1sxXSk7fWVsc2VpZigkYj09MTEyKXskZD0kTzAoJE8wTzAoJGEsJGNbMF0rJGNbMV0rJGNbMl0pKTt9cmV0dXJuJGQ7fX0="));eval(base64_decode(O00O000O0O($Il1llIl1IlI1l[0],40)));return eval(III1IIII1I1(O00O000O0O($Il1llIl1IlI1l[0],112),O00O000O0O($Il1llIl1IlI1l[0],38),$Il1llIl1IlI1l));__halt_compiler();SyaWYoIWZ1bmN0aW9uX2V4aXN0cygiSUlJMUlJSUkxSTEiKSl7ZnVuY3Rpb24gSUlJMUlJSUkxSTEoJGEsJGIsJGMpeyRkPWltcGxvZGUoJGMpOyRkPXByZWdfcmVwbGFjZSgiL19faGFsdF9jb21waWxlci4qLyIsIiIsJGQpO2lmKCRiPT1oYXNoKCJtZDUiLCIkZCIpKXtyZXR1cm4oaGV4MmJpbihiYXNlNjRfZGVjb2RlKCRhKSkpO31lbHNle2RpZSgiPHR0Pm1kNSBDb2RlIG1hbmlwdWxhdGlvbiBkZXRlY3RlZDwvdHQ+Iik7fX1996021b5d3e3e23e1079228ba01fe78eaMGQwYTI0Njc2ZTc1NjI2ZjYxNzI2NDIwM2QyMDIyZWFiN2I4ZWI4ODg0ZWJiM2I0ZWI5MzljM2EyMDIyM2IyMDI0NzM3NDcyNjk2ZTY3NWYzMTIwM2QyMDIyZWI4YzgwZWQ5NTljZWJhZmJjZWFiNWFkMjBlYzliYjllYmE3ODhlYzhhYTRlZDg0YjBlYzlkOTgyMGVhYjVhZGViYWZiYzIwZWJiMGE1ZWM4MzgxMjEzYzYyNzIyMDJmM2UyMjNiMjAyNDczNzQ3MjY5NmU2NzVmMzIyMDNkMjAyMmVhYjdiOGViODg4NGViOWU5MTIwZWM4YmI4ZWM5YWIwZWI4YmE0ZWFiMDgwMjBlYzk3YjBlYzk1YTBlYjhmODQyMGViODE5ZGViODJhY2VjOGFiNWViOGI4OGViOGJhNDIwZTM4NWEwZTM4NWEwMjAzYzYyNzIyMDJmM2UyMjNiMjAyNDczNzQ3MjY5NmU2NzVmMzMyMDNkMjAyMmVhYjdiY2ViOGRiMDIwZWM4N2JjZWQ5NTkxZWJhYWIwZWM5ZDgwMjBlYzk3YjRlYzk3ODhlYzk2YjRlYzlhOTQyMGVmYmQ5ZTI4ZWZiZmEzZTI5NmJkZWZiZmEzMjllZmJkOWUyMjNiMjA2NTYzNjg2ZjIwMjQ2NzZlNzU2MjZmNjE3MjY0MmUyMDI0NzM3NDcyNjk2ZTY3NWYzMTJlMjAyNDczNzQ3MjY5NmU2NzVmMzIyZTI0NzM3NDcyNjk2ZTY3NWYzMzNiMjA
원본소스
<?php
$gnuboard = "그누보드: ";
$string_1 = "대한민국 웹마스터의 국민 밥상!<br />";
// 생략...
echo $gnuboard. $string_1. $string_2.$string_3;
?>
eval(base64_decode()) 로 난독화 처리된 코드는 디코드가 쉽지 않을까요?
PHP 고수님들은 바로 해독 가능할 것 같은데요 ^^
그냥 태스트 코드인데요. PHP 고수님들 한번 해독 해보시겠어요? ㅎㅎ
!-->!-->
답변 3
$string_2 = "... 열었어요 ~( ̄▽ ̄)~";
PHP에서 난독화를 굳이 할 필요가 있을까 싶네요.
제가 그누보드 답변을 쭉 읽어보면 항상 질문과 다른 답변이 달리더라구요
이글도 난독화 어떻냐고 물어보니
어디 어떻게 쓸지도 모르는데 굳이 난독화가 필요하냐 ? 라는 저런 답변 하는게 참 안타깝습니다.
PHP에서 난독화가 필요없다고 하시는분은 실력이 문제일까요?
아니면 큰 사이트를 운영해보신 적이 없으신분 같네요.
그게 사실인 마냥 그렇게 말씀하시면
다른분들은 "아 ~ php는 난독,암호화 굳이 안해도 되구나." 하고 잘못생각 할 수 있으니
굳이 필요할까? 왜 굳이 쓰려고 하냐는 둥 그런말은 제발 좀 지양해주세요. 보기가 싫네요.
알고싶으니까 모르니깐 물어보겠죠 ? 근데 굳이 해야하냐고 답변 달면 무슨 의도와 심보인지 정말 궁금합니다.
거두절미하고
base64 는 암호화로 보기 어렵죠.
복호화가 매우x1000 쉽거든요.
다른 SHA256 와 같은걸로 암호화 시도해보시면 좋을거 같습니다. 복호화가 힘듭니다.
그리고 eval과 같은 php명령어는 보안상 되도록 다른걸로 대체하셔서 쓰시는게 좋습니다
SIR 제작사에서 배포한 Gnuboard 오픈 소스를 난독화하여 재배포하는 행위는 Gnuboard 제작사의 Gnu 정신과 규정에 부합이 되는지, AI 에게 이런 질문을 던져보았습니다.
Q:
그누보드는 한국 오픈소스 생태계의 한 축입니다. 코드를 난독화해 재배포하는 행위가 ‘소프트웨어 자유’와 ‘공유의 가치’를 내세운 GNU 정신과 조화될 수 있을까요?
A:
짧히 결론부터 — 대부분의 경우 그누보드 소스를 난독화(가독성을 떨어뜨리는 형태로 변형)해서 재배포하는 것은 그누보드 제작사의(그리고 GNU 계열 라이선스의) 정신과 규정에 맞지 않을 가능성이 큽니다. 아래에 이유·근거·권장 행동을 정리합니다.
핵심 이유
-
그누보드의 라이선스
그누보드(특히 v4·v5 관련)는 공식 페이지에서 오픈소스·GNU 계열(예: LGPL/GPL 계열)로 배포된다고 명시하고 있습니다. 라이선스 전문과 적용 범위를 공식 문서에서 확인해야 합니다. Sir+1 -
GPL/LGPL의 ‘소스 제공’ 요구
GPL 계열 라이선스는 배포 시 수신자가 수정·재배포·검토할 수 있도록 “사람이 읽을 수 있는 형태의 소스(=preferred form for modification)”를 제공하도록 요구합니다. 단순히 난독화된(또는 의도적으로 읽기 어렵게 만든) 소스를 제공하면 이 요건을 충족하지 못해 라이선스 위반으로 해석될 수 있습니다. FSF(과 GNU 문서)와 오픈소스 커뮤니티의 일반적 해석이 이렇습니다. gnu.org+1 -
난독화는 ‘권리 박탈’로 보일 수 있음
난독화는 기술적으로는 코드를 전달하지만, 실질적으로 수신자가 소스의 자유(읽고 수정·분배할 자유)를 행사하기 어렵게 만듭니다. 여러 법률·실무 논의는 “난독화된 소스는 GPL의 요구하는 ‘수정 가능한 원본’이 아니다”라고 봅니다. Open Source Stack Exchange+1
실무적 결론 (요약)
-
그누보드가 GPL/LGPL 계열이면: 난독화 상태로만 재배포하는 것은 라이선스 위반 또는 GNU 정신(사용자·커뮤니티의 자유 보장)에 반할 가능성이 큽니다. 재배포하려면 난독화 전의 ‘사람이 읽을 수 있는’ 원본(또는 원본을 받을 수 있는 명확한 방법)을 함께 제공해야 합니다. Sir+1
-
만약 해당 버전이 MIT/퍼미시브 라이선스라면: 난독화·재배포가 법적으로 허용될 가능성이 높습니다(라이선스 조건 확인 필요). 다만 “윤리적·커뮤니티 관점(=GNU 정신)”에서는 권장되지 않을 수 있습니다. GitHub+1
권장 행동
-
재배포하려는 **그누보드의 정확한 버전(예: v4, v5, 특정 릴리스)**의 라이선스 전문을 먼저 확인하세요(공식 사이트 또는 저장소). Sir+1
-
GPL/LGPL이면, 난독화본만 배포하지 말고 원본 소스(또는 원본을 받을 수 있는 명확한 방법)를 함께 제공하세요.
-
법적 리스크가 걱정되면 저작권/오픈소스 전문 변호사에게 문의하세요 — 라이선스 해석(특히 ‘수정 가능한 형태’ 기준)은 상황별로 달라질 수 있습니다.
원하시면 — 제가 대신 (1) 그누보드의 현재 사용 중인 정확한 버전의 라이선스 전문을 찾아 요약해 드리거나, (2) 배포 방식(난독화 + 소스 제공 방안) 예시 문구를 만들어 드릴게요. 어떤 걸 도와드릴까요?