Python2.7 呼叫Windows X86 DLL檔案獲取返回報文並提取token
阿新 • • 發佈:2018-12-06
研究了我兩天,主要是對這個dll的資料型別不瞭解 不知道如何轉換,所以現在記下筆記。下面是調取win32介面工具的dll檔案進行對介面返回報文進行解碼並獲取token值。。。。。。
#!user/bin/python2.7 #coding:utf-8 import re import ctypes def get_token(respons,key): # 資料 Date = respons # 返回的報文 Key = key # 解密祕鑰 Out_Text = '' # 輸出結果 ErrorMsg = '' # 錯誤資訊 # 定義引數型別 Out_Text = ctypes.c_wchar_p() ErrorMsg = ctypes.c_wchar_p() # 呼叫dll檔案 dll = ctypes.windll.LoadLibrary('D:/DECODE.dll') r = dll.Decode_Text(Date, Key, ctypes.byref(Out_Text), ctypes.byref(ErrorMsg)) # Decode_Text為DLL中的方法 # 取值 Date_text = Out_Text.value ErrorMsg_text = ErrorMsg.value try: print(Date_text) except: print(ErrorMsg_text) # 提取返回資訊中的token #token = re.findall(r'"token":"(.+?)","',Date_text) token = Date_text[492:523] a = token[0] print('獲取到的token值為:') print(a) return token if __name__ == "__main__": a = ' ' # 返回報文 b = '<L;*3Md7'# 祕鑰 get_token(a,b)
接下來是對URL返回的資訊做提取 。。。。。。
#!user/bin/python2.7 #coding:utf-8 import re import urllib2 # 向地址傳送請求 def get_date(url): try: data = urllib2.urlopen(url).read() return data except Exception,e: print e # 將返回資訊寫入檔案 def join_File(): file = open("D:/date.txt","w") file.write(get_date(url)) file.close() def get_text(): # 讀取返回檔案 file = open("D:/date.txt",'r') list = file.read() # 提取返回資訊中的token text_list = re.findall(r'&token=(.+?)&nsrsbh',list) text = text_list[0] print('獲取到的token列表為:') print(text_list) print print('token值相同返回第一個值:') print(text) if __name__ == "__main__": url = 'http://gdcsgj.test.jchl.com/web-bsgj/m32&provinceID=440000&menuId=bszx&sfdj=jcgjdlb' get_date(url) join_File() get_text()