일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CTF
- Python Challenge
- PHP
- 파이썬
- PICO CTF
- flag
- C언어
- 오차역전파법
- 설치
- 역전파
- 책
- 순전파
- 신경망
- 딥러닝
- Apache2
- PostgreSQL
- 신경망 학습
- 백준
- Python
- sgd
- 기울기
- AdaGrad
- picoCTF
- 리뷰
- FastAPI
- HTML
- 아파치
- 코딩
- 우분투
- 소프트맥스 함수
- Today
- Total
목록공부 (139)
Story of CowHacker
시그모이드 함수 그림 1은 시그모이드 함수를 수식으로 나타낸 것이다. exp(-x)에서 e는 자연상 수로 2.7182... 의 값을 갖는 실수다. 시그모이드 함수 구현하기 시그모이드 함수 식 구현하기 import numpy as num def sigmoid(x): return 1 / ( 1 + num.exp ( -x ) ) 시그모이드 함수 그래프로 구현하기 import numpy as num import matplotlib.pyplot as plt def sigmoid(x): return 1 / ( 1 + num.exp ( -x ) ) x = num.arange ( -5.0, 5.0, 0.1 ) y = sigmoid ( x) plt.plot ( x, y ) plt.ylim ( -0.1, 1.1 ) plt..
신경망 : 앞에서 본 퍼셉트론의 발전 형태다. 신경망의 원리 신경망은 입력층, 은닉층, 출력층 총 3가지 층으로 이뤄져있다. 신경망과 퍼셉트론의 차이점? 퍼셉트론에서는 가중치의 값을 사람이 수동으로 설정 해야한다는점이다. 신경망에서는 이 가중치 값을 데이터로 부터 자동으로 학습해 설정한다. 다음은 신경망과 퍼셉트론에서 사용하는 함수에 대해 알아보겠다. 활성화 함수 활성화 함수 : 입력 신호의 총합을 출력 신호로 변환하는 함수다. 활성화 함수 식 a = b + w1x1 + w2x2 y = h ( a) 활성화 함수 처리 과정 그림2 편향이 1로 고정된걸 알수있다. 그 이유는 편향의 입력 신호는 항상 1이기 때문이다. 다음은 신경망에서 사용하는 활성화 함수중 두가지를 알아보겠다.
포너블 random 문제를 풀어볼것이다. 한 아이가 아빠한테 프로그래밍할때 랜덤값을 어떻게 사용하는지 묻는 문제였다. 문제 서버로 접속해서 파일 목록을 보니 c파일이 있었다. c파일을 열어서 보니 random이라는 변수값을 선언하고 scanf로 받는 구조로 시작했다. 그리고 scanf한 key값과 random값을 ^ ( XOR ) 한 값이 0xdeadbeef랑 같으면 flag를 볼수있는 문제였다. 먼저 random값이 무엇인지알아야만 했다. 먼저 intel 문법으로 쉽게 보기 위해 설정을 했다. call한 부분에서 random변수를 선언한걸 알수있다. 저 부분에 break를 걸고 실행해봤다. eax에 random값이 들어간걸 볼수있었다. eax에 6b8b4567값이 들어간걸 드디어 확인할수 있었다. 이제..
퍼셉트론이란? 딥러닝의 기원이 되는 알고리즘이다. Frank Rosenblatt가 1957년에 고안한 알고리즘이다. 퍼셉트론의 원리 그림 1에서 x1, x2는 입력 신호고 y는 출력 신호, w1, w2는 가중치다. 네모 칸을 뉴런 또는 노드 라고 부른다. 입력 신호가 뉴런에 보내질 때 각각의 가중치가 곱해진다. 이때 가중치의 각각의 식은 w1*x1, w2*x2다. 이 입력 신호가 정해진 한계 ( θ theta )를 넘어설 때만 1을 출력한다. 그림 2는 그림 1을 수식으로 나타낸 것이다. 다음은 세가지 논리회로의 진리표를 보겠다. - AND 게이트 진리표 - x1 x2 y 0 0 0 1 0 0 0 1 0 1 1 1 - NAND 게이트 진리표 - x1 x2 y 0 0 1 1 0 1 0 1 1 1 1 0 -..
이번 글에서는 어셈블리의 기본 문법을 직접 실습해보는걸 쓸것이다. 먼저 이 실습을 하기 위해서는 32Bit의 운영체제가 준비 돼있어야한다. 일단 hello.asm라는 제목으로 vim파일을 하나 만든다. nasm 이라고 the Netwide AsSeMbler라는 뜻을 가진 명령어를 쓴다. nasm -f의 옵션은 출력파일형식 설정을 하는 것이다. 뒤에 elf32는 파일 형식을 32bit로 출력 파일을 설정한다는 것이고 -g는 앞에 -felf32의 옵션을 디버깅 정보로 설정 해준다는 옵션이다. 그다음 ;를 써 명령어를 이어서 gcc ( GNU Compiler Collection ) 를 써줫다. -m32옵션은 hello.o 파일을 32bit로 컴파일 한다는 것이고 -o옵션은 앞에 오브젝트된 파일인 .o파일을 실..
어셈블리의 기본지식에 대해 작성 할것이다. 1. Stack & Heap 1) Stack 이란 함수 호출시 생성되는 지역 변수와 매개 변수가 저장되는 영역이다. ( LIFO 구조 ) 2) Heap 이란 필요에 의해 동적으로 메모리를 할당할 때 사용하는 영역이다. ( 스택과는 반대 방향으로 데이터가 쌓인다. ) 2. 레지스터 1) 레지스터란 컴퓨터의 프로세서가 자료를 보관하는 아주 빠른 기억 장소이다. -> 프로세서 : 컴퓨터 내에서 프로그램을 수행하는 녀석이다. 2) 레지스터 종류 - 산술 레지스터 : 덧셈의 덧수, 곱셉의 곱수, 비교 또는 자리가 이동될 단어 등을 보유한 레지스터 ex) eax, ebx, ecx, edx ... - 범용 레지스터 : 특별한 용도 없이 임의로 사용 가능한 레지스터 ex) e..
포너블 5번 문제를 풀어 볼것이다. ssh 로 접속 주소가 있었다. ls 해본 결과 플래그 passcode, passxode.c 가 있었다. passcode.c 파일을 cat으로 보았다. 크게 두개의 함수와 그리고 main 함수가 있었다. 먼저 main 함수를 보면 프린트문을 출력하고 welcome함수로 넘어 갔다. 그리고 나서 login함수로 넘어가고 나서 두번째 프린트 문을 출력했다. welcome함수를 보았다. char name[100]을 보아 name 이라는 변수에 버퍼 100을 준것이였다. 그리고 scanf로 값을 받아 name에 넣고 프린트 문을 출력할려는 모습이였다. login함수를 보았다. int passcode1 int passcode2 두개의 passcode변수를 선언하고 passcod..
포너블 4번 문제를 풀어 볼것이다. flag라는 4번문제, 아빠가 선물을 줬다는 글이랑 리버싱이라는 글과 바이너리가 필요하다는 글이 있었다. 또 나는 다운로드 링크를 통해 받은 flag라는 파일을 cat 으로 열어봤다. 깨진 글이 였다. gdb로 열어봤다. disassemble main 으로 main 구문을 어셈블리어로 볼려고 했는데 로드가 되지 않았다. 권한을 줘 봤다. 실행 권한이 없어서 그런가 싶어서 이다. x, 실행권한을 준걸 확인하고, 음...똑같은 현상이였다. 이번에는 flag파일을 실행 시켜 봤다. malloc이라는 함수에 플레그가 있는 듯 한 말이 떳다. IDA프로그램으로 파일을 열어봤다. main 구문도 없고 별 건질 건 없었다. 그래서 이 파일은 도대체 뭘까 해서 봤다. 구글링 결과 컨..