Port 스캐너를 JAVA로 코딩해 보았습니다

 

Port 스캐너란

: 해당 IP의 열린 포트가 몇번이 있는지 다 찾아주는 기능을 합니다

( 아무곳이나 막 Port스캔을 사용하게되면 나의 공인 IP가 대상 사이트로 부터 차단될 수 있다 )

 

Main 코드

import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws Exception {
		
		Scanner input = new Scanner(System.in);
		
		int start = 1;						// 기본 포트 시작을 1로 세팅하는 변수
		int end = 0xffff;					// 기본 포트 종료를 FFFF로 세팅하는 변수
		
		String port_range = null;			// 스캔할 포트의 범위를 받는 변수
		String ip = null;					// 대상 IP를 받는 변수
		
		System.out.print("대상 ip 입력 : ");	
		ip = input.nextLine();				// 대상 IP를 입력 받아 변수에 넣는다
		
		System.out.print("포트 범위 입력 (ex:1-100): ");
		port_range = input.nextLine();		// 스캔할 포트의 범위를 입력 받아 변수에 넣는다
		
		// 예외처리
		try {
			// 활성화된 ip인지 확인하기위해 80번 포트로 확인해본다
			new Socket(ip, 80);
			
			// 입력 받은 포트의 범위를 "-" 기준으로 잘라서 배열에 넣는다
			String[] ports = port_range.split("-");
			
			// 입력 받은 포트의 범위가 없을 경우 if문에 들어오지 않는다
			if(!(ports[0].equals("")))
			{	
				// 입력 받은 포트 범위에 0번지를 start 변수에 덮어쓴다
				start = Integer.parseInt(ports[0]);
				// 입력 받은 포트 범위에 1번지를 end 변수에 덮어쓴다
				end = Integer.parseInt(ports[1]);
			}
			
		// IP를 잘못 입력했을 경우의 예외 처리	
		} catch (UnknownHostException e) {
			System.out.println("잘못된 ip 입력");
			return;
		// 모든 경우의 예외 처리
		} catch (Exception e) {
			System.out.println("잘못된 입력");
			return;
		}
		
		// 직접 만든 PortScan 클래스 객체 생성
		PortScan p = null;
		
		// 포트의 범위를 지정한 만큼 포트를 스캔해준다
		for (; start <= end; start++) {
			p = new PortScan(ip, start, 1);
			p.start();
		}
		// 과부하를 방지하기 위한 sleep
		Thread.sleep(10000);
	}
}

 

PortScan 클래스 코드

import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

// 빠른 동작위해 쓰레드 사용
public class PortScan extends Thread {
	
	String ip = null;		// 대상 IP를 담아주는 변수	
	int port = 0;			// 포트 번호 하나를 담아주는 변수
	int timeout = 1000;		// 대기시간에 timeout을 걸어주는 변수
	
	// 생성자를 통해 메인으로 부터 값을 받아 세팅
	public PortScan(String ip, int port, int timeout){
		this.ip = ip;	
		this.port = port;
		this.timeout = timeout * this.timeout;
	}
	
	@Override
	public void run() {
		
		// Sooket 참조 변수
		Socket c = null;
		// SooketAddress를 통해 IP와 Port번호를 받아서 addr 변수에 저장한다
		SocketAddress addr = new InetSocketAddress(this.ip, this.port);
		
		// 예외처리
		try {
			
			//Sooket 객체 생성
			c = new Socket();
			// connect를 통해 addr에 저장된 IP와 PORT로 연결을  시도하고 timeout시간동안 대기한다
			c.connect(addr, this.timeout);
			// 위에서 연결에 성공하면 성공한 포트를 출력한다 실패하면 예외처리로 코드가 끝난다
			System.out.println("open: "+this.port);
			// Sooket를 닫아준다
			c.close();
		} catch (Exception e) {
			
		}	
	}
}

 

동작 캡쳐

 

