How do you become a hacker

Pretty broad question, but as I find myself wondering “what do I want to be when I grow up”, one of the things I keep coming back to is computer work and hacking.

I like computers and solving problems, and making a decent paycheck would be awesome. My boyfriend is an Engineer who programs machines for automation. I’d like something that can contribute as much as he does with his job :slight_smile:

I figure a job with the government would be something I would be interested in, and the competitions they host yearly (for example, the ones the Pwn2Own host) have the opportunity to payout pretty nicely if you’re good.

But where does one start?

I have a basic understanding of computers, I know how to use one… (haha—)

I don’t know much else, though I’m quick to learn and pickup things, especially when it comes to computers.

What reading would I start doing to get a foot in the door? I don’t even know what I would need to start with, as I want to start from the very beginning to make sure I have a good understanding of what’s going on.
What programs in a local community college could I start out with?
I was thinking computer science degree?

Thanks All!

You’ll need a far more intimate knowledge of how computers work, along with far more knowledge about operating system design, security software, computer hardware, communications protocols, and when you have that you’ll realize hackers are all obsessed and crazy. Unless you mean the original meaning of the word, a proficient and skillful programmer. In that case just start writing programs, do it for fun, make the coding the thing, not the end. You’ll learn all the other stuff along the way just because it interests you. Eventually you’ll find out that people will pay you good money for doing what you do for fun.

Hacking is a somewhat ambiguous – some would say loaded – term these days. I’m going to assume that whatever your actions, your intent is ethical and legal, such as doing it for legitimate security testing.

If you mean it as in “bypassing computer security systems”, a computer science curriculum with a focus on security would be a start. Then you’d want to understand the lower-level internals of computers (meaning the parts less exposed to normal users) such as memory management, assembly language, network protocols, etc. Then you could study how others have gotten around safeguards by looking at vulnerability releases from big projects like Webkit, Mozilla, Apache, etc.; reading published papers from DEFCON or other hacker gatherings; reading security releases about Office, Java, Windows, OSX, *NIX, etc. From there you’d have a better idea of how software is normally broken, and you can look for similar undiscovered holes. You could also take an acting class or two and try your hand at the social side, disguising and charming your way to gain access you shouldn’t have. You’ll need a lot of skill, patience, and luck, fighting some of the world’s biggest and most-funded organizations, from giant corporations to government entities to conglomerates of skilled open-source coders.

Another way to contribute is to maybe become a hacker in the tinkerer/builder sense, joining open-source projects for software and hardware. Between Arduino, 3D printing, Wiki-everything, Android; more open access to content (OpenStreetMap, open access scientific papers, software, etc.); and Kickstarter, it’s a very exciting time to be a programmer/hacker with big ideas. More and more tools and public funding are becoming available for you to prototype and build the project of your dreams.

ETA: Be sure to differentiate between computer science and computer applications. A lot of community colleges teach computers only from the user standpoint, like “How to be a better Excel user”. That’s useless to you. You want to understand how software is written and how the computer interprets commands, and specifically how programmers can neglect to account for malformed inputs and how the computer processes that. You’ll want a curriculum that uses words like “protocol”, “assembly”, “C”, “kernel”, and not “Office”, “Adobe”, or “Business”.

Orville and Wilbur Wright built the their first airplanes in their home-grown bicycle repair shop. Today, if you to build something new in the way of airplanes, it would have to be bigger and better than a modern Airbus or 797 or whatever they’re up to by now.

When I was in 12th grade (1968), computers were also simpler then than now. I was privileged to take a programming class for 12th-graders that was taught by some high-school teachers, held on Saturday morning at a local junior college. The computer was an IBM 1620, Model I. The programming language was FORTRAN II. The technical reference manual was about 50 pages long, about 30 pages of which actually described the language. The other 20 pages were other technical stuff, like how to compile your programs and save them on the disk.

I read the entire 30 pages in one sitting, and immediately began writing non-trivial FORTRAN programs. While the rest of the class was learning to write loops that could count from 1 to 10, I wrote an interactive program that played Hangman, and others to do mathematical computations that interested me at the time.

TODAY, everything is different. You could start with a typical teach-yourself Java or JavaScript or C++ book, any of which would typically be about 1000 pages long. (If it’s any shorter than that, it’s just a sham probably.) Nobody will even talk to you unless you can claim to be proficient in C++ .AND. Java .AND. JavaScript .AND. HTML .AND. CSS .AND. PHP .AND. SQL – A good beginners book in any of those would run from maybe 700 to 1200 pages.

