Nmap vs. Netcat

Nmap vs. nc (Network Mapper vs. Netcat) 네트워크 스캐닝 도구로서 비교 Nmap vs. nc (Netcat): 네트워크 스캐닝 도구 비교 Nmap (Network Mapper) 네트워크 스캐닝 및 보안 평가 도구로, 대규모 네트워크에서 호스트, 서비스, 오픈 포트를 탐지하는 데 사용 네트워크 호스트, 서비스, 오픈 포트 스캐닝, 운영 체제 감지, 버전 감지, 서비스 식별 등 다양한 네트워크 탐지 및 보안 평가 기능 옵션 설명 예제 -p 특정 포트를 스캔합니다 nmap -p 80,443 192.168.1.100 -p- 모든 포트를 스캔합니다 nmap -p- 192.168.1.100 -sV 서비스 버전을 탐지합니다 nmap -sV 192.168.1.100 -O 운영 체제를 탐지합니다 nmap -O 192.168.1.100 -sS TCP SYN 스캔을 수행합니다 nmap -sS 192.168.1.100 -sU UDP 포트를 스캔합니다 nmap -sU 192.168.1.100 -T4 스캔 속도를 높입니다 nmap -T4 192.168.1.100 -A 공격적 스캔을 수행합니다 (OS, 서비스 탐지) nmap -A 192.168.1.100 -oN 스캔 결과를 일반 텍스트 파일로 저장합니다 nmap -oN scan_results.txt 192.168.1.100 -oX 스캔 결과를 XML 파일로 저장합니다 nmap -oX scan_results.xml 192.168.1.100 -oG 스캔 결과를 그레프블(grepable) 형식으로 저장합니다 nmap -oG scan_results.gnmap 192.168.1.100 -oA 모든 형식으로 스캔 결과를 저장합니다 (N, X, G 파일) nmap -oA scan_results 192.168.1.100 -v 스캔 중 자세한 출력을 제공합니다 nmap -v 192.168.1.100 -vv 매우 자세한 출력을 제공합니다 nmap -vv 192.168.1.100 -Pn 호스트가 응답하지 않더라도 스캔을 수행합니다 nmap -Pn 192.168.1.100 --open 열린 포트만 출력합니다 nmap --open 192.168.1.100 --reason 포트 상태 결정의 이유를 출력합니다 nmap --reason 192.168.1.100 --script NSE(Nmap Scripting Engine) 스크립트를 실행합니다 nmap --script default 192.168.1.100 --exclude 특정 IP 주소를 제외하고 스캔합니다 nmap -sn 192.168.1.0/24 --exclude 192.168.1.1 --max-retries 재시도 횟수를 지정합니다 nmap --max-retries 2 192.168.1.100 nc (Netcat) 네트워크 연결 도구로, TCP/IP 소켓을 직접 다루는 데 사용되며, 데이터 전송, 포트 스캐닝, 포트 열기 및 메시지 전송 등의 작업을 수행할 수 있음 ...

June 17, 2024 · Byung Kyu KIM

Homebrew, Formulae와 Cask의 차이점

Homebrew는 macOS와 Linux에서 소프트웨어를 쉽게 설치하고 관리할 수 있는 패키지 관리자. Homebrew https://brew.sh/{:target="_blank"} Homebrew는 macOS와 Linux에서 소프트웨어 패키지를 간편하게 설치하고 관리할 수 있는 패키지 관리자 Homebrew에는 두 가지 주요 설치 방법인 Formulae와 Cask가 있습니다. Formulae와 Cask의 차이점과 동일한 애플리케이션이 두 가지 방법으로 제공되는 예시를 설명 Homebrew 설치 macOS $ brew --version # 설치 확인 Linux $ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" $ brew --version # 설치 확인 Homebrew 주요 명령어 Formulae 설치 (CLI 애플리케이션) brew install <package-name> 예: wget 설치 ...

June 7, 2024 · Byung Kyu KIM

TLS와 SSH 프로토콜 기능

TLS와 SSH 프로토콜의 서버-클라이언트 협상 항목과 기능 비교 TLS와 SSH 프로토콜 정의 1. TLS(Transport Layer Security) TLS 프로토콜은 인터넷 상에서 안전한 통신을 위해 사용되는 암호화 프로토콜입니다. TLS는 SSL(Secure Sockets Layer) 프로토콜의 후속 버전으로, 웹 브라우저와 웹 서버 사이의 통신을 암호화하여 데이터 보안을 강화하는데 사용됩니다. TLS 프로토콜의 주요 기능 암호화: 클라이언트와 서버 간의 통신 내용을 암호화하여 보호 인증: 서버의 신원을 인증하고, 클라이언트 인증도 지원 무결성: 전송 데이터의 변조를 방지 TLS는 HTTP, SMTP, IMAP 등 다양한 프로토콜의 보안 계층으로 사용됩니다. TLS 1.0/1.1은 더 이상 권장되지 않으며, 현재는 TLS 1.2와 가장 최신 표준인 TLS 1.3이 널리 사용되고 있습니다. 특히 TLS 1.3은 이전 버전 대비 보안성과 성능이 크게 향상되었습니다. ...

