We study parallel computations with OpenMPI and supercomputer on the example of hacking neighbor WiFi

At the time of writing the dissertation one of the research directions was the parallelization of the search in the state space on computing clusters. I had access to a computational cluster, but there was no practice in programming for clusters (or HPC - High Performance Computing). Therefore, before proceeding to the combat mission, I wanted to practice something simple. But I'm not a fan of abstract hello world without real practical tasks, so this task was quickly found.
We study parallel computations with OpenMPI and supercomputer on the example of hacking neighbor WiFi
Everyone knows that full search is the most inefficient way to find passwords. However, with the advent of supercomputers, it was ...

Rust: use serde to serialize

Serialization of data via serde. Recently I wrote Rust -code to work with a third-party data source in TOML format. In other languages, I would load the data with some TOML library and run my program, but I heard about serde - the serialization library on Rust, so I decided to try it.
Details - under the cut.
serialization structure is simple, and the process is simple: write method serialize for your structure, which calls the desired methods in serde :: Serializer , and everything is ready. However, the documentation for ...

Own data in the system drop dump Windows

Own data in the system drop dump WindowsBy its activity (Windows Kernel), I regularly have to parse BSOD dumps. It's not unusual for the end user to successfully write only Mini dumps, in which only the value of the processor registers and the drop stack are saved. And there is simply no other means for debugging the client machine. But what if there is no driver on the stack, and the customer insists that the drops started after the product was installed and ended after the driver of this product was disconnected? In my case, a good solution was to maintain a small log of recent events in a circular buffer. It remains only to save this ...

Operating systems from scratch; Level 0

Operating systems from scratch; Level 0
Good afternoon /evening /night /morning! There is one experimental course on operating systems. He is at Stanford University. But some of the materials are available to everyone. In addition to the slides, full descriptions of practical exercises are available.
How does this course differ from the others? Most of the code is written independently and is run on a very real modern hardware. The target platform is Raspberry Pi 3 model B . Those. quite relevant architecture AArch64. ARMv8 Cortex-A5? four cores, 64-bits and that's it. The main programming language is ...

Optimizing the code in the mind, or "Well, it's also definitely faster"

The other day working on one mistake in one open-source project, I saw how a colleague (also working in parallel over the same problem) flooded such a commit.[31a078bec7] :
- * Select the list item based on the index. Negative operand means
- * end-based indexing (-? ), and -1 means out of range.
+ * Decode end-offset index values.
* /
- if (opnd < -1) {
.- index = opnd + 1 + objc;
.-} else {
.-- index = opnd;
+ index = opnd + (opnd <= TCL_INDEX_END)*(objc - 1 - TCL_INDEX_END);
.pcAdjustment = 5;

The change itself is correct (now TCL_INDEX_END is the constant ...

Rust: why you need macros

When I told my colleague that there were macros in Rust, it seemed to him that it was bad. I used to have the same reaction, but Rust showed me that macros are not necessarily bad.
Where and how to apply them appropriately? Look under the cut.
meta-programming of : they are the code that manipulates the code. Metaprogramming received a bad reputation, because when using them, it's not easy to protect yourself from writing bad code. Examples are #define in C, which is It can easily interact with the code in an unpredictable manner , or eval in jаvascript...

A compiler bug? Linker? No, the Windows

A compiler bug? Linker? No, the Windowskernel bug. Heisenbagh is the worst thing that can happen. In the study below, which was stretched to 20 months , we have already reached the point where we started looking for hardware problems, errors in compilers, linkers, and doing other things that should be done at the very last. Normally, you do not need to translate arrows like this (the bug is most likely in your code), but in this case, on the contrary, we did not have the globality of the vision of the problem. Yes, we did find a bug in the linker, but apart from it we also found a bug in the Windows kernel.  In September 2016 we became ...