해킹공주의 일상
[Shodan] 쇼단 API를 이용한 Python 검색 자동화 본문
1. 개요
쇼단에서 API를 제공해주는데 이를 활용해서 자동화 툴을 만들어 볼 수 있다. 간단하게 사용자로부터 검색어 입력값을 받아서 원하는 내용만 출력하는 코드를 공유하고자 한다.
※ 해당 내용을 바탕으로 남의 서버에 접근하거나 나쁜짓을 하면 불법!
2. 코드
2.1 초기 설정
- API 키 설정을 맨처음에 해줘야한다. API 키는 [Shodan 페이지] > [account] 에서 확인할 수 있다.
import shodan
SHODAN_API_KEY = "API키"
api = shodan.Shodan(SHODAN_API_KEY)
2.2 호스트 정보 확인하기
- IP정보를 바탕으로 해당 옵션을 활용해 원하는 정보를 가져올 수 있다.
# 1. IP 주소 등록
>>> results = api.host(['8.8.8.8'])
# 2. 사용할 수 있는 키 값 확인
>>> results.keys()
dict_keys(['city', 'region_code', 'os', 'tags', 'ip', 'isp', 'area_code', 'longitude', 'last_update', 'ports', 'latitude', 'hostnames', 'country_code', 'country_name', 'domains', 'org', 'data', 'asn', 'ip_str'])
# 3. 키값 출력
>>> results['city']
'Mountain View'
>>> results['ip_str']
'8.8.8.8'
2.3 사용자 검색어를 받아 원하는 내용을 출력하는 코드
- search 옵션사용하여 검색 수행
import shodan
SHODAN_API_KEY = "API키"
api = shodan.Shodan(SHODAN_API_KEY)
query = ''.join(sys.argc[1:])
# 1. search 옵션으로 입력값 검색
results = api.search('mongodb')
# 2. 매칭된 값들 출력
for result in results['matches']:
print(result['ip_str'])
print(result['data'])
2.4 FTP 서비스가 익명으로 열려있는 서버 출력 코드
import shodan
import result
sites = []
SHODAN_API_KEY = "API키"
api = shodan.Shodan(SHODAN_API_KEY)
# 1. 입력값 받아오기
query = ''.join(sys.argc[1:])
# 2. Anonymous로 열려있는 서버 검색
results = api.search('port: 21 Anonymous user logged in')
print("hosts number:" + str(len(results['matches'])))
# 3. 매칭하면 데이터에서 IP정보만 추출하여 출력
for result in results['matches']:
if match['ip_str'] is not None:
print(result['ip_str'])
sites.apeend(match['ip_str'])
'모의해킹 > 정보수집' 카테고리의 다른 글
[Censys] Censys 검색 및 사용법 (0) | 2022.12.22 |
---|---|
Python을 활용한 Nmap 포트스캔 csv 파일 추출 자동화 (1) | 2022.12.22 |
[Shodan] Shodan 콘솔 명령어 사용법 (0) | 2022.12.08 |
grayhatwarfare를 통한 클라우드 데이터 s3 버킷 검색 (0) | 2022.12.08 |
[Shodan] Shodan 간단한 사용법 (0) | 2022.12.07 |
Comments