日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python gevent模块 下载_【python安全攻防】包、模块、类、对象

發布時間:2024/7/5 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python gevent模块 下载_【python安全攻防】包、模块、类、对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

終于又到了一周一度的整理博客的時間了,博主平時課余時間看書,周末統一整理,堅持周更真是愛了愛了 ~


今天要說的是python面向對象這一部分的內容,今天這是基礎篇的第二篇,也是最后一篇。

說來基礎篇還真是少呢,第一篇說了一下函數部分比較難理解的閉包和裝飾器,今天說一下模塊、包、對象、類這部分。當然中途還有很多東西也很重要啊。

  • 基礎語法:尤其是字符串、列表和字典的操作,以及循環、判斷的使用
  • 文件處理:主要是文件的讀寫
  • 異常處理:因為我們前期寫的頂多就是些小腳本,輔助滲透用,沒必要了解太多異常處理
  • 這三部分,有一點編程基礎的,網上找篇博客隨便看看就能懂,不會的等遇到了直接百度,也比我現在寫篇博客節省時間,所以就沒寫,但是我肯定都看了,哈哈。

    因為平時滲透過程中,我們經常會用到別人寫的腳本,或者使用滲透測試框架時也需要自己動手寫POC/EXP之類的,甚至以后可能會自己寫一些python腳本,所以python的函數、對象等等這部分內容是非常重要的。

    我希望今天這部分結束后,我們至少可以做到能讀懂別人的腳本,于是我就去隨便下了一個dirmap,等下在文章最后,大家和我一起讀一下源碼!


    那廢話不多說,開始今天的內容,包-> 模塊-> 類-> 對象-> 方法,咦?為什么加個箭頭呢?因為它們的關系確實如此:

  • 模塊:就是.py文件
  • 包:就是一群.py文件所在的目錄
  • 類:狗就是一個類
  • 對象:對象就是類的實例化,比如哈士奇、金毛、阿拉斯加
  • 方法:實現具體邏輯的代碼
  • 如果一個目錄下是一堆python文件,且其中有一個__init__.py的話,那這個目錄就是包,且目錄名稱就是包名。

    我們可以使用import導入包/模塊:

    # 導入包 import [包名1],[包名2]# 導入模塊 from [包名] import [模塊名1],[模塊名2]

    模塊

    一個python文件就是一個模塊,且文件名就是模塊名。

    我們可以使用import導入模塊/函數

    # 導入模塊 import [模塊名1],[模塊名2]# 導入函數 from [模塊名] import [函數名1],[函數名2]

    從類開始,就是代碼層面的了,類具體定義如果不知道的建議學一門面向對象的語言,這玩意解釋起來太多了,網上文章也太多了,我不想寫。

    放一段最基本的python代碼,先拋開面向對象編程的思想:聲明一個類,里邊有個方法,用來打印一句話

    # 先聲明一個Test類 class Test():def print_test(self, perm):print(perm)# 實例化一個test對象 test = Test()# 調用print_test方法 test.print_test('白帽子續命指南')

    執行結果

    白帽子續命指南

    對象

    對象就是對類的實例化,具體語法格式如下:

    # 對象名 = 類名() test = Test()

    方法

    就是實現具體功能的代碼

    在類里邊寫它的主要邏輯,注意寫的時候要加上self參數,這個必須加(除了類方法和靜態方法,這兩個不討論)。語法格式為:

    class Test():def print_test(self, perm):print(perm)

    創建一個實例對象之后,可以調用,調用格式:

    # 對象名.方法名(參數) test.ptint_test('白帽子續命指南')

    除此之外,方法也分很多種,比如帶下劃線的,還有類方法、靜態方法等等,這里不細說,遇到了再去百度。簡單說三種:

  • 前邊有兩個下劃線的:私有的,只有類自己可以訪問,連子類都不能訪問
  • 前邊有一個下劃線的:保護變量,只有類和子類能訪問,言外之意就是不能import
  • 左右各兩個下劃線的:系統的
  • 繼承

    繼承就是子類和父類那一塊的,語法格式為:

    # 父類 class Cat():pass class Animal():pass# 子類 class Kitty(Cat, Animal):pass

    這樣,Kitty這個類就繼承了Cat和Animal這兩個類的所有屬性和方法(屬性就是變量)。

    重寫

    重寫就是繼承一個父類后,對父類中某個方法重新寫一下。

    語法上保證方法名和參數列表都一樣,就OK了:

    # 父類 class Cat():def print_cat(self):print('喵~') class Animal():def print_live(self):print('活的')# 子類 class Kitty(Cat, Animal):def print_live(self):print('死了')test = Kitty() test.print_live()

    執行結果

    死了

    讀源碼

    項目地址:https://gitee.com/c0ny10/dirmap

    首先,下載好dirmap的源碼后,進入到dirmap/中,看看都有什么。

    . ├── LICENSE ├── README.md ├── README_EN.md ├── data │ ├── crawl_mode_suffix.txt │ ├── dict_mode_dict.txt │ ├── dictmult │ │ ├── BAK.min.txt │ │ ├── BAK.txt │ │ └── LEAKS.txt │ ├── fuzz_mode_dir.txt │ ├── fuzz_mode_ext.txt │ ├── fuzzmult │ │ ├── fuzz_mode_dir.txt │ │ └── fuzz_mode_ext.txt │ └── user_agents.txt ├── dirmap.conf ├── dirmap.py ├── doc │ ├── blast_mode.png │ ├── crawl_mode.png │ ├── dict_mode.png │ ├── dirmap.png │ ├── donate.jpg │ ├── fuzz_mode.png │ └── recursive_scan.png ├── lib # 想這個lib/下面有__init__.py,說明這個就是一個包啊 │ ├── __init__.py │ ├── controller # 這也是包 │ │ ├── __init__.py │ │ ├── bruter.py # 這就是所謂的模塊 │ │ └── engine.py │ ├── core │ │ ├── __init__.py │ │ ├── common.py │ │ ├── data.py │ │ ├── datatype.py │ │ ├── enums.py │ │ ├── option.py │ │ └── setting.py │ ├── parse │ │ ├── __init__.py │ │ └── cmdline.py │ ├── plugins │ │ ├── __init__.py │ │ └── inspector.py │ └── utils │ ├── __init__.py │ ├── config.py │ └── console.py ├── requirement.txt └── thirdlib├── IPy│ ├── AUTHORS│ ├── COPYING│ ├── ChangeLog│ ├── IPy.py│ ├── MANIFEST.in│ ├── Makefile│ ├── README│ ├── example│ │ ├── confbuilder│ │ └── confbuilder.py│ ├── setup.py│ ├── test│ │ ├── test.rst│ │ ├── test_IPy.py│ │ └── test_fuzz.py│ └── test_doc.py└── colorama├── __init__.py├── ansi.py├── ansitowin32.py├── initialise.py├── win32.py└── winterm.py15 directories, 61 files

    看到有一個dirmap.py的文件,查看這個文件內容。

    把代碼復制過來,然后我給加上中文注釋(我的注釋,為了區分,前邊用兩個#):

    c0ny100@dingzongdeMacBook-Air dirmap % vim dirmap.py ## 以"#!"開頭的,是用來指定python解釋器的,這里是python3 ## 如果不指定你就不能用"./dirmap.py"來執行了 #!/usr/bin/env python3 # -*- coding: utf-8 -*-## 這里是作者信息,沒什么好說的 ''' @Author: xxlin @LastEditors: xxlin @Date: 2019-04-10 13:27:59 @LastEditTime: 2019-05-01 17:57:11 '''## 導入了兩個模塊 import os import sys## 這里的gevent是第三方庫 ## 從gevent導入了一個monkey模塊并調用了patch_all()方法 from gevent import monkey monkey.patch_all()## 這里用了好幾個點來導入,明顯是文件路徑 ## 我們知道python默認從當前目錄開始搜,所以這個lib應該在dirmap.py的同級目錄 from lib.controller.engine import run from lib.core.common import banner, outputscreen, setPaths from lib.core.data import cmdLineOptions, conf, paths from lib.core.option import initOptions from lib.parse.cmdline import cmdLineParser## 這個main函數就是用來調用剛剛導入進來的方法 def main():"""main fuction of dirmap """# anyway output thr banner informationbanner() # set paths of project paths.ROOT_PATH = os.getcwd() setPaths()# received command >> cmdLineOptionscmdLineOptions.update(cmdLineParser().__dict__)# loader script,target,working way(threads? gevent?),output_file from cmdLineOptions# and send it to confinitOptions(cmdLineOptions) # run!run()## 然后最后執行一下main函數 if __name__ == "__main__":main()

    那這篇文章就是熟悉一下python代碼,至少我們現在應該能做到兩點:

  • 能看懂目錄結構
  • 能看懂python代碼
  • 至于里邊代碼怎么寫,怎么用滲透框架,怎么寫POC,怎么寫EXP,怎么寫腳本,那是我們后邊的內容,大家不要著急~

    最后,文章首發于公眾號,覺得寫的還不錯不妨關注一手。

    總結

    以上是生活随笔為你收集整理的python gevent模块 下载_【python安全攻防】包、模块、类、对象的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。