목적:
1. 웹 서버의 취약점을 사전에 검사해보고 기본적인 취약점을 보완함으로써 해커의 간단한 공격으로 부터 웹 서버를 보호
2. 웹 서버를 보호하는 보안 장비가 웹서버의 취약점을 스캔하는 행위를 정상적으로 탐지 하는지 검증

사용 절차:
1. nikto를 다운 받는다.
혹은 첨부된 파일을 받아도 됩니다.
(perl로 작성된 툴이므로 perl관련 라이브러리가 설치되어 있어야 한다.)
http://cirt.net/nikto2 

 

2. nikto 실행
타겟 호스트와 실행 옵션을 주고 실행
# ./nikto.pl  -h 66.66.66.11 -output result.html -Format html  -Cgidirs all

3. 세부 옵션 설정 
(괄호 안에 표기된 문자는 약자)
-config (c)      config 파일을 지정. 기본 설정값을 포함한 nikto.config 파일이 있으니 참고하면 된다.
-host (h)        스캔을 수행할 웹서버(호스트) 주소
-Cgidirs (C)    스캔할 CGI 디렉토리를 설정. 메뉴얼에 의하면 all을 권장함.
-output  (o)     결과를 출력할 파일 지정
-Single (S)      스캔을 한 개씩 옵션을 지정해주면서 수행. 단일 스캔을 수행 할 때 사용.  

자세한 설정은 '-H' 옵션으로 확인 가능하다.

