-
Notifications
You must be signed in to change notification settings - Fork 57
/
test_2fa.py
110 lines (78 loc) · 2.62 KB
/
test_2fa.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from ppadb.client import Client as AdbClient
from pyzbar.pyzbar import decode
import pyotp
import time
import cv2
import numpy as np
from PIL import Image
img = 'image/test.PNG'
def code_2fa(image):
img = Image.open(image)
data = str(decode(img)[0][0])
totp = pyotp.TOTP(data[43:75])
return totp.now(),data[43:75]
#print(code_2fa(img))
def getDevice(i):
# Default is "127.0.0.1" and 5037
client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()
return devices[i]
device = getDevice(0)
def click_ocr(image,device):
with open("image/screen.png", "wb") as fp:
screen = device.screencap()
fp.write(screen)
fp.close()
img = cv2.imread(image)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
template = cv2.imread("image/screen.png", 0)
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
THRESHOLD = 0.9
loc = np.where(res >= THRESHOLD)
# Draw boudning box
for y, x in zip(loc[0], loc[1]):
if x == None or y == None:
return False
return device.input_tap(x+6,y+6)
def turn_2fa(device,i):
device.shell(' am start -a android.intent.action.VIEW '
'-d fb://facewebmodal/f?href=https://m.facebook.com/security/2fac/setup/intro')
time.sleep(2)
click_ocr("image/use_app.PNG",device)
time.sleep(2)
for i in range(3):
device.shell('input swipe 138 162 143 13')
time.sleep(2)
with open(("image/2fa_{}.png").format(i), "wb") as fp:
screen = device.screencap()
fp.write(screen)
fp.close()
otp,two_fa = code_2fa("image/2fa_{}.png".format(i))
click_ocr('image/next.PNG',device)
time.sleep(1)
click_ocr('image/code.PNG',device)
time.sleep(1)
device.input_text(otp)
click_ocr('image/next.PNG', device)
time.sleep(4)
click_ocr('image/done.PNG', device)
return two_fa
#turn_2fa(device,0)
#device.shell(' am start -a android.intent.action.VIEW '
# '-d fb://facewebmodal/f?href=https://m.facebook.com/security/2fac/setup/intro')
def logout(device):
time.sleep(2)
click_ocr("image/back.PNG", device)
time.sleep(1)
click_ocr("image/back.PNG", device)
time.sleep(1)
click_ocr("image/back.PNG", device)
time.sleep(1)
click_ocr("image/back.PNG", device)
time.sleep(1)
click_ocr("image/menu.PNG",device)
time.sleep(1)
for i in range(2):
device.shell('input swipe 138 162 143 13')
click_ocr("image/logout.PNG",device)
logout(device)