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

2016-02-19 19:35 1 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

  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

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

  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)

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

  ;
  Button1.Enabled:=True;
  end;

  {以后code 省略}
  

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

延伸阅读
标签: 电脑入门
兔子姐,我想打印第一季度的申报表,可是进不到打印界面呀?怎么办呀?葱头对兔子姐说。兔子姐让葱头发送远程协助邀请,接着便给葱头讲解操作步骤,短短几分钟,远方的葱头便学会了操作方法。 兔子姐用什么软件解决难题的呢?原来是利用了图度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...
标签: ASP
          这几天做ASP.Net追捕,也算是我入门吧。思路很简单,主要就是识别远程主机传回的Banner, 判断远程主机服务器。这可能不够准确,因为合格的管理员可能会去修改Banner。 代码如下(从我的Web追捕里找出来的,用VB.Net)          &...
标签: 电脑入门
在Windows XP中, 新增了一条命令行工具shutdown ,其作用是 关闭或重新启动本地或远程计算机 。利用它,我们不但可以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。 该命令的语法格式如下: shutdown [-i |-l|-s |-r |-a] [-f] [-m [ComputerName]] [-t xx] [-c "message"] [-d[p]:xx:yy] 其中,各参数的含...
方法一、利用windows系统自带的远程桌面连接功能 1.“开始”→“附件”→“远程桌面连接” 2.由于这是一个主动过程连接的功能,所以使用时被连接一方需要提前开启允许远程控制的选项与授权允许访问的用户名,具体操作如上图:打开远程协助功能→打开计算机系统属性设置,打开“远程”选项卡→在“远程协助”选项中设置 允许远程...

经验教程

426

收藏

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