-
Log 3
08/31/2017 at 23:39 • 0 commentsSo I've verified that the project works with the code provided. So now we have a proof of concept to move a file from one SD card to another one-way through an opto-coupler.
To prevent corrupting the file a bit (not sure why that's happening), you have to plug in the transmitter first, then plug in the receiver, then hit the reset button on the transmitter. By plugged in, being plugged into a USB power source is sufficient. After the reboot a clean transfer will happen.
I found it odd that just using one wire to transfer, some corruption wasn't happening, but adding my opto-coupler board (labled "Tinfoil Transfer"), there's some weird data being sent to the file.
-
Log 2
08/28/2017 at 04:17 • 0 commentsI've made a PCB and I've got some bare bones working code. I will get pictures of the PCB up shortly (my first one!). The github link has been added.
So I've shown a proof-of-concept of sending a "file" one way over the serial port (what's actually happening is parsing the file, sending what's being parsed over serial port, then creating a new file and storing what's sent into a new file on receiver side).
What's really needed now is better parsing of the SD card (to get all files on the card) and a good forward error correction (FEC) implementation. To really make this idea good is going to take a lot of work, if someone can do it please show me.
-
Log 1
07/20/2017 at 05:29 • 0 commentsI've got some good news and bad news. Good news is I can successfully send a file over serial port from one SD card to another. I'll get a github repo up in next few weeks, at least by September. I haven't tried it yet with the optocoupler but I am 99.9999% sure it will work so long as 1-way transmission over serial port is working (the key is the optocouplers are CMOS compatible, that's why it works).
Bad news is that sending files isn't going to work like I expected (and I should've known better when I did a project where I had to convert JPG files to raw binary files, to be able to manipulate raw data easily). I was thinking I could just transfer all the binary info as is over the serial port, but I need to decode each file first (compression or file formats etc.). So if your SD card has .docx, .pdf, .jpg, and .txt files all on it, I need to detect each of those files and begin a decoding process before I can move it over the serial port. I don't think I'll have code space for that and since this is a security project the code has to be as simple as possible and minimal to make for easy verifying and minimize potential bugs. There's already enough code from the Arduino bootloader to the SD FAT library running, adding a PDF decoder to that will start to get gnarly real quick.
So for the time being, this tool will be for 1 file (right now I have to hardcode the file name in the code, may change that eventually), generally either a TXT or CSV file. That file can be absolutely huge though. The main use will be transferring large text strings from an air-gapped PC to a non-air-gapped one.
That's a real let-down for me, so I'll keep looking for ways to make this work, as minimally as possible. In mean-time, I'm also making my first PCB with Eagle. Taking me a while. I'm using a HCPL-7720 optocoupler because it's already in Eagle :p. It's basically the same as the HCPL-7723 but half the speed. I'll learn how to add parts and stuff eventually. It's not intuitive but I'm starting to get the hang of it. What I wanted to do was have another shield that goes on top of the SD card shields, but it connects the 2 Arduinos. This is proving to be difficult (I know what I want to do, but not working). I think I'm going to create the barebones PCB I need, and use cables to connect it for my first prototype; and get better with Eagle and the PCB I'm envisioning.
-
Log 0
06/09/2017 at 03:32 • 0 commentsSo this is my first log, I've been busy with work, and spending time with my SO. I've been able to get my prototypes I'm going to work on built, the main thing now is software. I'm going to start slow, just sending (hopefully it works) one whole file over serial port, with hardcoded names in the code. But I would be very pleased if I could, say, push a button, my code scans the SD card for all the file names (saves those as strings, uses those strings to open files for reading and then transferring those strings, with headers or markers that it's a file name, and opening a file on receiver and being able to close after copying over; this is my vision right now).
Today I had a couple of hours to work (and I wasn't exhausted from coding/designing/tracking bugs down all day) and was able to copy a file back to the same SD card, worked like a charm. I'm thinking it would be wise to make a copy of files, then ready that for transfer, just in case something happens, the original file shouldn't be touched otherwise.
I'm trying to learn Eagle to make my first board, it's going to be a really simple board but I've never made my own board, it always gets done for me and I program them or suggest design changes. If I could get that done for a small price, would be great, but another side of me says to learn the CAD program and make a board. I don't like how Eagle needs to be online though, may switch to KiCAD because of that.
Anyway, enough blabbing, that's a small status update right now, main thing is I'm happy I can copy files to SD card by dicing up the file into buffers of 64 bytes, this gives me a little more confidence my idea will work how I thought it would.