国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

遠(yuǎn)程得到任意遠(yuǎn)程N(yùn)T主機(jī)帳號(hào)List的源代碼

2019-11-18 18:02:55
字體:
供稿:網(wǎng)友
由于看到前些日子retina里有個(gè)不需要預(yù)先知道帳號(hào)就可以獲取一般任意
目標(biāo)NT主機(jī)帳號(hào)的功能。幾個(gè)月之前,我為了弄清原理,就做了一個(gè)工具。
這次整理硬盤,發(fā)現(xiàn)了這個(gè)小工具,這本身并不算什么,因?yàn)镮SS scanner等
軟件都包含了這類功能。但是我希望大家能夠通過這個(gè)例子,了解一些NT的
API和安全性知識(shí)。

-- 完整的code(use Delphi)和一個(gè)編譯好的zip文件在
ftp://202.96.215.252/incoming/sea/getuser.zip

這里貼一下程序的主要代碼段:
unit Unit1;
{ 這是一個(gè)演示如何去獲取目標(biāo)NT計(jì)算機(jī)上用戶列表的程序,
由于Win32 API的限制,此程序只能在NT平臺(tái)上正確運(yùn)行。
由于是為了演示原理,所以沒有使用多線程,也沒有考慮太高
的健壯性,希望諸位海涵。歡迎和我聯(lián)系

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 seaSIDnameuse<>sidTypeDeletedAccount 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;

{以后code 省略}


上一篇:試題庫開發(fā)中非文本數(shù)據(jù)的處理

下一篇:如何將幾個(gè)DBGRID里的內(nèi)容導(dǎo)入同一個(gè)EXCEL表中....的問題

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 元氏县| 旌德县| 卓尼县| 滦南县| 昂仁县| 岑溪市| 东阳市| 晋州市| 磐石市| 定边县| 威宁| 澳门| 洱源县| 姜堰市| 克东县| 武川县| 海伦市| 延寿县| 房产| 镇原县| 定安县| 同江市| 会泽县| 安吉县| 毕节市| 栾城县| 政和县| 澄城县| 阿荣旗| 昌江| 东光县| 文成县| 永春县| 乡城县| 儋州市| 迁西县| 玉山县| 河间市| 汉中市| 永嘉县| 嘉荫县|