主頁 >  其他 > 黑客攻防之告別腳本小子-----精簡實用滲透測驗python小白入門

黑客攻防之告別腳本小子-----精簡實用滲透測驗python小白入門

2021-07-29 08:42:18 其他


title: python入門

文章目錄

    • title: python入門
    • 一、變數
    • 二、輸出
    • 三、字串處理的常用方法
    • 四、串列
    • 五、元組、字典和迭代
    • 六、if選擇
    • 七、例外
      • try/except陳述句
    • 八、函式
    • 九、For回圈
    • 十、檔案
    • 十一、匯入模塊
    • 十二、sys模塊
    • 十三、os模塊
    • 十四、多執行緒
    • 十六、Optparse模塊

一、變數

  • Python中的變數不需要宣告,可以直接通過賦值來創建變數,變數賦值通過“=”實作
  • 變數賦值時應該注意資料型別,
  • 可以同時為多個變數賦值,但變數與數值的個數必須相等們之間用逗號隔開,
  • 變數名盡量具有現實意義,不能使用系統保留的關鍵字作為變數變數名,

二、輸出

  • print陳述句可以同時輸出多個元素,元素之間用逗號","隔開,print遇到逗號會輸出一個空格,

  • 如果希望輸出的內容之間沒有空格,可以把他作為字串連接在一起,此時資料型別必須保持一致,

    1、str(prots)強制轉為為字符型,
    2、+:必須是相同的型別,

  • print陳述句在輸出的內容后面會自動加上一個換行符號\n,如果在輸出的內容后面跟上逗號,換行就取消了,

三、字串處理的常用方法

在Python中一切皆物件,每個字串都是一個物件,

  • 使用dir可以查看物件的使用方法,

  • 使用help命令可以查看某個方法的幫助資訊,

  • split方法

    將字串根據某個分隔符今次那個分割,分割之后得到一個串列,
    c.split(".")

  • in

    in不是一個方法,是一個陳述句
    true or false

site="www.baidu.com"
web="baidu"
web in site        //看看web字串在不在site字串里面,

"baidu" in "www.baidu.com"
  • strip()方法

    去除字串頭尾指定的字符,如果不指定,默認去除空格以及回車、換行等空白字符,

>>> web="www.baidu.com"
>>> web.strip(".com")
'www.baidu'
>>> web.strip("www.")
'baidu.com'

  • upper()、lower()方法

    upper()方法可以將字串轉換成大寫形成,
    lower()方法可以將字串轉換成小寫形成,

 >>> web="wWW.BaiDU.Com"
 >>> web.upper()

