Coding / Programming projects you've made
Ichinin
Veteran
Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.
Show and tell!
Any particular programming projects you've made that you like, post it here and tell us a bit about it and why you like it.
I'll go first:
* Back in 1998, i wrote a security scanner. I tried the commercial scanner and i thought that it sucked. I wrote my own that checked patch availability and populated a treeview of different categories of vulnerabilities and could print out a report with what patches and settings to apply (patching wasn't automatic back then).
* In 2004 i wrote Procwall, a "process firewall" that complemented other security software. It checked for new processes, paused them, checked a digital signature and if the base process module (the executable) matched the signature, the program was allowed to run. It had auto learning feature that profiled the system automatically for the user and a game mode that killed any new processes that started while it was running so games wouldn't be subjected to clientside lag. There are similar programs out there, but mine is the most user friendly. Functionality like it now exists in Windows, in fact Microsoft has added it twice, probably because they forgot that they added it in the first place
* In 2006 while i was working as a teacher, i showed decompilers to my students and while i was doing that i wrote a tiny program to show that you could subvert or crash the decompiler just to screw with the reverse engineer
* In early 2015 i wrote Gibberish. It's a password generator/manager that use local entropy and one (or more) master passphrases to generate different subsets or groups of passwords. It can easily generate new and STRONG passwords by clicking a button and it was designed to actually be useable by people and have a password/management capability, unlike similar password generators that were horrible (like being on phones etc). It can also generated shorter (weaker) passwords or remove special characters if the website in question cannot use them. It applies dynamic injection of entropy so each password is generated with a different set of rounds in the iterative hashing process (SHA 256), and a localseed that makes each installation of it unique. That causes precalculated hashtables to be useless, the only way to attack it is to use a local keylogger. My father died during the conceptualisation and the project was put on hold for almost a year, but eventually i wrote it and it came out just fine.
Currently i have some new ideas involving games, live network traffic and data visualization, but those will have to wait for a while because i'm going through yet another crap period in my life.
_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)
I once had to write a subprogram in assembly to calculate the yield to maturity of long term bonds. The system we had crashed when zero coupon bonds were first issued and it tried to divide by interest rate. Oops!
More recently I have created webpages (driven by JavaScript) to create round robin pairings on demand, solve the solitaire peg puzzle at Cracker barrel, calculate tax withholdings (last seven years), and calculate the payment and schedule of a loan. Various other questions have interested me over the years that I had webpages to solve.
My most recent was a scoreboard for a trivia game. The one time I played as a part of a team, we didn't know who won until a number of minutes after the 4th round was over. I've also written a couple dozen webpages and scripts to support a specific music notation system.
I'm currently writing a Minecraft style game in C.
If you want to check it out, here's a link: https://www.dropbox.com/sh/k7g088ejyk40 ... 6.zip?dl=0
The controls and everything are explained in the README file. I might release the source code in the future once it becomes more complete.
My Favorites, so far:
A satellite-tracking and communications suite, complete with RSA encryption, VOIP, and user location and identification.
An OCR app that runs concurrent with streaming video, such as from a mobile camera mounted at license-plate level.
A Z80-based call blocker for landline telephones. It includes both "block" and "safe" lists that use wildcard characters. For instance, it can be programmed to block all "714???????" numbers, thus blocking most of Los Angeles from calling me.
_________________
Ichinin
Veteran
Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.
My parents would have loved that during the "microsoft" scammers that called from the middle east. Morons used to call in from satellite connections at any time and wanted to install software on moms Pentium 133 that didn't even have internet(!)
_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)
It is definitely nothing fancy since I am in the middle of teaching myself Python, but I wrote a text version of Cthulhu Dice that can be run in a terminal or using IDLE. It's nothing huge or practical, but I am proud of it. I did it more to learn how to code functions.
If anyone is interested in the code you can PM me. It's a pretty decent boredom breaker when at work. lol
I am thinking about coding a baseball game that is text based. More so I can teach myself how to use Classes and Object Oriented programming.
_________________
Let me tell you about the Proto Culture
If you don't know the culture, here's the whole structure...
I've written a classification tool using k-NN and a self-designed fuzzy (locality-sensitive) hashing scheme. It's four times faster than Spamsum and 40% faster than Nilsimsa hash, although it does not have any security properties whatsoever. Recall and accuracy is very good.
_________________
“He who controls the spice controls the universe.”
Ichinin
Veteran
Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.
Some pretty good projects some of you people have made. Thanks for all of you sharing
Have you written any documents or papers about the fuzzy hash? Would it be possible to get to look at it? (Document or source) I've dabbled with something like that because of a problem i found in Spamsum and i'd like to see if yours solve that problem.
_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)
Have you written any documents or papers about the fuzzy hash? Would it be possible to get to look at it? (Document or source) I've dabbled with something like that because of a problem i found in Spamsum and i'd like to see if yours solve that problem.
I can send you my master's thesis if the grade turns out well. Note that it does not have any security properties, and is just a text classification tool. It used Mersenne primes (since it hashes byte-by-byte, collision risks per byte will always be 1/64, regardless of algorithm) coupled with CRC-64 and a hardcoded lookup table based on the ISO polynomial (any polynomial can be used).
If I'd started it today instead of January, I might have chosen to make it more similar to Nilsimsa hash, though. Spamsum is robust, but it isn't exactly fast.
_________________
“He who controls the spice controls the universe.”
Ichinin
Veteran
Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.
If I'd started it today instead of January, I might have chosen to make it more similar to Nilsimsa hash, though. Spamsum is robust, but it isn't exactly fast.
Would be an interesting read indeed. Can post a link to it here or PM the link if you want anonymity.
_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)
If I'd started it today instead of January, I might have chosen to make it more similar to Nilsimsa hash, though. Spamsum is robust, but it isn't exactly fast.
Would be an interesting read indeed. Can post a link to it here or PM the link if you want anonymity.
Sorry about the delay; I haven't been active here in a while. The thesis will be available soon (the second half deals with Merkle Trees and using these to detect where changes happened).
The trick in the algorithm is to use a rolling hash to find cut points (like in Rabin-Karp and Spamsum, but with a different resynchronization mechanism), then hash everything between these two cut points using a Mersenne Prime based internal hash function. In my case, CRC-64 with a lookup table based on the ISO-3309 polynomial is used (security doesn't matter here) for a rolling hash.
Let c be an input character from the input array and h be the output from the CRC-64. Now set h1 equal to h AND p >> b (where p is a large mersenne prime, and b is the bit size of this Mersenne prime). Now return h1 XOR the inverse of c. This return value ANDed with 63 becomes the index to be used for the RFC 4648 alphabet. It works with base 64, but I'm not sure if it'll work with base 85 or base 91.
_________________
“He who controls the spice controls the universe.”
If I'd started it today instead of January, I might have chosen to make it more similar to Nilsimsa hash, though. Spamsum is robust, but it isn't exactly fast.
Would be an interesting read indeed. Can post a link to it here or PM the link if you want anonymity.
Sorry about the delay; I haven't been active here in a while. The thesis will be available soon (the second half deals with Merkle Trees and using these to detect where changes happened).
The trick in the algorithm is to use a rolling hash to find cut points (like in Rabin-Karp and Spamsum, but with a different resynchronization mechanism), then hash everything between these two cut points using a Mersenne Prime based internal hash function. In my case, CRC-64 with a lookup table based on the ISO-3309 polynomial is used (security doesn't matter here) for a rolling hash.
Let c be an input character from the input array and h be the output from the CRC-64. Now set h1 equal to h AND p >> b (where p is a large mersenne prime, and b is the bit size of this Mersenne prime). Now return h1 XOR the inverse of c. This return value ANDed with 63 becomes the index to be used for the RFC 4648 alphabet. It works with base 64, but I'm not sure if it'll work with base 85 or base 91.
Right now, I'm working on a project to decompile and reverse engineer Pokemon Ruby and Sapphire. http://github.com/pret/pokeruby Since the Nintendo SDK has been leaked, we know which version of GCC was used to compile the game, so we are able to write C code that compiles exactly the same as the original rom. It's very interesting.
klausnrooster
Snowy Owl
Joined: 7 Jan 2012
Age: 61
Gender: Male
Posts: 144
Location: Not my favorite place, I can tell you that.
Nothing as fancy as previous posters. A set of functions for the command line that take input and write or retrieve data from a SQLite database. Originally to practice implementing tagging, the use of db triggers, and wrapping SQLite functionality generally; it became my go-to note-taking app. I've been using it for years as my reliable memory and journal. Implemented in TCL, then Python (2.7 and later tweaked for 3.5), and REBOL. On Linux it changes font colors for better readability. Works on Windows but no font color manipulation. I carry it all around on a USB stick everywhere I go.
Similar Topics | |
---|---|
Sunflower Lanyards - digitalisation/color coding idea |
18 Sep 2024, 12:42 am |
Grace Hopper - Pioneer of Computer Programming |
24 Oct 2024, 10:47 pm |
What made you stop liking someone you were limerent about |
05 Nov 2024, 5:09 pm |
Made the mistake of telling a relative |
03 Oct 2024, 5:16 am |