블로그 이미지

my hiding place

삶이 힘들 때, 조금이라도 고개를 들고 위를 보세요. 푸른 하늘이 당신을 맞이해줄 날이 있을 테니까. by nulonge


'구글'에 해당되는 글 4건

  1. 2009.11.11 봇넷은 오픈 소스를 좋아해~
  2. 2008.11.10 Google의 검색 URL 이해하기(2)
  3. 2008.11.05 Goolge에서 불리언 연산자(AND, OR, NOT) 사용하기
  4. 2008.11.05 Google 검색의 황금률(2)

봇넷은 오픈 소스를 좋아해~


DDoS의 원흉, 봇넷을 다루는 공격자들의 기술이 하루가 다르게 발달하다보니, Google App Engine을 이용하는 상황에 이르렀습니다. 따로 C&C 서버로 사용할 인프라를 구축할 필요없이 오픈 소스 기반 클라우딩 컴퓨팅을 이용하는 거죠. 오픈 소스의 명암이랄까...

공격기술을 따라잡는 방어 혹은 예방 조치도 이에 뒤질 수는 없겠지요. Abor Networks, FireEye같은 보안 업체들이 이런 봇넷을 무력화하기 위해 활동하고 있습니다. 구글과 협력하여 악성 C&C 서버 인프라를 제거하거나, 인터넷 도메인 관리 기관과 협조하여 C&C 서버가 사용하는 도메인 주소를 차단하는 노력을 기울이고 있습니다.

아직 보편화하기는 이르겠지만, FireEye는 C&C 서버 접근이 차단된 봇넷이 구동하는 도메인 접근 알고리즘을 찾아내고, 봇넷이 접근 시도하는 도메인 주소를 도메인 관리 기관과 공조해서 막고 있답니다. 이 알고리즘도 악성코드 사업자들에게는 서로 공유되는 모양입니다.

이렇듯, 뚫고 막는 사이버 전쟁은 지금도 계속됩니다만, 보안업체 입장으로서도 쉽지는 않겠지요. FireEye로서도 시간 소모적인 작업이라는 고충을 호소하고 있습니다.

참 대단한 IT쟁이들이 많군요. 봇넷을 분석하고, 동작원리를 파악해서 근원을 차단하는 방식으로 대응하는 모습을 보면, 아무나 할 수 있는 일 같지는 않습니다...
Comment 0 Trackback 0
Top

Google의 검색 URL 이해하기

Google 검색창에 사용자가 입력한 검색 요청은 URL로 변환되어 Google로 전달됩니다. 검색창에 검색어를 입력하는 것과 같이 URL을 조작함으로써 검색창에서 활용할 수 없는 조건을 달아 검색할 수 있습니다. 뭐, Google을 이용한 해킹을 준비하는 과정이죠...


알아둘 것은, 검색 질의어는 q라는 URL 파라미터에 할당된다는 점입니다다. 사파리에서 “누렁이”를 검색창에 입력하면 다음과 같은 URL로 변환됩니다: http://www.google.com/search?client=safari&rls=en-us&q=누렁이&ie=UTF-8&oe=UTF-8


URL 문법

  • www.google.com/search --> Google 검색 스크립트의 위치
  • ?를 포함한 나머지 부분 --> URL 또는 URI라고 한다.
  • ?는 파라미터가 검색 스크립트에 전달된다는 뜻이다.
  • 파라미터는 변수와 변수에 할당된 값으로 구성되며, “variable=value” 형태로 표시한다.
  • & --> 파라미터와 파라미터 사이에서 사용된다.
  • 여러개의 파라미터가 사용될 때 순서는 아무 의미 없다. Google은 파라미터의 변수명에 따라 값을 할당받아 사용자를 대신에 인터넷에서 검색을 수행해준다.
  • URL의 구성: www.google.com/search?variable1=value1&variable2=value2&variable3=value3


