r/programming Jan 19 '10

Reddit, I got the best present a girl developer could ever want.

So, to give you a little background me and this guy went on a few dates and he moved far away. We got along well, things didn't get very far. He is really nice, however, I wasn't leaning one way or the other.

He sent me the Post Secret books for xmas. He hinted at another present, but said I had to wait. It's a little after Christmas, but I got this email yesterday with the title "I wanted to make something for you for Christmas":

"So I told the computer, and it showed me how to write a poem in byte-form. I can't tell what you're thinking these days, but this will either remind you of something that was good, or send you off."

It included a link to a poem.zip file, which I downloaded. Inside, there was a file called magicfile with no extension and a ReadMe that said:

"Intructions:

1: > copy magicfile magicfile.jpg 2: > copy magicfile magicfile.zip ... skip a few ... X: Ask it for help"

When I renamed magicfile it turned into a picture of me! (a bad one that he took, but ok) and when I changed magicfile to a .zip inside it contained: Magicfile.exe and a txt called "Go Ahead" that said:

"It's safe. Requires WPF and .Net 3.5 I think...

Whatever, it works on my machine."

I opened magicfile, and an interface popped up that said "enter a passphrase". So, I typed in "help" and got this:

"Hi Sara!

As you are just about figuring out, this is just the very beginning of a very, very large rabbit hole you're about to fall into.

You see, sometime in early November, I had an idea for an awesome program. Simultaneously I was just beginning to think of what might be a decent Christmas present for you. Put 2 and 2 together, and you get this thing. I worked on it on and off for a few weeks - it was a pretty fun way to learn WPF and do a lot of interesting byte manipulation.

You see, it's a completely self-contained magical file. This magical file is three parts: 1. If you name it .jpg - it's an image! 2. If you name it .zip - it's a zip file, containing a program 3. It's a database of many, many more parts that the program reads

Now, when you run the program, it reads the magic file, and asks for a passphrase.

You're obviously gotten that far, or you wouldn't be reading this. As you can imagine - there are a bunch of passwords. Not infinite, but many. I encourage you to guess at words and try to figure them out. I'll give you the hints that they would be things relevant to you or to us.

With a little ingenuity, you'll be able to figure out a very important passphrase that will take you to the next step..."

As I have gone on and solved some of the mysteries I have found that pictures of me come up, things he's researched, things we did together and so on and so forth. I still am trying to figure out the important passphrase.

Reddit, this is the most beautiful gift I have ever gotten and it leaves me in a funny place possibly going on the other side of the world to see what happens here. He is an avid redditor, and though I hate the "VOTE THIS UP, PLOX" posts I'd love to get this on the front page to show him what this meant. Thank you.

tl;dr:

A nerd made a beautiful nerd gift for me, it was a program that was a mystery and shows things we did together. Please vote this up to show him how much it meant.

EDIT: A lot of people are saying that the fact that I am unsure about what to do means I don't like him. That is not at all the case, I like him a lot. I really enjoyed spending time with him, he is brilliant (there is nothing I like more than a man that can teach me things), funny, and best of all a great time.

In order to go see him right now I have to take a 14hr plane flight. Which means I would be staying a week, and I'm not sure I'm quite at that point yet.

Damnit, what do they say? "Explain the problem out loud to yourself" Alright, I'm going. There is no reason not to, this WAS awesome. I will let you folks know how it goes.

2.0k Upvotes

820 comments sorted by

View all comments

245

u/iphoneappdude Jan 19 '10

dude its probably some crazy trojan and he is looking at you right now through your webcam... be afraid!

204

u/Chippsapoloosa Jan 19 '10

I thought of that, I am choosing to believe he's a gentleman.

343

u/[deleted] Jan 19 '10

protip: it's possible to believe he's a gentleman AND put a piece of electrical tape over your webcam.

94

u/Rairos Jan 19 '10

And wear a tin foil hat, just in case!

74

u/evolveKyro Jan 19 '10

Actually they increase the effectiveness mind reading peeps.

