2022년 3월 9일 수요일

IP로 국가 코드 얻기 KISA & DB BROWSER FOR SQLITE

 ip로 국가 확인 api


검색어로 구글 검색을 해보니 KISA에서 CSV를 배포하는 것을 알게 되었다.

일반적으로 GEOIP 검색해보면 유료 서비스가 있는데 돈 쓰는 것은 아깝고

PHP등에서는 예전 형식을 사용하는 것이 있는데 난 Dotnet을 사용하는데

데이터만 있으면 좋겠는데...  하고 아쉬워 했었다.


하여간 csv를 먼저 받도록 하자


kisa 국가별 ip


검색어로 검색을 하면

https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/statboard/IPAS/ovrse/total/currentV4Addr.jsp

위 url로 들어가볼수 있다. (이상한 문자로 보이지만 주소창에 한글로 되어 있다.)


해당 사이트에서 csv를 받도록 한다.


내용은 아래와 같다




사실 여기서 필요한 정보는 국가코드,시작IP,끝IP 3가지다.

나머지열은 지워버린다. 그리고 1줄에 헤더 부분(한글) 도 지워버린다.

db browser for sqlite 를 켜고 데이터베이스를 만든다.

테이블은 안 만들어도 된다. (가져오기 하면 임시 테이블 만들어지니까 이거 수정하자)





파일을 지정하면 아래와 같이 나온다.


가져오기 하면 지 맘대로 테이블 만들어준다.


정보는 원하는대로 입력한다.


데이터가 제대로 입력된것을 볼 수 있다.


공격 들어오는 ip를 조회해보았다.



쿼리는 아래와 같다.

SELECT code from geoip where start <= '168.76.2.6' and end >= '168.76.2.6'

'168.76.2.6' <- 여기에 아이피 넣으면 되고 code 가 없을수도 있다.

이럴경우 특정 값으로 만들어 주고 나중에 다른 서비스를 이용해서 등록해주면

되지 않을까 싶다. 그리고 가능하면 주기적으로 확인해서 최신 데이터로 갈아주는것도

좋을 것이다.


%% 주의 %%

이거 문자열을 숫자형태로 변환해서 사용해야 합니다.

검색하면 나올건 sqlite에는 명령어가 없고 mysql 에서는 INET_ATON 명령어로

변환해서 사용해야 제대로 검색이 됩니다.

글을 수정하거나 새로 쓰기 귀찮아서 아래에 추가 합니다.

댓글 없음:

댓글 쓰기

C# Async/Await Task 속도가 느릴 때 (TaskCompletionSource)

고전적인 개발 방법으로는 작업이 끝났는지 확인하기 위해서 작업 내용을 확인하는 루프를 만들어서 확인을 하는데 나는 이걸 mysql 풀링에 사용했었다. 그러니까 지금 사용 가능한 mysql 연결이 있는지를 task 에서 루프 돌면서 확인하는 방식으로 만...