결과 확인:
결과는 다음과 같이 화면에 출력된다.
---------------------------------------------------------------------------
+ Target IP:          66.66.66.11
+ Target Hostname:    cpe-66-66-66-11.rochester.res.rr.com
+ Target Port:        80
+ Start Time:         2011-08-18 01:00:00
---------------------------------------------------------------------------
+ Server: Microsoft-IIS/5.0
+ Retrieved x-powered-by header: ASP.NET
+ Retrieved x-aspnet-version header: 2.0.50727
+ Microsoft-IIS/5.0 appears to be outdated (4.0 for NT 4, 5.0 for Win2k, current is at least 7.5)
+ OSVDB-397: HTTP method 'PUT' allows clients to save files on the web server.
+ OSVDB-5646: HTTP method 'DELETE' allows clients to delete files on the web server.
+ Retrieved dasl header: <DAV:sql>
+ Retrieved dav header: 1, 2
+ Retrieved ms-author-via header: DAV
+ OSVDB-13431: PROPFIND HTTP verb may show the server's internal IP address: http://web-babo/_vti_bin/_vti_aut/author.dll
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-877: HTTP TRACK method is active, suggesting the host is vulnerable to XST
+ OSVDB-396: /_vti_bin/shtml.exe: Attackers may be able to crash FrontPage by requesting a DOS device, like shtml.exe/aux.htm -- a DoS was not attempted.
+ OSVDB-3092: /_vti_pvt/deptodoc.btr: FrontPage file found. This may contain useful information.
+ OSVDB-3092: /_vti_pvt/doctodep.btr: FrontPage file found. This may contain useful information.
+ OSVDB-473: /_vti_pvt/access.cnf: Contains HTTP server-specific access control information. Remove or ACL if FrontPage is not being used.
+ OSVDB-272: /msadc/msadcs.dll: See RDS advisory RFP9902, CVE-1999-1011, http://www.microsoft.com/technet/security/bulletin/MS98-004.asp, http://www.microsoft.com/technet/security/bulletin/MS99-025.asp RFP-9902 BID-29 (http://www.wiretrip.net/rfp/p/doc.asp/i2/d1.htm), CIAC J-054 http://www.ciac.org/ciac/bulletins/j-054.shtml www.securityfocus.com/bid/529
+ OSVDB-3092: /admin/: This might be interesting...
+ OSVDB-3092: /img/: This might be interesting...
+ OSVDB-3092: /test.txt: This might be interesting...
+ OSVDB-3233: /_private/: FrontPage directory found.
+ OSVDB-3233: /_vti_bin/: FrontPage directory found.
+ OSVDB-3233: /_vti_inf.html: FrontPage/SharePoint is installed and reveals its version number (check HTML source for more information).
+ OSVDB-3092: /Admin/: This might be interesting...
+ 6456 items checked: 6535 error(s) and 41 item(s) reported on remote host
+ End Time:           2011-08-18 01:02:09 (129 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

대부분의 결과가 OSVDB-xxx 라는 패턴으로 시작하는 것을 알 수 있다.
OSVDB는 The Open Source Vulnerability Database의 약자로 해당 홈페이지에서 자세한 내용을 확인 가능하다.


OSVDB(The Open Source Vulnerability Database) 홈페이지
http://osvdb.org/


1. 홈페이지 좌측 상단의 OSVDB ID Lookup칸에 nikto 수행 결과로 나온 값을 검색


2. 다음 주소의 id값만 바꿔서 바로 해당 내용을 조회 가는 것도 가능
http://osvdb.org/show/osvdb/3233


Posted by KT한
,
목적:
vi(vim)으로 소스 코딩 작업을 할 때 효율을 높여주기 위해 사용하는 ctags에 관한 사용법 및 팁

설치:
일반적으로 최신 linux 계열에는 기본적으로 설치되어 있음. 
만약 설치되어 있지 않다면  http://ctags.sourceforge.net  에서 받으면 된다. 

사용:
tag 파일을 만들기 위해서는 먼저 tag 파일을 만들고자 하는 파일 경로로 이동한 다음 다음 명령 실행

#ctags -R *  


-R 옵션은 하위 디렉토리에 있는 소스 파일 까지 모두 tag에 포함 시키겠다는 명령어이다.  

만약 현재 디렉토리에 있는 파일만 tag에 포함시키겠다면  -R을 빼고 실행하면 된다. 

팁:
만약  tag를 만든 위치가 아닌 하위 디렉토리에서 소스를 열면 미리 생성해둔 tags를 사용할 수 없다.
그렇다고 소스를 항상 상위 디렉토리에서만 연다는 것도 뭔가 불편하다.
그럴때는 vimrc에 추가하는 것도 한 방법이 될 수 있다.

$ vim ~/.vimrc


파일에 다음 내용을 추가한다. 

set tags=./tags,/home/kyungtae/test_src/tags


이 말인즉슨, 현재 폴더의 tags를 상위 디렉토리의 tags 파일을 가져다 쓰겠다는 것이죠.
(참고로, tag파일은 tags라는 이름으로 생성됩니다.)

여기서 주의해야 할 것은.. 
경로(파란색으로 칠한 부분)는 절대경로로 해주어야 합니다. 

Posted by KT한
,
목적:
Http의 url에서 자주 사용되는 다양한 인코딩(encoding)에 대한 정리 

※내용은 중요하지 않고 인코딩된 패킷을 생성하고 싶으시다면 다음 포스팅을 참고하세요. 
http://kthan.tistory.com/46


내용:

 1.  Hex Encoding 
URL을 인코딩 하는 가장 간단한 방법 RFC 표준에 따른다.

예) %41 = 'A'  


 
2. Double Percent Hex Encoding
Microsoft IIS에서 지원한다. 
Hex Encoding에 기반하는 encoding방식으로..
'%25' 가 '%'를 의미하기 때문에 결국은 한번 꼬았다고 보면 된다. 

예) %2541 = 'A' 



3.  Double Nibble Hex Encoding
Microsoft IIS에서 지원한다. 
인코딩 할 값을 하나씩 나눠서 각각 인코딩을 한다. (nibble이란 단어의 의미를 곰곰히 생각해보면 이해하는데 조금 도움이 된다.)
'%34' 가 '4'이고 '%31'이 '1'을 의미하므로 각각을 디코딩 하면 결국 %41이 된다. 
 

예) %%34%31 = 'A'

 

4. First Nibble Hex Encoding  
Microsoft IIS에서 지원한다. 
바로 앞에서 다른 'Double Nibble Hex Encoding'과 유사하다. 
인코딩 이름에서 알 수 있듯 처음 nibble만 인코딩을 한다는 의미이다. 
즉, '%34'가 '4'이므로 이 값을 디코딩 하면 '%41'이 된다. 

예) %%341 = 'A' 



5. Second Nibble Hex Encoding
Microsoft IIS에서 지원한다.  
이름을 봐서 알 수 있듯 .. First Nibble과 유사하다.
차이점이라면 두번째 nibble을 인코딩 한다는 점이 다르다.
문법상의 차이로 모양새는 조금 다르지만 이해하는데는 별 문제가 되지 않는다. 
'%31'이 '1'이므로 이 값을 디코딩 하면 '%41'이 된다. 

예) %4%31 = 'A'


6.  Microsoft %U Encoding
Microsoft IIS에서 지원한다.  
%U뒤에 4자리 값이 오는 형식으로 인코딩 한다. 
4자리 값은 0부터 65535까지의 숫자 혹은 16진수로 0x0000 부터 0xffff까지 값이 올 수 있다. 

예) %U0041 = 'A' 

7. UTF-8 Encoding
처음 byte는 길이를 의미하므로 매우 중요하다. 

예) 110xxxxx 10xxxxxx                (two byte sequence)
     1110xxxx 10xxxxxx 10xxxxxx  (three byte sequence)

인코딩을 하기 위해 '%'를 사용한다. 
위에서 xxx 처럼 표현한 부분이 실제 의미있는 값이다. 
다음 예에서 보면.. 녹색으로 표시한 값들이 실제 데이터라고 보면 된다. 

예1) %C0%AF     = 11000000 10101111  =  101111 = 2F = '/'
     %E0%80%AF = 1110
0000 10000000 10101111  = 101111 = 2F = '/'

예2) %C1%81      = 110
00001 10000001 = 1000001 = 41 = 'A'
       %E0%81%81 = 1110
0000 10000001 10000001 = 1000001 = 41 = 'A' 



Full UTF-8 Character Map 링크

8. UTF-8 Bare byte Encoding
Microsoft IIS 서버만이 지원한다. 
UTF-8 인코딩과 같지만 '%'를 쓰지 않는점이 다르다. 

 예) 0xC1 0x81 = 'A'

Posted by KT한
,

목적:
HTTP url에는 다양한 encoding 방식에 의해 변환된 값들이 전송되기 된다. 
이 값들에 대한 재현 혹은 검증을 위해 사용


실행 파일:
 
SetupHttpChameleon.exe
홈페이지:
http://www.idsresearch.org 

사용 절차:
위에서 부터 순차적으로 작성하시면 손쉽게 사용 가능합니다... 만.. 
간략하게 설명을 덧붙일께요. 


1. Http Encoding Library Templates에서 기본적인 양식을 선택 후 "Select" 클릭

2.  Http Request를 원하는 값으로 수정 후 

3. Encodings and Obfuscations에서  원하는 encoding 타입을 설정 후 "Encode" 클릭

4. Encoded Http Request 에서 원하는 request가 생성되었는지 확인

5. Http Host와 Http Port를 입력 하고 "Send Request" 클릭

6. Http Response에서 결과 확인  

※ 인코딩에 관한 자세한 내용을 알고 싶다면 다음 포스팅을 참고하세요. 
http://kthan.tistory.com/47 


Posted by KT한
,
목적:
gdb를 활용해서 바이너리 파일을 실행하는게 번거로울때
segment fault가 발생하면 자동으로 core file이 생성되도록 설정


절차:

1. ulimit -a 로 조회

core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31160
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


2. ulimit -c 로 core file size를 설정
얼마나 큰 파일이 생성될지 모르기 때문에 unlimited 으로 설정

#ulimit -c unlimited

