Geckodriver를 사용하여 터미널에서 비밀 Whatsapp 메시지를 보내는 방법
24213 단어 whatsappautomationpythonproductivity
이 코드는 교육 목적으로만 사용되며 작성자는 결과에 대해 책임을 지지 않습니다. 조건에 동의하지 않으면 시도하지 마십시오.
여러분, 안녕하세요,
이 게시물에서는 암호화된 비밀 WHATSAPP 메시지를 보낸 방법을 보여줍니다.
전제 조건:
먼저 시스템의 아키텍처는 아래 그림과 같습니다.
이 게시물에서는 AES 알고리즘을 시연합니다. 마찬가지로 다른 암호화 알고리즘을 사용해 볼 수 있습니다. 그리고 Gecko 드라이버를 사용하여 자동으로 메시지를 보낼 것입니다. 주요 목표는 whatsapp의 민감한 데이터를 암호화하고 전달하는 것입니다. 여기서 사용되는 AES의 암호화는 EAX 모드입니다.
전문:
이 모드는 UTF-8 인코딩을 사용하지 않기 때문에 암호화가 어렵습니다. 외부 컴파일러가 메시지를 디코딩하기 어려운 Windows-1252 인코딩을 사용합니다.
도서관:
먼저 필요한 라이브러리를 설치합시다. 3개의 라이브러리 pycryptodom 작성
암호화
colorama
requirements.txt라는 텍스트 파일
이제 pip 명령을 사용하여 설치하십시오.
pip install -r requirements.txt
코드를 실행할 디렉터리에 Gecko 드라이버를 넣습니다.
모든 전제 조건이 완료되었습니다. 코딩 부분으로 들어가 보겠습니다.
라이브러리 가져오기
import base64
import binascii
import binhex
import os
import string
import sys
from random import choice
import smtplib
import os
import hashlib
라이브러리가 누락된 경우 오류 메시지를 표시하겠습니다.
try:
from colorama import Fore, Style, init
from Crypto.Cipher import AES
from Crypto.Random import random
from cryptography.fernet import Fernet
except ImportError:
print(
"ERROR: Missing required libraries.\n"
"Install dependencies with: pip install -r requirements.txt"
)
sys.exit(1)
colorList = [Style.BRIGHT + Fore.RED, Style.BRIGHT , Style.BRIGHT + Fore.YELLOW, Style.BRIGHT + Fore.BLUE, Fore.GREEN ,Fore.MAGENTA, Style.BRIGHT + Fore.CYAN, Style.BRIGHT + Fore.WHITE]
여기에서는 colorama 라이브러리를 사용하여 모든 실행에 대한 색상을 변경하고 있습니다.
필요한 입력을 받자
def get(datatype):
try:
(message) = {
"plaintext": ("Enter plaintext message"),
"encoded": ("Enter encoded message"),
"encrypted": ("Enter encrypted message"),
"filename": ("Specify filename"),
"passwordfilename": ("Specify passwordfilename"),
"password": ("Enter encryption password"),
"Select": ("Choose any one"),
}[datatype]
except KeyError:
message = datatype
return input(f"\n{message}: {Style.RESET_ALL}").encode()
보내는 사람:
이전 게시물에서 Xpath 및 자동화에 대해 언급했습니다. 여기에서도 whatsapp과 비슷한 개념을 사용할 것입니다. 먼저 봇 스크립트를 작성하고 bot.py에 저장하겠습니다.
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from time import sleep
import chardet
driver = webdriver.Firefox()
driver.get('http://web.whatsapp.com')
sleep(15)
driver.find_element_by_xpath("/html/body/div/div/div/div/div/div/div[1]/div/div/div[1]/div/div/div").click()
sleep(5)
fileLocation= "Path/AESKEY.txt"
with open(fileLocation,"r") as file:
for line in file:
driver.find_element_by_xpath("//*/footer/div[1]/div[2]/div/div[2]").send_keys(line)
driver.find_element_by_xpath("//*/footer/div[1]/div[2]/div/div[2]").send_keys(Keys.ENTER)
sleep(5)
fileLocation= "Path/AES.txt"
with open(fileLocation,"r") as file:
for line in file:
for word in line.split(" "):
driver.find_element_by_xpath("//*/footer/div[1]/div[2]/div/div[2]").send_keys(word)
driver.find_element_by_xpath("//*/footer/div[1]/div[2]/div/div[2]").send_keys(Keys.ENTER)
# No special characters and spaces in enc
비단뱀
메시지를 해독하는 데 필요한 키를 AESKEY.txt 파일에 저장하고 암호화된 메시지를 AES.txt 파일에 저장합니다. 이 봇은 파일을 읽은 다음 메시지를 보냅니다. 아래와 같이 몇 가지 지시 메시지를 보낼 수 있습니다.
이제 암호화 부분으로 들어가겠습니다.
def aes_enc_auto():
"""Encrypt with AES."""
keypass = random_key(16)
data = get("plaintext")
filename = get("filename").decode()
cipher = AES.new(keypass.encode(), AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)
with open(filename, "wb") as outfile:
_ = [outfile.write(item) for item in (cipher.nonce, tag, ciphertext)]
save_path='Path/Whatsapp'
kn = "AESKEY"
passwordfilename = os.path.join(save_path, kn+".txt")
with open(passwordfilename, "wt") as outfile:
_ = [outfile.write(item) for item in (keypass)]
print("AES encrypted message and key files are saved")
os.system('python bot.py')
MENU_OPTIONS.append(aes_enc_auto)
먼저 터미널에서 일반 텍스트를 가져와 암호화한 후 저장합니다. 그런 다음 gecko 드라이버가 작동하여 수신자에게 콘텐츠를 보냅니다.
수화기:
위의 암호화된 메시지는 아래 코드를 사용하여 복호화할 수 있습니다.
def aes_dec_auto():
"""Decrypt with AES."""
filename = get("filename")
keypass = get("password")
with open(filename, "rb") as infile:
nonce, tag, ciphertext = [infile.read(x) for x in (16, 16, -1)]
cipher = AES.new(keypass, AES.MODE_EAX, nonce)
data = cipher.decrypt_and_verify(ciphertext, tag).decode()
show("plaintext", data)
MENU_OPTIONS.append(aes_dec_auto)
마지막으로 주요 기능을 끝내자
# Main Function
def main():
try:
while True:
print(
"\n"
+ Fore.GREEN + "Choose from the following options, or press Ctrl-C to quit:\n\n"
+ Style.RESET_ALL
)
for index, option in enumerate(MENU_OPTIONS, 1):
print(Style.BRIGHT + f"{index}: {' ' if index < 10 else ''}" f"{option.__doc__}" + Style.RESET_ALL)
choice = get("Select")
print()
try:
MENU_OPTIONS[int(choice) - 1]()
except (IndexError,UnboundLocalError):
print("Unknown option." + Style.RESET_ALL)
# except ValueError:
# print("Invalid option."+ "Enter the number of your selection."+ Style.RESET_ALL)
except (KeyboardInterrupt,UnboundLocalError):
print("\n{}Program Terminated\n{}Have A Nice Day{}".format(Fore.RED,Style.BRIGHT,Style.RESET_ALL))
sys.exit(1)
if __name__ == "__main__":
main()
아래 저장소에서 다양한 해싱 및 암호화 알고리즘을 사용하여 위의 개념을 구현했습니다. 당신이 그것을 좋아한다면 별을 떨어 뜨려주세요.
치투리아룬크리슈나 / 암호화
이 링크에서 설명을 사용할 수 있습니다.
암호화
이 프로젝트의 주요 목표는 암호화된 비밀 메시지를 보내는 것입니다. Mozilla Firefox에서 지원하는 Gecko 드라이버를 사용하여 암호화된 메시지를 보낼 것입니다. 적응성을 위해 이 프로젝트는 Google 크롬을 지원하는 Selenium에서도 작동할 수 있습니다.
View on GitHub
Reference
이 문제에 관하여(Geckodriver를 사용하여 터미널에서 비밀 Whatsapp 메시지를 보내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/chitturiarunkrishna/how-to-send-a-secret-whats-app-message-from-terminal-using-gecko-driver-fj1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Geckodriver를 사용하여 터미널에서 비밀 Whatsapp 메시지를 보내는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chitturiarunkrishna/how-to-send-a-secret-whats-app-message-from-terminal-using-gecko-driver-fj1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)