마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이 코드가 혹시 base64를 나타낸건지 아시는분 능력자분 있으신가요...

0 추천
include base64 모듀을 쓰지 않고 직접 짠것같은데

 

혹시나 base64 인지 확인 해주실 능력자분 계신가요..

 

밑의 소스는 어느 앱을 디컴파일 해서 나온 class 파일 인데 중간중간 제대로 디컴파일 이 안되있어 확안이 너무 어렵네요..

 

 

public final class a
{
  private static final String a = System.getProperty("line.separator");
  private static char[] b = new char[64];
  private static byte[] c;

  static
  {
    int i = 65;
    int i6;
    for (int j = 0; i <= 90; j = i6)
    {
      char[] arrayOfChar4 = b;
      i6 = j + 1;
      arrayOfChar4[j] = i;
      i = (char)(i + 1);
    }
    int k = 97;
    while (k <= 122)
    {
      char[] arrayOfChar3 = b;
      int i5 = j + 1;
      arrayOfChar3[j] = k;
      k = (char)(k + 1);
      j = i5;
    }
    int m = 48;
    while (m <= 57)
    {
      char[] arrayOfChar2 = b;
      int i4 = j + 1;
      arrayOfChar2[j] = m;
      m = (char)(m + 1);
      j = i4;
    }
    char[] arrayOfChar1 = b;
    int n = j + 1;
    arrayOfChar1[j] = '+';
    b[n] = '/';
    c = new byte['€'];
    int i3;
    for (int i1 = 0; ; i1++)
    {
      int i2 = c.length;
      i3 = 0;
      if (i1 >= i2)
        break;
      c[i1] = -1;
    }
    while (i3 < 64)
    {
      c[b[i3]] = ((byte)i3);
      i3++;
    }
  }

  public static String a(String paramString)
  {
    return new String(a(paramString.getBytes()));
  }

  public static char[] a(byte[] paramArrayOfByte)
  {
    int i = paramArrayOfByte.length;
    int j = (2 + i * 4) / 3;
    char[] arrayOfChar = new char[4 * ((i + 2) / 3)];
    int k = i + 0;
    int m = 0;
    int n = 0;
    if (n < k)
    {
      int i1 = n + 1;
      int i2 = 0xFF & paramArrayOfByte[n];
      int i3;
      label82: int i4;
      label105: int i8;
      int i11;
      label192: int i12;
      if (i1 < k)
      {
        int i14 = i1 + 1;
        i3 = 0xFF & paramArrayOfByte[i1];
        i1 = i14;
        if (i1 >= k)
          break label239;
        n = i1 + 1;
        i4 = 0xFF & paramArrayOfByte[i1];
        int i5 = i2 >>> 2;
        int i6 = (i2 & 0x3) << 4 | i3 >>> 4;
        int i7 = (i3 & 0xF) << 2 | i4 >>> 6;
        i8 = i4 & 0x3F;
        int i9 = m + 1;
        arrayOfChar[m] = b[i5];
        int i10 = i9 + 1;
        arrayOfChar[i9] = b[i6];
        if (i10 >= j)
          break label249;
        i11 = b[i7];
        arrayOfChar[i10] = i11;
        i12 = i10 + 1;
        if (i12 >= j)
          break label256;
      }
      label256: for (int i13 = b[i8]; ; i13 = 61)
      {
        arrayOfChar[i12] = i13;
        m = i12 + 1;
        break;
        i3 = 0;
        break label82;
        label239: n = i1;
        i4 = 0;
        break label105;
        label249: i11 = 61;
        break label192;
      }
    }
    return arrayOfChar;
  }

  public static byte[] b(String paramString)
  {
    int i = 0;
    char[] arrayOfChar = paramString.toCharArray();
    int j = arrayOfChar.length;
    if (j % 4 != 0)
      throw new IllegalArgumentException("Length of Base64 encoded input string is not a multiple of 4.");
    while ((j > 0) && (arrayOfChar[(-1 + (j + 0))] == '='))
      j--;
    int k = j * 3 / 4;
    byte[] arrayOfByte = new byte[k];
    int m = j + 0;
    int n = 0;
    int i6;
    label188: label199: int i14;
    int i15;
    int i16;
    if (i < m)
    {
      int i1 = i + 1;
      int i2 = arrayOfChar[i];
      int i3 = i1 + 1;
      int i4 = arrayOfChar[i1];
      int i5;
      int i7;
      if (i3 < m)
      {
        int i19 = i3 + 1;
        i5 = arrayOfChar[i3];
        i3 = i19;
        if (i3 >= m)
          break label188;
        int i18 = i3 + 1;
        i7 = arrayOfChar[i3];
        i6 = i18;
      }
      while (true)
      {
        if ((i2 <= 127) && (i4 <= 127) && (i5 <= 127) && (i7 <= 127))
          break label199;
        throw new IllegalArgumentException("Illegal character in Base64 encoded data.");
        i5 = 65;
        break;
        i6 = i3;
        i7 = 65;
      }
      int i8 = c[i2];
      int i9 = c[i4];
      int i10 = c[i5];
      int i11 = c[i7];
      if ((i8 < 0) || (i9 < 0) || (i10 < 0) || (i11 < 0))
        throw new IllegalArgumentException("Illegal character in Base64 encoded data.");
      int i12 = i8 << 2 | i9 >>> 4;
      int i13 = (i9 & 0xF) << 4 | i10 >>> 2;
      i14 = i11 | (i10 & 0x3) << 6;
      i15 = n + 1;
      arrayOfByte[n] = ((byte)i12);
      if (i15 >= k)
        break label374;
      i16 = i15 + 1;
      arrayOfByte[i15] = ((byte)i13);
    }
    while (true)
    {
      int i17;
      if (i16 < k)
      {
        i17 = i16 + 1;
        arrayOfByte[i16] = ((byte)i14);
      }
      while (true)
      {
        n = i17;
        i = i6;
        break;
        return arrayOfByte;
        i17 = i16;
      }
      label374: i16 = i15;
    }
  }
}
sg_guard (330 포인트) 님이 2013년 5월 4일 질문
자답입니다. base64 맞네요 ...
HackerK 님 불순한 목적으로 하는거 아니에요^^..
악성 코드 관련된 공부 하는데 관련된 정보를 암호화 해서 전송하더라구요~
암호쪽은 잘몰라서 질문 했던거에요^^/// 오해금지 ㅎ
아.. 그런가요 ㅋ
그리고 그런걸 확인하는 좋은 방법은 암호화만 안되어있다면 디컴파일이 아니고 패킷 캡쳐입니다
SSL까지 적용은 안할테니.. 사실상 그냥 보면 보이겟죠
base64는 암호화는 아닙니다.. 사람 눈으로 못읽을 뿐이죠^^
최종 분석 결과 base64후 AES256으로 암호화 했던거였습니다 ㅎ HackerK 님의 친절한 답변 감사합니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...