我想写一个网络安全IP扫描脚本,这样的工具可能需要欺骗主机的网卡状态以进行测试,例如,设置网卡的ip地址,设置DNS地址,同时设置主机名,MAC地址和启用/禁用网卡适配器。
我在谷歌上搜索了一下,发现大多数soultion都是使用"popen“调用系统现有的工具,比如
>>> import os
>>> p=os.popen("/sbin/ifconfig eth0")
>>> t=p.read()
>>> p.close()
从系统中获取返回值。还有一些模块可以读取网卡的状态,比如网络接口,但它们似乎都是“只读”的,但不能直接写入。
因为我发现没有模块可以直接设置网卡状态,所以我在这里请求帮助,看看是否有人可以帮助或展示更好的方法。
任何提示都会被采纳。谢谢!
Rgs KC
发布于 2017-08-11 21:09:38
#!/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
发布于 2011-07-04 08:27:23
我之前就这么做过,没有明确的Python os接口来访问像这样的低级操作系统特定的东西。您只需为UNIX(/Windows/Mac)命令编写一个(特定于操作系统的)包装器。这并不难,只是单调乏味。
os.popen*() is very deprecated (since 2.4), use subprocess module。
使用interface to subprocess.Popen() is admittedly irritating,您几乎肯定会为自己编写一个包装器,以提供合理的默认arg值并整理您的代码。显然,要密切关注命令出口状态、路径前缀等。不确定你有多关心可移植性。
https://stackoverflow.com/questions/3340798
复制相似问题