私のコードで正確な問題を特定するのに問題があります。私はポートが範囲内にあるかどうかを確認するinrange()
と、txtファイルをとり、キーワード "UDP"または "TCP"を探し、ポートを見て(:マークの直後)、filt()
、その数値が範囲内にあるかどうかを確認します。ループで負の結果を返す
def inrange(file,character, num):
with open(file, 'r') as r:
for lines in r:
for key, value in sshd.items():
if character == key and character in lines:
if num in sshd.get(character):
return True
else:
return False
elif character == key and character in lines:
if num in sshd.get(character):
return True
else:
return False
これは特にsshd向けです。あなたは上記の辞書sshd
を見れば、私は私のテキストとしてファイル -
アクティブ接続
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
あなたが見ることができるようにこれを持っている場合
def filt(file):
with open(file, 'r') as r:
for i, line in enumerate(r):
if "sshd" in line:
plusOne = i + 1
newline = line.strip()
splitIt = newline[7:22]
my_string = splitIt.split(":", 1)[1]
if inrange(file, "TCP", int(my_string)):
print("Line " + str(plusOne) + " is in range" + " " + my_string)
elif inrange(file, "UDP", int(my_string)):
print("Line " + str(plusOne) + " is in range" + " " + my_string)
else:
print("Not in range")
は今、この作品、UDP 123の範囲内にあります。私は、真実の声明を受け取ります。 UDPをTCPに変更すると、それは私に悪い声明を返します。それは動作します。問題は、これに複数の行を追加すると発生します。
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
TCP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
TCP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
Iバックすべて陽性の結果を取得:
Line 5 is in range 123
Line 6 is in range 123
Line 7 is in range 123
Line 8 is in range 123
ライン6とライン8のような場合であってはならない範囲内にないポート123のTCPです。私はここで何かを紛失しているように感じる。それはわかりません。
クイックデバッグの質問 - どのコード行が印刷を行っていますか?おそらく、 'print'が' Line ...範囲内のUDPラインです... 'のようなものを呼び出すようにします。エラーを特定するのに役立つかもしれません – dwanderson
'inrange'関数の' if'と 'elif'セクションは同じですか? –
@ PM2Ringそれを捨てるのを忘れました。私はinrange関数に文字入力を追加しました。 –