- 대상 IP 입력란에 IP나 도메인 주소를 넣고 스캔할 포트 범위를 입력해준다

- 입력된 IP와 포트 범위를 대상으로 포트 스캔을 시작한다

'JAVA' 카테고리의 다른 글

IP 스캐너 코딩 (JAVA)  (0) 2020.11.13
생성자 (JAVA)  (0) 2020.11.13
프로세스 관리 코딩 ( JAVA )  (1) 2020.11.12
간단한 구구단 코딩 (JAVA)  (0) 2020.11.05

HTML을 사용하여 간단하게 메인페이지와 메뉴들을 만든 뒤

메뉴들을 누르면 다른 페이지로 이동하고 이동되는 페이지 마다 다른 기능들이 있게 화면을 만들어 보겠습니다

 

HTML 코딩을하기전 사용할 이미지들을 아무거나 구해옵니다

- 아무 이미지들이랑 로고로 사용할 이미지들을 가져옵니다

 

메인 페이지 코드

<!DOCTYPE html>
<html>

<head>
    <title>메인</title>
</head>

<body>
    <a href="index.html"><img src="./logo/google_logo.jpg" alt="이미지 없음" width="150" height="100"></a>
    <a href="menu1.html">메뉴1</a>
    <a href="menu2.html">메뉴2</a>
    <a href="menu3.html">메뉴3</a>
    <a href="menu4.html">메뉴4</a>
    <a href="join.html"><button style="float: right;">회원가입</button></a>
    <form action="login.html" method="GET" style="float: right;">
    ID : <input type="text" placeholder="아이디" size="20" name="userid" value="">
    PW : <input type="password" placeholder="비밀번호" size="20" name="userpw" value="">
    <input type="submit" value="로그인">
    </form>
    <br><hr>
    <img src="./img/img1.jpg" alt="메인 이미지 없음" width="1020" height="600">
    <hr>
    <img src="./img/1.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/2.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/3.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/4.jpg" alt="이미지 없음" width="250" height="200"><br>
    <hr>
    <img src="./img/5.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/6.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/7.jpg" alt="이미지 없음" width="250" height="200">
    <img src="./img/8.jpg" alt="이미지 없음" width="250" height="200">
    <hr>
    <ul>
        <li>회사소개</li>
        <li>오시는길</li>
        <li>연락처</li>
        <li>메일주소</li>
    </ul>
</body>

</html>

 

메인 페이지 웹 캡쳐

 

 

메뉴1 페이지 코드

<!DOCTYPE html>
<html>

<head>
    <title>메뉴1</title>
</head>

<body>
    <a href="index.html"><img src="./logo/google_logo.jpg" alt="이미지 없음" width="150" height="100"></a>
    <a href="menu1.html">메뉴1</a>
    <a href="menu2.html">메뉴2</a>
    <a href="menu3.html">메뉴3</a>
    <a href="menu4.html">메뉴4</a>
    <form action="login.html" method="GET" style="float: right;">
    ID : <input type="text" placeholder="아이디" size="20" name="userid" value="">
    PW : <input type="password" placeholder="비밀번호" size="20" name="userpw" value="">
    <input type="submit" value="로그인">
    </form><br><hr>
    <img src="./img/img1.jpg" alt="메인 이미지 없음" width="1020" height="600">
    <hr>
    <table border="1">
        <caption>게시판</caption>
        <tr>
            <th>no</th>
            <th>글제목</th>
            <th>글쓴이</th>
            <th>작성시간</th>
        </tr>
        <tr>
            <td>1</td>
            <td>첫번째글</td>
            <td>가</td>
            <td>2020-10-21</td>
        </tr>
        <tr>
            <td>2</td>
            <td>두번째글</td>
            <td>나</td>
            <td>2020-10-22</td>
        </tr>
        <tr>
            <td>3</td>
            <td>세번째글</td>
            <td>다</td>
            <td>2020-10-23</td>
        </tr>
        <tr>
            <td>4</td>
            <td>네번째글</td>
            <td>라</td>
            <td>2020-10-24</td>
        </tr>
    </table>
    <hr>
    <ul>
        <li>회사소개</li>
        <li>오시는길</li>
        <li>연락처</li>
        <li>메일주소</li>
    </ul>
