> For the complete documentation index, see [llms.txt](https://ivalexev.gitbook.io/rednote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ivalexev.gitbook.io/rednote/utility/general.md).

# General

Utilities that can always be useful in different contexts.

## Info Commands

{% tabs %}
{% tab title="Linux" %}
{% code overflow="wrap" %}

```bash
apropos <STRING>
```

{% endcode %}

{% code overflow="wrap" %}

```bash
man <COMMAND>
```

{% endcode %}
{% endtab %}

{% tab title="Windows" %}
{% code overflow="wrap" %}

```powershell
help <COMMAND>
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
<COMMAND> ?
<COMMAND> /?
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Terminal

{% tabs %}
{% tab title="Windows & Tabs" %}

<table><thead><tr><th width="225">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + ALT + T</code></td><td>Open terminal window</td></tr><tr><td><code>CTRL + SHIFT + T</code></td><td>New tabs</td></tr><tr><td><code>CTRL + SHIFT + W</code></td><td>Close tabs</td></tr><tr><td><code>ALT + &#x3C;NUM_TAB></code></td><td>Move between the tabs</td></tr></tbody></table>
{% endtab %}

{% tab title="Utility" %}

<table><thead><tr><th width="225">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + L</code></td><td>Clear screen</td></tr><tr><td><code>CTRL + SHIFT + C</code></td><td>Copy</td></tr><tr><td><code>CTRL + SHIFT + V</code></td><td>Paste</td></tr><tr><td><code>HOME</code> or <code>CTRL + A</code></td><td>Start line</td></tr><tr><td><code>END</code> or <code>CTRL + E</code></td><td>End line</td></tr><tr><td><code>ALT + &#x3C;--</code></td><td>Go back one word</td></tr><tr><td><code>ALT + --></code></td><td>Go forward one word</td></tr><tr><td><code>CTRL + D</code></td><td>Delete one character forward</td></tr><tr><td><code>CTRL + W</code></td><td>Delete one word back </td></tr><tr><td><code>ALT + D</code></td><td>Delete one word forward </td></tr><tr><td><code>CTRL + U</code></td><td>Delete to the start of the line</td></tr><tr><td><code>CTRL + K</code></td><td>Delete to the end of the line </td></tr><tr><td><code>CTRL + P</code></td><td>On Kali, change version of the terminal</td></tr></tbody></table>
{% endtab %}

{% tab title="Processes" %}

<table><thead><tr><th width="225">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + C</code></td><td>Open terminal window</td></tr><tr><td><code>CTRL + Z</code> <br><code>jobs</code><br><code>fg &#x3C;N></code> <br><code>bg &#x3C;N></code></td><td>Background process<br>View background processes<br>Resume &#x3C;N> in the foreground<br>Resume &#x3C;N> in the background</td></tr><tr><td><code>CTRL + S</code></td><td>Pause output</td></tr><tr><td><code>CTRL + Q</code></td><td>Resume output</td></tr></tbody></table>
{% endtab %}

{% tab title="Redirection" %}
`2>&1` : <mark style="color:red;">STDERR</mark> in <mark style="color:green;">STDOUT</mark>

`0>&1` : <mark style="color:blue;">STDIN</mark> in <mark style="color:green;">STDOUT</mark>
{% endtab %}
{% endtabs %}

## Vim

{% tabs %}
{% tab title="Main" %}

<table><thead><tr><th width="226">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>:q!</code></td><td>Quit without saving</td></tr><tr><td><code>:wq</code></td><td>Save and quit</td></tr><tr><td><code>:w !sudo tee %</code></td><td>Save and quit when you forgot sudo</td></tr><tr><td><code>i</code></td><td><mark style="color:green;">Insert</mark> mode before the cursor</td></tr><tr><td><code>a</code></td><td><mark style="color:green;">Insert</mark> mode after the cursor</td></tr><tr><td><code>A</code></td><td><mark style="color:green;">Insert</mark> mode at the end of the line</td></tr><tr><td><code>o</code></td><td>Add line above and <mark style="color:green;">Insert</mark> mode</td></tr><tr><td><code>O</code></td><td>Add line below and <mark style="color:green;">Insert</mark> mode</td></tr><tr><td><code>v</code></td><td><mark style="color:yellow;">Visual</mark> mode</td></tr><tr><td><code>V</code></td><td>Select line and <mark style="color:yellow;">Visual</mark> mode</td></tr><tr><td><code>x</code></td><td><mark style="color:red;">Delete</mark> character under cursor</td></tr><tr><td><code>dd</code></td><td><mark style="color:red;">Delete</mark> line</td></tr><tr><td><code>r</code></td><td><mark style="color:orange;">Change</mark> one character under cursor</td></tr><tr><td><code>R</code></td><td><mark style="color:orange;">Change</mark> mode</td></tr><tr><td><code>u</code></td><td>Undo</td></tr><tr><td><code>CTRL + r</code></td><td>Redo</td></tr><tr><td><code>y</code> <br><code>" &#x3C;REG> y</code></td><td>Copy<br>Specific registers (<code>+</code> or <code>*</code> for outside of vim)</td></tr><tr><td><code>p</code> <br><code>" &#x3C;REG> p</code></td><td>Paste<br>Specific registers (<code>+</code> or <code>*</code> for outside of vim)</td></tr></tbody></table>
{% endtab %}

{% tab title="Navigate & Search" %}

<table><thead><tr><th width="203">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>gg</code></td><td>Jump to first line</td></tr><tr><td><code>G</code></td><td>Jump to last line</td></tr><tr><td><code>&#x3C;N>G</code><br><code>:&#x3C;N></code></td><td>Jump to line N</td></tr><tr><td><code>/&#x3C;STRING></code></td><td>Search string forward (move with <code>n</code> and <code>N</code>)</td></tr><tr><td><code>?&#x3C;STRING></code></td><td>Search string backwards (move with <code>n</code> and <code>N</code>)</td></tr><tr><td><code>*</code></td><td>Search for the word under the cursor (move with <code>n</code> and <code>N</code>)</td></tr><tr><td><code>:set number</code> <br><code>:set nonumber</code></td><td>Set number of lines</td></tr><tr><td><code>:set ic</code> <br><code>:set noic</code></td><td>Ignore case in search</td></tr><tr><td><code>:set is</code> <br><code>:set nois</code></td><td>Shows partial occurrences during a search</td></tr></tbody></table>
{% endtab %}

{% tab title="Special" %}

<table><thead><tr><th width="241">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>:s/&#x3C;OLD>/&#x3C;NEW></code> <br><code>:s/&#x3C;OLD>/&#x3C;NEW>/g</code> <code>:#,#s/&#x3C;OLD>/&#x3C;NEW>/g</code><br><code>:%s/&#x3C;OLD>/&#x3C;NEW>/g</code> <br><code>:%s/&#x3C;OLD>/&#x3C;NEW>/gc</code></td><td>Replace the <strong>first</strong> &#x3C;OLD> with &#x3C;NEW> in the line<br>Replace <strong>every</strong> &#x3C;OLD> with &#x3C;NEW> in the line<br>Replace every &#x3C;OLD> with &#x3C;NEW> <strong>between the lines #,#</strong><br>Replace every &#x3C;OLD> with &#x3C;NEW> <strong>in the file</strong><br>Replace every &#x3C;OLD> with &#x3C;NEW> in the file, <strong>asking for confirm</strong></td></tr><tr><td><code>:w &#x3C;FILE></code></td><td>Write the selected part or all to the file &#x3C;FILE></td></tr><tr><td><code>:r &#x3C;FILE></code> <br><code>:r !&#x3C;COMMAND></code></td><td>Read the file &#x3C;FILE> and inserts it<br>Execute the command and inserts the output</td></tr><tr><td><code>:Explore [&#x3C;DIR>]</code></td><td>Vim file explorer</td></tr></tbody></table>
{% endtab %}

{% tab title="Note" %}
**`Operator [Number]`` `**<mark style="color:blue;">**`Movement`**</mark>

* <mark style="color:blue;">`w`</mark> - Word
* <mark style="color:blue;">`$`</mark> - End of line
* <mark style="color:blue;">`0`</mark> - Start of line
* <mark style="color:blue;">`e`</mark> - End word
  {% endtab %}
  {% endtabs %}

## Tmux

{% tabs %}
{% tab title="Sessions" %}

<table><thead><tr><th width="281">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>tmux</code></td><td>New session </td></tr><tr><td><code>tmux ls</code></td><td>List sessions</td></tr><tr><td><code>tmux new -s &#x3C;NAME></code></td><td>New session &#x3C;NAME></td></tr><tr><td><code>tmux kill-ses -t &#x3C;NAME></code></td><td>Delete session &#x3C;NAME></td></tr><tr><td><code>tmux kill-session</code></td><td>Delete <strong>all</strong> session</td></tr><tr><td><code>CTRL + b</code>   <code>d</code></td><td>Detach from session</td></tr><tr><td><code>tmux a -t &#x3C;NAME></code></td><td>Attach to a session &#x3C;NAME></td></tr></tbody></table>
{% endtab %}

{% tab title="Window" %}

<table><thead><tr><th width="289">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + b</code>   <code>c</code></td><td>New window</td></tr><tr><td><code>CTRL + b</code>   <code>,</code></td><td>Rename window</td></tr><tr><td><code>CTRL + b</code>   <code>n</code></td><td>Next window</td></tr><tr><td><code>CTRL + b</code>   <code>p</code></td><td>Previous window</td></tr><tr><td><code>CTRL + b</code>   <code>&#x3C;N></code></td><td>Select window &#x3C;N></td></tr><tr><td><code>CTRL + b</code>   <code>w</code></td><td>List and Navigate in window</td></tr></tbody></table>
{% endtab %}

{% tab title="Split" %}

<table><thead><tr><th width="289">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + b</code>   <code>%</code></td><td>Split screen Vertically</td></tr><tr><td><code>CTRL + b</code>   <code>"</code></td><td>Split  screen Horizontally</td></tr><tr><td><code>CTRL + b</code>   <code>&#x3C;ARROW></code></td><td>Move between screen split</td></tr><tr><td><code>CTRL + b</code>   <code>&#x3C;SPACE></code></td><td>Change layout of the split</td></tr><tr><td><code>CTRL + b</code>   <code>CTRL + &#x3C;ARROW></code></td><td>Resize current split</td></tr></tbody></table>
{% endtab %}

{% tab title="Copy" %}

<table><thead><tr><th width="229">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>CTRL + b</code>   <code>[</code></td><td>Copy mode</td></tr><tr><td><code>CTRL + b</code>   <code>]</code></td><td>Paste </td></tr><tr><td><code>g</code></td><td>Go top line</td></tr><tr><td><code>G</code></td><td>Go bottom line</td></tr><tr><td><code>w</code></td><td>Forward one word</td></tr><tr><td><code>b</code></td><td>Backward one word</td></tr><tr><td><code>/</code></td><td>Search forward (move with <code>N</code> and <code>n</code>)</td></tr><tr><td><code>?</code></td><td>Search backward (move with <code>N</code> and <code>n</code>)</td></tr><tr><td><code>&#x3C;SPACE></code></td><td>Start selection</td></tr><tr><td><code>&#x3C;ENTER></code></td><td>Copy selection</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Search & Filter

{% tabs %}
{% tab title="Linux" %}

#### Search File

{% code overflow="wrap" %}

```bash
sudo updatedb
locate <FILE>
```

{% endcode %}

{% code overflow="wrap" %}

```bash
which <FILE>
```

{% endcode %}

{% code overflow="wrap" %}

```bash
find <PathStart> -type <f/d> -name <NAME> 2>/dev/null
```

{% endcode %}

#### Search String

{% code overflow="wrap" %}

```bash
grep -rHin "<STRING>" <PathStart>
```

{% endcode %}

#### Filter

{% code overflow="wrap" %}

```bash
<COMMAND> | grep <STRING>
```

{% endcode %}

<table><thead><tr><th width="167">Grep Options</th><th>Description</th></tr></thead><tbody><tr><td><code>-i</code> </td><td>Case Insensitive</td></tr><tr><td><code>-v</code></td><td>Not contain</td></tr><tr><td><code>-A &#x3C;N></code></td><td>Also show the two lines below</td></tr><tr><td><code>-B &#x3C;N></code></td><td>Also show the two lines above</td></tr><tr><td><code>-l</code></td><td>View File Name</td></tr><tr><td><code>-o</code></td><td>View Content</td></tr></tbody></table>
{% endtab %}

{% tab title="Windows" %}

#### Search File

{% code overflow="wrap" %}

```powershell
dir /s *<STRING>*
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
Get-ChildItem -Path 'C:\' -Include *<STRING>*, *<STRING>* -Recurse -ErrorAction Ignore
```

{% endcode %}

#### Search String

{% code overflow="wrap" %}

```powershell
findstr /s /i <STRING> *.*     # contain
findstr /s /i /v <STRING> *.*  # not contain
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
Get-ChildItem -Path 'C:\' [-Include *<STRING>*, *<STRING>*] -Recurse -ErrorAction Ignore | Select-String -Pattern '<STRING_IN_FILE>' -ErrorAction Ignore
```

{% endcode %}

#### Filter

{% code overflow="wrap" %}

```powershell
<COMMAND> | findstr <STRING>
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
<COMMAND> | select <ATTR1>,<ATTR2>
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Manipulation

<table><thead><tr><th width="362">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>cut</code></mark><code> -f &#x3C;N> -d "&#x3C;SEP>"</code></td><td>Split the output by single character &#x3C;SEP> and return field &#x3C;N></td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>awk</code></mark><code> -F “&#x3C;SEP>” '{print $&#x3C;N1>, $&#x3C;N2>}'</code></td><td>Split the output by characters &#x3C;SEP> and return field &#x3C;N1> and &#x3C;N2></td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>tr</code></mark><code> "X" ”Y”</code> </td><td>Replaces certain characters X with others Y.</td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>sort</code></mark><code> -u</code></td><td>Sort and Unique</td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>wc</code></mark><code> -w -l -c</code></td><td>Word/Line/Char count</td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>rev</code></mark></td><td>Reverse String</td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>tac</code></mark></td><td>Print in Reverse, starting from the last lines</td></tr><tr><td><code>&#x3C;COMMAND> | </code><mark style="color:purple;"><code>tee</code></mark><code> -a &#x3C;FILE></code></td><td><code>></code> + print in output (<code>-a</code> append)</td></tr></tbody></table>

```bash
cat << EOF > /PATH/TO/FILE
Row 1
...
Row N
EOF
```

## Regex

{% embed url="<https://regex101.com/>" %}

<table><thead><tr><th width="284">Regex</th><th>Description</th></tr></thead><tbody><tr><td><mark style="color:red;"><code>&#x3C;START></code></mark><code>.+?</code><mark style="color:red;"><code>&#x3C;END></code></mark></td><td>Between &#x3C;START> and &#x3C;END> including them</td></tr><tr><td><mark style="color:red;"><code>&#x3C;START></code><strong><code>(</code></strong></mark><code>.+?</code><mark style="color:green;"><strong><code>)</code></strong><code>&#x3C;END></code></mark></td><td>RBetween &#x3C;START> and &#x3C;END> excluding them</td></tr><tr><td><mark style="color:red;"><code>&#x3C;START></code><strong><code>(</code></strong></mark><code>[^</code><mark style="color:red;"><code>&#x3C;END></code></mark><code>]*</code><mark style="color:green;"><strong><code>)</code></strong></mark></td><td>Between &#x3C;START> and one of the characters in &#x3C;END></td></tr><tr><td><code>+</code></td><td>At least 1 character</td></tr><tr><td><code>*</code></td><td>Even without</td></tr></tbody></table>

## Encoding

{% tabs %}
{% tab title="Base64" %}
Only alphanumeric characters and `+` `/`.\
Multiples of 4 with padding `=`.

#### Encode

{% code overflow="wrap" %}

```bash
<COMMAND> | base64
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
# pwsh 
$text = '<COMMAND>'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($text)
$encodedText = [Convert]::ToBase64String($bytes)
$encodedText
```

{% endcode %}

#### Decode

{% code overflow="wrap" %}

```bash
<COMMAND> | base64 -d
```

{% endcode %}

{% code overflow="wrap" %}

```powershell
$encodedText = '<OUTPUTBASE64>'
$bytes = [Convert]::FromBase64String($encodedText)
$text = [System.Text.Encoding]::Unicode.GetString($bytes)
$text
```

{% endcode %}
{% endtab %}

{% tab title="Hex" %}
`0-9` and `a-f`.\
Each character has its own hex value in the ASCII table.

{% code overflow="wrap" %}

```
man ascii
```

{% endcode %}

#### Encode

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>&#x3C;COMMAND> | xxd -p
</strong></code></pre>

#### Decode

{% code overflow="wrap" %}

```bash
<COMMAND> | xxd -p -r
```

{% endcode %}
{% endtab %}

{% tab title="Rot13" %}
Cyclically moves characters forward 13 positions.

#### Encode

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"><strong>&#x3C;COMMAND> | tr 'A-Za-z' 'N-ZA-Mn-za-m'
</strong></code></pre>

#### Decode

{% code overflow="wrap" %}

```bash
<COMMAND> | tr 'A-Za-z' 'N-ZA-Mn-za-m'
```

{% endcode %}
{% endtab %}

{% tab title="URL" %}
Encode special characters into URLs.

{% code overflow="wrap" %}

```bash
<COMMAND> | jq -sRr @uri
```

{% endcode %}
{% endtab %}

{% tab title="Note" %}
Use:&#x20;

{% code overflow="wrap" %}

```bash
echo -n
```

{% endcode %}

{% code overflow="wrap" %}

```bash
base64 -w 0
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Extract

{% code title="extract.sh" overflow="wrap" %}

```bash
function extract {
  if [ -z "$1" ]; then
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
  else
    if [ -f $1 ]; then
      case $1 in
        *.tar.bz2)   tar xvjf $1    ;;
        *.tar.gz)    tar xvzf $1    ;;
        *.tar.xz)    tar xvJf $1    ;;
        *.lzma)      unlzma $1      ;;
        *.bz2)       bunzip2 $1     ;;
        *.rar)       unrar x -ad $1 ;;
        *.gz)        gunzip $1      ;;
        *.tar)       tar xvf $1     ;;
        *.tbz2)      tar xvjf $1    ;;
        *.tgz)       tar xvzf $1    ;;
        *.zip)       unzip $1       ;;
        *.Z)         uncompress $1  ;;
        *.7z)        7z x $1        ;;
        *.xz)        unxz $1        ;;
        *.exe)       cabextract $1  ;;
        *)           echo "extract: '$1' - unknown archive method" ;;
      esac
    else
      echo "$1 - file does not exist"
    fi
  fi
}
```

{% endcode %}

{% code overflow="wrap" %}

```bash
extract.sh <FILE>
```

{% endcode %}

## Cross-Compiling

{% tabs %}
{% tab title="For Linux" %}

### C

{% code overflow="wrap" %}

```bash
sudo apt-get install gcc 
apt-get install gcc-multilib 
apt-get install g++-multilib
```

{% endcode %}

{% code overflow="wrap" %}

```bash
gcc <FILE.c> -o <NEW_NAME>  # 64 bit
gcc <FILE.c> -m32 -o <NEW-NAME>  # 32 bit
```

{% endcode %}

{% code overflow="wrap" %}

```bash
chmod +x <NEW_NAME>
```

{% endcode %}

### Python

{% code overflow="wrap" %}

```bash
python3 <FILE.py>
```

{% endcode %}

### SO

{% code overflow="wrap" %}

```bash
gcc -fPIC -shared -o <LIB_NAME.so> <FILE.c>
```

{% endcode %}
{% endtab %}

{% tab title="For Windows" %}

### C

{% code overflow="wrap" %}

```bash
sudo apt-get install mingw-w64
```

{% endcode %}

{% code overflow="wrap" %}

```bash
x86_64-w64-mingw32-gcc <FILE.c> -o <NEW_NAME>   # 64 bit
i686-w64-mingw32-gcc <FILE.c> -o <NEW_NAME>   # 32 bit
```

{% endcode %}

### Python

{% code overflow="wrap" %}

```bash
pip installa pyinstaller
```

{% endcode %}

{% code overflow="wrap" %}

```bash
python pyinstaller.py --onefile <FILE.py>
```

{% endcode %}

### DLL

{% code overflow="wrap" %}

```powershell
x86_64-w64-mingw32-gcc -shared <FILE.c> -o <NEW_NAME.dll> [-Wl,--out-implib,<NEW_NAME.a>] # 64 bit
i686-w64-mingw32-gcc -shared <FILE.c> -o <NEW_NAME.dll> [-Wl,--out-implib,<NEW_NAME.a>] # 32 bit
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Environment

