Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import time
- import random
- import pika
- import sqlite3
- import json
- import numpy
- import datetime
- import pyautogui
- import cv2 as cv
- import csv
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.common.action_chains import ActionChains
- # main function
- def main():
- try:
- data_from_database()
- channel = connect_to_rabbit_mq_server()
- channel.basic_qos(prefetch_count=1)
- channel.basic_consume(start_testing, queue=queue)
- channel.start_consuming()
- except Exception as e:
- print(e)
- main()
- # function for getting data from database
- def data_from_database():
- global user
- global password
- global queue
- global host
- global log_file
- conn = sqlite3.connect('phishing.sqlite')
- c = conn.cursor()
- user = c.execute('SELECT value FROM configurations WHERE key_data=\'rabbit_mq_customer_user\' LIMIT 1;').fetchone()[
- 0]
- password = \
- c.execute('SELECT value FROM configurations WHERE key_data=\'rabbit_mq_customer_pass\' LIMIT 1;').fetchone()[0]
- queue = \
- c.execute(
- 'SELECT value FROM configurations WHERE key_data=\'rabbit_mq_warm_up_queue\' LIMIT 1;').fetchone()[0]
- host = c.execute('SELECT value FROM configurations WHERE key_data=\'rabbit_mq_host\' LIMIT 1;').fetchone()[0]
- log_file = c.execute('SELECT value FROM configurations WHERE key_data=\'log_file_name\' LIMIT 1;').fetchone()[0]
- conn.close()
- # function for connection to RabbitMQ server
- def connect_to_rabbit_mq_server():
- global credentials
- credentials = pika.PlainCredentials(user, password)
- connection = pika.BlockingConnection(pika.ConnectionParameters(
- host=host, port=5672, credentials=credentials)) # open connection
- channel = connection.channel() # get the channel
- channel.queue_declare(queue=queue) # set the queue
- return channel
- # main script for testing
- def start_testing(ch, method, properties, body):
- print()
- ch.basic_ack(delivery_tag=method.delivery_tag)
- data = json.loads(str(body, encoding='utf-8'))
- available_browsers = ["chrome"]
- domain = data['domain']
- lp_id = "/?pcl=RAlMYKkYqxEkc0BG7-gS6YBXYoZtwHJrAnLZrvPqfQE.&stub_name=1859&lp_id=4&c=fda94ece5f135810614a75799153bab6&test=1"
- download_timeout = 20
- download_folder = "C:\\Users\\Win7\\Downloads\\"
- # Keep checking forever
- # while True:
- try:
- # Select random browser
- rand_browser = random.choice(available_browsers)
- if rand_browser == "firefox":
- # Firefox
- profile = webdriver.FirefoxProfile()
- profile.set_preference("browser.download.folderList", 2)
- profile.set_preference("browser.download.manager.showWhenStarting", False)
- profile.set_preference("browser.download.dir", download_folder)
- profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
- browser = webdriver.Firefox(profile)
- elif rand_browser == "chrome":
- # Chrome
- chrome_options = webdriver.ChromeOptions()
- prefs = {"download.default_directory": download_folder,
- "download.prompt_for_download": False,
- "directory_upgrade": True,
- "profile.default_content_settings.popups": 0,
- "profile.default_content_setting_values.automatic_downloads": 1,
- "safebrowsing.enabled": False}
- chrome_options.add_experimental_option("prefs", prefs)
- browser = webdriver.Chrome(executable_path="chromedriver.exe", options=chrome_options)
- else:
- quit(1)
- try:
- status_404 = False
- wait_driver = WebDriverWait(browser, 10)
- print(domain + lp_id)
- browser.get(domain + lp_id)
- download_button = wait_driver.until(
- EC.presence_of_element_located((By.CLASS_NAME, "download_link")))
- if not(EC.presence_of_element_located((By.CLASS_NAME,"download_link"))):
- status_404=True
- time.sleep(2) # Wait page to load
- # Move mouse to download button and click
- action = ActionChains(browser).move_to_element(download_button)
- action.move_by_offset(200, 200)
- action.move_to_element(download_button)
- action.click()
- action.perform()
- timer = 0
- # Wait until file is downloaded
- file_path = download_folder + "install_flash_player.exe"
- while True:
- if timer >= download_timeout:
- if rand_browser == "chrome":
- click_keep_button(domain, status_404)
- break
- if os.path.isfile(file_path):
- if os.path.getsize(file_path) >= 20019904:
- if rand_browser == "chrome":
- click_keep_button(domain, status_404)
- break
- time.sleep(1)
- timer += 1
- browser.close()
- time.sleep(2)
- # Delete all files
- filelist = [f for f in os.listdir(download_folder)]
- for f in filelist:
- file_name = os.path.join(download_folder, f)
- os.remove(file_name)
- except Exception as e:
- browser.close()
- print("Something went wrong, error: " + str(e))
- except Exception as e:
- print("Could not create browser, error: " + str(e))
- def log_to_csv(domain, warmed, status_404):
- with open('log_warm.csv', mode='a') as log_file:
- log_writer = csv.writer(log_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
- if status_404:
- log_writer.writerow([domain, datetime.datetime.now(), '404'])
- return
- if warmed:
- log_writer.writerow([domain, datetime.datetime.now(), 'warm'])
- else:
- log_writer.writerow([domain, datetime.datetime.now(), 'not_warm'])
- def click_keep_button(domain, status_404):
- try:
- if status_404:
- log_to_csv(domain, False, status_404)
- return
- pyautogui.screenshot('screenshot.png')
- x_coordinate = 0
- y_coordinate = 0
- img_rgb = cv.imread('screenshot.png')
- img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
- template = cv.imread('keep_example.png', 0)
- res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
- threshold = 0.8
- loc = numpy.where(res >= threshold)
- for pt in zip(*loc[::-1]):
- x_coordinate = pt[0] + 5
- y_coordinate = pt[1] + 5
- if x_coordinate != 0 or y_coordinate != 0:
- pyautogui.moveTo(x_coordinate, y_coordinate)
- pyautogui.click()
- log_to_csv(domain=domain,warmed=False, status_404=False)
- time.sleep(10)
- else:
- log_to_csv(domain=domain,warmed=True, status_404=False)
- except Exception as e:
- print(e)
- # run script
- main()
Add Comment
Please, Sign In to add comment