Wednesday 6 July 2016

登入不到 Windows 这件小事

最近收到一个任务, 某某小白突然登入不到 Ultrabook 的 Windows, 之前能,就是突然间不能。

Keyboard encoding 问题 ? check 了不关事。

当下连 laptop model 是什么 (看贴纸只懂是 acer ultrabook), Windows 几也不懂。

我久没碰 Windows, 也不懂为什么没有 Switch User 这类的 option。看到网上有贴讲 plug in 滑鼠就会出现 Switch User 酱神奇,那个骗小孩的。

有用过 linux dual boot 的同鞋, 应该都懂 nautilus 可以直接 mount Windows files。可能不需要密码,但是就算要密码也是 linux sudo 的密码, 不需要懂 Windows 密码。

所以就往这个方向走,burn 个 live usb,然后 access Windows 备份重要的资料先,其它以后再说。

我最近刚好计划安装 Fedora 24, 所以就决定用 F24。计划在现有的 Dell Fedora 21 准备这个 live usb。

先去这里下载 F24 workstation, 拿到两个 files:

, 跟着它的步骤 verify :


先用 unetbootin burn 那个 F24 live usb。

然后在 login screen 那里一边按住 Shift键, 一边碰触 Restart。

然后选 Troubleshoot :


再选 Advanced options:


UEFI Firmware Settings:


先确保插入 live usb, 然后点击 Restart 按钮:


确保 USB 的 priority 在 Windows 上面:



Exit 那里选 Exit Saving Changes:


*【以后】 有时电脑 short short 地, live usb 不会自动 load。要重复上面的 Shift+RestartExit Saving Changes 步骤 。

看似很顺利,可是来到这边发现一个问题,grub menu 好像不能 touch screen 的 hor:


 也理所当然没 virtual keyboard, 然后才想到.... walau, 这台 Ultrabook 只有一个 port 要怎样同时插 live usb 还有  keyboard ?

如果不管直接给它自动 60 秒 timeout 跑  Test this media ? 一堆 error。

这个不该有的 error:


还有这个不该有的 Warning: Could not boot:



至于这个一直 hang 的 message,  其实是要等很久,如果是没问题的 live usb 也是有这个 message,不过只需等一下子。按 'e' 可以 edit 并删除 quite 看更多 log 就不会感觉 hang。


试过在 Windows/Linux 用 unetbootin, 并且用不同 usb, 还是一样。囧。



所以就改用 dd (先用 mountblkid commands 检查是否 /dev/sdb, 可能是 sdc 的哦,要小心, 也可能没在 mount 着, 这时候要用 ls /dev/sdb*sudo fdisk -l 检查):


我试过 `dd` 到一半 ctrl+c 关掉他。结果那个 pendrive 变成 read-only:


找出正确的 sdX, 然后用这个 command:

$ sudo dosfsck -a /dev/sdb1

replug 再 remount 就好回了。


结果 dd 出来的还是不能。 就想拔掉 usb, 按 'e'



, 然后:
[1] 删除 'quite' 没意思因为按 'Escape' 或从 grub command prompt 出去就会 reset。
[2] Ctrl+x start ? 我按 Ctrl+x 键的时候,live usb 都没 port 插进去。我又没有 usb hub splitter 之类的东西可以试。
[3] Ctrl+c command prompt ? 我发现 exit 出去时会有没看过的 Boot 选项, 就试下 输入完这条  command 后,马上 unplug 键盘,plug live usb 进去:


,酱 exit 出去就会看到, 然并卵,没奇迹发生, 跟重新选过 boot 选项没区别:


[3.1] set root=(hd0) 那些 ? 好像不关事的, liveusb 应该不包括在 hdX。(更新: 现在想起原因应该是键盘进 'e'再插 usb detect 不到。)
*【注】 Ultrabook  external keyboard 有问题, 我要用自己的 external keyboard 才在 grub menu 有反应。

我怕 test 多 usb  导致之后的 tests 也有问题, 所以我用 Dell 的 Fedora test 确认一下可以跑米有。 才发现 grub menu 的 Test Media 也是 failed, 可是直接跑第一个没问题 (Dell 的 Fedora 没不够 port 选 grub menu item 这个烦恼)。

*【当时】 没有截屏 Test Media failed,现在这张截屏是我重新 `dd` 补上去的,虽然等很久 (0.1% 要一秒,粗略 1000 秒), 而且同样有红色 error。但是它最终却成功 boot 到。区别只是不同 usb OR 忘记 umount 就 `dd` OR 好像没有等 1000 秒酱久的,实际原因就无从考究了。



