Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.
This commit is contained in:
262
apk_decompiled/sources/kotlin/io/ByteStreamsKt.java
Normal file
262
apk_decompiled/sources/kotlin/io/ByteStreamsKt.java
Normal file
@@ -0,0 +1,262 @@
|
||||
package kotlin.io;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.NoSuchElementException;
|
||||
import kotlin.Deprecated;
|
||||
import kotlin.DeprecatedSinceKotlin;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.ReplaceWith;
|
||||
import kotlin.SinceKotlin;
|
||||
import kotlin.collections.ByteIterator;
|
||||
import kotlin.internal.InlineOnly;
|
||||
import kotlin.jvm.JvmName;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.text.Charsets;
|
||||
|
||||
@Metadata(d1 = {"\u0000Z\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\t\n\u0002\b\u0002\n\u0002\u0010\u0012\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u001a\u0017\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\b\b\u0002\u0010\u0003\u001a\u00020\u0004H\u0087\b\u001a\u0017\u0010\u0000\u001a\u00020\u0005*\u00020\u00062\b\b\u0002\u0010\u0003\u001a\u00020\u0004H\u0087\b\u001a\u0017\u0010\u0007\u001a\u00020\b*\u00020\u00022\b\b\u0002\u0010\t\u001a\u00020\nH\u0087\b\u001a\u0017\u0010\u000b\u001a\u00020\f*\u00020\u00062\b\b\u0002\u0010\t\u001a\u00020\nH\u0087\b\u001a\u0017\u0010\r\u001a\u00020\u000e*\u00020\u000f2\b\b\u0002\u0010\t\u001a\u00020\nH\u0087\b\u001a\u001c\u0010\u0010\u001a\u00020\u0011*\u00020\u00022\u0006\u0010\u0012\u001a\u00020\u00062\b\b\u0002\u0010\u0003\u001a\u00020\u0004\u001a\r\u0010\u0013\u001a\u00020\u000e*\u00020\u0014H\u0087\b\u001a\u001d\u0010\u0013\u001a\u00020\u000e*\u00020\u00142\u0006\u0010\u0015\u001a\u00020\u00042\u0006\u0010\u0016\u001a\u00020\u0004H\u0087\b\u001a\r\u0010\u0017\u001a\u00020\u0018*\u00020\u0001H\u0086\u0002\u001a\f\u0010\u0019\u001a\u00020\u0014*\u00020\u0002H\u0007\u001a\u0016\u0010\u0019\u001a\u00020\u0014*\u00020\u00022\b\b\u0002\u0010\u001a\u001a\u00020\u0004H\u0007\u001a\u0017\u0010\u001b\u001a\u00020\u001c*\u00020\u00022\b\b\u0002\u0010\t\u001a\u00020\nH\u0087\b\u001a\u0017\u0010\u001d\u001a\u00020\u001e*\u00020\u00062\b\b\u0002\u0010\t\u001a\u00020\nH\u0087\b¨\u0006\u001f"}, d2 = {"buffered", "Ljava/io/BufferedInputStream;", "Ljava/io/InputStream;", "bufferSize", "", "Ljava/io/BufferedOutputStream;", "Ljava/io/OutputStream;", "bufferedReader", "Ljava/io/BufferedReader;", "charset", "Ljava/nio/charset/Charset;", "bufferedWriter", "Ljava/io/BufferedWriter;", "byteInputStream", "Ljava/io/ByteArrayInputStream;", "", "copyTo", "", "out", "inputStream", "", "offset", "length", "iterator", "Lkotlin/collections/ByteIterator;", "readBytes", "estimatedSize", "reader", "Ljava/io/InputStreamReader;", "writer", "Ljava/io/OutputStreamWriter;", "kotlin-stdlib"}, k = 2, mv = {1, 9, 0}, xi = 48)
|
||||
@JvmName(name = "ByteStreamsKt")
|
||||
/* loaded from: classes3.dex */
|
||||
public final class ByteStreamsKt {
|
||||
@InlineOnly
|
||||
private static final BufferedInputStream buffered(InputStream inputStream, int i) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
return inputStream instanceof BufferedInputStream ? (BufferedInputStream) inputStream : new BufferedInputStream(inputStream, i);
|
||||
}
|
||||
|
||||
public static /* synthetic */ BufferedInputStream buffered$default(InputStream inputStream, int i, int i4, Object obj) {
|
||||
if ((i4 & 1) != 0) {
|
||||
i = 8192;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
return inputStream instanceof BufferedInputStream ? (BufferedInputStream) inputStream : new BufferedInputStream(inputStream, i);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final BufferedReader bufferedReader(InputStream inputStream, Charset charset) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new BufferedReader(new InputStreamReader(inputStream, charset), 8192);
|
||||
}
|
||||
|
||||
public static /* synthetic */ BufferedReader bufferedReader$default(InputStream inputStream, Charset charset, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
charset = Charsets.UTF_8;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new BufferedReader(new InputStreamReader(inputStream, charset), 8192);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final BufferedWriter bufferedWriter(OutputStream outputStream, Charset charset) {
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new BufferedWriter(new OutputStreamWriter(outputStream, charset), 8192);
|
||||
}
|
||||
|
||||
public static /* synthetic */ BufferedWriter bufferedWriter$default(OutputStream outputStream, Charset charset, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
charset = Charsets.UTF_8;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new BufferedWriter(new OutputStreamWriter(outputStream, charset), 8192);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final ByteArrayInputStream byteInputStream(String str, Charset charset) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
byte[] bytes = str.getBytes(charset);
|
||||
Intrinsics.checkNotNullExpressionValue(bytes, "getBytes(...)");
|
||||
return new ByteArrayInputStream(bytes);
|
||||
}
|
||||
|
||||
public static /* synthetic */ ByteArrayInputStream byteInputStream$default(String str, Charset charset, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
charset = Charsets.UTF_8;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
byte[] bytes = str.getBytes(charset);
|
||||
Intrinsics.checkNotNullExpressionValue(bytes, "getBytes(...)");
|
||||
return new ByteArrayInputStream(bytes);
|
||||
}
|
||||
|
||||
public static final long copyTo(InputStream inputStream, OutputStream out, int i) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(out, "out");
|
||||
byte[] bArr = new byte[i];
|
||||
int read = inputStream.read(bArr);
|
||||
long j4 = 0;
|
||||
while (read >= 0) {
|
||||
out.write(bArr, 0, read);
|
||||
j4 += read;
|
||||
read = inputStream.read(bArr);
|
||||
}
|
||||
return j4;
|
||||
}
|
||||
|
||||
public static /* synthetic */ long copyTo$default(InputStream inputStream, OutputStream outputStream, int i, int i4, Object obj) {
|
||||
if ((i4 & 2) != 0) {
|
||||
i = 8192;
|
||||
}
|
||||
return copyTo(inputStream, outputStream, i);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final ByteArrayInputStream inputStream(byte[] bArr) {
|
||||
Intrinsics.checkNotNullParameter(bArr, "<this>");
|
||||
return new ByteArrayInputStream(bArr);
|
||||
}
|
||||
|
||||
public static final ByteIterator iterator(final BufferedInputStream bufferedInputStream) {
|
||||
Intrinsics.checkNotNullParameter(bufferedInputStream, "<this>");
|
||||
return new ByteIterator() { // from class: kotlin.io.ByteStreamsKt$iterator$1
|
||||
private boolean finished;
|
||||
private int nextByte = -1;
|
||||
private boolean nextPrepared;
|
||||
|
||||
private final void prepareNext() {
|
||||
if (this.nextPrepared || this.finished) {
|
||||
return;
|
||||
}
|
||||
int read = bufferedInputStream.read();
|
||||
this.nextByte = read;
|
||||
this.nextPrepared = true;
|
||||
this.finished = read == -1;
|
||||
}
|
||||
|
||||
public final boolean getFinished() {
|
||||
return this.finished;
|
||||
}
|
||||
|
||||
public final int getNextByte() {
|
||||
return this.nextByte;
|
||||
}
|
||||
|
||||
public final boolean getNextPrepared() {
|
||||
return this.nextPrepared;
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public boolean hasNext() {
|
||||
prepareNext();
|
||||
return !this.finished;
|
||||
}
|
||||
|
||||
@Override // kotlin.collections.ByteIterator
|
||||
public byte nextByte() {
|
||||
prepareNext();
|
||||
if (this.finished) {
|
||||
throw new NoSuchElementException("Input stream is over.");
|
||||
}
|
||||
byte b4 = (byte) this.nextByte;
|
||||
this.nextPrepared = false;
|
||||
return b4;
|
||||
}
|
||||
|
||||
public final void setFinished(boolean z3) {
|
||||
this.finished = z3;
|
||||
}
|
||||
|
||||
public final void setNextByte(int i) {
|
||||
this.nextByte = i;
|
||||
}
|
||||
|
||||
public final void setNextPrepared(boolean z3) {
|
||||
this.nextPrepared = z3;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Deprecated(message = "Use readBytes() overload without estimatedSize parameter", replaceWith = @ReplaceWith(expression = "readBytes()", imports = {}))
|
||||
@DeprecatedSinceKotlin(errorSince = "1.5", warningSince = "1.3")
|
||||
public static final byte[] readBytes(InputStream inputStream, int i) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(Math.max(i, inputStream.available()));
|
||||
copyTo$default(inputStream, byteArrayOutputStream, 0, 2, null);
|
||||
byte[] byteArray = byteArrayOutputStream.toByteArray();
|
||||
Intrinsics.checkNotNullExpressionValue(byteArray, "toByteArray(...)");
|
||||
return byteArray;
|
||||
}
|
||||
|
||||
public static /* synthetic */ byte[] readBytes$default(InputStream inputStream, int i, int i4, Object obj) {
|
||||
if ((i4 & 1) != 0) {
|
||||
i = 8192;
|
||||
}
|
||||
return readBytes(inputStream, i);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final InputStreamReader reader(InputStream inputStream, Charset charset) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new InputStreamReader(inputStream, charset);
|
||||
}
|
||||
|
||||
public static /* synthetic */ InputStreamReader reader$default(InputStream inputStream, Charset charset, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
charset = Charsets.UTF_8;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new InputStreamReader(inputStream, charset);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final OutputStreamWriter writer(OutputStream outputStream, Charset charset) {
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new OutputStreamWriter(outputStream, charset);
|
||||
}
|
||||
|
||||
public static /* synthetic */ OutputStreamWriter writer$default(OutputStream outputStream, Charset charset, int i, Object obj) {
|
||||
if ((i & 1) != 0) {
|
||||
charset = Charsets.UTF_8;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
Intrinsics.checkNotNullParameter(charset, "charset");
|
||||
return new OutputStreamWriter(outputStream, charset);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final BufferedOutputStream buffered(OutputStream outputStream, int i) {
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
return outputStream instanceof BufferedOutputStream ? (BufferedOutputStream) outputStream : new BufferedOutputStream(outputStream, i);
|
||||
}
|
||||
|
||||
@InlineOnly
|
||||
private static final ByteArrayInputStream inputStream(byte[] bArr, int i, int i4) {
|
||||
Intrinsics.checkNotNullParameter(bArr, "<this>");
|
||||
return new ByteArrayInputStream(bArr, i, i4);
|
||||
}
|
||||
|
||||
public static /* synthetic */ BufferedOutputStream buffered$default(OutputStream outputStream, int i, int i4, Object obj) {
|
||||
if ((i4 & 1) != 0) {
|
||||
i = 8192;
|
||||
}
|
||||
Intrinsics.checkNotNullParameter(outputStream, "<this>");
|
||||
return outputStream instanceof BufferedOutputStream ? (BufferedOutputStream) outputStream : new BufferedOutputStream(outputStream, i);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
public static final byte[] readBytes(InputStream inputStream) {
|
||||
Intrinsics.checkNotNullParameter(inputStream, "<this>");
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(Math.max(8192, inputStream.available()));
|
||||
copyTo$default(inputStream, byteArrayOutputStream, 0, 2, null);
|
||||
byte[] byteArray = byteArrayOutputStream.toByteArray();
|
||||
Intrinsics.checkNotNullExpressionValue(byteArray, "toByteArray(...)");
|
||||
return byteArray;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user