aratu-week-2024-talk-by-ciro-santilli.bigb
= Aratu Week 2024 Talk by Ciro Santilli: My Best Random Projects
{scope}
{tag=Aratu Week}
This talk was presented on 24 September 2024 as part of the 2024 <Aratu Week>, a small online conference by <Brazilian> hacker interest group <Boitatech>.
How to contact me: <contact>{full}
Links to this talk:
* https://cirosantilli.com/aratu-week-2024-talk-by-ciro-santilli
* https://ourbigbook.com/cirosantilli/aratu-week-2024-talk-by-ciro-santilli
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/CIA_Star_Wars_website_promo.jpg]
{height=850}
{source=https://web.archive.org/web/20101230033220/http://starwarsweb.net/}
\Video[https://www.youtube.com/watch?v=6YpO2UfU6to]
{title=Self-recorded presentation VOD}
\Video[https://youtu.be/Z7ZAzPKjzYc?t=1505]
{title=Presentation upload by the organizers}
= Introduction
{parent=Aratu Week 2024 Talk by Ciro Santilli}
= Creative Commons CC By-SA
{parent=Introduction}
\Image[https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/CC-BY-SA_icon_white.svg/1024px-CC-BY-SA_icon_white.svg.png]
{border}
= I'm not a professional hacker, I did some very occasional OSINT just for fun
{parent=Introduction}
<Contact>{full}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/ID_photo_of_Ciro_Santilli_2024_intro_to_ourbigbook.jpg]
{height=600}
\Image[https://stackoverflow.com/users/flair/895245.png?theme=dark]
{height=300}
{link=https://stackoverflow.com/users/895245}
= CIA 2010 covert communication websites
{title2=cirosantilli.com/cia-2010-covert-communication-websites}
{parent=Aratu Week 2024 Talk by Ciro Santilli}
\Video[https://www.youtube.com/watch?v=QWL7l-5r1a4]
{title=How I found a <Star Wars> website made by the <CIA>}
{height=600}
Article: <CIA 2010 covert communication websites>{full}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/CIA_Star_Wars_website_promo.jpg]
{height=850}
{source=https://web.archive.org/web/20101230033220/http://starwarsweb.net/}
\Image[https://web.archive.org/web/20240909135836im_/http://boitatech.com/assets/img/logo.svg]
{title=Boitatech logo}
{source=https://boitatech.com}
{height=600}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/CIA_websites_hacker_news.png]
{height=600}
{source=https://news.ycombinator.com/item?id=36279375}
= Prelude: initial reports without specific websites (2018-)
{parent=CIA 2010 covert communication websites}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Yahoo_CIA_website_article.png]
{height=900}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/CIA_2010_site_Quora_question_and_Chris_answer.png]
{title="Seriously a dumb question" <Quora> answer by Chris from the <US Navy>}
{height=600}
= Starting point: 2022 Reuters article
{parent=CIA 2010 covert communication websites}
\Video[https://www.youtube.com/watch?v=uh_q02eefFM]
{title=Compromised Comms by Darknet Diaries (2023)}
{height=600}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Reuters_CIA_website_article_banner.jpg]
{height=800}
{title=Banner of the Reuters article}
{source=https://www.reuters.com/investigates/special-report/usa-spies-iran/}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/www.reuters.com_investigates_special-report_usa-spies-iran_applet_reconstruction.jpg]
{title=Reuters reconstruction of what the applet would have looked like}
{height=850}
{source=https://www.reuters.com/investigates/special-report/usa-spies-iran/}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Reuters_CIA_website_article_image_urls_arrow.jpg]
{title=Inspecting the Reuters article HTML source code}
{height=800}
= Coolest findings
{parent=CIA 2010 covert communication websites}
= The Star Wars website
{parent=Coolest findings}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-2010-covert-communication-websites/screenshots/starwarsweb.net.jpg]
{title=2010 <Wayback Machine> archive of https://web.archive.org/web/20101230033220/http://starwarsweb.net/[starwarsweb.net]}
{description=The <Star Wars> one.}
{height=1400}
= Examples of USA spying on its "allies"
{parent=Coolest findings}
= Brazil
{parent=Examples of USA spying on its "allies"}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-2010-covert-communication-websites/screenshots/noticiasmusica.net.jpg]
{title=2010 <Wayback Machine> archive of https://web.archive.org/web/20101230165001/http://noticiasmusica.net/[noticiasmusica.net]}
{description=
The <Brazilian> one.}
{height=1400}
= Germany
{parent=Examples of USA spying on its "allies"}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-2010-covert-communication-websites/screenshots/www.dedrickonline.com.jpg]
{title=2010 <Wayback Machine> archive of https://web.archive.org/web/20101211095158/http://www.dedrickonline.com/[dedrickonline.com]}
{description=
The <German> one.}
{height=1600}
= France
{parent=Examples of USA spying on its "allies"}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-2010-covert-communication-websites/screenshots/lesummumdelafinance.com.jpg]
{title=2010 <Wayback Machine> archive of https://web.archive.org/web/20100514032916/http://lesummumdelafinance.com[lesummumdelafinance.com]}
{description=A <French> one.}
{height=1400}
= Italy
{parent=Examples of USA spying on its "allies"}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-2010-covert-communication-websites/screenshots/attivitaestremi.com.jpg]
{title=2011 <Wayback Machine> archive of https://web.archive.org/web/20110128162039/http://attivitaestremi.com/[attivitaestremi.com]}
{description=An <Italian> one about extreme sports.}
{height=1400}
= Methodology
{parent=CIA 2010 covert communication websites}
= The easy: IP range searches
{parent=Methodology}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/viewdns.info_activegameinfo.com_domain_to_IP_arrow.png]
{title=viewdns.info `activegameinfo.com` domain to IP}
{source=https://viewdns.info/iphistory/?domain=activegaminginfo.com}
{height=550}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/viewdns.info_aroundthemiddleeast.com_IP_to_domain_arrow.png]
{title=viewdns.info `aroundthemiddleeast.com` IP to domain}
{source=https://viewdns.info/reverseip/?host=66.175.106.140&t=1}
{height=550}
= The hard: finding new IP ranges!
{parent=Methodology}
= 2013 DNS census data
{parent=The hard: finding new IP ranges!}
{title2=likely obtained via an illegal botnet}
https://dnscensus2013.neocities.org/
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/dnscensus2013.neocities.org.png]
{title=<DNS Census 2013> website}
{description=This source provided valuable historical domain to IP data.}
{source=https://dnscensus2013.neocities.org/}
{height=574}
``
amazon.com,2012-02-01T21:33:36,72.21.194.1
amazon.com,2012-02-01T21:33:36,72.21.211.176
amazon.com,2013-10-02T19:03:39,72.21.194.212
amazon.com,2013-10-02T19:03:39,72.21.215.232
amazon.com.au,2012-02-10T08:03:38,207.171.166.22
amazon.com.au,2012-02-10T08:03:38,72.21.206.80
google.com,2012-01-28T05:33:40,74.125.159.103
google.com,2012-01-28T05:33:40,74.125.159.104
google.com,2013-10-02T19:02:35,74.125.239.41
google.com,2013-10-02T19:02:35,74.125.239.46
``
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/ciro-love-sqlite.png]
{height=309}
= Wayback Machine searches for the communication method paths: Tor army parallelization!
{parent=The hard: finding new IP ranges!}
https://web.archive.org/cdx/search/cdx?url=capture-nature.com&matchType=domain
``
com,capture-nature)/robots.txt 20211229130524 https://www.capture-nature.com/robots.txt warc/revisit - XWX2XVEZVSVIUKYXF3AJUYIRDOLOXLTO 1213
com,capture-nature)/robots.txt 20211230151913 http://capture-nature.com/robots.txt warc/revisit - XWX2XVEZVSVIUKYXF3AJUYIRDOLOXLTO 1186
com,capture-nature)/robots.txt 20220419233721 https://www.capture-nature.com/robots.txt warc/revisit - XWX2XVEZVSVIUKYXF3AJUYIRDOLOXLTO 1075
com,capture-nature)/scenes.jar 20110201104851 http://capture-nature.com/Scenes.jar application/java-archive 200 U3GPB3SPISZKLFGUJFD34C5GXWAAC2GJ 287887
com,capture-nature)/scenes.jar 20110224193204 http://capture-nature.com/Scenes.jar application/java-archive 200 U3GPB3SPISZKLFGUJFD34C5GXWAAC2GJ 287890
com,capture-nature)/scenes.jar 20130903003254 http://capture-nature.com/Scenes.jar application/x-java-archive 200 U3GPB3SPISZKLFGUJFD34C5GXWAAC2GJ 287898
com,capture-nature)/trees-and-details 20200928184446 https://www.capture-nature.com/trees-and-details text/html 200 NO6J7567VFWZLRSKBJ5HVXGT27MX2A4K 30902
com,capture-nature)/trees-and-details 20210127132910 https://www.capture-nature.com/trees-and-details text/html 200 SI73WNJUBGTOXSTRK4IRU4D4AJ637F6A 31041
com,capture-nature)/trees-and-details 20210419062751 https://www.capture-nature.com/trees-and-details text/html 200 K4Q444QJ243HW3ECXNNOBNUFMXWAPVFD 31464
``
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/cia-website-comms-methods.png]
{height=800}
Tor automation at: https://github.com/cirosantilli/cirosantilli.github.io/blob/f45d859d4f9350e4a3deffdbb8acd86584d60f2c/cia-2010-covert-communication-websites/cdx-tor.sh
= Cheeky fuzzy fingerprint: the domain name contains `news`
{parent=The hard: finding new IP ranges!}
They really screwed up there:
``
$ jq <hits.json '.[].host' | wc
361 361 7777
$ jq <hits.json '.[].host' | grep news | wc
129 129 2809
``
More than 1/3 of my hits found contain the word "news" in the title!!! E.g.:
``
global-view-news.com
firstnewssource.com
theworldnewsfeeds.com
pars-technews.com
newdaynewsonline.com
sportsnewsfinder.com
newsworldsite.com
todaysnewsreports.net
hassannews.net
weblognewsinfo.com
newsincirculation.com
``
= Chinese expired domain trackers: another valuable domain data dump
{parent=The hard: finding new IP ranges!}
http://static.hupo.com/expdomain_myadmin/2012-03-06(国际域名).txt
``
0000o.com
001cssf.com
001techan.com
0061hs-0351xc-g305h.net
006979.com
006h4g-054hs-6504ga.net
``
= I scraped them and uploaded to GitHub repos, 2011 - 2022, 20-30 M entries / year
{parent=Chinese expired domain trackers: another valuable domain data dump}
https://github.com/cirosantilli/expired-domain-names-by-day-2011
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/github.com_cirosantilli_expired-domain-names-by-day-2011.png]
{source=https://github.com/cirosantilli/expired-domain-names-by-day-2011}
{height=850}
= Help wanted! Some sites were almost certainly missed. Contributions will be acknowledged.
{parent=CIA 2010 covert communication websites}
\Image[https://web.archive.org/web/20240703222455im_/https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/30a_Sammlung_Eybl_Gro%C3%9Fbritannien._Alfred_Leete_(1882%E2%80%931933)_Britons_(Kitchener)_wants_you_(Briten_Kitchener_braucht_Euch)._1914_(Nachdruck)%2C_74_x_50_cm._(Slg.Nr._552).jpg/401px-thumbnail.jpg]
{height=800}
= Linux Kernel Module Cheat
{parent=Aratu Week 2024 Talk by Ciro Santilli}
{title2=The perfect Linux emulation setup}
https://github.com/cirosantilli/linux-kernel-module-cheat
\Image[https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg]
{height=600}
= Get a Linux terminal on QEMU
{parent=Linux Kernel Module Cheat}
\Image[https://upload.wikimedia.org/wikipedia/commons/4/45/Qemu_logo.svg]
One time setup:
``
git clone https://github.com/cirosantilli/linux-kernel-module-cheat
cd linux-kernel-module-cheat
sudo apt install docker
python3 -m venv .venv
. .venv/bin/activate
./setup
./run-docker create
./run-docker sh
``
You are now in Docker.
Build everything from source inside docker:
``
./build --download-dependencies qemu-buildroot
``
Boot Linux and get a userland shell:
``
./run
``
Outcome:
``
<6>[ 1.383114] NET: Registered protocol family 17
<6>[ 1.383682] 9pnet: Installing 9P2000 support
<6>[ 1.385473] IPI shorthand broadcast: enabled
<6>[ 1.385701] sched_clock: Marking stable (1355697980, 27047205)->(1385555667, -2810482)
<6>[ 1.387744] ALSA device list:
<6>[ 1.387843] No soundcards found.
<6>[ 1.535981] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
<5>[ 1.543470] scsi 1:0:0:0: CD-ROM QEMU QEMU DVD-ROM 2.5+ PQ: 0 ANSI: 5
<6>[ 1.548952] EXT4-fs (vda): mounting ext2 file system using the ext4 subsystem
<6>[ 1.555909] EXT4-fs (vda): mounted filesystem without journal. Opts: (null)
<6>[ 1.556145] VFS: Mounted root (ext2 filesystem) on device 254:0.
<6>[ 1.557451] devtmpfs: mounted
<6>[ 1.605639] Freeing unused kernel image (initmem) memory: 1248K
<6>[ 1.605875] Write protecting the kernel read-only data: 16384k
<6>[ 1.607977] Freeing unused kernel image (text/rodata gap) memory: 2044K
<6>[ 1.610190] Freeing unused kernel image (rodata/data gap) memory: 1012K
<6>[ 1.610495] Run /sbin/init as init process
<6>[ 1.683311] tsc: Refined TSC clocksource calibration: 3293.671 MHz
<6>[ 1.683618] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x2f79f177aae, max_idle_ns: 440795226653 ns
<6>[ 1.683849] clocksource: Switched to clocksource tsc
<3>[ 1.694241] 9pnet_virtio: no channels available for device host_data
mount: mounting host_data on /mnt/9p/data failed: No such file or directory
qemu-system-x86_64: warning: 9p: degraded performance: a reasonable high msize should be chosen on client/guest side (chosen msize is <= 8192). See https://wiki.qemu.org/Documentation/9pset.
<3>[ 1.712287] overlayfs: overlapping upperdir path
mount: mounting overlay on /mnt/overlay failed: Too many levels of symbolic links
hello S98
hello .profile
/lkmc
root@buildroot# pwd
/lkmc
/lkmc
root@buildroot#
``
= \b[Everything] is built from source and easily modifiable, powered by Buildroot
{parent=Linux Kernel Module Cheat}
\Image[https://web.archive.org/web/20240424065053im_/https://bootlin.com/wp-content/uploads/2015/05/logo-buildroot.png]
The following are https://github.com/cirosantilli/linux-kernel-module-cheat/blob/master/submodules[stored in submodules]:
``
submodules/binutils-gdb/
submodules/buildroot/
submodules/gcc/
submodules/glibc/
submodules/linux/
submodules/qemu/
``
So you can modify source, rebuild and that's it, its in the VM.
E.g., let's hack the linux kernel:
``
asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
{
pr_info("I'VE HACKED THE LINUX KERNEL!!!");
``
Rebuild Linux:
``
./build-linux
``
Rerun:
``
./run
``
And after boot we see:
``
<6>[ 0.000000] I'VE HACKED THE LINUX KERNEL!!!
``
= Kernel GDB step debugging just works
{parent=Linux Kernel Module Cheat}
Start QEMU and wait for GDB:
``
./run --gdb-wait
``
On another shell, connect GDB to QEMU and run up to a symbol that shows up at boot:
``
./run-gdb start_kernel
``
Outcome: we are GDB step debugging the Linux Kernel:
``
Breakpoint 1, start_kernel () at /root/lkmc/submodules/linux/init/main.c:837
837 {
loading vmlinux
(gdb) n
841 set_task_stack_end_magic(&init_task);
(gdb) l
836 asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
837 {
838 char *command_line;
839 char *after_dashes;
840
841 set_task_stack_end_magic(&init_task);
842 smp_setup_processor_id();
843 debug_objects_early_init();
844
845 cgroup_init_early();
(gdb) p &init_task
$1 = (struct task_struct *) 0xffffffff82012840 <init_task>
(gdb) bt
#0 start_kernel () at /root/lkmc/submodules/linux/init/main.c:841
#1 0xffffffff8215145c in x86_64_start_reservations (real_mode_data=<optimized out>) at /root/lkmc/submodules/linux/arch/x86/kernel/head64.c:490
#2 0xffffffff821514e3 in x86_64_start_kernel (real_mode_data=0x138d0 <bts_ctx+2256> <error: Cannot access memory at address 0x138d0>) at /root/lkmc/submodules/linux/arch/x86/kernel/head64.c:471
#3 0xffffffff810000e6 in secondary_startup_64 () at /root/lkmc/submodules/linux/arch/x86/kernel/head_64.S:243
#4 0x0000000000000000 in ?? ()
(gdb) up
#1 0xffffffff8215145c in x86_64_start_reservations (real_mode_data=<optimized out>) at /root/lkmc/submodules/linux/arch/x86/kernel/head64.c:490
490 start_kernel();
(gdb) l
485 break;
486 default:
487 break;
488 }
489
490 start_kernel();
491 }
``
= Multiple architectures supported
{parent=Linux Kernel Module Cheat}
E.g., if you want aarch64 instead of the default x86_64:
``
./build -aA
./run -aA
``
That's it.
= Lots of in-tree examples
{parent=Linux Kernel Module Cheat}
= Kernel modules
{parent=Lots of in-tree examples}
https://github.com/cirosantilli/linux-kernel-module-cheat/blob/master/kernel_modules/hello.c[kernel_modules/hello.c]
``
#include <linux/module.h>
#include <linux/kernel.h>
static int myinit(void)
{
pr_info("hello init\n");
/* 0 for success, any negative value means failure,
* E* consts if you want to specify failure cause.
* https://www.linux.com/learn/kernel-newbie-corner-loadable-kernel-modules-coming-and-going */
return 0;
}
static void myexit(void)
{
pr_info("hello exit\n");
}
module_init(myinit)
module_exit(myexit)
MODULE_LICENSE("GPL");
``
= Assembly
{parent=Lots of in-tree examples}
Assertions! The best way to learn assembly.
https://github.com/cirosantilli/linux-kernel-module-cheat/blob/master/userland/arch/x86_64/add.S[userland/arch/x86_64/add.S]
``
#include <lkmc.h>
LKMC_PROLOGUE
/* Register immediate. */
mov $1, %rax
add $2, %rax
LKMC_ASSERT_EQ(%rax, $3)
LKMC_EPILOGUE
``
= Bare metal!
{parent=Lots of in-tree examples}
Powered by crosstool-NG:
https://github.com/cirosantilli/linux-kernel-module-cheat/blob/master/baremetal/arch/aarch64/semihost_exit.S[baremetal/arch/aarch64/semihost_exit.S]
``
.global main
main:
/* 0x20026 == ADP_Stopped_ApplicationExit */
mov x1, 0x26
movk x1, 2, lsl 16
str x1, [sp, 0]
/* Exit status code. Host QEMU process exits with that status. */
mov x0, 0
str x0, [sp, 8]
/* x1 contains the address of parameter block.
* Any memory address could be used.
*/
mov x1, sp
/* SYS_EXIT */
mov w0, 0x18
/* Do the semihosting call on A64. */
hlt 0xf000
``
= OurBigBook.com
{parent=Aratu Week 2024 Talk by Ciro Santilli}
What I'm doing for 1 year now!
* https://docs.ourbigbook.com
* https://ourbigbook.com
* https://github.com/ourbigbook/ourbigbook
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook/master/logo.svg]
{title=Logo of the <OurBigBook Project>}
{height=600}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/github_com_ourbigbook_ourbigbook.png]
{title=Everything is open source}
{source=https://github.com/ourbigbook/ourbigbook}
{height=1000}
\Video[https://www.youtube.com/watch?v=7JOJYx0mmhg]
{title=Intro to the <OurBigBook Project>}
{height=700}
= An anonymous donor gave me 1000 Monero (~126,000 USD) on March 2024 to work on this for one year
{parent=OurBigBook.com}
<sponsor/1000 monero donation>{full}
\Image[https://web.archive.org/web/20240306094726if_/https://www.getmonero.org/press-kit/symbols/monero-symbol-on-white-1280.png]
{height=600}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Ciro_Santilli_s_Monero_wallet_after_1000_Monero_donation_on_2024-03-19.png]
{title=Screenshot of <Ciro Santilli>'s Monero wallet with 1000 Monero in it just after the donation}
{height=800}
{border}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Ciro_Santilli_s_Monero_reaction_video_still_on_2024-03-19.jpg]
{title=Still of the reaction video after finding out about the big donation around about midnight}
{height=700}
{source=https://youtu.be/2jZpXOFz1pw}
\Image[https://web.archive.org/web/20240118181009im_/https://i.kym-cdn.com/photos/images/newsfeed/001/770/306/493]
{title=It's a role given to me by the Internet people}
{height=600}
= Motivation: university sucks real bad right now
{parent=OurBigBook.com}
The ultimate goal: create an university:
* without entry exams
* without course requirements
* where \b[all] material is <force public university teachers to publish their teaching material with an open license>[free and available online]: lecture notes, problem sheets, past exam papers
* where you only pay to take certification exams for the courses that you care about
The technical goal:
\Q[Get <university> students to write what they learn. All university material should be amazing and free!]
The how:
\Q[Create the ultimate <personal knowledge base software> with multi-user mind-melding features.]
= What you get
{parent=OurBigBook.com}
= One mega article tree for each user
{parent=What you get}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/ourbigbook.com/cirosantilli.png]
{title=User home page on OurBigBook.com}
{description=Live URL: https://ourbigbook.com/cirosantilli}
{height=3000}
{border}
= Infinitely deep table of contents
{parent=What you get}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/dynamic-article-tree/demo.png]
{title=Dynamic article tree with infinitely deep https://docs.ourbigbook.com/#table-of-contents[table of contents]}
{description=
Live URL: https://ourbigbook.com/cirosantilli/chordate
Descendant pages can also show up as toplevel e.g.: https://ourbigbook.com/cirosantilli/chordate-subclade[]
}
{height=2700}
{border}
= Topics: the best version of an article by other users (the killer feature)
{parent=OurBigBook.com}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/topics/derivative.png]
{title=The <ourbigbook topics feature>[topics feature] allows you to find the best version of a subject written by other users user}
{description=Live demo: <#derivative>.}
{height=1000}
{border}
= Edit and publish
{parent=OurBigBook.com}
= Internal cross file references done right
{parent=Edit and publish}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/x/hilbert-space-arrow.png]
{height=571}
{border}
= Web editor with side by side preview
{parent=Edit and publish}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/web-editor/cirosantilli-derivative.png]
{title=https://docs.ourbigbook.com/#web-editor[Web editor]}
{description=You can also edit articles on the https://docs.ourbigbook.com/#web-editor[Web editor] without installing anything locally.}
{height=800}
{border}
= Publish from local markup files
{parent=Edit and publish}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/local-editing/bigb-publish-to-web-or-static-editor-logos.svg]
{title=You can publish local <OurBigBook markup>[lightweight markup files] to either <OurBigBook Web> or as a <static website>}
{description=
For example, both of the following pages:
* https://cirosantilli.com (static)
* https://ourbigbook.com/cirosantilli (dynamic)
are generated from the exact same source code at: https://github.com/cirosantilli/cirosantilli.github.io[].
}
{height=600}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/vscode/install.png]
{title=https://docs.ourbigbook.com/#visual-studio-code[Visual Studio Code extension] installation}
{height=750}
{border}
\Image[https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/vscode/tree.png]
{title=https://docs.ourbigbook.com/#visual-studio-code[Visual Studio Code extension] tree navigation}
{height=1100}
= OurBigBook.com vs X
{parent=OurBigBook.com}
<OurBigBook.com/Alternatives>{full}
\Image[https://upload.wikimedia.org/wikipedia/en/8/80/Wikipedia-logo-v2.svg]
{height=400}
<Wikipedia>:
* notability guidelines too stringent
* Encyclopedic content requirements too stringent, we need tutorials
* contributors get no clear indication of their contribution
* your changes can be reverted at any time losing you hours of work
\Image[https://upload.wikimedia.org/wikipedia/commons/0/02/Stack_Overflow_logo.svg]
{height=200}
<Stack Exchange>: can't write a book/have table of contents, only Q&A
\Image[https://upload.wikimedia.org/wikipedia/commons/1/10/2023_Obsidian_logo.svg]
{height=400}
Other personal knowledge bases (Obsidian, static site generators, etc.), blogs, PDFs:
* no way to merge brains of multiple users
* some of them are not focused on publishing, only personal/internal company usage
= Ciro's Bitcoin Inscription Museum
{parent=Aratu Week 2024 Talk by Ciro Santilli}
{title2=cirosantilli.com/cool-data-embedded-in-the-bitcoin-blockchain}
Article: <Ciro's Bitcoin Inscription Museum>{full}
= How illegal does something in the Bitcoin blockchain have to be to make it illegal?
{parent=Ciro's Bitcoin Inscription Museum}
= Pedobear memes?
{parent=How illegal does something in the Bitcoin blockchain have to be to make it illegal?}
\Image[https://web.archive.org/web/20240827163843if_/https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/hostedimages/1396092852i/9088465._SX540_.jpg]
{title=<Pedobear> memes?}
{source=https://www.goodreads.com/topic/show/1740816-epic-fail}
{height=600}
= Nuclear weapon designs?
{parent=How illegal does something in the Bitcoin blockchain have to be to make it illegal?}
\Image[https://archive.ph/ooG6G/e9f0d891e47d6941cd956ae116b4fa7d311bb3d1.webp]
{title=<Physics package of a nuclear weapon> design documents?}
{height=600}
{source=https://old.reddit.com/r/nuclearweapons/comments/196er9b/some_speculation_on_the_b61_thermonuclear_gravity/}
= Political memes?
{parent=How illegal does something in the Bitcoin blockchain have to be to make it illegal?}
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/Tank_Man.jpg]
{title=<Tank man>?}
{height=600}
{source=https://www.scmp.com/culture/article/2096173/other-photographers-who-snapped-tiananmens-tank-man-and-their-memories-june}
= Ordinal ruleset inscription (2022): the end of the line: Eternal September arrives
{parent=Ciro's Bitcoin Inscription Museum}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/bitcoin-inscription-indexer/data/bin/6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799-0.png]
{title=Ordinal \#0}
{height=600}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Bitcoin_ordinal_ruleset_inscriptions_per_time_2024_08_31.png]
{title=Bitcoin ordinal ruleset inscription frequency with time}
{source=https://dune.com/dgtl_assets/bitcoin-ordinals-analysis}
{height=510}
= My obsession: find \b[every] image before ordinals
{parent=Ciro's Bitcoin Inscription Museum}
= Fan tributes
{parent=My obsession: find every image before ordinals}
``
-------------------------------------
| Force of Will 3 U U |
| --------------------------------- |
| | //////////// | |
| | ////() ()\////\ | |
| | ///_\ (--) \///\ | |
| | ) //// \_____///\\ | |
| | ) \ / / / / | |
| | ) / \ | | / _/ | |
| | ) \ ( ( / / / / \ | |
| | / ) ( ) / ( )/( ) \ | |
| | \(_)/(_)/ /UUUU \ \\\/ | | |
| .---------------------------------. |
| Interrupt |
| ,---------------------------------, |
| | You may pay 1 life and remove a | |
| | blue card in your hand from the | |
| | game instead of paying Force of | |
| | Will's casting cost. Effects | |
| | that prevent or redirect damage | |
| | cannot be used to counter this | |
| | loss of life. | |
| | Counter target spell. | |
| `---------------------------------` |
| l
| Illus. Terese Nelsen |
-------------------------------------
``
{title=<ASCII art> of a https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=413591[Force of Will] <Magic: The Gathering> card <inscribed (blockchain)> in the <Bitcoin blockchain>}
= Social media
{parent=My obsession: find every image before ordinals}
\Image[https://web.archive.org/web/20230604115203im_/http://bitfossil.org/8d1b3c094b782198deb7381efb57b1208244375e7a1029ec159306d6a8fd25d8/WeAreStarStuff.jpg]
{title=`WeAreStarStuff.jpg`}
{description=AtomSea and EMBII (December 2013)}
{height=600}
= Art
{parent=My obsession: find every image before ordinals}
\Image[https://web.archive.org/web/20220102092623im_/http://bitfossil.org/4cbb32cd27b5b5edc12d3559bdffc1355ac2a210463d5cfaadc7ce9b06675b2b/YellowRobot.jpg]
{title=`YellowRobot.jpg`}
{description=2017}
{height=600}
= Memes
{parent=My obsession: find every image before ordinals}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/bitcoin-inscription-indexer/data/bin/357e8ae080e5a1b554eaec2953e3e6e2e7955f3af4559dd0f1bc6381d56aa183.jpg]
{title=Water Deer}
{description=2016 from https://badtaxidermy.com Visible at: https://web.archive.org/web/20200527070011/http://www.badtaxidermy.com/?page=3[]. Uploaded with: cryptograffiti.info.
}
{height=600}
= Love declaration
{parent=My obsession: find every image before ordinals}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/bitcoin-inscription-indexer/data/bin/609d5e0f968c0ab7abc2be21468cfd552483d38b08e6df23d27766eb61b9be3c.jpg]
{title=Chinese wedding (2016)}
{height=700}
= Promotional material
{parent=My obsession: find every image before ordinals}
Free https://grrcon.com/[GrrCon] ticket (2018):
``
@@@@@@@@@@@@@@@@@@@@@@@@YOUR@FREE@GRRCON@TICKET@CODE@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@% @@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@ .@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@ @@@@( %@@@@ @@@@@@@@@@@@@@@
@@@@@@@@@@@@@@ @@@@ @@@& @@@@@@@@@@@@@
@@@@@@@@@@@@ @@@ @@@@@@@@@@@@@,@. @@@ @@@@@@@@@@@
@@@@@@@@@@ %@@ .&@@@@@@&%@@@@@&&&@@@@@# @@/ /@@@@@@@@@
@@@@@@@@@ @@ @@@&@@O@@@@@@@@@@@@@@@@(@@@@& @@ @@@@@@@@
@@@@@@@@ @@. .@@@,%&@@P@@@@@(,*&*@@@@@@@@#(#.@ (@@ @@@@@@@
@@@@@@* @@ @@(@%@@@@@&R@@@@&@@@@@@@&@@@@@@/ @@@ @@ @@@@@@
@@@@@# @@ @@@@@@@@,,@%@E@%@@@@@@@@@@@%@@@@@.@@@@ @@ @@@@@
@@@@@ @@ @.@@@@@,@@@(@,T@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@
@@@@ @@ @&@@@@@@/@#@(@&@U@@@@@@@@(@@@@@@., #@@@@@ @@ @@@
@@@* @@ @@@@&@@&@ #@@@R@.@@@@@.@@@@@@@%@@(@@@@@ @@ @@@
@@@ @@ /@@*@@ @@@/N/@,@@@@@@@@@ @@@@@@, @@ @@
@@@ @@ @@@@@ @@.@I@@,@@@@@@@@ @@@@&@@ @@ @@
@@/ @@ @@@, (#@/S@@@@@@.,@ **@@&,@ @@ @@
@@ @@ %(( @#@@@@M@@@@@&@ #./%&@@* @@ %@
@@ @@ #&&@ @@@@&@@Y@@@@@ &@,@@@.( @@ %@
@@, @@ @@@@@@ *(@@%@@@F&@. @@&%@@ @@ @@
@@@ @@ @#@%@/@ @@@*@@@R( @@@&@ @@ @@
@@@ @@ @@@@@@@@@%@@@%%@@@@@@@%%/I@ @@@@, @ @@ @@
@@@. @@ @@@@@@@*@&@@@@# @(@@@@@@@@E@@@@@@@& @@ @@@
@@@@ @@ @@@@&@@(@@@@@@.@# @@@ @@@@N@@@@,@( @@ @@@
@@@@@ @@ @@@*@@&@@*(@ @@@&@@&@@D@@@@& @@ @@@@
@@@@@. @@ @/@,@@@@@@@@@@@@@@% @@ @@@@@
@@@@@@ @@ @@@@@@@@@@@@@,@@@@ @@ %@@@@@
@@@@@@@, @@/ @&@@(@@@@ @@@@@@@@@ &@@ @@@@@@@
@@@@@@@@@ @@ #%@(,&,@@@@ @(& @/,@ @@ @@@@@@@@
@@@@@@@@@@ /@@ @@&@@@@@,* @@& @@@@@@ .@@. @@@@@@@@@
@@@@@@@@@@@@ @@@ @(@@@@@@ @@@ .@(@@, @@@ @@@@@@@@@@@
@@@@@@@@@@@@@@ &@@@ @@@# @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@ @@@@@ @@@@@ @@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@# .@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@ @ , . @ @@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @ @# @ *, @ @@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@& @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
``
Removing the `@` signs:
``
YOUR FREE GRRCON TICKET CODE
, *
%
.
* ,
( %
&
, .
% .& &% &&& # / /
& O ( &
. . ,%& P (,*&* #(#. (
* ( % &R & & /
# ,, % E % % .
. , ( ,T
& / # ( & U ( ., #
* & & # R . . % (
/ * /N/ , ,
. I , &
/ , (# /S ., ** &,
%(( # M & #./%& * %
#&& & Y & , .( %
, *( % F& . &%
# % / * R( &
% %% %%/I ,
. * & # ( E &
& ( . # N , (
* & *( & & D &
. / , %
, %
, / & ( &
#% (,&, (& /,
/ & ,* & . .
( . ( ,
& #
# .
, .
# *,
&
``
= China Dictatorship
{title2=github.com/cirosantilli/china-dictatorship}
{parent=Aratu Week 2024 Talk by Ciro Santilli}
* https://cirosantilli.com/china-dictatorship
* https://github.com/cirosantilli/china-dictatorship
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/github.com_cirosantilli_china-dictatorship.png]
{height=1000}
{source=https://github.com/cirosantilli/china-dictatorship}
= Xi Jinping, ruler of China
{parent=China dictatorship}
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/Xi_Jinping_The_Governance_of_China_photo.jpg]
{title=Xi Jinping, ruler of China}
{height=800}
= Xi Jinping, sadomasochist in leather suit
{parent=China dictatorship}
\Image[https://web.archive.org/web/20230609155744im_/https://preview.redd.it/15l6tpf1dqd31.jpg?width=836&auto=webp&v=enabled&s=2b2f3b9f0ae40826858e0f3908f621ff86d62520]
{title=Xi Jinping, ruler of China, wearing leather sadomasochist outfit}
{height=800}
= Collateral freedom: \b[HTTPS]: the censor doesn't know which path you access
{parent=China dictatorship}
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/GitHub_collateral_freedom.jpg]
{height=800}
= The GitHub issue tracker is quite cute, because Chinese people actually use GitHub search in addition to search engines
{parent=China dictatorship}
https://github.com/cirosantilli/china-dictatorship/issues
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/github.com_cirosantilli_china-dictatorship_issues.png]
{height=2000}
{source=https://github.com/cirosantilli/china-dictatorship/issues}
= Stack Overflow attacks
{parent=China dictatorship}
\Image[https://upload.wikimedia.org/wikipedia/commons/0/02/Stack_Overflow_logo.svg]
{height=200}
https://web.archive.org/web/20210917212322/https://stackoverflow.com/questions/6121094/how-do-i-run-a-program-with-commandline-arguments-using-gdb-within-a-bash-script/6121299
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/Stack_Overflow_keyword_attack_by_Ciro_Santilli.png]
{height=1660}
= Package managers
{parent=China dictatorship}
= PyPi: the cowards took it down
{parent=Package managers}
Up March 2023 https://web.archive.org/web/20230306090740/https://pypi.org/project/china-dictatorship/
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/pypi.org_project_china-dictatorship.png]
{height=1900}
Down November 2023 http://web.archive.org/web/20231110041847/https://pypi.org/project/china-dictatorship/
\Image[https://raw.githubusercontent.com/cirosantilli/china-dictatorship-media/master/pypi.org_project_china-dictatorship_down.png]
{height=916}
\Comment[[
= Wall of pride and shame
{parent=China dictatorship}
|| Site
|| Logo
|| Pride or shame
|| Sample
|| Comments
| GitHub
| \image[https://upload.wikimedia.org/wikipedia/commons/c/c2/GitHub_Invertocat_Logo.svg]{height=300}
| \image[https://web.archive.org/web/20230609155744im_/https://preview.redd.it/15l6tpf1dqd31.jpg?width=836&auto=webp&v=enabled&s=2b2f3b9f0ae40826858e0f3908f621ff86d62520]{height=300}
| https://github.com/cirosantilli/china-dictatorship
| Exemplary. Never let me down. Has a public per-country takedown list: https://github.com/github/gov-takedowns/tree/master/China
| Stack Overflow
| \image[https://upload.wikimedia.org/wikipedia/commons/e/ef/Stack_Overflow_icon.svg]{height=300}
| \image[https://web.archive.org/web/20230609155744im_/https://preview.redd.it/15l6tpf1dqd31.jpg?width=836&auto=webp&v=enabled&s=2b2f3b9f0ae40826858e0f3908f621ff86d62520]{height=300}
| https://stackoverflow.com/users/895245/ciro-santilli-ourbigbook-com
| Elected mods refuse to say what is allowed or not, you have to fight and infer from meta threads: https://meta.stackexchange.com/questions/366163/can-i-use-images-such-as-from-tiananmen-square-protests-to-criticise-the-chinese[]. But generally shaming anything the West does not like is OK.
]]
= All GitHub commit emails
{parent=Aratu Week 2024 Talk by Ciro Santilli}
{tag=/All GitHub commit emails}
{title2=github.com/cirosantilli/all-github-commit-emails}
https://github.com/cirosantilli/all-github-commit-emails
More info: </All GitHub Commit Emails>{full}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/GitHub_Archive_Google_bigquery_PushEvent_email_highlight.png]
{height=810}
\Image[https://raw.githubusercontent.com/cirosantilli/media/master/All_GitHub_commit_emails_repo_screenshot_before_takedown_archive_is.png]
{height=768}
= Other projects
{parent=Aratu Week 2024 Talk by Ciro Santilli}
See also <Ciro Santilli's naughty projects>:
* https://github.com/cirosantilli/stack-overflow-vote-fraud-script
* https://ourbigbook.com/cirosantilli/facebook-profile-face-dump