`WWW.BAIDU.COM'
 >>> web.lower()
'www.baidu.com'

  • center方法

    使指定的字串居中顯示,兩側再加上指定數量的字符,

>>> print "welcome".center(30,'*')
***********welcome************

四、串列

  • 在串列中可以集中存放多個資料,并且資料型別不必統一,串列用[]表示,
  • 可以通過索引來獲取串列的指定資料,索引從0開始,

    可以使用一段連續的索引,比如[0:2],這是一個左閉右開區間,他的作用就是獲取索引號是0和1的量資料,

  • 在串列中可以根據元素查出其對應的索引,這成為切體,
>>> port=[21,22,80]
>>> dir(port)
>>> port.append("ssh")  //在串列末尾追加ssh
>>> port.pop(3)   //去除標號為3的數值
>>> port.insert(3,40)  //在標號為3的位置上插入數值為40
>>> port.index(22)   //查找數值為22的標號是多少
  • 使用list()函式可以將一個字串轉為串列,
  • 通過len()函式可以統計串列中元素的個數,
>>> ip="192.168.1.1"
>>> ip.split(".")       //split以"."為分隔符分割形成一個串列
['192', '168', '1', '1']
>>> print ip.split(".")[0]+"."+ip.split(".")[1]+"."+ip.split(".")[2]+"."
192.168.1.

五、元組、字典和迭代

元組與串列相似,不同之處在于元組中的資料只能被呼叫,而不能被修改,元組用()表示,

  • 如果元組中只有一個元素,那么在元素的后面必須加上逗號,

字典的優點是具有極快的查找速度,字典使用{}定義,

  • 字典使用鍵-值(key-value)的形式存盤,每一對鍵值成為一個項,
  • 字典中的每一個鍵和它的值都是以冒號分割,同時用逗號分割兩個項,
  • 字典使用key來參考字典中某個鍵所對應的值,
>>> services={"ftp":21,"ssh":22}
>>> services
{'ftp': 21, 'ssh': 22}
>>> services["ssh"]
22
>>> services.keys()
['ftp', 'ssh']
>>> services.has_key("ssh")
True
>>> services["smtp"]=25  //修改或者添加
>>> services
{'ftp': 21, 'smtp': 25, 'ssh': 22}

通過for回圈可以遍歷串列、元組或是字典中的值,這種遍歷就成為迭代,

遍歷串列
>>> port=[21,11,80]
>>> for i in port:
...     print i,
... 
21 11 80
遍歷元組同串列,
遍歷字典
>>> services
{'ftp': 21, 'smtp': 25, 'ssh': 22}
>>> for key in services:
...     print key
... 
ftp
smtp
ssh
在遍歷字典的時候默認只能顯示字典中的鍵,要想遍歷鍵和值需要下面的,
>>> for key in services:
...     print key+":"+str(services[key])
... 
ftp:21
smtp:25
ssh:22

六、if選擇

  • if陳述句的語法格式
if True:         //python區分大小寫
	print "OK"
else:
	print "NO"
  • 冒號不能漏掉,縮進必須統一
  • 所有的python合法的運算式都可以作為條件運算式,只要運算式的值不是False、0、空值,python的解釋器都可以認為與True等價,
#!/usr/bin/env python
#coding:utf-8

if True:
    print "ok"
else:
    print "no"

print "hello!

七、例外

  • 程式運行程序中難免會出現錯誤,當python檢測到錯誤時,解釋器就無法繼續執行下去,于是拋出相應的資訊,這些統稱為例外資訊,

syntaxError:invalidn syntax //語法錯誤

  • 合理的使用例外處理可以使得程式更加健壯,具有很強的容錯性,不會因為用戶的不小心的錯誤輸入或其他運行時原因而總成程式終止,也可以使用例外處理結構為用戶提供更加友好的提示,

try/except陳述句

  • try子句中的代碼塊包含可能會引發例外的陳述句,而except子句用來捕捉相應的例外,
  • 程式執行時,如果try子句中沒有例外發生,那么except子句在try陳述句執行之后被忽略;如果try子句中有例外發生,那么該部分的其他陳述句將被忽略,直接跳到except部分,執行其后面的子句,
 精確顯示錯誤
except Exception,e:
	print e
出錯就pass掉,不顯示,
except:
	pass

八、函式

  • 函式提供了高效的可重用代碼塊
  • 根據各自特定的作用,將程式分割成互相獨立的函式是一個良好的編程式習慣,這樣便于代碼重用,并使程式更易于閱讀,
  • 通過def陳述句定義函式,函式中的內容必須縮進,return用于把函式的結果回傳,如果沒有return陳述句,函式執行后也會回傳結果,指示結果為None,return None可以簡寫為return,
  • 每一個后綴為.py檔案都會被視作一個python模塊,可以被其他的python程式呼叫,
		每個python腳本在運行的時候都有一個—__name__屬性,通過它可以識別程式的使用方式,即程式在作為模塊匯入還是獨立運行,如果程式是作為模塊被匯入,那么__name__屬性的值就被自動設定為模塊名;如果是作為腳本獨立使用,那么_name_屬性的值會被自動設定為字串"__main__",
第一種方式:
if __name_=="__main__" 
當前程式是不是獨立運行的,

第二種方式:
def main():
	程式
if __name_=="__main_"
	main()

九、For回圈

1、串列
>>> for i in [1,2,3]:
...     print i
...
1
2
3

2、通過range()函式生成連續數列
>>> for i in range(1,5):
...     print i,
...
1 2 3 4
>>>
range(初始值,終止值,步長),range得到的是一個左閉右開區間,
>>> range(1,10)   //默認步長為1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,9,2)
[1, 3, 5, 7]
>>>

十、檔案

  • 1、檔案操作的基本流程

    1、呼叫open()函式打開檔案,并創建一個File物件,
    2、呼叫File物件的read()或write()等方法,對檔案內容進行讀寫等操作,
    3、呼叫File物件的close()方法,關閉并保存檔案內容,

  • open()函式

1、通過open()函式以指定模式打開檔案并創建檔案物件:
				檔案物件=open('檔案路徑','模式')
2、檔案打開模式主要包括:
		r只只讀模式
		w只寫模式
		a追加模式
3 如果傳遞給open()的檔案名不存在,寫模式和追加模式都會創建一個新的空檔案,
  • 讀取檔案
1、read()可以一次性的讀取檔案所有內容,也可以讀取指定的前幾個位元組的資料,
			f.raed()
			f.read(12)
2、readline()方法可以從檔案中讀取一行并作為結果回傳
			f.readline()
3、readlines()方法讀取檔案,回傳一個串列,檔案的每一行作為串列的一個元素:
  • 通過字串的strip()方法將檔案中每行末尾的\n去除,

十一、匯入模塊

  • 模塊也叫庫,每個模塊中都內置了大量的功能,函式、類和變數,它就像積木,可以根據需要進行呼叫組合,
  • 模塊就是程式,每個模塊就是一個后綴為.py的Python的程式,
  • Python的模塊分布為標準模塊和第三方模塊,標準模塊是Python內置的,第三方模塊需要安裝之后才能使用,
  • 可以通過help命令了解每個模塊的基本幫助資訊,如:help(‘sys’)
1、模塊匯入方法:
		a、直接呼叫模塊:import 模塊名
		b、從模塊中呼叫某個函式:from 模塊名 import 函式名
		
2、eg:
			import os
			form os import *      //os里面的所有函式
			form os import system   //直接呼叫system()方法,
			

十二、sys模塊

  • sys是一個標準模塊,與python解釋器密切相關
  • sys.argv
1、sys.argv是一個變數,專門用來向python解釋器傳遞引數,類似于shell腳本編程中的位置變數,
#!/usr/bin/env python
#coding:utf-8

import sys
print "腳本檔案你是:",sys.argv[0]
print "用戶輸入的引數數量:",len(sys.argv)-1
print "所有的引數:",sys.argv
print "用戶輸入的第一個引數:",sys.argv[1]
print "用戶輸入的第二個引數:",sys.argv[2]
print "用戶輸入的第三個引數:",sys.argv[3]
運行結果: 
腳本檔案你是: ./sys.py
用戶輸入的引數數量: 3
所有的引數: ['./sys.py', 'me', 'you', 'he']
用戶輸入的第一個引數: me
用戶輸入的第二個引數: you
用戶輸入的第三個引數: he
                                    
  • sys.exit()
1、sys.exit()是一個方法,作用是退出當前程式
	sys.exit(),退出當前程式,并回傳systemExit例外
	sys.exit(0),正常退出
	sys.exit("退出程式"),顯示一段提示資訊,
	
if len(sys.argv) != 2:
    print "正確使用方法:"+sys.argv[0] + "IP串列檔案"
    print "例如:./sys.py /root/ip.txt"
    sys.exit()

十三、os模塊

  • os模塊提供了訪問作業系統服務的功能,
  • 它最常用的是os.system()方法,可以在Python中使用作業系統命令,
1、os.system("ls /root")

2、os.path.isfile()方法,判斷指定的物件是否為檔案,回傳True或False,
		os.path.isfile("/root/pass.txt")
		
3、os.path.isdir()方法,判斷指定的物件是否為目錄

4、os.path.exists()方法,判斷指定的物件是否存在

十四、多執行緒

  • 行程是執行緒的容器,執行緒是作業系統調度和分配處理器時間的基本單位,負責執行包括在行程地址空間中的代碼,
  • 當行程被創建時,作業系統會自動為之創建一個執行緒,稱為主執行緒,主執行緒會更具需要動態創建其他子執行緒,
  • 通過threading模塊中的Thread()類可以創建和管理執行緒物件
t=threading.Thread(target=需要執行的函式,args=(向函式傳遞的引數))
t.start()     執行

十六、Optparse模塊

  • 利用該模塊可以設定選項,通過選項向腳本傳遞所需要的引數
  • %prog表示當前腳本的檔案名
  • 每個程式都是自帶有-h選項
#!/usr/bin/env python
#coding:utf-8

from optparse import OptionParser
usage="Usage:%prog -f <filename> -i <ip address>"
parser=OptionParser(usage=usage )
parser.add_option("-f","--file",type="string",dest="filename", help="IP file")     //選項
parser.add_option("-i","--ip",type="string",dest="address",help="IP address")
(options,args)=parser.parse_args()        //固定格式,parse_args()方法獲取定義的選項和引數

print options.filename
print options.address

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290772.html

標籤:其他

上一篇:Linux-CentOS 7.9 - 7、Linux 常用運維命令&操作(高級)建議收藏

下一篇:關于docker那點事兒——初識docker

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more