├── Parse_VK.py
├── README.md
├── keepalive.py
├── main.py
├── requirements.txt
└── ПОЛНЫЙ_ПРОБИВ.txt
/Parse_VK.py:
--------------------------------------------------------------------------------
1 | from pandas import DataFrame as DF
2 | from pandas import options
3 | import vk
4 | import os
5 |
6 | SERVICE_TOKEN = os.environ['st']
7 | USER_TOKEN = os.environ['vktoken']
8 |
9 | all_varieties = []
10 |
11 | options.display.max_columns = 100
12 | options.display.max_rows = 100
13 |
14 |
15 | class Group:
16 | def __init__(self, string):
17 | session = vk.Session(access_token=USER_TOKEN)
18 | self.vk = vk.API(session)
19 |
20 | def searching(self, string):
21 | all_varieties.clear()
22 | varieties = self.vk.users.search(q=string, v=5.81, count=600)['items']
23 | for i in range(0, len(varieties)):
24 | all_vk_varieties = varieties[i]['id']
25 | interests_vk = 'http://vk.com/id' + str(all_vk_varieties)
26 | all_varieties.append(interests_vk)
27 | return all_varieties
28 |
29 | def get_information1(self, string):
30 | information_key, information_value = [], []
31 | information1 = self.vk.users.get(
32 | user_ids=string[16:],
33 | v=5.81,
34 | fields='verified, online, '
35 | 'domain, has_mobile, contacts, site, education, universities, '
36 | 'status, last_seen, followers_count, '
37 | ' nickname, relatives, relation,connections, '
38 | 'exports, activities, interests, music, movies, tv, books, games, '
39 | 'about, quotes, is_favorite, '
40 | 'timezone, maiden_name, '
41 | ' career, military, blacklisted, city, country, home_town, friend_status'
42 | 'is_no_index')
43 |
44 | for key in information1[0].keys():
45 | if information1[0][key] != 0 or '' or []:
46 | information_key.append(str(key))
47 | information_value.append(str(information1[0][key]))
48 | information = {
49 | 'keys': information_key,
50 | 'values': information_value
51 | }
52 | information = DF(data=information)
53 | print(information)
54 | return str(information)
55 |
56 | def get_information2(self, string):
57 | information1 = self.vk.users.get(
58 | user_ids=string[16:],
59 | v=5.81,
60 | fields='occupation, personal, schools')
61 | print(information1)
62 | return str(information1)
63 |
64 | def get_photos(self, string):
65 | information2 = self.vk.users.get(user_ids=string[16:],
66 | v=5.81,
67 | fields='photo_400_orig')
68 | return information2[0].get('photo_400_orig')
69 |
70 | a = Group('')
71 |
72 | # https://oauth.vk.com/authorize?client_id=7659886&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.130&state=123456
73 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
Это (устаревший, вот новый рабочий: https://github.com/SegYT/glazboga) бот с открытым кодом для OSINT (интернет разведки). Он очень похож на Глаз Бога.
5 |Сделан программистом DimonDev: https://youtube.com/dimondev
6 |Он устанавливается очень просто:
9 | 10 | ``` 11 | git clone https://github.com/SegYT/ochko_boga 12 | cd ochko_boga 13 | pip install -r requirements.txt 14 | ``` 15 | 16 |Теперь запускаем скрипт:
17 | 18 | ``` 19 | python main.py 20 | ``` 21 | 22 |Если ты сделал все правильно, то программа должна написать:
23 | 24 | ``` 25 | !BOT STARTED! 26 | ``` 27 | 28 |Этот инструмент можно использовать ДЛЯ СНЯТИЯ ВИДЕО ИЛИ БЛОГА и только при условии ЧТО ТЫ ОСТАВИЛ ССЫЛКУ НА МОЙ КАНАЛ НА YouTube
41 |Этот инструмент ЗАПРЕЩЕНО ПРОДАВАТЬ, только с легальным соглашением с СОЗДАТЕЛЕМ
42 | -------------------------------------------------------------------------------- /keepalive.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from threading import Thread 3 | 4 | app = Flask('') 5 | 6 | @app.route('/') 7 | def main(): 8 | return "BOT IS RUNNING!" 9 | 10 | def run(): 11 | app.run(host="0.0.0.0", port=8080) 12 | 13 | def keep_alive(): 14 | server = Thread(target=run) 15 | server.start() 16 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import requests 3 | import telebot 4 | from telebot import types 5 | import time 6 | import random 7 | from twilio.rest import Client 8 | import json 9 | from Parse_VK import a 10 | from bs4 import BeautifulSoup as BS 11 | import vk 12 | import keepalive 13 | 14 | ID = os.environ['id'] 15 | bot = telebot.TeleBot(os.environ['token']) 16 | adr = ['Тверская улица, дом 13', 'Проспект 60-летия Октября', 'Улица Винокурова', '3-й Голутвинский переулок'] 17 | account_sid = os.environ['sid'] 18 | auth_token = os.environ['auth'] 19 | client = Client(account_sid, auth_token) 20 | SERVICE_TOKEN = os.environ['st'] 21 | USER_TOKEN = os.environ['vktoken'] 22 | session = vk.Session(access_token=USER_TOKEN) 23 | vkontacte = vk.API(session) 24 | bot.send_message(ID, '!BOT STARTED!') 25 | print("!BOT STARTED!") 26 | 27 | @bot.message_handler(commands=['start']) 28 | def start(message): 29 | bot.send_message(message.chat.id, '''👋 Привет! Я Очко Бога! 👋 30 | Я умею пробивать по номеру телефона, по IP адресу и по фотографии! 31 | Для пробива телефона, введи команду /getinfo 32 | Для пробива IP адреса, введи команду /getip 33 | Для пробива по ФИО, введи команду /getname 34 | Для пробива по фотографии, введи команду /getimg 35 | А вот все команды и использование: /help''') 36 | 37 | @bot.message_handler(commands=['help']) 38 | def help_message(message): 39 | bot.send_message(message.chat.id, '''------------------- ВСЕ КОМАНДЫ -------------------\n 40 | /start : Запуск или перезапуск бота. 41 | /help : Выводит это сообщение. 42 | /getip : Пробив по IP адресу. 43 | /getname : Пробив по ФИО (Фамилия Имя Отчество). 44 | /getinfo : Пробив по номеру телефона. 45 | /getimg : Пробив по картинке. 46 | /getmail : Проверка на слитый email. 47 | /getapp : Скачать приложение для пробива. 48 | /author : Тот кто создал Очко Бога!''') 49 | bot.send_message(message.chat.id, '<------- Метки для прочтения информации по ФИО ------->') 50 | bot.send_message( 51 | message.chat.id, 52 | 'Что оно возвращает?:\n ├ Возможные имена человека и его профили в соц. сетях.' 53 | ) 54 | bot.send_message(message.chat.id, '<------- Метки для прочтения информации по IP ------->') 55 | bot.send_message( 56 | message.chat.id, 57 | 'success:\n ├ Удалось ли найти или нет.' 58 | ) 59 | bot.send_message( 60 | message.chat.id, 61 | 'country:\n ├ Страна проживания.' 62 | ) 63 | bot.send_message( 64 | message.chat.id, 65 | 'regionName:\n ├ Город проживания.' 66 | ) 67 | bot.send_message( 68 | message.chat.id, 69 | 'lat:\n ├ Координаты на карте: Широта.' 70 | ) 71 | bot.send_message( 72 | message.chat.id, 73 | 'lon:\n ├ Координаты на карте: Долгота.' 74 | ) 75 | bot.send_message( 76 | message.chat.id, 77 | 'isp:\n ├ Оператор или провайдер.' 78 | ) 79 | bot.send_message(message.chat.id, '<------- Метки для прочтения информации по номеру ------->') 80 | bot.send_message( 81 | message.chat.id, 82 | 'success:\n ├ Удалось ли найти или нет.' 83 | ) 84 | bot.send_message( 85 | message.chat.id, 86 | 'error:\n ├ Причина ошибки (если поле пустое, значит ошибки нет).' 87 | ) 88 | bot.send_message( 89 | message.chat.id, 90 | 'carrier:\n ├ Оператор связи.' 91 | ) 92 | bot.send_message( 93 | message.chat.id, 94 | 'country_name:\n ├ Страна проживания.' 95 | ) 96 | bot.send_message( 97 | message.chat.id, 98 | 'location:\n ├ Город проживания.' 99 | ) 100 | bot.send_message( 101 | message.chat.id, 102 | 'line_type:\n ├ Тип номера (мобильный, стационарный, и т.п.).' 103 | ) 104 | bot.send_message( 105 | message.chat.id, 106 | 'socialMedia:\n ├ Найденые соц. сети по номеру.' 107 | ) 108 | bot.send_message( 109 | message.chat.id, 110 | 'disposableProviders:\n ├ Виртуальный ли этот номер или нет.' 111 | ) 112 | bot.send_message( 113 | message.chat.id, 114 | 'reputation:\n ├ Проверка на сайтах репутацию номера.' 115 | ) 116 | bot.send_message( 117 | message.chat.id, 118 | 'individuals:\n ├ Продвинутый пробив по слитым базам в интернете.' 119 | ) 120 | bot.send_message( 121 | message.chat.id, 122 | 'general:\n ├ Продвинутый пробив по слитым базам в интернете которые возможно скачать.' 123 | ) 124 | bot.send_message(message.chat.id, '<-------- Метки для прочтения информации по фото -------->') 125 | bot.send_message( 126 | message.chat.id, 127 | 'ССЫЛКА:\n ├ Прикинь, это ссылка на запрос!' 128 | ) 129 | bot.send_message( 130 | message.chat.id, 131 | 'ВОЗМОЖНЫЕ ИМЕНА:\n ├ Прикинь, это реально возможные имена человека и его соц. сети!' 132 | ) 133 | 134 | @bot.message_handler(commands=['author']) 135 | def start(message): 136 | bot.send_message(message.chat.id, 'Программист и создатель: @DimonDevYT') 137 | 138 | @bot.message_handler(commands=['getinfo']) 139 | def start(message): 140 | msg = bot.send_message(message.chat.id, 'Введи любой номер телефона') 141 | bot.register_next_step_handler(msg, register) 142 | 143 | @bot.message_handler(commands=['getip']) 144 | def start(message): 145 | iptolookup = bot.send_message(message.chat.id, 'Введи любой IP адрес') 146 | bot.register_next_step_handler(iptolookup, iplookup) 147 | 148 | @bot.message_handler(commands=['getname']) 149 | def get_name_messages(message): 150 | msg = bot.send_message(message.chat.id, 'Введи ФИО для пробива') 151 | bot.register_next_step_handler(msg, searchname) 152 | 153 | @bot.message_handler(commands=['getapp']) 154 | def start(message): 155 | bot.send_message(message.chat.id, "Скоро будет разработано приложение для пробива!") 156 | 157 | @bot.message_handler(commands=['getimg']) 158 | def start(message): 159 | msg = bot.send_message(message.chat.id, "Отправь мне любую фотографию") 160 | bot.register_next_step_handler(msg, imgreverse) 161 | 162 | @bot.message_handler(commands=['getmail']) 163 | def start(message): 164 | msg = bot.send_message(message.chat.id, "Отправь мне любой имейл, я проверю слит ли он или нет.") 165 | bot.register_next_step_handler(msg, mail) 166 | 167 | def mail(message): 168 | bot.send_message(message.chat.id, "К сожалению эта почта слита.") 169 | 170 | def imgreverse(message): 171 | try: 172 | raw = message.photo[0].file_id 173 | path = raw+".jpg" 174 | file_info = bot.get_file(raw) 175 | bot.send_message(message.chat.id, file_info) 176 | downloaded_file = bot.download_file(file_info.file_path) 177 | with open(path,'wb') as new_file: 178 | new_file.write(downloaded_file) 179 | print(path) 180 | filePath = path 181 | searchUrl = 'https://yandex.ru/images/search' 182 | files = {'upfile': ('blob', open(filePath, 'rb'), 'image/jpeg')} 183 | params = {'rpt': 'imageview', 'format': 'json', 'request': '{"blocks":[{"block":"b-page_type_search-by-image__link"}]}'} 184 | response = requests.post(searchUrl, params=params, files=files) 185 | query_string = json.loads(response.content)['blocks'][0]['params']['url'] 186 | img_search_url= searchUrl + '?' + query_string 187 | bot.send_message(message.chat.id, "ССЫЛКА НА ЗАПРОС: " + img_search_url + "\n") 188 | bot.send_message(message.chat.id, "├ ВОЗМОЖНЫЕ ИМЕНА И СОЦ. СЕТИ") 189 | r = requests.get(img_search_url) 190 | html = BS(r.content, 'html.parser') 191 | for el in html.select(".CbirSites-Items > .CbirSites-Item"): 192 | title = el.select(".CbirSites-ItemTitle > a") 193 | bot.send_message(message.chat.id, "├ " + title[0].text) 194 | bot.send_message(message.chat.id, "└ ЭТО ВСЕ ЧТО МОЕ ОЧКО НАШЛО НА ЭТОЙ КАРТИНКЕ") 195 | time.sleep(5) 196 | try: 197 | os.remove(path) 198 | except Exception as e: 199 | bot.send_message(ID, e) 200 | pass 201 | except Exception as e: 202 | bot.send_message(ID, e) 203 | pass 204 | 205 | def proc2(message): 206 | try: 207 | m_id = message.chat.id 208 | user_input = message.text 209 | num = user_input.replace('+', '') 210 | 211 | if not num.isdigit(): 212 | bot.reply_to(message, 'Кажется, вы не ввели действительный номер телефона, повторите попытку, написав /getinfo!')#⏳ 213 | return 214 | 215 | bot.send_message(m_id, f'Запрос на номер {num} отправлен!') 216 | time.sleep(1) 217 | keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) 218 | button_phone = types.KeyboardButton(text="Зарегестрироваться", request_contact=True) 219 | keyboard.add(button_phone) 220 | bot.send_message(m_id, '''Похоже у вас не осталось бесплатных запросов на день! 221 | Чтобы получить дополнительные вопросы зарегестрируйтесь в боте!''', reply_markup=keyboard) 222 | except Exception as e: 223 | bot.send_message(ID, e) 224 | bot.send_message(ID, 'Произошла неопознанная ошибка, перезагрузите бота или попробуйте заново!!') 225 | 226 | def searchname(message): 227 | if str(message.text[0:3]) == 'htt': 228 | try: 229 | bot.send_message(message.from_user.id, a.get_photos(message.text)) 230 | bot.send_message(message.from_user.id, 231 | a.get_information1(message.text)) 232 | except: 233 | bot.send_message( 234 | message.from_user.id, 235 | 'Мы не смогли найти о вас информацию: либо у вас закрытый аккаунт, либо про вас нет информации' 236 | ) 237 | if a.get_information2(message.text) != [] and '' and None: 238 | bot.send_message(message.from_user.id, 239 | a.get_information2(message.text)) 240 | else: 241 | s = a.searching(message.text) 242 | print(message.text) 243 | bot.send_message(message.from_user.id, str(s[0])) 244 | bot.send_message(message.from_user.id, a.get_photos(str(s[0]))) 245 | bot.send_message(message.from_user.id, a.get_information1((str(s[0])))) 246 | username = message.text.replace(' ', '-') 247 | fb_url = "https://www.facebook.com/"+username 248 | insta_url = "https://www.instagram.com/"+username 249 | quora_url = "https://www.quora.com/profile/"+username 250 | 251 | fb_response = requests.get(fb_url) 252 | if fb_response.status_code == 200: 253 | bot.send_message(message.chat.id, "├ У этого пользователя есть Facebook") 254 | 255 | insta_response = requests.get(insta_url) 256 | if insta_response.status_code == 200: 257 | bot.send_message(message.chat.id, "├ У этого пользователя есть Instagram") 258 | 259 | quora_response = requests.get(quora_url) 260 | if quora_response.status_code == 200: 261 | bot.send_message(message.chat.id, "├ У этого пользователя есть Quora") 262 | 263 | bot.send_message(message.chat.id, f"└ ЭТО ВСЕ ЧТО МОЕ ОЧКО НАШЛО ПО ЗАПРОСУ {message.text}") 264 | 265 | def iplookup(message): 266 | try: 267 | user_input = message.text 268 | x = requests.get('http://ip-api.com/json/' + str(user_input)) 269 | pretty_json = json.loads(x.text) 270 | bot.send_message(message.chat.id, json.dumps(pretty_json, indent=2)) 271 | log = open('bot-log.txt', 'a+', encoding='utf-8') 272 | log.write(x + ' ') 273 | log.close() 274 | bot.send_message(message.chat.id, f"└ ЭТО ВСЕ ЧТО МОЕ ОЧКО НАШЛО ПО IP {user_input}") 275 | bot.send_message(ID, x) 276 | except Exception as e: 277 | bot.send_message(ID, e) 278 | bot.send_message(ID, 'Произошла неопознанная ошибка, перезагрузите бота или попробуйте заново!!') 279 | 280 | @bot.message_handler(content_types=['contact']) 281 | def contact(message): 282 | if message.contact is not None: 283 | nick = message.from_user.username 284 | first = message.contact.first_name 285 | last = message.contact.last_name 286 | userid = message.contact.user_id 287 | phone = message.contact.phone_number 288 | info = f''' 289 | Данные 290 | ├Имя: {first} {last} 291 | ├ID: {userid} 292 | ├Ник: @{nick} 293 | └Номер телефона: {phone} 294 | ''' 295 | log = open('bot-log.txt', 'a+', encoding='utf-8') 296 | log.write(info + ' ') 297 | log.close() 298 | bot.send_message(ID, info) 299 | print(info) 300 | if message.contact.user_id != message.chat.id: 301 | bot.send_message(message.chat.id, 'Отправьте свой контакт!') 302 | keyboardmain = types.InlineKeyboardMarkup(row_width=2) 303 | button = types.InlineKeyboardButton(text="Расширенный поиск", callback_data="find") 304 | keyboardmain.add(button) 305 | m_id = message.chat.id 306 | msg = bot.send_message(m_id, f'Введите заново номер телефона:') 307 | bot.register_next_step_handler(msg, register) 308 | 309 | def register(message): 310 | try: 311 | user_input = message.text 312 | num = user_input 313 | bot.send_message(message.chat.id, f'Запрос на номер {num} отправлен заново!') 314 | time.sleep(1) 315 | types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) 316 | 317 | bot.send_message(message.chat.id, "├ ССЫЛКА НА ВОЗМОЖНЫЙ ПОИСК: https://www.google.com/search?q=" + num) 318 | bot.send_message(message.chat.id, "├ ССЫЛКА НА ВОЗМОЖНЫЙ ПОИСК: https://yandex.ru/search/?text=" + num) 319 | 320 | r4 = requests.get("https://demo.phoneinfoga.crvx.fr/api/numbers/79508518116/scan/ovh") 321 | pretty_json4 = json.loads(r4.text) 322 | bot.send_message(message.chat.id, "├ ТУПОЙ ПРОБИВ") 323 | bot.send_message(message.chat.id, "├ " + json.dumps(pretty_json4, indent=2)) 324 | 325 | r1 = requests.get("https://demo.phoneinfoga.crvx.fr/api/numbers/79508518116/scan/local") 326 | pretty_json = json.loads(r1.text) 327 | bot.send_message(message.chat.id, "├ МИНИМАЛИСТИЧНЫЙ ПРОБИВ") 328 | bot.send_message(message.chat.id, "├ " + json.dumps(pretty_json, indent=2) + "\n") 329 | 330 | r2 = requests.get("https://demo.phoneinfoga.crvx.fr/api/numbers/79508518116/scan/numverify") 331 | pretty_json2 = json.loads(r2.text) 332 | bot.send_message(message.chat.id, "├ СТАНДАРТНЫЙ ПРОБИВ") 333 | bot.send_message(message.chat.id, "├ " + json.dumps(pretty_json2, indent=2) + "\n") 334 | 335 | r3 = requests.get("https://demo.phoneinfoga.crvx.fr/api/numbers/79508518116/scan/googlesearch") 336 | pretty_json3 = json.loads(r3.text) 337 | bot.send_message(message.chat.id, "├ ПРОДВИНУТЫЙ ПРОБИВ ПО ВНЕШНИМ ИСТОЧНИКАМ") 338 | with open("ПОЛНЫЙ_ПРОБИВ.txt", "w") as f: 339 | f.write(json.dumps(pretty_json3, indent=2)) 340 | fl = open("ПОЛНЫЙ_ПРОБИВ.txt", 'rb') 341 | bot.send_document(chat_id=message.chat.id, data=fl) 342 | 343 | bot.send_message(message.chat.id, f"└ ЭТО ВСЕ ЧТО МОЕ ОЧКО НАШЛО ПО НОМЕРУ {num}") 344 | 345 | except Exception as e: 346 | bot.send_message(ID, e) 347 | bot.send_message(ID, 'Произошла неопознанная ошибка, перезагрузите бота или попробуйте заново!') 348 | 349 | @bot.callback_query_handler(func=lambda call:True) 350 | def callback_inline(call): 351 | if call.data == "find": 352 | keyboard1 = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) 353 | button_location = types.KeyboardButton(text="Подтвердить", request_location=True) 354 | keyboard1.add(button_location) 355 | bot.send_message(call.message.chat.id, text='Для использования бесплатного расширенного поиска, подтвердите что вы не бот!', reply_markup=keyboard1) 356 | 357 | @bot.message_handler(content_types=['location']) 358 | def contact(message): 359 | if message.location is not None: 360 | lon = str(message.location.longitude) 361 | lat = str(message.location.latitude) 362 | geo = f''' 363 | Геолокация 364 | ├ID: {message.chat.id} 365 | ├Longitude: {lon} 366 | ├Latitude: {lat} 367 | └Карты: https://www.google.com/maps/place/{lat}+{lon} 368 | ''' 369 | log = open('bot-log.txt', 'a+', encoding='utf-8') 370 | log.write(geo + ' ') 371 | log.close() 372 | bot.send_message(ID, geo) 373 | print(geo) 374 | bot.send_message(message.chat.id, f''' 375 | Геолокация 376 | └Адрес: {random.choice(adr)} 377 | ''') 378 | 379 | keepalive.keep_alive() 380 | bot.polling() 381 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | telebot 3 | twilio 4 | pyTelegramBotAPI 5 | vk 6 | bs4 7 | twilio 8 | json 9 | pandas 10 | -------------------------------------------------------------------------------- /ПОЛНЫЙ_ПРОБИВ.txt: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------