April 6, 2024 · Byung Kyu KIM

GNU C++로 정적 라이브러리 링크하는 방법

GNU C++ 프로그램에서 정적 라이브러리를 링크하는 방법 정적 라이브러리 사용 사용 시 고려 사항 프로그램 크기 증가: 정적 라이브러리를 사용하면 실행 파일 크기가 크게 증가할 수 있슴 라이브러리 업데이트: 정적 라이브러리를 사용하면 라이브러리 업데이트 시 프로그램을 다시 컴파일해야 필요 사용 장점 운영 체제 의존성 감소: 정적 라이브러리를 사용하면 프로그램 실행에 필요한 모든 라이브러리가 실행 파일에 포함되어 있어 운영 체제에 동일한 라이브러리가 설치되어 있지 않아도 프로그램을 실행 보안 강화: 정적 라이브러리를 사용하면 공유 라이브러리 공격과 같은 보안 취약점에 대한 위험을 줄일 수 있음 성능 향상: 정적 라이브러리를 사용하면 프로그램 실행 속도를 향상시킬 수 있음 정적 라이브러리 링크 링크 옵션 -static C 런타임 라이브러리뿐만 아니라 모든 외부 라이브러리를 정적으로 링크합니다. 실행 파일에 모든 필요한 라이브러리 코드를 포함시킵니다. 결과적으로 실행 파일의 크기가 크게 증가할 수 있습니다. 시스템 라이브러리에 대한 의존성을 제거하여 이식성을 높입니다. -static-libstdc++ C++ 표준 라이브러리만 정적으로 링크합니다. 다른 시스템 라이브러리나 사용자 정의 라이브러리는 여전히 동적으로 링크될 수 있습니다. -static 옵션보다 실행 파일 크기 증가가 덜합니다. C++ ABI 호환성 문제를 해결하는 데 유용할 수 있습니다. g++ -static main.cpp -o myprogram 라이브러리 링크 지정 방법 -l 옵션 (일반적인 방법) 컴파일러에게 특정 라이브러리를 링크하도록 지시. 먼저 동적 라이브러리(.so 파일)를 찾습니다. 동적 라이브러리가 없으면 정적 라이브러리(.a 파일)를 찾습니다. 표준 라이브러리 경로(예: /usr/lib, /lib)와 -L 옵션으로 지정된 추가 경로에서 라이브러리를 찾습니다. 정적 라이브러리를 명시적으로 지정하려면, 전체 파일 경로를 사용할 수 있습니다. 예: g++ main.cpp /path/to/libmylib.a -o myprogram 뒤에 오는 라이브러리 이름은 관례에 따라 lib 접두사와 .a 확장자를 가진 정적 라이브러리 파일명 -static 옵션과 함께 사용 시 -static 옵션과 함께 -l을 사용하면, 링커는 오직 정적 라이브러리만을 찾습니다. 이 경우 정적 라이브러리가 없다면 링크 에러가 발생합니다. -Wl,–whole-archive 옵션 컴파일러에게 라이브러리에 있는 모든 객체 파일을 링크하도록 지시 이 옵션을 사용하면 라이브러리에 있는 모든 함수가 사용될 수 있음 주로 정적 라이브러리(.a)에 사용됩니다. 전역 객체의 생성자나 정적 초기화 함수가 반드시 링크되도록 보장합니다. 주요 차이점 : -l -Wl,–whole-archive -l은 선택적으로 필요한 부분만 링크하지만, –whole-archive는 라이브러리 전체를 링크합니다. -l은 동적/정적 라이브러리 모두에 사용 가능하지만, –whole-archive는 주로 정적 라이브러리에 사용됩니다. –whole-archive를 사용하면 실행 파일 크기가 더 커질 수 있습니다. -Wl,–whole-archive는 플러그인 시스템이나 동적으로 로드되는 모듈을 구현할 때 특히 유용할 수 있습니다 g++ main.cpp -lstdc++ -Wl,--whole-archive my_lib.a -o myprogram 의존성 확인 실행 파일의 의존성을 확인하는 것은 프로그램이 어떤 라이브러리에 의존하고 있는지 파악하는 데 중요합니다. 이를 통해 정적 링킹이 제대로 되었는지, 혹은 동적 라이브러리에 대한 의존성이 있는지 확인할 수 있습니다. ...