URL에 한국어와 같은 2바이트 문자를 입력하거나, 특수문자, 공백 등을 입력하려면 16진수로 변환해야 합니다. 웹 브라우저에 따라 16진수로 변환되지 않은 값을 URL 창에 입력해도 무방합니다. 제가 몇가지 테스트를 해봤습니다.

  • Mac OS X에서 Safari를 사용하는 경우, 그냥 한글을 입력해도 한글을 인식하고, 검색이 정상적으로 이루어진다.
  • Windows에서는 IE를 사용하면 정상적으로 인식하지 못하기 때문에 정상적인 검색이 되지 않는다.
  • Windows에서 Chrome을 사용하면 URL 창에서 한글을 인식하고, 검색도 정상적으로 된다.
  • Windows에서 Firefox를 사용하는 경우, q에 한글로 검색어를 입력하면 자동으로 16진수로 변환하여 전송하고, 검색된다.
  • Linux에서 Firefox를 사용하는 경우, 검색어에 입력된 한글을 인식하고, 검색도 정상적으로 이루어진다.


URL 문법에 따라 검색 질의문을 작성한 예입니다:

  • www.google.com/search?q=”헐랭이와 IT보안”
  • www.google.com/search?q=헐랭이와+IT보안
  • www.google.com/search?q=hack+stuff+johnny // 이때 사용되는 +는 AND 연산자처럼 보인다. 확실치는 않다. 어차피 기본 검색 설정은 AND임...
  • www.google.com/search?q=hack+stuff+-johnny // 질의문에 NOT 연산자 -를 함께 사용할 때는 앞에 +를 붙여준다.
  • www.google.com/search?q=stuff|johnny // 질의문에 OR 연산자 |를 함께 사용할 때는 +를 붙여주지 않는다. 검색어 사이를 띄지 말고 |를 사용한다.


