Просмотр исходного кода

Fix huge delay on Transmit Signal.

Derek Jamison 2 лет назад
Родитель
Сommit
794f7d5470
6 измененных файлов с 22 добавлено и 12 удалено
  1. 1 1
      .flipcorg/README.md
  2. BIN
      .flipcorg/gallery/00-about.png
  3. 11 0
      CHANGELOG.md
  4. 1 1
      README.md
  5. 1 1
      rolling_flaws_about.h
  6. 8 9
      rolling_flaws_send_keeloq.c

+ 1 - 1
.flipcorg/README.md

@@ -1,6 +1,6 @@
 # Rolling Flaws
 
-Rolling Flaws by [@CodeAllNight](https://twitter.com/codeallnight).
+Rolling Flaws (version 1.3) by [@CodeAllNight](https://twitter.com/codeallnight).
 
 [YouTube demo](https://youtu.be/gMnGuDC9EQo?si=4HLZpkC4XWhh97uQ) of using Rolling Flaws application.  The video shows how to use the application to simulate a receiver that has a Replay attack flaw, Pairing FZ to a receiver, Cloning sequence attack, Future attack, Rollback attack & KGB attack.  The Rolling Flaws application also supports things like "ENC00" attack & window-next attacks, which are described in scenarios below but was not in video.  Rolljam is discussed in document, but discouraged to test since it is [illegal to jam signals](https://www.fcc.gov/general/jammer-enforcement) in the US.  If you have additional ideas, please let me know!
 

BIN
.flipcorg/gallery/00-about.png


+ 11 - 0
CHANGELOG.md

@@ -0,0 +1,11 @@
+# changelog
+
+This file contains all changelogs for latest releases, from 1.3 onward.
+
+## v1.3
+
+### Added
+Added this change log file.
+
+### Fixed
+In some firmware, the retry count on KeeLoq was 100 transmissions, which is too much. Now it stops transmitting after 1 second (or the end of the transmissions) whichever comes first.

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 # Rolling Flaws
 
-Rolling Flaws (version 1.2) by [@CodeAllNight](https://twitter.com/codeallnight).
+Rolling Flaws (version 1.3) by [@CodeAllNight](https://twitter.com/codeallnight).
 
 [YouTube demo](https://youtu.be/gMnGuDC9EQo?si=4HLZpkC4XWhh97uQ) of using Rolling Flaws application.  The video shows how to use the application to simulate a receiver that has a Replay attack flaw, Pairing FZ to a receiver, Cloning sequence attack, Future attack, Rollback attack & KGB attack.  The Rolling Flaws application also supports things like "ENC00" attack & window-next attacks, which are described in scenarios below but was not in video.  Rolljam is discussed in document, but discouraged to test since it is [illegal to jam signals](https://www.fcc.gov/general/jammer-enforcement) in the US.  If you have additional ideas, please let me know!
 

+ 1 - 1
rolling_flaws_about.h

@@ -1,7 +1,7 @@
 #pragma once
 
 #define ROLLING_FLAWS_ABOUT_TEXT                                \
-    "Rolling code receiver\n version 1.2\n"                     \
+    "Rolling code receiver\n version 1.3\n"                     \
     "---\n"                                                     \
     "Practice rolling code attacks without risking a desync!\n" \
     "This app is for educational\n"                             \

+ 8 - 9
rolling_flaws_send_keeloq.c

@@ -60,14 +60,11 @@ static void send_keeloq(
     preset->data = NULL;
     preset->data_size = 0;
 
+    SubGhzProtocolEncoderBase* encoder = subghz_transmitter_get_protocol_instance(transmitter);
+    // sadly, in some firmware this has a Repeat of 100, which is too much for our purposes.
+
     subghz_protocol_keeloq_create_data(
-        subghz_transmitter_get_protocol_instance(transmitter),
-        flipper_format,
-        serial,
-        btn,
-        cnt,
-        name_sysmem,
-        preset);
+        encoder, flipper_format, serial, btn, cnt, name_sysmem, preset);
 
     // Fill out the SubGhzProtocolDecoderPrinceton (which includes SubGhzBlockGeneric data) in our transmitter based on parsing flipper_format.
     // initance->encoder.upload[] gets filled out with duration and level information (You can think of this as the RAW data).
@@ -92,8 +89,10 @@ static void send_keeloq(
 
     // Start transmitting (keeps the DMA buffer filled with the encoder.upload[] data)
     if(subghz_devices_start_async_tx(device, subghz_transmitter_yield, transmitter)) {
-        // Wait for the transmission to complete.
-        while(!(subghz_devices_is_async_complete_tx(device))) {
+        int max_counter = 10;
+
+        // Wait for the transmission to complete, or counter to expire (1 second).
+        while(max_counter-- && !(subghz_devices_is_async_complete_tx(device))) {
             furi_delay_ms(100);
         }