</body>

</html>

 

메뉴1 페이지 웹 캡쳐

 

 

메뉴2 페이지 코드

<!DOCTYPE html>
<html>

<head>
    <title>메뉴2</title>
</head>

<body>
    <a href="index.html"><img src="./logo/google_logo.jpg" alt="이미지 없음" width="150" height="100"></a>
    <a href="menu1.html">메뉴1</a>
    <a href="menu2.html">메뉴2</a>
    <a href="menu3.html">메뉴3</a>
    <a href="menu4.html">메뉴4</a>
    <form action="login.html" method="GET" style="float: right;">
    ID : <input type="text" placeholder="아이디" size="20" name="userid" value="">
    PW : <input type="password" placeholder="비밀번호" size="20" name="userpw" value="">
    <input type="submit" value="로그인">
    </form><br><hr>
    <img src="./img/img1.jpg" alt="메인 이미지 없음" width="1020" height="600">
    <hr>
    <table>
        <caption>체크박스 있는 사진 게시판</caption>
        <tr>
            <th>사진1</th>
            <th>사진2</th>
            <th>사진3</th>
            <th>사진4</th>
        </tr>
        <tr>
            <td><img src="./img/1.jpg" alt="이미지없음" width="250" height="200"><br><input type="checkbox" value="1"></td>
            <td><img src="./img/2.jpg" alt="이미지없음" width="250" height="200"><br><input type="checkbox" value="2"></td>
            <td><img src="./img/3.jpg" alt="이미지없음" width="250" height="200"><br><input type="checkbox" value="3"></td>
            <td><img src="./img/4.jpg" alt="이미지없음" width="250" height="200"><br><input type="checkbox" value="4" checked></td>
        </tr>
    </table>
    <hr>
    <ul>
        <li>회사소개</li>
        <li>오시는길</li>
        <li>연락처</li>
        <li>메일주소</li>
    </ul>
</body>

</html>

 

메뉴2 페이지 웹 캡쳐

 

메뉴3 페이지 코드

<!DOCTYPE html>
<html>

<head>
    <title>메뉴3</title>
</head>

<body>
    <a href="index.html"><img src="./logo/google_logo.jpg" alt="이미지 없음" width="150" height="100"></a>
    <a href="menu1.html">메뉴1</a>
    <a href="menu2.html">메뉴2</a>
    <a href="menu3.html">메뉴3</a>
    <a href="menu4.html">메뉴4</a>
    <form action="login.html" method="GET" style="float: right;">
    ID : <input type="text" placeholder="아이디" size="20" name="userid" value="">
    PW : <input type="password" placeholder="비밀번호" size="20" name="userpw" value="">
    <input type="submit" value="로그인">
    </form><br><hr>
    <img src="./img/img1.jpg" alt="메인 이미지 없음" width="1020" height="600">
    <hr>
    <table>
        <caption>라디오박스 있는 사진 게시판</caption>
        <tr>
            <th>사진1</th>
            <th>사진2</th>
            <th>사진3</th>
            <th>사진4</th>
        </tr>
        <tr>
            <td><img src="./img/1.jpg" alt="이미지없음" width="250" height="200"><br><input type="radio" name="web" value="1"></td>
            <td><img src="./img/2.jpg" alt="이미지없음" width="250" height="200"><br><input type="radio" name="web" value="2"></td>
            <td><img src="./img/3.jpg" alt="이미지없음" width="250" height="200"><br><input type="radio" name="web" value="3"></td>
            <td><img src="./img/4.jpg" alt="이미지없음" width="250" height="200"><br><input type="radio" name="web" value="4"></td>
        </tr>
    </table>
    <hr>
    <ul>
        <li>회사소개</li>
        <li>오시는길</li>
        <li>연락처</li>
        <li>메일주소</li>
    </ul>