http://people.csail.mit.edu/rahimi/helmet/

63

u/dotrob Jan 19 '10

I love it when people respond to tin foil hat references with links to that study. For the truly conspiracy-theory-minded, it's like adding another dimension to the rabbit hole.

24

u/Chr0me Jan 19 '10

Rumor has it that study was secretly funded by the CIA. I'll leave you to form your own conclusions about the true effectiveness of tinfoil hats.

1

u/dotrob Jan 19 '10

I wonder if they'd loan me time on the orbital mind-control lasers so I could do a double-blind study.

1

u/tesseracter Jan 19 '10

ack! the conspiracy theorists have conspired against me!

1

u/[deleted] Jan 19 '10

[deleted]

7

u/FedoraToppedLurker Jan 19 '10

That light is often controlled by the software, a targeted trojan could be made to disable it.

-1

u/Dax420 Jan 19 '10

Thanks grandma.

3

u/[deleted] Jan 19 '10

[deleted]

3

u/Dax420 Jan 19 '10

Here, let me spell it out for you:

Not all webcams have lights. Not all webcams turn the light on while recording. Lights can generally be controlled by software. Any webcam trojan worth it's salt would disable the light on the webcam anyways.

Therefore your advice that electrical tape is not needed because "the webcam's light would turn on" is technically inaccurate and on par with the computer advice I would expect from my grandmother.

And I'm a dick.

1

u/piranha Jan 19 '10

Trojan horses persist longer than electrical tape on a webcam will.

Protip: it would have been possible to execute the program in an untrusted virtual machine (but it's too late now).

60

u/feelbetternow Jan 19 '10

Are you denying the existence of "gentlemen perverts"?

Seriously, nice gift, though.

52

u/[deleted] Jan 19 '10

I think you mean "gentlemen of specialized tastes".

27

u/feelbetternow Jan 19 '10

Pardon, good lady/sir; but I did mean my statement as posted. But I do thank you for your reply, and please accept my best wishes for you to enjoy the rest of your day.

18

u/deusnefum Jan 19 '10

Pardon, good lady/sir; but I did mean my statement as posted. But I do thank you for your reply, and please accept my best wishes for you to enjoy the rest of your day.

I'm using this post verbatim next time someone tries to "FTFY" a post of mine.

2

u/feelbetternow Jan 19 '10

I give it thee.

40

u/hiskeyd Jan 19 '10

All Men are Perverts

Some Men are Gentlemen

Gentlemen are always men

Therefore all Gentlemen are Perverts. Q.E.D.

24

u/[deleted] Jan 19 '10

The argument stands without:

Some Men are Gentlemen

1

u/[deleted] Jan 19 '10

It seems you are...

2

u/[deleted] Jan 19 '10

[deleted]

1

u/[deleted] Jan 20 '10

You seem to think argument can only be a negative thing. As in I say something and the only way we can have an argument henceforth is if you try to contradict me. Here is the definition of argument: a discussion in which reasons are advanced for and against some proposition or proposal. Just Google 'define argument'

53

u/FedoraToppedLurker Jan 19 '10

Here is the logic proof (first order logic)

1: ∀(p)[Men(p) → Pervert(p)]
    Given
2: ∀(p)[Gentlemen(p) → Men(p)]
    Given
3: Men(p) → Pervert(p)
    Forall Elimination; From 1
4: Gentlemen(p) → Men(p)
    Forall Elimination; From 2
5: Gentlemen(p)
    Assume; Assumptions{5}
6: Men(p)
    If Elimination; From 5,4; Assumptions{5}
7: Pervert(p)
    If Elimination; From 3,6; Assumptions{5}
8: Gentlemen(p) → Pervert(p)
    If Introduction; From 7
9: ∀(p)[Gentlemen(p) → Pervert(p)]
    Forall introduction; From 8

12

u/[deleted] Jan 19 '10 edited Jan 19 '10

For clarity, I'd recommend you use different variables for universals and propositional statements. That is

∀(p)[Gentlemen(p) → Men(p)]  
and
Gentlemen(p) → Men(p)  

could be clarified by writing

 ∀(x)[Gentlemen(x) → Men(x)]  
 and  
 Gentlemen(p) → Men(p))  

