최신 글
-
Android
[Android] jsoup를 이용하여 파싱 하기
안드로이드 앱에서 크롤링 혹은 데이터 파싱을 하기 위해서 jsoup를 많이 사용하게 된다. jsoup의 사용법을 간단하게 알아보자. 설치 https://jsoup.org/download Download and install jsoup Download and install jsoup jsoup is available as a downloadable .jar java library. The current release version is 1.13.1. What's new See the 1.13.1 release announcement for the latest changes, or the changelog for the full history. Previous releases of jso jsoup.or..
-
Android
[Android] 안드로이드 멀티 스레드, 메시지큐,Runnable 사용
지금까지 안드로이드로 작업해왔던 것들은 모두 단일 Therad로 이루어져 있었다. 하나의 애플리케이션은 메인 스레드가 생기게 되고 이 메인 스레드만을 사용하고 있었던 것. 이번에는 메인 스레드 말고 추가로 만들어서 사용할 것이다. Therad를 메인 스레드 하나만 사용하게 된다면 단일로 동작하게 되니 순차적인 관계에서 중간에 하나라도 연결고리에 문제가 생긴다면 대기 상태에 빠지는 경우가 있을 것이다. Therad를 사용하는 방법은 2가지 방법이 있다. 1.Therad 클래스를 상속받는 받아 run() 메서드를 오버라이딩 하는 방법 2. Runnable 인터페이스를 확장하고 run() 메서드를 구현하는 방법 먼저 여기서는 1번 방법을 사용하여 해볼 것이다. 스레드를 동작시킬 곳에서 스레드. ..
-
Android
[Android] service(서비스) , Log(로그) 사용하기
service란 service(서비스)는 Activity처럼 사용자와 상호 작용하는 컴포넌트가 아니고 Background에서 동작하는 컴포넌트이다. 즉 필요에 의해 백그라운드에서 작업 시 사용된다. 서비스에는 Call to startService() 와 Call to bindService() 가있는데 이번에는 Call to startService()를 해볼 것이다. Call to startService()의 생명주기로서는 onCreate() -> onStartCommand() -> 동작 -> onDestroy() 로 작업이 진행된다. onCreate() - 서비스가 생성될 때 가장 먼저 호출되는 콜백 메소드로 서비스 자신의 초기 설정을 한다. onStartCommand() - 서비스를 ..
-
Android
[Android] RatingBar 실습
안드로이드 앱에서 별점을 주는 형태의 앱을 만들기 위해 RatingBar을 해볼 것이다. RatingBar을 3개를 두고 Button 2개를 둔 후 증가 버튼을 누르면 별이 늘어나고 감소 버튼을 누르면 별이 감소할 것이다. 위와 같이 RatingBar을 두면 별의 개수가 화면에 끝까지 만들어지게 되니 각 RatingBar의 크기를 wrap_content로 두면 원하는 별 5개로 배치된다. 각 RatingBar을 특이하게 만들어볼 것인데 먼저 가운데 RatingBar의 스타일을 small로 두고 numStars = 별의 개수(10개) stepSize = 하나 증가할 때마다 몇 개씩 증가할 것인지(1개) 실행해보면 모양이 작아지고 개수가 10개로 증가한 것을 볼 수 있다. 또 아래의 RatingBar..
-
Android
[Android] 여러 Activity 사용하기
안드로이드 앱 은 하나의 화면에서 모두 처리하지 못하고 다른 화면에서 처리하거나 결과에 따라 다른 화면을 보여줄 필요가 있다. 간단한 예시로 계산기 프로그램에서 실제 계산을 해주는 것은 다른 Activity에서 처리하고 결괏값을 mainActivity로 돌려주면 MainActivity에서 결괏값을 받아 출력할 것이다. 간단히 텍스트에 숫자를 입력하고 버튼을 통해 더하기, 빼기, 나누기, 곱하기를 누르고 결과 버튼을 누르면 결괏값을 보여줄 것이다. public void onButtonClicked(String num1, String num2 , int flag){ Intent intent = new Intent(getApplicationContext() , CalActivity.class); inu..
-
Android
[Android] Toast 위치 변경
Toast는 정해진 하단위치에 뜨기만하는데 이 위치말고 다른위치로 출력하는것이 가능하다. setGravity에서 X,Y 값을 Toast에게 주는것으로 원하는 위치에 출력가능.
-
Android
[Android] 스낵바(Snack Bar) 사용하기
스낵바를 사용하기 위해 추가해줘야 하는 라이브러리가 있다. File - Project Structure.. 클릭 Dependencise - +클릭 com.android.support:desing 으로 검색을 하여 추가해주자. 이제 스낵바를 사용하는 것이 가능해진다. 인자는 Tosat 와 같다. 출력을 해보면 이쁜 스낵바가 나오는 모습을 볼 수 있다.
-
Android
[Android] TableLayout(테이블 레이아웃)
TableLayout 위젯을 자신이 속한 레이아웃의 상하좌우의 위치를 지정하여 배치하는 레이아웃으로 주로 위젯을 표(행, 열) 형태로 배치할 때 사용한다. 와 함께 사용되는데 의 개수가 행의 개수가 된다. 열의 개수는 안에 포함된 위젯의 수로 결정된다. 먼저 레이아웃에 테이블 레이아웃을 넣는 것으로 테이블 레이아웃을 사용할 수 있고 자동으로 TableRow가 4개가 같이 만들어진다. TableRow마다 버튼을 3개씩 배치시켜보자. 이때 보면 버튼의 끝부분이 비어져있는 모습이 보기 싫을 수 있다. 이때는 테이블 레이아웃의 stretchColumns를 *로 옵션을 두는 것으로 화면에 맞는 크기로 버튼이 배치된다. 버튼을 위와 같이 한 칸 단위로 버튼을 배치하기 때문에 버튼의 길이..
-
Android
[Android] ConstraintLayout 와 자동 import
ComstraintLayout 프로젝트를 생성하게 되면 기본적으로 만들어지는 ComstraintLayout에서 컴포넌트를 하다 보면 원하는 위치가 아닌 엉뚱한 위치로 배치되어 실행되는 경우가 있다. 위와 같이 보이는 건 정상적인데 실제 실행시켜보면 이상한 곳으로 배치되는 경우가 있다. 이 이유는 ComstraintLayout의 특징으로 인해 배치가 다른 모양으로 나오는 것인데 ComstraintLayout는 기준에서부터 x, y로 연결되는 구조이기 때문에 기준이 필요하다. 위와 같이 마우스로 기준을 지정시켜주고 이동하면 그 위치에서부터 배치하기 때문에 정상적으로 동작한다. 자동 import 여러 가지 컴포넌트, 기능들을 사용하다 보면 하나하나 import를 하는 것도 일이다. 이를 자동..
-
Android
[Android] 알람 띄우기, 전화 걸기, 인터넷 들어가기
버튼을 누르면 기본적으로 핸드폰에서 제공하는 전화 걸기 기능으로 연결하게 할 것이다. 이미 존재하는 기능을 불러와서 사용하는 방법으로는 연결하는 프로토콜을 사용하는 방법과 이벤트 핸들러를 이용하는 방법이 있다. 먼저 버튼을 하나 배치하였다. 이 버튼이 클릭 되었을 때 OnButtomClicked가 호출된다. .java 파일에서 코드를 작성할 것이다. 작성하는 이 모양은 정해진 형식이다. 먼저 간단하게 메시지를 띄워보자. 안의 인자 중에 흑색 부분은 작성하는 것이 아니라 this를 입력하면 자동으로 앞에 context가 자동으로 만들어진다. 실제 버튼을 눌러보면 하단에 메시지가 나오는 모습이다. 전화 걸기 기능을 연결해보자. Intent myIntent = new Intent(Inte..
-
Android
[Android] 안드로이드 시작하기
안드로이드를 설치한 후 세팅을 어느 정도 해줘야 한다. SDK를 설치하자. 실습에서 사용될 버전은 9.0 버전이다. 설치가 완료되면 위와 같이 기본적으로 어느 정도 모양을 잡아준 틀을 선택해서 만들 수 있지만 이중 비어있는 것으로 선택하였다 네모 박스 모양과 같게 설정해준다. 프로젝트 생성 시 Minimum API Level 설정은 최소한의 버전을 정하는 것이다 4로 기준하면 4 이상 버전에서만 돌아간다. 그렇다면 가장 낮게 하면 좋지 않을까? 이건 특정 API 가 낮은 버전에는 없는 부분이 있을 것이다 없으면 정상 행위를 못하니 이걸 막아둔다. 그리고 이러한 최신 기능을 사용하지 않는 경우도 위와 같이 제한을 두는데 이유는 동일한 기능이라도 지금과 예전이 처리 방법이다를 수도 있다. 이러한 이유..
-
네트워크
vlan , 포트보안 키워드 요약
포트보안 학습방법 ->동적 보안 : 자동학습, 어드레스테이블에만 저장 , 스위치가 재시작할 때 삭제 ->정적 보안 : 사용자가 등록 ,어드레스테이블에 저장 ,running-config 에도 저장되기 때문에 startup-config에 저장하는게 가능하다! ->스틱키 보안 : 기본은 동적 running에도 저장된다 즉 학습은 동적이지만 재시작할 때 삭제안되게 startup에 저장 이 가능하다는 것 포트보안 기본은 동적으로 설정되어있다. 포트보안 위반모드 아래로 갈수록 강력하다. range를 이용한 포트 설정 포트 보안을 하나씩 하기 힘들 때 한번에 하는방법 ->config)# interface range fastethernet0/1-5 ->config)# interface range fastethernet..
-
보안
SQLmap 을 이용한 SQL인젝션
위의 sqlmap 툴을 이용하여 sql인젝션을 시도해보자. sqlmap를 사용하기위해 처음세팅값을 해줘야한다. 세팅값에 맞는 정보를 알아야하는데 프록시 를 이용하여 얻어보자. 먼저 공격할 영역에 입력값을 입력한후에 프록시로 잡아보자. 프록시를 얻은 정보에서 필요한부분이 1번정보 와 2번 정보이다. 아래의 텍스트파일에서 위의명령어를 조합해서 완성된 명령문인데 먼저 sqlmap 는 시작하기위한 부분이고 -u 는 공격타겟부분이다. --cookie는 쿠키값을 그대로 사용하기위해 프록시에서 얻어온 정보를 그대로입력 --dbs 는 데이터베이스의 정보를 보여달라는 명령어이다. 위의 명령어를 통해 얻어온 데이터베이스 이름들. 이제 특정 데이터베이스의 테이블을 알아보자 -D..
-
네트워크
주요 프로토콜 해더 구조(이더넷 , IP)
이더넷(IEEE802.3) -2계층프로토콜(네트워크계층) -MAC주소 기반으로 통신하기위한 프로토콜 -프레임(PDU)를 사용해서 전송- 이더넷의 구조 앞에서 부터 하나씩알아보자 . 데이터는 통으로 모든데이터를 보내지않고 최적화된 속도를 낼수있는크기만큼 다 나누어서 상대방에게 보내부는데 그럼 상대방은 그 나누어진 데이터 조각을 모을필요가있다. 데이터는 끊임없이 게속해서 들어오는데 그 원하는 데이터의 시작을 어떻게 알수있을까? 그것이 바로 이더넷구조에서 첫번째로 나오는 Preamble 이다. 이것은 수신지에 프레임 시작을 알리는 정보로 0x55라는 메시지를 7번 보낸다. 이러면 수신측에서 0x55가 연속으로 7번 보이면 프레임의 시작이구나 라는걸 알수있을것이다. 하지만 이걸로는 부족하다 Ox5..
-
CTF
[써니나타스] BINARY 11번 문제 풀이
http://suninatas.com/ 써니나타스 웹해킹, 포렌식, 리버싱, 암호학, 해킹 워게임 제공. suninatas.com 써니나타스 11번 문제를 풀어보았다. 9번과 똑같은 아이콘의 프로그램과 실행된 상태 디버거를 이용해서 클리어 문자열을 찾아 이동하였다. 그 부분으로가서 보니 내가입력한 시리얼값 (AAAAAAAAAA...) 와 어떠한 문자열을 비교하는모습. 그 문자열을 입력해보니 시리얼값을 준다.
-
CTF
[써니나타스] BINARY 10번 문제 풀이
http://suninatas.com/ 써니나타스 10 번 문제 풀이 다운받은 문제와 실행했을때의 모습 에러 메세지. 어떤 컴파일인지 확인해보니 .NET라고한다. .net는 디컴파일이 되는데 하기전에 다른부분도 봐보자. IDA를 확인해서 보니 button이 두개가보인다 실행화면에 있던 ok 와 out 버튼이라고 예상된다. 그쪽으로 이동 음? 저게 힌트인가했는데 키 였음.
-
CTF
[HackCTF/Web] Time
Time 문제를 풀어보았다. 원하는 범위내의 시간을 입력하면 그 시간이 지난후에 시리얼값을 알려주는 문제이다. 원하는 최소 범위의 시간이다. 이 시간을 모두 기다릴수는없다. 먼저 시간값을 판단하는 if문을 빠져나가기위해 지수형태의 값을 입력하였다. 5184000 -> 5.184000E+6 5.184000E+6 을 계산해보면 5184000 이 나오는것으로 시간을 판단하는 if 문을 정상적으로 해결할수있다. 그후 입력한 시간만큼 기다리게하는 sleep 함수에서 보면 int형으로 캐스팅하기때문에 소숫점아래의 숫자는 모두 제거가된다. 그래서 5초만 기다리면 해결이될것이다.
-
CTF
reversing.kr / Easy Unpack 풀이
http://reversing.kr/challenge.php Reversing.Kr Login or Join Please Home Challenge Auth Rank Link Login Challenge Easy Crack Point: 100 Solved: 4836 Easy Keygen Point: 100 Solved: 3288 Easy Unpack Point: 100 Solved: 2647 Music Player Point: 150 Solved: 1081 Replace Point: 150 Solved: 1414 ImagePrc Point: 120 Solved: 1174 Position ... reversing.kr 3번 문제 를 풀어보았다. 문제를 다운받아보니 프로그램과 설명이들어있었다. 프로그램 ..
-
CTF
[reversing.kr] Easy Keygen 풀이
http://reversing.kr/index.php Reversing.Kr This site tests your ability to Cracking & Reverse Code Engineering. Now Challenge a problem for each environment. (Windows, Linux, .Net, Flash, Java, Python, Mobile..) Admin E-Mail: gogil @reversing.kr Notice 2014-12-12 New challenge 'CustomShell' was added. 2014-12-10 New challenge 'CRC2', 'Advent... reversing.kr Easy Keygen 풀이. 먼저 프로그램을 실행시켜보니 Name..
-
CTF
[HackCTF/Web] 마법봉
Web 문제중 마법봉 문제를 풀어보았다. ? 소스를 볼수있는 버튼이 있길래 일단 소스부터 분석 240610708 을 md5로 해시 한 결과값 과 내가 입력한 값을 sha1 으로 해시한 결과값이 같은지를 물어보고있다. 일단 24061708을 해시화 하면 무엇이나오는지 확인해보자. 0E0E462097431906509019562988736854 라는 값과 내가입력한 값을 sha1한 값이 같아야한다. 2019/05/22 - [Web hacking] - 매직해시 취약점 (Magic Hash) 위의 정리해놓은 매직해시 취약점을 이용하여 10932435112 을 입력하여 플었다.