{% tabs %}
{% tab title="venv" %}
{% code overflow="wrap" %}

```bash
python3 -m venv myEnv
source myEnv/bin/activate
```

{% endcode %}

{% code overflow="wrap" %}

```bash
pip3 install NAME_PACKAGE
pip3 install -r requirements.txt
```

{% endcode %}

{% code overflow="wrap" %}

```bash
deactivate
rm -rf nome_ambiente
```

{% endcode %}
{% endtab %}

{% tab title="conda" %}
{% code overflow="wrap" %}

```bash
source ~/miniconda3/bin/activate
```

{% endcode %}

{% code overflow="wrap" %}

```bash
conda create -n myEnv python=3.11
conda activate myEnv
conda deactivate
```

{% endcode %}

{% code overflow="wrap" %}

```bash
conda install NAME_PACKAGE
conda install -c conda-forge NAME_PACKAGE
conda list
conda remove NAME_PACKAGE 
```

{% endcode %}

{% code overflow="wrap" %}

```bash
conda env export > environment.yml
conda env create -f environment.yml
```

{% endcode %}

{% code overflow="wrap" %}

```bash
conda remove -n myEnv --all 
```

{% endcode %}
{% endtab %}
{% endtabs %}

## TOR

{% tabs %}
{% tab title="TOR" %}
Start service TOR

