May 11, 2023 Brute Force Techniques I
This is a description Code
#include <LPC17xx.h>
#include "lcd.h"
void scan(void);
unsigned char Msg1[14] = "ALS BENGALURU";
unsigned char Msg2[13] = "KEY PRESSED=";
unsigned char col, row, var, flag, key, *ptr;
unsigned long int i, var1, temp, temp3;
unsigned char SCAN_CODE[16] = {
0x1E, 0x1D, 0x1B, 0x17,
0x2E, 0x2D, 0x2B, 0x27,
0x4E, 0x4D, 0x4B, 0x47,
0x8E, 0x8D, 0x8B, 0x87,
};
unsigned char ASCII_CODE[16] = {
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'A', 'B',
'C', 'D', 'E', 'F',
};
int main(void)
{
LPC_PINCON->PINSEL3 = 0x00000000; // P1.20 to P1.23 MADE GPIO
LPC_PINCON->PINSEL0 = 0x00000000; // P0.15 as GPIO
LPC_PINCON->PINSEL1 = 0x00000000; // P0.16 t0 P0.18 made GPIO
LPC_GPIO0->FIODIR &= ~0x00078000; // made INput P0.15 to P0.18 (cols)
LPC_GPIO1->FIODIR |= 0x00F00000; // made output P1.20 to P1.23 (rows)
LPC_GPIO1->FIOSET = 0x00F00000;
lcd_init();
temp1 = 0x80; // point to first line of LCD
lcd_com();
delay_lcd(800);
lcd_puts(&Msg1[0]); // display the messsage
temp1 = 0xC0; // point to first line of LCD
lcd_com();
delay_lcd(800);
lcd_puts(&Msg2[0]); // display the messsage
while (1)
{
while (1)
{
for (row = 1; row < 5; row++)
{
if (row == 1)
var1 = 0x00100000;
else if (row == 2)
var1 = 0x00200000;
else if (row == 3)
var1 = 0x00400000;
else if (row == 4)
var1 = 0x00800000;
temp = var1;
LPC_GPIO1->FIOSET = 0x00F00000;
LPC_GPIO1->FIOCLR = var1;
flag = 0;
scan();
if (flag == 1)
break;
} // end for(row=1;row<5;row++)
if (flag == 1)
break;
} // 2nd while(1)
for (i = 0; i < 16; i++)
{
if (key == SCAN_CODE[i])
{
key = ASCII_CODE[i];
break;
} // end if(key == SCAN_CODE[i])
} // end for(i=0;i<16;i++)
temp1 = 0xCC;
lcd_com();
delay_lcd(800);
lcd_puts(&key);
} // end while 1
} // end main
void scan(void)
{
unsigned long temp3;
temp3 = LPC_GPIO0->FIOPIN;
temp3 &= 0x00078000;
if (temp3 != 0x00078000)
{
for (i = 0; i < 500; i++)
;
temp3 = LPC_GPIO0->FIOPIN;
temp3 &= 0x00078000;
if (temp3 != 0x00078000)
{
flag = 1;
temp3 >>= 15; // Shifted to come at LN of byte
temp >>= 16; // shifted to come at HN of byte
key = temp3 | temp;
} // 2nd if(temp3 != 0x00000000)
} // 1st if(temp3 != 0x00000000)
} // end scan