# General

## 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ivalexev.gitbook.io/rednote/utility/general.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