3. 바이너리를 실행하다가 segment fault가 발생하면..
core파일이 생성됐는지 확인!
core.xxxx 처럼 뒤에 숫자가 붙어있다.

# ll -t
-rw------- 1 root root 764497920 Jun 20 08:20 core.19018

4. core파일을 gdb로 열어서 확인
실행 해보면 어떤 바이너리를 실행한 core 파일인지 확인 가능
# gdb -c core.19018
GNU gdb (GDB) Fedora (7.0.1-50.fc12)
Copyright (C) 2009 Free Software Foundation, Inc.

... 중략 ...

Core was generated by `test_coredump'.

... 중략 ...
#0  0x0000003a606327f5 in ?? ()
(gdb)

5. 바이너리 파일을 지정 해준 후 core파일을 열어서 디버깅 시작

# gdb -c core.32258 ./test_coredump


6. ulimit -c 로 core file size 원복
계속해서 core 파일을 생성하면 불필요한 하드 공간을 차지하게 되므로..
검증작업이 끝났다면 core file 크기를 원복 시켜주는게 좋습니다. 

#ulimit -c 0

 ※ gdb 활용법은 아래 포스팅을 참고하세요~
http://kthan.tistory.com/6


Posted by KT한
,
목적:
- pcap파일을 전송(재생)하는 목적으로 사용
- 공격 패킷이나 다량의 트래픽을 발생 시키는 목적으로 사용 가능
- 세션이나 비정상 패킷에 대한 테스트 목적으로 사용 가능

사실 여기서 소개할 툴 모두 기능이나 사용방법이 매우 유사합니다.
그냥 기호에 맞는 툴을 선택해서 사용하시면 될것 같네요.

※ 32bit 장비에서 컴파일한 바이너리를 첨부했습니다.
혹시 별도의 설치 없이 사용하고 싶다면..
/usr/bin 아래 폴더에 넣어서 사용하시면 됩니다.

1. tomahawk
장점
- MAC 주소를 pcap에 저장된 값이 아닌 실행하는 장비의 실제 MAC주소로 변환해서 전송 

주요 옵션
-h   사용법 출력 (헬프 메뉴)
-i     패킷 전송(수신) 인터페이스 설정
-j     패킷 수신(전송) 인터페이스 설정
-f     전송할 pcap파일 설정
-l     반복 횟수 설정
-r     재전송 횟수 설정


사용 방법 예
tomahawk -i eth1 -j eth2 -f test.pcap

전송되는 패킷
Beginning test

10:46:56.976963 00:90:0b:0e:76:2d (oui Unknown) > 00:90:0b:0e:76:2a (oui Unknown), ethertype IPv4 (0x0800), length 62: 65.15.1.2.http > 192.15.1.1.light: Flags [S.], seq 3366950201, ack 3958126482, win 16384, options [mss 1380,nop,nop,sackOK], length 0

Finished 2 loops of trace test.pcap Completed: 10, Timed out: 2
Retrans: 0
Sent: 10
Recv: 10

다운 로드 사이트
http://tomahawk.sourceforge.net/

바이너리 첨부파일 다운 ↓↓↓↓↓↓

tomahawk


2. tcpreplay
장점
- 전송 속도/개수에 관한 옵션이 다양

주요 옵션
-h               사용법 출력 (헬프 메뉴)
--listnics   사용 가능한 인터페이스 출력
-i               패킷 전송 인터페이스 설정
-j               패킷 전송 인터페이스 설정
-v              전송하는 패킷 정보 출력
-l               반복 횟수 설정
-p              패킷 전송 pps 설정
-t               가능한 빨리 전송       


사용 방법 예
tcpreplay -i eth1 test.pcap -v

전송되는 패킷
sending out eth1
processing file: test.pcap

11:20:56.689024 00:19:db:43:62:07 (oui Unknown) > 00:13:77:c8:48:2d (oui Unknown), ethertype IPv4 (0x0800), length 60: 192.4.10.8.32064 > 192.4.10.41.61553: Flags [F.], seq 1729, ack 1, win 46, length 0

Actual: 38 packets (4259 bytes) sent in 2.90 seconds
Rated: 1468.6 bps, 0.01 Mbps, 13.10 pps

다운 로드 사이트
http://tcpreplay.synfin.net/

바이너리 첨부파일 다운 ↓↓↓↓↓↓

tcpreplay


3. bit-twist
장점
- 패키지에 포함되어 있는 "bittwiste" 를 사용해서 특정 패킷을 조작 가능(여기서 bittwiste에 대한 설명은 다루지 않겠습니다.)

주요 옵션
-h   사용법 출력 (헬프 메뉴)
-d    사용 가능한 인터페이스 정보 조회
-i     패킷을 전송할 인터페이스 설정
-l     반복 횟수 설정
-m   전송 하는 패킷 간 간격 설정. 0으로 설정하면 즉시 전송.
-v    전송하는 패킷의 시간 정보 출력

사용 방법  예
bittwist -v -i eth1 test.pcap

전송되는 패킷 예
sending packets through eth1
trace file: test.pcap

11:19:22.737028 00:19:db:43:62:07 (oui Unknown) > 00:13:77:c8:48:2d (oui Unknown), ethertype IPv4 (0x0800), length 322: 192.4.10.8.32064 > 192.4.10.41.61553: Flags [P.], seq 1461:1729, ack 1, win 46, length 268

37 packets (4185 bytes) sent
Elapsed time = 1.197193 seconds

다운 로드 사이트
http://bittwist.sourceforge.net/

바이너리 첨부파일 다운 ↓↓↓↓↓↓
bittwist


Posted by KT한
,

목적: 일정 시간에 시계의 알람처럼 특정 프로그램을 실행하고자 할때 사용
바이러스 체크 프로그램처럼 사용자가 지정한 시간(시스템 부하가 적은)에 동작시키는 목적으로 주로 사용된다. 

설정 형식:

# .---------------- 분 (0 - 59)
# |  .------------- 시 (0 - 23)
# |  |  .----------  일 (1 - 31)
# |  |  |  .-------  월 (1 - 12) 
# |  |  |  |  .----   주 (0 - 7) (0과 7=일요일, 1=월요일, 2=화요일, 3=수요일, 4=목요일, 5=금요일, 6=토요일 
# |  |  |  |  |
   *  *  *  *  * 실행할 명령(프로그램)


시간 표현 형식:

1. 특정 값: 숫자로 표현                      (예:  30   2   *   *   7  명령어  =>  매주 일요일 새벽 2시 30분에 실행 )
2. 여러 값: 콤마로 구분하여 표현         (예:  10,30,50   *   *   *   *  명령어 =>  매 10, 30, 50분 마다 실행 )
3. 범위 값: 하이픈으로 구분하여 표현   (예:  0   1-3   *   *   *  명령어 =>  매일 1, 2, 3시에 실행 )
4. 시간 간격: 슬래시로 구분하여 표현   (예:  1  */5   *    *   *  명령어 =>  매일 5시간 간격으로 1분에 실행 )
5. 모든 값: 별표로 구분하여 표현         (예:  *   *   *   *   *  명령어 => 매분 마다 실행 )




사용 절차:
1. crontab 편집모드 실행. 
 [root@localhost ~]# crontab -e

2. 편집창에 원하는 주기와 실행 명령어를 등록한다.
# 분               시          일          월           주      명령어 
   30               1           *            *             *       sh /root/backup.sh 

3. 저장하고 나와서 제대로 등록됐는지 확인 
 [root@localhost ~]# crontab -l

참 쉽죠?



자주 사용되는 설정 :
 

1.  일,월,화 요일 새벽 2시 10분에 백업 실행 
 ▷10 2 * * 0-2   /root/backup.sh 
 

2.  1시에서 6시 사이에 2시간 마다 30분에 실행 
 ▷ 30  1-6/2   *   *   *  
 

3. 매달 1일 1시에 실행 
 ▷ 0  1   1   *   *   

4. 매 15분 마다 실행
 ▷ */4 *  *  *   *   




 
Posted by KT한
,

 정규표현식이란?
특수한 텍스트 패턴에 일치하는지 여부를 검사하거나, 텍스트 내에서 특정 패턴과 일치하는 텍스트를 찾기 위해 사용하는 표현식
요즘은 어지간한 어플리케이션에서 모두 지원하고 있다.

정규표현식 툴
물론 돈을 주고 산다면 다양한 기능과 화려한 인터페이스를 자랑하는 툴도 많다. (RegexBuddy)
하지만.. 우리는 공짜를 좋아하기 때문에..
공짜인 "Rad RegexDesigner"를 추천한다

1. 바로 다운받아 사용하고 싶다면  (첨부파일 클릭)Rad.RegexDesigner.Setup.1.4.exe
2. 사이트에가서 설명을 보고 받고 싶다면..  (홈페이지 주소 클릭)

사용법은  "Input Text"에 문자열을 넣고 "Regular Expression"에 정규표현식을 넣은 후
상단에 있는 녹색 재생 버튼을 클릭하면 된다.
매칭 여부는 우측에 있는 "Match Results"에서 확인 가능하다"

예제의 경우 전체 문자열에서 정규표현식에 의해 매칭된 문자열이 네 개로 나온다.



그럼 중급 정규표현식에 대해 알아보자


1. Group ( ) 
특정 패턴을 묶어서 반복 기호등과 함께 사용
 

여러 문자 중 하나만 선택적으로 매칭하고자 할 때 사용.
====================================
  
표현식   ba(na)*
  
문자열  ba na bana banana nana bananana
====================================
====================================
  
표현식   ba(na)+

  문자열  ba na bana banana nana bananana
 ====================================


2. 선택 지정 ( | ) 
괄호로 묶인 그룹 내에서 | 으로 나뉘어진 여러 개의 패턴  하나와 일치하는 것을 가리킨다
====================================
  
표현식   (eg|sa|be)g
  
문자열  egg eng sag sig beg bag
====================================
 

3. Group 참조  \숫자  (backreference)
 Group
으로 지정된 내용을 뒤에 \숫자의 형식으로 재 사용하는데 사용.
 ====================================
  
표현식   (h.t)\1
  
문자열  hathat hitbit hothot hutcut

  표현식   \d\d(\d\d)-\1-\1
  
문자열  2011-11-11
====================================


4.
반복 문자 탐지  Greedy, Lazy
 
반복 문자 개수를 지정하는 방법은 크게 Greedy방식과 Lazy방식으로 나뉘어진다.
 Greedy
 방식은 가능한 최대의 것을 선택하고,  Lazy방식은 가능한 최소의 것을 선택한다.
 Greedy
 방식뒤에 ? 붙이면 Lazy방식이 된다.

-Greedy 방식
====================================
  
표현식   <.*>
  
문자열  Regex <b>Greedy</b> Style
====================================
-Lazy
방식

====================================
  
표현식   <.*?>
  
문자열   Regex <i>Lazy</i> Style
====================================
-
사용

==================
 Greedy  |   Lazy 
==================
  *         |     *?
  +         |    +?
  ?         |     ??
 \d+       |   \d+?
 {n,m}    |   {n,m}?
==================

5.주요 Escape 문자 목록
 \t      
 문자, Tab, \u0009 
 \r     
 바꿈 문자, Carriage Return, \u000D 
 \n     
 바꿈 문자, Line Feed, \u000A 
 \b     [ ] 안에서 사용될 때는 백스페이스 문자, Backspace, \u0008
         [ ]
 밖에서 사용될 때는  단어 경계(Word Boundary), 즉 단어의 시작과 끝 빈문자에 매칭( \bhit => hit 과 매칭)
       
 Pattern에서 사용될 때는 항상 백스페이스 문자
 \\     \
 문자 자체를 가리킬  사용
       
비슷한 사용법 \.   \*   \+   \?   \^   \$   \(   \)   \{   \}   \[   \] 


6. 주요 특수문자 목록 

 특수문자  문자 클래스  설명
  \w [0-9a-zA-Z_]   영문자, 숫자, 언더바(_) 
  \W [^0-9a-zA-Z_]  영문자, 숫자, 언더바(_) 이외 
  \s [\t\n\r\f]  공백( 반각 스페이스, 탭, 개행) 
  \S [^\t\n\r\f] 공백 이외 
  \d [0-9]  숫자 
  \D [^0-9] 숫자 이외

 


참고 사이트 Joinc Wiki     <= 클릭

Posted by KT한
,
정규표현식이란?

특수한 텍스트 패턴에 일치하는지 여부를 검사하거나, 텍스트 내에서 특정 패턴과 일치하는 텍스트를 찾기 위해 사용하는 표현식
요즘은 어지간한 어플리케이션에서 모두 지원하고 있다.

정규표현식 툴
물론 돈을 주고 산다면 다양한 기능과 화려한 인터페이스를 자랑하는 툴도 많다. (RegexBuddy)
하지만.. 우리는 공짜를 좋아하기 때문에..
공짜인 "Rad RegexDesigner"를 추천한다

1. 바로 다운받아 사용하고 싶다면  (첨부 파일 클릭)
Rad.RegexDesigner.Setup.1.4.exe
2. 사이트에가서 설명을 보고 받고 싶다면..  (홈페이지 주소 클릭)

사용법은  "Input Text"에 문자열을 넣고 "Regular Expression"에 정규표현식을 넣은 후
상단에 있는 녹색 재생 버튼을 클릭하면 된다.
매칭 여부는 우측에 있는 "Match Results"에서 확인 가능하다"

예제의 경우 전체 문자열에서 정규표현식에 의해 매칭된 문자열이 네 개로 나온다.



그럼 초급 정규표현식에 대해 알아보자

1. 점( . )
 .
 임의의 한 문자 가리킨다. ( "줄바꿈 문자(\n)" 제외)
====================================
  
표현식  h.t
  
문자열  hat halt hit heat hot
====================================
  
표현식   h..t
  
문자열  hat halt hit heat hot
====================================

2. 대괄호 [ ]
 [ ]
안에 있는 문자중 하나를 가리킨다.
 [abc]    a,b,c
하나
 [a-z]    
알파벳 소문자 하나
 [0-9]    
숫자 하나
 [a-zA-Z]   
알파벳 소문자나 대문자 하나
====================================
  
표현식   h[aiu]t
 
문자열  hat het hit hot hut
====================================

3. 대괄호와 캐럿 [^ ]
 [^ ]
안에 있는 문자를 제외한 문자중 하나를 가리킨다.
 [^abc]    a,b,c
이외의 문자 하나
 [^a-z]    
알파벳 소문자 이외의 문자 하나
 [^0-9]    
숫자 이외의 문자 하나
 [^a-zA-Z]  
알파벳 소문자나 대문자 이외의 문자 하나
====================================
  
표현식   h[^aiu]t
  
문자열  hat het hit hot hut
====================================

4. 별표( * )
 *
바로 앞에 있는 문자가 0회 이상 반복되는 것을 가리킨다.
====================================
  
표현식   ha*t
  
문자열  ht hit hat hot haat hut haaaaat
====================================

5. 플러스(+)
 +
바로 앞에 있는 문자가 1회 이상 반복되는 것을 가리킨다.
====================================
  
표현식   ha+t
  
문자열  ht hit hat hot haat hut haaaaat
====================================

6. 물음표( ?)
 ?
바로 앞에 있는 문자가 0또는 1회 반복되는 것을 가리킨다.
====================================
  
표현식   ha?t
  
문자열  ht hit hat hot haat hut haaaaat
====================================

7. {n}
 {n}
바로 앞에 있는 문자가 n회 반복되는 것을 가리킨다.
====================================
  
표현식   ha{2}t
  
문자열  ht hit hat hot haat hut haaaaat
====================================

8. {n,}
 {n,}
바로 앞에 있는 문자가 n회 이 반복되는 것을 가리킨다.
 
{0,} 별표(*) 같은 의미이다.
 {1,} 더하기(+) 같은 의미이다
 {0,1} 물음표(?) 같은 의미이다
 
====================================
 
  표현식   ha{2,}t
 
  문자열  ht hit hat hot haat hut haaaaat
 
====================================
 

9. {n,m}
 {n,m}
바로 앞에 있는 문자가 n회 이상, m회 이하 반복되는 것을 가리킨다.
====================================
  
표현식   ha{2,4}t
  
문자열  ht hat haat haaat haaaat haaaaat
====================================

10. 캐럿( ^)
 ^
줄의 제일 처음(시작위치) 가리킨다.
====================================
  
표현식   ^h.t
  
문자열  hat hit hot
====================================

11. 달러( $)
 $
줄의 제일 마지막( 위치) 가리킨다.
====================================
  
표현식    h.t$
  
문자열  hat hit hot
====================================

 


Posted by KT한
,

목적: 
MS 오피스 엑셀(excel)에서  특정 셀에 지정된 값을 설정 하는데 있어 콤보박스를 사용하고자 할 때 사용
매번 같은 문자를 입력하는 수고를 덜어주고, 색깔을 넣어줌으로써 간결하게 보여지는 효과가 있음. 
(MS Office 2007을 기준으로 작성됨)
 

추천은 저를 춤추게 합니다 ^^


예제는 PASS,FAIL 두개의 값으로 해보도록 하겠습니다~  

설정 절차:

 
1. 값을 설정 하고자 하는 셀을 선택합니다. 

2.  상단 메뉴에서 "데이터 > 데이터 유효성 검사"를 선택합니다. 
 



3. 팝업창이 뜨면 "설정" 탭에서 "제한 대상"을 "목록"으로 선택 후,
"원본"란에 콤보박스에 보여주고자 하는 값을 입력합니다. 
(예: PASS, FAIL )
  

값에 따라 색깔을 지정하고 싶다면 다음 과정을 추가로 진행하면 됩니다 

4.  상단 메뉴에서 "홈 > 조건부 서식 > 새 규칙" 선택 



5. 팝업창이 뜨면 "규칙 유형 선택" 에서 "수식을 사용하여 서식을 지정할 셀 결정" 선택  

6. "규칙 설명 편집"란의 "다음 수식이 참인 값의 서식 지정"에 다음과 같이 설정
색깔을 지정하고자 하는 값과 현재 선택된 셀 위치 값으로 아래와 같이 입력
 

 =FIND("FAIL",$H5)<>0      

참고로, '$H5'는 콤보박스가 들어갈 셀 위치값

   



7. 자! 이제 "서식" 버튼을 클릭하여 색깔 및 글꼴 설정을 해봅시다  
여기서는 FAIL을 빨간색으로 설정 해보겠습니다. 


색깔을 선택하고 확인을 누르시면 됩니다. 


8. 목록으로 보여질 다른 값들에 대해 모두 조건부 서식을 지정하면 됩니다. 
PASS인 경우 다음과 같이 설정 후 서식에서 파란색을 지정해줘봅시다. 

 =FIND("PASS",$H5)<>0



9. 결과 화면 
선택된 셀 옆에 콤보박스를 여는 화살표가 생기고 값을 선택하면
PASS는 파란색으로, FAIL은 빨간색으로 보여집니다.  
 



10. 참~ 쉽죠? 

콤보박스 설정을 한 셀 (이 예제에서는 H5 겠죠?)을 복사해서 붙여넣으시면
간편하게 콤보박스가 적용됩니다~  ^^

Posted by KT한
,