Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C

Bruce Schneier

This new edition of the cryptography classic provides you with a comprehensive survey of modern cryptography. The book details how programmers and electronic communications professionals can use cryptography-the technique of enciphering and deciphering messages-to maintain the privacy of computer data. It describes dozens of cryptography algorithms, gives practical advice on how to implement them into cryptographic software, and shows how they can be used to solve security problems. Covering the latest developments in practical cryptographic techniques, this new edition shows programmers who design computer applications, networks, and storage systems how they can build security into their software and systems.

What's new in the Second Edition?
* New information on the Clipper Chip, including ways to defeat the key escrow mechanism
* New encryption algorithms, including algorithms from the former Soviet Union and South Africa, and the RC4 stream cipher
* The latest protocols for digital signatures, authentication, secure elections, digital cash, and more
* More detailed information on key management and cryptographic implementations

C++ Primer Plus

Stephen Prata

If you are new to C++ programming, C++ Primer Plus, Fourth Edition is a friendly and easy-to-use self-study guide. You will cover the latest and most useful language enhancements, the Standard Template Library and ways to streamline object-oriented programming with C++. This guide also illustrates how to handle input and output, make programs perform repetitive tasks, manipulate data, hide information, use functions and build flexible, easily modifiable programs. With the help of this book, you will:

* Learn C++ programming from the ground up.
* Learn through real-world, hands-on examples.
* Experiment with concepts, including classes, inheritance, templates and exceptions.
* Reinforce knowledge gained through end-of-chapter review questions and practice programming exercises.

C++ Primer Plus, Fourth Edition makes learning and using important object-oriented programming concepts understandable. Choose this classic to learn the fundamentals and more of C++ programming.

Assembly Language Step-by-Step: Programming with DOS and Linux

Jeff Duntemann

The bestselling guide to assembly language-now updated and expanded to include coverage of Linux

This new edition of the bestselling guide to assembly programming now covers DOS and Linux! The Second Edition begins with a highly accessible overview of the internal operations of the Intel-based PC and systematically covers all the steps involved in writing, testing, and debugging assembly programs.

Expert author Jeff Duntemann then presents working example programs for both the DOS and Linux operating systems using the popular free assembler NASM. He also includes valuable information on how to use procedures and macros, plus rare explanations of assembly-level coding for Linux, all of which combine to offer a comprehensive look at the complexities of assembly programming for Intel processors.

Providing you with the foundation to create executable assembly language programs, this book:
* Explains how to use NASM-IDE, a simple program editor and assembly-oriented development environment
* Details the most used elements of the 86-family instruction set
* Teaches about DEBUG, the single most useful tool you have as an assembly language programmer
* Examines the operations that machine instructions force the CPU to perform
* Discusses the process of memory addressing
* Covers coding for Linux

The CD-ROM includes:
* Net-Wide Assembler (NASM) for both DOS and Linux
* NASM-IDE, a command shell and code editor for DOS
* ALINK, a free linker for DOS programming
* All program code examples from the book

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Herb Sutter
Andrei Alexandrescu

Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own coding standards.

The authors cover virtually every facet of C++ programming: design and coding style, functions, operators, class design, inheritance, construction/destruction, copying, assignment, namespaces, modules, templates, genericity, exceptions, STL containers and algorithms, and more. Each standard is described concisely, with practical examples. From type definition to error handling, this book presents C++ best practices, including some that have only recently been identified and standardized-techniques you may not know even if you've used C++ for years. Along the way, you'll find answers to questions like

* What's worth standardizingand what isn't?
* What are the best ways to code for scalability?
* What are the elements of a rational error handling policy?
* How (and why) do you avoid unnecessary initialization, cyclic, and definitional dependencies?
* When (and how) should you use static and dynamic polymorphism together?
* How do you practice "safe" overriding?
* When should you provide a no-fail swap?
* Why and how should you prevent exceptions from propagating across module boundaries?
* Why shouldn't you write namespace declarations or directives in a header file?
* Why should you use STL vector and string instead of arrays?
* How do you choose the right STL search or sort algorithm?
* What rules should you follow to ensure type-safe code?

Whether you're working alone or with others, C++ Coding Standards will help you write cleaner codeand write it faster, with fewer hassles and less frustration.

C# Cookbook

Jay Hilyard
Stephen Teilhet