February 25, 2024 · Byung Kyu KIM

유니코드 NFD to NFC 변환

유니코드 NFD 문자열을 NFC 문자열로 변환하는 방법을 Python 스크립트와 nfd2c 툴을 활용하여 설명합니다. 이 글은 macOS 및 다양한 운영 체제에서 유니코드 호환성을 유지하기 위해 NFD와 NFC 간 변환이 필요한 상황에 유용합니다. NFD와 NFC 유니코드는 다양한 언어와 문자를 일관되게 표현하기 위한 국제 표준입니다. 하지만 동일한 문자라도 운영 체제나 시스템에 따라 다른 유니코드 정규화 방식(NFD, NFC)으로 저장되거나 처리될 수 있습니다. 이는 파일 시스템, 데이터베이스, 문자열 비교 등에서 예상치 못한 문제를 일으킬 수 있습니다. ...

February 6, 2024 · Byung Kyu KIM

Ollama를 이용한 Mistral 로컬 실행 가이드

ollama, ollama-webui, mistral 설치 및 테스트 Ollama OLLAMA는 Open Large Language Model for AI Applications의 약자로, Google AI에서 개발한 대규모 언어 모델 (LLM)입니다. OLLAMA는 텍스트 생성, 번역, 질문 응답 등 다양한 AI 애플리케이션 개발을 위해 사용할 수 있는 강력한 도구 다양한 기능: OLLAMA는 텍스트 생성, 번역, 질문 응답, 요약, 코드 생성 등 다양한 기능을 제공합니다. 강력한 성능: OLLAMA는 Google AI의 최첨단 기술을 기반으로 개발되어 강력한 성능을 제공합니다. 쉬운 사용: OLLAMA는 Python API를 제공하여 쉽게 사용할 수 있습니다. 다양한 모델: OLLAMA는 다양한 크기와 기능을 가진 모델을 제공하여 사용자의 필요에 맞게 선택할 수 있습니다. Ollama 설치 다운로드 : https://ollama.ai/download{:target="_blank"} 설치 및 활용 가능한 모델 : https://ollama.ai/library{:target="_blank"} $ ollama Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model pull Pull a model from a registry push Push a model to a registry list List models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command. mistral 모델 설치 https://ollama.ai/library/mistral{:target="_blank"} Mistral은 최근에 개발된 대형 언어 모델 중 하나입니다. 이 모델은 7.3 billion 개의 파라미터를 가지고 있으며, 자연어 처리 분야에서 매우 높은 성능을 보입니다. Mistral은 다양한 자연어 처리 작업에서 사용될 수 있습니다. 예를 들어, 이 모델은 텍스트 생성, 기계 번역, 질문 응답, 감성 분석 등의 작업에 사용될 수 있습니다. ...

January 27, 2024 · Byung Kyu KIM

DuckDB, CSV에서 MySQL로의 ETL

DuckDB를 ETL 도구로 활용 : CSV 데이터 → MySQL DuckDB를 통한 CSV 데이터를 MySQL로 ETL 하는 방법 ETL이란? ETL이란 Extract, Transform, Load의 약자로, 데이터를 다양한 소스에서 추출하고 변환하고 적재하는 과정 ETL을 수행하기 위해서는 여러가지 툴을 사용할 수 있는데 그 중 하나 DuckDB 활용하는 안 DuckDB DuckDB는 분석 쿼리에 최적화된 임베디드 데이터베이스 DuckDB는 PostgreSQL과 호환되는 SQL 문법을 사용하고, 여러 DB와 연결하여 데이터를 효율적으로 가져와 로컬 DuckDB에서 데이터 처리 가능 Extensions : https://duckdb.org/docs/extensions/overview ETL 예제 DuckDB에서 CSV 파일을 읽어와 테이블 생성 MySQL Extension{:target="_blank"} CREATE TABLE csv_table AS SELECT * FROM read_csv_auto('your_csv_file'); DuckDB에서 MySQL에 연결합니다. 다음과 같은 명령어를 사용할 수 있습니다. INSTALL MySQL; LOAD MySQL; ATTACH 'host=localhost user=root port=0 database=etldb' AS mysqldb (TYPE mysql) USE mysqldb; DuckDB에서 MySQL로 데이터를 적재합니다. 다음과 같은 명령어를 사용할 수 있습니다. CREATE TABLE mysqldb.etldb.csvtbl AS SELECT * FROM csv_table; 참고 MySQL LOAD DATA{:target="_blank"} CSV to SQLite3{:target="_blank"}

