Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
xdmood
1 / 1 / 0
Регистрация: 27.02.2013
Сообщений: 13
#1

Приложение требует ввести пароль, задача его узнать (декомпиляторы, dex) - Программирование Android

18.06.2014, 19:56. Просмотров 1359. Ответов 2
Метки нет (Все метки)

Есть приложение, которое требует ввести пароль, задача его узнать.

Имеем файл Test.apk и полученные исходники (jar).
(Все прикреплено ниже)

Приложение простое, при вводе не правильного пароль выводит - incorrect
при правильном - correct

имеем исходники:

Класс реализующий пароль и его проверку
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.example.test;
 
import android.util.Base64;
 
public class Password
{
  private static String[] a;
  
  public Password()
  {
    a = new String[32];
    a[0] = "xxaAhdfshfOTnpWQlIqTkw==\n";
    a[1] = "FriejSasdfVnpOTnpWQlIqTcvbcvbkw==\n";
    a[2] = "ijriASDfhruhdsWQlIqvvR==\n";
    a[3] = "akshdfkjasAdhFjhhjLQlIqerw==\n";
    a[31] = a[3];
    a[4] = "ALsdfjsbnvweirfaxIqeew==\n";
    a[5] = "SadfelrkhuAScvbcvbvcDFSADIqTrw==\n";
    a[6] = "fsdfnDFwiNFWEfnndfrerw==\n";
    a[28] = a[0];
    a[7] = "ufaksjdAFdhTnpWsdfqFfX==\n";
    a[8] = "AfjrWfjirfasdftghoWQasdDji==\n";
    a[9] = "ffufjeirAjoaVnasdfhADFhpAFmVnpOTnASDhutjkw==\n";
    a[10] = "RRRuoaVnpaskjdfhamVnpOTsadflIqdFv==\n";
    a[11] = "jkFHWPhrufrpulASFAleuk==\n";
    a[12] = "sdfuoykyLJHHosdfamVnqrtgpOTnpWAFKkhQlhkHJw==\n";
    a[13] = "uoaVnpmVnpOTnpWQlIqTkw==\n";
    a[14] = "xxaAhdkjslkfjdlsjflsFFFjfafshfOTnpWQlIqTkw==\n";
    a[15] = "FriejSasdfVasdfnpOTnplIqTcvbcvbkw==\n";
    a[16] = "ijriASDfhruhdsWQlIqvvR==\n";
    a[17] = "akshdfkjasAdhFjhhjLQlIqerw==\n";
    a[27] = a[13];
    a[18] = "ALsdfjsbnAFSDvweirfaxIqeew==\n";
    a[19] = "SadfelrkhuASwerfSDFewcvbcvbvcDFSADIqTrw==\n";
    a[20] = "fsdfnDFwiNFWEfnndfrerw==\n";
    a[21] = "ufaksjdAFdhasdfaTnpWsdfqFfX==\n";
    a[30] = a[10];
    a[22] = "AfjrWfjirfasdftghoWQasdDji==\n";
    a[23] = "ffufjeirAjoaVnasdfhADFhpAFmVnpOTnASDhutjkw==\n";
    a[24] = "RRRuoaVnpaskjdfhamVnpOTsadflIqdFv==\n";
    a[25] = "jkFHWPhrufrpulASFAleuk==\n";
    a[26] = "sdfuoykyLJHHosdfamVnqrtgpOTnpWAFKkhQlhkHJw==\n";
    a[29] = a[6];
  }
  
  public boolean checkPassword(String paramString)
  {
    byte[] arrayOfByte = paramString.getBytes();
    for (int i = 0;; i++)
    {
      if (i >= arrayOfByte.length)
      {
        boolean bool1 = Base64.encodeToString(arrayOfByte, 0).equals(a[27]);
        boolean bool2 = false;
        if (bool1) {
          bool2 = true;
        }
        return bool2;
      }
      arrayOfByte[i] = ((byte)(0xFF ^ arrayOfByte[i]));
    }
  }
}
Класс MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.example.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity
  extends Activity
{
  public void checkPassword(View paramView)
  {
    EditText localEditText = (EditText)findViewById(2131230721);
    if (new Password().checkPassword(localEditText.getText().toString()))
    {
      TextView localTextView = new TextView(this);
      localTextView.setTextSize(40.0F);
      localTextView.setText(2131034116);
      setContentView(localTextView);
      return;
    }
    Toast.makeText(getApplicationContext(), 2131034117, 1).show();
  }
  
  protected void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    setContentView(2130903040);
  }
  
  public boolean onCreateOptionsMenu(Menu paramMenu)
  {
    getMenuInflater().inflate(2131165184, paramMenu);
    return true;
  }
}
При просмотре кода, я подумал что пароль у нас должен быть: "uoaVnpmVnpOTnpWQlIqTkw=="