The O'Reilly Cookbook series, with its to-the-point but illuminating coverage of programming subjects, meets the challenge of explaining how to write software as well as anything else on the market. When you're facing a coding problem--particularly in a language you're new to or haven't used in a while--and know there must be a proven way to solve it, the right Cookbook can often get you going in a hurry. C# Cookbook applies the formula to the language of Microsoft .NET, and is an addition to the line that more than a few programmers will appreciate.

Don't count on this book to solve big tasks for you. "I need some C# software that integrates with Avaya telephone switches and Siemens databases...:" No. Rather, this book shows you how to do the little jobs (converting an array to a delimited string, monitoring the event log, creating a bounded hashtable, and so on) that can stand in the way of prompt completion of a project. What's more, the coverage isn't limited to code samples. Stephen Teilhet and Jay Hilyard take advantage of the Cookbook series' Problem-Solution-Discussion format to teach you a thing or two about C#. You'll refer to this book often for quick answers and explanations.

With "C# Cookbook, 2nd Edition," you'll be able to learn and improve your mastery of both the C# language and the .NET platform. This updated bestseller has been completely revised to account for C# 2.0, the latest version of this popular object-oriented programming language. It also includes more than 100 new code solutions (over 300 overall) to common problems and tasks that you're sure to face as a C# programmer.

Nearly every solution, or "recipe," contains a complete, documented code sample showing you how to solve the specific problem, as well as a detailed discussion of how and why the underling technology works. This question-solution-discussion format is a proven teaching method, as any fan of O'Reilly's "Cookbook" series can attest to. In fact, no other source offers a learn-as-you-go format quite like this.

"C# Cookbook, 2nd Edition" is organized into 20 chapters, each of which focuses on a particular topic in creating C# solutions. Here are just some of what's covered: Numeric data types Strings and characters Classes and structures Generics Exception handling Delegates, events, and anonymous methods Filesystem interactions Web site access XML usage (including XPath and XSLT) Networking Threading Unsafe code

Best of all, you don't have to be an experienced C# or .NET developer to use "C# Cookbook, 2nd Edition," You just have to be someone who wants to solve a problem now, without having to learn all the related theory first.

Topics covered: How to solve small but non-trivial problems in the C# programming language. Each of 17 chapters covers a major area of C# functionality--networking, regular expressions, filesystem, security, and so on--and contains a dozen or two entries on how best to solve programming problems. --This text refers to the Paperback edition.

The Shellcoder's Handbook: Discovering and Exploiting Security Holes

Jack Koziol
David Litchfield
Dave Aitel
Chris Anley
Sinan "noir" Eren
Neel Mehta
Riley Hassell

Stop hackers from wreaking havoc on your software applications and operating systems. This innovative book provides tools to discover vulnerabilities in C-language-based software, exploit what you find, and prevent new security holes from occurring.
* Examines where security holes come from, how to discover them, how hackers exploit them and take control of systems on a daily basis, and most importantly, how to close these security holes so they never occur again
* A unique author team-a blend of industry and underground experts- explain the techniques that readers can use to uncover security holes in any software or operating system
* Shows how to pinpoint vulnerabilities in popular operating systems (including Windows, Linux, and Solaris) and applications (including MS SQL Server and Oracle databases)
* Details how to deal with discovered vulnerabilities, sharing some previously unpublished advanced exploits and techniques

Understanding the Linux Kernel

Daniel P. Bovet
Marco Cesati

In order to thoroughly understand what makes Linux tick and why it works so well on a wide variety of systems, you need to delve deep into the heart of the kernel. The kernel handles all interactions between the CPU and the external world, and determines which programs will share processor time, in what order. It manages limited memory so well that hundreds of processes can share the system efficiently, and expertly organizes data transfers so that the CPU isn't kept waiting any longer than necessary for the relatively slow disks.

The third edition of "Understanding the Linux Kernel" takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Probing beyond superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Important Intel-specific features are discussed. Relevant segments of code are dissected line by line. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings of why Linux does things the way it does.

This edition of the book covers Version 2.6, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices. The book focuses on the following topics:

Memory management, including file buffering, process swapping, and Direct memory Access (DMA)

The Virtual Filesystem layer and the Second and Third Extended Filesystems

Process creation and scheduling

Signals, interrupts, and the essential interfaces to device drivers


Synchronization within the kernel

Interprocess Communication (IPC)

Program execution

