{"id":23359917,"url":"https://github.com/ait-aecid/semtech-loratool","last_synced_at":"2025-08-22T11:38:35.668Z","repository":{"id":103369683,"uuid":"522964603","full_name":"ait-aecid/semtech-loratool","owner":"ait-aecid","description":"This util sends encrypted lorapackets using the semtech udp-protocol to the gateway. ","archived":false,"fork":false,"pushed_at":"2022-08-18T10:06:00.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T22:27:23.301Z","etag":null,"topics":["exploit","lorawan","semtech"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ait-aecid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-09T13:36:53.000Z","updated_at":"2023-04-20T11:39:37.000Z","dependencies_parsed_at":"2023-07-08T21:01:42.446Z","dependency_job_id":null,"html_url":"https://github.com/ait-aecid/semtech-loratool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ait-aecid%2Fsemtech-loratool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ait-aecid%2Fsemtech-loratool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ait-aecid%2Fsemtech-loratool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ait-aecid%2Fsemtech-loratool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ait-aecid","download_url":"https://codeload.github.com/ait-aecid/semtech-loratool/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247729499,"owners_count":20986392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exploit","lorawan","semtech"],"created_at":"2024-12-21T11:12:25.404Z","updated_at":"2025-04-07T20:47:02.991Z","avatar_url":"https://github.com/ait-aecid.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# semtech-loratool\r\nThis util sends encrypted lorapackets to the network server using the semtech udp-protocol.\r\n\r\n\r\n# Dependencies\r\n- [impacket](https://github.com/SecureAuthCorp/impacket)\r\n- [adafruit-circuitpython-tinylora](https://github.com/adafruit/Adafruit_CircuitPython_TinyLoRa)\r\n- [python-dotenv](https://github.com/theskumar/python-dotenv)\r\n\r\n# Usage\r\n1. Install the dependencies:\r\n   ```\r\n    pip3 install -r requirements.txt\r\n    ```\r\n2. Clone the repository\r\n3. Set the required environment variables in the file [src/example.env](https://github.com/ait-aecid/semtech-loratool/blob/main/src/example.env) and rename it to \".env\"\r\n4. Execute main.py with command line parameters:\r\n\r\n    ```\r\n    usage: main.py [-h] [-v] [-d] message fcnt\r\n\r\n    positional arguments:\r\n      message          message to be sent as a hex string\r\n      fcnt             current framecount\r\n\r\n    optional arguments:\r\n      -h, --help       show help message and exit\r\n      -v, --verbosity  increase output verbosity\r\n      -d, --dryrun     generate the UDP message without sending it\r\n    ```\r\n    Example usage:\r\n    ```\r\n    cd src\r\n    ./main.py \"01AB\" 123 -v\r\n    ```\r\n\r\n\r\nThe program will then:\r\n1. encrypt the provided message/payload\r\n2. calculate the MIC (Message Integrity Code),\r\n3. construct the PHYPayload,\r\n4. encode it to base64,\r\n5. construct the UDP PUSH_DATA message,\r\n6. send the UDP datagram to the specified IP address and port using UDP. (unless the command line parameter \"-d\" or \"--dryrun\" is passed)\r\n\r\n# Additional Info\r\n\r\n- A lot of parameters that can be individually set in PHYPayload or the UDP message have been hardcoded to be equal to observed parameters in our testbed. Future versions of this tool might make this further customizable.\r\n\r\n# Resources\r\n- [LoraWAN specification](https://lora-alliance.org/wp-content/uploads/2020/11/lorawantm_specification_-v1.1.pdf)\r\n- Lora-net/[packet_forwarder](https://github.com/Lora-net/packet_forwarder/)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fait-aecid%2Fsemtech-loratool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fait-aecid%2Fsemtech-loratool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fait-aecid%2Fsemtech-loratool/lists"}