결국, Google 검색 URL을 레고 블록을 쌓듯이 구성할 수 있습니다. Google 검색에서 사용할 수 있는 파라미터 변수들은 너무나 많고, 이걸 다 정리하기란 불가능해 보여서.... -_-; 그중에서 많이 쓰일 만한 몇개만 정리해봅니다.


  • q=검색어 - 가장 기본적인 검색 변수: 별다른 옵션을 사용하지 않았다면 검색어는 q에 할당된다. 기본적으로 AND 옵션이 적용되므로, 2개 이상의 단어를 입력하면, 2개의 단어가 모두 있는 페이지만 찾아준다: www.google.com/search?q=hack+stuff
  • as_oq=검색어 - 값으로 할당된 단어 중 적어도 한 단어가 있으면 모두 찾는다. 검색창에 OR 연산자인 |를 이용하여 “단어1 | 단어2”를 입력한 것과 같다: www.google.com/search/?as_oq=hack+stuff
  • as_epq=검색 문자열 값으로 할당된 단어의 묶음을 “구”로 간주해서 정확히 모든 단어가 일치하는 구가 있는 웹 페이지를 찾아서 보여준다. 검색 창에 큰 따옴표로 둘러싼 “hack stuff”를 이용하는 것과 동일하다: www.google.com/search?as_epq=hack+stuff
  • as_eq=검색어+검색어 - 값으로 할당된 단어를 검색에서 제외한다. 검색창에서 NOT 연산자인 -를 이용하여 ‘-단어’를 입력한 것과 같다. 검색에서 제외할 단어를 지정하는 것이기 때문에 q, as_oq와 같은 검색 대상을 지정하는 파라미터와 함께 사용해야 한다: www.google.co.kr/search?q=hack+stuff&as_eq=johnny 또는 www.google.com/search?q=hack+stuff+-johnny (+뒤에 -가 붙어 있다.)
  • start=숫자 - 결과 페이지를 출력할 때 검색된 웹 페이지중에서 보여줄 페이지를 지정한다. 첫 페이지는 0이다. 예를 들어, ‘hack +stuff’로 검색했을 때 100개의 페이지가  150개일 때, start 옵션값으로 9를 지정하면, Google은 검색된 대상중 10번째부터 검색 결과를 보여준다. (왜 그랬을까? 누가 만들었을까?)
  • as_filetype=확장자 - 지정된 파일확장자로 된 웹 페이지를 찾는다. mp3, pdf, xls 등 다양한 파일 확장자를 인식한다. 이 파라미터는 혼자 쓰면 검색이 무의미하고, as_ft와 함께 사용된다. (as_ft를 사용하지 않으면 기본값으로  as_ft=i가 적용된다.) q와 같은 다른 파라미터와 함께 사용하는 것이 좋다. 검색창에 고급 연산자 filetype를 지정하는 것과 동일한 결과를 보여준다: www.google.com/search?q=matrix&as_filetype=avi&as_ft=i 또는 www.google.com/search?q=matrix+filetype:avi
  • as_ft=[i|e] - as_filetype으로 지정된 파일 유형을 검색에서 포함(i)시킬 것인지 제외(e)할 것인지 지정한다.
  • as_sitesearch=도메인 또는 사이트 - 특정 도메인 또는 사이트를 검색 대상에 포함하거나 제외 시킬 때 사용한다. as_df와 함께 사용한다.
  • as_df=[i|e] - as_sitesearch로 지정된 특정 도메인이나 사이트를 검색 대상에 포함(i)하거나 제외(e)한다.
  • as_occt=[any|title|body|url|link] - 검색어를 웹 페이지의 특정 위치에서 찾도록 지정한다. 파라미터의 성격상 다른 것들과 섞어 쓸 때는 주의가 요구된다: www.google.com/search?q=nulonge&as_occt=link
    • any - 웹 페이지의 어느 위치든 상관없이 검색어를 찾는다.
    • title - 웹 페이지의 타이틀, html 파일의 헤더 부분에서 검색어를 찾는다. 고급 연산자 allintitle과 동일하다.
    • body - 웹 페이지 본문에서 검색어를 찾는다. 고급연산자 allintext와 동일하다.
    • url - URL에서 검색어를 찾는다. 고급연산자 allinurl과 동일하다.
    • link - 웹 페이지에서 검색어가 링크에 있으면 찾는다. 고급연산자 allinanchor와 동일하다.
  • safe=[active|off] - SafeSearch 기능을 끄거나 켠다. SafeSearch는 구글 검색걸과에서 성인물을 알아서 걸러주는 역할을 한다. Google Korea에서도 기본으로 Active 상태로 적용된다.
  • hl=언어코드 - 검색결과를 출력할 때 사용되는 Google 웹 인터페이스에서 사용되는 언어를 지정한다. 보통 모국어로 지정되어 있기 때문에, Google Korea에서 검색하면 hl=ko로 나타난다. 검색 화면을 영어로 변경하려면 hl=en으로 변경한다. hl로 언어코드를 지정하면 Google이 사용자 PC에 저장하는 쿠키에 값이 저장되기 때문에 이후 Google 화면은 해당 언어로 표시된다. 언어코드는 다음과 같다: ar (아라비아어), zh-CN (중국어 간체), zh-TW (중국어 번체), en (영어), el (그리스어), iw (히브리어), ja (일본어), ko (한글), ru (러시어어)... 이외에도 매우 많음.
  • lr=언어코드 - 검색 결과를 특정 언어로 제한한다. hl과 달리, 다른 언어코드를 사용한다: lang_en (영어), lang_zh-CN (중국어 간체), lang_zh-TW (중국어 번체), lang_ko (한글), lang_ja (일본어)...
  • restrict=제한코드 - 검색 결과를 특정 국가로 제한한다. 검색 결과를 최상위 도메인이나 서버의 IP 주소가 갖는 지리적 위치에 근거해 하나 또느 몇개 국가 페이지로 제한한다. 이 검색 결과는 완전하지 않을 수 있는데, Google이 제한코드를 적용하는 기준은 host와 whois 명령을 사용해서 확인해볼 수 있다(host www.naver.com을 입력한 다음, 검색결과에서 ip 주소를 찾아서 whois 명령으로 조회해보면 국가명을 알 수 있다.) : 제한 코드는 매우 많다: countryAU (호주), countryCN (중국), countryDO (도미니카 공화국), countryES (스페인), countryUK (영국), countryGU (괌), countryJP (일본), countryKP (북한), counryKR (한국), countryUS (미국)...
  • as_qdr=[m3|m6|y] - 지정한 시간 내에 갱신된 웹 페이지를 찾는다.
    • m3 - 3달 이내에 갱신된 페이지
    • m6 - 6개월 이내에 갱신된 페이지
    • y - 1년 이내에 갱신된 페이지