"Understanding the Linux Kernel" will acquaint you with all the inner workings of Linux, but it's more than just an academic exercise. You'll learn what conditions bring out Linux's best performance, and you'll see how it meets the challenge of providing good system response during process scheduling, file access, and memory management in a wide variety of environments. This book will help you make the most of your Linux system.

Security in Computing

Charles P. Pfleeger - Pfleeger Consulting Group
Shari Lawrence Pfleeger - RAND Corporation

The New State-of-the-Art in Information Security: Now Covers the Economics of Cyber Security and the Intersection of Privacy and Information Security

For years, IT and security professionals and students have turned to Security in Computing as the definitive guide to information about computer security attacks and countermeasures. In their new fourth edition, Charles P. Pfleeger and Shari Lawrence Pfleeger have thoroughly updated their classic guide to reflect today's newest technologies, standards, and trends.

The authors first introduce the core concepts and vocabulary of computer security, including attacks and controls. Next, the authors systematically identify and assess threats now facing programs, operating systems, database systems, and networks. For each threat, they offer best-practice responses.

Security in Computing, Fourth Edition, goes beyond technology, covering crucial management issues faced in protecting infrastructure and information. This edition contains an all-new chapter on the economics of cybersecurity, explaining ways to make a business case for security investments. Another new chapter addresses privacy--from data mining and identity theft, to RFID and e-voting.

New coverage also includes

* Programming mistakes that compromise security: man-in-the-middle, timing, and privilege escalation attacks
* Web application threats and vulnerabilities
* Networks of compromised systems: bots, botnets, and drones
* Rootkits--including the notorious Sony XCP
* Wi-Fi network security challenges, standards, and techniques
* New malicious code attacks, including false interfaces and keystroke loggers
* Improving code quality: software engineering, testing, and liability approaches
* Biometric authentication: capabilities and limitations
* Using the Advanced Encryption System (AES) more effectively
* Balancing dissemination with piracy control in music and other digital content
* Countering new cryptanalytic attacks against RSA, DES, and SHA
* Responding to the emergence of organized attacker groups pursuing profit

Perl Best Practices

Damian Conway

Many programmers code by instinct, relying on convenient habits or a "style" they picked up early on. They aren't conscious of all the choices they make, like how they format their source, the names they use for variables, or the kinds of loops they use. They're focused entirely on problems they're solving, solutions they're creating, and algorithms they're implementing. So they write code in the way that seems natural, that happens intuitively, and that feels good.

But if you're serious about your profession, intuition isn't enough. Perl Best Practices author Damian Conway explains that rules, conventions, standards, and practices not only help programmers communicate and coordinate with one another, they also provide a reliable framework for thinking about problems, and a common language for expressing solutions. This is especially critical in Perl, because the language is designed to offer many ways to accomplish the same task, and consequently it supports many incompatible dialects.

With a good dose of Aussie humor, Dr. Conway (familiar to many in the Perl community) offers 256 guidelines on the art of coding to help you write better Perl code--in fact, the best Perl code you possibly can. The guidelines cover code layout, naming conventions, choice of data and control structures, program decomposition, interface design and implementation, modularity, object orientation, error handling, testing, and debugging.

They're designed to work together to produce code that is clear, robust, efficient, maintainable, and concise, but Dr. Conway doesn't pretend that this is the one true universal and unequivocal set of best practices. Instead, Perl Best Practices offers coherent and widely applicable suggestions based on real-world experience of how code is actually written, rather than on someone's ivory-tower theories on how software ought to be created.

Most of all, Perl Best Practices offers guidelines that actually work, and that many developers around the world are already using. Much like Perl itself, these guidelines are about helping you to get your job done, without getting in the way.

Hacker Disassembling Uncovered

Kris Kaspersky

Going beyond the issues of analyzing and optimizing programs as well as creating the means of protecting information, this guide takes on the programming problem of, once having found holes in a program, how to go about disassembling it without its source code. Covered are the hacking methods used to analyze programs using a debugger and disassembler. These methods include virtual functions, local and global variables, branching, loops, objects and their hierarchy, and mathematical operators. Also covered are methods of fighting disassemblers, self-modifying code in operating systems, and executing code in the stack. Advanced disassembler topics such as optimizing compilers and movable code are discussed as well.

Text shows how to analyze programs without its source code, using a debugger and a disassembler. Covers hacking methods including virtual functions, local and global variables, branching, loops, objects and their hierarchy, and mathematical operators. For intermediate to advanced level programmers. Softcover.

Syndicate content