Изучение уязвимостей электронных систем.
 
key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

Вернуться   Изучение уязвимостей электронных систем > Для начинающих > Новички

Новички Раздел для новичков. Что такое кодграббер, ретранслятор, подмена кода.

Ответ
 
Опции темы
Старый 03.01.2007, 23:08   #1
BEGE
случайно влез
 
Аватар для BEGE
 
Регистрация: 23.07.2006
Сообщений: 23
Поблагодарил: 0
Поблагодарили 0 раз в 0 сообщениях
BEGE стоит на развилке
По умолчанию Прием пакета

Пьните пожалуйста в нужное направление,не сохраняеться посылка в еепром.Вроде бы делаю по исходнику который приведен во вложений.В еепроме пусто нету 8 байт.Может что-то делаю неправильно.Проверяю на 90s2313 и ни хрена.Просто хочу разобраться с приемом.Если есть у кого-нибудь исходник на с для приема пакета,подкиньте пожалуйста.
Вложения
Тип файла: rar prib.rar (3.6 Кб, 56 просмотров)
BEGE вне форума   Ответить с цитированием
Старый 05.01.2007, 18:46   #2
exchange
фрикер
 
Аватар для exchange
 
Регистрация: 17.07.2006
Сообщений: 1,330
Поблагодарил: 0
Поблагодарили 445 раз в 68 сообщениях
exchange стоит на развилке
По умолчанию

есть замечательная подпрограмма приёма написанная микрочипом в An745 rxi.c называется. Для тех кто в танке или ещё не набрал 10 постов или кому лень поискать в гугле:

Код:
#define CLOCK           4       // MHz
#define TE            400       // us
#define OVERSAMPLING    3       
#define PERIOD          TE/OVERSAMPLING*4/CLOCK

#define NBIT            65      // number of bit to receive -1

byte B[9];                      // receive buffer 

static byte  RFstate;           // receiver state
static sbyte RFcount;           // timer counter
static byte  Bptr;              // receive buffer pointer
static byte  BitCount;          // received bits counter
word   XTMR;                    // 16 bit extended timer

volatile bit RFFull;            // buffer full
volatile bit RFBit;             // sampled RF signal

#define TRFreset    0
#define TRFSYNC     1
#define TRFUNO      2
#define TRFZERO     3

#define HIGH_TO     -10         // longest high Te
#define LOW_TO       10         // longest low  Te
#define SHORT_HEAD   20         // shortest Thead accepted 2,7ms
#define LONG_HEAD    45         // longest Thead accepted 6,2ms


#pragma int_rtcc   // install as interrupt handler (comment for HiTech!)
interrupt
rxi()
{
    // this routine gets called every time TMR0 overflows
    RFBit = RFIn;               // sampling RF pin verify!!!
    TMR0 -= PERIOD;             // reload
    T0IF = 0;

    XTMR++;                     // extended 16 long timer update

    if (RFFull)                 // avoid overrun
        return;

    switch( RFstate)            // state machine main switch
    {

    case TRFUNO:
        if ( RFBit == 0)
        { // falling edge detected  ----+
          //                            |
          //                            +----
                RFstate= TRFZERO;
        }
        else
        { // while high 
            RFcount--;
            if ( RFcount < HIGH_TO)
                RFstate = TRFreset;      // reset if too long
        }
        break;

    case TRFZERO:
        if ( RFBit)
        { // rising edge detected     +----
          //                          |
          //                      ----+
            RFstate= TRFUNO;
            B[Bptr] >>= 1;              // rotate 
            if ( RFcount >= 0)
            {
                B[Bptr]+=0x80;          // shift in bit
            }
            RFcount = 0;                // reset length counter
            
            if ( ( ++BitCount & 7) == 0)
                Bptr++;                 // advance one byte
            if (BitCount == NBIT)
            {
                RFstate = TRFreset;     // finished receiving 
                RFFull = TRUE;
            }    
        }
        else
        { // still low
            RFcount++;
            if ( RFcount >= LOW_TO)     // too long low
            {
                RFstate = TRFSYNC;      // fall back into RFSYNC state 
                Bptr = 0;               // reset pointers, while keep counting on 
                BitCount = 0;
            }
        }
        break;

    case TRFSYNC:
        if ( RFBit)
        { // rising edge detected  +---+                +---..
          //                       |   |  <-Theader->   |   
          //                           +----------------+
            if ( ( RFcount < SHORT_HEAD) || ( RFcount >= LONG_HEAD))
            {
                RFstate = TRFreset;
                break;                  // too short/long, no header
            }
            else
            {
                RFcount =0;             // restart counter
                RFstate= TRFUNO;
            }
        }
        else
        { // still low
            RFcount++;
        }
        break;

    case TRFreset:
    default:
        RFstate = TRFSYNC;        // reset state machine in all other cases
        RFcount = 0;
        Bptr = 0;
        BitCount = 0;
        break;
        
    } // switch

   
} // rxi 


