JeffreyCodes Blog Jeffrey's personal blog. http://divi.sh/ Sat, 07 Feb 2026 00:57:23 +0000 Sat, 07 Feb 2026 00:57:23 +0000 Jekyll v3.10.0 Fun with RE <p>If you would like to attempt this challenge for yourself, it can be found on the <a href="https://www.hackucf.org/challenges/2021-10-08-cyber-challenge">HackUCF website</a>. It was developed with (and mostly by) Oreomeister for the October 8th HackUCF meeting.</p> <hr /> <p>The challenge gives us a long string made up of alphanumerical characters and select symbols. Noticing the trailing equal signs, I identified this as base64 and copied its contents into a file. From here, we can use the <code class="language-plaintext highlighter-rouge">base64</code> command to decode it.</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Create a new file to store the base64 string</span> nano file.b64 <span class="c"># Convert into a decoded file</span> <span class="nb">cat </span>file.b64 | <span class="nb">base64</span> <span class="nt">-d</span> <span class="o">&gt;</span> file.bin </code></pre></div></div> <p>This will output a file, <code class="language-plaintext highlighter-rouge">file.bin</code>. Now, we have to figure out what file this is to decode it. We can use the Unix <code class="language-plaintext highlighter-rouge">file</code> command for this, which tells us this is an ELF binary. <code class="language-plaintext highlighter-rouge">chmod</code> accordinly.</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Get file type</span> file file.bin <span class="c"># Let us run the ELF binary.</span> <span class="nb">chmod</span> +x file.bin </code></pre></div></div> <p>Executing this binary yields the folloing output (user input in &lt;angle brackets&gt;):</p> <pre><code class="language-stdout">$ ./file.bin Welcome to HackUCF's first RE challenge :) Please enter the password to receive the flag: &lt;password&gt; Sorry, wrong password :( </code></pre> <p>Now, we know we need a password to continue. I first run <code class="language-plaintext highlighter-rouge">strings</code> on the binary to see if anything pops out:</p> <pre><code class="language-stdout">$ strings file.bin /lib64/ld-linux-x86-64.so.2 mgUa libc.so.6 puts __stack_chk_fail stdin printf fgets calloc strlen memcpy __cxa_finalize strcmp __libc_start_main free GLIBC_2.14 GLIBC_2.4 GLIBC_2.2.5 _ITM_deregisterTMCloneTable __gmon_start__ _ITM_registerTMCloneTable u+UH []A\A]A^A_ pass{i_d0nt_KnOw} Welcome to HackUCF's first RE challenge :) Please enter the password to receive the flag: You're getting there! Sorry, wrong password :( Congrats! You guessed the password correctly, so here's the flag: %s :*3$" GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 [...truncated...] </code></pre> <p>We can see the string <code class="language-plaintext highlighter-rouge">pass{i_d0nt_KnOw}</code>. Let’s try that string:</p> <pre><code class="language-stdout">$ ./file.bin Welcome to HackUCF's first RE challenge :) Please enter the password to receive the flag: &lt;pass{i_d0nt_KnOw}&gt; You're getting there! </code></pre> <p>We can see we are on the right track, but we’re missing <em>something</em>.</p> Tue, 26 Oct 2021 00:00:00 +0000 http://divi.sh/2021/10/26/re1.html http://divi.sh/2021/10/26/re1.html HackUCF writeup re CyberChallenge EmojiBrowser Writeup <p><em>EmojiBrowser</em> was a path traversal challenge themed after emoji, because everyone <em>totally</em> loved the emoji challenges from last year.</p> <hr /> <p>When on the home Web page, the player should notice that the image preview calls an external endpoint, <code class="language-plaintext highlighter-rouge">GET /emoji/:emoji_codepoint</code>. On trying an invalid URL on this endpoint, you will be shown a “default” emoji, <code class="language-plaintext highlighter-rouge">index.svg</code> in the given directory. This can be found in the file name when trying to download the emoji.</p> <p>If a player tries to use a URL-encoded path traversal, they will notice that they get a normal 404 page; it renders a normal 404 page that is not related to the <code class="language-plaintext highlighter-rouge">/emoji/*</code> endpoint(s). However, if they double-URL-encode, they can begin to traverse paths, with an <code class="language-plaintext highlighter-rouge">index.svg</code> image to help them traverse the project directory. They can eventually find the flag file at the project’s root directory:</p> <pre><code class="language-url">http://localhost:44077/emoji/..%252F..%252F..%252F </code></pre> <p>From here, the player needs to somehow bypass the <code class="language-plaintext highlighter-rouge">.svg</code> extension hard-code. This can be done by using null characters, as alluded in the JavaScript. The null sentinal will then end the string prematurely, allowing us to drop the <code class="language-plaintext highlighter-rouge">.svg</code> extension mandate.</p> <pre><code class="language-url">http://localhost:44077/emoji/..%252F..%252F..%252Fflag.txt%00 </code></pre> Sun, 19 Sep 2021 00:00:00 +0000 http://divi.sh/2021/09/19/emojibrowser.html http://divi.sh/2021/09/19/emojibrowser.html SunshineCTF writeup DownUnder Writeup <p>This challenge is designed to be an introduction to GBA reverse engineering and an exploration of emulation tools. Text is printed off-screen, which the player must view by using tools built into emualtors like mGBA.</p> <hr /> <h2 id="solution">Solution</h2> <p>The GBA emulator recommended for this challenge is <a href="https://mgba.io/">mGBA</a>, but any GBA emulator with debugging tools should work as well.</p> <ol> <li>Open the ROM in mGBA.</li> <li>Go to Tools -&gt; View Map</li> <li>The flag will be printed on the bottom of the map.</li> </ol> <p><img src="/images/blog/sun/downunder.jpg" alt="Flag from mGBA" /></p> <p><strong>Now, why does this work?</strong> For that, let’s look at how GBA graphics work.</p> <p>There are a total of six modes: three tile modes and three bitmap modes. For us, the former is what we care about. The tile modes allow us to use sprites and place them anywhere on the screen, including off the screeen. <em>But why would we ever put anything off screen?</em> For scrolling. Think of how Super Mario Bros. scrolls to the right: that’s a hardware feature on the GBA!</p> <p>So, I wrote the flag outside of the visible part of the screen. Many emulator debugging tools, such as mGBA’s allow users to view everything on the current map, including what’s off screen. This makes it possible to view the flag without having to manipulate the scrolling registers.</p> <p>Alternatively, players may manipulate the register responsible for scrolling directly. This is handled by address <code class="language-plaintext highlighter-rouge">0x4000012</code> (scroll BG0 vertically), which emulators can also write to.</p> <p>For more information on tile maps, you can read <a href="http://ianfinlayson.net/class/cpsc305/notes/13-tiles">this article</a>.</p> <h2 id="embedded-hint">Embedded Hint</h2> <p>There is an embedded hint in case a user decides to run <code class="language-plaintext highlighter-rouge">strings</code> on the ROM. This will yield a partial flag with the hint “check the map” nearby. Due to how the challenge is written, it may be possible to guess the full flag without executing the ROM (such as using static analysis in tools like Ghidra), but that’s no fun, now, is it?</p> <h2 id="aside-development">Aside: Development</h2> <p>This challenge was written using the <a href="https://www.coranac.com/tonc/text/setup.htm">devkitPro GBA SDK</a> and the <a href="https://github.com/Sterophonick/HeartLib">HeartLib</a> helper library, which massively assisted in the development of this challenge. If you wish to compile this challenge for yourself, peek at the C code powering it, or even use it to base your own GBA development endeavors, the source code can be found <a href="https://github.com/SunshineCTF/SunshineCTF-2021-Public/tree/master/Misc/DownUnder">on the SunshineCTF GitHub</a>.</p> Sun, 19 Sep 2021 00:00:00 +0000 http://divi.sh/2021/09/19/downunder.html http://divi.sh/2021/09/19/downunder.html SunshineCTF writeup TSATechie Writeup <p>This is a multiple-part challenge, most of it which is done offline. The challenge is structured into three main components:</p> <ul> <li>Hand-crafting a serial number based on given information</li> <li>Using the newly-created serial number to generate an iPhone’s UDID</li> <li>Using this UDID, on top of the given iPhone model, to fake a response from a device enrollment challenge</li> </ul> <h3 id="a-foreward">A foreward</h3> <p>The serial number and UDID in this challenge are not of iPhones owned by anyone. While it’s possible for the serial number to eventually be valid, it was intentionally chosen to be at a future date. The MAC addresses, while theoretically valid (they <em>do</em> belong to Apple, are random.</p> <h2 id="creating-a-serial-number">Creating a Serial Number</h2> <p>The PDF that players are given is designed to reveal all the information needed to craft the rest of the serial number, and later, the UDID.</p> <p>The serial number given in the PDF is <code class="language-plaintext highlighter-rouge">##T##621J##H</code>. The goal is to find the missing characters.</p> <p>As Apple does not document their serial number format publicly, third-party resources have to be relied on. Tab-TV.com has a good, albeit somewhat inaccurate (some information omitted), reference image that says what each of these missing fields are, which can be found with a Google search.</p> <p>The first two missing characters maps to the Foxconn factory ID in Zhengzhou (<code class="language-plaintext highlighter-rouge">FK</code>). This information is revealed in multiple ways:</p> <ul> <li>Plus Code: The <code class="language-plaintext highlighter-rouge">HV55+C8</code> identifier in the “seized note” is a few blocks away from the factory.</li> <li>Flight History: The original departure location is meant to originate near the factory.</li> </ul> <p>The next two missing characters is the production week of the device (<code class="language-plaintext highlighter-rouge">DP</code>). This information can also be found online and the solution is provided redundantly:</p> <ul> <li>Flight History: All dates given are in the same week.</li> <li>Information: Seizure date is also within the expected week.</li> </ul> <p>The last two missing characters is the device model. Here, it’s an <a href="https://reincubate.com/lookup/FKTDP621JC6H/">iPhone 8</a>, as given in the Seized Device section. The numerical identifier for the model (<code class="language-plaintext highlighter-rouge">JC6</code>) can be found on the Tab-TV diagram, but is also colloborated by a few pieces of information:</p> <ul> <li>Device: <code class="language-plaintext highlighter-rouge">iPhone10,1</code> is the device’s model and maps to an iPhone 8.</li> <li>Flight History: The layover in Japan is a hint that this is a Japanese iPhone. This is mostly trivia, but can be used for checking the final serial number.</li> </ul> <p>Now that the serial number is found, we can craft the UDID.</p> <h2 id="creating-a-udid">Creating a UDID</h2> <p>The <a href="https://www.theiphonewiki.com/wiki/UDID">UDID</a> is a unique identifier for each iPhone. The iPhone 8 uses an older format for UDIDs, which can be summarized as:</p> <pre><code class="language-txt">UDID = SHA1(serial + ECID + wifiMac + bluetoothMac) </code></pre> <p>The ECID and both MAC addresses given are already in the correct format, so this should be a simple excersize in string concatenation and hashing.</p> <p>The string that should end up getting hashed is:</p> <pre><code class="language-txt">FKTDP621JC6H284313561763971814:88:e6:ac:6314:88:e6:ac:64 </code></pre> <p>This should output the UDID of the hypothetical device, which is <code class="language-plaintext highlighter-rouge">1d87930059bad8eab14bebb81d7680c02a299ac6</code>.</p> <p>This can be verified in the PDF, where the last five characters are exposed for this reason.</p> <h2 id="device-enrollment-challenge">Device Enrollment Challenge</h2> <p>The Web server linked is mostly static files, except for the endpoint at <code class="language-plaintext highlighter-rouge">POST /udid/verify</code>. This endpoint is linked inside of the <code class="language-plaintext highlighter-rouge">enrollment.mobileconfig</code> file served by the web server.</p> <p>This endpoint expects a request body that is a PLIST in the following format:</p> <div class="language-plist highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">&lt;</span><span class="err">!</span><span class="mh">D</span><span class="err">O</span><span class="mh">C</span><span class="err">TYP</span><span class="mh">E </span><span class="err">plist</span><span class="mh"> </span><span class="err">PU</span><span class="mh">B</span><span class="err">LI</span><span class="mh">C </span><span class="err">"-//</span><span class="mh">A</span><span class="err">ppl</span><span class="mh">e</span><span class="err">//</span><span class="mh">D</span><span class="err">T</span><span class="mh">D </span><span class="err">PLIST</span><span class="mh"> 1</span><span class="err">.</span><span class="mh">0</span><span class="err">//</span><span class="mh">E</span><span class="err">N"</span><span class="mh"> </span><span class="err">"http://www.</span><span class="mh">a</span><span class="err">ppl</span><span class="mh">e</span><span class="err">.</span><span class="mh">c</span><span class="err">om/</span><span class="mh">D</span><span class="err">T</span><span class="mh">D</span><span class="err">s/Prop</span><span class="mh">e</span><span class="err">rtyList-</span><span class="mh">1</span><span class="err">.</span><span class="mh">0</span><span class="err">.</span><span class="mh">d</span><span class="err">t</span><span class="mh">d</span><span class="err">"</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">plist</span><span class="mh"> </span><span class="err">v</span><span class="mh">e</span><span class="err">rsion="</span><span class="mh">1</span><span class="err">.</span><span class="mh">0</span><span class="err">"</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="mh">d</span><span class="err">i</span><span class="mh">c</span><span class="err">t</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">k</span><span class="mh">e</span><span class="err">y</span><span class="p">&gt;</span><span class="l">UDID</span><span class="p">&lt;</span><span class="err">/k</span><span class="mh">e</span><span class="err">y</span><span class="mh"> </span><span class="err">&lt;string</span><span class="p">&gt;</span><span class="l">1d87930059bad8eab14bebb81d7680c02a299ac6</span><span class="p">&lt;</span><span class="err">/string</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">k</span><span class="mh">e</span><span class="err">y</span><span class="p">&gt;</span><span class="l">PRODUCT</span><span class="p">&lt;</span><span class="err">/k</span><span class="mh">e</span><span class="err">y</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">string</span><span class="p">&gt;</span><span class="l">iPhone10</span><span class="err">,</span><span class="l">1</span><span class="p">&lt;</span><span class="err">/string</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">/</span><span class="mh">d</span><span class="err">i</span><span class="mh">c</span><span class="err">t</span><span class="p">&gt;</span><span class="w"> </span><span class="p">&lt;</span><span class="err">/plist</span><span class="p">&gt;</span><span class="w"> </span></code></pre></div></div> <p>This format can be scraped with a MITM proxy tool like Burp Suite or Charles Proxy running on an iPhone completing the enrollment challenge, however, the body will be sent as a binary PLIST. Additional work may be neccessary to convert it to plaintext on non-Apple software. The response is also documented on Apple’s website <a href="https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html#//apple_ref/doc/uid/TP40009505-CH4-SW6">here</a>, but it’s quite hard to find so it shouldn’t be an expected solution.</p> <p><em>It is worth noting that the device enrollment challenge only gets the UDID and model of the device and does not store this data nor is the profile persistent. It is only compared with the known UDID.</em></p> <p>Sending a body in this format (either in plaintext or as a binary) will reveal the flag. Both the UDID and Product fields must be accurate for the flag to be shown.</p> Wed, 11 Nov 2020 00:00:00 +0000 http://divi.sh/2020/11/11/tsatechie.html http://divi.sh/2020/11/11/tsatechie.html SunshineCTF writeup PasswordPandemonium Writeup <p>This is a pretty simple challenge. You have to find a password that meets the requirements below:</p> <ul> <li>Minimum length of 8</li> <li>Maximum length of 32</li> <li>Must include at least one letter</li> <li>Must include &gt;= 2 special characters</li> <li>Must include a prime amount of numbers</li> <li>Must have even amount of capital and lowercase characters</li> <li>Must include an emoji</li> <li>MD5 hash must start with a number</li> <li>Must be valid JavaScript that evaluates to True</li> <li>Must be JavaScript that does not evaluate to a String</li> <li>Must be a palindrome</li> </ul> <p>This challenge should be pretty self-explanatory. The only thing that may be worth noting are the last two requirements, which the following should be noted:</p> <ul> <li>This challenge uses <a href="https://bellard.org/quickjs/quickjs.html">QuickJS</a> to validate JavaScript. While most JavaScript features should be supported, some methods like <code class="language-plaintext highlighter-rouge">console.log</code> and all DOM operations are not considered valid. However, those solutions wouldn’t be valid anyways, as they wouldn’t likely evaluate to True.</li> <li><code class="language-plaintext highlighter-rouge">1</code> is evaluated as True, as are strings.</li> <li>To make the password palindromic, you can abuse inline comments.</li> </ul> <p>Some possible solutions include:</p> <ul> <li><code class="language-plaintext highlighter-rouge">(_=&gt;(1))()//Xx🐬xX//)())1(&gt;=_(</code></li> <li><code class="language-plaintext highlighter-rouge">1//Ab✔bA//1</code></li> <li><code class="language-plaintext highlighter-rouge">()=&gt;{}//Ab1👋1bA//}{&gt;=)(</code></li> </ul> <p>Submitting a valid password (and a non-empty username) will reveal the flag. Otherwise, the most “minor” invalid rule would be displayed to the user.</p> Wed, 11 Nov 2020 00:00:00 +0000 http://divi.sh/2020/11/11/passwordpandemonium.html http://divi.sh/2020/11/11/passwordpandemonium.html SunshineCTF writeup PivotPlaneHinge Writeup <h1 id="a-foreward">A foreward.</h1> <p>I tend to be more experienced with Web development, so I figured this would be a good challenge to try to attempt. However, before now, I never worked with WebSockets in any capacity (which was the core of this challenge), nor have I worked extensively with Burp Suite (I tend to use Charles Proxy more often). If beginners take anything out of this, is to just <em>try</em>! I see CTFs as a learning tool more than anything, so it ultimately doesn’t matter if you fail to solve a challenge. What matters is that you <em>learned</em> something.</p> <p>This challenge eventually inspired me to take on a <a href="https://github.com/jeffreydivi/VoteyMcVotespace">WebSockets project a week or two later for KnightHacks 2020</a>.</p> <h2 id="first-observations">First Observations</h2> <p><img src="/images/blog/pph/0.png" alt="Top of challenge page." /></p> <p>When loading the page, you are given an edit of the TempleOS website with a text box to control a WebSockets connection. All connection activities are then written to the top of the page.</p> <p>For web debugging, I tend to use Charles Proxy, but it complained about the lack of secure WebSockets on my version, so I opted to use <em>Burp Suite</em>.</p> <p>I noticed that the button that said <code class="language-plaintext highlighter-rouge">cat flag.txt</code> was just sending that string through the WebSockets connection and the server behaved differently as a result. I also noticed that the server allowed Burp to edit the contents of the WebSocket messages between the client and server, meaning they aren’t being validated for integrity. This made me think: <em>maybe we can spoof a WebSockets message?</em></p> <h3 id="initial-response-on-connection">Initial Response on Connection</h3> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w"> </span><span class="nl">"introText"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Received websocket connect requestm: http://pivotplanehinge.ctf.cuctf.io:8079 : map[Accept:[*/*] Accept-Encoding:[gzip, deflate] Accept-Language:[en-US,en;q=0.5] Cache-Control:[no-cache] Connection:[keep-alive, Upgrade] Dnt:[1] Origin:[http://pivotplanehinge.ctf.cuctf.io:8079] Pragma:[no-cache] Sec-Websocket-Extensions:[permessage-deflate] Sec-Websocket-Key:[MS16YSchcX4qELfLc6NWoQ==] Sec-Websocket-Version:[13] Upgrade:[websocket] User-Agent:[Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0]] Host: pivotplanehinge.ctf.cuctf.io:8079"</span><span class="p">,</span><span class="w"> </span><span class="nl">"connectedHosts"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"admin 8.8.8.8"</span><span class="p">,</span><span class="w"> </span><span class="s2">"user1 pivotplanehinge.ctf.cuctf.io:8079"</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">}</span><span class="w"> </span></code></pre></div></div> <p>I also noticed the <code class="language-plaintext highlighter-rouge">connectedHosts</code> property with an <code class="language-plaintext highlighter-rouge">admin</code> user at <code class="language-plaintext highlighter-rouge">8.8.8.8</code> and <code class="language-plaintext highlighter-rouge">user1</code> at the challenge domain. Maybe this is what we can spoof?</p> <h2 id="spoofing-the-hostname">Spoofing the Hostname</h2> <h3 id="find-and-replace">Find-and-replace</h3> <p>My first attempt at spoofing the hostname (so I can connect as <code class="language-plaintext highlighter-rouge">admin</code>) was to replace all instances of <code class="language-plaintext highlighter-rouge">pivotplanehinge.ctf.cuctf.io</code> in the request/response with <code class="language-plaintext highlighter-rouge">8.8.8.8</code> (string replacement). However, this messes up the HTTP connection and redirects the page to <code class="language-plaintext highlighter-rouge">8.8.8.8</code> (which we don’t want). I tried a more focused find-and-replace to see what would be accepted, but this was fruitless. Some things were fine to edit (such as the user agent) while other ones (like anything referencing WebSockets) unsurprisingly broke WebSockets.</p> <h3 id="accessing-from-ip">Accessing from IP</h3> <p>I also tried to access the challenge from its IP address, <code class="language-plaintext highlighter-rouge">35.186.188.9</code>. The page loads, but no WebSocket connections are accepted.</p> <h3 id="editing-the-hosts-file">Editing the <code class="language-plaintext highlighter-rouge">hosts</code> file</h3> <p>I added a temporary entry to my <code class="language-plaintext highlighter-rouge">hosts</code> file to redirect the hostname <code class="language-plaintext highlighter-rouge">pph</code> to the challenge IP. The challenge did load as expected.</p> <p>I also tried to replace <code class="language-plaintext highlighter-rouge">pph</code> in my entry with <code class="language-plaintext highlighter-rouge">8.8.8.8</code>. This did not work, and I’m shocked it didn’t break Windows.</p> <h3 id="powershell-commands">PowerShell commands</h3> <p>After this, I tried to see if there were any Windows commands that can change routing so <code class="language-plaintext highlighter-rouge">8.8.8.8</code> loads the challenge page. After some searching, I found the <code class="language-plaintext highlighter-rouge">netsh</code> and <code class="language-plaintext highlighter-rouge">route</code> utilities, neither which did the trick.</p> <h3 id="back-to-burp-suite">Back to <em>Burp Suite</em></h3> <p>My initial attempt to search for a solution that used Burp Suite was fruitless, but after a while of searching, I stumbled upon <a href="https://forum.portswigger.net/thread/proxy-match-and-replace-target-ip-address-port-of-request-not-just-host-header-be63a7f1">this forum post</a>, which was the key to this challenge. I followed the directions it suggested to configure request handling to redirect to the challenge IP.</p> <p><img src="/images/blog/pph/1.png" alt="Configuring request handling in Burp Suite" /></p> <p>This did the trick nicely! I was able to load the challenge from <code class="language-plaintext highlighter-rouge">8.8.8.8</code>, sent the <code class="language-plaintext highlighter-rouge">cat flag.txt</code> command, and I got the flag! 🎉</p> <p><img src="/images/blog/pph/2.png" alt="Loading PivotPlaneHinge from 8.8.8.8" /></p> Sat, 24 Oct 2020 00:00:00 +0000 http://divi.sh/2020/10/24/pivotplanehinge.html http://divi.sh/2020/10/24/pivotplanehinge.html CUCTF writeup Line of Best Fit in Microsoft Office 2016 <p>Microsoft Office 2016 was a major update for the Office suite and a good amount has changed, including how to plot a “Line of Best Fit.” This guide will walk you through how to add one to your graphs with ease, as well as some other useful elements like axis labels.</p> <!--more--> <h2 id="instructions">Instructions</h2> <p>This tutorial already assumes you have your graph created with data added. Your screen might look something like this (don’t worry: this is done in a very similar way in Microsoft Word, too):</p> <p><img src="/images/blog/office/01.png" alt="" /></p> <p>Make sure you are selecting the graph. Once you do so, you are able to go to <code class="language-plaintext highlighter-rouge">Chart Design</code>. Click it, and it should change the ribbon menu to show more chart-oriented options.</p> <p>One of these options are to <code class="language-plaintext highlighter-rouge">Add Chart Element</code>. Click this, and you should be prompted with several options.</p> <p><img src="/images/blog/office/02.png" alt="" /></p> <p>Go to <code class="language-plaintext highlighter-rouge">Trendline</code>, and then choose the trendline you want to add. In this case, we are going to add a <code class="language-plaintext highlighter-rouge">Linear</code> trendline.</p> <p>Doing so should create a dotted-line between your points, which is your Line of Best Fit.</p> <p><img src="/images/blog/office/03.png" alt="" /></p> <p>Now your Line of Best Fit is in your graph! However, there are other chart elements you can add or remove. For example, you can add axis labels, a legend (key), and remove or add gridlines. Some of these are quite useful, so adding them is probably a smart idea, especially for a school science class!</p> Wed, 29 Aug 2018 00:00:00 +0000 http://divi.sh/2018/08/29/office.html http://divi.sh/2018/08/29/office.html Tutorial Office