gpt4 book ai didi

在 C 代码中使用 popen() 更改密码

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:12 24 4
gpt4 key购买 nike

我正在尝试使用 popen 在 C 代码中更改密码。

在我的 Linux 上,在命令提示符下,passwd (busybox) 工作正常

    # passwd simon
Changing password for simon
New password:
Retype password:
Password for simon changed by root

我正在尝试在 C 中执行此操作(以 root 身份运行):

int len=strlen(s_password); char line[1024];
sprintf(line,"passwd %s", s_username);
FILE *fp= popen(line,"w");

int i;
for(i=0; i<len;++i)fputc(s_password[i], fp);
for(i=0; i<len;++i)fputc(s_password[i], fp);
fputc('\n', fp);

//fprintf(fp,"%s\n",s_password);
//fprintf(fp,"%s",s_password);
pclose(fp);

我也尝试了 fprintf(已评论)但没有成功。似乎第一个条目通过了,但第二个条目没有通过。当我执行代码时,我得到:

     Changing password for simon
New password:
Retype password:
passwd: password for simon is unchanged

我尝试了所有可能的场景('\n' 省略了 '\n')但没有成功。

好像“重新输入密码”与“新密码”不同。

我做错了什么?

最佳答案

这个工具对我来说很好用:

主.c

#include <stdio.h>
#include <sys/wait.h>

int main(int argc, char **argv)
{
if (argc < 3) {
printf("Usage: %s username password\n", argv[0]);
return 1;
}
char cmd[32];
sprintf(cmd, " passwd %s", argv[1]);
FILE *fp= popen(cmd, "w");
fprintf(fp, "%s\n", argv[2]);
fprintf(fp, "%s\n", argv[2]);
printf("Return value: %i\n", WEXITSTATUS(pclose(fp)));
return 0;
}

构建

gcc -Wall -Wpedantic -Wextra main.c

关于在 C 代码中使用 popen() 更改密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22181969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com