meshtastic 0.0.12 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 121b0a73d30f792b4da0cbd5b6ed91b648bc26ca3349cb47369fac738f837b03
4
- data.tar.gz: a5ddf7b9969ab8c022107f84e192709c01441f5d78f4f011679b948dbe857006
3
+ metadata.gz: 2f8be7f02d2c6825cf9252e52b92012f2dc908e3814ef1bcf298ef0821a55a1c
4
+ data.tar.gz: c2f4b52d0ec9f61092a6666d719d45ed54ba6666a1b25607dad306af0dbb0a27
5
5
  SHA512:
6
- metadata.gz: 110570d4591453df75c6d930df3c4ac3adcb06fd85e4354496fd093b080352754d6d8c7fb4e454989cd2ca0f27e4d53dd1664939b980fb3d59cb465d1afaec1e
7
- data.tar.gz: 5be78bd5b710e9974708064eeccfd1563092051e66e1793b07fb34f3bc02687f4f483a79b3124d8d11cb43091bbc3076305bc8bf51b11373ab44686c1fd38496
6
+ metadata.gz: 17d1b55062fd360db1b956e132faff3fda49faa5e40d2c7632264e32655e6544910e471aa005050c57ef11ab0f783b8d6728f9f0ce5721b2b22e88a5ada950b5
7
+ data.tar.gz: 210c71c836f144389b9277b97c41cb7601140df70b5ea5ee2400286306b31bcc80978874eee600bc01bd22e522e7ae49cd694e0e181f2b35a41d9a1cd4c29627
data/Gemfile CHANGED
@@ -16,7 +16,7 @@ gem 'bundler', '>=2.5.3'
16
16
  gem 'bundle-audit', '0.1.0'
17
17
  gem 'geocoder', '1.8.2'
18
18
  gem 'google-protobuf', '3.21.12'
19
- gem 'google-protobuf-z', '3.5.1'
19
+ # gem 'google-protobuf-z', '3.5.1'
20
20
  gem 'mqtt', '0.6.0'
21
21
  gem 'rake', '13.2.1'
22
22
  gem 'rdoc', '6.6.3.1'
data/README.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # Meshtastic
2
2
  Ruby gem for interfacing with Meshtastic nodes.
3
3
 
4
+ # Settting Expectations
5
+ This gem was created to support alt-comm capabilities w/in a security research framework known as ('https://github.com/0dayInc/pwn')[PWN]. Contributors of this effort cannot guarantee full functionality or support for all Meshtastic features.
6
+
7
+ # Objectives
8
+ - Consume the ('https://github.com/meshtastic/protobufs')[Meshtastic Protobufs] and ('https://github.com/0dayInc/meshtastic/blob/master/AUTOGEN_meshtastic_protobufs.sh')[generate Ruby protobuf modules for Meshtastic] using the protoc command: Complete
9
+ - Integrate a working gem that can interface with the automatically generated Ruby protobuf modules: Complete
10
+ - Scale out Meshtastic Ruby Modules for their respective protobufs within the meshtastic gem (e.g. Meshtastic::MQTTPB is auto-generated based on latest Meshtastic protobuf specs and extended via Meshtastic::MQTT for more MQTT interaction as desired): Continued Effort
11
+
4
12
  ## Installation
5
13
 
6
14
  Install the gem and add to the application's Gemfile by executing:
@@ -78,20 +78,31 @@ module Meshtastic
78
78
 
79
79
  # cipher = OpenSSL::Cipher.new('AES-256-CTR')
80
80
  cipher = OpenSSL::Cipher.new('AES-128-CTR')
81
- mqtt_obj.get_packet do |packet|
82
- raw_packet = packet.to_s.b
83
- raw_packet_len = raw_packet.length
81
+ mqtt_obj.get_packet do |packet_bytes|
82
+ # puts "Packet Bytes: #{packet_bytes.public_methods}"
83
+ raw_packet = packet_bytes.to_s.b
84
+ raw_packet_len = raw_packet.to_s.b.length
85
+ raw_topic = packet_bytes.topic
86
+ raw_payload = packet_bytes.payload
87
+ raw_payload_len = raw_payload.length
88
+
84
89
  begin
85
90
  puts '-' * 80
86
91
 
92
+ payload = {}
87
93
  if json
88
- raw_payload = JSON.parse(packet.payload, symbolize_names: true)
89
- payload = Meshtastic::ServiceEnvelope.json_decode(raw_payload)
90
- map_report = Meshtastic::MapReport.json_decode(raw_payload)
94
+ json_payload = JSON.parse(raw_payload, symbolize_names: true)
95
+ payload = Meshtastic::ServiceEnvelope.json_decode(json_payload)
96
+ map_report = Meshtastic::MapReport.json_decode(json_payload)
91
97
  else
92
- raw_payload = packet.payload.to_s
93
- payload = Meshtastic::ServiceEnvelope.decode(raw_payload).to_hash[:packet]
94
- map_report = Meshtastic::MapReport.decode(raw_payload).to_hash
98
+ svc_envl= Meshtastic::ServiceEnvelope.decode(raw_payload)
99
+ payload = svc_envl.to_h[:packet]
100
+ # puts "STILL GOOD: #{payload.inspect}"
101
+ # puts "Public Methods: #{Meshtastic::MapReport.public_methods}"
102
+ # puts "Public Methods: #{Meshtastic::MapReport.class}"
103
+ # map_report_decode = Meshtastic::MapReport.decode(raw_payload)
104
+ # map_report = map_report_decode.to_h
105
+ # puts "STILL GOOD: #{map_report.inspect}"
95
106
  end
