Serious CryptographyThis practical guide to modern encryption breaks down the fundamental mathematical concepts at the heart of cryptography without shying away from meaty discussions of how they work. You'll learn about authenticated encryption, secure randomness, hash functions, block ciphers, and public-key techniques such as RSA and elliptic curve cryptography.
You'll also learn: Key concepts in cryptography, such as computational security, attacker models, and forward secrecy; The strengths and limitations of the TLS protocol behind HTTPS secure websites; Quantum computation and post-quantum cryptography; About various vulnerabilities by examining numerous code examples and use cases; How to choose the best algorithm or protocol and ask vendors the right questions.
Each chapter includes a discussion of common implementation mistakes using real-world examples and details what could go wrong and how to avoid these pitfalls.
Whether you're a seasoned practitioner or a beginner looking to dive i ...
Gray Hat C#Learn to use C#'s powerful set of core libraries to automate tedious yet important tasks like fuzzing, performing vulnerability scans, and analyzing malware. With some help from Mono, you'll write your own practical security tools that will run on Windows, OS X, Linux, and even mobile devices.
After a crash course in C# and some of its advanced features, you'll learn how to: Generate shellcode in Metasploit to create cross-platform and cross-architecture payloads; Automate Nessus, OpenVAS, and sqlmap to scan for vulnerabilities and exploit SQL injections; Write a .NET decompiler for OS X and Linux; Parse and read offline registry hives to dump system information; Automate the security tools Arachni and Metasploit using their MSGPACK RPCs.
Streamline and simplify your workday by making the most of C#'s extensive repertoire of powerful tools and libraries with Gray Hat C#. ...
Arduino PlaygroundYou've mastered the basics, conquered the soldering iron, and programmed a robot or two; now you've got a set of skills and tools to take your Arduino exploits further. But what do you do once you've exhausted your to-build list?
Arduino Playground will show you how to keep your hardware hands busy with a variety of intermediate builds, both practical and just-for-fun. Advance your engineering and electronics know-how as you work your way through these 10 complex projects:A reaction-time game that leverages the Arduino's real-time capabilities;A tool for etching your own printed circuit boards;A regulated, variable-voltage power supply;A kinetic wristwatch winder decked out with LEDs;A garage parking assistant that blinks when your vehicle is perfectly parked;A practical and colorful pH meter;A ballistic chronograph that can measure the muzzle velocity of BB, Airsoft, and pellet guns;A battery saver that prevents a ...
The Arduino Inventor's GuideThe Arduino microcontroller makes it easy to learn about electronics, but it can be hard to know where to start. The 10 projects in this book will teach you to build, code, and invent with the super-smart Arduino and a handful of parts.
First, you'll master the basics with a primer that explains how a circuit works, how to read a wiring schematic, and how to build and test projects with a solderless breadboard. Then you'll learn how to make your hardware move, buzz, flash, and interact with the world using motors, LEDs, sensors, and more as you build these 10 projects:The classic first Arduino project: blinking an LED;A miniature traffic light;An LED screen that displays animated patterns and shapes;A fast-paced button-smashing game to test your reflexes;A light-sensitive, color-changing night-light;A challenging ball-balancing game;A temperature-sensing mini greenhouse with an automated fan and vent;A motorized ...
Practical Packet Analysis, 3rd EditionIt's easy to capture packets with Wireshark, the world's most popular network sniffer, whether off the wire or from the air. But how do you use those packets to understand what's happening on your network?
Updated to cover Wireshark 2.x, the third edition of Practical Packet Analysis will teach you to make sense of your packet captures so that you can better troubleshoot network problems. You'll find added coverage of IPv6 and SMTP, a new chapter on the powerful command line packet analyzers tcpdump and TShark, and an appendix on how to read and reference packet values using a packet map.
Practical Packet Analysis will show you how to: Monitor your network in real time and tap live network communications; Build customized capture and display filters; Use packet analysis to troubleshoot and resolve common network problems, like loss of connectivity, DNS issues, and slow speeds; Explore modern exploits and malware at the packet level; Extract files sent across a network from packet ...
Learn Java the Easy WayJava is the world's most popular programming language, but it's known for having a steep learning curve. Learn Java the Easy Way takes the chore out of learning Java with hands-on projects that will get you building real, functioning apps right away.
You'll start by familiarizing yourself with JShell, Java's interactive command line shell that allows programmers to run single lines of code and get immediate feedback. Then, you'll create a guessing game, a secret message encoder, and a multitouch bubble-drawing app for both desktop and mobile devices using Eclipse, an industry-standard IDE, and Android Studio, the development environment for making Android apps.
As you build these apps, you'll learn how to: Perform calculations, manipulate text strings, and generate random colors; Use conditions, loops, and methods to make your programs responsive and concise; Create functions to reuse code and save time; Build graphical user interface (GUI) elements, including buttons, menus, pop ...
Cracking Codes with PythonLearn how to program in Python while making and breaking ciphers - algorithms used to create and send secret messages!
After a crash course in Python programming basics, you'll learn to make, test, and hack programs that encrypt text with classical ciphers like the transposition cipher and Vigenère cipher. You'll begin with simple programs for the reverse and Caesar ciphers and then work your way up to public key cryptography, the type of encryption used to secure today's online transactions, including digital signatures, email, and Bitcoin.
Each program includes the full code and a line-by-line explanation of how things work. By the end of the book, you'll have learned how to code in Python and you'll have the clever programs to prove it!
You'll also learn how to: Combine loops, variables, and flow control statements into real working programs; Use dictionary files to instantly detect whether decrypted messages are valid English or gibberish; Create test programs to make sur ...
Think Data StructuresIf you're a student studying computer science or a software developer preparing for technical interviews, this practical book will help you learn and review some of the most important ideas in software engineering - data structures and algorithms - in a way that's clearer, more concise, and more engaging than other materials.
By emphasizing practical knowledge and skills over theory, author Allen Downey shows you how to use data structures to implement efficient algorithms, and then analyze and measure their performance. You'll explore the important classes in the Java collections framework (JCF), how they're implemented, and how they're expected to perform. Each chapter presents hands-on exercises supported by test code online.
Use data structures such as lists and maps, and understand how they work; Build an application that reads Wikipedia pages, parses the contents, and navigates the resulting data tree; Analyze code to predict how fast it will run and how much memory it will ...
C++ The Core LanguageC++ is an object-oriented enhancement of the C programming language and is becoming the language of choice for serious software development. C++ has crossed the Single Book Complexity Barrier. The individual features are not all that complex, but when put together in a program they interact in highly non-intuitive ways. Many books discuss each of the features separately, giving readers the illusion that they understand the language. But when they try to program, they're in for a painful surprise. C++: The Core Language is for C programmers transitioning to C++. It's designed to get readers up to speed quickly by covering an essential subset of the language. The subset consists of features without which it's just not C++, and a handful of others that make it a reasonably useful language. You can actually use this subset (using any compiler) to get familiar with the basics of the language. Once you really understand that much, it's time to do some programming and learn more from other bo ...
Articulating Design DecisionsTalking to people about your designs might seem like a basic skill, but it can be difficult to do efficiently and well. And, in many cases, how you communicate about your work with stakeholders, clients, and other non-designers is more critical than the designs themselves - simply because the most articulate person usually wins.
This practical guide focuses on principles, tactics, and actionable methods for presenting your designs. Whether you design UX, websites, or products, you'll learn how to win over anyone who has influence over the project - with the goal of creating the best experience for the end user.
Walk through the process of preparing for and presenting your designs; Understand stakeholder perspectives, and learn how to empathize with them; Cultivate both implicit and explicit listening skills; Learn tactics and formulas for expressing the most effective response to feedback; Discover why the way you follow through is just as crucial as the meeting itself; Educate y ...