Course offerings, listed by category:Below is a list of the courses I offer: Name, duration and short synopsis. Where the PDF icon appears, you can find an excerpt of the actual course materials. Note that, unlike some vendors who only provide slides, course materials provided in these courses are comprehensive lecture notes of the highest quality, including notes and details for each slide. The course materials can be later used by participants to jog their memory, as well as a quick reference. | |||
Windows | |||
![]() |
Debugging Techniques in Windows (Workshop) |
3 days |
In many cases, debugging a program does not involve using a full-fledged debugger - tools such as process monitor can often be successfully used to pinpoint and resolve problems. In some cases, however, a debugger is mandatory. These cases are the ones we cover in this course.
This course is designed for experienced developers wishing to understand the internals of their programs - and what *really* happens after the program is compiled. Going back to basics (assembly) the course focuses on the lowest level of program operations, at the primitive level of the CPU, cache lines and registers. It then focuses on the Microsoft Windows Debugger, WinDBG, demonstrating powerful techniques to trace through and bypass program logic.
Click here for detailed syllabus |
![]() |
Windows Kernel | 5 days | Understand the inner workings of the Windows Kernel and its various subsystems, from an architectural perspective, as well as through driver writing. The course explains the components, and focuses on them using a sample device driver coded and expanded by the students. Additional hands-on demonstrations using Windows Debugger (WinDBG) are presented, debugging the various kernel structures and APIs.
Click here for detailed syllabus |
| Windows System Programming | 5 days | This course helps programmers familiarize and adapt themselves to the wonderful world of Windows. Explaining the Win32 API in depth, we explain the basics of process and thread creation, handling Windows messages, file I/O and - in great depth - Windows Sockets. | |
Linux | |||
|
Debugging Techniques in Linux (Workshop) |
3 days | This course introduces debugging tools in Linux. Powerful utilities ubiquitous in Linux distributions, such as strace/ltrace, proc, and - the built-in debugger, gdb. We discuss how to develop and use debugging skills to deal with common bugs, such as memory corruptions, erroneous usage of pointers, multi-threaded code and race-conditions, socket bugs, and more. Special consideration is given to analyzing core dumps and crashes.
Click here for detailed syllabus |
|
| Embedded Linux | N/A days | An add-on to either the Kernel Programming course or the Administration course, this course focuses on architecture-specific concerns and idiosyncrasies, in maintaining or programming in an embedded Linux environment. Issues such as building and maintaining an embedded system, from the boot loader to the Kernel installation, are covered. | |
| Linux Administration | 3 days | This course is meant to transform the novice Linux user into a knowledgeable administrator. Get a deeper insight into the Linux operating system through related administrative tasks, such as user management, software installation and maintenance, network administration, backups and more.
This course focuses on Linux, but variants are offered for Solaris and other flavors of UNIX Click here for detailed syllabus |
|
| Linux Kernel - Advanced Topics: Networking | 3 days | Go deeper into the Linux Kernel - by getting to know its networking subsystem. In-Depth coverage of the networking stack, focusing on Ethernet, IPv4 and IPv6 processing. Additional discussion of the routing subsystem, NetFilter/IPTables and NetLink sockets. Meant as a follow-up to the Linux Kernel Programming course.
Click here for detailed syllabus |
|
| Linux Kernel - Advanced Topics: Filesystems | 3 days | Go deeper into the Linux Kernel - by getting to know the block device and filesystems components. Explaining the block device architecture, including the buffer cache, and what it means to create a block device driver. Detailed discssion of the Virtual Filesystem Switch (VFS) layer. | |
| Linux Kernel Programming | 5 days | Understand the inner workings of the Linux Kernel and its various subsystems, from an architectural perspective, as well as through driver writing. The course explains the components, and focuses on them using a sample device driver coded and expanded by the students. The students will become familiar with the Linux source code of the latest kernels (2.6.32 at the time of writing), with thorough review of the sources, as well as detailed discussions of the various features introduced in each minor Kernel version.
Click here for detailed syllabus |
|
![]() |
Linux Survival Guide | 3 days | This course is meant to enable UNIX or Linux users to gain familiarity with their system. A basic course, it presents the fundamentals of working in a UNIX environment: From the command line and terminal settings, through filesystem navigation commands, editing, basic networking commands, and scripting. |
| Linux System Programming | 5 days | This course helps programmers familiarize and adapt themselves to the various UNIX operating systems - Solaris, BSD, MacOS and - Linux. Explaining the standard POSIX API in depth, we discuss how to perform common tasks, such as file I/O, network socket programming, multithreaded programming and more on UNIX and specifically Linux. | |
Mac OS X | |||
| OS X Kernel Programming | 3 days | This course picks up where "OS X System Programming" leaves off. Meant as a follow-up to its predecessor, or for developers with comparable knowledge of the OS X user mode environment, it delves deeper into aspects of Kernel programming. The course describes the XNU kernel in depth, focusing on its three main components: the Mach core, the BSD API layer and the I/O Kit driver foundation. Plenty of hands-on enable students to develop a fully working device driver. | |
| OS X System Programming | 3-5 days | This course covers the architecture of OS X from the ground up. OS X is the operating system behind Apple's Macs, iPhones, and iPads. Students will become familiar with OS X's layered architecture, from the core of Darwin (including an overview of the XNU kernel), through the POSIX interfaces and BSD system calls, and up to the various core frameworks. This course also introduces Objective-C, the language of choice for framework-enabled development.
Note: This code does not discuss GUI development in depth, and only touches upon it. It does, however, cover most other aspects of programming, applicable to OS X in both its Mac and iPhone ("iOS") flavors
Click here for detailed syllabus |
|
Security | |||
| Cryptography - from A to Omega | 5 days | This course undertakes to lay the foundations of both classic and modern-day cryptography over the span of 5 days. Beginning with the principles, and quickly moving on to discussion of modern ciphers such as RC4, DES and the present-day standard of AES (Rijndael). PKI methods such as Diffie-Hellman, RSA and ECC (Elliptic Curves) are explained in mathematical detail. Digital signature techniques and principles, including hash functions such as MD5 and SHA-1 are discussed as well. Finally, the course concludes by taking the algorithms discussed and showing their incorporation in protocols - both secure (SSL, IPSec, Kerberos) and insecure (NTLM, WEP). | |
| Know Thy Enemy | 4 days | This course focuses on application security - but from the hacker's perspective. Hacker tools and techniques are explained with many practical examples. Students obtain hands-on experience not just in using the tools, but working to defend against them. Common and widely used exploits are analyzed and ways to remediate them are explained.
Click here for detailed syllabus |
|
![]() |
Secure Coding Seminar | 2 days | This seminar focuses on aspects of secure programming - writing applications that are not only performant, but resilient in the face of hacker attacks and tampering. Common vulnerabilities such as buffer overflows, format string attacks, directory traversals and others are explained in detail. For each, we discuss the programming anti-pattern that can lead to the error occurence, its exploitation, and ways to remediate it. This course is available in two flavors - either C/C++ or Java/.Net. The course not only shows the errors and their remediation, but also presents principles of Secure Design - which, if applied a priori, can often counteract and mitigate errors that may lurk in code.
Click here for detailed syllabus |
Networking | |||
| AAA | 2 days | This course focuses on protocols used for Authentication, Authorization and Accounting - commonly referred to as "AAA". Legacy (standalone) authentication mechanisms in both UNIX and Windows are explained, followed by protocols such as Radius, Kerberos, NIS (YP), LDAP and the various flavors of EAP. | |
| Application Layer Protocols | 3 days | This course discusses the main application protocols of the Internet: DNS (Domain Name Service), FTP (File Transfer Protocol), E-Mail protocols, HTTP (HyperText Transfer Protocol) and SSL (Secure Socket Layer). In-depth detail is provided down to the packet level with live captures using the WireShark sniffer. Each protocol is examined from both its perfomance and security aspects.
Meant as a followup to the "Network Protocols" course, this further explores the OSI model, moving from the network and transport layers - to the application layer. Click here for detailed syllabus |
|
| IPv6 | 1-2 days | IPv6 is the protocol that will eventually inherit "traditional" IP (IPv4) in providing the address space of the future Internet. This seminar discusses IPv6 in depth, providing students with hands-on experience of IPv6 through a special lab setup and exercises. Implementations of IPv6 and ICMPv6 on common operating systems such as Windows, Linux and MacOS are shown. Optionally, the course goes on to discuss the security framework of IPSec.
Click here for detailed syllabus |
|
![]() |
MPLS (seminar) |
1 days | A one-day seminar dealing with the MultiProtocol Label Switching (MPLS) design and implementation. MPLS along with its supporting protocols (LDP, OSPF-TE and RSVP-TE) are discussed, with actual packet captures analyzed using WireShark. |
| Network Layer Protocols | 3 days | This course discusses the TCP/IP protocol stack - the driving force behind the Internet. Detailed discussions of layer II protocols (primarily Ethernet), the Internet Protocol (IPv4 and IPv6), Internet Control Messaging Protocol (ICMP), and the routing protocols RIPv2 and OSPF. This course also touches on advanced aspects of networking, such as QoS (Quality of Service) and Multicasting. | |
![]() |
VoIP | 2 days | This course introduces the myriad protocols used to convey voice and video over the Internet Protocol. It explains both the legacy H.323 protocol stack and the SIP standard, as well as the RTP protocol common to both. This course also discusses SCCP ("Skinny"), a proprietary protocol used in legacy Cisco IP telephony. Students obtain hands-on experience using custom H.323 and SIP capable software.
Click here for detailed syllabus |