【发布时间】:2022-01-14 21:59:45
【问题描述】:
所以我参加了 2019 picoCTF 二进制挑战种子-sPRiNG,我得到了这个write up 使用此代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main ()
{
int i;
srand(time(0));
for (i = 0; i < 30; i++)
{
printf("%d\n", rand() & 0xf);
}
return 0;
}
所以我想在 python 中实现相同的功能。起初我使用了 random 模块,但意识到 C rand 和 python 在它们的实现中相距甚远,所以我决定使用 ctypes:
#!/usr/bin/python3
from ctypes import CDLL
libc = CDLL("libc.so.6")
libc.srand(libc.time(0))
for i in range(30):
print(libc.rand() % 0xf)
但是当我同时运行它们时我仍然得到不同的输出,我能解释一下为什么会这样
【问题讨论】:
-
投票结束是一个错字。
&与%.
标签: python c binary ctypes ctf