前言
在之前的Python系列的隨筆中,我跟小夥伴們講述了Python-AES加密演算法介面測試和Python-SHA256加密演算法介面測試,今天我們來學習一下登入密碼是md5加密的情況下,該如何使用python進行介面測試。
一:先來看一下python是如何把字串加密成MD5字串的
import hashlib #匯入匯入模組hashlib def MD5_demo(str): md= hashlib.md5()# 建立md5物件 md.update(str.encode(encoding='utf-8')) return md.hexdigest() if __name__=="__main__": # 待加密資訊 str = 'abcd123456' md5_str = MD5_demo(str) print('加密後為 :' + md5_str)
MD5加密後的結果顯示:
注:
- hexdigest()在英語中hex有十六進位制的意思,因此該方法是返回摘要,作為十六進位制資料字串值
- update(str.encode(encoding='utf-8'))這個函式裡面需要對字串進行編碼,否則會報TypeError: Unicode-objects must be encoded before hashing
二:下面以禪道登入介面為本次練習(禪道登入密碼是MD5加密的)
通過fiddler抓包發現,禪道登入的密碼是加密處理的:
Python程式碼如下:
import requests import hashlib def MD5_login(str): zt_pwd = hashlib.md5() zt_pwd.update(str.encode(encoding='utf-8')) return zt_pwd.hexdigest() password = 'zhang123456' #登陸的使用者密碼=='123456' url = 'http://10.80.136.16/zentao/user-login-L3plbnRhby9teS5odG1s.html ' data = {'account':'zhangwuxaun','password':MD5_login(password),'referer':'/zentao/'} response = requests.post(url,data=data) # 傳送post請求 print(response.content.decode('utf-8'))
返回的結果: