---
# System prepended metadata

title: 2021 RPi Interview Project
tags: [NTURT, electrical_system, tutorial]

---

# 2021 RPi Interview Project
###### tags: `tutorial` `electrical_system` `NTURT`
### Introduction

In order to know that whether you are familiar with linux command after the summer course we provide, we design a small project for you all. There are 8 tasks in the project. After you pass each task, you will get a key corresppndong to the task. When you get all keys, you have to send these keys from RPi to a stm32 board through CAN Bus, after that, you will receive 8 keys from the stm32. If your key obtains from each task is right, then you will receive a valid key. Otherwise, you will get 0 in the corresponding position.

#### example

If the right key is [1, 2, 3, 4, 5, 6, 7, 8], and you send [1, 2, 3, 4, 5, 6, 7, 8] to the stm32, then you will get a message

```
Timestamp: 1630248135.853531	ID: 0091	S	   DLC:  8	e9 17 29 b6 59 86 dc 5d	Channel: can0
```

> notice that this is just a sample output, and you can see that the data of the message is [e9, 17, 29, b6, 59, 86, 5d]

On the other hand, if you send [1, 0, 0, 0, 0, 0, 0, 8] to the stm32, you will get

```
Timestamp: 1630248135.853531	ID: 0091	S	   DLC:  8	e9 00 00 00 00 00 00 5d	Channel: can0
```

> you can see that if the key is wrong, you'll get 00 in the corresponding poition



### How to connect to the RPi

1. open your terminal

2. type

   ```shell
   ssh username@140.112.250.102 -p 80
   ```

   and your password: **raspberry**

   > note that username is **your** username, don't type "username" to log in

3. type

   ```shell
   cp -r /home/template/* .
   ls
   ```

   and you should see the output be

   ```shell
   1  2  3  4  5  6  7  8  CAN_send_receive.py  init.sh
   ```

4. type

   ```bash
   bash init.sh
   ```

5. everything is done



### Task Introduction

1. the number is the filename

2. the number is in a file


3. the number is a hidden file's filename


4. given a git repo, the number can be found in another branch


5. given a git repo, the number can be found in previous commit

6. execute a file, the output will be printed after a day. To run the program,  type

   ```shell
   ./key
   ```

   in the directory.

   > hint: If you are disconnected to the RPi, the program you are running will be killed.


7. the key is in a figure

   > hint: Since it's nearly impossible to view a figure from command line, you might have to get a copy of the figure to your computer. How? try to google it!

8. bitwise operation

   > The key to the task is encrypted by some bitwise operations, the operations are specified in the README file, try to decrypt it by doing inverse bitwise operation.



### How to send the keys to the stm32

There is a python file named **CAN_send_receive.py** in your directory, fill your keys in the proper position, and execute the file

```shell
python3 CAN_send_receive.py
```

and you should get a message from the stm32, note that you don't have to do anything with the stm32.

  