void InitReceiver()
{
    T0IF = 0;
    T0IE = 1;                   // TMR0 overflow interrupt
    GIE = 1;                    // enable interrupts
    RFstate = TRFreset;         // reset state machine in all other cases
    RFFull = 0;                 // start with buffer empty
    XTMR = 0;                   // start extended timer
 }


НЕ ОТСТУПАЙ! НЕ СДАВАЙСЯ!
Не позволяй себе быть слабым - никогда!
Иди в отмах - сопротивляйся!
Гляди на мир в прицел - и нападай!

exchange вне форума   Ответить с цитированием
Старый 06.01.2007, 00:24   #3
danko
продвинутый фрикер
 
Аватар для danko
 
Регистрация: 02.03.2006
Адрес: danko@phreaker.us
Сообщений: 2,026
Поблагодарил: 0
Поблагодарили 727 раз в 261 сообщениях
danko имеет захватывающую ауруdanko имеет захватывающую ауру
По умолчанию

Ну что-ж, раз пошла такая пьянка..
Раз дядька exchange ткнул носом страждущих.... Выложу и я вам маленький кусочек кода (типа к новому году )
Сие есть прием на асме под пик

собсно код :

Код:
RECEIVE

;******** WAIT FOR HEADER AND CALIBRATE *******************

	BTFSS   RF_PORT,RFIN            ; INPUT LOW?
	GOTO    RCV_FAIL                ; YES; RECEIVE ERROR

	MOVLW   10                      ; 10 ms TIMER
	MOVWF   CNT1
RCV0
	MOVLW   200
	MOVWF   CNT0
RCV1
	BTFSS   RF_PORT,RFIN            ; INPUT HIGH?
	GOTO    RCV2                    ; NO, JUMP OUT OF LOOP
	DECFSZ  CNT0,1                  ; YES, CONTINUE WITH TIMING LOOP
	GOTO    RCV1                    ; 5 us X CNT0
	DECFSZ  CNT1,1                  ; DO 1 ms LOOP CNT1 TIMES
	GOTO    RCV0
RCV2
	CLRF    CNT0                    ; CLEAR CALIB COUNTER LOW BYTE
	CLRF    CNT1                    ; CLEAR CALIB COUNTER HIGH BYTE
RCV3
	BTFSC   RF_PORT,RFIN            ; [2][2] INPUT HIGH?
	GOTO    RCV6                    ; [0][0] YES--END CALIBRATION
	MOVLW   (MAX+2559)/10/256       ; [1][1] LOAD W WITH TIMEOUT VALUE
	INCF    CNT0,1                  ; [1][1] LOW BYTE OF COUNTER
	BTFSS   STATUS,Z		; [1][2] OVERFLOW IN LOW BYTE?
	GOTO    RCV5                    ; [2][0] NO-DON'T UPDATE HIGH BYTE
RCV4
	INCF    CNT1,1                  ; [0][1] YES--INCREMENT HIGH BYTE
	SUBWF   CNT1,W                  ; [0][1] COUNTER > MAX.?
	BTFSC   STATUS,C		; [0][2] COUNTER > MAX.?
	GOTO    RCV_FAIL                ; [0][0]   YES--HEADER TOO LONG
RCV5
	CLRWDT                          ; [1][1]
	GOTO    RCV3                    ; [2][2] LOOP BACK
					; TOTAL 10/13us (WTH/WTHOUT CARRY)
RCV6
	CLRC
	RRF     CNT1,1
	RRF     CNT0,1
	RRF     CNT1,1
	RRF     CNT0,1
	RRF     CNT1,1
	RRF     CNT0,1                  ; TOTAL:  7 us
					; DIVIDE CNT1:CNT0 BY 8 (600/8=75)
	MOVLW   MIN/80
	SUBWF   CNT0,W
	BTFSS   STATUS,C		; NEGATIVE?
	GOTO    RCV_FAIL                ; YES--HEADER SHORTER THAN MIN.

