파일형 체팅물 버그 다고친 알고리즘입니다.
송효진님의 봇알고리즘을 변형한 프로텍션함수도 포함되어있습니다.
송효진님 , 칼솜님 , 공대여자는이쁘다님 의 라이센스가 붙여져있습니다. - 결재 : ???원
송효진님 칼솜님 공대여자는이쁘다 세분모두를 사랑하셔야 사용하실수있습니다.
아래는 더하고뺄꺼없는 소스이며, 링크1번을통해 테스트하실수있습니다.
자료받기로 받아가세요.
<? session_start();
########################################################################################################################
$ajaxtime = 1250; //ajax를 흉내낸 PHP 의 알아낼 시간 간격입니다. 다량트래픽이 유발될경우 값을 높여주십시오.(단위 : 밀리초) $height = 400; //채팅창(내용) 부분의 높이 - 단위 : px (pixel) $color = "#000000"; //채팅방 전체의 배경색깔 * $fontcolor = "white"; //글꼴 색깔 * $fontsize = 9; //글꼴 크기 - 단위 : pt (point) $font = "Gulim"; //글꼴 $delif = 300; //일정 줄 수가 도달하면 초기화 $adtime = 100000; //광고가 뜰 확률입니다. 1부터 입력이 가능합니다. 1에 가까운 숫자일수록 뜰 확률이 높아집니다. 자동조정은 0 입력! $deny="fuck,FUCK,FUCKYOU,fuckyou,fuck you,FUCK YOU,BOZI,bozi,BOZZI,bozzi,sex,SEX,ㅅ1발,씨발,히밤,시발,개새끼,씹새끼,십새끼,좃,보지,잠지,자지,섹스,딸딸이,10새,10새기,10새리,10세리,10쉐이,10쉑,10스,10쌔,10쌔기,10쎄,10알,10창,10탱,18것,18넘,18년,18노,18놈,18뇬,18럼,18롬,18새,18새끼,18색,18세끼,18세리,18섹,18쉑,18스,18아,c파,c팔,fuck,ㄱㅐ,ㄲㅏ,ㄲㅑ,ㄲㅣ,ㅅㅂㄹㅁ,ㅅㅐ,ㅆㅂㄹㅁ,ㅆㅍ,ㅆㅣ,ㅆ앙,ㅍㅏ,凸,갈보,갈보년,강아지,같은년,같은뇬,개같은,개구라,개년,개놈,개뇬,개대중,개독,개돼중,개랄,개보지,개뻥,개뿔,개새,개새기,개새끼,개새키,개색기,개색끼,개색키,개색히,개섀끼,개세,개세끼,개세이,개소리,개쑈,개쇳기,개수작,개쉐,개쉐리,개쉐이,개쉑,개쉽,개스끼,개시키,개십새기,개십새끼,개쐑,개씹,개아들,개자슥,개자지,개접,개좆,개좌식,개허접,걔새,걔수작,걔시끼,걔시키,걔썌,걸레,게색기,게색끼,광뇬,구녕,구라,구멍,그년,그새끼,냄비,놈현,뇬,눈깔,뉘미럴,니귀미,니기미,니미,니미랄,니미럴,니미씹,니아배,니아베,니아비,니어매,니어메,니어미,닝기리,닝기미,대가리,뎡신,도라이,돈놈,돌아이,돌은놈,되질래,뒈져,뒈져라,뒈진,뒈진다,뒈질,뒤질래,등신,디져라,디진다,디질래,딩시,따식,때놈,또라이,똘아이,똘아이,뙈놈,뙤놈,뙨넘,뙨놈,뚜쟁,띠바,띠발,띠불,띠팔,메친넘,메친놈,미췬,미췬,미친,미친넘,미친년,미친놈,미친새끼,미친스까이,미틴,미틴넘,미틴년,미틴놈,바랄년,병자,뱅마,뱅신,벼엉신,병쉰,병신,부랄,부럴,불알,불할,붕가,붙어먹,뷰웅,븅,븅신,빌어먹,빙시,빙신,빠가,빠구리,빠굴,빠큐,뻐큐,뻑큐,뽁큐,상넘이,상놈을,상놈의,상놈이,새갸,새꺄,새끼,새새끼,새키,색끼,생쑈,세갸,세꺄,세끼,섹스,쇼하네,쉐,쉐기,쉐끼,쉐리,쉐에기,쉐키,쉑,쉣,쉨,쉬발,쉬밸,쉬벌,쉬뻘,쉬펄,쉽알,스패킹,스팽,시궁창,시끼,시댕,시뎅,시랄,시발,시벌,시부랄,시부럴,시부리,시불,시브랄,시팍,시팔,시펄,신발끈,심발끈,심탱,십8,십라,십새,십새끼,십세,십쉐,십쉐이,십스키,십쌔,십창,십탱,싶알,싸가지,싹아지,쌉년,쌍넘,쌍년,쌍놈,쌍뇬,쌔끼,쌕,쌩쑈,쌴년,썅,썅년,썅놈,썡쇼,써벌,썩을년,썩을놈,쎄꺄,쎄엑,쒸벌,쒸뻘,쒸팔,쒸펄,쓰바,19금,지/랄,시/발,병/신,병신,빙신,뷩신,븅신,또라이,또롸이,십구세,십구,쉽구,애자,뮈췬,시 발,장 애,애 자,ㅅㅂ,ㅄ,ㅂㅅ,凸,쓰박,쓰발,쓰벌,쓰팔,멍청이,씁새,씁얼,씌파,씨8,씨끼,씨댕,씨뎅,씨바,씨바랄,씨박,씨발,씨방,씨방새,씨방세,씨밸,씨뱅,씨벌,씨벨,씨봉,씨봉알,씨부랄,씨부럴,씨부렁,씨부리,씨불,씨붕,씨브랄,씨빠,씨빨,씨뽀랄,씨앙,씨파,씨팍,씨팔,씨펄,씸년,씸뇬,씸새끼,씹같,씹년,씹뇬,씹보지,씹새,씹새기,씹새끼,씹새리,씹세,씹쉐,씹스키,씹쌔,씹이,씹자지,씹질,씹창,씹탱,씹퇭,씹팔,씹할,씹헐,아가리,아갈,아갈이,아갈통,아구창,아구통,아굴,얌마,양넘,양년,양놈,엄창,엠병,여물통,염병,엿같,옘병,옘빙,오입,왜년,왜놈,욤병,육갑,은년,을년,이년,이새끼,이새키,이스끼,이스키,임마,자슥,잡것,잡넘,잡년,잡놈,저년,저새끼,접년,젖밥,조까,조까치,조낸,조또,조랭,조빠,조쟁이,조지냐,조진다,조찐,조질래,존나,존나게,존니,존만,존만한,좀물,좁년,좁밥,좃까,좃또,좃만,좃밥,좃이,좃찐,좆같,좆까,좆나,좆또,좆만,좆밥,좆이,좆찐,좇같,좇이,좌식,주글,주글래,주데이,주뎅,주뎅이,주둥아리,주둥이,주접,주접떨,죽고잡,죽을래,죽통,쥐랄,쥐롤,쥬디,지랄,지럴,지롤,지미랄,짜식,짜아식,쪼다,쫍빱,찌랄,창녀,캐년,캐놈,캐스끼,캐스키,캐시키,탱구,팔럼,퍽큐,호로,호로놈,호로새끼,호로색,호로쉑,호로스까이,호로스키,후라들,후래자식,후레,후뢰,8억,새끼,개새끼,소새끼,병신,지랄,씨팔,십팔,니기미,찌랄,지랄,쌍년,쌍놈,빙신,좆까,니기미,좆같은게,잡놈,벼엉신,바보새끼,씹새끼,씨발,씨팔,시벌,씨벌,떠그랄,좆밥,추천인,추천id,추천아이디,추천id,추천아이디,추/천/인,쉐이,등신,싸가지,미친놈,미친넘,찌랄,죽습니다,님아,님들아,씨밸넘";//욕설 필터링 리스트 ########################################################################################################################
//header의 Expires 설정용 구문 header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");
// W3C P3P 규약설정 header ("P3P : CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"");
// no-cache 설정. header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache");
# register_globals = Session 정의. ini_set('register_globals','1'); ini_set('session.bug_compat_42','1'); ini_set('session.bug_compat_warn','0'); ini_set('session.auto_start','1');
//header의 만료시기 안뜨게 설정. unset($REQUEST_METHOD);
//버젼 및 한글화 루틴. $ev = "euc-kr"; $ver = "3.0";
//euc-kr 인지아닌지 검사루틴. function check_inc($msg) { $len = strlen($msg); $stepsize = 1; for($i=0; $i<$len; $i = $i + $stepsize){ if( (ord($msg[$i]) & 0x80) == 0x80 ){ //깨진 캐릭터 if( ord($msg[$i+1]) == 0x00 ){ return true; }
//euckr 범위에 있는지도 검사 if(!( ord($msg[$i]) >= 0xB0 && ord($msg[$i]) <= 0xC8 && ord($msg[$i+1]) >= 0xA1 && ord($msg[$i+1]) <= 0xFE )){ return true; }
$stepsize = 2; }else{ $stepsize = 1; } } return false; }
// 한글자르기 함수 function cut_str($msg,$len,$_deleted) { if(strlen($msg) > $len) { $msg = substr($msg, 0, $len + 1); $end = $len; while(ord($msg[$end]) > 127) $end--; if(($len - $end) % 2){ $msg = substr($msg, 0, $len)."..";} else {$msg .= "..";} function substr_kr($str,$start,$len,$last) { if (strlen($str) < $len) return $str; $str_kr = trim(substr($str,$start,$len)); if (! ( strlen(str_replace(" ","..",$str_kr)) % 2 ) ) return $str_kr.$last; else return substr($str_kr,0,$len -1).$last; } } return $msg; }
// 전역변수 초기화. @extract($_GET); @extract($_POST); @extract($_SERVER); @extract($_COOKIE); @extract($_REQUEST);
if (isset($HTTP_POST_VARS) && !isset($_POST)) { $_POST = &$HTTP_POST_VARS; $_GET = &$HTTP_GET_VARS; $_SERVER = &$HTTP_SERVER_VARS; $_COOKIE = &$HTTP_COOKIE_VARS; $_ENV = &$HTTP_ENV_VARS; $_FILES = &$HTTP_POST_FILES;
if (!isset($_SESSION)) $_SESSION = &$HTTP_SESSION_VARS; }
// 익스와 넷스케이프일때 처리 if(eregi("msie",$HTTP_USER_AGENT)) $browser="1";else $browser="0"; { // 파이어폭스 처리 if(eregi("Firefox",$HTTP_USER_AGENT)) $browser="1"; else $browser="0"; // 오페라 처리 if(eregi("Opera",$HTTP_USER_AGENT)) $browser="1"; else $browser="0"; // 모잘라 처리 if(eregi("Mozilla",$HTTP_USER_AGENT)) $browser="1"; else $browser="0"; }
//사이즈를 넷쓰와 익스일때 구분하여 리턴 function size($dbo) { global $browser; if(!$browser) return " size=".($dbc)." "; else return " size=$dbc "; } function size2($dbo) { global $browser; if(!$browser) return " cols=".($dbc)." "; else return " cols=$dbc "; }
//경로를 벗어나면 다시 확장자명 으로 잡아주는 필터링. if(getenv("REQUEST_METHOD") == $_SERVER['PHP_SELF']);
// 디렉토리를 검사함 if(!is_dir("log_data/")) { @mkdir("log_data/",0777); @chmod("log_data/",0706); echo "빈 화면이 보이시면, 새로고침을 하여주세요. [로그데이타 폴더생성 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; return; } if(!is_dir("msg_ban/")) { @mkdir("msg_ban/",0777); @chmod("msg_ban/",0706); echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴리스트 폴더생성 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; return; } if(!is_dir("con_user/")) { @mkdir("con_user/",0777); @chmod("con_user/",0706); echo "빈 화면이 보이시면, 새로고침을 하여주세요. [현재접속자폴더생성 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; return; } // 아이피 강퇴 파일 만들기. if(!file_exists("msg_ban/_ban.dat")) { echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴 아이피파일 생성 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; $ban = @fopen("msg_ban/_ban.dat", "a+"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; return; } // htaccess 생산. if(!file_exists("msg_ban/.htaccess")) { echo "빈 화면이 보이시면, 새로고침을 하여주세요. [강퇴작업폴더 보안패치 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; $ban = fopen("msg_ban/.htaccess", "w+"); @fwrite($fpu0, "RewriteEngine On RedirectMatch /(.*)$ about:blank forcetype application/octet-stream"); return; } if(!file_exists(".htaccess")){ echo "빈 화면이 보이시면, 새로고침을 하여주세요. [채팅프로그램 보안패치 작업화면]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; $index = fopen(".htaccess", "w+"); @fwrite($fpu0, "RewriteEngine On RedirectMatch /(.*)$ about:blank forcetype application/octet-stream"); return; } //자동봇 탐지 프로텍팅 엔진. if(!($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' && $_SERVER['HTTP_USER_AGENT'] == 'Shockwave Flash')) { if($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { if($_SERVER['HTTP_X_FORWARDED_FOR'] != 'HTTP_X_FORWARDED_FOR' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { if($_SERVER['SERVER_PROTOCOL'] != 'HTTP_X_FORWARDED_FOR' || !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { if(count($_POST) != 0) { $fp = fopen('./log_data/postdata.txt', 'a'); fwrite($fp, $_SERVER['REMOTE_ADDR']."\n"); fwrite($fp, print_r($_POST, true)); fwrite($fp, print_r($_GET, true)); fwrite($fp, print_r($_SERVER, true)); fwrite($fp, "---------------------\n"); fclose($fp); exit; } if(!preg_match('/BlackBerry|Daum|EMPAS\.ROBOT|Gigabot|Googlebot|NaverBot|Snapbot|Speedy\|SurveyBot|Twiceler|Yahoo|Yeti|MFeedBot|msnbot|webcollage|yoofind|xMind|BrightCrawler|NimbleCrawler|StackRambler|SurveyBot|ia_archiver/', $_SERVER['HTTP_USER_AGENT'])) { $fp = fopen('./log_data/agents.txt', 'a'); fwrite($fp, $_SERVER['HTTP_USER_AGENT']."\n"); fwrite($fp, $_SERVER['REMOTE_ADDR']."\n"); fwrite($fp, "---------------------\n"); fclose($fp); echo " <script language=javascript> alert('크로스경비병 입니다. 다음과 같은 제약으로 접속하실수없습니다.\\n\\n인터넷 옵션 에서 프록시 설정을 제거하셔야 접속하실 수 있습니다.'); history.go(-1); </script>"; } exit; } } } }
//동시접속 차단 프로텍션. $IP=$_SERVER['REMOTE_ADDR']; setcookie ("IP","$IP",0,"/"); $_POST['IP'] = serialize($IP); if(isset($_POST['$IP'])) $IP = $_POST['IP']; if(isset($_COOKIE['IP'])&&$_COOKIE['IP']/2>=1) { if(count($_POST) != 0) { if(!file_exists($IP.".dat")) { echo "빈 화면이 보이시면, 새로고침을 하여주세요. [동시접속 차단 프로텍션 작동.]"; echo "<meta http-equiv='refresh' content='3;url=./msg.php#ad'>"; $IP_ADDRES = @fopen($IP.".dat", "a+"); @fwrite($IP_ADDRES, print_r($_SERVER['REMOTE_ADDR']." \n", true)); @fwrite($IP_ADDRES,date("Y-m-d H:i:s")." \n",true); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; return; } } }
//동시접속 처리 알고리즘. [아이피와 현재시간과 이전시간 비교] /* $IP_ADDRES = @fopen($IP.".dat","r"); $IP_ADDRES = @fread($IP_ADDRES, filesize($IP.".dat")); $old_day = date("Y m d H i s", $IP.".dat"); $old_day = @fopen($IP.".dat", "r"); $new_day = date('Y-m-d H:i:s'); $old_day = @strtotime($old_day); $new_day = @strtotime($new_day); if ($old_day < $new_day) { if ($_SERVER['REMOTE_ADDR']&&$_SERVER['REMOTE_ADDR']) { if(date("Y-m-d H:i:s")<=$IP_ADDRES) { print('본 사이트에 이중 접속을 하셨습니다. 혹은 지원되지않은 환경이라 볼수없습니다. 관리자에게 문의하세요!'); print('네이트 Msn - yangws13@nate.com 으로 연락주시면 됩니다.'); exit; } } }else { print('처음접속을 환영합니다.'); } */
//아이피 블랙리스트 접근 감시 루틴. $banlist = @fopen("./msg_ban/_ban.dat", "r"); while(!feof($banlist)){ $dlist .= fgets($banlist);} if(@eregi($_SERVER[REMOTE_ADDR],$dlist)){echo "$_SERVER[REMOTE_ADDR]"." 님께서는, 아이피 강퇴 되셨습니다."; exit; }
//동시접속 접근 감시 루틴. /* $banlist = @fopen($IP.".dat","r"); while(!@feof($banlist)){ $dlist .= @fgets($banlist);} if(@eregi((date("Y-m-d H:i:s").$dlist))){echo "$_SERVER[REMOTE_ADDR]"." 님께서는, 이중으로 접속하여 종료합니다."; exit; } */
// 현재접속자 루틴함수. $r_time = 15; // 화면 갱신 간격 (초) $w_time = 20; // 접속 지연 시간 (초) $FILE = @fopen("con_user/$REMOTE_ADDR","w+"); // 현재 IP를 파일명으로 지정 (쓰기 모드) $info = time(); @fputs($FILE,$info); @fclose($FILE); $user[] = $REMOTE_ADDR; if(!$user){ $user=$_SERVER['REMOTE_ADDR']; $user= explode(".",$value); $user = $user[0].".".$user[1].".x.".$user[3]; } $USER1 = opendir("con_user"); while($entry=readdir($USER1)) if($entry!="."&&$entry!="..") { if ($REMOTE_ADDR != $entry) { $info = file("con_user/$entry"); if((time()-$w_time)>chop($info[0])) @unlink("con_user/$entry"); else $user[] = $entry; } } $total_user = count($user); $ip = implode("\n",$user);
// 전역변수 점검. $ext_arr = array ('PHP_SELF', '_ENV', '_GET', '_POST', '_FILES', '_SERVER', '_COOKIE', '_SESSION', '_REQUEST', 'HTTP_ENV_VARS', 'HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_POST_FILES', 'HTTP_SERVER_VARS', 'HTTP_COOKIE_VARS', 'HTTP_SESSION_VARS', 'GLOBALS'); $ext_cnt = count($ext_arr); for ($i=0; $i<$ext_cnt; $i++) { // GET 으로 선언된 전역변수가 있다면 unset() 시킴 if (isset($_GET[$ext_arr[$i]])) unset($_GET[$ext_arr[$i]]); }
if(!$adtime){ $adtime = round(($ajaxtime/4)*$fontsize,0)*3; $adtime = $adtime*round($height/8,0); $adtime = round($adtime/6,0); }
if($_GET['allview']){ ?> <meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" /> <meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" /> <meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" /> <style type='text/css'> * {background-color: <?=$color?>;font-size:<?=$fontsize?>pt;margin:1px;color:<?=$fontcolor?>;font-family:<?=$font?>} </style> <title>:: 전체내용보기 :: <?=$_SERVER['PHP_SELF']?></title> <div style='text-align:center;font-weight:bold;font-size:12pt'>전체내용보기</div> <? $dbo = @fopen("./memo.dat", "r"); $db = @fread($dbo, filesize("./memo.dat")); $db = explode("\n", $db);
$dbc = count($db);
for($i=0;$i<$dbc;$i++){ //for 시작 if(!$a && $db[$i]){ //if 시작 $namesave = $db[$i]; echo "<font style='font-size:8pt'>name</font><b>".$db[$i]."</b> | "; $a="1"; }else if($a=="1"){ //else if시작 $a="2"; echo $db[$i]; }else{$sss=$dbc-1; if($i==($sss)){echo "<a name='ad'></a>";} //else if 시작 $a="";if($db[$i]){if(eregi("-/",$namesave)){$db[$i]="관리자_".$db[$i];}} echo " <font style='font-size:8pt;color:yellow'>(".$db[$i].")</font><br />";} }
exit;}
if($_GET['getdat']){ ?> <meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" /> <meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" /> <meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" /> <meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" /> <script type='text/javascript'>/*![CDATA[*/setTimeout("location.reload();",<?=$ajaxtime?>);/*}}>*/</script> <? if($_SESSION['size']!=filesize("memo.dat")){ ?> <script type='text/javascript'>/*![CDATA[*/parent.chatframe.location.reload();top.document.title='새 글이 올라왔습니다!';/*}}>*/</script> <? } $_SESSION['size']=filesize("memo.dat"); exit; }
if($_GET['out']){ $dbsa = @fopen("./memo.dat", "a"); unlink($IP.".dat"); fwrite($dbsa, "**>퇴장안내 \n ".$_SESSION['n']." 님이 퇴장하셨습니다! \n ".date("Y-m-d H:i:s")." \n"); $_SESSION['lt']="";$_SESSION['n']=""; echo "<script type='text/javascript'>self.close()</script>";exit; } $denys=explode(",",$deny); $dcount = count($denys);
//광고 메커니즘. if(!$_GET['ok']){ $dbs = @fopen("./memo.dat", "a"); $ra = rand(0,$adtime); if($ra==0){ fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>웹해킹 게임이있는 그곳!</a>\n 1번광고 \n"); } if($ra==1){ fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>공개용 크리스 경비병 다운로드!</a>\n 2번광고 \n"); } if($ra==2){ fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>Php 자료 가 풍부한 그곳 !</a>\n 3번광고 \n"); } if($ra==3){ fwrite($dbs, "- 광고 : \n <a href='http://yangws.myfeelclub.com' target='_d' style='font-weight:bold;color:blue;background:white'>Javascript 가 풍부한 그곳!</a>\n 4번광고 \n"); } if($ra==4){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:blue;background:white;cursor:normal'>관리자는 이름 앞에 '-/' 이 붙습니다!</a>\n @공지@ \n"); } if($ra==5){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>본 계정은 마이필 클럽계정에 종속되어 있습니다.</a>\n @공지@ \n"); } if($ra==6){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>항상 즐거운 해킹 되세요 감사합니다.</a>\n @공지@ \n"); } if($ra==7){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>불법 해킹은 몸에 해롭습니다. 건전한 화이트 해커가 되세요.</a>\n @공지@ \n"); } if($ra==8){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>트레이닝 문제의 정답을 기록하시면 안됩니다. 강력조치합니다!</a>\n @공지@ \n"); } if($ra==9){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:red;background:white;cursor:normal'>본사이트 주소는 http://yangws.myfeelclub.com 입니다.</a>\n @공지@ \n"); } if($ra==10){ fwrite($dbs, "-- 참고 : \n <a style='font-weight:bold;color:blue;background:white;cursor:normal'>오늘도 좋은 하루와 운이 함께하시길 바랍니다.</a>\n @공지@ \n"); } }
//채팅방 청소 기능. if($_GET['reset']&&$_SESSION['lt']){ @unlink("memo.dat"); $d = fopen("memo.dat", "w"); fwrite($d, "<div align='center' style='font-weight:bold;color:blue;background:white'>* * 관리자에 의해 초기화 되었습니다. * *</div>"); echo "<script type='text/javascript'>alert('초기화 되었습니다!');location.href='msg.php#ad';</script>"; exit;} //로그아웃 기능. if($_GET['logout']){ $_SESSION['lt']=""; echo "<script type='text/javascript'>alert('로그아웃 되었습니다!');location.href='msg.php#ad';</script>"; exit;} if(NULL==file_exists("memo_pwd.dat") && $_GET['pwd']){ $d = fopen("memo_pwd.dat", "w"); $p = $_GET['pwd']; $p = md5($p); fwrite($d, $p); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit;} if(NULL==file_exists("memo_pwd.dat")){ ?> <!-- chatting Install Mode --> <form method='get' action='msg.php'> 사용할 비번 : <input type='text' name='pwd' /><input type='submit' value='설치' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:8pt' /> </form> <? exit;}
//로그인 기능. if($_GET['login']){ $fp = fopen("memo_pwd.dat", "r"); $fps = fread($fp, filesize("memo_pwd.dat")); $ls = $_GET['login']; $ls = md5($ls); echo "관리자 모드로 로그인중입니다..."; if(strchr($ls,$fps)){ $_SESSION['lt']="ADMIN"; echo "로그인성공!<script type='text/javascript'>alert('로그인되셨습니다!');location.href='msg.php#ad';</script>"; }else{ echo "<script type='text/javascript'>alert('비밀번호가 일치하지 않습니다!');location.href='msg.php#ad';</script>"; } exit;} //리스트 목록 보여주기. if($_GET['reset']&&$_SESSION['lt']){ unlink("memo.dat"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit;} ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?=$ev?>" /> <meta http-equiv="Page-Enter" content="BlendTrans(Duration=0.2)" /> <meta http-equiv="Page-exit" content="BlendTrans(Duration=0.5)" /> <title>:: [채팅방] :: <?=$_SERVER['PHP_SELF']?></title> <!-- 폰트Size 설정부분. --> <style type='text/css'> * {background-color: <?=$color?>;font-size:<?=$fontsize?>pt;margin:1px;color:<?=$fontcolor?>;font-family:<?=$font?>} </style> <!-- 밑줄 없애기 설정부분. --> <style type='text/css'> <!-- a { font-family: ''; text-decoration: none} --> </style>
<!-- 프레임 자동 조절 --> <script language="javascript" src="http://".util_get_host()."/pass/resizeiframe.js"></script>
<!-- 리프레쉬 Ajax --> <script type='text/javascript'> /*![CDATA[*/ var isie = (document.all)? 1:0; var xmlHttp = true; var strc = ''; if(isie){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ // if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); }
function getData(dataSource) { if(xmlHttp) { xmlHttp.open('POST', dataSource, true); xmlhttp.setRequestHeader("Content-type", "application/x-www-urlencoded; charset=euc-kr"); xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState=='4' && xmlHttp.status=='200' || xmlHttp.responseText){ strc = xmlHttp.responseText; } } xmlHttp.send(); } } setTimeout("getData('msg.php')", 5000); /*}}>*/ </script>
<!-- 제목 타이틀 설정부분. --> <script type='text/javascript'>/*![CDATA[*/ setTimeout("title()", 1500); function title(){ var ttle = ":: [채팅방] :: <?=$_SERVER['PHP_SELF']?>"; document.title = ttle; setTimeout("title()", 1500); }
function login(){ d = document.getElementById('c').value; location.href='?login='+d; }
function sout(){ var s = window.open('msg.php?out=1'); s.focus(); self.close(); } /*}}>*/ </script> <!-- 넷스케이프 사용자 입장금지. --> <script> function enterance() { if (navigator.appName == "navigator.appName" || navigator.appName == "Netscape"){ alert('넷스케이프 사용자는 입장할 수 없습니다'); return; } else { location='./link.html'; } } </script> <!-- 특수키 키보드 막기. --> <script> function keydown(){ if(event.keyCode==122 || event.altKey==true || event.altLeft==true){ event.keyCode=0; event.cancelBubble = true; event.returnValue = false; alert('이 특수키는 사용할 수 없습니다.'); } } document.onkeydown=keydown; </script>
<!-- 특수키 키보드 막기. --> <script> function cancelRefresh() { // keycode for F5 function if (window.event && window.event.keyCode == 116) { window.event.keyCode = 8; } } </script>
</head> <? if($_GET['content']){ //echo "<body onload=\"parent.document.getElementById('c').focus()\" />"; ?> <script type='text/javascript'> window.onload=function(){ var pagebottom = document.body.scrollHeight; window.scrollTo(0, pagebottom); }</script> <? //메모 파일 접근, 셋팅된 내용갯수 파악후 초기화 루틴. $dbo = @fopen("./memo.dat", "r"); $db = @fread($dbo, filesize("./memo.dat")); $db = explode("\n", $db);
$dbc = count($db);
if($dbc>($delif*3)){ unlink("memo.dat"); $d = fopen("memo.dat", "w"); fwrite($d, "<div align='center' style='font-weight:bold;color:blue;background:white'>* * * 관리자가 '$delif'개 까지의 채팅내용을 저장하도록 지정하여, 서버에 의해 내용이 삭제되었습니다. * * *</div>"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit; }
for($i=0;$i<$dbc;$i++){ if(!$a && $db[$i]){ $namesave = $db[$i]; echo "<font style='font-size:8pt'>name</font><b>".$db[$i]."</b> | "; $a="1"; }else if($a=="1"){ $a="2"; echo $db[$i]; }else{$sss=$dbc-1; if($i==($sss)){echo "<a name='ad'></a>";} $a="";if($db[$i]){if(eregi("-/",$namesave)){$db[$i]="관리자_".$db[$i];} echo " <font style='font-size:8pt;color:yellow'>(".$db[$i].")</font><br />";} } }
exit;} if(!$_GET['ok']){?> <!-- 메뉴 삽입구역 --> <div align="center"> <table width="298" cellspacing="0" style="border-width:1; border-color:rgb(51,51,51); border-style:ridge; border-collapse:collapse;" cellpadding="0" border="0" height="23"> <tr> <td width="1" height="2"></td> <td width="97" height="2"></td> <td width="103" height="2"></td> <td width="95" height="2"></td> </tr> <tr> <td width="1" height="21"></td> <td width="96" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">
<p align="center"><b><a href="http://yangws.myfeelclub.com/bbs/zboard.php?id=PassBbs" title="경비병 게시판 으로 이동합니다 !"><span style="font-size:10pt;"><font color="white">자유게시판</font></span></a></b></p> </td> <td width="102" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">
<p align="center"><b><a href="http://yangws.myfeelclub.com/bbs/zboard.php?id=query_Q" title="경비병 트레이닝 문제를 시작합니다 !"><span style="font-size:10pt;"><font color="white">트레이닝 문제</font></span></a></b></p> </td> <td width="94" style="border-width:1; border-color:rgb(51,51,51); border-style:groove;" height="21">
<p align="center"><b><a href="http://yangws.myfeelclub.com/pass/msg.php" title="크리스 경비병 체팅방으로 이동합니다."><span style="font-size:10pt;"><font color="white">채팅방접속</font></span></a></b></p> </td> </tr> </table> <!-- 메뉴 삽입 여기까지 --> </div> <body onload="document.getElementById('c').focus()" /> <!-- iframe 출력 부분 --> <iframe src='?content=1#ad' id='chatframe' name='chatframe' width='98%' height='<?=$height?>px' frameborder='0' scrolling='yes' style='overflow-x:hidden'> <iframe src='?getdat=1' style='display:none' width='1px' height='1px'></iframe> <form method='post' action='?ok=ok&frame=1'> <? //사용자 입장 출력 기능. if(!$_SESSION['n']){ $_tmp = substr(md5($_SERVER['REMOTE_ADDR']),0,6); $_SESSION['n']=$_tmp.rand(1000,9999); if(!$_GET['ok']){ $dbsa = @fopen("./memo.dat", "a"); fwrite($dbsa, "**>입장안내 \n ".$_SESSION['n']." 님이 입장하셨습니다! \n ".date("Y-m-d H:i:s")." \n"); } } ?> <script type='text/javascript'>/*<![CDATA[*/ setTimeout("document.getElementById('c').focus()",800); /*]]>*/</script>
<!-- Adtime : <?=$adtime?> [sec(s)] --> <!-- 입력 받을부분 메뉴 --> <input type='text' name='n' size='10' value='<?=$_SESSION['n']?>' style='border: solid 1px white' /><input type='text' id='c' name='c' value='<?=$_GET['bak_c']?>' size='50' style='border: solid 1px white' /><input type='submit' onclick='check()' value='입력' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:8pt'/> <?if(!$_SESSION['lt']){?> <!-- 관리자로그인 받을부분 메뉴 --> <input type='button' onclick='login()' value='Login' title='관리자로그인(비번입력후)' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' /> <?}else{?> <!-- 관리자 메뉴 명령어 받을부분 메뉴 --> <input type='button' onclick="location.href='?logout=1'" title='로그아웃' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' value='Logout' /> <input type='button' onclick="location.href='?reset=1'" title='내용 초기화' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:6pt' value='Reset' /> <?}?> <!-- 기타 메뉴 받을부분 메뉴 --> <input type='button' onclick="var win=window.open('?allview=1');win.focus()" title='전체내용보기' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:9pt' value='전체내용보기' /> <input type='button' onclick="sout()" title='나가기' style='border: solid 1px #CCCCCC;font-weight:bold;font-size:9pt' value='나가기' /> <br />최대 80Bytes 까지 작성가능합니다. </form> <?}else{ $dbs = @fopen("./memo.dat", "a");
//악성 스크립트 문자열로 바꾸기 루틴. global $n, $c; $n = stripslashes($_POST['n']); $c = stripslashes($_POST['c']);
// notice_! 명령어 실행시... if($_SESSION['lt'] && eregi("notice_!",$c)){ $c = str_replace("notice_!", "", $c); fwrite($dbs, "<font style='color:yellow'>★공★지★</font> \n <font style='font-weight:bold;color:red;background:white;font-size:10pt'>".$c."</font> \n (".date("Y-m-d H:i:s").") \n"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit; } //ban_! 명령어 실행시... if($_SESSION['lt']&&eregi("ban_!",$c)){ $c = str_replace("ban_!", "", $c); $c = str_replace(" ", "", $c); $c = str_replace("abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+|","",$c); if(!filesize("msg_ban/_ban.dat")){$dabs = fopen("msg_ban/_ban.dat", "w+");fwrite($dabs, "_\n");fclose($dabs);} $ban = fopen("msg_ban/_ban.dat", "a+"); fwrite($ban, $c."\n"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; }
// ban_cls_! 명령어 실행시... if($_SESSION['lt'] && eregi("ban_cls_!",$c)){ $c = str_replace("ban_cls_!", "", $c); $c = str_replace(" ", "", $c); if($c!="all"){ $dlist = str_replace($c."\n", "", $dlist); }else{$dlist="\n";} $ban_cless = fopen("msg_ban/_ban.dat", "w"); fwrite($ban_cless, $dlist); fclose($ban_cless); fwrite($dbs, "<font style='color:yellow'>★알★림★</font> \n <font style='font-weight:bold;color:blue;background:white;font-size:10pt'>강퇴된 아이피가 초기화 되었습니다.</font> \n (".date("Y-m-d H:i:s").") \n"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit; }
if(!$_SESSION['lt']){$n = strip_tags(substr($n,0,15));}
//도배 방지기능 함수. if(!$_SESSION['last_content'])$_SESSION['last_conetnt']= sha1(md5(rand(0,300))); if(!$_SESSION['last_num'])$_SESSION['last_num']=0;
if(@eregi($_SESSION['last_content'],$c) && $_SESSION['last_content']){ $_SESSION['last_content'] = $c; $_SESSION['last_num']++; if($_SESSION['last_num']>4){ $_SESSION['last_num']=0; echo "<script type='text/javascript'>alert('도배방지 솔루션이 작동하였습니다!');location.href='{$_SERVER[HTTP_REFERER]}';</script>"; exit; } } $_SESSION['last_content'] = $c;
// 빈문자열 경우 리턴 function isblank($str) { $c=str_replace(" ","",$c); $c=str_replace("\n","",$c); $c=strip_tags($c); $c=str_replace(" ","",$c); $c=str_replace(" ","",$c); if(eregi("[^[:space:]]",$c)) return 0; return ; }
//부적절한 루틴 필터링 함수. $c = str_replace("&", "&", $c); $n = str_replace("ⓒ", "©", $n);
$c = str_replace("ː", "", $c); $n = str_replace("ː", "", $n);
$c = str_replace("\n", "", $c); $n = str_replace("\n", "", $n);
$c = str_replace("<", "<", $c); $n = str_replace("<", "<", $n);
$c = str_replace(">", ">", $c); $n = str_replace(">", ">", $n);
// 한글자르기 루틴. if(strlen($c)>80 && !eregi("http://([^\"'<>\r\n\s+)`i",$c))$c = cut_str($c,80,2); else if(strlen($c)>80 && !eregi("http://([^\"'<>\r\n\s+)`i",$c))$c = substr_kr($c,80,2);
$c = preg_replace("`http://([^\"'<>\r\n\s]+)`i", "<a target='_blank' title='링크로 이동' href='http://$1'>http://$1</a>", $c);
// URL, Mail을 자동으로 체크하여 링크만듬 function autolink($c) { // URL 치환 $index_pattern = "/([^\"\'\=\>])(mms|http|HTTP|ftp|FTP|telnet|TELNET)\:\/\/(.[^ \n\<\"\']+)/"; $c = preg_replace($index_pattern,"\\1<a href=\\2://\\3 target=_blank>\\2://\\3</a>", $c);
// 메일 치환 $email_pattern = "/([ \n]+)([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/"; $c = preg_replace($email_pattern,"\\1<a href=mailto:\\2@\\3>\\2@\\3</a>", $c);
return $c; }
// 홈페이지 주소가 올바른지 검사 function isHomepage( $c ) { if(eregi("^http://([a-z0-9\_\-\./~@?=&-\#{5,}]+)", $c)) return $c; else return ; }
//if(!$c){$c="<b>내용을 입력하십시오!</b>";} if(!$c){echo "<script type='text/javascript'>alert('메시지를 입력하세요.'); location.href='{$_SERVER[HTTP_REFERER]}';</script>";exit;} if(!$n){$n="NoName".rand(0,99999);}
//관리자가 아닐때... if(eregi("-/",$n) && !$_SESSION['lt']){ $n ="사칭_".rand(0,99999); } //관리자 표시... if($_SESSION['lt']){ if(!eregi("-/",$n))$n="-/".$n; }
//욕설일경우, 욕설 루틴 실행. for($den=0;$den<=$dcount;$den++){ if(@eregi($denys[$den],$c)){ $denstr = round(strlen($denys[$den])/2,0); $denr="[욕설_"; for($dst=1;$dst<=$denstr;$dst++){$denr=$denr."*";} $denr=$denr."_욕설]"; $c = str_replace($denys[$den], $denr, $c); break; } }
//euc-kr 및 uft-8 인코딩 엔진 function ToEucKr( $msg){ return iconv("UTF-8","euc-kr//IGNORE",$msg ); } function ToUTF8( $msg){ return iconv("euc-kr","UTF-8",$msg); }
$_SESSION['n']=$n;
fwrite($dbs, $n."\n".$c."\n".$_SERVER[REMOTE_ADDR]."\n"); echo "<script type='text/javascript'>location.href='msg.php#ad';</script>"; exit;} ?> <hr noshade='noshade' /> <div style="font-size:9pt;"> <? echo "<p title='$ip'>현재 접속자 :"."$total_user 명</p>"; // 출력 ?></div> <!-- 라이센스 --> <div align='right' style='text-align:right;font-size:9pt'>Crade by(yamgws13) <a href='http://yangws.myfeelclub.com/' style='font-weight:bold;font-size:8pt' target='_down'>Click!</a></div> </html> |