Python Ctypes中的SecureZeroMemory

2024-04-18 04:36:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将下面一行C代码翻译成ctypes。下面是我要翻译的C程序的一个片段:

pIfRow = (MIB_IF_ROW2 *) malloc(sizeof(MIB_IF_ROW2));
SecureZeroMemory((PVOID)pIfRow, sizeof(MIB_IF_ROW2));

(注意,MIB_IF_ROW2是一个结构,在Netioapi.h中定义)

无论如何,我可以在ctypes中很好地翻译第一行,假设MIB_ROW2已经被定义为ctypes结构:

from ctypes import *

# Translate first line of C Code
buff = create_string_buffer(sizeof(MIB_IF_ROW2))
p_if_row = cast(buff, POINTER(MIB_IF_ROW2))

# Second Line... ?

但当我到了第二条线,我就被卡住了。我在文档或网上找不到任何与该函数对应的ctypes。最好的办法是什么?你知道吗


Tags: 代码程序if定义ctypes结构buffmib
1条回答
网友
1楼 · 发布于 2024-04-18 04:36:33

SecureZeroMemory只会用零填充传递给它的内存。您应该使用ZeroMemory/memset或python中的普通循环得到完全相同的结果。使它“安全”的原因是它不应该被编译器优化(当编程在像C/C++一样低的级别)。你知道吗

在你刚刚使用的内存中使用它并不是它的预期目的(尽管无害),它应该这样使用:

char password[100];
AskUserForPassword(password);
DoSomething(password);
SecureZeroMemory(password, sizeof(password)); // Make sure password is no longer visible in memory in case the application is paged out or creates a memory dump in a crash

相关问题 更多 >