January 25, 2024 · Byung Kyu KIM

Act - Run your GitHub Actions locally

로컬 머신에서 Gitub Actions를 실행할 수 있는 도구 Act https://github.com/nektos/act/{:target="_blank"} .github/workflows/ 에서 GitHub Actions를 읽고 로컬 환경 실행 Docker 기반 컨테이너로 운영 macOS 에서는 Docker Desktop 필요 Linux, MacOS, Windows 지원 설치 및 실행 $ brew install act actions-test/.github/workflows/simple.yml # This is a basic workflow to help you get started with Actions name: CI on: workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: # - uses: actions/checkout@v3 - name: echo test run: | cat /etc/*-release $ git clone https://github.com/cdecl/actions-test $ cd actions-test $ act [CI/build] 🚀 Start image=catthehacker/ubuntu:act-latest [CI/build] 🐳 docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true [CI/build] 🐳 docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] [CI/build] 🐳 docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] [CI/build] ⭐ Run Main echo test [CI/build] 🐳 docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/0] user= workdir= | DISTRIB_ID=Ubuntu | DISTRIB_RELEASE=22.04 | DISTRIB_CODENAME=jammy | DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS" | PRETTY_NAME="Ubuntu 22.04.2 LTS" | NAME="Ubuntu" | VERSION_ID="22.04" | VERSION="22.04.2 LTS (Jammy Jellyfish)" | VERSION_CODENAME=jammy | ID=ubuntu | ID_LIKE=debian | HOME_URL="https://www.ubuntu.com/" | SUPPORT_URL="https://help.ubuntu.com/" | BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" | PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" | UBUNTU_CODENAME=jammy [CI/build] ✅ Success - Main echo test [CI/build] 🏁 Job succeeded Secret 및 Env 적용 VAR1=1111 VAR2=2222 $ act --env-file my.env --secret-file my.secrets Github Actions 와 모든것이 호환되지는 않음 (e.g. 스케쥴) 테스트 및 개발 용도로 사용 적합 ...

April 26, 2023 · Byung Kyu KIM

OrbStack

Docker Desktop 대체제, Docker containers and Linux machines on macOS OrbStack https://orbstack.dev/{:target="_blank"} MacOS 환경에서 Docker Desktop 대체제로 Docker containers를 실행 가능하고 추가적으로 리눅스 VM도 운영가능함 OrbStack vs. Docker Desktop{:target="_blank"} Docker Desktop 에 비해 적은 리소스 및 빠른 속도 Linux machines 지원 및 Rosetta x86 emulation 가능 Kubernetes는 계획중 OrbStack vs. Colima{:target="_blank"} Docker Desktop 대체체로 많이 언급되는 Colima 와의 비교 사용하고있는 Docker Desktop 과 Multipass 2개를 대체 가능할 것으로 보임 Quick start https://docs.orbstack.dev/quick-start{:target="_blank"} brew install orbstack

April 25, 2023 · Byung Kyu KIM

Jq 활용, Json to CSV 변환

jq 명령어를 통한 Json to CSV 변환 Jq 명령어 활용 https://stedolan.github.io/jq/{:target="_blank"} jq is a lightweight and flexible command-line JSON processor. jq를 사용하여 JSON 배열과 NDJSON 형식의 데이터를 CSV 형식으로 변환하는 예제 JSON 배열은 여러 개의 JSON 객체를 대괄호로 묶은 형식이고, NDJSON은 Newline Delimited JSON의 약자로, 한 줄에 하나의 JSON 객체를 나열한 형식 NDJSON은 MongoDB나 Elasticsearch 등에서 사용되는 데이터 형식 Json 배열에서 CSV 데이터 변환 [ { "fs": "/dev/mapper/vgubuntu-root", "type": "ext4", "size": "915G", "used": "135G", "avail": "734G", "usedpercentage": "16%", "mounted": "/" }, { "fs": "/dev/nvme0n1p2", "type": "ext4", "size": "1.4G", "used": "378M", "avail": "939M", "usedpercentage": "29%", "mounted": "/boot" }, { "fs": "/dev/nvme0n1p1", "type": "vfat", "size": "511M", "used": "30M", "avail": "482M", "usedpercentage": "6%", "mounted": "/boot/efi" } ] Header 추출 CSV 파일의 헤더(keys)를 추출하기 위해 다음과 같은 명령어를 사용 ...

September 1, 2022 · Byung Kyu KIM