chevron_left chevron_right
Login Register invert_colors photo_library


Stay updated and chat with others! - Join the Discord!
Thread Rating:
  • 0 Vote(s) - 0 Average


[CONTEST] ARM Project filter_list
Author
Message
[CONTEST] ARM Project #1
So, in an attempt to get people a little more enthused about ARM after writing
Introduction to ARM
  1. How it Works
  2. Writing Basic Programs
  3. Pseudo Coding, Flow Charting, Translating
  4. Writing ARM Optimized Code (not yet released)

I have decided to run a competition with REAL prizes. This will be a basic coding challenge designed to do things you could normally accomplish with relative ease in a language like C or C++, but a project that's complex enough that there will be a lot of variation between submissions.

Judging Criteria
Code:
5pts - Build
    For each warning you will lose 1 point
    If even 1 error, you receive no points, I will attempt to fix them. If I'm unable to, you are disqualified
10pt - Program Completeness
    If your program meets all of the requirements, you will receive full points.
    For each requirement you miss, you will lose 3 points
15pt - Reliability
    I will be running your program multiple times and on a variety of input, some of it will be bad input.
    If your program rejects all bad input, you will receive 5 points
    If it accepts all good input, you will receive 5 points
    You will start with 5 points. I will run your program many times, for each failure (after testing the above), you will lose 1 point.
25pt - Speed / Efficiency
    I will benchmark your code against the best and the worst solution.
    The best will receive 25 points
    The worst will receive 0 points
    The remainder will be proportional between them
15pt - Program and Image Size
    Your program will be graded against the best and the worst solution. This category compares the program binary, source code, and (maximum) memory usage.
    The best will receive 15 points
    The worst will receive 0 points
    This will be graded as 3 5 point subcategories, however the best and worst will be determined by net average
30pt - Entry order
    Being able to write code quickly is important, and you will be rewarded for submitting your entry first. You will receive points based on the formula P=30-(E*8), where E is the number of (total) entries before you.

Rules
Multiple submissions ARE allowed, however after your first entry, you will lose 5 points for each entry
To submit an entry, please fill out this google form
When submitting an entry, be honest. If you lie about your username, or your entry number (I can actually check that, it's just there to give others a general idea) you will be disqualified
After you have submitted an entry, you MUST post in this thread with the date and time (in Pacific Standard Time, GMT-8). This is used to prevent fraudulent submissions
Please be sure to select the prize you would like the most. Second place winner will receive 25 NSP
You may use ONLY ARM assembly. Makefiles are allowed.
Your code must assemble for 32-bit ARM Linux, using the ARMv4T architecture
You may not write Thumb2 code. Pure ARM is required
You may not use any co-processors or the floating point unit
If your code looks like it was generated by a compiler, you will be disqualified. You must write it yourself.
You may not use another member's code.
You may only use the standard Linux system call API
Use of libraries is NOT allowed. You may, however use the following libc functions:
  • gets
  • puts
  • atoi
  • itoa
  • srand
  • rand

The Challenge
Do NOT open this spoiler until you have read and understand both the Rules and Judging Criteria.
Spoiler:
You will be creating a basic encryption program, using RSA. Your program will need to serve both as a key generator and as an encryption/decryption program.
The program will be implementing 32-bit RSA
For help with the key generation algorithm, please look at Wikipedia
Command line arguments will be passed to differentiate between the operating modes:
Code:
First argument:
    g - generate key pair
    e - encrypt
    d - decrypt
Second argument:
    <file> - the file to read or write the key(s) to
Third argument: (only used for encrypt/decrypt)
    <file> - the input file
Fourth argument: (only used for encrypt/decrypt)
    <file> - the output file
Your code should be fault tolerant. Sometimes when computing encryption keys, sometimes the output is not a valid keypair. The most reliable program will test the output of the key generation and regenerate if necessary.
For a C implementation of RSA using system bus width (64-bit), please check out this project on my github
At the completion of this contest, I will post all submissions (including secondary submissions), the users who made the submission, and the scores they received.

This competition begins now, and will end once one of the following conditions are met, and at least two users have enterred:
  • 5 submissions are made
  • The date is past 5/1/2018 PST

Happy coding and good luck to all!
It should be noted, that I welcome submissions from anybody. Even if your program doesn't actually do the task, or isn't complete, you can still earn points. This contest is aimed to get more members involved with assembly, with is easily one of the top 3 most important hacking skills. Feel free to ask questions for me or other members, and feel free to help each other out, just don't share code.

Secondary note: It's impossible to gravedig this thread during the duration of the contest. The forum rules cite grave digging as replying to a thread longer than 90 days old without meaningful input. If you want to reply to this thread, PLEASE do so. I will lock the thread shortly after the contest, and will post all of the submissions as stated.

Reply

RE: [CONTEST] ARM Project #2
Looks good. I'll be at least attempting to compete

Reply

RE: [CONTEST] ARM Project #3
(03-31-2018, 09:58 AM)Hoss Wrote: Looks good. I'll be at least attempting to compete

Even if you don't get it all, please submit something. This challenge isn't all that difficult though, you just have to keep track of your registers (think of it like having 14 global variable ints and that's all your program can use). I'd advise writing out your solution in a higher level lang like C, Rust, or Go without using anything but that language's most basic features (no lists, maps, structs, etc) and then translating it piece by piece. The tricky part comes with ARM not having any sort of modulo instruction. Hint: it does have UDIV, but if you're not careful with it, you will end up using the FPU, which is against the rules.

[+] 1 user Likes phyrrus9's post
Reply

RE: [CONTEST] ARM Project #4
I'm interested.
You might need to change the settings on that Google Form though, because right now it wants me to sign into a Google account, and I don't have one.


(11-02-2018, 02:51 AM)Skullmeat Wrote: Ok, there no real practical reason for doing this, but that's never stopped me.

Reply

RE: [CONTEST] ARM Project #5
(03-31-2018, 08:49 PM)Ender Wrote: I'm interested.
You might need to change the settings on that Google Form though, because right now it wants me to sign into a Google account, and I don't have one.

I have it set so you don't, so idk what's up with that..... Just make a random one and use that. I don't actually record that info so idgaf what email it comes from. Just need the info in the form to be right

Reply






Users browsing this thread: 1 Guest(s)