diff --git a/tools/cache_cleaner/lang/ko.lang.php b/tools/cache_cleaner/lang/ko.lang.php
new file mode 100644
index 000000000..562e4167d
--- /dev/null
+++ b/tools/cache_cleaner/lang/ko.lang.php
@@ -0,0 +1,3 @@
+cache_cleaner = '캐시파일 재생성';
+?>
diff --git a/tools/form.html b/tools/form.html
new file mode 100644
index 000000000..da25f6c9a
--- /dev/null
+++ b/tools/form.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+ XE Tools
+
+{@ $js_files = Context::getJsFile() }
+
+
+
+
+
+
+
+
+
+{@ $css_files = Context::getCssFile() }
+
+
+
+
+
+
+
+
+
+
+
+
+ XE Tools
+
+
+
+ {$msg}
+
+
+
+
+
+ {$output}
+
+
+
diff --git a/tools/index.php b/tools/index.php
new file mode 100644
index 000000000..407a8212e
--- /dev/null
+++ b/tools/index.php
@@ -0,0 +1,66 @@
+
+ * @brief 각종 tools 목록을 보여주기 인증 시도
+ **/
+
+ /**
+ * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언
+ **/
+ define('__ZBXE__', true);
+
+ /**
+ * @brief 필요한 설정 파일들을 include
+ **/
+ require_once('../config/config.inc.php');
+
+ // id/ password/ tool 구함
+ $id = $_POST['id'];
+ $pw = $_POST['pw'];
+ $tool = $_POST['tool'];
+
+ // 저장되어 있는 비밀번호와 비교
+ $oContext = &Context::getInstance();
+ $oContext->init();
+ $db_info = $oContext->getDBInfo();
+
+ // 툴 목록을 구하고 언어파일 로그, 변수 설정
+ Context::loadLang(_XE_PATH_.'modules/install/lang');
+ $list = FileHandler::readDir(_XE_PATH_.'tools/');
+ $filters = array('index.php','style.css','form.html');
+ for($i=0;$idb_userid || $pw !== $db_info->db_password) {
+
+ if(!$tool) $msg = Context::getLang('msg_not_founded');
+ elseif($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id'));
+ else $msg = sprintf($lang->filter->equalto, Context::getLang('password'));
+
+ // tool 실행
+ } else if($id === $db_info->db_userid && $pw === $db_info->db_password) {
+
+ define('__XE_TOOL_AUTH__', true);
+ include(_XE_PATH_.'tools/'.$tool.'/'.$tool.'.php');
+ }
+
+ Context::set('msg', $msg);
+
+ $oTemplate = &TemplateHandler::getInstance();
+ print $oTemplate->compile('./tools','form');
+?>
diff --git a/tools/style.css b/tools/style.css
new file mode 100644
index 000000000..73d85fbee
--- /dev/null
+++ b/tools/style.css
@@ -0,0 +1,27 @@
+body { margin:10px !important; }
+h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; }
+hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; }
+blockquote.message { border:2px solid red; color:red; margin:0 0 10px 0; padding:10px; font-size:9pt; font-weight:bold; clear:both; }
+blockquote.output { border:2px solid blue; margin:10px 0 0 0; padding:10px; font-size:9pt; font-weight:bold; clear:both; }
+
+form { margin:0; padding:0; clear:both; overflow:hidden; }
+
+div.tools { float:left; margin-right:20px; padding-right:20px; border-right:1px dotted #AAAAAA; }
+div.tools code label { display:block; white-space:nowrap; margin-bottom:5px; font-size:9pt; }
+div.tools code label input { display:inline; }
+
+div.auth { float:left; }
+div.auth code label { font-size:9pt; }
+div.auth code { display:block; clear:both; margin-bottom:10px;}
+div.auth code label { float:left; display:block; width:100px; }
+div.auth code input { display:block; width:150px; border:1px solid #AAAAAA; }
+div.auth input.submit { width:252px; border:1px solid #AAAAAA;}
+
+div.back { font-size:9pt; text-align:right; margin-bottom:10px; }
+div.back a { text-decoration:none; color:#888888; }
+
+table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; }
+table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; }
+table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; }
+table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; }
+