Comment 2 Trackback 0
  1. Favicon of http://www.unny.com BlogIcon montreal florist 2010.02.23 04:34 신고 address edit & delete reply

    검색 URL 이 생각보다 상당히 다양하드라구여

    • Favicon of http://nulonge.tistory.com BlogIcon nulonge 2010.02.23 16:09 신고 address edit & delete

      네, 여기에 기술된 것보다 더 많을 겁니다.

Top

Goolge에서 불리언 연산자(AND, OR, NOT) 사용하기

Google에서 검색하기란 매우 쉽습니다. 그저 단어만 입력하면 되는 거죠. 한 단어로 잘 찾아지지 않는다? 그럼 여러개의 단어를 넣어봅니다. 여러 단어중 하나라도 걸리겠지 하는 심정으로 말입니다. 그렇지만 양보다 질로 승부하세요. 불리언(boolean) 연산자를 사용해서 더 편하게 찾아볼 수 있습니다. 

일반적인 단어 검색: 입력된 모든 단어가 들어가 있는 문서를 찾는다.
보통, 하나 혹은 여러개의 단어를 입력해서 검색을 합니다. Google은 여러 단어를 받아들이면 먼저 중단어(stop word)는 걸러냅니다. 주로 부사, 접속사, 대명사, 의문대명사, 전치사 같은 것들을 걸러냅니다. 이런 단어들은 특별한 의미를 제공하지 않기 때문에 무시되는 것이죠. (이런 단어들도 그냥 그 단어 하나만 입력하면 중단어로 간주하지 않습니다.)

hacker  //hacker가 들어간 모든 웹 페이지를 찾아서 보여줍다.
Justice for all  //'justice'와 'all'이 들어간 모든 웹 페이지를 찾아서 보여줍니다. for가 있느냐 없느냐는 그다지 중요하지 않습니다.
to be or not to be //'to be'가 들어간 모든 웹 페이지를 찾아서 보여줍니다. 'or', 'not'은 중단어이기 때문에 검색 대상이 되지 않습니다. 물론, to be or not to be도 찾아지기는 합니다만, Google 검색 엔진이 의도한 결과는 아닙니다.

구 검색  phrase search

“ “로 둘러싸인 단어 그룹을 검색하는 것도 한 방법입니다. Google은 ""으로 둘러 싸인  모든 단어를 순서대로 들어 있는 페이지를 찾습니다. 중단어(stop workd)도 검색 대상이 됩니다. 와일드 카드 문자를 활용하여 검색 대상 단어를 줄일수도 있습니다.

- “Google hacker”

- “adult humor”

- “Carolina gets pwnt”


단어 검색과 구 검색은 검색의 기본이 되며, 고급 연산자를 사용하면서 강력한 검색이 가능해집니다. 여기서는 불리언 연산자만 설명합니다.


AND와 OR, NOT 그리고 고급 연산자

1. 검색 기능을 확장해서 이용하려면 AND, OR, NOT과 같은 불리언 연산자와 그외에 Google에서 정의한 고급 연산자를 이용할 수 있습니다. Google에서 불리언 연산자는 각각 +(AND), -(NOT), |(OR) 기호를 사용한다. 불리언 연산자를 제대로 이용하려면 www.google.co.kr이 아니라 www.google.com을 이용하는 것이 좋겠습니다. 다음 두 검색 결과를 비교해보시면 알겁니다.


