1. 程式人生 > >Python2.7 呼叫Windows X86 DLL檔案獲取返回報文並提取token

Python2.7 呼叫Windows X86 DLL檔案獲取返回報文並提取token

研究了我兩天,主要是對這個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()