先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
从Node继承的类方法
- __str__
显示控制器名称
- cmdPrint
运行cmdf命令ifconfig并打印结果
博主测试了其他cmd命令,也可以运行。
交换机相关
使用py help(s1)可查看交换机命令界面,使用dir()可查看命令,不包含命令的作用及参数解释,使用方法见下图。
控制器,交换机,主机命令目录
可以看出,有些函数名称是一样的,部分函数名称、作用及参数一样,不再翻译,主机的翻译也是。
class customOvs(mininet.node.OVSSwitch)
|自定义的OVS交换机
|
|方法解析顺序:
| customOvs
| mininet.node.OVSSwitch
| mininet.node.Switch
| mininet.node.Node
| __builtin__.object
|
|此处定义的方法:
|
| __init __(self,name,failMode ='secure',datapath ='kernel',** params)
|
| getSwitchIP()
|返回IP地址
|
| setSwitchIP(self,ip)
|设置管理IP地址
|
|start(self,controllers)
|启动并设置管理IP地址
|
| -------------------------------------------------- --------------------
|此处定义的数据和其他属性:
|
| OVSVersion ='2.9'
|
| isSetup = True
|
| -------------------------------------------------- --------------------
|从mininet.node.OVSSwitch继承的方法:
|
|attach(self,intf)
|连接数据端口
|
| bridgeOpts(self)
|返回OVS桥选项
|
|connected(self)
|我们是否连接到至少一个控制器?
|
| controllerUUIDs(self,update = False)
|返回控制器的ovsdb UUID
|update:更新缓存的值
|
| detach(self,intf)
|断开数据端口
|
| dpctl(self,* args)
|运行ovs-ofctl命令
|
| intfOpts(self,intf)
|返回intf的OVS接口选项
|
|stop(self,deleteIntfs = True)
|终止OVS交换机
|deleteIntfs:删除接口? (真)
|
|vsctl(self,* args,** kwargs)
|运行ovs-vsctl命令(或排队等待以后执行)
|
| -------------------------------------------------- --------------------
|从mininet.node.OVSSwitch继承的类方法:
|
|batchShutdown(cls,switches,run = <function errRun>),来自__builtin __.type
|关闭OVS开关列表
|
|batchStartup(cls,switches,run = <function errRun>),来自__builtin __.type
|批量启动OVS
|switches:交换机启动
| run:运行命令的函数(errRun)
|
| isOldOVS(cls),来自__builtin __.type
| OVS误差是否小于1.10?
|
|
| setup(cls),来自__builtin __.type
|确保已安装Open vSwitch并正常工作
|
| -------------------------------------------------- --------------------
|从mininet.node.OVSSwitch继承的静态方法:
|
| TCReapply(intf)
|不幸的是,OVS和Mininet正在战斗在tc排队学科上。
|作为快速技巧/解决方法,我们清除了OVS,然后重新应用我们自己的。
|
| -------------------------------------------------- --------------------
|从mininet.node.OVSSwitch继承的数据和其他属性:
|
| argmax = 128000
|
| -------------------------------------------------- --------------------
|从mininet.node.Switch继承的方法:
|
| __repr __(self)
|更丰富的字符串表示形式
|
| defaultDpid(self,dpid = None)
|从dpid或开关名称返回正确格式的dpid(s1-> 1)
|
| defaultIntf()
|返回控制界面
|
| sendCmd(self,* cmd,** kwargs)
|发送命令到节点
| cmd:字符串
|
| -------------------------------------------------- --------------------
|从mininet.node.Switch继承的数据和其他属性:
|
| dpidLen = 16
|
| portBase = 1
示例
从mininet.node.OVSSwitch继承的方法
- attach
交换机s2添加端口s2-eth3
- bridgeOpts
返回桥选项
- connected
是否连接控制器
True表示已连接,False表示未连接
- controllerUUIDs
返回控制器的UUID
- stop
关闭交换机
dpctl ovs-vsctl ovs-ofctl等放在后面讲解
主机相关命令
使用py help(h1)可查看主机命令界面
翻译如下
class Host(Node)
|主机只是一个节点
|
|方法解析顺序:
|Host
|Node
| __buliltin__.object
|
|此处定义的数据和其他属性:
|
| isSetup = True
|
| -------------------------------------------------- --------------------
|从Node继承的方法:
|
| IP(self,intf=None)
|返回节点或特定接口的IP地址。
|
| MAC(self,intf=None)
|返回节点或特定接口的MAC地址。
|
| __init __(self,name,inNamespace = True,** params)
| name:节点名称
| inNamespace:在网络名称空间?
| privateDirs:私有目录字符串或元组的列表
| params:节点参数(有关详细信息,请参见config())
|
| __repr __(self)
|更丰富的字符串表示形式
|
| __str __(self)
|缩写字符串表示
|
| addIntf(self,intf,port = None,moveIntfFn = <函数moveIntf>)
|添加接口
| intf:接口
| port:端口号(可选,通常为OpenFlow端口号)
| moveIntfFn:移动界面的功能(可选)
|
|cleanup(self)
|帮助python收集其垃圾。
|
| cmd(self,* args,** kwargs)
|发送命令,等待输出,然后返回
| cmd:字符串
|
| cmdPrint(self,* args)
|调用cmd并打印其输出
| cmd:字符串
|
| config(self,mac = None,ip = None,defaultRoute = None,lo ='up',** _ params)
|根据(可选)参数配置节点:
| mac:默认接口的MAC地址
| ip:默认接口的IP地址
| ifconfig:任意接口配置子类应重写此方法并调用父类的config(** params)
|
| configDefault(self,** moreParams)
|使用默认参数进行配置
|
| connectionsTo(self,节点)
|对于将自身连接到节点的所有接口,返回[接口1,接口2 ...]
|
| defaultIntf()
|最低端口的返回接口
|
| delIntf(self,intf)
|从Node的已知接口中删除接口
|注意:要完全删除接口,请调用intf.delete()
|
| deleteIntfs(self,checkName = True)
|删除所有接口
| checkName:仅删除包含我们名称的接口
|
| intf(self,intf = None)
|返回给定字符串名称的接口对象,
|如果名称为假(None,空字符串等),则默认为intf。
|或输入intf参数。
|
|使此函数返回其接口对象的参数使其使用灵活的输入参数更容易构造函数
|接口(既接受字符串名称又接受Intf对象的接口)。
|
| intfIsUp(self,intf = None)
|检查接口是否打开
|
| intfList(self)
|我们的接口列表按端口号排序
|
| intfNames(self)
|我们的接口名称按端口号排序
|
| linkTo(自身,节点,链接= <类'mininet.link.Link'>)
| (不建议使用)链接到另一个节点
|替换为Link(node1,node2)
|
|monitor(self,timeoutms=None,findPid = True)
|监视并返回命令的输出。
|如果命令已完成,请将self.waiting设置为False。
| timeoutms:超时(以毫秒为单位)或填写“None”进行无限期等待
| findPid:用mnexec -p查找PID
|
| mountPrivateDirs(self)
|挂载私有目录
|
| newPort(self)
|返回下一个要分配的端口号。
|
| pexec(self,* args,** kwargs)
|使用popen执行命令
|返回:out,err,exitcode
|
| popen(self,* args,** kwargs)
|在我们的命名空间中返回一个Popen()对象
| args:Popen()args,单个列表或字符串
| kwargs:Popen()关键字args
|
|read(self,size= 1024)
|从节点缓冲读取,可能会阻塞。
| size:要返回的最大字符数
|
| readline(self)
|来自节点的缓冲读取行,可能会阻塞。
|返回:行(减去换行符)或None
|
| sendCmd(self,* args,** kwargs)
|发送命令,然后发送命令回显哨兵,
|然后返回,而None需等待命令完成。
| args:命令和参数,或字符串
| printPid:打印命令的PID? (假)
|
| sendInt(self,intr ='\ x03')
|中断运行命令。
|
| setARP(self,ip,mac)
|添加ARP条目。
| ip:IP地址作为字符串
| mac:MAC地址为字符串
|
| setDefaultRoute(self,intf = None)
|设置默认路由以通过intf。
| intf:Intf或{dev <intfname>通过<gw-ip> ...}
|
| setHostRoute(self,ip,intf)
|将路由添加到主机。
| ip:IP地址,点分十进制
| intf:字符串,接口名称
|
| setIP(self,ip,prefixLen = 8,intf = None,** kwargs)
|设置接口的IP地址。
| intf:intf或接口名称
| ip:IP地址作为字符串
| prefixLen:前缀长度,例如8个/ 8或16M加法器
| kwargs:intf.setIP的所有其他参数
|
| setMAC(self,mac,intf =None)
|设置接口的MAC地址。
| intf:intf或intf名称
| mac:MAC地址为字符串
|
| setParam(self,results,method,** param)
|内部方法:配置一个单一的参数
|results:要更新的结果字典
|method:配置方法名称
|param:arg = value(如果value = None则忽略)
|值也可以是列表或字典
|
| startShell(self,mnopts = None)
|启动Shell进程以运行命令
|
|terminate(self)
|向节点发送终止信号并对其进行清理。
|
| unmountPrivateDirs(个体)
|挂载私有目录
|
| waitOutput(self,verbose = False,findPid = True)
|等待命令完成。
|完成由前哨字符ASCII(127)表示
|出现在输出流中。等待哨兵返回输出,包括尾随换行符。
|详细:以交互方式打印输出
|
| waitReadable(self,timeoutms = None)
|等待直到节点的输出可读。
| timeoutms:超时(以毫秒为单位)或填写“None”进行无限期等待。
|返回:poll()的结果
|
|write(self,data)
|将数据写入节点。
|data:字符串
示例
从Node继承的方法
- IP
- MAC
显示IP、MAC
dpctl命令
常用选项
- dump-flows SWITCH FLOW print matching FLOWs(打印流表)
- show SWITCH show OpenFlow information(显示SWITCH的OpenFlow信息)
- dump-tables SWITCH print table stats(打印表统计信息)
- dump-ports SWITCH [PORT] print port statistics(打印端口统计信息)
- add-flow SWITCH FLOW add flow described by FLOW(通过流的描述来添加流)
- del-flows SWITCH [FLOW] delete matching FLOWs(删除匹配的FLOW,后面加条件,比如in_port=1)
- -V,–version display version information(显示交换机版本信息)
- -O, --protocols set allowed OpenFlow version(default: OpenFlow10, OpenFlow11, OpenFlow12, OpenFlow13, OpenFlow14)(设置允许的OpenFlow版本,后面是默认值)
示例
show
显示交换机的动作列表,缓存大小等信息
显示交换机信息
-V --version
显示交换机的版本信息
显示交换机版本信息
其余部分命令,在SDN-流表分析与增删改查中有具体的使用情况。
ovs-vsctl命令
ovs-vsctl的帮助信息
常用选项
- show print overview of database contents(显示数据库内容的打印概述,查看网桥)
- add-br BRIDGE create a new bridge named BRIDGE(创建一个名为BRIDGE的新网桥)
- del-br BRIDGE delete BRIDGE and all of its ports(删除BRIDGE及其所有端口)
- add-port BRIDGE PORT add network device PORT to BRIDGE(将网络设备PORT添加到BRIDGE)
- del-port [BRIDGE] PORT delete PORT (which may be bonded) from BRIDGE 从BRIDGE删除PORT(可能是绑定的)
- del-controller BRIDGE delete the controllers for BRIDGE(删除BRIDGE的控制器)
示例
占个坑
ovs-ofctl命令
ovs-ofctl命令帮助
和dpctl显示的是一样的
常用选项
- dump-flows SWITCH FLOW print matching FLOWs(打印流表,后面需要添加参数,即交换机名)
- show SWITCH show OpenFlow information(显示SWITCH的OpenFlow信息)
- dump-tables SWITCH print table stats(打印表统计信息)
- dump-ports SWITCH [PORT] print port statistics(打印端口统计信息)
- add-flow SWITCH FLOW add flow described by FLOW(通过流的描述来添加流)
- del-flows SWITCH [FLOW] delete matching FLOWs(删除匹配的FLOW,后面加条件,比如in_port=1)
- -V,–version display version information(显示交换机版本信息)
- -O, --protocols set allowed OpenFlow version(default: OpenFlow10, OpenFlow11, OpenFlow12, OpenFlow13, OpenFlow14)(设置允许的OpenFlow版本,后面是默认值)
示例
dump-flows SWITCH
dump-flows
dpctl命令的这个dump-flows选项默认打印所有交换机的,这个必须得添加参数。
del-flows
后面需要至少一个参数,也可以多个,例如删除交换机s1中所有入端口2的流表项,sh ovs-ofctl del-flows s1 in_port=2
del-flows命令-删除交换机s1的所有流表项
add-flows
后面加两个参数 交换机 以及端口动作等信息
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhZHlfa2lsbGVyOQ==,size_16,color_FFFFFF,t_70)
del-flows命令-删除交换机s1的所有流表项
add-flows
后面加两个参数 交换机 以及端口动作等信息
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-fXBOib7N-1713401292387)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!