Created
February 3, 2025 01:07
-
-
Save yunginnanet/16ffe8471e7d8ffef9295f8bf2db8dea to your computer and use it in GitHub Desktop.
yardstick one slumpin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
# pylint: disable=W0614 | |
import sys | |
import os | |
import subprocess | |
import time | |
import signal | |
import random | |
import rflib | |
global d | |
FREQ = 910000000 | |
PKTLEN = 8 | |
DRATE = 9600 | |
packet_1 = ["00100001", "01000011", "00101101", "01010101", "01000001", "01010011"] | |
packet_2 = ["01000011", "00101101", "01010101", "01000001", "01010011", "00100001"] | |
data_hex_1 = [chr(int(x, 2)) for x in packet_1] | |
data_hex_3 = [chr(int(x, 2)) for x in packet_2] | |
global dry | |
dry = False | |
global action | |
action = "run" | |
if len(sys.argv) > 1: | |
if sys.argv[1] == "-n": | |
dry = True | |
def reset_usb(): | |
if dry == True: | |
return | |
if len(sys.argv) < 2: | |
return | |
if sys.argv[1] != "-r": | |
return | |
print("resetting USB ports...") | |
rpistr = "echo '1-1' > /sys/bus/usb/drivers/usb/unbind" | |
subprocess.Popen(rpistr, shell=True, preexec_fn=os.setsid) | |
time.sleep(2) | |
rpistr = "echo '1-1' > /sys/bus/usb/drivers/usb/bind" | |
subprocess.Popen(rpistr, shell=True, preexec_fn=os.setsid) | |
time.sleep(10) | |
def handler(signum, frame): | |
global action | |
action = "stop" | |
if d == None: | |
return | |
print("-----") | |
print("set idle...") | |
try: | |
d.setModeIDLE() | |
exit(0) | |
except: | |
exit(1) | |
def send_data(d, data, repeat=1): | |
if action == "stop": | |
return | |
print(data) | |
for i in range(0, repeat): | |
if action == "stop": | |
return | |
if dry != True: | |
try: | |
d.RFxmit("".join(data).encode("utf-8")) | |
except Exception as e: | |
print(e) | |
def get_freq(maxi): | |
e = os.urandom((maxi.bit_length() + 7) // 8) | |
i = int.from_bytes(e, "big") | |
return i % maxi | |
signal.signal(signal.SIGINT, handler) | |
signal.signal(signal.SIGTERM, handler) | |
try: | |
reset_usb() | |
if dry != True: | |
d = rflib.RfCat() | |
d.setFreq(FREQ) | |
d.setMdmModulation(rflib.MOD_MSK) | |
d.setMdmChanBW(60000) | |
d.setRFRegister(rflib.PKTCTRL1, 0xFF) | |
d.setMdmChanSpc(40000) | |
# d.makePktFLEN(PKTLEN) | |
d.setChannel(0) | |
d.setMdmDRate(DRATE) | |
d.setMdmSyncMode(0) | |
d.setMaxPower() | |
ct = 0 | |
print("init") | |
while True: | |
roll = FREQ | |
if action == "stop": | |
break | |
if ct == 60: | |
ct = 0 | |
else: | |
base = 1 | |
ent = random.randint(1, 5000) | |
ent = ent / 1000 | |
base = (base + ent) * (ct * 100000) | |
roll = FREQ + base | |
data = data_hex_1 | |
if ct % 2 == 0: | |
data = data_hex_3 | |
print("sending on ", roll, end="") | |
try: | |
if dry != True: | |
print("+") | |
d.setFreq(roll) | |
send_data(d, data, random.randint(1, 24)) | |
if dry: | |
print("") | |
except Exception as e: | |
print(e) | |
action = "stop" | |
ct = ct + 1 | |
# for i in range(0, len(str(data)), 8): | |
# roll = roll + 25e4 | |
# chunk = str(data)[i:i + 8] | |
# | |
# if (dry != True): | |
# d.setFreq(roll) | |
# send_data(d, chunk) | |
except Exception as e: | |
action = "stop" | |
sys.exit("Error %s" % str(e)) | |
handler() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment