일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 파이썬
- pwnable.kr
- 클라우드가 뭐야
- cmd1
- 액션바 필요없숴
- 코틀린
- UNIQUE constraint failed
- Docker
- python
- pwnable
- 6566
- 백준
- 페니빙
- 포너블
- 클라우드란?
- Make sure the Cursor is initialized correctly before accessing data for it.
- SQLiteConstraintException
- 10814
- Drive-By-Download
- kotlin
- 나이순 정렬
- Couldn't read row 0
- col -1 from CursorWindow
- java.lang.IllegalStateException
- 애너그램 그룹
- 블록체인
- pwable.kr
- cmd2
- tlqkf
- 쏘큩
- Today
- Total
목록전체 글 (112)
푸르미르
전자서명은 전자 데이터의 타당성을 증명하는 것이다. 전자 데이터를 보내는 사람이 서명을 생성하고 받는 사람은 그 서명을 검증해 타인에 의한 위조나 변조가 이루어졌는지를 확인할 수 있다. 전자 서명의 원리에 대해서는 다른 블로그에 많고 친절한 정보가 담겨있으니 나는 스킵하고 블록체인에서 전자 서명을 어떻게 사용하는지 설명하겠다. 블록체인에서는 각 트랜잭션에 한 개씩 전자 서명과 공개키가 세트로 부여된다. 그렇기 때문에 비트코인 네트워크의 참가자는 과거 블록체인상에서 수해된 모든 트랜잭션을 순차 검증을 할 수 있다. 트랜잭션을 발행하려면 공개키와 비밀키의 쌍이 필요한데, 비트코인 등 많은 블록체인 기반 기술에서는 키 쌍의 생성에 타원 곡선 암호라는 알고리즘을 사용한다. 이 타원 곡선 암호를 사용함으로써 짧은..
합의 알고리즘이란 정보 도달에 시간차가 있는 네트워크에서 참가자가 하나의 결과에 대한 합의를 얻기 위한 알고리즘이다. P2P네트워크에서의 정보의 지연과 미도달 사태, 중복적인 처리나 잘못된 오작동의 문제를 해결하기 위해 사용한다다. PoW(Proof of Work. 계산량에 따른 증명)외의 합의 알고리즘을 사용하는 사례도 늘어나고 있다. PoW는 확률적으로 해답이 어려운 문제를 가장 빨리 해결한 사람에게 블록을 만들 수 있도록 허가하고 그 보상으로 코인을 주는 것으로, 중앙의 관리자가 없어도 사람들이 보상을 위해 일하기 때문에 시스템이 자율적으로 운영된다. PoW는 다수결로 결정을 내리는 알고리즘이다. 그래서 51%의 문제가 발생할 수 있는 우려가 많다. 특정 채굴자가 전체네트워크의 과반수 이상을 점유하..
2장 취약점 확인 및 개선 웹 애플리케이션을 내부개발과 외부개발(상용 및 오픈 소스 애플리케이션 모두 포함)이라는 두가지 주요 개발 카테고리로 분류할 수 있다. 이 개발 카테고리는 취약점을 개선하기 위해 필요한 시간에 직접적으로 영향을 미친다. 가상 패칭 최근 웹 애플리케이션 방화벽에 일반적으로 사용되고 있다. 외부 패칭, JIT패칭 등 다양한 이름이 존재한다. 가상패칭은 알려쥔 취약점을 악용하는 것을 방지하기 위한 보안 정책 집행 계층이다. 악의적인 트래픽이 웹 애플리케이션에 전송되지 않도록 보안 집행 계층 트랜잭션을 분석해 전송중인 공격을 가로채는 방식으로 동작한다. 그 결과 웹 애플리케이션의 소스코드는 수정되지 않았지만 악성적인 시도는 실패하게 된다. 가상 패칭의 목표는 취약점의 노출된 공격 표면을..
1장 애플리케이션 요새화 프로덕션 환경의 네트워크 전쟁터에서 웹애플리케이션을 준비하는 절차에 대한 내용이다. 2가지 절차만 소개하겠다. 실시간 애플리케이션 프로파일링 ModSecurity를 사용하여 루아API를 이용해 HTTP트랜잭션을 분석하는 방법 입력값 검증 화이트리스트 또는 보안 모델을 동적으로 생성하는 방법 이 보안 모델을 생성 후 외부의 보안 계층을 통해 애플리케이션의 중요한 요소에 대한 규칙을 적용하고 정첵을 위반하는 비정상적인 요청을 식별할 수 있게 한다. 영구 저장소를 생성하여 ModSecurity의 트랜잭션 후킹을 수행한다. 예시 클라이언트가 블로그에 댓글을 달 수 있는 워드프레스 애플리케이션 사용자가 댓글을 쓰고 Submit Comment 버튼을 클릭하면 웹 어플리케이션이 받은 http..
삽입정렬은 특별한 경우, 즉 정렬되어있는 리스트가 입력값으로 전달되는 경우 O(n)이고, 일반적으로는 선택정렬과 같이 O(n^2)이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def ins_sort(a): #오름차순 n=len(a) for i in range(1, n): #idx:1~n-1(끝) key=a[i] j=i-1 while j>=0 and a[j]>key: a[j+1]=a[j] j-=1 print(a, key) a[j+1]=key d=[2, 4, 5, 1, 3] ins_sort(d) print(d) Colored by Color Scripter cs 이해를 돕기위해 9번째줄에 print(a, key)로 출력을 했다. 그 결과값은 아래와 같다. key가 1일때와..
선택정렬의 계산복잡도는 O(n^2)으로 입력크기가 커질수록 정렬하는데 시간이 매우 오래걸린다. 1 2 3 4 5 6 7 8 9 10 11 12 def sel_sort(a): n=len(a) for i in range(0,n-1): #0~n-2 min_idx=i for j in range(i+1, n): if a[j]a[min_idx]:
비트코인 구현 방법 전자화폐의 교환이란 결국 이전 소유자에게서 다른 소유자로 명의를 변경하는 거래 온라인상에서 이러한 거래를 실현하기 위해서는 이전 소유자의 본인 보증과 부인 방지를 구현해야하기 때문에 전자 서명이라는 방법을 사용한다. 하지만 전자화폐는 과거에 이중으로 사용된 것이 아닌지 증명하는 것이 어렵다. 비트코인의 모든 트랜잭션 이력을 블록체인이라는 대장에 기록하고 네트워크에서 공유한다. 과거의 모든 이력을 검증할 수 있게 해서 이중 사용 문제를 해결하였다. 변조 위험을 막기 위해 거래를 블록이라는 단위로 결합해 앞의 블록 정보를 포함해 해시로 만들어 블가역 데이터를 만든다. 블록은 앞의 블록 정보를 포함하기 때문에 결과적으로 사슬 모양의 데이터를 만들게 된다. 이것이 블록체인이다. (어떤 한 거..
파이어베이스에 해당 프로젝트 생성 후 여러 dependencies를 추가해 준다. 파이어베이스 document에서 찾아보고 따라해 보는 것을 추천한다. firebase.google.com/docs/auth/android/start Android에서 Firebase 인증 시작하기 Firebase에 앱 연결 아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다. 앱에 Firebase 인증 추가 Firebase Android BoM을 사용하여 모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle)에서 Firebas firebase.google.com 그럼 회원가입의 핵심 함수를 소개하겠다. 이때의 인증 방법은 이메일과 비밀번호를 통해 이루어진다. 사용자가 이메일과 ..
재귀함수를 사용하는 문제이다. 이 문제는 컴퓨터 과학 분야에서 매우 중요한 문제이니 꼭 숙지해야한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def hanoi(n, from_pos=1, to_pos=3, aux_pos=2): if n == 1: print(from_pos, to_pos) return hanoi(n-1, from_pos, aux_pos, to_pos) print(from_pos, to_pos) hanoi(n-1, aux_pos, to_pos, from_pos) n=int(input()) if n > 20: print(2**n-1) else: print(2**n-1) hanoi(n) Colored by Color Scripter cs 재귀함수라는 것이 처음에는 이해가..
나는 어둠의 자식이니까 테마를 android:theme="@style/Theme.Design.NoActionBar"로 바꾸겠다. 여기서 왼쪽의 메뉴 imageView를 클릭하면 왼쪽에서부터 네비게이션 메뉴바가 슉 나오고 3개중 하나를 선택하면, 토스트 메세지가 나오도록 간단히 제작하였다. 또 네비게이션 바에서 하나의 item이 선택되었을 때 네비게이션 바가 자동으로 닫히고, 네비게이션 바가 열려있는 상태에서 백버튼을 누르면 앱이 finish 되는것이 아닌 네비게이션 바가 닫히는 기능을 부여해보겠다. navigation바를 사용하기 위해서는 첫째로, 라이브러리를 추가해야한다. 저 퍼런 부분을 클릭해서 build.grandle(modul.~app)으로 간다. dependencies 가 아래부분에 위치해 있는..