1

ネットワークセキュリティIPスキャンの目的でスクリプトを作成したいのですが、このようなツールでは、たとえばNICのIPアドレスの設定、DNSアドレスの設定、ホスト名、MACアドレスの設定、有効化などのテスト目的で、ホストNICのステータスをスプーフィングする必要があります。 /NICアダプタを無効にします。

私はグーグルで検索し、ほとんどの魂が「popen」呼び出しシステムを使用していることを発見しました。

>>> import os
>>> p=os.popen("/sbin/ifconfig eth0")
>>> t=p.read()
>>> p.close() 

システムからの返品を取得します。また、netifacesなどのNICのステータスを読み取ることができるモジュールもありますが、それらはすべて「読み取り専用」であるように見えますが、直接ワートすることはできません。

NICステータスを直接設定できるモジュールがないことがわかったので、誰かが手を差し伸べたり、より良い方法を示したりできるかどうかを確認するために、ここで助けを求めます。

ヒントはすべて適用されます。ありがとう!

Rgs KC

4

2 に答える 2

0

私は以前にこれを行いましたが、そのような低レベルのOS固有のものへの明示的なPythonosインターフェイスはありません。UNIX(/ Windows / Mac)コマンドに(OS固有の)ラッパーを作成するだけです。それは難しいことではなく、ただ退屈です。

os.popen *()は非常に非推奨です(2.4以降)。サブプロセスモジュールを使用してください。

subprocess.Popen()へのインターフェースは確かに苛立たしいものであり、まともなデフォルトのarg値を提供し、コードを整理するために、ほぼ確実に独自の正気度のラッパーを作成することになります。明らかに、コマンドの終了ステータス、パスプレフィックスなどに細心の注意を払ってください。移植性についてどれだけ気にかけているかわからない。

于 2011-07-04T00:27:22.977 に答える
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 
# Copyright 2014 by mimvp.com


def get_valid_ip(cls, ip_str):
    ip_str_new = ''
    ip_re = re.compile(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b')
    ipList = ip_re.findall(ip_str)
    if len(ipList) >= 1:
        ip_str_new = ipList[0]
        ip_str_new = ip_str_new.lstrip("0")     # '05.9.87.163'  ==>  '5.9.87.163'
    return ip_str_new


if __name__ == '__main__':
    result = os.popen("/sbin/ifconfig en0 | grep broadcast")
    ip_inet = result.read()
    for ip_str in ip_inet.split(" "):
        if self.get_valid_ip(ip_str) : 
            print ip_str
于 2017-08-11T13:09:38.183 に答える