{% code overflow="wrap" %}

```bash
sudo service tor start
sudo service tor stop
sudo service tor restart
```

{% endcode %}

Set ProxyChains

{% code overflow="wrap" %}

```bash
vim /etc/proxychains4.conf
vim /etc/proxychains.conf
```

{% endcode %}

{% code overflow="wrap" %}

```bash
# at the end
socks4 127.0.0.1 9050
socks5 127.0.0.1 9050
```

{% endcode %}

Use command over TOR

{% code overflow="wrap" %}

```bash
proxychains <COMMAND>
```

{% endcode %}
{% endtab %}

{% tab title="Tools" %}

<table><thead><tr><th width="124.78125">Tools</th><th>Details</th></tr></thead><tbody><tr><td><a href="https://github.com/s-r-e-e-r-a-j/ZeroTrace">ZeroTrace</a></td><td>Routing all your system network traffic through the TOR network.<br><code>sudo zerotrace --start</code> <br><code>sudo zerotrace --ip</code> <em>(Show current Tor IP and location)</em> <br><code>sudo zerotrace --stop</code> <br><code>sudo zerotrace --new-ip</code> <br><code>sudo zerotrace --auto --time 300</code> <em>(change IP every 5 minutes)</em> </td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## GIT

{% tabs %}
{% tab title="Setup" %}