; ************* VALID HEADER RECEIVED *********************
RCV7
	MOVLW   NBITS                   ; VALID START MARKER WAS RECEIVED
	MOVWF   CNT1
	MOVF    CNT0,W
	MOVWF   CNT2                    ; CNT2 = CNT0
	MOVLW   5
	SUBWF   CNT2,1
	GOTO    DL1                   	; COMPENSATE FOR FIRST BIT

;*************** WAIT FOR NEXT BIT ************************
; First timeout--to prevent HCS preamble being
; seen as data when the decoder calibrates on the
; HCS Guard Time.
; Normal mode data arrives at 0.5 Te
; Preamble pulses arrive at 1.5 Te
; Timeout = 1 Te
;
; Second Timeout--To check for HCS360 narrow mode
; Timeout = 1.5 Te (middle of preamble if not narrow mode)
;
; Third Timeout--Wait for narrow mode bit
; Bit arrives after 1 Te
; Timeout must be 1.5 Te for maximum value of Te, which 
; can't be done with a 5 cycle loop and 8 bit counter.
; Thus make timeout = 255x5 = 1275 = 1.18 Te(max)
;**********************************************************

RCV8					; Timeout = 1BPW
	MOVLW   1H                   	; Compensate for RTCC
	SUBWF   CNT0,0                  ; and CSR processing
	MOVWF   CNT2
RCV9
	BTFSC   RF_PORT,RFIN            ; (2) Wait for Next rising edge
	GOTO    RCV11                   ; (0) If rising edge found, sample
	GOTO    $+1                     ; (2) Delay 2 cycles
	CLRWDT                          ; (1) Clear watchdog Timer
	DECFSZ  CNT2,1                  ; (1) Decrement Timeout Value
	GOTO    RCV9                    ; (2) Loop Back
RCV9A
	RLF     CNT0,W
	MOVWF   CNT2                    ; 6xCNT0x2 = 3/2(CNT2x8) = 1.5 Te
RCV10
	BTFSC   RF_PORT,RFIN            ; (2) Check if clear - Data
	GOTO    RCV_FAIL		; (0) If high - Preamble
	CLRWDT                          ; (1) Clear watchdog Timer
	DECFSZ  CNT2,1                  ; (1) Decrement Timeout Counter
	GOTO    RCV10                   ; (2) Loop back

	MOVLW   0FFH                    ; Timeout = 1.18 Te(max)
	MOVWF   CNT2                    ; Refer to explanation above
RCV10A
	BTFSC   RF_PORT,RFIN            ; (2) Wait for rising edge
	GOTO    RCV11                   ; (0) Edge found--Process
	DECFSZ  CNT2,1                  ; (1) Decrement Timeout counter
	GOTO    RCV10A                  ; (2) Loop Back
	GOTO    RCV_FAIL		; (0) (5) TIMEOUT--no edge found
RCV11
	MOVF    CNT0,W                  ; CALIBRATION COUNTER
	MOVWF   CNT2                    ; (NOMINALLY 75 FOR 300 us PULSE)

	DECF    CNT2,1
	DECF    CNT2,1
	GOTO    $+1
DL1
	CLRWDT                          ; RESET WATCHDOG TIMER
	DECFSZ  CNT2,1                    ;
	GOTO    DL1                     ; CNT0 X 4 us

	BTFSS   RF_PORT,RFIN            ; INPUT HIGH?  FIRST SAMPLE
	GOTO    RCV_FAIL		; NO--ERROR

	MOVF    CNT0,W                  ; CALIBRATION COUNTER
	MOVWF   CNT2                    ; (NOMINALLY 75 FOR 300 us PULSE)
	DECF    CNT2,1
	CLRC                            ; OPTIONAL--LITTLE DIFFERENCE
	RLF     CNT2,1                  ; MULTIPLY BY 2 FOR 600 us
	GOTO    $+1