You also need to collect the necessary support software to run those languages. The good news there is, lots of it is FREE. The even better news is, your computer already has at least JavaScript, HTML, and CSS. They are build into your browser! You can get some versions of Java and SQL for free.

If you have Linux (highly recommended, essentially a requirement, if you want to be a hacker), you can get that for free too, in which case C and C++ come with it, and Apache (web server), PHP, and MySQL are all FREE to download and install.

If you have a modern machine with Winders running, you can STILL run Linux as well. Get a Virtual Machine driver (last I looked, there was still a free version of Oracle [formerly Sun] Virtual Box) which lets you create other virtual machines within your Winders machine, where you could run Linux. You can even “network” your Winders and Linux machines just as if they were two separate physical machines, and thereby start learning about networking (another must these days).

You got yer work cut out for you!

Assignment #1: Begin learning JavaScript, since you already have it available in your browser. Learn to write a simple JS program that does something simple, like display “Hello World” in a web page, then counts from 1 to 10 (displaying the output any way you find convenient). When you get the hang of that, write a program to play Hangman like I did. Or translate English to Pig-Latin.

Thanks guys!

I know this is a long and tedious route, but it’s something that really interests me.

I know the job I want will also probably be extremely difficult to obtain unless I can become great at what I do.

In a career such as this, things are constantly changing and keeping up to date with everything so that you’re ahead is the key to success.

I need to start at the bottom of the totem pole and learn my way up to the top.

Thanks, I’ll start with JavaScript!! And I’ll make sure any classes/degrees I look into aren’t just excel, word, etc. I know those pretty well. I was heading for a degree in mechanical engineering but lost interest. One of our classes was Engineering with Excel, which gave me more than a basic understanding of that program lol. We also learned MatLab.

And of course I’m talking about legal reasons, like I mentioned above, I’d love to get a job within the government. Those competitions sound fun and profitable as well.

A professional can chime in to disagree if they’d like, but I think JavaScript would be a strange place to start because it’s so high-level and usually limited to websites. If you want to build web apps it’s a perfectly reasonable thing to study, but otherwise there might be better choices – something with direct access to the underlying memory and processor would make more sense (if you meant hacking in the security sense); otherwise something like Java would give you broad usability across a variety of operating systems and devices.

And if you really want to understand the nitty-gritty, at some point you’ll probably want to dig into assembly code.

Hey, alright, thanks. If you can think of any books I can read, let me know

I suggested JavaScript mainly because it’s something the OP can start with immediately, since every machine with a modern browser already has the ability to run JavaScript. It also has a roughly C-like syntax and structure (speaking really roughly, of course). So for a beginning programmer, learning any of the C-like languages is a good start toward learning any other C-like language.

Furthermore, every browser obviously runs HTML and CSS, which are also important possibilities to learn. And HTML, JavaScript, and CSS all work together to create web pages. So OP gets to study all of those at once.

The next step would be to install a virtual machine with Linux, as suggested above, and install Apache, PHP, and MySQL there. (I am running Linux here, not a virtual machine, and I have all those things running.) So then you can play with SQL databases and PHP and make web pages that connect to databases. So it’s a good way to play with a lot of pieces of modern stuff all at once.

And yes, definitely, from what the OP wrote, it does look like assembly language is the way to go after that (or maybe sooner).

You’ll need to get some good teach-yourself books for all these topics. They can be huge, and expensive.

Here’s a tip: Check out used book stores, thrift shops, and library book sales. (Some libraries have book sales just a few weekends a years, others have full-time used book shops. They sell old donated books mostly.) These are CHEAP sources of books, and one can often find miscellaneous computer teach-yourself books there.

I have a thick stack of such books that I’ve collected over the years, mostly mediocre-to-quite-good, and mostly for $0.50 to $2.00 each.

Also, the OP mentions already having some skill with M$ Office Apps like Excel.

But at what level of proficiency? Do you know how to program these apps using VBA (Visual Basic for Applications)? If not, that is probably a marketable skill too (although not what most people would call a “hacking” skill). So the Office Apps are a platform you already have available for learning Visual Basic, if you haven’t already.