所以我就有一个 idea,如果能丢掉 grub test 的那个 menu item,timeout 跑第一个 ?

我稍微检查了一下那个live usb,很明显要先试下 edit grub.cfg。可是 grub.cfg 是 read-only 的。

找到一个 thread, 长篇大论只有最后一个 comment 看到我要的答案:


意思是说 `dd` 是不能 writeable 的。去看它的官方文档,有一个内建的 Fedora Media Writer 可以拿来 burn。可是只有 cp 和 dd 两种好像不对叻。



所以就听刚才那个 comment 的话, 用也是内建的 livecd-iso-to-disk。暂时不得空去理 data persistent ( dnf 下载可以 persistent ?)。 做这个先用上面提过的 `mount, blkid, ls /dev/sdb* , sudo fdisk -l ` make sure 已经 umount 先。:



burned 好后,在 Ultrabook/Dell 检查一轮可以好像之前那样跑先。然后才开始 mkdir,mount,vi。

跟先前的 idea 不同,不需要丢 menu item,直接把 default index "1" 改成 "0",把 60 秒 timeout 改成 21 (21 是我生日)。顺便把 quite 删除掉。截屏的蓝色 //comment 是截屏说明吧了,别真的照抄。要 writeable 就要用 -o rw,umask=0000

如果你 google 你会发现那些人 讲什么 update-grub, 别照跟,我们不是要 update 现在这台 Dell 电脑, 我们纯粹是要 update live usb 罢了。

在 Ultrabook 试那个 live usb, 等 21 秒 timeout,完美进入 Fedora 24 :p


F24 支持 touch screen 的呵~ 按 "Try Fedora"->"Close" 或 'x' 关掉窗口。

打开 nautilus -> "Other Locations" 可以直接 mount Windows 的文件了。Acer 那个 icon 就是了。


预防万一,先想办法 backup。先找 Utilities -> Terminal:


然后帮 root 设置密码, su 后 passwd 即可(少过 8 个字母或太容易的密码不 accept, 揸到)。还有别忘了右上角调低很亮的灯光, 还有 connect wifi:

然后在 su 之下,就可以用 systemctl start sshd 开启 ssh server。ifconfig 看 ip。然后在 Dell 电脑用上面那个密码 `ssh root@ip` 连接 。

如果 ssh connect 时遇到类似 error 信息,那边已经讲是 33 line key 不对了,所以删除那行就搞掂了:


Fedora 内建 screen keyboard 有问题,ssh 删除打错密码时很容易弄到它 short 掉, space 键不能用, 要 restart 过。奇怪的是我不需要去 Settings -> All SettingsUniversal Access 那里开启 Screen Keyboard 就能用。没去理酱多。

有想过用 RAM live usb, 酱就可以拔掉 live usb 插键盘 usb。不得空理酱多。

ok, 总之酱就可以 backup 了。不过如果要检查文件 size, 不要用 nautilus, 最好是 `dnf install ncdu` 然后 cd 去 Windows path(用  `mount` 就查得到这个 path),cd 去 Users home 那里, 在 terminal 执行 ncdu . 来汇总什么 file 吃位但是没用途或可以 redownload 过的,就不需要 backup, 因为 sftp 真的很慢

copy  不要 command line, 直接在 nautilus 的 top panel icon 那里选 "Connect to Server..." , 填上 "sftp://root@10.0.5.21/root"。

 不过那个是 root 的 home path。还要 <Ctrl+L> 丢掉 path 的 "root" 字眼, 再 <Enter> 去 / 根目录。(其实 Alt+Up 上去也可以的...)

也要去 Settings ->  All Settings Power 那里把五分钟会 Blank screen 改去 Never, 不想 copy 到一半 short 掉吧。

好了,搞掂 backup 后就可以大展拳脚了。

$  dmidecode //(ssh 已经是 su), 就可以懂它电脑牌子 , 间接懂 Windows 版本等等。应该是 Windows 8.1 来的。




懂了 Windows 版本(其实也不是很重要拉),随便 google 就懂可以用这招 sethc 大法 reset windows password。

ssh root@10.0.5.21     //Dell fedora ssh live usb F24

cp /run/media/liveuser/Acer/Windows/System32/sethc.exe /run/media/liveuser/Acer/     //备份,预防万一,也 copy 去 Acer/Windows/ 之类的地方, 备份多多益善吗。

