KEMBAR78
Ch07 Programming for Security Professionals | PPT
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
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
Computer Programming Fundamentals Fundamental concepts Branching, Looping, and Testing (BLT) Documentation Function Mini program within a main program that carries out a task
Branching, Looping, and Testing (BLT) 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
A C Program Filename ends in .c It's hard to read at first A single missing semicolon can ruin a program
Comments Comments make code easier to read
Branching and Testing Diagram of branches See links Ch 7b, 7c main() printf() scanf()
Looping
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
Pseudocode For Shopping PurchaseIngredients Function Call GetCar Function Call DriveToStore Function Purchase Bacon, Bread, Tomatoes, Lettuce, and Mayonnaise End PurchaseIngredients Function
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
Bugs Industry standard 20 to 30 bugs for every 1000 lines of code (link Ch 7f) Textbook claims a much smaller number without a source Windows 2000 contains almost 50 million lines And fewer than 60,000 bugs (about 1 per 1000 lines) See link Ch 7e for comments in the leaked Win 2000 source code Linux has 0.17 bugs per 1000 lines of code (Link Ch 7f)
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 C++ is an enhancement of the C language C is powerful but dangerous Bugs can crash computers, and it's easy to leave security holes in the code
Assembly Language The binary language hard-wired into the processor is  machine language Assembly Language uses a combination of hexadecimal numbers and expressions Very powerful but hard to use (Link Ch 7g)
Compiling C in Ubuntu Linux Compiler Converts a text-based program (source code) into executable or binary code To prepare Ubuntu Linux for C programming, use this command: sudo apt-get install build-essential   Then you compile a file named "program.c" with this command: gcc program.c –o program.exe
Anatomy of a C Program The first computer program a C student learns "Hello, World!"
Comments Use /* and */ to comment large portions of text Use // for one-line comments
Include #include statement Loads libraries that hold the commands and functions used in your program
Functions A Function Name is always followed by parentheses ( ) Curly Braces { } shows where a function begins and ends main() function Every C program requires a main() function main() is where processing starts
Functions Functions can call other functions Parameters or arguments are optional \n represents a line feed
Declaring Variables A variable represents a numeric or string value You must declare a variable before using it
Variable Types in C
Mathematical Operators The i++ in the example below adds one to the variable i
Mathematical Operators
Logical Operators The i<11 in the example below compares the variable i to 11
Logical Operators
Demonstration: Buffer Overflow
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
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>
 
 
 
Understanding Practical Extraction and Report Language (Perl) PERL  Powerful scripting language Used to write scripts and programs for security professionals
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
 
Understanding the Basics of Perl perl –h command  Gives you a list of parameters used with perl
 
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 is used when calling a function
Branching in Perl &speak; Calls the subroutine sub speak Defines the subroutine
For Loop in Perl For loop
Testing Conditions in Perl
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
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()
Example of a Class 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] }
Error in textbook C example on page 138 should be this instead

Ch07 Programming for Security Professionals

  • 1.
    Hands-On Ethical Hackingand Network Defense Chapter 7 Programming for Security Professionals
  • 2.
    Objectives Explain basicprogramming 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
  • 3.
    Introduction to ComputerProgramming 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
  • 4.
    Computer Programming FundamentalsFundamental concepts Branching, Looping, and Testing (BLT) Documentation Function Mini program within a main program that carries out a task
  • 5.
    Branching, Looping, andTesting (BLT) 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
  • 6.
    A C ProgramFilename ends in .c It's hard to read at first A single missing semicolon can ruin a program
  • 7.
    Comments Comments makecode easier to read
  • 8.
    Branching and TestingDiagram of branches See links Ch 7b, 7c main() printf() scanf()
  • 9.
  • 10.
    Branching, Looping, andTesting (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
  • 11.
    Pseudocode For ShoppingPurchaseIngredients Function Call GetCar Function Call DriveToStore Function Purchase Bacon, Bread, Tomatoes, Lettuce, and Mayonnaise End PurchaseIngredients Function
  • 12.
    Documentation Documenting yourwork 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
  • 13.
    Bugs Industry standard20 to 30 bugs for every 1000 lines of code (link Ch 7f) Textbook claims a much smaller number without a source Windows 2000 contains almost 50 million lines And fewer than 60,000 bugs (about 1 per 1000 lines) See link Ch 7e for comments in the leaked Win 2000 source code Linux has 0.17 bugs per 1000 lines of code (Link Ch 7f)
  • 14.
    Learning the CLanguage 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 C++ is an enhancement of the C language C is powerful but dangerous Bugs can crash computers, and it's easy to leave security holes in the code
  • 15.
    Assembly Language Thebinary language hard-wired into the processor is machine language Assembly Language uses a combination of hexadecimal numbers and expressions Very powerful but hard to use (Link Ch 7g)
  • 16.
    Compiling C inUbuntu Linux Compiler Converts a text-based program (source code) into executable or binary code To prepare Ubuntu Linux for C programming, use this command: sudo apt-get install build-essential Then you compile a file named &quot;program.c&quot; with this command: gcc program.c –o program.exe
  • 17.
    Anatomy of aC Program The first computer program a C student learns &quot;Hello, World!&quot;
  • 18.
    Comments Use /*and */ to comment large portions of text Use // for one-line comments
  • 19.
    Include #include statementLoads libraries that hold the commands and functions used in your program
  • 20.
    Functions A FunctionName is always followed by parentheses ( ) Curly Braces { } shows where a function begins and ends main() function Every C program requires a main() function main() is where processing starts
  • 21.
    Functions Functions cancall other functions Parameters or arguments are optional \n represents a line feed
  • 22.
    Declaring Variables Avariable represents a numeric or string value You must declare a variable before using it
  • 23.
  • 24.
    Mathematical Operators Thei++ in the example below adds one to the variable i
  • 25.
  • 26.
    Logical Operators Thei<11 in the example below compares the variable i to 11
  • 27.
  • 28.
  • 29.
    Understanding HTML BasicsHTML 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
  • 30.
    Creating a WebPage 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>
  • 31.
  • 32.
  • 33.
  • 34.
    Understanding Practical Extractionand Report Language (Perl) PERL Powerful scripting language Used to write scripts and programs for security professionals
  • 35.
    Background on PerlDeveloped 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
  • 36.
  • 37.
    Understanding the Basicsof Perl perl –h command Gives you a list of parameters used with perl
  • 38.
  • 39.
    Understanding the BLTof 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 is used when calling a function
  • 40.
    Branching in Perl&speak; Calls the subroutine sub speak Defines the subroutine
  • 41.
    For Loop inPerl For loop
  • 42.
  • 43.
    Understanding Object-Oriented ProgrammingConcepts New programming paradigm There are several languages that support object-oriented programming C++ C# Java Perl 6.0 Object Cobol
  • 44.
    Components of Object-OrientedProgramming 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()
  • 45.
    Example of aClass 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] }
  • 46.
    Error in textbookC example on page 138 should be this instead