yaobinwen / robin_on_rails

Robin on Rails: my notes about technology and some other knowledge.
1 stars 0 forks source link

Personal project ideas #162

Open yaobinwen opened 1 year ago

yaobinwen commented 1 year ago

Description

This issue records the personal project ideas. It also prioritizes them according to my current interests.

yaobinwen commented 1 year ago

Build my own IR (infrared) sensor

yaobinwen commented 1 year ago

Knowledge web, note and time tracker

  1. Allow me to record my knowledge web.
  2. Allow me to apply time usage on each item. Then I can see the time usage from two perspectives: Date-based (i.e., see how I use my daily time) vs task-based (i.e., see how one task expands across dates).
yaobinwen commented 1 year ago

Async Programming Bird's-eye View

A tutorial of overview of async programming (along with concurrency and parallel).

yaobinwen commented 1 year ago

Fluentd Demo

Demonstrate how to configure and use Fluentd.

yaobinwen commented 1 year ago

Introduction to Computer Programming

(A book that teaches non-programmers about what computer programming is.)

What is computer programming? I'm going to offer a short explanation below but it may not make much sense to you yet. Don't worry. Keep reading and I'll explain with more details.

Computer programming is about learning the available capabilities of the computer, analyzing the problem to be solved, figuring out the solution that consists of actions that are not beyond the computer's capabilities, and describing the solution in a language that the computer can understand.

I will use an everyday scenario to explain it.