cp /run/media/liveuser/Acer/Windows/System32/cmd.exe /run/media/liveuser/Acer/Windows/System32/sethc.exe     //ganti cmd.exe 去 sethc,exe //回应 cp: overwrite '/run/media/liveuser/Acer/Windows/System32/sethc.exe'? 是输入 y

可能你会问,做么不要直接在 Shift+Restart 的 option menu 那里 command prompt copy:


别管酱多,在 Windows 登入页面连续按 Shift 键 5 次, 然后有点 delay 就会出 command prompt, 输入 net user admin dadada 改成 dadada 密码:


终于进到了, 开香槟 :p:



不小心找到一个 bug, 就是当你改 touch keyboard 的右下角 template, 换成手画 template 时,是无法 Enable Standard Keyboard 的(gray out), 搞到我在烦做么 Standard Keyboard 突然间不能用了。最重要的大 bug 是,为什么 Standard Keyboard 不是默认 enable 的。

然后发现 Administrator 权限也不能直接 copy 原本的 sethc.exe 回去 System32/, 可能 sethc.exe 还在跑的 pasal ?

不得空鸟它,进去 live usb 才 cp 回去:
cp /run/media/liveuser/Acer/sethc.exe /run/media/liveuser/Acer/Windows/System32/


然后我 google 下感觉 chntpw 大法好像也不错下 hor ? 起码不用 copy 来 copy 去 sethc。

就试下在 live usb, `dnf install chntpwd` 安装:

奇怪的是 Dell 的 Windows 8 要用小写 sam 才能跑, 而 Ultrabook 的 Windows 8.1 不需要:


Ultrabook 的 Windows 8.1 改密码:


结果不期待的杯具画面终于又出现了:


而且 sethc 大法也改不到密码, error 1359:


... 是不是 SAM file corrupt liao ? 可是 hor 我没 backup SAM 叻... 囧

看到这个什么 dsmod,  不是 windows 8.1 也不关事。

病急乱投医, 先改 Administrator 密码, 然后 activate 他:


不过没有 switch user 选项怎样进 Administrator ? Username field 又不能 edit。

到处逛逛,神奇的是这个,之前只有 admin 的现在变成只有 Administrator (又不见登入页面那里有改 (我有 restart 拉当然)):


然后重新 add 或加 group 什么的都然并卵 (顺便吐槽一下那个 's'):


Google 一下看到这个:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon and changed DefaultDomainName and DefaultUserName values to the desired string data.
从 Administrator command prompt 那里跑 regedit,然后加了也没用(讲真 DefaultDomainName 好像不应该放 Administrator, 不懂, tikam 吧了):


试下用 sethc 的 command prompt, 跑 regedit,忘了这时有没有放 Domain(应该没有放),把 DefaultUserName 改去 Administrator, 不小心看到 AutoAdminLogon, 也顺便改买, 从 0 变 1:



结果一 restart, 自动 login:



结果它 short liao, 有 edit 的 field 了:




哦,酱我就懂 liao, AutoAdminLogon 但是又 failed 的时候,就会  short 到有 Switch  User 选项 liao。DefaultUserName 改去 Administrator 有没有贡献就不懂 la。

不管那么多, login Administrator 看下:




看到这个 thread, 5 hours,我赶时间叻,吓到把 keyboard 拔掉。( 更新: 其实是 "other than mouse and keyboard", 我久没睡眼花 )



也要解决登入 admin 的问题, 不然 desktop files 怎样弄回去...

接下来 3 个步骤不懂哪一个步骤关事, 也可能上面就弄好了(我忘记有没有 test admin 先),不过还是列举出来我做过的东西:

[1] 把那个登入不到的 admin 换去 Standard User(之前是 under Administrator)


[2] 改一下名字:


[3] 改一下密码:


yeah, 终于登入到了。


然后在 Administrator 的情况下打开  regedit, 把之前乱入的 DefaultDomainName 等于 Administrator 的整个 key 丢掉:


现在要解决那个自动登入错误的问题。先想办法设置在 login 页面的默认 username

在 Administrator 登入的情况下,win+r 运行 netplwiz 。先选 admin 用户, 用同一个密码 Reset Password 。然后换回去不久前改去 Standard User  的 Administrator group


然后登入 admin 用户,regedit 把上面 sethc 的 DefaultUserName 从 Administrator 换回去 admin, 很奇怪的是 DefaultDomainName 来到这里似乎是自动更新的, 因为没看过这个 value :


不过其实还不能,我又发现坑人的说法,要 highlight 才可以, 以下这个 netplwiz 是在 admin 用户的 desktop 开的:


在 highlight admin 用户的情况下 uncheck 再 recheck 上面那个才有 effect, 不然 纯粹 highlight 无法按 "Apply"。其实那个 checkbox 会直接 affect 上面在 regedit 试过的 AutoAdminLogon 的 0/1。

那个 reset password 要不要顺便按 ? 由于 admin 是当前用户, 所以不能按 "Reset Password" 按钮,而是 Ctrl+Alt+Del 那里 "Change a password":



最后,终于有正常登入的页面 la。


后话:
[1] 本 blog 对闭源软件的使用可免则免,整个过程完全没有用第三方闭源软件。别随便用 google 的破解 tool。
[2] 虽然 sethc 还是有缺点, encrypted files 会不见,但你不是真的吃饱了撑的想 rainbow brute force 它吧。
[3] 如果在 Windows 没有 Fedora 要怎样做 livecd-iso-to-disk 的 writeable  ? 可以先在 Windows 用普通方法做 live usb, 然后在 live session 使用 livecd-iso-to-disk,这时电脑的两个 port 可以同时插 live 和 burn 的 usb,理论上可以 la 我没试验过。
[4] 至于常常听到的 windows pe,不懂能不能 bypass Shift+Restart 那个 command prompt 密码,我忙到鬼样不得空去试验。

[更新: PE 初体验]

我要还电脑给人时觉得不应该不解开这个谜 (PE 能不能 skip Ultrabook Windows 8.1 的 cmd password ?),所以在剩下 2 小时左右的时间要在 0 knowledge 的情况下,完成测试。首先,下载完 Windows 8.1 (因为目标是 8.1)的 adksetup, Windows 8(不是 8.1 一样用的啦~) 之下运行 adksetup 却要下载 5GB , 这里已经花了近一小时了(顺便吃下饭)。

跟着官网去制作 PE usb:


MakeWinPEMedia /UFD C:\WinPE_x86 D: (我的 pendrive 是 D:)的时候有 error,找到这个方法,手动去:
diskpart
select disk 1
clean
create partition primary size=10240
select partition 1
active
format fs=fat32
assign
exit

*小心*,记得先 list disk 然后  unplug/replug pendrive 来找到正确的 disk。我的例子是 disk 1。
 
我走到 format fs=fat32这个步骤时,似乎要1小时多,可是现在已剩下半小时左右,跑了 25% 就果断关掉它,把所有筹码都赌注在这个评论,


也就是去 c:\program files (x86)\Windows Kit\8.1\Assessment and Deployment Kit\Windows Preinstallation Environment folder 的 MakeWinPEMedia file, 
,把 echo format fs=fat32 label="WinPE quick >> "%DISKPARTSCRIPT%" 的 
fs=fat32 改成 fs=ntfs

重新 plug usb,会问你 format,这次比之前右键 format 不一样,之前只是 capacity 是 5.18 MB 左右,所以无法成功是正常的,现在却是 10.0 GB,多亏上面的 
create partition primary size=10240 命令, 选 ntfs (配合等下 MakeWinPEMedia file 要改成 fs=ntfs), 然后打勾 Quick Format,大概一分钟搞掂。(更新: 回头想想, diskpart format 应该也有 quick format 之类的命令,去这里看就懂其实... 理论上可以使用 format fs=fat32 QUICK 解决)
 

我改成 fs=ntfs 后 save 却要求 administrator 权限,所以只好 Ctrl+Alt+Delete 选择打开 Task Manager (更新: 其实 win+r 也可以,我赶时间没想这么多), File -> Run new task, 输入 notepad, 打勾 admin 权限, OK,打开 notepad。
 

然后把刚才的失败储存的内容 copy 去这个 notepad,确保改成 fs=ntfs, Save as type 选择 All Files,ganti 掉那个 MakeWinPEMedia file。



重新跑过 MakeWinPEMedia /UFD C:\WinPE_x86 D: 就 burn 好 PE usb 了。



然后就测试,折腾了一下,发现要换 legacy mode 才可以, 看到 command prompt,终于证明可以 skip password 了,但是高兴得太早了,touch keyboard~~~~~ no touch keyboard,竟然重复那个不够 port 用的死胡同。囧 (... 所以我昨天订购了 usb hub splitter)


最后,又发现 boot 不回去 Windows,折腾了一下才发现要 UEFI 才能。最后的最后,折腾了一下不小心开到的 narrator,终于 last minute 可以拿电脑还给人了 :p 蛮刺激一下的



No comments:

Post a Comment