Simple Port Scanner 업그레이드 No.1

2012. 7. 10. 14:49Hacking/Network

반응형

Simple Port Scanner의 경우 실행시켜보면 알겠지만,

매우 느리다는 것을 알 수 있다.


그 이유는 기본 TCP 접속을 통해서 해당 포트번호가 열렸는지를 체크할 때 걸리는 Timeout 세팅 때문이다.

Windows의 경우 레지스트리에 세팅이 되어 있는데, 72초라고 하네.

http://serverfault.com/questions/193160/which-is-the-default-tcp-connect-timeout-in-windows


아무튼 이러한 Timeout * 루프 카운트를 하게 되면 엄청난 시간이 걸리게 되는 것은 인지상정!


결국 Timeout + 한번에 한번만 접속 시도하는 Loop 때문에 생기는 문제다.


그럼 이것을 병렬처리하면 당연히 속도가 빠르지 않겠는가?



병렬처리를 위해 우리는 try_tcp_port 함수를 수정해보도록 하자.




setsockopt 함수설명은 아래 링크로 대체하겠다.

http://synch3d.com/winsock/setsockopt.html


여기서 사용된 timeout은 timeval 구조체를 사용하였다.





자, 이제 여기까지 하고 실행해도 엄청 빠르게 실행되는 것을 볼 수 있다.

그러면 병렬로 처리해서 속도를 한번 더 내볼까?


병렬로 connect하기 위해 thread를 사용해 봅시다~


gcc SimplePortScanner.c -o SimplePortScanner -lpthread




반응형

'Hacking > Network' 카테고리의 다른 글

Port Scanning 탐지 기법  (0) 2012.07.10
Simple Port Scanner 업그레이드 시키기  (0) 2012.07.07
Port Scanning 기법 - SYN scanning  (0) 2012.07.07
Port Scanning 기법 - TCP scanning  (0) 2012.07.07
초간단한 Port Scanner 만들기  (0) 2012.07.07