http://www.google.com/search?hl=en&fkt=1901&fsdt=6177&q=hot+and+spicy&btnG=Google+Search&aq=f&oq=

--> hot과 spicy만 검색한다.

http://www.google.co.kr/search?complete=1&hl=ko&q=hot+and+spicy&btnG=Google+검색&lr=&aq=f

--> hot과 spicy뿐만 아니라 and까지 검색한다. 훨씬 더 많은 내용이 검색된다.


2. 불리언 연산자와 함께 괄호를 사용할 수 있다는 것도 기억하세요. 괄호를 이용해서 그룹핑함으로써 검색 질의를 명확하게 할 수 있다.

3. 와일드 카드를 적극 활용하는 것! 잊지 마세요.


AND와 + 연산자

Google은 기본적으로 AND 연산자를 사용하여 검색을 수행합니다. 즉, AND는 입력할 필요가 없습니다. AND 연산이 필요하면 + 연산자를 사용한다. 언제 쓰냐구요? 중단어(stop word)를 검색 결과에 포함시킬 때 유용합니다. = )


다음 예를 보세요.


and justice for all: “justice"와  "for all”이 포함된  모든 검색결과를 출력합다. 단, and는 중단어이기 때문에 검색하지 않습니다. 검색 결과에 and justice for all이 포함되기는 하지만, 이것은 Google 검색 엔진이 의도한 결과는 아닙니다.

“and justice for all”: 단어가 순서대로 들어가 있는 문구가 있는 검색결과만 출력한다.

+and justice for +all: “and justice for all” 뿐만 아니라, 개별단어가 들어간 모든 검색결과를 출력한다. 단, and와 all은 중단어이지만, + 연산자가 사용되었기 때문에 개별 중단어에 대한 검색 결과도 포함된다.


NOT과 - 연산자

특정 단어 또는 구를 검색에서 제외합니다. NOT 대신에 - 연산자를 사용하세요.


-and justice for all: “justice”, "for all"에 대해 검색한다. all은 중단어이므로 검색하지 않는다. 검색결과에서 and가 들어있으면 사용자에게 보여주지 않습니다.


OR과 | 연산자

OR 대신에 | 연산자를 사용합니다. a | b 와 같은 형태로 사용하는데, a 또는 b라는 단어가 있는 모든 검색결과를 보여준다. 고급연산자와 함께 사용함으로써 더 막강한 기능을 발휘할 수 있습니다.


연산자의 적용 순서 & 우선순위

모든 검색어는 왼쪽에서 오른쪽으로 적용됩니다. 즉, Google은 연산자에 특별히 우선순위를 부여하지 않습니다. 검색을 명료하게 하려면 괄호 기호 “(“과 “)”를 이용하는 습관을 들이세요.


intext:passwd | passcode intext:username | userid | user | id filetype:csv


--> 텍스트에 passwd 또는 passcode라는 단어가 있는 모든  페이지를 찾습니다.

--> 검색된 페이지 중 username, userid, id 중 하나라도 있으면 그 페이지를 찾습니다.

--> 검색된 페이지 중에서 CSV 파일만 보여줍니다.

--> intext는 Google에서 정의하는 고급 연산자중 하나이며, 웹 페이지 본문을 의미합니다.


검색 질의를 명료하게 바꾸면 이렇습니다.


intext:(passwd | passcode) intext:(username | userid | id) filetype:csv


정말 쉽죠? = )

Comment 0 Trackback 0
Top

Google 검색의 황금률

그냥 막연하게 구글 검색창에 단어를 쭉 나열해서 찾는 것보다는 Google을 잘 이해하고 그에 맞게 검색 질의를 하는 것이 좋습니다. 구글에서 올바른 검색에 도움이 될만한 사항을 조금씩 정리해봅니다. (구글관련 서적을 읽고 있습니다. 이 내용은 그 중에서 발췌하면서 나름대로 덧붙인 것이죠...)


