Challenge & Response


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default Re: Challenge & Response

    I've have this so far, but it's not right yet.
    Gives same incorrect answer with different seeds.
    Any obvious gaffes?

    PIC18F2680

    Code:
    'Long Variables for signed Key Calculation
    
    int VAR LONG
    key VAR LONG
    seed VAR LONG
    top_j VAR LONG
    top_k VAR LONG
    top_l  VAR LONG
    
    F3_i VAR LONG
    F3_j VAR LONG
    F3_k VAR LONG
    F3_m VAR LONG
    F3_n VAR LONG
    F3_i1 VAR LONG
    
    F2_i VAR LONG
    F2_j VAR LONG
    F2_k VAR LONG
    F2_m VAR LONG
    F2_n VAR LONG
    F2_i1 VAR LONG
    
    
    '*******************************************************************************
    
    Start:
    
    Seed.Byte0 = $6B
    Seed.Byte1 = $E3
    Seed.byte2 = $C5
    
    'Answer should be $82 $CB $6B
    
    lcdout hex2 Seed.byte2," $",hex2 Seed.byte1," $",hex2 seed.byte0
    
    gosub CalcKey          
    
    lcdout hex2 key.byte2," $",hex2 key.byte1," $",hex2 key.byte0
    
    'Try Again
    
    Seed.Byte0 = $6B
    Seed.Byte1 = $71
    Seed.byte2 = $79
    
    'Answer should be $04 $35 $6B
    
    lcdout hex2 Seed.byte2," $",hex2 Seed.byte1," $",hex2 seed.byte0
    
    gosub CalcKey          
    
    lcdout hex2 key.byte2," $",hex2 key.byte1," $",hex2 key.byte0
    
    Stop
    
    
    '*******************************************************************************
    
    
    CalcKey:
    
    top_j = seed >> $10
    top_j = top_j & $ff
    top_k = seed >> 8
    top_k = top_k & $ff
    top_l = seed & $ff
    
    F3_i = top_j << 8
    F3_i = F3_i | top_k
    
    SELECT CASE top_l
        
                    case 1 
                        F3_j = 20483;
                        F3_k = 37495;
                        F3_m = 19380;
                        F3_n = 2;
                        F3_i1 = -1;
                        
                    case 2 
                        F3_j = 48737;
                        F3_k = 29064;
                        F3_m = 0;
                        F3_n = -2;
                        F3_i1 = 1;
                         
                    case 3 
                        F3_j = 38851;
                        F3_k = 17007;
                        F3_m = 57213;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 4 
                        F3_j = 38191;
                        F3_k = 42963;
                        F3_m = 45416;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 5 
                        F3_j = 31893;
                        F3_k = 60216;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -2;
                         
                    case 6 
                        F3_j = 26458;
                        F3_k = 15181;
                        F3_m = 11362;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 7 
                        F3_j = 10773;
                        F3_k = 36766;
                        F3_m = 28592;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 8 
                        F3_j = 13376;
                        F3_k = 4967;
                        F3_m = 62941;
                        F3_n = 2;
                        F3_i1 = -3;
                         
                    case 9 
                        F3_j = 2197;
                        F3_k = 24862;
                        F3_m = 65475;
                        F3_n = -2;
                        F3_i1 = 3;
                         
                    case 10 
                        F3_j = 31199;
                        F3_k = 59852;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 11 
                        F3_j = 45383;
                        F3_k = 9690;
                        F3_m = 0;
                        F3_n = 3;
                        F3_i1 = -2;
                         
                    case 12 
                        F3_j = 34146;
                        F3_k = 59163;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 2;
                         
                    case 13 
                        F3_j = 62765;
                        F3_k = 33340;
                        F3_m = 5749;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 14 
                        F3_j = 45458;
                        F3_k = 44092;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 3;
                         
                    case 15 
                        F3_j = 37357;
                        F3_k = 39321;
                        F3_m = 0;
                        F3_n = -2;
                        F3_i1 = 1;
                         
                    case 16 
                        F3_j = 8713;
                        F3_k = 454;
                        F3_m = 23575;
                        F3_n = 1;
                        F3_i1 = -2;
                         
                    case 17 
                        F3_j = 9988;
                        F3_k = 56677;
                        F3_m = 29637;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 18 
                        F3_j = 57758;
                        F3_k = 34088;
                        F3_m = 11152;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 19 
                        F3_j = 33800;
                        F3_k = 14769;
                        F3_m = 0;
                        F3_n = -2;
                        F3_i1 = 1;
                         
                    case 20 
                        F3_j = 4069;
                        F3_k = 4013;
                        F3_m = 24616;
                        F3_n = -1;
                        F3_i1 = 2;
                         
                    case 21 
                        F3_j = 17056;
                        F3_k = 12969;
                        F3_m = 11927;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 22 
                        F3_j = 31370;
                        F3_k = 60592;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 3;
                         
                    case 23 
                        F3_j = 24184;
                        F3_k = 58486;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 3;
                         
                    case 24 
                        F3_j = 56838;
                        F3_k = 5012;
                        F3_m = 35563;
                        F3_n = 2;
                        F3_i1 = -3;
                         
                    case 25 
                        F3_j = 49473;
                        F3_k = 5452;
                        F3_m = 33161;
                        F3_n = 3;
                        F3_i1 = -2;
                         
                    case 26 
                        F3_j = 64459;
                        F3_k = 44104;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 27 
                        F3_j = 6123;
                        F3_k = 30247;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 3;
                         
                    case 28 
                        F3_j = 62885;
                        F3_k = 57915;
                        F3_m = 28211;
                        F3_n = -2;
                        F3_i1 = 3;
                         
                    case 29 
                        F3_j = 56790;
                        F3_k = 34537;
                        F3_m = 0;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 30 
                        F3_j = 34655;
                        F3_k = 4726;
                        F3_m = 0;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 31 
                        F3_j = 45667;
                        F3_k = 2227;
                        F3_m = 0;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 32 
                        F3_j = 64118;
                        F3_k = 22124;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 33 
                        F3_j = 20483;
                        F3_k = 37495;
                        F3_m = 19380;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 34 
                        F3_j = 18934;
                        F3_k = 33007;
                        F3_m = 45671;
                        F3_n = -1;
                        F3_i1 = 2;
                         
                    case 35 
                        F3_j = 53898;
                        F3_k = 43937;
                        F3_m = 8992;
                        F3_n = 3;
                        F3_i1 = -2;
                         
                    case 36 
                        F3_j = 26472;
                        F3_k = 30849;
                        F3_m = 15462;
                        F3_n = -2;
                        F3_i1 = 3;
                         
                    case 37 
                        F3_j = 18864;
                        F3_k = 16973;
                        F3_m = 0;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 38 
                        F3_j = 10153;
                        F3_k = 24758;
                        F3_m = 0;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 39 
                        F3_j = 28031;
                        F3_k = 31768;
                        F3_m = 65233;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 40 
                        F3_j = 9577;
                        F3_k = 32816;
                        F3_m = 0;
                        F3_n = -3;
                        F3_i1 = 3;
                         
                    case 41 
                        F3_j = 33294;
                        F3_k = 41833;
                        F3_m = 63823;
                        F3_n = 2;
                        F3_i1 = -2;
                         
                    case 42 
                        F3_j = 46258;
                        F3_k = 33763;
                        F3_m = 47869;
                        F3_n = 2;
                        F3_i1 = -2;
                         
                    case 43 
                        F3_j = 303;
                        F3_k = 15452;
                        F3_m = 49261;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 44 
                        F3_j = 14480;
                        F3_k = 52729;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -2;
                         
                    case 45 
                        F3_j = 26181;
                        F3_k = 30558;
                        F3_m = 11669;
                        F3_n = -1;
                        F3_i1 = 1;
                         
                    case 46 
                        F3_j = 57729;
                        F3_k = 31412;
                        F3_m = 0;
                        F3_n = 3;
                        F3_i1 = -3;
                         
                    case 47 
                        F3_j = 38273;
                        F3_k = 42785;
                        F3_m = 57170;
                        F3_n = 2;
                        F3_i1 = -3;
                         
                    case 48 
                        F3_j = 65304;
                        F3_k = 24702;
                        F3_m = 12077;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 49 
                        F3_j = 25997;
                        F3_k = 16247;
                        F3_m = 11573;
                        F3_n = -2;
                        F3_i1 = 3;
                         
                    case 50 
                        F3_j = 47122;
                        F3_k = 17812;
                        F3_m = 0;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 51 
                        F3_j = 62790;
                        F3_k = 184;
                        F3_m = 43056;
                        F3_n = -2;
                        F3_i1 = 1;
                         
                    case 52 
                        F3_j = 27811;
                        F3_k = 36172;
                        F3_m = 10312;
                        F3_n = -1;
                        F3_i1 = 2;
                         
                    case 53 
                        F3_j = 33495;
                        F3_k = 4706;
                        F3_m = 23772;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 54 
                        F3_j = 11806;
                        F3_k = 6016;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 55 
                        F3_j = 23022;
                        F3_k = 61027;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 56 
                        F3_j = 14502;
                        F3_k = 52925;
                        F3_m = 45502;
                        F3_n = -3;
                        F3_i1 = 2;
                         
                    case 57 
                        F3_j = 19654;
                        F3_k = 47349;
                        F3_m = 29195;
                        F3_n = 3;
                        F3_i1 = -2;
                         
                    case 58 
                        F3_j = 4043;
                        F3_k = 49055;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -2;
                         
                    case 59 
                        F3_j = 238;
                        F3_k = 61025;
                        F3_m = 46052;
                        F3_n = -2;
                        F3_i1 = 3;
                         
                    case 60 
                        F3_j = 26525;
                        F3_k = 16314;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 61 
                        F3_j = 27577;
                        F3_k = 18161;
                        F3_m = 3841;
                        F3_n = -3;
                        F3_i1 = 1;
                         
                    case 62 
                        F3_j = 11820;
                        F3_k = 48834;
                        F3_m = 24936;
                        F3_n = -3;
                        F3_i1 = 2;
                         
                    case 63 
                        F3_j = 926;
                        F3_k = 34536;
                        F3_m = 62639;
                        F3_n = -1;
                        F3_i1 = 1;
                         
                    case 64 
                        F3_j = 34242;
                        F3_k = 21476;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -3;
                         
                    case 97 
                        F3_j = 11937;
                        F3_k = 0;
                        F3_m = 54278;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 98 
                        F3_j = 11129;
                        F3_k = 0;
                        F3_m = 41060;
                        F3_n = 1;
                        F3_i1 = -3;
                         
                    case 99 
                        F3_j = 16232;
                        F3_k = 0;
                        F3_m = 37025;
                        F3_n = 3;
                        F3_i1 = -2;
                         
                    case 100 
                        F3_j = 62287;
                        F3_k = 21359;
                        F3_m = 0;
                        F3_n = -1;
                        F3_i1 = 1;
                         
                    case 101 
                        F3_j = 19345;
                        F3_k = 63583;
                        F3_m = 20313;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 102 
                        F3_j = 50636;
                        F3_k = 34432;
                        F3_m = 58878;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 103 
                        F3_j = 8636;
                        F3_k = 42038;
                        F3_m = 0;
                        F3_n = 3;
                        F3_i1 = -1;
                         
                    case 104 
                        F3_j = 49296;
                        F3_k = 0;
                        F3_m = 23727;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 105 
                        F3_j = 62603;
                        F3_k = 0;
                        F3_m = 7632;
                        F3_n = 2;
                        F3_i1 = -1;
                         
                    case 106 
                        F3_j = 54947;
                        F3_k = 13952;
                        F3_m = 0;
                        F3_n = -3;
                        F3_i1 = 2;
                         
                    case 107 
                        F3_j = 46336;
                        F3_k = 0;
                        F3_m = 32973;
                        F3_n = -1;
                        F3_i1 = 3;
                         
                    case 108 
                        F3_j = 31276;
                        F3_k = 0;
                        F3_m = 41988;
                        F3_n = -2;
                        F3_i1 = 2;
                         
                    case 109 
                        F3_j = 24959;
                        F3_k = 31354;
                        F3_m = 55064;
                        F3_n = 1;
                        F3_i1 = -1;
                         
                    case 110 
                        F3_j = 39963;
                        F3_k = 29660;
                        F3_m = 0;
                        F3_n = 2;
                        F3_i1 = -3;
                         
                    case 111 
                        F3_j = 16360;
                        F3_k = 6010;
                        F3_m = 0;
                        F3_n = 1;
                        F3_i1 = -2;
                         
                    case 112 
                        F3_j = 50050;
                        F3_k = 36355;
                        F3_m = 34628;
                        F3_n = 3;
                        F3_i1 = -3;
                        
                    end select         
        
        
    
    F2_i = F3_i + F3_j 
    F2_i = F2_i & $FFFF
    
    IF (F3_n > 0) then
        F2_j = $FFFF & (F3_i << F3_n | F3_i >> 16 - F3_n)
    ELSE
        F2_j = $FFFF & (F3_i >> -F3_n | F3_i << 16 + F3_n)
        
    endif    
    
    F2_k = F3_i + F3_k 
    F2_k = F2_k & $FFFF
    
    IF (F3_i1 > 0) then
        F2_m = $FFFF & (F2_k << F3_i1 | F2_k >> 16 - F3_i1);
    ELSE
        F2_m = $FFFF & (F2_k >> -F3_i1 | F2_k << 16 + F3_i1);
        
    endif    
    
    F2_n = F2_j * F2_m
    
    F2_i1 = F2_n + F3_m
    
    key = F2_i1 & $FFFF
    
    key = key << 8
    key = key + top_l  
    
    return
    Last edited by retepsnikrep; - 29th December 2020 at 13:25.

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,698


    Did you find this post helpful? Yes | No

    Default Re: Challenge & Response

    not sure that pbp correctly left or right shifts negative numbers , see henriks treatise on the bme280 for correct method to deal with signed ints

    http://www.picbasic.co.uk/forum/showthread.php?t=24134


    ps , i did notice that some cases may lead to doing a left or right shift of a negative number of bits, eg [var << -3 ] i'm not sure how gcc would resolve that
    Last edited by richard; - 30th December 2020 at 00:27.
    Warning I'm not a teacher

  3. #3


    Did you find this post helpful? Yes | No

    Default Re: Challenge & Response

    I agree that does look like a problem, thanks for the heads up.

  4. #4


    Did you find this post helpful? Yes | No

    Default Re: Challenge & Response

    I think I have this cracked now thanks to generous help on this and other forums.

    In the end I did not need the large lookup table as it was always using the same table entry.

    So my code ended up being tiny and did not require LONGS etc. .

    Code:
    W0 VAR WORD
    W1 VAR WORD
    W2 VAR WORD
    
    SEED1 VAR BYTE 
    SEED2 VAR BYTE 
    SEED3 VAR BYTE  
    
    'KEY1 = 46336;
    'KEY3 = 32973;
    'SHIFT1 = 1;   (-1)
    'SHIFT2 = 3;       
        
    ' Calculates and stores the results of two cryptographic operations 
    ' on the first two seed bytes in W1 and W2
    ' 
    ' The operation being carried out consists of adding two 16-bit values
    ' and performing a bitwise rotation on the result.
    ' 
    ' The two results are calculated from adding the 2 seed bytes to both
    ' KEY1 and KEY2, with a rotation of SHIFT1 and SHIFT2 respectively. 
    
    SEED1 = $C7
    SEED2 = $B0
    SEED3 = $6B      
    
    'Answer should be $82 $CB $6B
    
    
    W1.BYTE0 = SEED2
    W1.BYTE1 = SEED1
    
    W0 = W1 + 46336 'Key1            
    
    ' Does a cyclic bitwise rotation of B0-bits on W0
    
    W0 = (W0 >> 1 | W0 << ($10 - 1))   'Note this is a negative shift
    
    W2 = W0
    W0 = W1     
    
    ' Does a cyclic bitwise rotation of B0-bits on W0
    
    W0 = (W0 << 3 | W0 >> ($10 - 3))   'Note this is a positive shift
    
    W1 = W0
    
    ' Multiplies the contents of W1 and W2 and adds KEY3, stores in W0
    ' Impicitly calculates 16-bit overflow only
    
    W0 = W1 * W2
    W0 = W0 + 32973   'KEY3      
    
    SEED1 = W0.BYTE1
    SEED2 = W0.BYTE0

  5. #5


    Did you find this post helpful? Yes | No

    Default Re: Challenge & Response

    Are there any optimisations I have missed in the final code in my prev post?

Similar Threads

  1. A new challenge (I'm in trouble again)
    By Davidmarks in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 19th February 2012, 15:08
  2. 3 phase supply detector challenge
    By BobEdge in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 15th May 2009, 08:54
  3. Replies: 20
    Last Post: - 13th May 2007, 06:10
  4. Problem with UART... here is a real challenge
    By matias in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 5th May 2007, 09:30
  5. No Modem response
    By jimboho in forum mel PIC BASIC Pro
    Replies: 16
    Last Post: - 11th November 2004, 06:58

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts