日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

破解可读不可复制的 U 盘

發(fā)布時(shí)間:2024/3/24 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 破解可读不可复制的 U 盘 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

特此聲明:本篇文章僅用于研究學(xué)習(xí),請網(wǎng)友自覺,不能用于黑產(chǎn)。

有一種自我防護(hù)的 U 盤,只支持在 U 盤中打開查看,無法拷貝出來。對于一個(gè)熱愛自由的人來說,也許獲得里面的內(nèi)容是件小事,但是打破這個(gè)規(guī)則,則是一件更有意思的事。

那么,先設(shè)定一個(gè)不以獲得內(nèi)容為目的的目的:將 U 盤里面的文件拷貝出來。

通過觀察,發(fā)現(xiàn)幾個(gè)現(xiàn)象:

0.U 盤有登錄驗(yàn)證機(jī)制。

1.輸入用戶名密碼在U盤自帶管理軟件中打開 U 盤后,文件視覺上可見,但復(fù)制,粘貼的系統(tǒng)快捷鍵無法使用了。

2.登錄驗(yàn)證之前,無法在 cmd 中訪問 U 盤,文件加密狀態(tài)。

得到結(jié)論:U 盤里面的內(nèi)容在登錄驗(yàn)證通過之前是加密存放的,登錄成功后解密(估計(jì)是延遲解密的,因?yàn)?U 盤文件較大,如果在驗(yàn)證成功后一次性將所有文件都解密,耗費(fèi)時(shí)間必然較多而且并不一定會(huì)真正訪問所有文件)。打開U 盤后,U 盤管理程序向系統(tǒng)掛載了鍵盤鉤子,攔截了復(fù)制,粘貼鍵盤。進(jìn)一步思考,必須要在登錄成功后,才有可能拿到解密后的文件。因此,我們必須打開 U 盤自帶的管理軟件登錄。

嘗試一

想一下在管理軟件中雙擊鼠標(biāo)后,在 WPS 中可以正常地打開文件,說明,此時(shí)真正的文件流已經(jīng)被發(fā)送給了 WPS,那么我們直接在 WPS 文件中復(fù)制出來不就可以了嗎?

然而卻發(fā)現(xiàn) WPS 中,鼠標(biāo)右鍵中的復(fù)制,或者復(fù)制組合鍵盤也被屏蔽了,“另存為”功能也被屏蔽了。猜測可能是 WPS 提供了接口對文檔進(jìn)行保護(hù)(事實(shí)上,Office 也是這樣)。不想把問題轉(zhuǎn)化為與 WPS 的對抗賽,于是似乎只能再想辦法。

嘗試二

我們不能復(fù)制文件的原因是,復(fù)制快捷鍵被管理軟件攔截并內(nèi)部消化了,沒有 post 到下一進(jìn)程,解決思路是,將加入到系統(tǒng)中的鼠標(biāo)鉤子移除掉,不攔截 ctrl+c 。這很簡單,只需要調(diào)用一個(gè)系統(tǒng)函數(shù)就可以了。

然而,這種方法沒有起作用,是沒有想周全。ctrl+c 原本是資源瀏覽器 (exeplorer.exe) 響應(yīng)的鍵盤事件,也就是說,我們想在管理軟件中使用 ctrl+c 復(fù)制,這也得它響應(yīng)了該事件才行啊!所以,我們把 ctrl+c 的鉤子移除掉,只是讓我們可以在資源瀏覽器中復(fù)制,并不能達(dá)到在U盤管理軟件中復(fù)制的目的。

嘗試三

如果文件流被傳遞給了 WPS ,那么,我們可以中途拿到文件流嗎?這可能需要去攔截進(jìn)程,比較復(fù)雜。

受這個(gè)觀點(diǎn)的啟發(fā),我們雖然不能攔截進(jìn)程的數(shù)據(jù),但是我們再造一個(gè) WPS 替換掉 WPS 呢?這里說的再造一個(gè),并非是真的寫出一個(gè) WPS,我們只需要實(shí)現(xiàn)我們自己的功能:這個(gè)程序在拿到文件流后,立即寫文件,保存到我們系統(tǒng)中。

說到這兒,解決方法就很簡單了:寫一個(gè)程序,參數(shù)接受一個(gè)文件名,將這個(gè)文件 dump 到某個(gè)位置。之后,最關(guān)鍵的一步,將所有后綴為 .doc 的文件的默認(rèn)打開方式設(shè)置為我們的這個(gè)程序。

確實(shí),該方法起效果了,雙擊就可以復(fù)制想復(fù)制出來的文件!

這里其實(shí)還有研究,如何判斷,雙擊一個(gè)文件,傳給程序的是什么參數(shù)呢?是文件名,還是文件流?其實(shí),僅略作思考就能得到答案:因?yàn)槲募?字節(jié)流)中可能會(huì)存在為 0 ?的字節(jié),而程序接收輸入的,也就是 main 函數(shù),其參數(shù)是 argv**, argc,沒有哪一個(gè)參數(shù)能說明字節(jié)流的長度,故,argv** 會(huì)被視作以 0 節(jié)尾的字符序列,而不是字節(jié)流。綜上,程序接收的參數(shù)只能是文件名了。

程序比較簡單,開源地址是:

https://github.com/juniorfans/copyOnClick


總結(jié)

以上是生活随笔為你收集整理的破解可读不可复制的 U 盘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。