<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nicholas</title>
    <description>The latest articles on DEV Community by Nicholas (@bishopexe).</description>
    <link>https://dev.to/bishopexe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F329434%2F1fb05a2c-aafe-4b67-9faa-806d4189c7e5.png</url>
      <title>DEV Community: Nicholas</title>
      <link>https://dev.to/bishopexe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bishopexe"/>
    <language>en</language>
    <item>
      <title>GDB notes etc</title>
      <dc:creator>Nicholas</dc:creator>
      <pubDate>Fri, 29 May 2020 15:45:43 +0000</pubDate>
      <link>https://dev.to/bishopexe/gdb-notes-etc-5321</link>
      <guid>https://dev.to/bishopexe/gdb-notes-etc-5321</guid>
      <description>&lt;h1&gt;
  
  
  gdb cheatsheet
&lt;/h1&gt;

&lt;h3&gt;
  
  
  put this in .gdbinit
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set disassembly-flavor intel
set disassemble-next-line on

set history save on
set print pretty on
set pagination off
set confirm off

define xxd
dump binary memory dump.bin $arg0 $arg0+$arg1
shell xxd dump.bin
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  info files
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info files                                                                                         
Symbols from "/opt/pew".                                                                                 
Local exec file:                                                                                         
        `/opt/pew', file type elf64-x86-64.                                                              
        Entry point: 0x400ae0                                                                            
        0x0000000000400238 - 0x0000000000400254 is .interp                                               
        0x0000000000400254 - 0x0000000000400274 is .note.ABI-tag                                         
        0x0000000000400274 - 0x0000000000400298 is .note.gnu.build-id                                    
        0x0000000000400298 - 0x00000000004002c0 is .gnu.hash
        0x00000000004002c0 - 0x0000000000400548 is .dynsym
        0x0000000000400548 - 0x0000000000400693 is .dynstr
        0x0000000000400694 - 0x00000000004006ca is .gnu.version
        ...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  breakpoints
&lt;/h3&gt;

&lt;h4&gt;
  
  
  create breakpoint
&lt;/h4&gt;

&lt;p&gt;note use of &lt;code&gt;*&lt;/code&gt; to indicate memory address.&lt;br&gt;
also not use of leading hex &lt;code&gt;0x&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) break *0x400ae0                               
Breakpoint 1 at 0x400ae0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  list breakpoints
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400ae0
        breakpoint already hit 1 time
2       breakpoint     keep y   0x0000000000403d86
3       breakpoint     keep y   0x0000000000403ea5 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  delete breakpoint
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400ae0 
        breakpoint already hit 1 time
2       breakpoint     keep y   0x0000000000403d86 
        breakpoint already hit 1 time
3       breakpoint     keep y   0x0000000000403ea5 
4       breakpoint     keep y   0x00000000003d7e30 
5       breakpoint     keep y   0x0000000000403e4f 
(gdb) delete breakpoints 4
(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400ae0 
        breakpoint already hit 1 time
2       breakpoint     keep y   0x0000000000403d86 
        breakpoint already hit 1 time
3       breakpoint     keep y   0x0000000000403ea5 
5       breakpoint     keep y   0x0000000000403e4f 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  run
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) run
Starting program: /opt/pew                                                                   
Breakpoint 1, 0x0000000000400ae0 in ?? ()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  continue
&lt;/h3&gt;

&lt;p&gt;resume execution after pausing at a breakpoint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) c
Continuing.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  jump
&lt;/h3&gt;

&lt;p&gt;resume execution from a given address.&lt;br&gt;
this is like &lt;code&gt;set $pc = 0xADDR; continue;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;note the use of &lt;code&gt;*&lt;/code&gt; to indicate the raw address from which to start.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) jump *0x403EC2
Continuing at 0x403ec2.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  registers
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info registers
rax            0x1c     28
rbx            0x0      0
rcx            0x7fffffffedb8   140737488350648
rdx            0x7ffff7de7ab0   140737351940784
rsi            0x1      1
rdi            0x7ffff7ffe168   140737354129768
rbp            0x0      0x0
rsp            0x7fffffffeda0   0x7fffffffeda0
r8             0x7ffff7ffe6f8   140737354131192
r9             0x0      0
r10            0x3c     60
r11            0xb      11
r12            0x400ae0 4197088
r13            0x7fffffffeda0   140737488350624
r14            0x0      0
r15            0x0      0
rip            0x400ae0 0x400ae0
eflags         0x202    [ IF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  disassemble
&lt;/h3&gt;

&lt;p&gt;by default, disassembles entire surrounding function.&lt;/p&gt;

&lt;p&gt;use commas to separate arguments.&lt;/p&gt;

&lt;p&gt;use &lt;code&gt;+length&lt;/code&gt; to specify number of bytes to disassemble.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) disassemble 0x400ae0,+0x10
Dump of assembler code from 0x400ae0 to 0x400af0:
=&amp;gt; 0x0000000000400ae0:  xor    %ebp,%ebp
   0x0000000000400ae2:  mov    %rdx,%r9
   0x0000000000400ae5:  pop    %rsi
   0x0000000000400ae6:  mov    %rsp,%rdx
   0x0000000000400ae9:  and    $0xfffffffffffffff0,%rsp
   0x0000000000400aed:  push   %rax
   0x0000000000400aee:  push   %rsp
   0x0000000000400aef:  mov    $0x403f80,%r8
End of assembler dump.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;default flavor is AT&amp;amp;T syntax. use &lt;code&gt;set disassembly-flavor intel&lt;/code&gt; to set to Intel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) set disassembly-flavor intel
(gdb) disassemble 0x400ae0,+0x10
Dump of assembler code from 0x400ae0 to 0x400af0:
=&amp;gt; 0x0000000000400ae0:  xor    ebp,ebp
   0x0000000000400ae2:  mov    r9,rdx
   0x0000000000400ae5:  pop    rsi
   0x0000000000400ae6:  mov    rdx,rsp
   0x0000000000400ae9:  and    rsp,0xfffffffffffffff0
   0x0000000000400aed:  push   rax
   0x0000000000400aee:  push   rsp
   0x0000000000400aef:  mov    r8,0x403f80
End of assembler dump.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;enable showing of next instruction on each break/step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) set disassemble-next-line on
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  single step
&lt;/h3&gt;

&lt;h4&gt;
  
  
  step over
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TODO: nexti
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  step into
&lt;/h4&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TODO: stepi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  memory map
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info proc mappings         
process 8                        
Mapped address spaces:           

          Start Addr           End Addr       Size     Offset objfile                                                                  
            0x400000           0x405000     0x5000        0x0 /opt/pew                                                                 
            0x604000           0x605000     0x1000     0x4000 /opt/pew                                                                 
            0x605000           0x614000     0xf000     0x5000 /opt/pew                                                                 
      0x7ffff77e4000     0x7ffff79a4000   0x1c0000        0x0 /lib/x86_64-linux-gnu/libc-2.23.so                                       
      0x7ffff79a4000     0x7ffff7ba4000   0x200000   0x1c0000 /lib/x86_64-linux-gnu/libc-2.23.so                                       
      0x7ffff7ba4000     0x7ffff7ba8000     0x4000   0x1c0000 /lib/x86_64-linux-gnu/libc-2.23.so                                       
      0x7ffff7ba8000     0x7ffff7baa000     0x2000   0x1c4000 /lib/x86_64-linux-gnu/libc-2.23.so                                       
      0x7ffff7baa000     0x7ffff7bae000     0x4000        0x0      
      0x7ffff7bae000     0x7ffff7bd3000    0x25000        0x0 /lib/x86_64-linux-gnu/libtinfo.so.5.9                                    
      0x7ffff7bd3000     0x7ffff7dd2000   0x1ff000    0x25000 /lib/x86_64-linux-gnu/libtinfo.so.5.9                                    
      0x7ffff7dd2000     0x7ffff7dd6000     0x4000    0x24000 /lib/x86_64-linux-gnu/libtinfo.so.5.9                                    
      0x7ffff7dd6000     0x7ffff7dd7000     0x1000    0x28000 /lib/x86_64-linux----Type &amp;lt;return&amp;gt; to continue, or q &amp;lt;return&amp;gt; to quit--- 
gnu/libtinfo.so.5.9              
      0x7ffff7dd7000     0x7ffff7dfd000    0x26000        0x0 /lib/x86_64-linux-gnu/ld-2.23.so                                         
      0x7ffff7ff0000     0x7ffff7ff3000     0x3000        0x0      
      0x7ffff7ff6000     0x7ffff7ff8000     0x2000        0x0      
      0x7ffff7ff8000     0x7ffff7ffa000     0x2000        0x0 [vvar]                                                                   
      0x7ffff7ffa000     0x7ffff7ffc000     0x2000        0x0 [vdso]                                                                   
      0x7ffff7ffc000     0x7ffff7ffd000     0x1000    0x25000 /lib/x86_64-linux-gnu/ld-2.23.so                                         
      0x7ffff7ffd000     0x7ffff7ffe000     0x1000    0x26000 /lib/x86_64-linux-gnu/ld-2.23.so                                         
      0x7ffff7ffe000     0x7ffff7fff000     0x1000        0x0      
      0x7ffffffde000     0x7ffffffff000    0x21000        0x0 [stack]                                                                  
  0xffffffffff600000 0xffffffffff601000     0x1000        0x0 [vsyscall]                                   
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  dump hex
&lt;/h3&gt;

&lt;p&gt;via: &lt;a href="https://stackoverflow.com/a/9234007/87207"&gt;https://stackoverflow.com/a/9234007/87207&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;requires &lt;code&gt;xxd&lt;/code&gt;, which comes from &lt;code&gt;vim-common&lt;/code&gt; on ubuntu.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) define xxd
&amp;gt;dump binary memory dump.bin $arg0 $arg0+$arg1
&amp;gt;shell xxd dump.bin
&amp;gt;end
(gdb) xxd &amp;amp;j 10 
0000000: 0000 0000 0000 0000 0000 0000 4d8c a7f7  ............M...
0000010: ff7f 0000 0000 0000 0000 0000 c8d7 ffff  ................
0000020: ff7f 0000 0000 0000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;raw lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;define xxd
dump binary memory dump.bin $arg0 $arg0+$arg1
shell xxd dump.bin
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  dump string
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) x/s 0x403F9A
0x403f9a:       "%02X"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  dump bits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;dump: &lt;code&gt;x/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;format bits: &lt;code&gt;t&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;from: &lt;code&gt;$rax&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;each element is a byte: &lt;code&gt;b&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;eight times: &lt;code&gt;8&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) x/8tb $rax
0x614010:       00000000        01111000        00001000        00001000        01111000     00001000 00001000        00000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;other formats:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;o - octal
x - hexadecimal
d - decimal
u - unsigned decimal
t - binary
f - floating point
a - address
c - char
s - string
i - instruction
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;other element sizes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;b - byte
h - halfword (16-bit value)
w - word (32-bit value)
g - giant word (64-bit value)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;via: &lt;a href="http://visualgdb.com/gdbreference/commands/x"&gt;http://visualgdb.com/gdbreference/commands/x&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  backtrace
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) backtrace
#0  0x0000000000403d86 in ?? ()
#1  0x00007ffff7804830 in __libc_start_main (main=0x403d86, argc=1, argv=0x7fffffffed68, init=&amp;lt;optimized out&amp;gt;, fini=&amp;lt;optimized out&amp;gt;, rtld_fini=&amp;lt;optimized out&amp;gt;, stack_end=0x7fffffffed58) at ../csu/libc-start.c:291
#2  0x0000000000400b09 in ?? ()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  info frame
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(gdb) info frame
Stack level 0, frame at 0x7fffffffec90:
 rip = 0x403d86; saved rip = 0x7ffff7804830
 called by frame at 0x7fffffffed50
 Arglist at 0x7fffffffec80, args: 
 Locals at 0x7fffffffec80, Previous frame's sp is 0x7fffffffec90
 Saved registers:
  rip at 0x7fffffffec88
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>debugging</category>
      <category>reversing</category>
      <category>ctf</category>
    </item>
    <item>
      <title>Fully Remove Zoom from your Mac</title>
      <dc:creator>Nicholas</dc:creator>
      <pubDate>Thu, 16 Apr 2020 19:54:03 +0000</pubDate>
      <link>https://dev.to/bishopexe/fully-remove-zoom-from-your-mac-1dig</link>
      <guid>https://dev.to/bishopexe/fully-remove-zoom-from-your-mac-1dig</guid>
      <description>&lt;p&gt;A small Bash script I found to remove Zoom from MacOS&lt;/p&gt;

&lt;p&gt;Credit goes to &lt;a href="https://github.com/kris-anderson"&gt;https://github.com/kris-anderson&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env bash

######################
### make it pretty ###
######################

if [ "$TERM" == "dumb" ]; then
    COL_RESET=""
    COL_GREEN=""
    COL_YELLOW=""
    COL_RED=""
    BOLD=""
    NORMAL=""
else
    ESC_SEQ="\x1b["
    COL_RESET=$ESC_SEQ"39;49;00m"
    COL_GREEN=$ESC_SEQ"32;01m"
    COL_YELLOW=$ESC_SEQ"33;01m"
    COL_RED=$ESC_SEQ"31;01m"
    BOLD=$(tput bold)
    NORMAL=$(tput sgr0)
fi

###############
### helpers ###
###############

function not_found() {
    echo -e "${COL_GREEN}[not found]${COL_RESET} " #$1
}

function deleted() {
    echo -e "${COL_YELLOW}[deleted]${COL_RESET} " #$1
}

function terminated() {
    echo -e "${COL_RED}[terminated]${COL_RESET} " #$1
}

loggedInUser=$(stat -f "%Su" /dev/console)

###################
### remove zoom ###
###################

# prompt the user for their password if required

echo ""
echo -e "${BOLD}Please Note:${NORMAL} This script will prompt for your password if you are not already running as sudo."

sudo -v

# kill the Zoom process if it's running

echo ""
echo -e "${BOLD}Checking to see if the Zoom process is running...${NORMAL}"

if pgrep -i zoom &amp;gt;/dev/null; then

    sudo kill "$(pgrep -i zoom)"
    printf "Zoom process "
    terminated

else

    printf "Zoom process "
    not_found

fi

# remove the Zoom application

echo ""
echo -e "${BOLD}Removing the Zoom Application...${NORMAL}"

declare -a ZOOM_APPLICATION=(
    "/Applications/zoom.us.app"
    "/Users/$loggedInUser/Applications/zoom.us.app"
)

for ENTRY in "${ZOOM_APPLICATION[@]}"; do
    if [ -f "${ENTRY}" ] || [ -d "${ENTRY}" ]; then
        sudo rm -rf "${ENTRY}"
        printf "%s " "${ENTRY}"
        deleted
    else
        printf "%s " "${ENTRY}"
        not_found
    fi
done

# unload the Zoom Audio Device and remove the kext file

echo ""
echo -e "${BOLD}Removing the Zoom Audio Device...${NORMAL}"

if [ -f "/System/Library/Extensions/ZoomAudioDevice.kext" ] || [ -d "/System/Library/Extensions/ZoomAudioDevice.kext" ]; then

    sudo kextunload -b zoom.us.ZoomAudioDevice
    sudo rm -rf "/System/Library/Extensions/ZoomAudioDevice.kext"
    printf "/System/Library/Extensions/ZoomAudioDevice.kext file "
    deleted

else

    printf "/System/Library/Extensions/ZoomAudioDevice.kext file "
    not_found

fi

# remove the Zoom Plugin

echo ""
echo -e "${BOLD}Removing Zoom Plugins...${NORMAL}"

declare -a ZOOM_PLUGIN=(
    "/Library/Internet Plug-Ins/ZoomUsPlugIn.plugin"
    "/Users/$loggedInUser/Library/Internet Plug-Ins/ZoomUsPlugIn.plugin"
)

for ENTRY in "${ZOOM_PLUGIN[@]}"; do
    if [ -f "${ENTRY}" ] || [ -d "${ENTRY}" ]; then
        sudo rm -rf "${ENTRY}"
        printf "%s " "${ENTRY}"
        deleted
    else
        printf "%s " "${ENTRY}"
        not_found
    fi
done

# remove Zoom defaults

echo ""
echo -e "${BOLD}Removing Zoom defaults preferences...${NORMAL}"

if ! sudo defaults read us.zoom.xos 2&amp;gt;&amp;amp;1 | grep -Eq "Domain us.zoom.xos does not exist"; then

    sudo defaults delete us.zoom.xos
    printf "sudo defaults read us.zoom.xos "
    deleted

else

    printf "sudo defaults read us.zoom.xos "
    not_found

fi

echo ""
echo -e "${BOLD}Removing pkgutil history...${NORMAL}"

if pkgutil --pkgs | grep -Eq "us.zoom.pkg.videmeeting"; then

    sudo pkgutil --forget us.zoom.pkg.videmeeting &amp;amp;&amp;gt; /dev/null
    printf "pkgutil history for us.zoom.pkg.videmeeting "
    deleted

else

    printf "pkgutil history for us.zoom.pkg.videmeeting "
    not_found

fi

# remove extra Zoom cruft

echo ""
echo -e "${BOLD}Removing extra cruft that Zoom leaves behind...${NORMAL}"

declare -a ZOOM_CRUFT=(
    "/Users/$loggedInUser/.zoomus"
    "/Users/$loggedInUser/Library/Application Support/zoom.us"
    "/Library/Caches/us.zoom.xos"
    "/Users/$loggedInUser/Library/Caches/us.zoom.xos"
    "/Library/Logs/zoom.us"
    "/Users/$loggedInUser/Library/Logs/zoom.us"
    "/Library/Logs/zoominstall.log"
    "/Users/$loggedInUser/Library/Logs/zoominstall.log"
    "/Library/Preferences/ZoomChat.plist"
    "/Users/$loggedInUser/Library/Preferences/ZoomChat.plist"
    "/Library/Preferences/us.zoom.xos.plist"
    "/Users/$loggedInUser/Library/Preferences/us.zoom.xos.plist"
    "/Users/$loggedInUser/Library/Saved Application State/us.zoom.xos.savedState"
    "/Users/$loggedInUser/Library/Cookies/us.zoom.xos.binarycookies"
)

for ENTRY in "${ZOOM_CRUFT[@]}"; do
    if [ -f "${ENTRY}" ] || [ -d "${ENTRY}" ]; then
        sudo rm -rf "${ENTRY}"
        printf "%s " "${ENTRY}"
        deleted
    else
        printf "%s " "${ENTRY}"
        not_found
    fi
done
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>zoom</category>
      <category>security</category>
      <category>privacy</category>
    </item>
    <item>
      <title>New Repo Trick for github</title>
      <dc:creator>Nicholas</dc:creator>
      <pubDate>Mon, 10 Feb 2020 20:58:26 +0000</pubDate>
      <link>https://dev.to/bishopexe/new-repo-trick-for-github-2gok</link>
      <guid>https://dev.to/bishopexe/new-repo-trick-for-github-2gok</guid>
      <description>&lt;p&gt;I found this cleaver little trick and I thought that it could be useful to share.&lt;/p&gt;

&lt;p&gt;That or you can show off some cool trivia to your friends and colleagues on how git-fluent you are.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo.new
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Put that bad boy in your browser URL bar and &lt;strong&gt;BAM&lt;/strong&gt;. Ready to make a new repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Organization:   GitHub, Inc. (GITHU)
RegDate:        2012-11-15
Updated:        2017-04-19

OrgName:        GitHub, Inc.
OrgId:          GITHU
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h6&gt;
  
  
  Above is some the output from a Whois for the paranoid.
&lt;/h6&gt;

</description>
      <category>github</category>
      <category>git</category>
    </item>
  </channel>
</rss>