96
107
 
97
108
  puts "*** MESSAGE ***"
@@ -103,8 +114,7 @@ module Meshtastic
103
114
  puts "Channel: #{channel}"
104
115
  packet_id = payload[:id]
105
116
  puts "Packet ID: #{packet_id}"
106
- topic = packet.topic
107
- puts "\nTopic: #{topic}"
117
+ puts "\nTopic: #{raw_topic}"
108
118
 
109
119
  decoded_payload = payload[:decoded]
110
120
  if decoded_payload
@@ -149,44 +159,49 @@ module Meshtastic
149
159
  end
150
160
  puts '*' * 20
151
161
 
152
- map_long_name = map_report[:long_name].b
153
- puts "\n*** MAP STATS ***"
154
- puts "Map Long Name: #{map_long_name.inspect}"
155
- map_short_name = map_report[:short_name]
156
- puts "Map Short Name: #{map_short_name}"
157
- role = map_report[:role]
158
- puts "Role: #{role}"
159
- hw_model = map_report[:hw_model]
160
- puts "Hardware Model: #{hw_model}"
161
- firmware_version = map_report[:firmware_version]
162
- puts "Firmware Version: #{firmware_version}"
163
- region = map_report[:region]
164
- puts "Region: #{region}"
165
- modem_preset = map_report[:modem_preset]
166
- puts "Modem Preset: #{modem_preset}"
167
- has_default_channel = map_report[:has_default_channel]
168
- puts "Has Default Channel: #{has_default_channel}"
169
- latitiude_i = map_report[:latitude_i]
170
- puts "Latitude: #{latitiude_i}"
171
- longitude_i = map_report[:longitude_i]
172
- puts "Longitude: #{longitude_i}"
173
- altitude = map_report[:altitude]
174
- puts "Altitude: #{altitude}"
175
- position_precision = map_report[:position_precision]
176
- puts "Position Precision: #{position_precision}"
177
- num_online_local_nodes = map_report[:num_online_local_nodes]
178
- puts "Number of Online Local Nodes: #{num_online_local_nodes}"
179
- puts '*' * 20
162
+ # map_long_name = map_report[:long_name].b
163
+ # puts "\n*** MAP STATS ***"
164
+ # puts "Map Long Name: #{map_long_name.inspect}"
165
+ # map_short_name = map_report[:short_name]
166
+ # puts "Map Short Name: #{map_short_name}"
167
+ # role = map_report[:role]
168
+ # puts "Role: #{role}"
169
+ # hw_model = map_report[:hw_model]
170
+ # puts "Hardware Model: #{hw_model}"
171
+ # firmware_version = map_report[:firmware_version]
172
+ # puts "Firmware Version: #{firmware_version}"
173
+ # region = map_report[:region]
174
+ # puts "Region: #{region}"
175
+ # modem_preset = map_report[:modem_preset]
176
+ # puts "Modem Preset: #{modem_preset}"
177
+ # has_default_channel = map_report[:has_default_channel]
178
+ # puts "Has Default Channel: #{has_default_channel}"
179
+ # latitiude_i = map_report[:latitude_i]
180
+ # puts "Latitude: #{latitiude_i}"
181
+ # longitude_i = map_report[:longitude_i]
182
+ # puts "Longitude: #{longitude_i}"
183
+ # altitude = map_report[:altitude]
184
+ # puts "Altitude: #{altitude}"
185
+ # position_precision = map_report[:position_precision]
186
+ # puts "Position Precision: #{position_precision}"
187
+ # num_online_local_nodes = map_report[:num_online_local_nodes]
188
+ # puts "Number of Online Local Nodes: #{num_online_local_nodes}"
189
+ # puts '*' * 20
180
190
 
181
191
  puts "\n*** PACKET DEBUGGING ***"
182
192
  puts "Payload: #{payload.inspect}"
183
- puts "\nMap Report: #{map_report.inspect}"
193
+ # puts "\nMap Report: #{map_report.inspect}"
184
194
  puts "\nRaw Packet: #{raw_packet.inspect}"
185
195
  puts "Length: #{raw_packet_len}"
186
196
  puts '*' * 20
187
- rescue Google::Protobuf::ParseError
197
+ rescue Google::Protobuf::ParseError => e
198
+ puts "ERROR: #{e.inspect}"
199
+ puts "\n*** PACKET DEBUGGING ***"
200
+ puts "Payload: #{payload.inspect}"
201
+ # puts "\nMap Report: #{map_report.inspect}"
188
202
  puts "\nRaw Packet: #{raw_packet.inspect}"
189
203
  puts "Length: #{raw_packet_len}"
204
+ puts '*' * 20
190
205
  next
191
206
  ensure
192
207
  puts '-' * 80
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Meshtastic
4
- VERSION = '0.0.12'
4
+ VERSION = '0.0.14'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meshtastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-25 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.21.12
83
- - !ruby/object:Gem::Dependency
84
- name: google-protobuf-z
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 3.5.1
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 3.5.1
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: mqtt
99
85
  requirement: !ruby/object:Gem::Requirement