이렇게 된 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 고수님들 한번 해독 해보시겠어요? ㅎㅎ
답변 2개 / 댓글 2개
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) 배포 방식(난독화 + 소스 제공 방안) 예시 문구를 만들어 드릴게요. 어떤 걸 도와드릴까요?
제가 그누보드 답변을 쭉 읽어보면 항상 질문과 다른 답변이 달리더라구요
이글도 난독화 어떻냐고 물어보니
어디 어떻게 쓸지도 모르는데 굳이 난독화가 필요하냐 ? 라는 저런 답변 하는게 참 안타깝습니다.
PHP에서 난독화가 필요없다고 하시는분은 실력이 문제일까요?
아니면 큰 사이트를 운영해보신 적이 없으신분 같네요.
그게 사실인 마냥 그렇게 말씀하시면
다른분들은 "아 ~ php는 난독,암호화 굳이 안해도 되구나." 하고 잘못생각 할 수 있으니
굳이 필요할까? 왜 굳이 쓰려고 하냐는 둥 그런말은 제발 좀 지양해주세요. 보기가 싫네요.
알고싶으니까 모르니깐 물어보겠죠 ? 근데 굳이 해야하냐고 답변 달면 무슨 의도와 심보인지 정말 궁금합니다.
거두절미하고
base64 는 암호화로 보기 어렵죠.
복호화가 매우x1000 쉽거든요.
다른 SHA256 와 같은걸로 암호화 시도해보시면 좋을거 같습니다. 복호화가 힘듭니다.
그리고 eval과 같은 php명령어는 보안상 되도록 다른걸로 대체하셔서 쓰시는게 좋습니다
답변에 대한 댓글 2개
예전에도 달달달달이 님의 도움을 받았던 것 같네요.
달달달달이 님의 털털하고 시원스러운 성격이 정말 매력적입니다.
저도 동문서답은 싫더라구요. 핵심이 잘 통하는 대화가 좋죠 ^^
내일이 추석인데요.
행복이 가득하시고, 풍성한 한가위 보내시기 바랍니다.
답변을 작성하려면 로그인이 필요합니다.
어디에도 왜 굳이 쓰려고 하냐는 말이 없다는데 ..
바로 위에 본인이 하신말
해독답변과함께 "PHP에서 난독화를 굳이 할 필요가 있을까 싶네요." 라고 하셨습니다.ㅋ;