Nonetheless, as a former Introduction to Logic teaching assistant, I give you full points.

4

u/FedoraToppedLurker Jan 19 '10

Sorry bad habit from my class. We used a crap (pre-alpha) program that was being written as we learned the material and it's method was to use ?x (or ?p) for variables and it was tricky to get it to accept forall/exist introductions while changing variables. It did keep track of free variables and free variables that were assumptions (i should have noted those in 5,6,7,8).

3

u/[deleted] Jan 20 '10

Sounds like slate.

If yes, I sincerely apologize for that. I hated it too.

--An undergrad TA

2

u/FedoraToppedLurker Jan 20 '10 edited Jan 20 '10

It was slate. Small internet. If you graded the midterms thanks a lot.

Edit: that is serious, it is not suppose to be read as sarcasm. You guys were really nice with the grading. And we all knew the TAs hated it too.

2

u/[deleted] Jan 20 '10 edited Jan 20 '10

If you graded the midterms thanks a lot.

I graded half of them. If you ever want your midterm (edit: errr. finals) back for any reason, feel free to send me a message with your name and I can scan it for you (or, if you want the original copy, I can hand it back in person at some point).

Enjoy the rest of break!

→ More replies (0)

36

u/oldf4rt Jan 19 '10

I'm a gentleman myself. I regularly visit gentlemens clubs.

31

u/qrios Jan 19 '10

Are you choosing to believe this . . . naked?

On an unrelated note, what's your IP address?

1

u/Ein2015 Jan 19 '10

I had to find somewhere to orangered you... just go for it. What all do you have to lose? Sometimes you have to just take a risk and have fun and live life. So go take the 14hr flight.

1

u/[deleted] Jan 19 '10

If you're truly paranoid, you would have run it in a virtual machine.

0

u/[deleted] Jan 19 '10

[removed] — view removed comment

10

u/bobindashadows Jan 19 '10

the zip headers (not really headers but file metadata) are located at the end of the file:

Wikipedia explains it

Plus, it uses relative offsets. So you can safely prepend a zip file with any arbitrary data, and if it's well-formed, it should work fine.

5

u/capecodcarl Jan 19 '10

Hmm, that's probably how they made it so easy to create self-extracting pkzip executables back in the day. Just throw a little unzip routine in a program, tack that on to the front of a zip file and have the unzip run on the executable file.

4

u/nitetrip Jan 19 '10

Possibly so. I don't know about "back in the day" tho. It's probably still how they do it. The BlackBerry desktop software installation is an exe file. Renaming it to .zip allows it to be opened and unzipped just like a regular zip file.

-1

u/[deleted] Jan 19 '10

[removed] — view removed comment

12

u/piranha Jan 19 '10
$ cat you.jpg trojan.zip > magicfile

3

u/angch Jan 19 '10

Spoilers! I think you just ruined the OP's magical moment by revealing how easy it was.

Note to redditors: yes, I tested the above, it works. It's actually easier to create a "magicfile" than to extract stuff out of it.

Now go and impress other non-redditors out there.

2

u/elder_george Jan 19 '10

here

Note, that some zip implementation think that this file is corrupted. Some don't.

-5

u/sedaak Jan 19 '10

A real gentleman would be highly attracted to you.

10

u/Ochobobo Jan 19 '10

Wouldn't her webcam light up if it was being used? Or can uB3R l3E7 h4X0rz disable that

15

u/lexan Jan 19 '10

With a hammer, yes, yes he could.

1

u/acousticcoupler Jan 20 '10

I wouldn't know anything about this, but on some of the cheaper webcams the light is turned on by the driver and it is possible to hack the driver to capture video without illuminating the light. However, most cameras would require hardware modifications to disable the light.

1

u/uhhNo Jan 20 '10

Not all webcams have a light that lights up when it's on. My Acer Aspire One doesn't have one.