And, if you also have M$ Access, you have a SQL engine (sort of). You could use that to get started with learning SQL (although you will definitely want to move up to MySQL or PostgreSQL or M$ SQL Server very quickly). Note that there is a free downloadable version of M$ SQL Server (I forget what it’s called these days; it used to me called MSDE). It’s a fully functional SQL Server, except optimized for just a small number of users at a time. There are scad of books on all of these subjects too.

Just to make one thing clear, if I forgot: You DON’T want to get any “Dummies” type of books, or anything similar. Those are worse than useless. Also, there are some series of books with titles like “XXX in 24 Hours” and “XXX in 21 Days”. Don’t get those. They are superficial and perfunctory.

You need books that cover their topics in depth and detail. But that start at a beginner’s level (if in fact you are a beginner).

ETA: One textbook series that comes to mind: A whole bunch of books with titles like “XXX: How to Program” by Deitel and Deitel (IIRC, or some name very similar to that). These are college level beginning programming textbooks. But there are umpty-ump others, both as college texts and as teach-yourself books. An advantage of the college texts is that they have non-trivial programming exercises at the end of each chapter, while the teach-yourself books usually have only a few trivial exercises.

You’re using “hacker” in the traditional (obsolescent?) sense of avid expert programmer. I first heard that term 45 years ago (:smack:) applying for a job. The interview proceeded lamely until I mentioned I enjoyed coding. “That’s what I was waiting for. You’re a hacker!” the interviewer exclaimed.

And I still think that the #1 prerequisite is that you find programming to be FUN!

I don’t think book-learning or choice of language is as important as just starting in and having fun! (There were few textbooks or advanced languages 45 years ago.)

Javascript has annoyances(*), but also the advantage of instant gratification! And, if you also know Html, you can use Javascript’s
document.getElementById(…).innerHTML = …;
facility to exploit Html’s interface.

Start by modifying an existing Javascript, which of course are plentiful on-line. You may be able to make simple changes while only gradually acquainting yourself with Javascript details. What would be FUN for you? Hangman as Senegoid suggested? Don’t worry about any career goal at first; just think of some simple projects that you would find enjoyable.

(* - Am I the only one who think it’s silly that in Javascript, “123” + 4 is “1234” but “123” - 4 is 119 ? )

Without doubt.

The old meaning of hacker, grew out of MIT, and the model train society, whose members got after hours access to the few very early and rare computers at MIT. A hacker isn’t a career, it is a calling. Patience, curiosity, and a certain level of obsessiveness make for a hacker.

It won’t matter what language you start with, if you have the calling you will come.

Grab a golf club and start whacking the ground with it. Golf ball optional.

I do have access 07’
I don’t know how to program using VBA yet.

Also, I do know some html programming. I took a class back several years ago when I was doing some web design. Now it seems no one uses that anymore.

thanks for all of the ideas. I literally didn’t know where to start. Now I have a few ideas.

I like the whole hangman idea!

What exactly do you want to do?

PS - Look for Linux User Groups or Arduino meetups near you, grow your hair out, stop dating, and you’ll soon notice a 1.7% increase in haxor leetness per week. Better than any book.

Voyager recommended using JavaScript as a simple way to get started, and he’s right. That was almost 14 hours ago. If you’re not trying to code with Javascript by 8:46PM tonight then you don’t have the stuff to be hacker. Get to it! Click this link to Code Academyand get going!

Hah, I’d like to do defense and offense for security for the government. I’m not sure EXACTLY what I’d be doing. Maybe help with finding weaknesses in bank or other corporate security systems would be fun as well. Kind of make work, into a game!

We just bought an Arduino chip at Radio Shack. We were going to program the chip to control a hydroponics type setting so we could integrate fish tanks with vegetable plants indoors to extend the grow time and create a self controlled system. I’ve seen it done on youtube, where the water is filtered by the plants and the fish waste gets used as fertilizer for the plants.

The microcontroller would just control pump flow rates and timing, light cycles and different lighting needs, and maybe temperature.

It’s a little side project my boyfriend and I wanted to work on :slight_smile:

Perfect. Forget messing about with rubbish like Javascript, get into the guts of this.
Oh, when you start to argue with your BF about the “right way” to code something on this, you will have arrived.

Very cool! You might like the Appropedia page on aquaponics. It’s a wiki for DIY, open-source sustainability projects. And if you get the basics down, maybe you could add water monitoring probes too (when the total dissolved solids count get too high, maybe it’s time to cycle the pumps?). And consider documenting your work, as you go, back onto Appropedia and/or Github or similar… share the love :wink:

Exciting stuff.