분류 전체보기 1203

XSS

XSS(Cross Site Scripting)이란? XSS이란 게시판같은 곳에 위와 같은 형태로 팝업 창을 띄워버리는 것입니다. 쿠키탈취 자, 그렇다면 다른 사람의 쿠키를 탈취하려면 어떻게 해야할까요? cookie.php 라는 파일을 만들어서 위와 같은 코드를 쓰고 난 뒤 , 스크립트로 실행시켜줍니다. 이렇게 하면 됩니다. 매우 쉽죠? 참조 https://duni0107-day.tistory.com/69 XSS공격 피해자 쿠키값 탈취 https://duni0107-day.tistory.com/58?category=703364 XSS공격으로 쿠키값 탈취 XSS란? -> 게시판에 스크립트 코드를 삽입해 개발자가 고려하지 않은 기능이 작동되게 하는 공격 쿠키란? -> 방문자의 정보를 방문.. duni0107-..

루팅 방법

루팅 방법에 대해서 알아보겠습니다. 루팅을 할 수 있는 앱들은 여러가지가 있는데, 이 앱들이 어떤 방식으로 동작하여 루팅을 하는 것인지 알아봅니다. 일단 순서는 아래와 같습니다. - 부트로더 언락 부드로더(boot loader - OS가 시동되지 전에 관련 작업을 세팅하는 과정)언락 - 기기 내부 메모리에 기록이 가능하로록 세팅 - 커스텀 리커버리 설치 안드로이드 폰에 리커버리(복구) 프로그램이 내장되어 있는 것을, 다른 것으로 교체합니다. 이렇게 해서 메모리나 캐시을 조작할 수 있습니다. - 루팅 이제 관리자(root)권한을 얻으면 됩니다. 커스텀 리커버리를 이용하여, 관리자 권한을 얻으면 됩니다. --- 참고 https://m.post.naver.com/viewer/postView.nhn?volume..

2 - Main Layout

메인 페이지 디자인을 조금 해보겠습니다. 이거와 유사하게 조금 변경해보면 아래와 같이 되는데, 너무 디테일하게 들어가지는 않겠습니다. 일단 맨 위의 바의 색상을 흰색으로 하고 그 다음 bottom.xml 파일로 와서 조금 수정해줍니다. 자, 그 다음 activity_main.xml로 와서 나머지 레이아웃을 좀 더 예쁘게 정리해봅니다. 여기까지 하면 메인페이지 레이아웃은 대충 나왔습니다. 코드가 현재 많이 더러운데 곧 다 정리해주겠습니다.

1 - 코딩의민족 <하>

안녕하세요 코딩의 민족 편입니다. 편에서와 만들던거와 같이 계속 앱을 만들어보겠습니다. 편에서 개발하던 코드를 그대로 개발하니, 편을 수강하지 않으셨다면 편 부터 수강하시기를 바랍니다 :) 이번에 추가된 기능은 1. 찜 기능 2. 구글 로그인 3. 프로필 사진 변경 이렇게 3개 기능을 더 만들어 볼 겁니다. 생각나는대로 쭉쭉 만들어서, 코드가 조금 지저분하고, 하드코딩으로 처리한 부분도 있습니다. 같이 해 보시면서 파이어베이스로 안드로이드 앱의 다양한 기능을 구현해보는 용도로 들어주시면 될 것 같습니다. 사용한 이미지는 아래의 링크에서 다운받으실 수 있습니다. 관심가져주셔서 감사합니다:) --이미지들 https://drive.google.com/open?id=1FF1xU8LNXr2nkOIpqUf9HlLX..

rooting을 하면 할 수 있는 것

루팅은 핸드폰의 관리자권한을 획득하는 것인데, 이 것을 당연히 핸드폰 통신사와 앱 제작사에서 권장하지 않습니다. 보안상 제약을 걸어 놓은 것을 마음대로 변경할 수 있기 때문입니다. 그렇다면 하지 말라는 짓을 왜 할까요? 루팅을 해서 얻는 이점이 무엇일까요? 여러가지 안드로이드 폰의 제약을 풀 수 있습니다. CPU오버클럭(성능튜닝), MAC-Address 조작(고유 주소 조작), 디지털 권한 관리(저작권 보호 기술이 적용된 것을 파괴) 같은 것들을 할 수 있는데 보안에 민감한 금융 앱 등에서 루팅이 되면 앱을 사용할 수 없도록 만듭니다. (만약 사용하게 놔뒀다가는, 루트 권한을 얻어서 사용자의 정보를 조작하거나 탈취하는 일이 일어날 수 있기 때문입니다.)

5 - BST(Binary Search Tree) remove

자, 그리고 이번엔는 remove를 만들어보겠습니다. remove는 여러가지 케이스를 고려해줘야 합니다. 1) 자식이 없을 때 2) 자식이 한개일 때 3) 자식이 두개일 때 의 3개의 케이스를 고려해줘야 합니다. 1) 케이스를 봐 볼까요? 여기 보이시는 맨 밑의 노드가 없어진다고 해도 딱히 특별한 변화가 있지 않습니다. 때문에, 그냥 지워주면 됩니다. 그러면 2)의 경우 자식 노드가 하나일 때를 생각해볼게요 30이 지워지면 20이 들어오면 끝납니다. 그런데 자식이 2개면 어떻게 될까요?? 3)의 케이스를 한번 보겠습니다. 이렇게 자식 노드가 2개인 50이 remove되면, 얘의 오른쪽에서 가장 왼쪽에 있는 노드를 찾아와서 맨 위로 넣어줍니다. 여기에서는 60이죠? 그러면 얘를 코드로 한번 표현해보겠습니다..

startActivity에서 기존 activity제거

intent를 어떤 activitiy로 넘겨줄 때 기존 activity들을 모두 지우고 싶을 때가 있습니다. 저 같은 경우는 회원가입을 완료하고 MainActivity로 넘겨줄 때, 기존에 있던 activity들을 지우고 싶을 때가 있었습니다. 저 같은 경우는 JoinActivity에서 MainActivity로 넘어갈 때 val intent = Intent(this, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK startActivity(intent) 이렇게 처리를 해주면 JoinActivity에서 MainActivity로 넘어갈 때 나머지 A,B,JoinActi..

4 - BST(Binary Search Tree) Insert, InOrder, minValue

이진 탐색 트리에 대해 알아보겠습니다. 굉장히 많이 들어본 것 중에 하나입니다. 얘는 root 보다 작은애는 왼쪽, 큰 애는 오른쪽으로 보내줍니다. [50,30,20,40,70,60,80] 만약에 이런 애가 있다고 하면 50을 root로 지정하고, root보다 작은 애는 왼쪽, 큰 애는 오른쪽으로 처리해줍니다. 자, 그렇다면 얘를 왜 쓰는가? 에 대한 의문입니다. 만약 80을 찾는다고 가정했을 때 초기 배열은 [50,30,20,40,70,60,80] 50 -> 80까지 전체를 훑어야 하는데, BST같은 경우는 50 -> 70 -> 80 이렇게 가면 끝입니다. 훨씬 더 간단합니다. 때문에, BST를 씁니다. 탐색에 걸리는 시간 복잡도는 logN ~ N 입니다. 아래와 같은 경우가 최악의 경우입니다. 얘를 ..