Так как проверяется 27 элемент массива "a[27]", который в свою очередь хранит ссылку на a[13] = "uoaVnpmVnpOTnpWQlIqTkw==\n" , но это не так и на ввод данного пароля приложение выводит -incorrect.



Из этого следует вопрос, что я не понимаю, может кто нибудь объяснит или натолкнет на правильную мысль.
0
Вложения
Тип файла: zip t.zip (599.3 Кб, 10 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Приложение требует ввести пароль, задача его узнать (декомпиляторы, dex) (Программирование Android):

Система требует ввести пароль Админа - Windows 8, 8.1
Система требует ввести пароль Админа для продолжения выполнения операции, но вводить некуда и кнопка "Да" заблокирована

Apple iPhone 4s (8.1.3) требует ввести Apple ID и пароль при включении телефона - iPhone
В общем попал ко мне айфон 4эс и требовал ввести пароль, а в верхней строчке было написано мыло старого владельца, но пароль я естественно...

MS SQL При подключении к базе данных требует логин и пароль, где его найти? - C#
Начал писать приложение на c# с подключением базы данных MS sql. В окне "логин" есть поля для ввода имени сервера, имени базы данных,...

Знаю пароль, но не могу его ввести - Windows 7
Казалось бы, более дебильной ситуации и придумать нельзя, но все же это случилось. Купил ноут Асер, первый собственный ноут в моей жизни,...

Программа, которая требует у вас пароль, например 111, и если пароль правильный, то печатает сообщение «Молодец!». - Pascal ABC
Практическая работа Задание 6. С помощью оператора repeat напишите программу, которая требует у вас пароль, например 111, и если...

Как узнать пароль администратора win 7 не сбрасывая его? - Windows 7
Подскажите плиз. Мне надо именно узнать, а не сбросить. Прогой saminside с краденым nt хэшем не получится так как она перебирает только...

2
Vladimirys
310 / 207 / 25
Регистрация: 16.01.2010
Сообщений: 603
18.06.2014, 23:52 #2
Ага, простое приложение Красть - нехорошо. Кроме того, не было мысли, а зачем там все остальные "пароли"? Вполне вероятно, что исходный пароль, по какому то алгоритму (известному только разработку) собирается из этих "кусочков".
P.S. Потому как, все разработки знают, что можно довольно легко получить исходный код. Не вчера родились.
1
xdmood
1 / 1 / 0
Регистрация: 27.02.2013
Сообщений: 13
19.06.2014, 00:15  [ТС] #3
Во первых, это не воровства!

Это так сказать задача, на знание андроид. И мне интересно, в чем соль и как происходит защита.
Кроме того что я привел, данный apk ничего не умеет делать и никаких скрытых мотивов по воровству чужого кода нет.

Но спасибо за идею с подбором паролей из разных кусочков.

P.S. Написал тест, и в нем пароли прошли, как приведено выше, а тут ничего не выходит, вот и решил написать, а может кто-то поможет.

Добавлено через 6 минут
Решение задачи:

В класс Password добавил метод getPassword
Java
1
2
3
4
5
6
7
    public String getPassword() {
        byte b] = android.util.Base64.decode(a[0x1b], 0x0);
        for (int i = 0; i < b.length; i++) {
            b[i] = (byte) (b[i] ^ 0xff);
        }
        return new String(b);
    }
В результате пароль - Eyjafjallajokull
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 00:15
Привет! Вот еще темы с ответами:

Пароль на приложение: возможность смены, а значит, надежное его хранение - C#
Всем привет. Есть приложение. Хочу создать два пользователя, и для каждого свой пароль. И чтоб они могли менять свой пароль. Посоветуйте,...

Заразил доки и поставил пароль а пароль забыл, не как его не взломать или не скинуть пароль с архива? - Софт
Зарарил доки и поставил пароль а пароль забыл, не как его не взломать или не скинуть пароль с архива?

Ввести число и узнать, является ли его старшая цифра самой большой - C (СИ)
Нужно ввести число и узнать, является ли его старшая цифра самой большой к примеру 123 старшая цифра 1-нет не является

Требует пароль - Ремонт ноутбуков
Проблема такая: Ноут, Асер. В какой-то момент он ребутнулся и после этого при загрузке просит пароль от жесткого диска. В биос зайти не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru