android

python中调用c代码,传入NULL的问题

2017-09-28  本文已影响0人  fcc_load

在逆向一个android so的时候,发现一个改良的ecdh算法,在用python调用EC_POINT_point2oct的时候发现最后一个参数是NULL,但是写入0,False,None都报错,最后(注意str是bytes类型):

from OpenSSL import crypto
import struct
import os


class Ecdh():
    
    def __init__(self):
        self.ssl_lib = crypto._lib
        self.ssl_ffi = crypto._ffi
        pass
        
        
    def gen_ecdh_key_ex(self,bo,str1,str2,str3):
    
        str_len = len(str1)+len(str2)+len(str3)
        all_str = str1 + str2 + str3
        
        ecdh2 = self.ssl_lib.EC_KEY_new_by_curve_name(711)
        self.ssl_lib.EC_KEY_generate_key(ecdh2)
        point = self.ssl_lib.EC_KEY_get0_group(ecdh2)
        group = self.ssl_lib.EC_KEY_get0_public_key(ecdh2)
        mylen = self.ssl_lib.EC_POINT_point2oct(point,group,2,all_str,str_len,self.ssl_ffi.NULL)

也可以使用

from cffi import FFI

ffi = FFI()
ffi.NULL表示空
上一篇下一篇

猜你喜欢

热点阅读