-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1790 lines (1718 loc) · 101 KB
/
Copy pathindex.html
File metadata and controls
1790 lines (1718 loc) · 101 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="SIM://ROOT — the hacker's field guide to your SIM card: anatomy, pinout intel, and a 100% client-side digital infiltration lab.">
<meta name="theme-color" content="#07080c">
<link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
<meta property="og:title" content="SIM://ROOT — Hacker's Guide to Free Living">
<meta property="og:description" content="SIM card anatomy, pinout intel, and a full digital infiltration lab. Zero packets leave the page.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://dlinacre.github.io/sim-root/">
<meta property="og:image" content="https://dlinacre.github.io/sim-root/assets/banner.png">
<meta name="twitter:card" content="summary_large_image">
<title>SIM://ROOT — Hacker's Guide to Free Living</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700;800&family=Share+Tech+Mono&display=swap');
:root{
--bg:#07080c;
--bg2:#101218;
--panel:#11141f;
--panel2:#151a28;
--line:#222938;
--line2:#2a344b;
--text:#dfe7f2;
--muted:#8a96ac;
--dim:#5c677b;
--acid:#00FF88;
--cyan:#00F0FF;
--amber:#FFD600;
--red:#FF2E4D;
--mag:#FF3DF2;
}
/* THEMES */
body.theme-oled{--bg:#000000;--bg2:#07080a;--panel:#060709;--panel2:#0a0b0e;--line:#15171f;--line2:#1b2130}
body.theme-oled .scanlines{opacity:.22}
body.theme-light{
--bg:#e9edf3; --bg2:#f7f9fc; --panel:#ffffff; --panel2:#eef1f7;
--line:#c9d2df; --line2:#b6c1d1; --text:#101720; --muted:#3f4d63; --dim:#6d7c95;
--acid:#007a41;
}
body.theme-light nav{background:rgba(233,237,243,.92)}
body.theme-light .ticker{background:#dfe5ee}
body.theme-light .node{background:#f2f5fa}
body.theme-light .term.mini{background:#f4f7fa;color:#3f4d63}
body.theme-light .highlight-box{background:#f4f6fa}
body.theme-light .hud{background:#ffffffd9;color:#45536a}
body.theme-light .badge{background:#007a4112;border-color:#007a4166}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
margin:0;
background:var(--bg);
color:var(--text);
font-family:'JetBrains Mono','Share Tech Mono',ui-monospace,Menlo,monospace;
line-height:1.6;
overflow-x:hidden;
}
body::before{
content:"";
position:fixed; inset:0;
background:
linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
background-size:40px 40px;
pointer-events:none;
z-index:-2;
}
.scanlines{
position:fixed; inset:0; pointer-events:none; z-index:999;
background: repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.03) 0px,
rgba(255,255,255,0.03) 1px,
transparent 2px,
transparent 4px
);
mix-blend-mode:soft-light;
opacity:.4;
transition:opacity .6s;
}
a{color:var(--acid)}
.wrap{width:min(1220px,calc(100% - 32px)); margin-inline:auto}
:focus-visible{outline:2px solid var(--acid); outline-offset:2px}
/* ============ INFILTRATION ADD-ONS (CSS) ============ */
#boot{
position:fixed; inset:0; z-index:2500;
background:#04060a;
display:flex; align-items:center; justify-content:center;
transition:opacity .6s;
}
#boot.done{opacity:0; pointer-events:none}
.boot-box{width:min(580px,90%)}
#bootLog{
margin:0; font-family:inherit; white-space:pre-wrap;
color:var(--acid); font-size:.85rem; min-height:190px;
text-shadow:0 0 10px #00ff8844;
}
.bootp{margin-top:16px}
.boot-skip{
margin-top:12px; color:var(--dim); font-size:.62rem;
letter-spacing:.24em; text-align:center;
animation:blink 1.4s steps(2) infinite;
}
#rain{position:fixed; inset:0; z-index:-1; opacity:.07; pointer-events:none; transition:opacity .6s}
body.stealth #rain{opacity:.025}
body.stealth .scanlines{opacity:.18}
.ticker{
border-bottom:1px solid var(--line); background:#0a0d13;
overflow:hidden; height:26px; display:flex; align-items:center;
position:relative; z-index:40;
}
.ticker::before{
content:"SIGINT ▮"; flex:0 0 auto; height:100%; display:flex; align-items:center;
padding:0 12px; background:#00ff8812; color:var(--acid);
font-size:.6rem; letter-spacing:.2em; border-right:1px solid #00ff8833; z-index:2;
}
.ticker-track{display:inline-flex; white-space:nowrap; animation:marq 32s linear infinite; font-size:.66rem; letter-spacing:.14em; color:var(--dim)}
.ticker-track span{margin:0 20px}
.ticker-track b{color:var(--acid); font-weight:700}
@keyframes marq{to{transform:translateX(-50%)}}
.hud{
position:fixed; bottom:12px; z-index:60;
font-size:.62rem; letter-spacing:.18em; color:var(--dim);
background:#04060ad9; border:1px solid var(--line);
padding:6px 10px; border-radius:6px; backdrop-filter:blur(8px);
pointer-events:none;
}
.hud-l{left:12px}
.hud-r{right:12px}
.hud-r .rv{color:var(--acid)}
.lab-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.span2{grid-column:1/-1}
.lab-panel{
border:1px solid var(--line);
background:linear-gradient(180deg,var(--panel2),var(--panel));
border-radius:14px; padding:18px; position:relative; overflow:hidden;
}
.lab-head{
display:flex; justify-content:space-between; gap:10px;
font-size:.68rem; letter-spacing:.18em; color:var(--muted);
text-transform:uppercase; margin-bottom:12px;
}
.lab-live{color:var(--acid); animation:pulse 2s infinite; white-space:nowrap}
.tiny{font-size:.75rem; color:var(--dim); margin:0 0 10px}
.fineprint{color:var(--dim); font-size:.72rem; letter-spacing:.05em; margin-top:16px; line-height:1.5}
.btn{
font-family:inherit; cursor:pointer;
background:#00ff8812; color:var(--acid);
border:1px solid #00ff8844; padding:8px 14px;
font-size:.72rem; letter-spacing:.14em; border-radius:6px;
text-transform:uppercase; transition:.15s;
}
.btn:hover{background:#00ff8826; box-shadow:0 0 18px #00ff8822; transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-red{background:#ff2e4d12; color:var(--red); border-color:#ff2e4d44}
.btn-red:hover{background:#ff2e4d24; box-shadow:0 0 18px #ff2e4d22}
.btn-amber{background:#ffd60012; color:var(--amber); border-color:#ffd60044}
.btn-amber:hover{background:#ffd60024; box-shadow:0 0 18px #ffd60022}
.btn-ghost{background:#ffffff08; color:var(--muted); border-color:var(--line2)}
.btnrow{display:flex; gap:10px; flex-wrap:wrap; margin:12px 0}
.pbar{height:6px; border:1px solid #00ff8833; background:#00ff8808; border-radius:4px; overflow:hidden; margin:10px 0 2px}
.pbar i{display:block; height:100%; width:0; background:linear-gradient(90deg,#00ff8866,var(--acid)); box-shadow:0 0 12px var(--acid); transition:width .45s}
.term.mini{
max-height:210px; min-height:120px; background:#05080bd8;
border:1px solid var(--line); border-radius:8px; padding:12px; font-size:.76rem;
overflow:auto; line-height:1.65; color:var(--muted);
}
.ok{color:var(--acid)} .warn{color:var(--amber)} .bad{color:var(--red)} .c2{color:var(--cyan)}
.term.mini .comment{color:#4a5466}
.term.mini b, .shellout b{color:var(--text)}
.hex{
font-size:.68rem; line-height:1.5; color:#6fd9a4;
background:#04070a; border:1px dashed #00ff8822;
border-radius:8px; padding:10px 12px; margin:10px 0;
overflow:hidden; white-space:pre; min-height:96px;
}
.hex .addr{color:var(--dim)} .hex .asc{color:#3f4a5c}
.nodes{display:flex; gap:8px; margin:6px 0 4px; flex-wrap:wrap}
.node{
flex:1; min-width:104px; text-align:center;
border:1px solid var(--line2); border-radius:10px;
padding:12px 6px; font-size:.68rem; letter-spacing:.1em;
color:var(--muted); font-weight:700; background:#0b0f16;
transition:.25s;
}
.node small{display:block; font-weight:400; color:var(--dim); margin-top:4px; letter-spacing:.04em; font-size:.62rem}
.node.hot{border-color:var(--acid); color:var(--acid); box-shadow:0 0 16px #00ff8822 inset, 0 0 16px #00ff8815; transform:translateY(-2px)}
.node.evil{border-color:var(--red); color:var(--red); box-shadow:0 0 16px #ff2e4d22 inset, 0 0 16px #ff2e4d15; transform:translateY(-2px)}
.node.meek{opacity:.38}
.radarwrap{display:grid; grid-template-columns:190px 1fr; gap:12px; align-items:start}
.radar{width:100%; aspect-ratio:1; display:block}
.radar .ring{fill:none; stroke:#00ff8830; stroke-width:1; transition:stroke .5s}
.radar .axis{stroke:#00ff8818; stroke-width:1}
#sweep{transform-origin:150px 150px; animation:spin 3.6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.blip{fill:var(--acid); animation:blipfade 3.2s ease-out forwards}
.blip2{fill:none; stroke:var(--acid); stroke-width:1; animation:bring 3.2s ease-out forwards}
@keyframes blipfade{0%{opacity:1} 70%{opacity:.7} 100%{opacity:0}}
@keyframes bring{0%{r:3; opacity:.8} 100%{r:16; opacity:0}}
#radarBox.dark #sweep{display:none}
#radarBox.dark .ring{stroke:#253047}
#radarBox.dark .axis{stroke:#1b2233}
.rlog{min-height:190px}
.shell-panel{padding:0; display:flex; flex-direction:column}
.shellout{
padding:16px; min-height:170px; max-height:236px; overflow:auto;
font-size:.8rem; line-height:1.65; color:#b8f5d6;
}
.shellline{display:flex; gap:10px; align-items:center; padding:10px 16px; border-top:1px solid #00ff8822; background:#070b09}
.shellline .prompt{color:var(--acid); font-size:.8rem; white-space:nowrap}
.shell-in{
flex:1; background:transparent; border:0; outline:0;
color:var(--text); font:inherit; font-size:.8rem; caret-color:var(--acid);
}
.shell-in::placeholder{color:var(--dim)}
.reveal{opacity:0; transform:translateY(16px); transition:opacity .7s ease, transform .7s ease}
.reveal.in{opacity:1; transform:none}
/* ============ MERGED FEATURES FROM LIN4CRE/simroot (CSS) ============ */
.skip{
position:fixed; left:12px; top:-64px; z-index:3000;
background:var(--acid); color:#04140b; padding:8px 14px;
font-size:.75rem; font-weight:800; border-radius:6px;
transition:top .2s; text-decoration:none; letter-spacing:.08em;
}
.skip:focus{top:12px}
.icobtn{
font-family:inherit; cursor:pointer; background:transparent;
border:1px solid var(--line2); color:var(--muted);
font-size:.66rem; letter-spacing:.1em; border-radius:6px;
padding:5px 9px; transition:.15s; white-space:nowrap;
}
.icobtn:hover{border-color:var(--acid); color:var(--acid)}
.nav-icos{display:flex; gap:8px; align-items:center}
/* modals */
.veil{
position:fixed; inset:0; z-index:2000; display:none;
align-items:center; justify-content:center; padding:20px;
background:#04060ae6; backdrop-filter:blur(6px);
}
.veil.on{display:flex}
.sheet{
width:min(500px,95vw); max-height:85vh; overflow:auto;
background:var(--panel); border:1px solid var(--line2);
border-radius:14px; padding:20px;
box-shadow:0 30px 80px #000c;
}
.sheet h3{margin:0 0 4px; font-size:.9rem; letter-spacing:.16em; text-transform:uppercase; color:var(--acid)}
.sheet .sub2{color:var(--dim); font-size:.7rem; letter-spacing:.08em; margin:0 0 14px}
.setrow{
display:flex; justify-content:space-between; align-items:center; gap:12px;
border:1px solid var(--line); background:var(--panel2);
padding:10px 12px; border-radius:8px; margin:8px 0; font-size:.78rem; color:var(--muted);
}
.setrow input[type=checkbox]{width:16px;height:16px;accent-color:var(--acid);cursor:pointer}
.setrow .seg{display:flex;gap:6px}
.seg button{
font-family:inherit;cursor:pointer;font-size:.62rem;letter-spacing:.1em;
border:1px solid var(--line2);background:transparent;color:var(--dim);
padding:4px 9px;border-radius:5px;text-transform:uppercase;transition:.15s;
}
.seg button.on{border-color:var(--acid);color:var(--acid);background:#00ff8812}
.krow{display:flex;justify-content:space-between;gap:12px;padding:7px 4px;border-bottom:1px dashed var(--line);font-size:.74rem;color:var(--muted)}
.krow:last-child{border-bottom:0}
kbd{
background:var(--panel2);border:1px solid var(--line2);border-bottom-width:2px;
border-radius:5px;padding:1px 8px;font-size:.68rem;color:var(--acid);font-family:inherit;
}
.vclose{float:right;background:transparent;border:0;color:var(--dim);font-size:1.1rem;cursor:pointer}
.vclose:hover{color:var(--text)}
/* interactive SIM chip diagram */
.chip-stage{display:grid;grid-template-columns:1.04fr .96fr;gap:20px;align-items:start;margin:6px 0 26px}
.chipframe{border:1px solid var(--line2);background:#0b0e14;border-radius:12px;padding:14px}
body.theme-light .chipframe{background:#f0f3f8}
.chipframe .lab-head{margin-bottom:8px}
.pad{cursor:pointer}
.pad rect{transition:.2s}
.pad:hover rect,.pad.on rect{stroke-width:3}
.pad text{pointer-events:none}
.dossier{border:1px solid var(--line2);background:linear-gradient(180deg,var(--panel2),var(--panel));border-radius:12px;padding:16px;min-height:280px}
.dossier p{font-size:.8rem;color:var(--muted);margin:0 0 10px;line-height:1.55}
.dossier ul{margin:0 0 12px;padding:0 0 0 16px;color:var(--muted);font-size:.72rem;line-height:1.6}
.dosrow{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:.72rem;margin:8px 0;line-height:1.5;color:var(--muted)}
.dosrow b{display:block;font-size:.6rem;letter-spacing:.18em;margin-bottom:3px}
.dosrow.bad{border-color:#ff2e4d33;background:#ff2e4d08}
.dosrow.good{border-color:#00ff8833;background:#00ff8808}
/* APDU builder */
.apduform .agrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:8px}
.fld label{display:block;font-size:.6rem;letter-spacing:.14em;color:var(--dim);margin:6px 0 3px;text-transform:uppercase}
.fld input,.fld textarea,.fld select{
width:100%;background:var(--bg2);border:1px solid var(--line2);color:var(--text);
padding:8px 10px;border-radius:6px;font:inherit;font-size:.78rem;
}
.fld textarea{min-height:96px;resize:vertical}
.fld input:focus,.fld textarea:focus,.fld select:focus{border-color:var(--acid);outline:0}
.apdu-hex{
font-size:.95rem;letter-spacing:.12em;color:var(--acid);word-break:break-all;
background:#04070a;border:1px dashed #00ff8833;border-radius:8px;padding:10px 12px;margin:8px 0;
}
.apdu-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
/* field kit widgets */
.kit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.meter{height:10px;border:1px solid var(--line2);border-radius:5px;overflow:hidden;background:var(--bg2);margin:10px 0 6px}
.meter i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--red) 0%,var(--amber) 45%,var(--acid) 100%);transition:width .4s}
.bigscore{font-size:1.7rem;font-weight:800;line-height:1;color:var(--text)}
.scoretag{font-size:.6rem;letter-spacing:.16em;padding:3px 8px;border-radius:4px;border:1px solid;display:inline-block;margin-top:8px}
.chk{
display:flex;gap:10px;align-items:center;border:1px solid var(--line);
background:var(--panel2);padding:8px 10px;border-radius:8px;cursor:pointer;
font-size:.73rem;color:var(--muted);margin:6px 0;transition:.15s;
}
.chk:hover{border-color:var(--acid)}
.chk input{accent-color:var(--acid);width:15px;height:15px;flex:0 0 auto;cursor:pointer}
.kv{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);background:var(--panel2);border-radius:8px;font-size:.74rem;color:var(--muted);margin:6px 0}
.kv b{color:var(--text)}
.spstate{font-size:.66rem;letter-spacing:.14em;color:var(--dim);text-transform:uppercase}
.spstate.ok{color:var(--acid)} .spstate.bad{color:var(--red)}
/* interactive protocol checklists */
.pi{display:flex;gap:10px;align-items:flex-start;cursor:pointer;padding:4px 0;list-style:none}
.pi .pb{
flex:0 0 auto;width:14px;height:14px;margin-top:4px;border:1px solid var(--line2);
border-radius:4px;position:relative;transition:.15s;
}
.pi.done .pb{border-color:var(--acid);background:#00ff8818}
.pi.done .pb::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--acid);font-size:10px}
.pi.done .pt{opacity:.45;text-decoration:line-through}
.pi .pe{display:none;font-size:.68rem;color:var(--dim);line-height:1.5;border-left:2px solid var(--line2);padding:2px 0 2px 10px;margin:6px 0 4px}
.pi.open .pe{display:block}
ul.protolist{padding:0;margin:12px 0 0}
/* reduced motion */
@media (prefers-reduced-motion: reduce){
*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
body.rm *{animation:none!important;transition:none!important}
/* ============ NAV ============ */
nav{
position:sticky; top:0; z-index:50;
border-bottom:1px solid var(--line);
background:rgba(7,8,12,.9);
backdrop-filter:blur(18px);
}
.nav-inner{display:flex; align-items:center; justify-content:space-between; min-height:56px; gap:20px}
.brand{display:flex; align-items:center; gap:12px; font-weight:800; letter-spacing:.12em; font-size:.85rem}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--acid);box-shadow:0 0 16px var(--acid); animation:pulse 2s infinite}
.badge{font-size:.68rem; letter-spacing:.18em; color:var(--acid); border:1px solid #00ff8866; padding:4px 9px; border-radius:4px; background:#00ff8812}
.nav-links{display:flex; gap:20px; font-size:.78rem; letter-spacing:.06em}
.nav-links a{color:var(--muted); text-decoration:none; text-transform:uppercase}
.nav-links a:hover{color:var(--text)}
.nav-links a b{color:var(--dim); font-weight:400; margin-right:4px}
/* HERO */
.hero{display:grid; grid-template-columns:1.15fr .85fr; gap:46px; padding:78px 0 64px; align-items:center; position:relative}
.eyebrow{display:inline-flex; gap:10px; align-items:center; color:var(--acid); font-size:.78rem; letter-spacing:.22em; text-transform:uppercase; font-weight:700}
.eyebrow i{width:28px; height:1px; background:var(--acid); display:inline-block}
h1{font-family:'Share Tech Mono',monospace; font-size:clamp(2.9rem,7vw,5.8rem); line-height:.88; letter-spacing:-.06em; margin:14px 0 18px; text-transform:uppercase}
h1 .glitch{position:relative; display:inline-block; color:var(--text)}
h1 .glitch::before, h1 .glitch::after{
content:attr(data-text); position:absolute; left:0; top:0; width:100%; height:100%; overflow:hidden;
}
h1 .glitch::before{animation:glitch1 .9s infinite linear alternate-reverse; color:var(--cyan); z-index:-1; clip-path:inset(0 0 60% 0)}
h1 .glitch::after{animation:glitch2 .8s infinite linear alternate-reverse; color:var(--mag); z-index:-2; clip-path:inset(60% 0 0 0)}
h1 span.acid{color:var(--acid); text-shadow:0 0 18px #00ff8855}
.lead{color:var(--muted); font-size:1.05rem; max-width:58ch; line-height:1.7}
.lead strong{color:var(--text); font-weight:700}
.kpi{display:flex; gap:18px; margin-top:28px; flex-wrap:wrap}
.kpi div{border:1px solid var(--line); background:linear-gradient(180deg,var(--panel),var(--bg2)); padding:10px 14px; border-radius:10px; min-width:132px}
.kpi b{display:block; font-size:1.25rem; color:var(--acid); line-height:1}
.kpi s{font-size:.7rem; color:var(--dim); text-decoration:none; text-transform:uppercase; letter-spacing:.12em}
/* ARTIFACT */
.artifact{position:relative; border-radius:16px; padding:12px; background:linear-gradient(180deg,#161b29,#0e1118); border:1px solid var(--line2); box-shadow:0 0 0 1px #000 inset, 0 30px 80px #000a, 0 0 40px #00ff8815}
.artifact::before, .artifact::after{content:""; position:absolute; width:22px; height:22px; border:2px solid var(--acid)}
.artifact::before{top:-2px; left:-2px; border-right:0; border-bottom:0; border-radius:10px 0 0 0}
.artifact::after{bottom:-2px; right:-2px; border-left:0; border-top:0; border-radius:0 0 10px 0}
.artifact img{width:100%; display:block; border-radius:10px; filter:contrast(1.15) saturate(1.1)}
.artifact .label-bar{display:flex; justify-content:space-between; align-items:center; font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--dim); margin-bottom:10px}
.artifact .label-bar span:last-child{color:var(--acid)}
.scan-line{position:absolute; left:12px; right:12px; height:2px; background:linear-gradient(90deg,transparent,var(--acid),transparent); top:30%; animation:scan 3.2s ease-in-out infinite; box-shadow:0 0 12px var(--acid); opacity:.8}
.console-line{font-size:.75rem; color:var(--acid); background:#00ff880d; border:1px dashed #00ff8833; padding:6px 10px; border-radius:6px; margin-top:12px; display:flex; gap:8px; align-items:center}
.console-line b{width:6px; height:10px; background:var(--acid); display:inline-block; animation:blink 1s steps(2) infinite}
/* SECTIONS */
section{padding:64px 0; border-top:1px solid #171d2a; position:relative}
body.theme-light section{border-top:1px solid #d5dce7}
h2{font-family:'Share Tech Mono',monospace; font-size:clamp(1.8rem,3.8vw,2.7rem); line-height:.95; letter-spacing:-.03em; margin:0 0 12px; text-transform:uppercase}
h2 i{color:var(--acid); font-style:normal}
.sub{color:var(--muted); max-width:72ch; margin:0 0 28px; font-size:.98rem}
.sub em{color:var(--amber); font-style:normal; background:#FFD60012; border:1px solid #FFD60022; padding:1px 6px; border-radius:4px}
/* PINS */
.pins-layout{display:grid; grid-template-columns:.95fr 1.15fr; gap:28px; align-items:start}
.pin-list{display:grid; gap:10px}
.pin-row{
display:grid; grid-template-columns:94px 1fr; gap:14px;
border:1px solid var(--line); background:linear-gradient(180deg,var(--panel2),var(--panel));
border-radius:10px; padding:14px 14px 12px; transition:.2s;
cursor:pointer;
}
.pin-row:hover, .pin-row.active{border-color:#00ff8866; transform:translateX(4px); box-shadow:0 0 0 1px #00ff8822 inset}
.pin-tag{height:fit-content; padding:6px 8px; border-radius:6px; font-weight:800; font-size:.78rem; letter-spacing:.08em; text-align:center; border:1px solid}
.tag-vcc{background:#00ff8815; color:var(--acid); border-color:#00ff8833}
.tag-rst{background:#00f0ff15; color:var(--cyan); border-color:#00f0ff33}
.tag-clk{background:#ffd60015; color:var(--amber); border-color:#ffd60033}
.tag-gnd{background:#ffffff0f; color:#c7d0de; border-color:#ffffff1a}
.tag-vpp{background:#ff2e4d15; color:var(--red); border-color:#ff2e4d33}
.tag-io{background:#9b5cff15; color:#9b5cff; border-color:#9b5cff33}
.tag-usb{background:#ff3df215; color:var(--mag); border-color:#ff3df233}
.pin-row h3{margin:0 0 4px; font-size:.96rem; letter-spacing:.02em}
.pin-row p{margin:0; font-size:.86rem; color:var(--muted); line-height:1.5}
.pin-row small{display:block; margin-top:6px; color:var(--dim); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase}
.highlight-box{
border:1px solid var(--line2); background:#0c1019; border-radius:12px; padding:16px;
}
.highlight-box .bar{display:flex; gap:8px; margin-bottom:14px}
.bar i{width:10px; height:10px; border-radius:50%; display:block}
.term{font-size:.84rem; color:var(--muted); line-height:1.65; max-height:520px; overflow:auto}
.term b{color:var(--text)}
.term .comment{color:#4a5466}
.term .ok{color:var(--acid)}
.term .warn{color:var(--amber)}
/* OPSEC GRID */
.grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px}
.card{border:1px solid var(--line); background:radial-gradient(120% 120% at 0% 0%, #1a2236 0%, var(--panel) 40%), var(--panel); border-radius:14px; padding:22px; position:relative; overflow:hidden}
.card::before{content:""; position:absolute; inset:0; background:linear-gradient(100deg, transparent 20%, rgba(0,255,136,0.07) 50%, transparent 80%); transform:translateX(-100%); transition:.6s}
.card:hover::before{transform:translateX(100%)}
.card h3{margin:4px 0 8px; font-size:1.05rem}
.card p{margin:0; color:var(--muted); font-size:.9rem}
.step-num{font-size:.72rem; letter-spacing:.18em; color:var(--acid); font-weight:800}
.card ul{margin:12px 0 0; padding:0 0 0 18px; color:var(--muted); font-size:.86rem}
.card li{margin:4px 0}
/* TERMINAL */
.terminal{border-radius:12px; border:1px solid #00ff8844; background:#05080b; overflow:hidden; box-shadow:0 0 0 1px #00ff8811 inset, 0 20px 60px #0009}
.term-head{display:flex; align-items:center; justify-content:space-between; padding:10px 14px; background:#0a1511; border-bottom:1px solid #00ff8822; font-size:.75rem; letter-spacing:.14em; text-transform:uppercase; color:var(--acid)}
.term-body{padding:22px; font-size:.88rem; color:#b8f5d6; line-height:1.7}
.term-body .prompt{color:var(--acid)}
.term-body .cmd{color:var(--text)}
.blink{animation:blink 1s steps(2) infinite}
/* FOOTER */
footer{padding:40px 0 70px; border-top:1px solid var(--line); color:var(--dim); font-size:.8rem}
footer strong{color:var(--muted)}
/* ANIM */
@keyframes pulse{0%,100%{opacity:1} 50%{opacity:.4}}
@keyframes blink{0%,50%{opacity:1} 51%,100%{opacity:0}}
@keyframes scan{0%{top:15%} 50%{top:82%} 100%{top:15%}}
@keyframes glitch1{0%{transform:translate(0)} 20%{transform:translate(-2px,1px)} 40%{transform:translate(1px,-1px)} 60%{transform:translate(-1px,0)} 80%{transform:translate(2px,1px)} 100%{transform:translate(0)}}
@keyframes glitch2{0%{transform:translate(0)} 20%{transform:translate(2px,-1px)} 40%{transform:translate(-1px,1px)} 60%{transform:translate(1px,0)} 80%{transform:translate(-1px,-1px)} 100%{transform:translate(0)}}
/* RESPONSIVE */
@media(max-width:900px){
.hero{grid-template-columns:1fr; padding-top:36px}
.artifact{max-width:520px; margin-inline:auto; order:-1}
.pins-layout{grid-template-columns:1fr}
.grid{grid-template-columns:1fr}
.nav-links{display:none}
.lab-grid{grid-template-columns:1fr}
.radarwrap{grid-template-columns:1fr}
.radar{max-width:230px; margin-inline:auto}
.chip-stage{grid-template-columns:1fr}
.kit-grid{grid-template-columns:1fr}
.apdu-cols{grid-template-columns:1fr}
.apduform .agrid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:700px){
.hud{display:none}
}
</style>
</head>
<body>
<a class="skip" href="#anatomy">▚ SKIP TO INTEL</a>
<div class="scanlines"></div>
<canvas id="rain" aria-hidden="true"></canvas>
<div id="boot" role="presentation">
<div class="boot-box">
<pre id="bootLog"></pre>
<div class="pbar bootp"><i id="bootFill"></i></div>
<div class="boot-skip">[ CLICK ANYWHERE TO SKIP ]</div>
</div>
</div>
<div class="hud hud-l" id="hudL">GRID REF :: X:0000 Y:0000 // 53.7960N 1.7594W</div>
<div class="hud hud-r"><span id="hudClock">--:--:--</span> // RF: <span class="rv" id="hudRf">SWEEPING</span></div>
<nav>
<div class="wrap nav-inner">
<div class="brand"><span class="dot"></span> SIM://ROOT <span class="badge">CLASS: UNTRACEABLE</span></div>
<div class="nav-links">
<a href="#anatomy"><b>01</b> ANATOMY</a>
<a href="#pins"><b>02</b> PINS</a>
<a href="#free"><b>03</b> FREE_PROTOCOLS</a>
<a href="#lab"><b>04</b> LAB</a>
<a href="#fieldkit"><b>05</b> FIELD_KIT</a>
<a href="#manifesto"><b>06</b> MANIFESTO</a>
<a href="https://github.com/DLinacre/sim-root" target="_blank" rel="noopener"><b>07</b> SOURCE</a>
</div>
<div class="nav-icos" role="toolbar" aria-label="quick controls">
<button class="icobtn" id="btnSfx" title="Sound FX (m)" aria-pressed="false">SFX:OFF</button>
<button class="icobtn" id="btnKeys" title="Keyboard shortcuts (?)">⌨ ?</button>
<button class="icobtn" id="btnSettings" title="Settings">⚙ CFG</button>
</div>
</div>
<div class="ticker" aria-hidden="true">
<div class="ticker-track">
<span><b>▪</b> INTERCEPT LOG [SIM] :: RAND 4F:C9:12:FA:88:01 … SRES MATCH</span>
<span><b>▪</b> UK GRID MCC 234 :: 4 CELLS IN SECTOR</span>
<span><b>▪</b> 2G DOWNGRADE ATTEMPT :: BLOCKED</span>
<span><b>▪</b> FARADAY SLEEVE TEST :: -92 dB ATTENUATION</span>
<span><b>▪</b> eUICC PROFILE ROTATION :: T-MINUS 6 DAYS</span>
<span><b>▪</b> TMSI REASSIGNMENT :: COMPLETE</span>
<span><b>▪</b> REMINDER: OFCOM STILL APPLIES</span>
<span><b>▪</b> STATUS :: UNLEASHED</span>
<span><b>▪</b> INTERCEPT LOG [SIM] :: RAND 4F:C9:12:FA:88:01 … SRES MATCH</span>
<span><b>▪</b> UK GRID MCC 234 :: 4 CELLS IN SECTOR</span>
<span><b>▪</b> 2G DOWNGRADE ATTEMPT :: BLOCKED</span>
<span><b>▪</b> FARADAY SLEEVE TEST :: -92 dB ATTENUATION</span>
<span><b>▪</b> eUICC PROFILE ROTATION :: T-MINUS 6 DAYS</span>
<span><b>▪</b> TMSI REASSIGNMENT :: COMPLETE</span>
<span><b>▪</b> REMINDER: OFCOM STILL APPLIES</span>
<span><b>▪</b> STATUS :: UNLEASHED</span>
</div>
</div>
</nav>
<main class="wrap" id="top">
<section class="hero" style="border:0">
<div>
<div class="eyebrow"><i></i> deconstructing your digital collar</div>
<h1><span class="glitch" data-text="SIM CARD">SIM CARD</span><br><span class="acid">PARTS &</span><br>FUNCTIONS</h1>
<p class="lead">
That tiny gold chip in your pocket is a <strong>tamper-resistant computer</strong> that decides who you are to the network. Corporations want you to ignore it. Hackers learn to <strong>read it, control it, and kill-switch it</strong>.<br><br>
This is your field manual for understanding the leash — so you can live without it when you choose to.
</p>
<div class="kpi">
<div><b>6 CONTACTS</b><s>+2 USB OPT</s></div>
<div><b>ISO 7816</b><s>SMART-CARD PROTOCOL</s></div>
<div><b>NO TRACK</b><s>IF YOU OWN IT</s></div>
<div><b>0 PACKETS</b><s>LEAVE THIS PAGE</s></div>
</div>
</div>
<div class="artifact" id="artifact">
<div class="label-bar"><span>[REF_IMG_01] / SIM_CARD_PARTS_AND_FUNCTIONS.JPG</span><span>● ENCRYPTED</span></div>
<div style="position:relative; overflow:hidden; border-radius:10px">
<img src="image.png" alt="SIM Card Parts and Functions diagram - original intel">
<div class="scan-line"></div>
</div>
<div class="console-line"><b></b><span id="typewriter">> analyzing contacts: VCC... GND... I/O... [OK]</span></div>
</div>
</section>
<section id="anatomy">
<div class="eyebrow">file_01 // anatomy</div>
<h2>THE CHIP <i>IS NOT</i> THE PLASTIC</h2>
<p class="sub">
The image you gave us is the only thing the telco wants you to see: <em>harmless gold pads</em>. Truth is, under those 6 pads sits a full microcontroller with its own OS, crypto keys, and file system. The plastic carrier is just a handle. The computer is underneath.
<br><br>Click any pad. Get its dossier. Break it down and you break free.
</p>
<!-- interactive chip diagram + dossier : merged from LIN4CRE/simroot -->
<div class="chip-stage">
<div class="chipframe">
<div class="lab-head"><span>ISO 7816-2 CONTACT BLOCK — CLICK A PAD</span><span class="lab-live">● TOUCH INTERFACE</span></div>
<svg id="chipSvg" viewBox="0 0 400 190" role="group" aria-label="Interactive SIM card contact diagram" style="width:100%;display:block">
<rect x="8" y="8" width="384" height="174" rx="14" fill="var(--panel2)" stroke="var(--line2)" stroke-width="2"/>
<path d="M 370 8 L 392 30 L 392 8 Z" fill="var(--bg)" stroke="var(--line2)" stroke-width="2"/>
<rect x="140" y="86" width="120" height="18" rx="4" fill="#000" stroke="#00FF8844" stroke-width="1"/>
<text x="200" y="99" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--dim)" letter-spacing="2">SIM://DIE</text>
<g class="pad" data-pin="vcc" tabindex="0" role="button" aria-label="C1 VCC power pin">
<rect x="20" y="25" width="85" height="45" rx="6" fill="#00ff8812" stroke="#00FF88" stroke-width="1.5"/>
<text x="62" y="44" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#00FF88">C1</text>
<text x="62" y="62" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">VCC</text>
</g>
<g class="pad" data-pin="rst" tabindex="0" role="button" aria-label="C2 RST reset pin">
<rect x="115" y="25" width="85" height="45" rx="6" fill="#00f0ff12" stroke="#00F0FF" stroke-width="1.5"/>
<text x="157" y="44" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#00F0FF">C2</text>
<text x="157" y="62" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">RST</text>
</g>
<g class="pad" data-pin="clk" tabindex="0" role="button" aria-label="C3 CLK clock pin">
<rect x="210" y="25" width="85" height="45" rx="6" fill="#ffd60012" stroke="#FFD600" stroke-width="1.5"/>
<text x="252" y="44" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#FFD600">C3</text>
<text x="252" y="62" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">CLK</text>
</g>
<g class="pad" data-pin="usb" tabindex="0" role="button" aria-label="C4 USB D plus pin">
<rect x="305" y="25" width="75" height="50" rx="6" fill="#ff3df212" stroke="#FF3DF2" stroke-width="1.5"/>
<text x="342" y="46" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#FF3DF2">C4</text>
<text x="342" y="63" text-anchor="middle" font-family="monospace" font-size="9" fill="var(--muted)">USB D+</text>
</g>
<g class="pad" data-pin="gnd" tabindex="0" role="button" aria-label="C5 GND ground pin">
<rect x="20" y="120" width="85" height="45" rx="6" fill="#ffffff0d" stroke="#94A3B8" stroke-width="1.5"/>
<text x="62" y="139" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#94A3B8">C5</text>
<text x="62" y="157" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">GND</text>
</g>
<g class="pad" data-pin="vpp" tabindex="0" role="button" aria-label="C6 VPP legacy programming pin">
<rect x="115" y="120" width="85" height="45" rx="6" fill="#ff2e4d12" stroke="#FF2E4D" stroke-width="1.5"/>
<text x="157" y="139" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#FF2E4D">C6</text>
<text x="157" y="157" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">VPP</text>
</g>
<g class="pad" data-pin="io" tabindex="0" role="button" aria-label="C7 IO data pin">
<rect x="210" y="120" width="85" height="45" rx="6" fill="#9b5cff12" stroke="#9b5cff" stroke-width="1.5"/>
<text x="252" y="139" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#9b5cff">C7</text>
<text x="252" y="157" text-anchor="middle" font-family="monospace" font-size="10" fill="var(--muted)">I/O</text>
</g>
<g class="pad" data-pin="usb" tabindex="0" role="button" aria-label="C8 USB D minus pin">
<rect x="305" y="115" width="75" height="50" rx="6" fill="#ff3df212" stroke="#FF3DF2" stroke-width="1.5"/>
<text x="342" y="136" text-anchor="middle" font-family="monospace" font-weight="700" font-size="12" fill="#FF3DF2">C8</text>
<text x="342" y="153" text-anchor="middle" font-family="monospace" font-size="9" fill="var(--muted)">USB D-</text>
</g>
</svg>
</div>
<div class="dossier" aria-live="polite">
<div class="lab-head"><span id="dosTitle">DOSSIER — VCC // C1</span><span class="lab-live" id="dosVolt">1.8V / 3V / 5V</span></div>
<p id="dosDesc">Power pin. Feeds regulated operating voltage to the internal microcontroller.</p>
<ul id="dosTech"></ul>
<div class="dosrow bad"><b style="color:var(--red)">⚠ EXPLOIT VECTOR</b><span id="dosExploit"></span></div>
<div class="dosrow good"><b style="color:var(--acid)">✓ DEFENSE TACTIC</b><span id="dosDefense"></span></div>
</div>
</div>
<div class="pins-layout" id="pins">
<div class="pin-list">
<div class="pin-row active" data-pin="vcc">
<div class="pin-tag tag-vcc">VCC // C1</div>
<div>
<h3>Voltage Supply — The Juice</h3>
<p>Power pin. Feeds 1.8V / 3V / 5V to the chip. Cut this, the SIM dies instantly. Free living protocol: kill-switch = airplane mode + physical ejection.</p>
<small>CORE EXPLOIT: No power = No IMSI catcher can handshake</small>
</div>
</div>
<div class="pin-row" data-pin="rst">
<div class="pin-tag tag-rst">RESET // C2</div>
<div>
<h3>Reset — The Reboot</h3>
<p>Forces cold reset of the SIM OS. Phone pulls RST low to restart authentication. Understand this if you build your own readers.</p>
<small>NOTE: Every boot = new RAND challenge from tower</small>
</div>
</div>
<div class="pin-row" data-pin="clk">
<div class="pin-tag tag-clk">CLOCK // C3</div>
<div>
<h3>Clock — The Heartbeat</h3>
<p>Timing signal, usually 1-5 MHz. Synchronizes data between phone baseband and SIM. Jitter here = failed auth. High-frequency analysis can leak operations (side-channel 101).</p>
<small>FREEDOM INTEL: Faraday + no clock = invisible</small>
</div>
</div>
<div class="pin-row" data-pin="gnd">
<div class="pin-tag tag-gnd">GROUND // C5</div>
<div>
<h3>Ground — The Reference</h3>
<p>Electrical zero. Without clean ground, the rest lies. In opsec terms: your digital ground truth is your threat model.</p>
<small>METAPHOR: Know your baseline before you go dark</small>
</div>
</div>
<div class="pin-row" data-pin="vpp">
<div class="pin-tag tag-vpp">VPP // C6</div>
<div>
<h3>Programming Voltage — The Ghost</h3>
<p>Legacy pin. Used decades ago to flash higher voltage for EEPROM write. Today NC (Not Connected) on most operators. Kept for backwards compatibility. Like surveillance laws — obsolete but still there.</p>
<small>HACKER NOTE: Modern 5V-tolerant SIMs ignore this</small>
</div>
</div>
<div class="pin-row" data-pin="io">
<div class="pin-tag tag-io">I/O // C7</div>
<div>
<h3>Input / Output — The Mouth</h3>
<p>Single-wire bidirectional half-duplex. This is where all the secrets travel: IMSI, AUTH responses, SMS, contacts. T=0 protocol. Intercept here = you own the identity. That's why it's encrypted inside.</p>
<small>RED TEAM: This pin is the only thing towers actually talk to</small>
</div>
</div>
<div class="pin-row" data-pin="usb">
<div class="pin-tag tag-usb">USB // C4/C8</div>
<div>
<h3>Optional USB Pad — The Backdoor</h3>
<p>High-speed USB 2.0 pins for Inter-Chip USB SIMs. Allows 12Mbps vs 100k of I/O. New eUICC use this for rapid profile swaps. Your key to burner eSIM life: fast, remote, untraceable reprovision.</p>
<small>FREE LIVING: eSIM = no physical SIM to find</small>
</div>
</div>
</div>
<div class="highlight-box">
<div class="bar"><i style="background:var(--red)"></i><i style="background:var(--amber)"></i><i style="background:var(--acid)"></i><span style="margin-left:auto; font-size:.65rem; letter-spacing:.15em; color:var(--dim)">SIM_TRACE.LOG</span></div>
<div class="term" id="termLog">
<span class="comment">// full APDU capture from own card via $8 reader — frame-by-frame, file IDs decoded</span><br>
<span class="prompt">TX >> A0 A4 00 00 02 3F 00</span> <span class="comment"># SELECT MF (0x3F00)</span><br>
<b><< 61 12 : 18 response bytes pending</b><br>
<span class="prompt">TX >> A0 C0 00 00 12</span> <span class="comment"># GET RESPONSE</span><br>
<b><< 00 00 00 00 3F 00 01 ... 90 00</b> <span class="ok">[OK]</span><br>
<span class="prompt">TX >> A0 A4 00 00 02 7F 20</span> <span class="comment"># SELECT DF_GSM (0x7F20)</span><br>
<b><< 61 16 : DF_GSM directory selected</b><br>
<span class="prompt">TX >> A0 A4 00 00 02 6F 07</span> <span class="comment"># SELECT EF_IMSI (0x6F07)</span><br>
<b><< 61 0F : IMSI file selected</b><br>
<span class="prompt">TX >> A0 B0 00 00 09</span> <span class="comment"># READ BINARY — 9 bytes of IMSI</span><br>
<b><< 08 49 60 •• •• •• •• ••</b> <span class="ok">[OK]</span> <span class="comment"># MCC+MNC plaintext, MSIN masked — your own card only</span><br>
<span class="prompt">TX >> A0 88 00 00 10 [RAND]</span> <span class="comment"># RUN GSM ALGORITHM</span><br>
<b><< SRES: 82A1C904 | Kc: 9F1012AB4801</b> <span class="ok">[90 00]</span> <span class="comment"># Ki never leaves the die</span><br>
<span class="prompt">TX >> AT+CLCK="SC",1,"1234"</span> <span class="comment"># ENABLE CHV1 PIN LOCK</span><br>
<b><< OK — cold boot now demands the 4-digit code</b><br><br>
<span class="comment">// free-living countermeasures:</span><br>
<span class="ok">[1] PIN lock SIM (CHV1), 3 attempts max</span><br>
<span class="ok">[2] Disable 2G - blocks most IMSI catchers</span><br>
<span class="ok">[3] Use prepaid data-only + VoIP</span><br>
<span class="ok">[4] Physically remove when not needed</span><br>
</div>
<div style="margin-top:16px; display:grid; grid-template-columns:1fr 1fr; gap:10px">
<div style="border:1px solid var(--line); padding:10px; border-radius:8px; font-size:.78rem">
<b style="color:var(--amber)">⚠ THREAT:</b><br><span style="color:var(--muted)">IMSI Catchers (Stingrays) force your SIM to attach via C1/C7 handshake. Catches IMSI even with data off.</span>
</div>
<div style="border:1px solid var(--line); padding:10px; border-radius:8px; font-size:.78rem">
<b style="color:var(--acid)">✓ DEFENSE:</b><br><span style="color:var(--muted)">Faraday sleeve (£5), 4G/5G-only mode, eSIM profiles that rotate weekly.</span>
</div>
</div>
</div>
</div>
</section>
<section id="free">
<div class="eyebrow">file_02 // free_living_protocols</div>
<h2>OWN YOUR SIGNAL, <i>OWN YOUR LIFE</i></h2>
<p class="sub">A hacker doesn't use tech to steal free phone bills. That's petty and gets you caught. A hacker uses <em>understanding</em> to become un-leashable. Three field protocols — <b style="color:var(--text)">click a step to check it off, click again for the why</b>. Progress persists on this device.</p>
<div class="grid">
<article class="card">
<div class="step-num">PROTOCOL 01 — BURNER IDENTITY</div>
<h3>Disposable Self</h3>
<p>Decouple the subscriber from the database. The SIM is you — so don't be you.</p>
<ul class="protolist">
<li class="pi" data-pid="b1"><span class="pb"></span><span class="pt">Cash-bought prepaid SIM (or privacy VCC eSIM) — never a card tied to your name.<span class="pe">Zero credit-card or bank record linking physical person to ICCID. Where legal, buy over the counter with cash.</span></span></li>
<li class="pi" data-pid="b2"><span class="pb"></span><span class="pt">Activate on public WiFi or shielded hotspot — never your home IP.<span class="pe">Prevents your home ISP from geolocating you during the registration handshake.</span></span></li>
<li class="pi" data-pid="b3"><span class="pb"></span><span class="pt">Rotate every 14–90 days. Destroy the chip — snap across the C1 VCC pad.<span class="pe">Limits how long historical cell-tower location datasets stay useful against you.</span></span></li>
<li class="pi" data-pid="b4"><span class="pb"></span><span class="pt">Never link burner numbers to banking, 2FA, or personal accounts.<span class="pe">One cross-platform correlation immediately burns the whole identity.</span></span></li>
</ul>
</article>
<article class="card">
<div class="step-num">PROTOCOL 02 — OFF-GRID COMMS</div>
<h3>Air-Gapped Mind</h3>
<p>Baseband isolation. Keep the radio firmware from silently reporting you.</p>
<ul class="protolist">
<li class="pi" data-pid="a1"><span class="pb"></span><span class="pt">De-Googled daily driver (GrapheneOS / CalyxOS) with NO SIM at all — WiFi VoIP only.<span class="pe">Eliminates passive cell-site timing-advance logging from your everyday movements.</span></span></li>
<li class="pi" data-pid="a2"><span class="pb"></span><span class="pt">Second phone, Faraday-bagged, strictly for unavoidable cellular voice/SMS.<span class="pe">RF physically blocked when not in active use. A bagged phone logs nothing.</span></span></li>
<li class="pi" data-pid="a3"><span class="pb"></span><span class="pt">Enable SIM PIN (CHV1), max 3 attempts.<span class="pe">A seized or lost phone can't mount the SIM identity without the code. PUK = carrier-only reset.</span></span></li>
<li class="pi" data-pid="a4"><span class="pb"></span><span class="pt">No SMS 2FA. FIDO2 hardware keys or TOTP apps for everything sensitive.<span class="pe">Kills SIM-swap fraud and baseband SMS interception in one move.</span></span></li>
</ul>
</article>
<article class="card">
<div class="step-num">PROTOCOL 03 — SIGNAL DISCIPLINE</div>
<h3>Die Living Free</h3>
<p>The network logs when and where C7 answered. Minimize the footprint.</p>
<ul class="protolist">
<li class="pi" data-pid="s1"><span class="pb"></span><span class="pt">Force 4G/5G-only mode — disable the legacy 2G GSM radio entirely.<span class="pe">Stingray IMSI catchers rely on forced 2G fallback, which has no mutual tower authentication.</span></span></li>
<li class="pi" data-pid="s2"><span class="pb"></span><span class="pt">Airplane mode as your default state. You call the tower — not the reverse.<span class="pe">Stops passive multi-tower sector-handoff location pinging while you idle.</span></span></li>
<li class="pi" data-pid="s3"><span class="pb"></span><span class="pt">Power fully off before protests, borders, or sensitive meetings.<span class="pe">Denies ambient presence triangulation from tower logs after the fact.</span></span></li>
<li class="pi" data-pid="s4"><span class="pb"></span><span class="pt">VoIP over a VPN tunnel instead of circuit-switched cellular voice.<span class="pe">Moves voice behind end-to-end IP-layer encryption the baseband can't see into.</span></span></li>
</ul>
</article>
</div>
<div style="margin-top:18px; display:grid; grid-template-columns:1.2fr .8fr; gap:16px" class="myth-grid">
<div class="card" style="border-color:#FFD60033">
<div class="step-num" style="color:var(--amber)">INTEL DROP — WHAT SIM DOESN'T STORE</div>
<h3 style="color:var(--amber)">Corp Myth vs Reality</h3>
<p>Telcos love you thinking everything is "on the SIM". It's not:</p>
<ul>
<li><b style="color:var(--text)">NOT on SIM:</b> Your photos, full call history, browsing. That's phone / cloud / carrier HLR.</li>
<li><b style="color:var(--text)">ON SIM:</b> Ki (secret), IMSI, ICCID, some contacts, PLMN prefs, carrier keys.</li>
<li><b style="color:var(--text)">Future:</b> eSIM / iSIM — same logic, soldered. No plastic to pull. Learn to rewrite profiles before it solders you in.</li>
</ul>
</div>
<div class="terminal" style="min-height:200px">
<div class="term-head"><span>root@freebox:~</span><span>LIVE</span></div>
<div class="term-body">
<span class="prompt">$</span> <span class="cmd">cat /manifesto/free_living.txt</span><br><br>
The goal is not to get free service.<br>
The goal is to make service <b style="color:var(--acid)">optional</b>.<br><br>
If you need the network to live,<br>
you are not alive. You are subscribed.<br><br>
<span class="prompt">$</span> <span class="cmd">rm -rf /fear</span> <span class="blink">█</span>
</div>
</div>
</div>
</section>
<!-- ================= INFILTRATION LAB ================= -->
<section id="lab">
<div class="eyebrow">file_03 // infiltration_lab</div>
<h2>DIGITAL <i>INFILTRATION</i> LAB</h2>
<p class="sub">Real infiltration is 90% reading logs and 10% typing very calmly. This lab is pure <em>SANDBOX</em> — JavaScript theatre, <b style="color:var(--text)">zero packets leave this page</b>. Practice the mindset on the only network you always have permission to hack: your own.</p>
<div class="lab-grid">
<!-- MOD 01 : HANDSHAKE -->
<div class="lab-panel">
<div class="lab-head"><span>MOD_01 // AUTH HANDSHAKE VISUALIZER</span><span class="lab-live">● ARMED</span></div>
<div class="nodes">
<div class="node" id="nDev">DEVICE<small>your SIM inside</small></div>
<div class="node meek" id="nRogue">ROGUE BTS<small>imsi catcher</small></div>
<div class="node" id="nTower">REAL TOWER<small>MCC 234 · UK</small></div>
<div class="node" id="nHlr">HLR / AuC<small>Ki vault</small></div>
</div>
<div class="btnrow">
<button class="btn" id="btnNormal">▶ RUN NORMAL AUTH</button>
<button class="btn btn-red" id="btnCatcher">⚠ SIMULATE IMSI CATCHER</button>
</div>
<div class="term mini" id="hsLog"><span class="c2">[idle] choose an engagement above. watch which nodes light up — and which one shouldn't.</span></div>
</div>
<!-- MOD 02 : SCANNER -->
<div class="lab-panel">
<div class="lab-head"><span>MOD_02 // LOOPBACK PORT SCANNER</span><span class="lab-live">● READY</span></div>
<p class="tiny">TARGET: 127.0.0.1 — the one host you can always scan legally. Everything below is simulated in-browser.</p>
<div class="pbar"><i id="pfill"></i></div>
<div class="btnrow">
<button class="btn" id="btnScan">▶ RUN SCAN</button>
<button class="btn btn-ghost" id="btnHex">LIVE MEM ⏸</button>
</div>
<pre class="hex" id="hexDump" aria-hidden="true"></pre>
<div class="term mini" id="scanLog"><span class="c2">[idle] scanner cold. memory viewer hot.</span></div>
</div>
<!-- MOD 03 : RF SWEEP -->
<div class="lab-panel">
<div class="lab-head"><span>MOD_03 // RF ENVIRONMENT SWEEP</span><span class="lab-live" id="rfState">● SWEEPING</span></div>
<div class="radarwrap" id="radarBox">
<svg class="radar" viewBox="0 0 300 300" role="img" aria-label="Simulated RF sweep radar">
<defs>
<linearGradient id="swg" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#00FF88" stop-opacity=".35"/>
<stop offset="1" stop-color="#00FF88" stop-opacity="0"/>
</linearGradient>
</defs>
<circle class="ring" cx="150" cy="150" r="145"/>
<circle class="ring" cx="150" cy="150" r="110"/>
<circle class="ring" cx="150" cy="150" r="72"/>
<circle class="ring" cx="150" cy="150" r="36"/>
<line class="axis" x1="150" y1="5" x2="150" y2="295"/>
<line class="axis" x1="5" y1="150" x2="295" y2="150"/>
<g id="sweep">
<path d="M150,150 L150,8 A142 142 0 0 1 221,27 Z" fill="url(#swg)"/>
<line x1="150" y1="150" x2="150" y2="8" stroke="#00FF88" stroke-width="1.5" opacity=".9"/>
</g>
<g id="blips"></g>
<circle cx="150" cy="150" r="3.5" fill="#00FF88"/>
</svg>
<div class="term mini rlog" id="rfLog"><span class="c2">[*] passive scan — listening only. towers beacon; you just hear them first.</span></div>
</div>
<div class="btnrow"><button class="btn btn-amber" id="btnDark">⏻ GO DARK (AIRPLANE MODE)</button></div>
</div>
<!-- MOD 04 : SHELL -->
<div class="lab-panel shell-panel">
<div class="term-head"><span>guest@simroot : /lab</span><span>SANDBOX SHELL</span></div>
<div class="shellout" id="shellOut"></div>
<div class="shellline">
<span class="prompt">guest@simroot:~$</span>
<input class="shell-in" id="shellIn" autocomplete="off" autocapitalize="off" spellcheck="false" placeholder="type: help" aria-label="sandbox shell input">
</div>
</div>
<!-- MOD 05 : APDU BUILDER (merged from LIN4CRE/simroot) -->
<div class="lab-panel span2 apduform">
<div class="lab-head"><span>MOD_05 // ISO 7816 APDU BUILDER</span><span class="lab-live">● CRAFT FRAMES</span></div>
<p class="tiny">Forge a smart-card command frame byte by byte. <b style="color:var(--text)">Execute runs a simulation</b> — no reader attached, no chip touched. This is the exact grammar your phone speaks to the C7 pad.</p>
<div class="apdu-cols">
<div class="fld">
<div class="agrid">
<div><label for="apduCla">CLA — class byte</label><input id="apduCla" value="A0" maxlength="2" inputmode="text" aria-label="CLA class byte"></div>
<div>
<label for="apduIns">INS — instruction</label>
<select id="apduIns" aria-label="INS instruction byte">
<option value="A4" selected>A4 · SELECT FILE</option>
<option value="C0">C0 · GET RESPONSE</option>
<option value="B0">B0 · READ BINARY</option>
<option value="B2">B2 · READ RECORD</option>
<option value="D6">D6 · UPDATE BINARY</option>
<option value="DC">DC · UPDATE RECORD</option>
<option value="20">20 · VERIFY CHV1</option>
<option value="88">88 · RUN GSM ALGORITHM</option>
<option value="84">84 · GET CHALLENGE</option>
<option value="F2">F2 · STATUS</option>
<option value="A2">A2 · SEEK</option>
</select>
</div>
<div><label for="apduP1">P1</label><input id="apduP1" value="00" maxlength="2" aria-label="Parameter 1"></div>
<div><label for="apduP2">P2</label><input id="apduP2" value="00" maxlength="2" aria-label="Parameter 2"></div>
<div><label for="apduLe">Le (opt.)</label><input id="apduLe" value="" maxlength="2" placeholder="—" aria-label="Expected length"></div>
</div>
<label for="apduData">DATA — hex bytes, spaces ok (Lc auto-computed)</label>
<input id="apduData" value="3F 00" spellcheck="false" autocomplete="off" aria-label="APDU data bytes">
<div class="apdu-hex" id="apduOut" aria-live="polite">A0 A4 00 00 02 3F 00</div>
<div class="btnrow" style="margin-bottom:0">
<button class="btn" id="btnApduRun">▶ EXECUTE (SIMULATED)</button>
<button class="btn btn-ghost" id="btnApduCopy">⧉ COPY HEX</button>
</div>
</div>
<div>
<div class="lab-head" style="margin-bottom:8px"><span>SESSION TRACE · C7 I/O LINE</span><span class="ok">SW words decoded</span></div>
<div class="term mini" id="apduLog" style="min-height:230px"><span class="c2">[idle] build a frame, hit execute. try SELECT 3F00 → GET RESPONSE → SELECT 6F07 → READ BINARY.</span></div>
</div>
</div>
</div>
</div>
<p class="fineprint">RULES OF ENGAGEMENT: scanning or intercepting networks you don't own — or lack written permission to test — is a crime. In the UK that's the Computer Misuse Act 1990 and the Investigatory Powers Act 2016. Everything above is client-side simulation for learning. Hack your own gear. Get certs, not charges.</p>
</section>
<!-- ================= FIELD KIT (merged widgets) ================= -->
<section id="fieldkit">
<div class="eyebrow">file_04 // field_kit</div>
<h2>THE <i>FIELD KIT</i></h2>
<p class="sub">Three instruments from the merged arsenal: measure your exposure, price your rotation, and keep notes that <em>decrypt only for you</em>. All math and crypto runs locally in this tab.</p>
<div class="kit-grid">
<!-- THREAT CALCULATOR -->
<div class="lab-panel">
<div class="lab-head"><span>KIT_01 // EXPOSURE CALCULATOR</span><span class="lab-live">● LIVE SCORE</span></div>
<p class="tiny">Tick what's true about your current setup. Score starts hardened at 100 — each tick is a leak.</p>
<label class="chk"><input type="checkbox" id="th1"> 2G / GSM fallback still enabled on device</label>
<label class="chk"><input type="checkbox" id="th2"> No Faraday sleeve or RF shielding habit</label>
<label class="chk"><input type="checkbox" id="th3"> SIM PIN (CHV1) not set</label>
<label class="chk"><input type="checkbox" id="th4"> SIM registered under legal ID (KYC contract)</label>
<label class="chk"><input type="checkbox" id="th5"> Identity rotation slower than 90 days / never</label>
<label class="chk"><input type="checkbox" id="th6"> Live location + always-on radios, no airplane discipline</label>
<div class="meter" aria-hidden="true"><i id="thFill"></i></div>
<div style="display:flex; align-items:baseline; gap:12px">
<span class="bigscore" id="thScore">100</span><span style="color:var(--dim); font-size:.7rem">/ 100 OPSEC SCORE</span>
</div>
<span class="scoretag ok" id="thLabel" style="border-color:#00ff8844;background:#00ff8810">LOW EXPOSURE — HARDENED</span>
<div class="tiny" id="thFix" style="margin-top:10px">nothing to fix. stay paranoid, stay free.</div>
</div>
<!-- BURNER BUDGET -->
<div class="lab-panel">
<div class="lab-head"><span>KIT_02 // ROTATION BUDGET</span><span class="lab-live">● £££</span></div>
<p class="tiny">Privacy has a price — and it's cheaper than the data they sell about you.</p>
<div class="fld">
<label for="budDays">ROTATION INTERVAL (DAYS)</label>
<input id="budDays" type="number" min="1" max="365" value="30">
<label for="budCost">PREPAID COST PER SIM (£ GBP)</label>
<input id="budCost" type="number" min="0" max="200" value="10">
</div>
<div class="kv"><span>SIMS BURNED / YEAR</span><b id="budPerYear">13</b></div>
<div class="kv"><span>ANNUAL PRIVACY BUDGET</span><b id="budYear" style="color:var(--acid)">£130</b></div>
<div class="kv"><span>MONTHLY EQUIVALENT</span><b id="budMonth">£10.83</b></div>
<p class="tiny" style="margin-top:10px">Rule of thumb: £10/mo buys you a fresh IMSI every month. The data broker pays £0 for your current one.</p>
</div>
<!-- ENCRYPTED SCRATCHPAD -->
<div class="lab-panel fld">
<div class="lab-head"><span>KIT_03 // FIELD NOTES · AES-GCM</span><span class="spstate ok" id="spState">● LOCAL ONLY</span></div>
<p class="tiny">Client-side encrypted notes: PBKDF2×100k → AES-256-GCM. Ciphertext lives in this browser's storage. The passphrase never does.</p>
<label for="spText">NOTE PLAINTEXT</label>
<textarea id="spText" placeholder="e.g. reader wiring: RST→D2, CLK→D3, I/O→D4 via 1k…" aria-label="note plaintext"></textarea>
<label for="spPass">PASSPHRASE</label>
<input id="spPass" type="password" placeholder="min. 8 chars — never stored" autocomplete="off">
<div class="btnrow">
<button class="btn" id="btnSpSave">⬇ ENCRYPT + SAVE</button>
<button class="btn btn-ghost" id="btnSpLoad">⬆ DECRYPT + LOAD</button>
<button class="btn btn-red" id="btnSpWipe">✕ WIPE</button>
</div>
<div class="spstate" id="spMsg">state: no ciphertext stored on this device.</div>
</div>
</div>
</section>
<section id="manifesto">
<div class="eyebrow">final_payload</div>
<h2>THE MANIFESTO: <i>FREE LIVING</i> IS A SKILL</h2>
<div style="display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:start" class="myth-grid">
<div>
<p class="sub" style="margin-bottom:16px">
This diagram from <b style="color:var(--text)">@tipsfcworld</b> is normally boring ISP training material. Reframe it and it's a map of your leash.
Every pad is a point where you negotiate with a trillion-dollar surveillance grid.
Know it cold.
</p>
<div class="card" style="background:#0b0e14">
<h3 style="font-size:.9rem; letter-spacing:.12em">BUILD YOUR OWN READER — ETHICAL ONLY</h3>
<p style="font-size:.84rem">Arduino + SIM slot: VCC->5V via LDO, GND->GND, RST->D2, CLK->D3, I/O->D4 (with 1k). Dump ATR with <code style="background:#ffffff0a; padding:2px 6px; border-radius:4px">AT+CSIM</code>. Never share Ki attempts, never clone. Use to WIP your own SIM for understanding ISO 7816-3 T=0.</p>
</div>
<p style="color:var(--dim); font-size:.78rem; margin-top:16px; line-height:1.5">
*VPP is almost always legacy. C4/C8 USB are optional and rare outside eUICC. Labels vary by manufacturer. This guide is educational. No instructions for bypassing carrier billing, cloning, or illegal interception. Knowledge is freedom, abuse is prison.
</p>
</div>
<div class="artifact" style="padding:8px">
<img src="image.png" alt="SIM diagram closeup repeated for final grid" style="filter:grayscale(1) contrast(1.2) brightness(.9) sepia(.3) hue-rotate(80deg)">
<div style="padding:10px 6px 2px; font-size:.7rem; color:var(--muted); letter-spacing:.08em; line-height:1.4">
ORIGINAL INTEL // INCOMING FILE: image.png<br>
RE-ANALYZED FOR FREE HUMANS<br>
<span style="color:var(--acid)">[CLASSIFICATION DOWNGRADED: PUBLIC]</span>
</div>
</div>
</div>