<table><thead><tr><th width="207">Description</th><th>Command</th></tr></thead><tbody><tr><td>Access by token</td><td>Create tokens in<br><code>Settings/Developer</code> > <code>Settings/Personal</code> > <code>access</code> > <code>token</code> <br>Insert token<br><code>git clone https://&#x3C;USERNAME>:&#x3C;TOKEN>@github.com/&#x3C;USERNAME>/&#x3C;REPOSITORY></code><br><em>Or</em><br><code>git remote set-url origin https://&#x3C;USERNAME>:&#x3C;TOKEN>@github.com/&#x3C;USERNAME>/&#x3C;REPOSITORY></code></td></tr><tr><td>Downloading GitHub repositories</td><td><code>git clone &#x3C;LINK_REPOSITORY_GITHUB></code></td></tr><tr><td>Download repository changes</td><td><code>git pull origin main</code></td></tr><tr><td>Loading repository changes</td><td><code>[git add -A]</code><br><code>git commit -m "&#x3C;DESCRIPTION>"</code><br><code>git push origin [main/master]</code></td></tr><tr><td>With SSH</td><td><p><code>GIT_SSH_COMMAND='ssh [options]' [git command]</code><br><code>GIT_SSH_COMMAND='ssh [options]' git clone &#x3C;USER>@&#x3C;IP>:/&#x3C;REPO></code></p><p>ex.<br><code>GIT_SSH_COMMAND='ssh -i id_rsa -p 43022' git clone git@192.168.213.125:/git-server</code><br><code>GIT_SSH_COMMAND='ssh -i /id_rsa -p 43022' git push origin master</code></p></td></tr></tbody></table>
{% endtab %}

