이전에 만들어 놓았던 코드를 좀 다듬어서 올려 봅니다.
Zone-H.kr 사이트는 Zone-H 사이트에 Defacing 당해 올라오는 리스트 중 국내 사이트만 추려서 보여주는 사이트 입니다.
이 사이트에 대한 간단한 소개 인터뷰가 있어 링크를 걸어 봅니다. [링크]
제가 작성한 스크립트는 다음과 같은 기능을 수행합니다.
1. 특정일에 Defacing 된 사이트 리스트 출력
2. 특정 기간을 지정하여 Defacing 된 사이트 리스트 출력
3. 위 1, 2번 옵션을 사용하여 나오는 리스트 중 특정 문자열이 들어간 도메인만 출력
사용방법은 아래와 같습니다.
1. 특정일에 Defacing 된 사이트 리스트 출력 (2009년 1월 1일)
- Search_ZoneH.py -s 2009-01-01
2. 특정 기간을 지정하여 Defacing 된 사이트 리스트 출력 (2009년 1월 1일 ~ 2009년 1월 31)
- Search_ZoneH.py -s 2009-01-01 -e 2009-01-31
3. 위 1, 2번 옵션을 사용하여 나오는 리스트 중 특정 문자열이 들어간 도메인만 출력
(2009년 1월 1일 ~ 2009년 1월 31 중 도메인 이름에 "ac.kr" 이 들어가는 리스트만 출력)
- Search_ZoneH.py -s 2009-01-01 -e 2009-01-31 -f ac.kr
#!/usr/bin/python
import httplib, re, sys, optparse
from datetime import date
def main():
usage = "Usage: %prog [options] YYYY-MM-DD"
p = optparse.OptionParser(usage)
p.add_option('-s', '--start', help='Ex) 2010-01-02')
p.add_option('-e', '--end', help='Ex) 2010-01-02')
p.add_option('-f', '--find', help='Search Domain')
options, args = p.parse_args()
if options.start == None:
p.error('Check Option plez....')
sys.exit(1)
if options.end == None: # Only -s option.
Parser1(options.start, options.find)
elif options.start != None and options.end != None:
Parser2(options.start, options.end, options.find)
def Parser1(str, find):
option1 = str[0:4]
option2 = str[0:7]
option3 = str
r = Search(option1, option2, option3)
flag = 1
for x in r:
if find != None:
try:
if re.search(find, x).group() == find:
if flag == 1:
print ''
print '+------------------------------+'
print '| ' + option3 + ' |'
print '+------------------------------+'
flag = 0
print x
except:
continue
else:
if flag == 1:
print ''
print '+------------------------------+'
print '| ' + option3 + ' |'
print '+------------------------------+'
flag = 0
print x
def Parser2(str1, str2, find):
start_y = str1[0:4]
start_m = str1[5:7]
start_d = str1[8:10]
end_y = str2[0:4]
end_m = str2[5:7]
end_d = str2[8:10]
start = date(int(start_y), int(start_m), int(start_d))
end = date(int(end_y), int(end_m), int(end_d))
while 1:
option = str(start)
option1 = option[0:4]
option2 = option[0:7]
option3 = option
r = Search(option1, option2, option3)
flag = 1
for x in r:
if find != None:
try:
if re.search(find, x).group() == find:
if flag == 1:
print ''
print '+------------------------------+'
print '| ' + str(start) + ' |'
print '+------------------------------+'
flag = 0
print x
except:
continue
else:
if flag == 1:
print ''
print '+------------------------------+'
print '| ' + str(start) + ' |'
print '+------------------------------+'
flag = 0
print x
if start == end:
sys.exit(1)
flag = 1
try:
start = start.replace(day = start.day + 1)
except:
try:
start = start.replace(month = start.month + 1, day = 1)
except:
start = start.replace(year = start.year + 1, month = 1, day = 1)
def Search(option1, option2, option3):
if option1 == '2010':
option1 = '/'
conn = httplib.HTTPConnection('zone-h.kr')
conn.request('GET', '/korea_Defaced/' + option1 + '/' + option2 + '/' + option3 + '/')
r1 = conn.getresponse()
data = r1.read()
search = re.findall('<a href=.+ target=new>', data)
list = []
for x in search:
tmp = re.sub('<a href=', '', x)
list.append(re.sub(' target=new>', '', tmp))
return list
if __name__ == "__main__":
main()
Zone-H 사이트에 부하를 주려나요? -_-
혹시라도 Zone-H.kr 사이트 관리자분께서 이 포스팅을 보시게 된다면 보시고 사이트에 부하가 될거 같으면 코멘트 달아주시기 바랍니다...