Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
laf — 이 프로젝트는 LoRaWAN 인프라의 보안을 감사하거나 침투 테스트하기 위해 일련의 LoRaWAN 패킷을 제작, 구문 분석, 전송, 분석 및 크랙할 수 있는 도구 모음을 제공하는 것을 목표로 합니다. | Kitploit
도구/GitHubGitHub/ioactive/laf
Packet Sniffing & AnalysisIoT SecurityVulnerability AnalysisExploitationFuzzingWireless SecurityCryptographyPenetration Testing
GitHubioactive/laf

laf

이 프로젝트는 LoRaWAN 인프라의 보안을 감사하거나 침투 테스트하기 위해 일련의 LoRaWAN 패킷을 제작, 구문 분석, 전송, 분석 및 크랙할 수 있는 도구 모음을 제공하는 것을 목표로 합니다.

저장소 보기
18737544년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LoRaWAN 감사 프레임워크 - 알파 버전

IoT 배포는 계속해서 성장하고 있으며, 그 상당한 성장의 일부는 전 세계 수백 개 도시(스마트 시티), 산업 및 가정에 배포된 수백만 개의 LPWAN(저전력 광역 네트워크) 센서로 구성됩니다. 가장 많이 사용되는 LPWAN 기술 중 하나는 LoRa이며, LoRaWAN은 네트워크 표준(MAC 계층)입니다. LoRaWAN은 내장된 암호화를 사용하는 보안 프로토콜이지만, 구현 문제와 취약점으로 인해 대부분의 현재 배포의 보안이 영향을 받습니다.

이 프로젝트는 LoRaWAN 인프라의 보안을 감사하거나 침투 테스트하기 위해 일련의 LoRaWAN 패킷을 조작, 구문 분석, 전송, 분석 및 크랙하는 도구 세트를 제공하고자 합니다.

아래는 이 저장소의 구조입니다:

|-- tools 
    |-- UdpSender.py
    |-- UdpProxy.py
    |-- TcpProxy.py
    |-- lorawan
        |-- BruteForcer.py
        |-- MicGenerator.py
        |-- PacketCrafter.py
        |-- PacketParser.py
        |-- SessionKeysGenerator.py 
        |-- Loracrack (https://github.com/matiassequeira/Loracrack/tree/master) 
    |-- utils
        |-- DevAddrChanger.py
        |-- Fuzzer.py    
        |-- FileLogger.py
|-- auditing
    |-- datacollectors
        |-- MqttCollector.py
        |-- UdpForwarderProxy.py
    |-- analyzers
        |-- LafProcessData.py
        |-- bruteForcer
            |-- LafBruteforcer.py
            |-- keys
        |-- dataanalysis
            |-- LafPacketAnalysis.py
        |-- printer
            |-- LafPrinter.py
    |-- db
        |-- __init__.py
        |-- Models.py
        |-- Service.py
|-- lorawanwrapper 
        |-- LorawanWrapper.py
        |-- utils 
            |-- jsonUnmarshaler.go
            |-- lorawanWrapper.go
            |-- micGenerator.go
            |-- sessionKeysGenerator.go
|-- scripts
    |-- gateway_channel_changer
        |-- LoRa-GW-Installer.sh
        |-- Continuous-Channel-Switch.sh
        |-- LoRa-GW-Channel-Setup.sh

시작하기

LoRaWAN 감사 프레임워크를 실행할 수 있는 다양한 옵션을 제공합니다:

  1. 첫 번째 옵션은 로컬에 설치하려는 사용자를 위한 것입니다. 주 목적이 tools/ 디렉토리에 있는 침투 테스트 도구를 사용하는 것이라면 Docker 포트 매핑 문제를 피하기 위해 이 옵션을 권장합니다.
  2. 다른 옵션은 Docker 컨테이너에서 실행하려는 사용자를 위한 것으로, 수동으로 종속성을 설치할 필요가 없습니다. 분석기를 사용하고 환경을 수동으로 설정할 시간이 많지 않은 경우 이 옵션을 권장합니다.
  3. 물론 LAF를 로컬에서 실행하고 Docker 컨테이너의 Postgres DB를 sqlite 대신 사용할 수도 있습니다. LAF는 localhost를 통해 Postgres에 연결을 시도합니다. Docker 설정에 대한 지침은 아래를 참조하세요.

로컬 환경에 LAF 설치

다음 지침을 통해 프로젝트와 그 종속성을 로컬 머신에 복사합니다. 아래 명령어는 Debian 기반 환경을 위한 것입니다:

  1. 이 저장소를 클론합니다: git clone --recurse-submodules https://github.com/IOActive/laf.git

  2. python3를 설치합니다:

    1. sudo apt-get update
    2. sudo apt-get install python3.6
  3. Python 종속성을 다운로드하여 설치합니다:

    1. sudo pip3 install paho-mqtt && sudo pip3 install sqlalchemy && sudo pip3 install psycopg2-binary &&sudo pip3 install python-dateutil
  4. PYTHONPATH 및 ENVIRONMENT를 설정합니다:

    1. cd laf && export PYTHONPATH=$(pwd) && export ENVIRONMENT='DEV'
  5. golang을 설치하고 설정합니다:

    1. 운영 체제에 맞게 https://golang.org/dl/에서 golang을 다운로드합니다.
    2. go 설치 프로그램이 다운로드된 폴더로 이동합니다: cd ~/Downloads
    3. 설치 프로그램의 압축을 풉니다: sudo tar -C /usr/local -xvzf YOUR_GOLANG_FILE
    4. PATH에 추가합니다: export PATH=$PATH:/usr/local/go/bin
    5. GOPATH를 설정합니다: export GOPATH="$HOME/go"
  6. Go 라이브러리를 컴파일합니다:

    1. cd laf/lorawanwrapper/utils
    2. go build -o lorawanWrapper.so -buildmode=c-shared jsonUnmarshaler.go lorawanWrapper.go micGenerator.go sessionKeysGenerator.go hashGenerator.go
  7. 사용하려는 DB에 따라:

    a. PostgreSQL: 'Docker를 사용하여 LAF 설치'의 3단계까지 따릅니다.

    b. SQLite:

    1. cd laf/auditing/db
    2. 선호하는 텍스트 편집기로 __init__.py를 열고 Postgres에 사용할 줄(DB 연결 및 환경 변수)을 주석 처리하고 sqlite에 사용할 줄을 주석 해제합니다.

이상입니다!

Docker를 사용하여 LAF 설치

이 방법은 종속성 설치를 처리할 필요가 없으며, 도구가 패킷과 데이터를 저장하는 PostgreSQL DB를 시작합니다. 컨테이너:

  • Tools.
  • PostgreSQL.
  • PgAdmin4.

단계:

  1. 이 저장소를 클론합니다: git clone https://github.com/IOActive/laf.git
  2. cd laf/로 이동합니다.
  3. 컨테이너를 시작합니다: docker-compose up --build
  4. 컨테이너 내에서 도구를 사용하려면: docker exec -ti laf_tools_1 /bin/bash
  5. 즐기세요!

pgAdmin 데이터베이스 연결

pgAdmin을 사용하여 DB의 데이터를 확인할 수 있습니다:

먼저, pgAdmin에 접속합니다:

  • URL: http://localhost:5001
  • 사용자: pgadmin
  • 비밀번호: pgadmin

그런 다음, 서버를 추가해야 합니다:

  • 호스트: db
  • 포트: 5432
  • 사용자: postgres
  • 비밀번호: postgres

도구 설명

다음은 디렉토리와 그 안에 있는 도구/기능에 대한 설명입니다.

/tools

이 디렉토리에 제공된 도구의 주요 목적은 LoRaWAN 인프라에 대한 침투 테스트 실행을 용이하게 하는 것입니다.

UdpSender.py

이 도구는 업링크 패킷(인프라에 따라 네트워크 서버 또는 게이트웨이 브리지로) 또는 다운링크 패킷(패킷-포워더로)을 전송하기 위한 것입니다. 선택적으로 패킷을 퍼징하거나 유효한 MIC를 계산할 수 있습니다.

선택적 인수:

-h, --help            도움말 메시지를 표시하고 종료합니다.
--lcl-port LCL_PORT   소스 포트, 예: --lcl-port=623.
--timeout TIMEOUT     전송된 각 패킷 사이의 시간(초). 기본값은
                        1초입니다. 이 시간 동안 발신자는 응답을 기다립니다.
--repeat              메시지를 여러 번 보냅니다.
--fuzz-out FUZZ_OUT [FUZZ_OUT ...]
                        대상 포트로 전송되는 데이터를 퍼징합니다(utils/fuzzer.py의 퍼징 모드 참조), 예: --fuzz-out 1 2.
--key KEY             패킷에 서명하기 위해 키를 입력합니다(16진수 형식, 총 32자
                        / 16바이트). JoinRequest의 경우 AppKey여야 하며,
                        데이터 패킷의 경우 NwkSKey여야 합니다. 이는 이 프로그램에서
                        사전에 검증할 수 없습니다. 예:
                        00112233445566778899AABBCCDDEEFF
-a DEVADDR, --devaddr DEVADDR
                        가장할 장치 주소를 16진수 형식으로 입력합니다(8자
                        총), 예: AABB0011.
--fcnt FCNT           주어진 데이터 패킷에 설정할 프레임 카운터입니다.
                        이 패킷에는 fCnt가 없으므로 JoinRequest/JoinAccept에서는 작동하지 않습니다.

필수 인수:

--dst-ip DST_IP       대상 IP, 예: --dst-ip 192.168.3.101.
--dst-port DST_PORT   대상 포트, 예: --dst-port 623.
--data DATA           UDP 패킷입니다. 이 스크립트 끝의 "data" 배열에 추가 패킷을
                        추가할 수도 있습니다. 패킷은 바이트 문자열이어야 합니다(큰따옴표는
                        이스케이프해야 합니다). ***예제*** packet_forwarder
                        형식: --data "b'\x02\xe67\x00\xb8\'\xeb\xff\xfez\x80
                        \xdb{\"rxpk\":[{\"tmst\":2749728315,\"chan\":0,\"rfch\
                        ":0,\"freq\":902.300000,\"stat\":1,\"modu\":\"LORA\",\
                        "datr\":\"SF7BW125\",\"codr\":\"4/5\",\"lsnr\":9.5,\"r
                        ssi\":-76,\"size\":23,\"data\":\"AMQAAAAAhQAAAgAAAAAAA
                        ACH9PRMJi4=\"}]}'" ***예제*** gatevice
                        [GV] 형식을 즉시 모드로 보내는 경우, BW125 및
                        주파수 902.3에서: "b'{\"tx_mode\": 0, \"freq\": 902.3,
                        \"rfch\": 0, \"modu\": 16, \"datarate\": 16,
                        \"bandwidth\":3, \"codr\": 1, \"ipol\":false,
                        \"size\": 24, \"data\":
                        \"QOOL8AGA6AMCnudJqz3syCkeooCvqbSn\", \"class\": 2}'"

예제:

2초마다 (localhost, 10001)로 포트 10000에서 단일 패킷을 보내고, MIC와 FCounter를 무작위로 퍼징합니다:

python3 UdpSender.py --lcl-port 10000 --dst-ip 127.0.0.1 --dst-port 10001 --timeout 2 --fuzz-out 4 5 --data "b'\x02\xe67\x00\xb8\'\xeb\xff\xfez\x80\xdb{\"rxpk\":[{\"tmst\":2749728315,\"chan\":0,\"rfch\":0,\"freq\":902.300000,\"stat\":1\"modu\":\"LORA\",\"datr\":\"SF7BW125\",\"codr\":\"4/5\",\"lsnr\":9.5,\"rssi\":-76,\"size\":23,\"data\":\"AMQAAAAAhQAAAgAAAAAAAACH9PRMJi4=\"}]}'"

UdpProxy.py

이 UDP 프록시는 주로 평가 중인 인프라에 따라 여러 게이트웨이(packet_forwarders)와 네트워크 서버 또는 게이트웨이 브리지 사이에 배치되도록 설계되었습니다. 또한 원하는 방향(업링크 또는 다운링크)으로 데이터 퍼징 기능을 제공합니다.

선택적 인수:

도구 다운로드