본문 바로가기

Data

(184)
[arxiv]Automated software vulnerability detection with machine learning 자동취약점 탐지 관련 논문이전에도 설명했지만 자동화 취약점 탐지에 제일 장점은 크게 세가지임 1. 사람의 노동이 필요하지않다2. 값이 싸다3. 취약점 탐지가 빠르다 본 논문에서는 두가지 방법으로 접근함 1. IR(Intermediate Representation)코드를 가지고 실험 [Build-based]2. 소스코드를 가지고 실험 [Source-based] 소스코드를 컴파일하면[소스코드] - [중간표현] - [기계어] 라는 과정이 있다.첫번째 방법은 여기서 *중간표현 코드를 사용을 하였다고한다. (사실 컴파일러쪽 공부를안했다면 알아보기 힘듬)*Clang의 LLVM 도구를 사용 1. Build-based build-based에서는 두가지 feature를 사용하였음. 첫번째는 CFG(Control-Flow..
[Python] 정렬 알고리즘 [참조]: https://medium.com/@fiv3star/%EC%A0%95%EB%A0%AC%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-sorting-algorithm-%EC%A0%95%EB%A6%AC-8ca307269dc7 (1) Bubble Sort 설명: 배열안에 연속된 두개의 인자 값을 비교해서 바꿔나가면서 리스트를 정렬 - 시간 복잡도: O(N^2)- 공간 복잡도: O(N)def bubbleSort(alist): for loop_count in range(len(alist)-1, 0, -1): for idx in range(loop_count): if alist[idx] > alist[idx+1]: tmp = alist[idx] alist[idx] = alist[idx+..
[Pandas]Pandas dataframe pivot table 예제 dataframe을 처리할때 필요한 정보였음 Pandas.Dataframe.pivot(인자1, 인자2, 인자3)또는Pandas.Dataframe.pivot_table(인자1, 인자2, 인자3)로 쓰는거 같다. 인자 값들의 의미는:인자1: dataframe index으로 사용할 column이름인자2: column으로 사용할 dataframe안에있는 column이름인자3: 데이터로 사용할 column이름 예제로 살펴보면[출저]: https://datascienceschool.net/view-notebook/76dcd63bba2c4959af15bec41b197e7c/도시를 index로 사용하고, column은 연도로 표시하고, dataframe안에있는 데이터들은 인구 데이터 값을 사용한다는 뜻
[Pandas] pandas Dataframe 중복확인 및 중복제거 중복이 있는지 확인하는 방법 notation:data : 중복검사 대상 dataframe 중복확인 방법data.duplicated() 중복제거 방법 data.drop_duplicates()
[NDSS 2018] VulDeePecker: A Deep Learning-Based System for Vulnerability Detection 요약: 본 논문은 소스코드 기반 딥러닝을 활용한 자동 취약점 탐지 시스템을 제안함. 또한 소스코드를 나타낼수있는 새로운 개념인 Code Gadget을 만들어내며 딥러닝을 위한 데이터셋을 가공해서 제공. 딥러닝 알고리즘은 Bidirection Long Short Term Memory(BLSTM)을 사용하여 학습및 탐지를 함.기존의 제안된 기술보다 낮은 False Positive(FP), False Negative(FN)이 측정됨. 딥러닝 답게 두가지 단계로 나뉘어짐: Learning Phase, Detection Phase 사실상 본 논문에 가장 중요한 점은 : "어떻게 소스코드를 벡터화를 하여서 표현할것인가?" 라는게 제일 중요하다고 생각함.이 질문에 대해서는 저자들은 Code-gadget이라는걸 활용해..
[Python] 삽입순서를 기억하는 OrderedDict 원래 python의 defaultdict(lambda: 0) 같은 경우에는삽입하고 출력해서 보면삽입했던 순서로 출력이 안이뤄진다, 즉 삽입하는 위치는 랜덤적이게 되는데(왜 그런지는 모르겠음) 이를 해결하는 dict 형식이 바로 OrderedDict이다 사용방법은 다음 코드와 같다: 123456789import collections d = collections.OrderedDict()d['x'] = 100d['y'] = 200d['z'] = 300 for k, v in d.items(): print(k, v)cs 이렇게 되면 출력은 삽입했던 순서와 동일하게 출력이 됨
[RNN]Recurrent Neural Networks 자연 언어 처리(Natural Language Processing)을 공부하다보니 자연스럽게 RNN(Recurrent Neural Networks)를 접하게 됐다, 이 알고리즘 말고도 LSTM(Long Short-Term Memory Models)도 접하긴했지만, 다음 포스팅에서 정리를 해봐야겠다. 제일먼저 RNN을 이해하기전에 일반적인 인공 신경망을 이해해야함. 일반적인 인공 신경망이란 영어로 FFNets이라고도 하는데 이는 Feed-Forward Neural Networks의 준말. 영어에서도 보이다시피 "Forward"란 단어가 있고, 신경망에는 Input Layer, Hidden Layer, Output Layer가 있고, 데이터를 입력하면 입력층에서 은닉층을 거치며 최종적으로 출력층으로 전해진다..
[Tensorflow] 텐서플로우를 이용한 간단한 RNN 코딩 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) learning_rate = 0.001 tr..