520 likes | 686 Views
Hands-On Ethical Hacking and Network Defense. Chapter 7 Programming for Security Professionals. Objectives. Explain basic programming concepts Write a simple C program Explain how Web pages are created with HTML Describe and create basic Perl programs
E N D
Hands-On Ethical Hacking and Network Defense Chapter 7 Programming for Security Professionals
Objectives • Explain basic programming concepts • Write a simple C program • Explain how Web pages are created with HTML • Describe and create basic Perl programs • Explain basic object-oriented programming concepts Hands-On Ethical Hacking and Network Defense
Introduction to Computer Programming • Computer programmers must understand the rules of programming languages • Programmers deal with syntax errors • One minor mistake and the program will not run • Or worse, it will produce unpredictable results • Being a good programmer takes time and patience Hands-On Ethical Hacking and Network Defense
Computer Programming Fundamentals • Fundamental concepts • Branching, Looping, and Testing (BLT) • Documentation Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing (BLT) • Function • Mini program within a main program that carries out a task • Branching • Takes you from one area of the program to another area • Looping • Act of performing a task over and over • Testing • Verifies some condition and returns true or false Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing (BLT) (continued) main() { int a = 1 /* Variable initialized as an integer, value 1 */ if (a > 2) /* Testing if "a" is greater than 2 */ printf("A is greater than 2"); else GetOut(); /* Branching--calling a different function */ GetOut() /* Do something interesting here */ { for(a=1; a<11; a++) /* Loop to print 10 times */ { printf("I'm in the GetOut() function"); } } } Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing (BLT) • Algorithm • Defines steps for performing a task • Keep it as simple as possible • Bug • An error that causes unpredictable results • Pseudocode • English-like language used to create the structure of a program Hands-On Ethical Hacking and Network Defense
Documentation • Documenting your work is essential • Add comments to your programs • Comments should explain what you are doing • Many programmers find it time consuming and tedious • Helps others understand your work • Industry standard • One bug for every 2000 lines of code • Windows 2000 contains almost 50 million lines • And fewer than 60,000 bugs Hands-On Ethical Hacking and Network Defense
Documentation (continued) // The following function was added to the program June 15, 2005 // per a request from the Marketing Department. // It appears that reports generated by the sales() function were // not giving the Marketing folks information about the sales in // Asia. This new function now uses data from text files from the // offices in Tokyo and Hong Kong. – Bob C. Twins Hands-On Ethical Hacking and Network Defense
Learning the C Language • Developed by Dennis Ritchie at Bell Laboratories in 1972 • Powerful and concise language • UNIX was first written in assembly language and later rewritten in C • Assembly language • Uses a combination of hexadecimal numbers and expressions • C++ • An enhancement of the C language Hands-On Ethical Hacking and Network Defense
Learning the C Language (continued) • Compiler • Converts a text-based program (source code) into executable or binary code • Some C compilers can also create executable programs in C++ Hands-On Ethical Hacking and Network Defense
Anatomy of a C Program • The first computer program a C student learns /* The famous "Hello, world!" C program */ #include <stdio.h> /* Load the standard IO library. The library contains functions your C program might need to call to perform various tasks. */ main() { printf("Hello, world!\n\n"); } Hands-On Ethical Hacking and Network Defense
Anatomy of a C Program (continued) • Use /* and */ to comment large portions of text • Use // for one-line comments • #include statement • Loads libraries that hold the commands and functions used in your program • Parentheses in C mean you are dealing with functions • main() function • Every C program requires a main() function Hands-On Ethical Hacking and Network Defense
Anatomy of a C Program (continued) • Braces shows where a function begins and ends • Functions can call other functions • Parameters or arguments are optional • \n represents a line feed Hands-On Ethical Hacking and Network Defense
Declaring Variables • A variable represents a numeric or string value • You can declare variables at the beginning of a program • You must declare a variable before using it • C supports several variable types • Conversion specifiers tells the compiler how to convert the values in a function Hands-On Ethical Hacking and Network Defense
Declaring Variables (continued) • Operators • Compare values • Perform mathematical calculations • Types • Mathematical operators • Logical operators Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing in C • Branching main() { prompt(); //Call function to prompt user with a question display(); //Call function to display graphics on screen calculate(); //Call function to do complicated math cleanup(); //Call function to make all variables equal to //zero prompt() { [code for prompt() function goes here] } display() { [code for display() function goes here] } [etc.] } Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing in C (continued) • While loop main() { int counter = 1; //Initialize counter variable while (counter <= 10) //Do what's in the brackets until false { printf("Counter is equal to %d\n", counter); ++counter; //Increment counter by 1; } } Hands-On Ethical Hacking and Network Defense
Branching, Looping, and Testing in C (continued) • Do loop main() { int counter = 1; //Initialize counter variable do { printf("Counter is equal to %d\n", counter); ++counter; //Increment counter by 1 } while (counter <= 10); //Do what's in the brackets until //false } • For loop Hands-On Ethical Hacking and Network Defense
Understanding HTML Basics • HTML is a language used to create Web pages • HTML files are text files • Security professionals often need to examine Web pages • Be able to recognize when something looks suspicious Hands-On Ethical Hacking and Network Defense
Creating a Web Page Using HTML • Create HTML Web page in Notepad • View HTML Web page in a Web browser • HTML does not use branching, looping, or testing • HTML is a static formatting language • Rather than a programming language • < and > symbols denote HTML tags • Each tag has a matching closing tag • <HTML> and </HTML> Hands-On Ethical Hacking and Network Defense
Understanding Practical Extraction and Report Language (Perl) • PERL • Powerful scripting language • Used to write scripts and programs for security professionals Hands-On Ethical Hacking and Network Defense
Background on Perl • Developed by Larry Wall in 1987 • Can run on almost any platform • *NIX-base OSs already have Perl installed • Perl syntax is similar to C • Hackers use Perl to write malware • Security professionals use Perl to perform repetitive tasks and conduct security monitoring Hands-On Ethical Hacking and Network Defense
Understanding the Basics of Perl • perl –h command • Gives you a list of parameters used with perl • perldoc • Displays the description of a perl scripting command Hands-On Ethical Hacking and Network Defense
Understanding the BLT of Perl • Some syntax rules • Keyword “sub” is used in front of function names • Variables begin with the $ character • Comment lines begin with the # character • The & character indicates a function Hands-On Ethical Hacking and Network Defense
Branching in Perl # Perl program illustrating the branching function # Documentation is important # Initialize variables $first_name = "Jimi"; $last_name = "Hendrix"; &name_best_guitarist; sub name_best_guitarist { printf "%s %s %s", $first_name, $last_name, "was the best guitarist!"; } Hands-On Ethical Hacking and Network Defense
Looping in Perl • For loop for ($a = 1; $a <= 10; $a++) { print "Hello security testers!\n" } • While loop $a = 1; while ($a <=10) { print "Hello security testers!\n"; $a++ } Hands-On Ethical Hacking and Network Defense
Testing Conditions in Perl if (($age > 12) && ($age < 20)) { print "You must be a know-it-all!"; } elsif ($age > 39) { print "You must lie about your age!"; } else { print "To be young..."; } Hands-On Ethical Hacking and Network Defense
Testing Conditions in Perl (continued) unless ($age == 100) { print "Still enough time to get a bachelor's degree."; } Hands-On Ethical Hacking and Network Defense
Understanding Object-Oriented Programming Concepts • New programming paradigm • There are several languages that support object-oriented programming • C++ • C# • Java • Perl 6.0 • Object Cobol Hands-On Ethical Hacking and Network Defense
Components of Object-Oriented Programming • Classes • Structures that hold pieces of data and functions • The :: symbol • Used to separate the name of a class from a member function • Example: • Employee::GetEmp() Hands-On Ethical Hacking and Network Defense
Components of Object-Oriented Programming (continued) // This is a class called Employee created in C++ class Employee { public: char firstname[25]; char lastname[25]; char PlaceOfBirth[30]; [code continues] }; void GetEmp() { // Perform tasks to get employee info [program code goes here] } Hands-On Ethical Hacking and Network Defense