</body>

</html>

 

 

메뉴3 페이지 웹 캡쳐

 

 

메뉴4 페이지 코드

<!DOCTYPE html>
<html>

<head>
    <title>메뉴4</title>
</head>

<body>
    <a href="index.html"><img src="./logo/google_logo.jpg" alt="이미지 없음" width="150" height="100"></a>
    <a href="menu1.html">메뉴1</a>
    <a href="menu2.html">메뉴2</a>
    <a href="menu3.html">메뉴3</a>
    <a href="menu4.html">메뉴4</a>
    <form action="login.html" method="GET" style="float: right;">
    ID : <input type="text" placeholder="아이디" size="20" name="userid" value="">
    PW : <input type="password" placeholder="비밀번호" size="20" name="userpw" value="">
    <input type="submit" value="로그인">
    </form><br><hr>
    <img src="./img/img1.jpg" alt="메인 이미지 없음" width="1020" height="600">
    <hr>
    <form action="write.html" method="POST" enctype="multipart/form-data">
    <table border="1">
        <caption>게시판 글쓰기</caption>
        <tr>
            <th>제목</th>
            <td><input type="text" name="title" placeholder="글 제목" size="130"></td>
        </tr>
        <tr>
            <th>내용</th>
            <td><textarea name="content" placeholder="글 내용" cols="130" rows="20"></textarea></td>
        </tr>
        <tr>
            <th>파일</th>
            <td>
                <input type="file" name="userfile">
                <input type="submit" value="전송">
            </td>
        </tr>
    </table>
    </form>
    <hr>
    <ul>
        <li>회사소개</li>
        <li>오시는길</li>
        <li>연락처</li>
        <li>메일주소</li>
    </ul>
</body>

</html>

 

 

메뉴4 페이지 웹 캡쳐

'HTML' 카테고리의 다른 글

HTML 태그 테스트  (0) 2020.11.13
HTML 태그의 종류  (0) 2020.11.13

여러가지 태그 사용해보기

 

HTML 코드

<!DOCTYPE html>

<html>
<head>
    <title>페이지 제목</title>
</head>

<body>
    <div style="background-color: red; padding: 40px;">
        <span style="background-color: white;"> <i>기울어진</i></span>
        <span style="background-color: white;"> <small>작은</small></span>
        <span style="background-color: white;"> <del>지우기</del></span><br>
    </div>
    <div style="background-color: blue; padding: 40px;">
        <span style="background-color: white;"> <ins>새로 추가된</ins></span>
        <span style="background-color: white;"> <mark>마킹</mark></span>
        <span style="background-color: white;"> <sub>아래</sub>첨자</span>
        <span style="background-color: white;"> <sup>윗</sup>첨자</span><br>
    </div>
    <div style="background-color: green; padding: 40px;">
        <img src="\img\bts.jpg" alt="a"white="100" height="100">&nbsp;
        <img src="C:\html\img\a.jpg" alt="잘못된 이미지">        
    </div>
</body>
</html>

 

결과 캡쳐

'HTML' 카테고리의 다른 글

테스트 ( HTML )  (0) 2020.11.13
HTML 태그의 종류  (0) 2020.11.13

HTML 태그의 종류

태그

설명

<html></html>

웹 페이지의 시작과 끝을 나타낸다

<head></head>

웹 페이지의 정보, 문서에서 사용할 외부 파일들을 링크할 때 사용한다

<body></body>

브라우저에 실제 표시되는 내용

<title></title>

문서 제목

<meta>

문자 인코딩 및 문서 키워드, 요약 정보

<div></div>

컨텐츠들을 어떤 목적에 따라 묶어야 할 때 사용한다

<span></span>

