- 博客(44)
- 收藏
- 关注
原创 如何阻止 Python 类属性被修改的实现
这里对属性赋值并不会抛出异常,使用者以为他修改成功,实际上并没有,而只是动态添加了新的属性。问题不止如此,这种方式也导致这个类在被继承时出现问题,子类在内部函数调用。前头提到有些类属性不希望在实例化后被用户更改,该怎么实现这一效果?参数定义一个只读实例,一旦初始化后就拒绝对其内部属性进行修改。,折衷的办法是将私有属性改为内部属性,即使用单下划线。)来使属性变为私有,然后提供一个只读的属性(即只定义。, 因为该属性的命名此时被转化为。时会抱错,因为此时的属性名是。被定义为私有属性,如果执行。
2024-08-23 16:57:06
387
原创 Python 设计模式之享元模式
这段定义显然不够清晰,那我们配合着图形与案例看它们的关系:对于我们的 MP3 实例而言,它应该是由内在状态(属性)和外在状态(属性)组成fill:#333;color:#333;color:#333;fill:none;MP3 对象属性intrinsic 内部属性extrinsic 外部属性显然除了和两个属性是用户在拥有设备后可以更改的属性,其他的属性无法修改(这里指的是现实商品层面的无法修改,我们并没有在代码实现上阻止调用者修改这些实例属性)flyweight对象具有 MP3 实例的内部属性。
2024-08-15 20:38:47
936
原创 Python 设计模式之适配者模式
常见的生活例子:去欧美国家旅游时,由于插口和电压不一样,用中国国内的充电器并不能充电,需要借助电源适配器解决问题。适配者模式属于结构型设计模式,它的目的是使不兼容的两个对象能够相互工作。对象适配器,这种方式比较符合我们的经验习惯,先看下它的实现结构图。,并对其中 target 的接口函数进行重写来达到目的。就是代码中两个类对象,为了让它们能顺利工作,通过引入一个。实例对象),并用这个对象调用其不兼容的函数。),而这个接口函数的实现实际上是封装了。的区别在于使用的时候,它不再需要传入。
2024-08-12 14:30:02
1090
原创 Python 设计模式之单例模式
单例模式是一种创建型设计模式,其目的是为了保证一个类仅有一个实例,并提供一个访问它的全局访问点,这么做有时是为了限制对共享资源的并发访问。可以看到程序中不但增加锁,还进行 double-check,这样做的原因可以看下面这张流程图,可以看到在 thread2。这是经典的单例实现方式,通过这种方式实现的类只会在没有其他实例存在时,才会创建一个实例,否则它只会返回已经创建的类实例。函数中的初始化操作会被重复执行,覆盖掉实例变量之前对实例变量的操作,因此共享数据需要保存在类变量中。职责组合在一起,这不利于维护。
2024-08-08 13:13:07
1116
原创 Python 设计模式之工厂函数模式
模式定义在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。这里的工厂父类是指抽象创建者Creator, 它提供了一个需要被实现的抽象方法, 而让其子类在这个函数里实现实例化对象时的定制逻辑工厂方法模式建议使用特殊的工厂方法代替对于对象构造函数的直接调用。而上面的案例用具体创建者的函数(工厂方法) 代替直接使用Bus()(即客户端直接使用模式结构。
2024-08-07 20:16:00
926
原创 Python 设计模式之建造者模式
只需关注他需要创建的公司是哪种类型的(海外公司还是国内公司,不同类型的公司它的行为和属性是不同的),并且他可以任意的添加他想要的部分(部门,当然这里将这个实现简略为往列表中添加元组,而在其他例子中,可能会用菜品或者零件来替代)。你可能会觉得这个实现看起来更复杂了,确实是这样,这是这种设计模式在简单对象上的缺点,但如果现在这个对象的属性足够复杂,并且需要根据不同的需求生成不同风格的。当你需要创建不同形式的产品时, 其中的一些构造步骤可能需要不同的实现。到此为止,你已经接触了建造者模式的初级版本!
2024-08-02 20:33:19
896
原创 Python 设计模式之抽象工厂模式
常见的例子是在家具商城中,有家具产品:椅子和沙发等等;如果用户期望一批日式风格的家具,你就得给它一批日式风格的家具。作为客户端代码的开发者会更希望自己不需要关注生产中式风格的椅子用哪个类、日式风格的椅子又是哪个类。假设现在客户端代码希望通过调用代码,生产出一批家具,这批家具必须风格一致。抽象工厂模式属于创建型设计模式,一般用来创建复杂的对象,这种对象由许多小对象组成,这些小对象都属于某个特定的类别。函数可以理解为客户端代码,我们看到在生产某种风格的产品时,代码需要知道用。基于这样的设想,可以预见我们的。
2024-08-01 23:25:52
1159
原创 怎么通过 ssh 访问远程设备
由于 windows 系统支持 linux 子系统,这里就不提 windows 命令行怎么支持 ssh,而是以 linux 环境为使用前提。想把老电脑作为服务器使用,同时也为后面直接在新电脑中支持 vscode 访问编辑代码,所以需要配置 ssh 服务支持。我这边是在 fedora 系统中操作,所以软件包管理命令用的是。安装完该组件后,ssh 服务会自动启动,可以通过命令查看服务状态。若上面的命令提示命令不存在,那么需要安装下 ssh 客户端组件。为了让服务能够在电脑启动时启动,可以使用下面的命令。
2024-08-01 13:09:57
298
原创 从“ Python 内置的字典是线程安全的吗?”谈起
因此,字典类型在多线程环境中并不是线程安全的,因为它的操作不满足原子性,需要额外的同步机制(如锁)来保证在多线程环境下的正确使用。忽略上面的 LOAD_FAST 和 LOAD_CONST, 可以看到第一种赋值操作只涉及一条指令的执行,这条指令执行是原子性的,所以这个赋值操作是线程安全的;简单的说就是在实现的时候 CPython 解释器假定只有一个线程执行 python 的字节码,保证单一操作的原子性,使类似于 dict 这个数据类型隐式的线程安全。那么对于 python 变量的赋值是原子性的吗?
2024-07-25 14:19:46
337
原创 CVE-2019-2725漏洞复现
CVE-2019-2725漏洞复现????Author:IronDate:2020-07-10漏洞描述漏洞发布日期:2019-4-17Weblogic反序列化远程代码执行漏洞。由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送特意构造的恶意HTTP请求,利用该漏洞获取服务器权限,实现远程代码执行。漏洞原理该漏洞存在于wls9-async组件,该组件为异步通讯服务,攻击者可以在/_async/AsyncResponseService路径下传入恶意的xml格式的数据,传入的数据在
2020-07-23 11:45:20
4451
2
原创 cve-2019-0708漏洞复现
CVE-2019-0708漏洞复现记录测试:IronDate:2020-06-24远程执行代码漏洞的攻击文章目录CVE-2019-0708漏洞复现记录漏洞描述漏洞复现复现环境说明检验靶机环境是否满足攻击条件kali-操作判断靶机的漏洞是否可利用进行攻击重试漏洞应对方案打补丁缓解变通方法参考链接变通方法参考链接漏洞描述远程桌面服务远程执行代码漏洞当未经身份验证的攻击者使用RDP连接到目标系统并发送经特殊设计的请求时,远程桌面服务中存在远程执行代码漏洞。此漏洞是预身份验证,无需用户交互。成功利
2020-07-23 11:32:26
6060
原创 CVE-2019-11581漏洞复现
CVE-2019-11581漏洞复现Author:IronDate:2020-07-20文章目录CVE-2019-11581漏洞复现@[toc]参考链接漏洞描述产品描述漏洞描述漏洞影响版本靶机环境搭建环境版本安装Jira配置Jira漏洞复现发起攻击攻击效果前后对比参考链接下载地址安装教程漏洞信息漏洞描述产品描述Atlassian Jira是澳大利亚Atlassian公司的一套缺陷跟踪管理系统。该系统主要用于对工作中各类问题、缺陷进行跟踪管理。漏洞描述攻击者可以利用此漏洞对运行受影响
2020-07-23 11:01:23
1867
原创 CVE-2014-6287漏洞利用
目录CVE-2014-6287漏洞利用漏洞描述参考链接漏洞描述漏洞威胁版本漏洞复现靶机环境准备攻击浏览器方式脚本方式kali-msf工具复现结论CVE-2014-6287漏洞利用漏洞描述参考链接CVE-2014-6287漏洞描述发布时间:2014-09-15漏洞平台:windows漏洞应用:HttpFileServer_v2.3_search命令执行漏洞HTTPFileServer是一款专为个人用户所设计的HTTP文件服务器。Rejetto网站提供的HTTPFileServer 2.3b
2020-07-23 10:40:39
1495
原创 python tkinter运用-实现内容传输工具
目的博文目的:分享这个不成熟的小案例,希望能给还在tkinter控件整合上没有思路的同志一些参考。案例目的:在无法访问互联网的情况下,实现一个局域网内机器传输文件和文本的工具效果图实现内容发送与接收关于内容的发送与接收,脚本主要运用socket套接字实现客户端或服务器端,点击按钮[启动监听]的过程实际上是程序创建一个监听指定端口的服务端,而发送内容的过程则是向目标程序的服务端发起交互的过程另一个问题是对于文件和文本的接收处理方式是不同的,如果接收到的是文本,我们要将文本内容
2020-06-14 16:53:44
1717
2
原创 Tor环境搭建&tor链路IP限定配置
Tor隐匿环境搭建Author:HJY[参考链接]官方安装tor步骤说明官方配置说明背景信息tor的配置文件的路径 /etc/tortor服务的端口为9050,若使用Tor浏览器其配置端口为9150tor本质是一个socks代理,而非HTTP代理,代码上需注意,可以使用Polipo实现HTTP代理转Socks代理环境描述基于ubuntu-1604,命令运行正常网络链...
2019-09-04 10:28:37
10500
1
原创 suricata的基本使用
suricatasuricata安装规则管理 Oinkmaster依赖apt-get install liblua5.1-dev #配置支持lua,--enable-luaapt-get install libgeoip-dev #配置支持GeoIP,--enable-geoipapt-get install cargo #配置支持Rustsuricata配置相关设置EXTER...
2019-09-04 10:26:57
6084
1
原创 vagrant_虚拟机管理
vagrantVagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。团队新员工加入,常常会遇到花一天甚至更多时间来从头搭建完整的开发环境,而有了Vagrant,只需要直接将已经打包好的 package(里面包括开发工具,代码库,配置好的服务器等)拿过来就可以工作了,这对于提升工作效率非常...
2019-09-04 10:24:37
448
原创 python3-urllib_Handler_1
本文主要讲述如何基于python3.x的urllib库(官方标准库),实现自定义的Handler处理器,代码中实现的效果可以用其他简单的方式实现,这里只是举例语言版本:Python 3.7测试链接:http://httpbin.org前述通常我们请求一个链接的python代码写法是:import requestsurl = "http://httpbin.org/get"res...
2019-08-09 17:36:36
1718
原创 About Python字典的学习笔记_1
在对字典进行迭代的过程中进行字典的修改操作是危险的!Author:IronDate: 2019/7/4在插入新值时,Python 可能会按照散列表的拥挤程度来决定是 否要重新分配内存为它扩容。如果增加了散列表的大小,那散列值 所占的位数和用作索引的位数都会随之增加,这样做的目的是为了减少发生散列冲突的概率。如果你在迭代一个 字典的所有键的过程中同时对字典进行修改,那么这个循环很有可能会...
2019-07-04 21:23:00
149
原创 python tkinter Button控件上的图标或文字的变化
实现目标点击按钮,实现属性的变化,根据状态的不同做区分操作效果图实现方式-1import tkinter as tkdef click1(): global flag_pic flag_pic = not flag_pic if flag_pic: btn_1['image']=pic_2 else: b...
2019-06-20 15:29:35
13546
原创 Python Requests模块的扩展使用笔记
今天学习了两篇Rytis Sileika的博客:Quick way to check for URL redirectsHow to check if a web page exists1、Quick way to check for URL redirects这篇博客主要讲了一个关于如何判断一个网页链接是否会引发重定向的python脚本实现。代码如下:import sysimpo...
2019-05-31 19:21:06
283
原创 Python爬虫-页面智能化解析技术
爬虫爬取页面时,需要对页面进行信息解析提取,智能化解析则可以减少这一部分的工作时间,避免大规模的一旦目标网站网页源码变更,就需维护的问题。Diffbot:专门做智能化解析服务的公司Boilerpipe:Java 语言编写的一个页面解析算法,Embedly:提供页面解析服务的公司Readability:是一个页面解析算法,但现在官方的服务已经关闭了Mercury:Readability ...
2019-05-31 13:27:28
1889
原创 使用python itchat模块实现微信聊天机器人_code
我们希望这个简单的代码实现支持下面几点功能:支持对分享的文章的响应支持对群聊中@的信息的响应支持对某些信息进行自动回复支持对(1对1聊天或是群聊)撤回的信息的显示支持对群聊特定人的设置,即群聊中只有该被设置人发信息时会得到机器人的响应支持对私聊特定人的设置,即私聊会话中只有他才会收到某些特定的自动回复信息相关参考itchatAPI 列表一件有趣的事:我用 Python 爬...
2019-02-12 10:02:47
1010
2
原创 Python http.server模块学习1_code
http.serverOne class, HTTPServer, is a socketserver.TCPServer subclass. It creates and listens at the HTTP socket, dispatching the requests to a handler.HTTPServer,父类是socketserver.TCPServer,用于创建HTT...
2019-01-15 13:31:44
2053
原创 b4_python与msf交互实现的自动攻击
本文是草稿,很多未整理完 ! 各位凑合着看先延续b3文提到的思路,这里提供实现的方式。step1文件startConfig.rcstart_msf.pypython借助pymsf模块与msf的msgrpc插件实现交互控制,那么前提就是我们已经启动了msf,并且加载了msgrpc插件,完成了msgrpc的配置。我们这里利用msf中的resource script章节提到的.rc文件...
2019-01-09 09:50:22
2207
原创 python tkinter控件treeview的数据列表显示的实现_code
素材文件result.txt result2.txtresult.txt文件的数据来源是爬取猫眼电影前一百名的电影,而result2.txt文件只不过是内容上把result.txt的内容复制几十次,使其数据足够多,现截选如下:{"排名": "1", "片名": "霸王别姬", "主演": "张国荣,张丰毅,巩俐", "上映时间": "1993-0
2019-01-08 23:00:27
24656
8
原创 b3_python interact with metasploit(msf)
python interact with Metasploit参考资料Python for Metasploit Automation中文翻译《Python for Metasploit Automation》需要安装msgpack python模块,因为后面使用到的msfrpc模块依赖于这个模块,这两个模块的安装都可以使用源码安装的方式,因为pip install的方式如果失败的...
2019-01-07 12:00:08
317
原创 b2_自动攻击_db_autopwn
目标:实现对目标主机进行自动漏洞攻击1 采用db_nmap + db_autopwn关于db_autopwn:The db_autopwn command is not officially supported and exists only in a branch.not well maintained,crashes systems,and crashes itselfuse on...
2019-01-07 11:55:18
1717
原创 b1_网络漏洞扫描
利用一些自动化的工具来发现网络上各类主机设备的安全漏洞,即漏洞扫描器使用Nmap具有狙击的效果,使用openvas具有扫射的效果笔记主要寻求一种能结合sock5代理进行网络漏洞扫描的方案,因为进行攻击的电脑 与被攻击的电脑处于不同的网络,但被攻击的网络中存在攻击者阵营的mobile phone,借助其提供的sock5代理通道访问该被攻击网络。那么,攻击者的电脑可以因此发起漏洞扫描吗?ope...
2019-01-07 11:51:31
566
原创 python tkinter与Mysql数据库交互实现账号登陆_code
本例已经实现的数据库password,数据库的表以及表结构如下:表中已经插入的信息:实现思路无非是用户完成账户密码输入并点击登录按钮后,程序先进行数据库连接,然后根据用户提供的参数,发出相应的查询语句,根据返回的查询结果给出相应的响应。代码实现 # -*- coding: utf-8 -*-"""Created on Tue Nov 6 14:29:54 201...
2019-01-03 16:52:44
4745
6
原创 python tkinter实现界面切换_code
跳转实现思路主程序相当于桌子: import tkinter as tk root = tk.Tk() 而不同的Frame相当于不同的桌布: face1 = tk.Frame(root) face2 = tk.Frame(root) ...每个界面采用类的方式定义各自的控件和函数,每个界面都建立在一个各自定义的Frame上,那么在实现...
2019-01-03 16:43:53
42766
26
原创 虚拟机桥接模式的配置
桥接模式不同于NAT共享模式,NAT共享模式中虚拟机的IP网段与主机的IP网段并不一致,当虚拟机访问网络时通过NAT转换成主机IP访问外部网络,而桥接模式则相当于主机与虚拟机在同一个网段下,使用各自的IP。由于测试需要,目前有主机win7系统、虚拟机A(linux kali系统)、虚拟机B(win7系统),因此有:虚拟机A的桥接配置虚拟机B的桥接配置无法上网与ping不通的问题...
2018-12-06 11:11:54
683
原创 Linux kali虚拟机利用msf框架对win7的永恒之蓝渗透
Linux kali虚拟机利用msf框架对win7的永恒之蓝渗透术语渗透攻击(exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。攻击载荷(payload),是我们期望目标系统在渗透攻击之后去执行的代码shellcode,是在渗透攻击时作为攻击载荷运行的一组机器指令,通常用汇编语言编写模块(Module),指Metasploit框架中所使用...
2018-12-06 11:06:25
10712
3
原创 二叉查找树的Python实现
二叉查找树,即左孩子小于根节点,右孩子大于根节点。对于每一次新的节点插入操作,依据这个规则进行插入,最终使得树的最右端为最大值,最左端为最小值。由于二叉查找树是进入AVL平衡二叉树的学习的前提,因此先进行这个的实现。 可以通过对节点的info属性进行赋值,以作查找验证,直接运行也可以# -*- coding: utf-8 -*-"""Created on Tue Dec ...
2018-12-04 15:37:10
469
原创 堆排序算法基于二叉树数据结构的python实现
堆排序的原理略,此处只是作为记录,提供整个代码的实现,其中每个细节会给出注释和函数的设计思路(代码末尾)。注:堆排序算法的实现,以数组结构来实现要简洁高效!此处只是作为练手使用,由于堆排序的数组实现已经有很多,此处略。自定义模块:这个模块我们只用到其节点对象的创建、根据数组生成完全二叉树的函数、根据节点在二叉树的层序(层序遍历时的顺序)找到节点的引用等信息的函数。至于其他的遍历等函数...
2018-11-22 11:02:51
264
原创 快速排序法的Python实现
快速排序法的原理对于一乱序数组,进行排序,排序过程:任取一位作为flag(比较位),比它小的在左边,比它大的在右边,这样的操作为一轮快速排序;对flag两边的序列分别执行同样的操作,n轮后,数组有序;对于每一轮快速排序,又可细化为如下过程:对于待处理序列A,有序列长度为length,赋索引 i = 0 ,j = length -1, 取序列第一个元素作为flag, flag = A[...
2018-11-12 15:55:12
321
原创 Numpy学习疑难杂录——读《python数据分析》
Numpy.loadtxt函数的使用从函数名的字面意义上理解,该函数用于从文本文件中载入数据到numpy数组。参照书籍《Python Data Analysis》(中译名:《python 数据分析》)中3.2节的示例,意图对csv文件进行数据导入时出现错误。data = np.loadtxt("hjy.csv",delimiter=',',skiprows=2,unpack=True)...
2018-11-05 16:49:32
321
原创 Tcpreplay与DPDK的收发包测试实验(草稿,未完整)
主实验文档实验环境:服务器设备有网卡数张,其中网卡A连网,网卡B被DPDK绑定,网卡C与网卡B直连。 服务器已经搭建好DPDK环境,已经装好tcpreplay、tcpdump等相关工具 本人使用另一台电脑访问服务器进行操作 注:一般装好tcpreplay之后,其他的套件也在tcpreplay安装时安装了。网络拓扑大致如下:我们的目的是使用tcpreplay工具从C网卡向B网卡发...
2018-11-05 14:33:28
3106
3
原创 冒泡排序法&定向冒泡排序法的Python实现
冒泡排序法冒泡排序法:每轮对相邻的两者进行比较,若顺序不对,则进行位置互换,每轮都将使每轮的最后一位是该轮的大数。比如在数列:[71, 1, 14, 78, 75, 38, 10, 49, 40, 95]第一轮交换:71>1 ==> [1, 71, 14, 78, 75, 38, 10, 49, 40, 95]; 71>14 ...
2018-10-17 14:42:54
2460
原创 汉诺塔问题求解的Python实现
问题描述:有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个盘(详细的图,自己查询)游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上误区 这个问题如果陷进去每一步的细节,那将是错误的,比如考虑每一步移动时是否比目标杆的顶端盘...
2018-10-16 09:35:42
641
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人