{% tab title="Usage" %}

<table><thead><tr><th width="207">Description</th><th>Command</th></tr></thead><tbody><tr><td>See commit</td><td><code>git log</code></td></tr><tr><td>See the differences in commit</td><td><code>git show &#x3C;COMMIT_ID></code><br><code>git show --all</code><br><code>git diff &#x3C;COMMIT_ID></code></td></tr><tr><td>List of branch</td><td><code>git branch</code></td></tr><tr><td>Switch to another branch</td><td><code>git switch &#x3C;NAME_BRANCH></code><br><code>git checkout &#x3C;NAME_BRANCH></code></td></tr><tr><td>Read single git files in objects/<strong>X</strong>/number</td><td><code>git cat-file -p Xnumber</code></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Docker

```bash
sudo apt install docker.io && sudo apt install docker-compose
sudo usermod -aG docker $USER
```

{% code overflow="wrap" %}

```bash
sudo systemctl start docker
sudo systemctl stop docker
```

{% endcode %}

{% tabs %}
{% tab title="Docker" %}
Manages single containere.\
[**dockerfile**](https://docs.docker.com/reference/dockerfile/)

<table><thead><tr><th width="334">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>docker build -t &#x3C;name> .</code></td><td></td></tr><tr><td><code>docker --version</code></td><td>Docker version</td></tr><tr><td><code>docker search &#x3C;STRING></code></td><td>Search in the Docker Hub</td></tr><tr><td><code>docker login &#x3C;DOMAIN>/&#x3C;IMG_NAME></code></td><td>It may require authentication if you are pulling unofficial images, so you need to authenticate for that domain and image first. See a domain's registry list at <code>&#x3C;DOMAIN>/v2/_catalog</code>.</td></tr><tr><td><code>docker pull &#x3C;IMG_NAME>[:&#x3C;VERSION>]</code></td><td>Download image from Docker Hub</td></tr><tr><td><code>docker inspect &#x3C;IMG_NAME></code></td><td>View information about the Docker image.</td></tr><tr><td><code>docker image</code></td><td>View possible commands for managing Docker images, such as <code>ls</code></td></tr><tr><td><code>docker volume</code></td><td>View possible commands for managing Docker volumes, such as <code>ls</code></td></tr><tr><td><code>docker volume create &#x3C;VOLUME_NAME></code></td><td>Create a volume and give it a name.<br>They are used to store data persistently.</td></tr><tr><td><code>docker network</code></td><td>View possible commands for managing Docker network, such as <code>ls</code></td></tr><tr><td><code>docker network create (…) &#x3C;NETWORK_NAME></code></td><td>Creating a network. It is important to specify:<br><code>--driver=bridge</code> : Specify the type of driver<br><code>--subnet=&#x3C;ip/mask></code> : Specify the subnet to be used by the container (ex. <code>172.18. 0.0/16</code>)<br><code>--gateway=&#x3C;ip/mask></code> : Specify the gateway to communicate outside the container (ex. typically <code>172.18. 0.1</code>)</td></tr><tr><td><code>docker run &#x3C;IMG_NAME></code></td><td>Runs a container from a specified Docker image.<br><code>--name=&#x3C;NAME></code> : Give a name to the container.<br><strong><code>-d</code></strong> : Run the container in the background.<br><code>-p &#x3C;H_PORT>:&#x3C;C_PORT></code> : Perform port mapping. connect my H port to the C container port.<br><code>-v &#x3C;VOLUME_NAME>:&#x3C;C_PATH></code> : Use a volume. Associate a created volume with a container PATH.<br><code>-v &#x3C;H_PATH>:&#x3C;C_PATH></code> : Use a volume. Associate a PATH on the HOST system with a container PATH.<br><code>--network=&#x3C;NETWORK_NAME></code> : Start the container on a previously created network<br><code>-h &#x3C;HOSTNAME></code> : Specify hostname</td></tr><tr><td><code>docker run -it &#x3C;IMG_NAME> bash</code></td><td>Start container but in interactive mode, connect to the container terminal.<br><code>CTRL+P</code> and <code>CTRL+Q</code> : Exit from the container while leaving it running.</td></tr><tr><td><code>docker attach &#x3C;ID></code></td><td>Resume interaction with a container.</td></tr><tr><td><code>docker exec -it &#x3C;ID_CONTAINER> bash</code></td><td>Runs a new interaction process with a container's terminal (also used to reconnect after exiting, like attach).</td></tr><tr><td><code>docker ps</code></td><td>Show running containers.<br><code>-a</code> : Also show stopped containers (if you want to remove them).</td></tr><tr><td><code>docker top &#x3C;ID_CONTAINER></code></td><td>View the processes running inside a container.</td></tr><tr><td><code>docker logs &#x3C;ID_CONTAINER></code></td><td>View logs of a container.</td></tr><tr><td><code>docker stat &#x3C;ID_CONTAINER></code></td><td>Provides real-time information about the resources used by a container.</td></tr><tr><td><code>docker stop &#x3C;ID_CONTAINER></code></td><td>Stops a running container.</td></tr><tr><td><code>docker start &#x3C;ID_CONTAINER></code></td><td>Run a stopped container.</td></tr><tr><td><code>docker rm &#x3C;ID_CONTAINER></code></td><td>Remove and delete a container.</td></tr><tr><td><code>docker container prune</code></td><td>Remove all stopped containers.</td></tr><tr><td><code>docker history &#x3C;IMG_NAME></code></td><td>View history of operations related to a Docker image.</td></tr><tr><td><code>docker system prune [-a --volumes]</code></td><td>Complete cleaning of everything, be careful! (does not delete images)</td></tr><tr><td><code>docker save -o &#x3C;NAME>.tar &#x3C;IMG_NAME></code></td><td>Save a Docker image, including all its layers and metadata.</td></tr></tbody></table>
{% endtab %}

{% tab title="Docker Compose" %}
Orchestration of multi-container applications.\
[**docker-compose.yml**](https://docs.docker.com/compose/intro/compose-application-model/)

<table><thead><tr><th width="239">Command</th><th>Description</th></tr></thead><tbody><tr><td><code>docker compose build</code></td><td>Builds or rebuilds Docker service images in <strong>docker-compose.yml</strong>. Required only if changes are made.</td></tr><tr><td><code>docker compose up</code></td><td>Creates and starts the containers listed in the <strong>docker-compose.yml</strong> file along with a custom network.<br><code>-d</code> : Runs the container in the background.</td></tr><tr><td><code>docker compose start</code></td><td>Start the service containers defined in the <strong>docker-compose.yml</strong> file.</td></tr><tr><td><code>docker compose stop</code></td><td>Stop all containers listed in the <strong>docker-compose.yml</strong> file.</td></tr><tr><td><code>docker compose down</code></td><td>Stop and delete all containers listed in the <strong>docker-compose.yml</strong> file and the created network.</td></tr><tr><td><code>docker compose logs [&#x3C;SERVICE_NAME>]</code></td><td>Display logs of started services.<br><code>-f</code> : Follow. Listen and display logs continuously.</td></tr><tr><td><code>docker compose ps</code></td><td>View the status of Docker services managed by Docker Compose.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

With **`ls -q`** it prints only the IDs.

## Networks

**Layer 2 Data Link** : MAC address, `Switch/bridge` (Within Subnets)\
**Layer 3 Network** : IP address, `Router` (Between Networks)\
**Layer 4** **Transport** : TCP/UDP

<table data-header-hidden><thead><tr><th width="183.1875"></th><th></th></tr></thead><tbody><tr><td>Enable/Disable interface</td><td><code>sudo ip link set dev &#x3C;INTERFACE> up</code> <br><code>sudo ip link set dev &#x3C;INTERFACE> down</code></td></tr><tr><td>Riname Interface</td><td><code>ip link set dev &#x3C;OLD> name &#x3C;NEW></code></td></tr><tr><td>Add/Remove IP</td><td><code>ip addr add &#x3C;IP>/&#x3C;MASK> dev &#x3C;INTERFACE></code><br><code>ip addr del &#x3C;IP>/&#x3C;MASK> dev &#x3C;INTERFACE></code> <br><code>ip addr change &#x3C;IP>/&#x3C;MASK> dev &#x3C;INTERFACE></code> <br><code>ip addr flush dev &#x3C;INTERFACE></code></td></tr><tr><td>Add/Remove Route</td><td><code>route -n</code> <br><code>ip route show</code> <br><code>ip route add &#x3C;REMOTENET_IP>/&#x3C;MASK> via &#x3C;GATEWAY></code> <br><code>ip route add &#x3C;REMOTENET_IP>/&#x3C;MASK> dev &#x3C;INTERFACE></code> <br><code>ip route del &#x3C;REMOTENET_IP>/&#x3C;MASK> via &#x3C;GATEWAY></code> <br><code>ip route del &#x3C;REMOTENET_IP>/&#x3C;MASK> dev &#x3C;INTERFACE></code></td></tr><tr><td>Clear ARP </td><td><code>arp</code><br><code>ip neigh show</code> <br><code>ip neigh del &#x3C;IP> dev &#x3C;INTERFACE></code><br><code>ip neigh flush dev &#x3C;INTERFACE></code></td></tr><tr><td>DHCP</td><td><code>sudo dhclient &#x3C;INTERFACE></code> <em>(request IP from DHCP)</em></td></tr></tbody></table>

## FakeTime

{% code overflow="wrap" %}

```bash
sudo apt install ntpsec-ntpdate
sudo apt install faketime
```

{% endcode %}

{% code overflow="wrap" %}

```bash
export IP=<IP>
```

{% endcode %}

{% code overflow="wrap" %}

```bash
# sudo timedatectl set-ntp false
faketime "$(ntpdate -q $IP | cut -d ' ' -f 1,2)" <COMMAND>
```

{% endcode %}

## Directory to work on

```powershell
C:\Windows\Temp
C:\Users\Public
```

```
/tmp
/dev/shm
/var/tmp
/run/shm
```