구글 요청문은 대소문자 구분을 하지 않는다.

구글은 대소문자를 구분하지 않습니다. 단 하나 예외가 있다면, 불리언 연산자인 OR은 반드시 대문자로 써야 합니다. (그러나 OR을 입력하는 것보다는, "|"을 입력하는 것이 편합니다.


예: passwd | password //passwd 또는 password 중 한 단어라도 있는 웹 페이지는 모두 검색합니다.


검색에서 사용되는 와일드 카드 문자 "*"

“*”은 검색어의 단일 단어(word)를 의미합니다. 특정 단어의 앞이나 뒤에 *를 붙이는 것은 그 단어 자체만을 사용하는 것과 동일한 결과를 갖습니다. (와일드 카드 문자는  큰 따옴표를 이용해서 특정한 단어 구를 찾을 때 유용합니다.)


구글은 자동 단어확장 기능이 있다.

diet라는 단어를 검색하면 dietary라는 단어를 포함한 웹 페이지 목록을 출력합니다. 명사의 경우, 단수 명사로 입력하면 복수 명사도 함께 검색됩니다.


구글은 검색에서 일부 단어를 무시한다: stop word

구글은 검색 창에 입력된 일부 단어, 문자, 검색어의 한자리 숫자를 무시합니다. 무시된 단어는 중단어(stop word)라고 합니다. who, where, what, the, a, an와 같은 단어들은 검색에서 의미있는 결과를 가져오기 어렵기 때문에, 의도적으로 무시됩니다. 관사 하나가 검색에서 차지하는 의미는 매우 적지요.


중단어의 종류는 무엇이 있는 지 Google에서 검색해보세요: "stop word" +google


중단어를 검색에서 사용하려면, 

1. “ “ 사이에 넣어서 입력하거나 (예: "justice for all")

2. 중단어 하나만을 이용해 검색합니다. (예: who 단어 하나만 입력)

3. 검색어 앞에 “+”를 붙여서 검색해도 됩니다. (예: justice +for +all. 단, + 기호와 단어 사이에 공백이 있으면 안됨)


구글은 검색어를 10개로 제한한다.

구글은 10개가 넘어가는 질의를 받으면 10자만 받아들입니다. 검색할 단어는 신중하게 선택하는 것이 좋습니다. 와일드 카드 문자는 제한 범위에 포함시키지 않으므로 *를 적극 활용해야 합니다.


검색되는 예

미국 헌법의 첫 부분인 we the people of the united states in order to form a more perfect union establish justice의 경우, 모두 17 단어입니다. 이것을 그냥 Google을 통해 검색하면, the, of, the, in, to, a 등은 중단어(stop word)이므로 검색 대상에서 제외됩니다. 그리고, 중단어(stop word)는 검색어 제한에 포함되지 않는 것 같습니다. 'justice'는 10개 단어를 초과하기 때문에 검색 대상에서 제외됩니다.


적절한 검색 방법은 이것입니다: “we * people * * united states * order * form * more perfect * establish *”


단어는 모두 9개가 사용됩니다. 8개의 와일드 카드 문자는 10 단어 제한이 적용되지 않으므로, 정확히 저 미국헌법 첫 부분을 검색하게 됩니다.


Google.com에서는 이렇게 동작하는데 google.co.kr은 조금 다른 것 같습니다. 우리나라 언어의 특성 때문인지, 중단어도 검색되는 것 같기도 하네요. 한국어라는게, 굴절어(조사와 어미가 체언, 어간에 붙어서 사용되므로 단일 형태가 없는 언어)이기 때문에 더욱 그런 것 같습니다. 우리나라 언어와 같은 것을 잘 검색할 수 있는 알고리즘이 있다면 참 좋을 텐데.

Comment 2 Trackback 0
  1. Favicon of http://gooja.tistory.com BlogIcon 꾸자 2008.11.06 10:02 신고 address edit & delete reply

    좋은글 잘보고 갑니다~

Top

prev 1 next