일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- ioctl
- LOB
- NAPT
- 취약점
- rfc5508
- architecture
- packet filter
- vtable
- iptables
- mvwin
- epoll_wait
- REDIS
- .net core 7
- .nret core 배포
- 풀이
- doupdate
- wnourefresh
- ncurses
- C언어
- DOCKER-USER
- level trigger
- packet flow
- Compiler
- 어셈블리어
- Docker
- cbpf
- wrefresh
- edge trigger
- BOF
- epoll
- Today
- Total
목록C language (26)
Tuuna Computer Science
// [ROTATE shift] unsigned int _rotl(unsigned int value, int shift) { if ((shift &= 31) == 0) return value; return (value > (32 - shift));} /* 이때 32는 int형이 32일 때를 가정한 것이다. */ unsigned int _rotr(unsigned int value, int shift) { if ((shift &= 31) == 0) return value; return (value >> shift) | (value
1-day 리눅스 커널 취약점 찾기 스터디중에 container_of 매크로랑 offsetof매크로를 분석하라는 과제를 받음. 구글링하다가 위 둘 매크로는 디바이스 드라이버 제잘할 때 자주 사용하는 매크로임을 깨달음. 분석에 앞서 ㅈㄴ 괴기하다. [ offsetof 매크로 (부모 구조체를 기준으로 멤버의 오프셋 구함) ] #ifndef offsetof #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif offsetof 매크로의 경우 구조체 타입과 오프셋을 원한 구조체 멤버를 받음 ((size_t)&((TYPE *)0)->MEMBER) 코드를 보면 0이라는 값을 TYPE*형으로 치환한다음이 것이 MEMBER을 가리키고 이 주소값을 반..
수정) read_ptr은 선언된 버퍼의 크기라기 보단, fgets인자로 준 size값에 따르는 듯? lob풀다가 갑자기 Stdin에 관해서 한 번 분석해보고 싶어서 글을 쓰지만 별로 분석한건 없는 거 같다... 초짜라 뭘 봐야할지도 잘 모르겠고 ㅋㅋㅋ stdio.c 이고 #include "libioP.h" #include "stdio.h" #undef stdin #undef stdout #undef stderr FILE *stdin = (FILE *) &_IO_2_1_stdin_; FILE *stdout = (FILE *) &_IO_2_1_stdout_; FILE *stderr = (FILE *) &_IO_2_1_stderr_; stdin에 대한 구조체 정의 부분이다. struct _IO_FILE { i..
플레이 스토어 검색도중에 재밋는 게임을 발견했고 풀어볼려다가 파이썬이나 C로 이 게임을 풀어보려한다. 일단 게임의 전반적인 규칙은 NxN의 배열판이 있고 행과 열에 적힌 숫자는 각 행과 열에 둘 수 있는 텐트의 값이다. 그리고 나무가 존재하는데 텐트는 무조건 나무기준으로 바로 옆에 위치해야 한다. 그리고 남는 공간에는 잔디를 두어야 한다. 이 게임의 공략 소스는 나중에 짜도록하고 어떠한 식으로 만들어야 할지 글로만 끄적여 볼것이다. 나무옆에 텐트 알고리즘 나무 : 3 땅 : 0 잔디 : 1 텐트 : 2 일단 먼저 행과 열의 번호에 0이 있다면 그 자리는 잔디로 다 밀어버린다. 단 나무자리는 보호 그러면 배열판은 0과 1 그리고 3으로 이루어져 있다. 이 배열판을 복사한다. tmp배열로 나무의 위치를 잡고..
어세블리어로 시저암호를 만들기위해 먼저 C로 소스코드를 작성함. 아래는 카이사르 암호 복호화, 암호화 과정인데 번호 2번은 작동하지 않는다. 대신 1번을 누르고 암호화 진행 후, 복호화도 같이 진행된다. #include #include /* 카이사르 암호 만들기 암호화 & 복호화 만들기 키는 0~25 총 26개 암호화 과정 'P' - 'A' 해서 나온값에 key를 더하고 %26을 한다. 복호화과정에선 'P' - 'A' 해서 나온값에 key를 빼고 %26을 한다 만약 -가 나올경우 26을 더한다. */ void Crypto(char* plain, int key); void Encrypto(char* crypto_text); int main(void) { int i; int len; int check; ch..
수요일에 프로그래밍 시험을 봤는데 2번 문제에 추가적인 배열을 만들지 않고 문자열의 빈도수를 구하라는 문제를 발견했다 :( 처음에 그냥 if else if문 27개를 만들어서 구할 생각이였지만 이건 좀 아니라는 생각에 알고리즘을 구상한 결과 아스키코드 0x20 ~122까지 돌리는 것이였다! 123456789101112131415161718192021222324252627282930313233343536373839404142#include #include int main(void){ int check; char line[80]; gets(line); int j; int a, tmp, result1=0, result2=0,i; int len=0; for(i=0;line[i]!='\0';i++) { len++..
요즘 파이썬을 쓰다보니(물론 only 절차) 파이썬의 리스트에 대한 여러 메소드가 너무 매력적이였다... 그래서 파이썬처럼 하고자 C에서 헤더파일을 만듦. 간단하게 /*[How to use?] array_pop(int* ptr, int number, int size); 특정 원소를 꺼낸다. int sort(int* ptr, int size); 오름차순 정렬 int array_sum(int* ptr, int size); 배열원소의 합을 구함 int array_index(int* ptr, int number, int size); 원하는 문자의 인덱스를 뽑아온다. int sort_reverse(int* ptr, int size); 내림차순 정렬 int remove_overlapped(int* array_pop..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
문제닷! ???의 값을 구하라는 문제다 처음 쓰레드를 몰랐을 땐 와 저거 어떻게 풀지였는데 윈도우 쓰레드를 배우고 난뒤엔 semaphore께서 이걸 풀어 주시네... ㅎㅎ 일단 내가 짠 알고리즘은 세마포어를 이용해서 i x i 부분이 홀수일 때와 짝수일 때로 나누어서 풀었다. 참고로 이 코드는 소켓 프로그래밍 공부하다가 쓴 코드인데 직접짜기 귀찮아서 예제코드에서 수정해서 썼다. ㅎㅎ 밑엔 코드 ~,~ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include #include #include unsigned WINAPI Read(void * arg);unsigned WINAPI Accu(vo..