반응형
윈도우에서 불필요한 계정 제거 항목 점검 시
batch file 명령어 입니다.
FOR /F "tokens=1,2,3 skip=4" %%i IN ('net user') DO ( echo ------------------------------------------------------------------------------- >> 1-03-account.txt 2>nul net user %%i >> %ktsec%\1-03-account.txt 2>nul echo ------------------------------------------------------------------------------- >> 1-03-account.txt 2>nul net user %%j >> %ktsec%\1-03-account.txt 2>nul echo ------------------------------------------------------------------------------- >> 1-03-account.txt 2>nul net user %%k >> %ktsec%\1-03-account.txt 2>nul ) findstr "User active Comment Last --" 1-03-account.txt > 1-03-account_temp1.txt findstr /v "change profile Memberships User's" 1-03-account_temp1.txt >> %COMPUTERNAME%-result.txt |
for 문에 대한 이해가 있어야겠죠 ?
for문
FOR %%변수 IN (집합) DO 명령어 : 변수가 집합 안에 변수가 있으면 명령어를 실행하라 |
변수
- 변수는 %%변수 형태
- 대문자와 소문자를 구분
- 변수는 한글자만 가능
집합
- (파일명) 또는 ("문자열") 형태
- 여러개 처리 시 공백, 콤마(,), 세미클론(;)으로 구분 (1;2 3,4)
- ('명령어')
증감 FOR 문
FOR /L %%변수 IN (시작,단계,끝) DO 명령문 |
recursive for문
FOR /R [경로] %%변수 IN (집합) DO 명령어 |
- 경로에서 recursive 하게 탐색하여 각 디렉토리마다 for 문을 실행
- 경로 생략 시 현재 폴더에서 탐색
file for문
FOR /F ["옵션"] %변수 IN (집합) DO 명령어 |
- 파일 내용을 파싱할 때 주로 사용
- 한줄 씩 for문을 돌려 파싱
- 집합이 ('명령어') 일 경우 명령어 결과값을 파싱한다.
- 파싱하는 규칙은 ["옵션"] 에서 정한다.
옵션
- delims(delimeters, 구분자) : 문자열을 나누는 기호 문자, 생략시 공백(스페이스,탭)으로 나눈다.
- tokens : 구분자로 나뉘어진 것을 각각 토큰이라 하며 토큰들과 루프 변수에 1:1로 대응하도록 한다.
이 때 루프변수의 다음 알파벳으로 자동 대응된다. - skip : 생략할 행 번호 설정
- eol : 시작 문자로 생략할 행 설정, 생략시 ;(세미클론)으로 시작하는 행은 생략된다.
- usebackq : 대체 인용, 파일명에 공백이 들어 갈때 문자열로 처리하는걸 막거나 명령문에 특수문자가 들어갈때 오류 방지
Batch 명령어 설명
FOR /F "tokens=1,2,3 skip=4" %%i IN ('net user') DO (
/F 옵션이므로 file for문인 것을 확인할 수 있습니다.
그러므로 파싱을 위하여 옵션이 따라오게 됨을 알 수 있습니다.
tokens =1,2,3 은 공백등의 구분자로 3개로 나눈다는 뜻 입니다.
'net user' 명령에 의하여 다음과 같이 출력됩니다,
각각의 계정을 가져와야 합니다.
for문에서는 줄 단위로 가져오기 때문에 3개로 열로 나눠져 있으므로 각 열을 구분해야 합니다.
tokens = 1,2,3 은 각 행에서 각 열의 문자열을 가져옵니다.
그러므로 %%i 는 Administrator, %%j 는 bts, %%k는 DefaultAccount 와 대응됩니다.
그리고 나서 %%i는 다음줄의 Guest, %%j 는 LNSS_MONITOR_USR, %%k는 WDAGUtilityAccount 와 대응됩니다.
DO (
net user %%i
net user %%J
net user %%k
)
와 같이 사용하면 각 계정 하나하나의 계정 정보를 확인 할 수 있게 됩니다.
이상~
반응형
'주요정보통신기반기설 기술적 취약점 분석 평가 방법 상세가이드 > Windows 서버 진단' 카테고리의 다른 글
1.1 Administrator 계정 이름 변경 또는 보안성 강화 - 주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세 가이드(2021) (0) | 2021.11.09 |
---|