Path: blob/master/external/source/exploits/CVE-2015-8103/payloads/util/ClassFiles.java
19720 views
package ysoserial.payloads.util;12import java.io.ByteArrayOutputStream;3import java.io.IOException;4import java.io.InputStream;56public class ClassFiles {7public static String classAsFile(final Class<?> clazz) {8return classAsFile(clazz, true);9}1011public static String classAsFile(final Class<?> clazz, boolean suffix) {12String str;13if (clazz.getEnclosingClass() == null) {14str = clazz.getName().replace(".", "/");15} else {16str = classAsFile(clazz.getEnclosingClass(), false) + "$" + clazz.getSimpleName();17}18if (suffix) {19str += ".class";20}21return str;22}2324public static byte[] classAsBytes(final Class<?> clazz) {25try {26final byte[] buffer = new byte[1024];27final String file = classAsFile(clazz);28final InputStream in = ClassFiles.class.getClassLoader().getResourceAsStream(file);29if (in == null) {30throw new IOException("couldn't find '" + file + "'");31}32final ByteArrayOutputStream out = new ByteArrayOutputStream();33int len;34while ((len = in.read(buffer)) != -1) {35out.write(buffer, 0, len);36}37return out.toByteArray();38} catch (IOException e) {39throw new RuntimeException(e);40}41}4243}444546