Front-end_dev
PART1 : 랜섬웨어 알고리즘 1. 루트디렉터리에서 출발해(DFS) 모든디렉터리내의 파일(특정확장자)을 암호화시킴 2. 랜섬웨어 프로그램을 실행시키면 암호화할 키(private key)를 random하게 생성함 3. 생성된 private key와 피해자의 ip address를 공격자 서버로 전송. 4. 공격자의 데이터베이스에 피해자의 private key, ip address, 감염된날짜, 컴퓨터시스템이름 총4개를 저장 (primary key는 컴퓨터시스템이름) 5. 피해자가 공격자의 요구조건을 만족시켰을 시 피해자의 컴퓨터 이름을 기반으로 private key를 데이터베이스에서 조회후 피해자에게 알려줌 6. 피해자는 private key를 가지고서 decoder 프로그램을 통해 파일 복호화 PART2..
native javascript로 작성된 module(ex. NPM을통해 다운로드받은)들은 크게상관이없는데, Node.js addon 기술을 통해 C++기반의 코드로작성된 module을 node.js module로 binding했을떄 그 module을 못찾는 문제가 있음. 브라우저는 기본적으로 보안이슈떄문에 운영체제가 제공하는 함수들을 쓰지못함(즉 system call 불가능) 그래서 addon을통해 C++에서 system call할수있게 하는 module을 만들어 javascript로 binding하는경우가 많음. 해결법은 크게 3가지가있는듯함 1. module.paths에 module path를 추가해줌. (그냥 밑의코드 복붙하면됨 mainWindow만 본인 앱의 window변수로바꾸고) mainWi..
const log = console.log; const isIterable = a => !!(a && a[Symbol.iterator]); function *flatten(iter) { for(const a of iter) { // if(!isIterable(a)) for(const b of a) yield b; if(!isIterable(a)) yield* b; else yield a; }} function *map(f, iter) { for(const a of iter) yield f(a);} const flatMap = (f, iter) => flatten(map(f,iter)); log([...flatten([[1,2], [3,4]])]);// [1,2,3,4]log([...flatMap(a =>..