분류 전체보기

    케실주 보안사고 분석대응 5기 후기

    말도 많고 탈도 많았던 케이실드 주니어가 끝났다. 코로나때문에 이번 과정은 이전 과정들에 비해 우여곡절이 더 많았다고 하는데, 교육생인 내 입장에서도 체감이 되더라 ㅋㅋ;; 온라인에서 오프라인 전환되면서 그만둔 사람들도 있었고, 온라인 팀플을 진행하면서 프로젝트의 팀별 팀원수도 부쩍 늘었다. 뭐.. 결과적으론 우리팀은 나쁘지 않게 잘했다. SQL injection 이라는 상당히 약한 주제로 시작했고, 중간에 PM이 교체되는 대 사건도 겪었으며, 팀원도 타 팀에 비해 절반수준의 인원으로 프로젝트를 진행헀으나 중간에 멘토님의 도움 (알X인랩 김XX 멘토님 감사합니다!) 으로 적당히 잘 선회해서 취약점 점검 도구라는 나름 괜찮은 명분을 얻었고, 팀원들이 잘 따라와 준 덕텍에 주제 자체의 파워가 약함에도 불구하..

    데비안 리눅스 myriaDB 설치 후 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 에러

    데비안 리눅스 myriaDB 설치 후에 그누보드 5 설치를 위해 sql 연결 작업을 진행해야 하는데, Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 에러가 발생하는 경우가 발생했다. 해결하고 보니 꽤나 복합적인 문제였는데, 1. 일단 위 에러는 myriaDB 혹은 mysql 서비스가 시작되어있지 않거나, 해당 디렉토리 경로에 mysqld.sock 파일이 없는 경우에 발생한다. 1-1 따라서, mysql 서비스를 시작해주거나, 1-2 mysqld.sock 파일의 경로를 찾아 /etc/mysql/my.conf 설정파일에서 socket = /var/lib/mysql/mysql.sock 부분을 수정해줘야 한다. 나..

    pandas Class list 를 data frame 으로

    class items(): def __init__(self,name,price) : self.name = name self.price = price 위와같은 클래스가 선언되어 있을 때, 해당 클래스를 list 형태로 만들어 쓸 일이 있을거다. items_list = [] for i,j in zip(name,price) : items_list.append(items(i.text,j.text)) data = pd.DataFrame([ (i.name,i.price) for i in items_list ],columns=['이름','가격']) 위 처럼 class list 를 만들어서 멤버를 추가하고, DataFrame 생성시에 내부적으로 반복문을 돌려 리스트를 만들어주고 , 컬럼 명을 지정하여 주면 된다. 결과..

    뒤늦은 보안기사 필기 후기

    이 시험 한번 치자고 우여곡절이 많았다. 원래 상반기때 다른 중요한 일이 겹칠것 같아서 , 하반기 시험으로 치려고 계획중이었는데 코로나가 터지면서 상반기떄 예정이었던 그 중요한 일이 하반기로 밀려버렸다. .. 그 소식을 받고 재빠르게 상반기 시험으로 변경하려 했으나 , 이미 마감시간이 지난 뒤. 결국 어쩔수 없이 하반기 시험으로 신청을 했는데, 아까말한 그 중요한 일과 일정이 9월 첫주 목-금 / 토 시험 으로 겹쳐버리는 상황이 발생. 두가지를 한꺼번에 준비해야 하는 일이 되버려서 멘탈이 박살나기 일보 직전이었다. 불행중 다행으로 코로나 상황이 악화되어 시험 일정이 11월 첫주까지 밀렸다. 근데 덕분에 자격증 나오는 날짜도 덩달아 미뤄져서 설령 합격하더라도 졸업사정 전까지 자격증 발급이 안되는, 환장하는..

    pandas 멀티프로세스 사용하기 + 큰 csv 데이터 나눠서 가져오기

    프로젝트를 진행하면서 , 대량의 cvs 데이터를 읽어와 처리할 일이 생겼다. 컴퓨터 램의 용량보다 데이터가 무조건 크므로, csv_read 함수를 사용하면 램이 터져나갈 것. 이를 해결하기 위해 chunksize를 구분하여 일부분씩 쪼개서 가져오는 방법을 선택했다. csv_chunk = pd.read_csv("G:\ks_data/"+filename+".csv",chunksize=2000000) for chunk in csv_chunk : print(chunk) 방식은 c언어 등에서 fopen - fread 시에 사용하는 방법과 유사한데, 한번 read_csv를 실행하면 동일 파일에 대해 파일 포인터같은게 유지되어 파일 스트림 방식으로 데이터를 읽어오게 된다. 즉, chunksize를 지정했다면 아래의 f..

    범용적인 웹 크롤링 툴 제작 + 파이썬 이해하기

    이번 케실주 프로젝트 주제인 "SQL 인젝션 자동화 진단도구" 제작을 위해선 그 선행으로 해당 웹 페이지에 대한 크롤링이 선행되어야 한다. 또한 다양한 경우에 대응해야 하므로, 범용성을 가지는 크롤링 툴 제작이 필요하다. 그래서 파이썬의 웹 페이지 크롤링 라이브러리인 BeautifulSoup 와 Requests를 이용한 웹 크롤링을 공부하게 되었다. 기초적인 것들은 다른 블로그나 사이트들에도 있으니 굳이 작성을 하지 않겠고, 범용성을 가지는 자동화가 목적인 경우 어떤 식으로 크롤링 코드를 작성해야 하는지 정도만 메모하려고 한다. 1. request 모듈 사용시엔 인자로 넘어갈 URL에 반드시 http 혹은 https가 붙어야한다. URL을 입력받아 해당 목적지에 요청을 보내는 식의 코드인 경우, 사용자가..

    카카오지도 API 마커 이미지 겹치게 하기

    원래 계획대로면 요로코롬 생긴 귀여운 아이콘들을 지도에 박는게 목적이었다. 그래서 카카오API에서 제공하는 마커 함수를 사용하면서, 이 마커함수에 CSS를 적용시켜 테두리 원과 색, 모양을 만드려 했는데 애석하게도 id나 class가 존재하지 않아 마커에만 CSS를 적용할 수는 없었다. 심지어 map 하위에 있는 img에 박는것도 안된다. 지도 자체가 img 태그로 불러와져서... 그럼 결국 저 마커를 하나하나 만들어 박아야되나? 라는 절망감에 빠져있었는데, 번뜩하고 뭔가 지나갔다. "지도에 마커 박는것 자체는 제한이 없으니, 저 아이콘을 마커로 만들어서 지도에 박을때 배경도 마커로 만들어 박으면 되는것 아닌가?" 그대로 실행에 옮겼다. var backMarkerImage = new kakao.maps...

    docker-compose 사용해서 장고+gunicorn+nginx 서버에 SSL 적용하기

    참고 링크 : https://medium.com/@pentacent/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71 여러가지 방법들이 있으나, 지금 할 방법은 로컬 서버에 letsencrypt 설치 후, nginx 컨테이너에 해당 인증서를 볼륨으로 마운트시켜 사용하게 하는 방식. 이경우 certbot 컨테이너도 하나 더 추가해서 사용해야 한다. 해야하는 작업 순서 : docker-compose 수정, nginx 수정, nginx 컨테이너와 certbot 컨테이너 연결, ssl 인증서 발급 , 클라우드 서비스 포트 정책 수정 ** 1. docker-compose 파일 수정** nginx 포트에 443 포트 추가 certbot 컨..

    멘탈과 일정 점검

    최근들어 여러가지 일들이 한꺼번에 겹치고 있다. 연달아 겹치던 날들은 많았으나 이번엔 진짜 역대급인듯. 케실주 프로젝트에 k시큐에 dfc에 진행하던 공모전까지. 저번 대회때의 여파가 아직 가시질 않아 아직까지도 멘탈적으로 슬럼프를 겪고 있는데다 월말에 마감되는 일들도 너무 많다. 다음주부터는 보안기사 공부도 들어가야 할텐데.. 이번주부터는 케실주가 오프라인 교육에 들어가고 학교 수업도 오프라인 전환이 되서 , 밖으로 돌아다닐 일들이 많아졌다. 정신적으로 너무 몰려있는것같다. 계속 일정에 쫒긴다는 압박을 받고있는데, 뭔가 정작 제대로 진행되는것 같지는 않은 느낌. 하나씩 하나씩 쪼개서 정리하고, 나눠서 해결해나가자. 이번달 말에만 멘탈 잘 잡고 바짝 달려놓으면 11월달엔 여유가 좀 생길수도 있다. 보안기사..

    다른 아키텍쳐 패키지 설치 불가시

    현재 64비트 우분투 사용중인데, 32비트 패키지(i386) 를 설치할 일이 생겨 apt-get으로 설치를 시도하니 해당 패키지 정보를 가져오지 못해 설치가 불가능한 상황이 발생했다 . dpkg --add-architecture i386 apt-get update 위와 같이 i386 아키텍쳐 정보를 패키지 리스트에 추가하고 update를 진행하면 해당 아키텍쳐 패키지 정보도 같이 받아오게 된다. 이후 설치 진행하면 잘 됨.