DL2
	CLRWDT                          ; RESET WATCHDOG TIMER
	DECFSZ  CNT2,1
	GOTO    DL2                     ; CNT0 X 4 us

	BCF     FLAGS,BITIN             ; CLEAR BIT POSITION
	BTFSS   RF_PORT,RFIN            ; LEAVE 0 IF LINE HIGH
	BSF     FLAGS,BITIN             ; MAKE 1 IF LINE LOW

	MOVF    CNT0,W                  ; CALIBRATION COUNTER
	MOVWF   CNT2                    ; (NOMINALLY 75 FOR 300 us PULSE)
	CLRC                            ; OPTIONAL--LITTLE DIFFERENCE
	RLF     CNT2,1                  ; MULTIPLY BY 2 FOR 600 us
	MOVLW	5			; [1]
	SUBWF	CNT2,1			; [1]
	
	MOVLW	1H			; [1] CHECK FOR LAST BIT
	XORWF	CNT1,W			; [1]
	BTFSC	STATUS,Z		; [2]
	GOTO	DL3			; [0]

	BCF	STATUS,C		; [1]
	CALL    ROT_SHIFT               ; [10]+[2] CSR SHIFT + CALL
	BTFSC   FLAGS,BITIN		; [1]
	BSF     CSR7,7			; [1]

DL3
	CLRWDT                          ; RESET WATCHDOG TIMER
	DECFSZ  CNT2,1                  ;
	GOTO    DL3                     ; CNT0 X 4 us

	BTFSC   RF_PORT,RFIN            ; INPUT LOW?  THIRD SAMPLE
	GOTO    RCV_FAIL                ; NO--RECEIVE ERROR
	CALL    TST_RTCC                ; CHECK RTCC
	DECFSZ  CNT1,1                  ; LAST BIT?
	GOTO    RCV8                    ; NO--GET NEXT BIT
 	RETLW   E_OK                    ; RETURN OK

RCV_FAIL
	CALL    TST_RTCC                ; CHECK RTCC
	RETLW   E_RF                    ; HERE IF NOT ALL BITS RECEIVED OK
Ну вот, смотрим, радуемся и говорим спасибо

Последний раз редактировалось exchange; 06.01.2007 в 08:54. Причина: не забываем ставить теги [CODE] чтоб читалось лучше!
danko вне форума   Ответить с цитированием
Старый 06.01.2007, 00:28   #4
danko
продвинутый фрикер
 
Аватар для danko
 
Регистрация: 02.03.2006
Адрес: danko@phreaker.us
Сообщений: 2,026
Поблагодарил: 0
Поблагодарили 727 раз в 261 сообщениях
danko имеет захватывающую ауруdanko имеет захватывающую ауру
По умолчанию

Цитата:
Сообщение от BEGE
Пьните пожалуйста в нужное направление,не сохраняеться посылка в еепром

Это очень неплохой тебе пинок в нужном направлении!
Цитата:
Сообщение от BEGE
Вроде бы делаю по исходнику который приведен во вложений.В еепроме пусто нету 8 байт.Может что-то делаю неправильно.Проверяю на 90s2313 и ни хрена.Просто хочу разобраться с приемом

Исходник этот твой, или нет? Кто автор??
Если не твой, то лучше разбирайся с приемом не по нему, а по приведенным выше пинкам в нужном направлении
Будут вопросы - давай
Удачи
danko вне форума   Ответить с цитированием
Старый 22.01.2007, 02:27   #5
Seka
Заблокирован
 
Аватар для Seka
 
Регистрация: 08.04.2006
Сообщений: 68
Поблагодарил: 0
Поблагодарили 6 раз в 2 сообщениях
Seka стоит на развилке
По умолчанию

Цитата:
Сообщение от danko Посмотреть сообщение
Ну что-ж, раз пошла такая пьянка..
Раз дядька exchange ткнул носом страждущих.... Выложу и я вам маленький кусочек кода (типа к новому году )
Сие есть прием на асме под пик

Подскажите под какой пик писался этот код?
Seka вне форума   Ответить с цитированием
Старый 24.01.2007, 02:16   #6
volc
случайно влез
 
Аватар для volc
 
Регистрация: 28.12.2006
Сообщений: 40
Поблагодарил: 0
Поблагодарили 2 раз в 2 сообщениях
volc стоит на развилке
По умолчанию

К примеру 16x84
volc вне форума   Ответить с цитированием
Старый 24.01.2007, 04:08   #7
danko
продвинутый фрикер
 
Аватар для danko
 
Регистрация: 02.03.2006
Адрес: danko@phreaker.us
Сообщений: 2,026
Поблагодарил: 0
Поблагодарили 727 раз в 261 сообщениях
danko имеет захватывающую ауруdanko имеет захватывающую ауру
По умолчанию

Цитата:
Сообщение от volc
К примеру 16x84

к примеру да.. А для чего тебе это?? Кусок выложен исключительно чтобы показать алгоритм... А под какой пик собсно насрать
danko вне форума   Ответить с цитированием
Старый 17.06.2007, 08:19   #8
Ahalam
начинающий фрикер
 