Imagine that you are inviting a couple of friends to have dinner at your home. You meal plan is dumplings from a local Chinese restaurant (let's call it Mr. Wonton) followed by a certain desert. Because you have other things to prepare for your friends' visit, you plan to ask your daughter, Emily, to go pick up the dumplings and buy desert in Walmart.

So you say to your daughter:

"Emily, I ordered some dumplings from Mr. Wonton. Go get the car key on the kitchen table. Drive to the restaurant and get the food. On the way back, stop by Walmart to buy some desert. Then come back.

Here:

yaobinwen commented 1 year ago

Consul Cluster Demo

Demonstrate how to deploy a Consul cluster

yaobinwen commented 1 year ago

Logical Fallacies and Real Life Examples

This can be an independent repository, using the following references:

yaobinwen commented 1 year ago

VS Code extension

Implement an extension that can help me insert date/time in changelog for a Debian package. Refer to this page.

yaobinwen commented 1 year ago

Build my own OS from scratch (and possibly using VirtualBox)

References:

yaobinwen commented 1 year ago

Graphviz documentation

This idea comes from this comment of this question:

If someone decides to write a good documentation for graphviz and sell it — he'll become a billionaire in a month.

yaobinwen commented 1 year ago

11 Cybersecurity Projects to Grow Your Skills & Portfolio

Reference: 11 Cybersecurity Projects to Grow Your Skills & Portfolio

1. Easy

1.1 Packet Sniffer

Packet sniffers monitor network traffic for suspicious activity. They also capture and analyze data packets that flow between devices within the same network, and monitor packets that are exchanged between networked devices and the internet.

Building a packet sniffer is an opportunity to practice networking and programming skills. You can create a simple packet sniffer in Python with a socket module. After configuring your socket module to capture packets from the network, you’ll write Python scripts to extract those captured packets.

1.2 Keylogging

Keyloggers track each keyboard stroke on a device. While hackers use keyloggers to steal sensitive information, cybersecurity professionals use these applications to surveil user behavior and detect unusual activity.

To build a keylogger software, download and install Python’s pynput library. With this library, you’ll be able to monitor keyboard and mouse inputs. You’ll also be able to deliver log keystrokes to a specific location—like an email, server, or local system storage. For a slightly more challenging project, try building a keylogger for a virtual keyboard.

1.3 Lost Data Retrieval

Data recovery skills are vital to cyber incident response, as malware can corrupt, destroy, or manipulate data. Ransomware attacks encrypt a victim’s data and demand payment for decrypting the files.

Outline a ransomware data recovery procedure to practice data retrieval skills. Focus on restoring the affected systems from a backup. Next, build a plan for using data recovery tools to extract corrupted or deleted data from storage devices.

1.4 Tool Comparison Technical Guide

Publishing a tool comparison guide will help you solidify your knowledge of cybersecurity tools. Be sure to cover various categories of cybersecurity tools, including:

Explain the function of each type of tool and provide examples of common use cases. Compare popular open-source and paid tools, and discuss the pros and cons of each.

1.5 In-Depth Guide to Recent Cybersecurity Attacks

Recent cyberattacks have shut down fuel pipelines, compromised water treatment plants, and extracted ransoms of $50 million. Try analyzing one of these high-profile cyberattacks in a case study.

First, contextualize the event. Explain the security posture of the target at the time of the incident, and pinpoint which vulnerabilities the attackers exploited. Dissect how the attack was executed and outline the target’s response. Review the impact of the attack and reflect on actions that could have reduced risk, minimized damages, or prevented the incident. Summarize lessons learned from the cyberattack.

2 Intermediate Cybersecurity Projects

2.1 SQL Injection

SQL injections are attack vectors that use malicious SQL code to manipulate back-end databases. Hackers use SQL injections to access private information and commandeer administrative rights to a database.

To practice SQL injection vulnerability remediation, set up a virtual machine by signing up for a free-tier Amazon Web Services account. Then practice executing SQL injection using

an authorized educational website. Once you uncover the website’s vulnerabilities, figure out how to fix them by editing the PHP files on your virtual machine. Write up an SQL vulnerability assessment with security recommendations to summarize your findings.

2.2 RFID Blocking

Credit cards, debit cards, and passports have scannable radio frequency identification (RFID) tags that enable contactless payment. In a skimming attack, unauthorized actors scan RFID tags to illegally access credit card details and other private information.

Try creating software that blocks RFID readers, or build an application that alerts users to unauthorized RFID scanning.

2.3 Security Assessment Report on an Existing Website

This project resembles a routine audit conducted by a security team. Before you begin, be sure to obtain permission to analyze an existing website. Or, consider using your own website.

First, collect and analyze data to identify vulnerabilities. Document the scope of each security issue and how you assessed it. Prioritize each risk according to severity. Include an executive summary accessible to non-technical readers. Strive for brevity.

3. Advanced Cybersecurity Projects

3.1 Build Your Own Encryption Software

Encryption is a cybersecurity technique that scrambles and encodes private data. Authorized users can decrypt data using an encryption key. Working with text encryption—which uses cryptographic algorithms to convert text data into a cipher or hash code—will help you analyze the structure of commonly used encryption algorithms like Caesar Cipher, Beaufort Cipher, and Autokey Cipher.

Try building your own text encryption software, or create an app to encrypt files using existing algorithms. Use the Amazon Web Services Encryption Software Development Kit to implement encryption in an application. Once you’re comfortable with text encryption, try your hand at image encryption.

3.2 Create a Cybersecurity Policy from Scratch

Cybersecurity policies document technical and behavioral recommendations. This is done to codify cybersecurity practices and guide an organization’s cybersecurity posture.

To create a cybersecurity policy from scratch, identify and prioritize the organization’s assets and risks. Outline the protocols and procedures that will safeguard these assets, and explain how security vulnerabilities will be neutralized. Create an incident response plan and assess relevant cybersecurity regulations to build a compliant policy.

3.3 Hack an Android Device

Organizations hire ethical hackers to uncover vulnerabilities in a system or application. Hone your ethical hacking skills and advance your knowledge of application security with Android, the world’s most popular operating system.

This project will teach you the basics of Android penetration testing and help you learn to locate vulnerabilities in Android applications. Because Android is a Linux-based operating system, you’ll get the chance to build experience with Kali Linux, an advanced penetration testing Linux distribution used for ethical hacking.

yaobinwen commented 1 year ago

Assemble my own mini- and portable computer

I'm not sure if this is really useful or convenient, but I should at least look into it:

yaobinwen commented 1 year ago

Log display tool

When logs are separated in multiple files (possibly because each component generates their own log files), it may take a lot of time to analyze the log files in order to figure out the big picture of what has happened. One challenge is to arrange all the log messages on the same time line to see the sequence of the events. Observability might be the concept that tries to solve this problem.

I'm thinking of this:

Time Component 1 Component 2
T1 Message 1 (N/A)
T2 Message 2 (N/A)
T3 Message 3 Message 1
T4 Message 4 Message 2