컨텐츠들을 어떤 목적에 따라 묶어야 할 때 사용한다

<a></a>

웹 페이지나 외부 사이트 연결에 사용된다

<script>

코드 삽입에 사용된다

<link>

외부 파일을 연결할 때 사용한다

<img>

이미지 삽입에 사용한다

<p>

단락을 생성할 때 사용한다

<li></li>

리스트내에서 항목을 나열할 때 사용한다

<ul></ul>

순서가 없는 리스트를 만들 때 사용한다

<ol></ol>

순서가 있는 리스트를 만들 때 사용한다

<style>

스타일 정보를 정의할 때 사용하는 태그

<br>

줄 바꿈

<hn></hn>

제목에 사용한다 ex) <h1>제목<h1>

<input>

사용자가 정보를 입력하는 부분을 만들어야 할 때 사용한다

<form></form>

form을 생성한다

<iframe>

외부 페이지 삽입

<nav>

문서 연결 링크

<strong>

중요한 내용 강조에 사용

<footer>

제작 정보와 저작권 정보

<header>

제목 지정에 사용

<button>

버튼을 만들 때 사용한다

 

'HTML' 카테고리의 다른 글

테스트 ( HTML )  (0) 2020.11.13
HTML 태그 테스트  (0) 2020.11.13

IP 스캔을 할 수 있는 코딩을 JAVA로 제작해 보았습니다

 

IP스캐너

: 나의 사설망이나 공인 IP 대역을 입력하여 주변 컴퓨터들이 사용하는 IP를 확인할 수 있다

 

IP스캐너를 코딩하기전  필요한 파일

1. icmp4j-all.jar

2. jna-3.2.5.jar

3. jna-platform-win32.jar

 

- 위 3개의 파일 다운 받아서 lib에 넣어줘야 합니다

 

Main 코드

import org.icmp4j.IcmpPingRequest;
import org.icmp4j.IcmpPingResponse;
import org.icmp4j.IcmpPingUtil;

public class Main {

	public static void main(String[] args) {
		
		// ICPM 패킷 생성 후 request 변수에 담기
	    IcmpPingRequest request = IcmpPingUtil.createIcmpPingRequest ();
	 
	    // IP대역인 1~255까지 검사하는 반복문
	    for (int count = 1; count < 255; count ++) {
	    	
	    	// request를 IP로 만들어 준다
	    	request.setHost ("192.168.1." + count);
	    	// iCMP 패킷을 request에 담긴 IP로 보낸다
	    	IcmpPingResponse response = IcmpPingUtil.executePingRequest (request);
	    	// ICMP 패킷을 받는다
	    	String formattedResponse = IcmpPingUtil.formatResponse (response);
	    	
	    	// 받은 내용을 소문자로 바꾼다
	    	formattedResponse = formattedResponse.toLowerCase();
	    	
	    	// 받은 내용에 reply가 포함되어 있지 않으면 indexof로 -1을 돌려주기 때문에 if문에 들어가지 않는다
	    	if(formattedResponse.indexOf("reply") != -1)
	    	{
	    		// 조건에 충족되는 IP를 출력하여 알려준다
	    		System.out.println ("192.168.1." + count);
	    	}
	    	
	    	// 너무 빨리 동작하는걸 방지하기 위해 sleep을 걸어준다
	    	try {
	    		Thread.sleep (1000);
	    	} catch (Exception e) {
	    		e.printStackTrace();
	    	}
	    }
	}
}

 

 

동작 결과

- 기본 게이트웨이로 설정된 1번과 제가 사용하는 4번만 스캐너에 의해 확인이됬습니다

'JAVA' 카테고리의 다른 글

Port 스캐너 (JAVA)  (0) 2020.11.13
생성자 (JAVA)  (0) 2020.11.13
프로세스 관리 코딩 ( JAVA )  (1) 2020.11.12
간단한 구구단 코딩 (JAVA)  (0) 2020.11.05

+ Recent posts