Аватар для Ahalam
 
Регистрация: 16.04.2007
Сообщений: 579
Поблагодарил: 15
Поблагодарили 37 раз в 27 сообщениях
Ahalam стоит на развилке
По умолчанию

блин пацыки, помогите разобраться. пинки ваши проехал вдоль и поперек.(за что спасибо огромное админам и модерам) с алгоритмом разобрался.не идет прием и все. сегодня переписал прогу ту что на асме чтоб в случае сбоя и возврата на начало приема выдавала на порт со светодиодами значение калибровочного счетчика, так она там такое выдает ой-ей-ей. никто с такой проблемой не сталкивался? может вход контроллера сильно чувствительный и изза этого искажается сигнал? я когда по мобиле базарю то если мобилу см. на 20-30 к монтажной плате подношу глючит его не по детски. может знает кто как можно проверить изза чего гонит калибр. счетчик и как можно чувствительность порта уменьшить.?!!!!!!!!!!!
пи....дец х\з сколько разбирался с этим асмом зае.....ным а в оконцовке марганцовка.

вот накидал прожку мелкую - все что видит на входе с приемника - выдает на выход
Вложения
Тип файла: txt shnjaga2.txt (179 байт, 51 просмотров)
Ahalam вне форума   Ответить с цитированием
Старый 17.06.2007, 09:50   #9
oleg
продвинутый фрикер
 
Аватар для oleg
 
Регистрация: 22.01.2007
Сообщений: 2,080
Поблагодарил: 191
Поблагодарили 2,194 раз в 427 сообщениях
oleg скоро станет знаменитым(-ой)
По умолчанию

Мне кажется, у тебя ошибка в маленькой программке. Предпоследняя строчка GOTO OUT1A должна быть GOTO OUT1. Если на ноге лог 1, то ты крутишься в мертвом цикле и контроллер, не чего не выдает на порт вывода и так до прихода лог 0 .

oleg добавил 17.06.2007 в 09:12
Наверно это я ошибся, ты же ногу вздернул на лог 1 BSF TX_PIN и дальше находишься в ожидании лог 0, чем страшен ассемблер это можно запутаться, в самом простом и не понимать где ошибка.

Последний раз редактировалось oleg; 17.06.2007 в 10:12. Причина: Добавлено сообщение
oleg вне форума   Ответить с цитированием
Старый 17.06.2007, 15:25   #10
Ahalam
начинающий фрикер
 
Аватар для Ahalam
 
Регистрация: 16.04.2007
Сообщений: 579
Поблагодарил: 15
Поблагодарили 37 раз в 27 сообщениях
Ahalam стоит на развилке
По умолчанию

oleg добавил 17.06.2007 в 09:12
Наверно это я ошибся, ты же ногу вздернул на лог 1 BSF TX_PIN и дальше находишься в ожидании лог 0, чем страшен ассемблер это можно запутаться, в самом простом и не понимать где ошибка.[/QUOTE]
дааааа..... и это еще не таймеры, не прерывания, не ацп..., не шим..., не ..., ...,

Ahalam добавил 17.06.2007 в 14:31
Цитата:
Сообщение от BEGE Посмотреть сообщение
Пьните пожалуйста в нужное направление,не сохраняеться посылка в еепром.Вроде бы делаю по исходнику который приведен во вложений.В еепроме пусто нету 8 байт.Может что-то делаю неправильно.Проверяю на 90s2313 и ни хрена.Просто хочу разобраться с приемом.Если есть у кого-нибудь исходник на с для приема пакета,подкиньте пожалуйста.

здарова дяпан, а ты интересно, компилил это дело в том виде в котором оно сейчяс здеся лежит? или че-то подправлял?

Последний раз редактировалось Ahalam; 17.06.2007 в 15:31. Причина: Добавлено сообщение
Ahalam вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KeeLoq и StarLine, с чего я начинал прием пакета freak Охранные системы 40 13.08.2010 22:26
KeeLoq и StarLine, с чего я начинал прием пакета oleg Программирование микроконтроллеров 8 13.04.2010 10:19
Прием с помехой dimky Программирование микроконтроллеров 26 04.05.2009 20:56
Анализатор пакета test Охранные системы 43 26.05.2008 06:14


Текущее время: 22:18. Часовой пояс GMT +4.


Перевод: zCarot