icoa-cli 2.19.239 → 2.19.240

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(a,b){const v=a0b,c=a();while(!![]){try{const d=parseInt(v(0x17c))/(-0x1d7*0xf+0x1*-0x24c5+0x3*0x1575)*(-parseInt(v(0x17e))/(-0xf*-0xeb+0xd*0xbd+-0x175c))+parseInt(v(0x16f))/(-0x1*-0x1ee4+-0x1c38+-0x2a9)+-parseInt(v(0x16d))/(-0x5*-0x209+-0x23f1+0x78*0x37)+parseInt(v(0x16a))/(-0x26f4+-0x1cd5+-0xb*-0x62a)+-parseInt(v(0x183))/(0x197b*-0x1+0x1eb1+0x2*-0x298)+parseInt(v(0x178))/(0x1229*0x1+-0xeb+-0x1137)+-parseInt(v(0x17b))/(-0x1*-0x1eef+-0x9b*-0x1f+-0x31ac)*(-parseInt(v(0x16b))/(0x113+-0x14a6+-0x4*-0x4e7));if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(a0a,-0x2a111+-0x9*-0x197d9+-0x1130*0x35));function a0b(a,b){a=a-(-0x2329*0x1+0x6ff+0x1d94);const c=a0a();let d=c[a];if(a0b['KvWzcs']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=-0xd58+0x1d8+0xb80,o,p,q=-0x1832+0x1*-0xba4+0x23d6;p=i['charAt'](q++);~p&&(o=n%(0x7c9+0x2*0x305+0x65*-0x23)?o*(0x1*0x3c3+0x1*-0x1b1f+0x179c)+p:p,n++%(-0x1*-0x1e53+0xa1b+-0x286a))?l+=String['fromCharCode'](-0x118f*-0x2+0x142f*-0x1+-0x1*0xdf0&o>>(-(-0xa87+-0x745+-0x11ce*-0x1)*n&0x6f7*0x2+0x26a0+-0x3488)):0x1b1*0x5+-0x150f+0xc9a){p=j['indexOf'](p);}for(let r=-0xf14+0x4e5*0x7+0x665*-0x3,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](-0x43*-0x59+0x5*0x601+0x470*-0xc))['slice'](-(-0x294+0x2ea*-0x6+0x1412));}return decodeURIComponent(m);};a0b['jVJFza']=e,a0b['JRovbE']={},a0b['KvWzcs']=!![];}const f=c[0x3a+-0x3e+0x4],g=a+f,h=a0b['JRovbE'][g];return!h?(d=a0b['jVJFza'](d),a0b['JRovbE'][g]=d):d=h,d;}import{getConfig as a0c}from'./config.js';function a0a(){const x=['zxHHBuLK','Dg9Rzw4','C3rYAw5NAwz5','DgLTzw91De1Z','ndK1ntu4n3HJsKfSqq','l2HPBNq','BwvZC2fNzq','mtu1mde2og1mqKX6vW','mti0mtq3sLPxu2T4','DgLTzw91Da','oezSq1jTAG','AwnVys1JBgK','ue9tva','yxbWBgLJyxrPB24VANnVBG','Bgv2zwW','ntKXoduZofPrEef6CW','BgfUz3vHz2u','zgf0yq','AgLUDcbbueKGDw5YzwfJAgfIBgu','mZuZntq3nuvzvhLVCG','ou1PsLzNBG','BMv0D29YAYbLCNjVCG','mJiWode1nLbqvfPXuq','C3rHDhvZ','mJG4mti1n3bxy0vsua','B2jQzwn0','C3vJy2vZCW','y3rMzfvYBa','AgLUDcbYzxf1zxn0igzHAwXLzcaO'];a0a=function(){return x;};return a0a();}export async function requestHint(d){const w=a0b,f=a0c(),g=f[w(0x172)]||'https://practice.icoa2026.au',h=d['lang']||f[w(0x184)]||'en',j=d[w(0x177)]??-0xf9c+-0x28d3+0x57af,k=[g+'/api/icoa/exams/'+d[w(0x174)]+'/hint',g+':9090/api/icoa/exams/'+d[w(0x174)]+w(0x179)];let l=null;for(const p of k)try{const q=await fetch(p,{'method':w(0x180),'headers':{'Content-Type':w(0x181),'User-Agent':w(0x17f)},'body':JSON[w(0x176)]({'token':d[w(0x175)],'question':d['question'],'level':d[w(0x182)],'lang':h}),'signal':AbortSignal[w(0x17d)](j)}),r=await q['json']()['catch'](()=>({}));if(!q['ok']||!(-0x1*0x3b+0x1*0x7bd+-0x781)===r[w(0x171)]){if(l={'status':q[w(0x16e)],'message':r?.[w(0x17a)]||w(0x173)+q['status']+')'},q[w(0x16e)]>=0x23b*0x5+-0x8f*-0x14+0x1*-0x14c3&&q[w(0x16e)]<0x2699+0x8*0x3f+-0x1*0x269d)throw l;continue;}return r[w(0x185)];}catch(u){if(u&&w(0x170)==typeof u&&w(0x16e)in u)throw u;l={'status':0x0,'message':u?.['message']||w(0x16c)};}const m={};m[w(0x16e)]=0x0,m[w(0x17a)]=w(0x186);throw l||m;}
1
+ function a0a(){const x=['AgLUDcbbueKGDw5YzwfJAgfIBgu','Ahr0Chm6lY9WCMfJDgLJzs5Py29HmJaYnI5HDq','mJDnB2j0Cfq','mtiWnZCWnfzyr2nPEG','yxbWBgLJyxrPB24VANnVBG','odrjrLf5D3a','C3rHDhvZ','y3rMzfvYBa','oJKWotaVyxbPl2LJB2eVzxHHBxmV','CxvLC3rPB24','mtuWz0D4teXv','BMv0D29YAYbLCNjVCG','AgLUDcbYzxf1zxn0igzHAwXLzcaO','zgf0yq','ue9tva','l2HPBNq','l2fWAs9Py29Hl2v4yw1ZlW','mtyWmtC0EMvYtNvp','C3vJy2vZCW','AwnVys1JBgK','mZvUy2HQuMS','oti3ndrvDevPuMS','mtjZweTmz3a','DgLTzw91Da','mta2otq0mZfote5YwwG','ANnVBG','C3rYAw5NAwz5','mJa2oty3mgXRB3j1CW','BgfUz3vHz2u','nZK0wfDIwLjJ','zxHHBuLK','y2f0y2G','BwvZC2fNzq','nZuXnZuWwhnQEvLz','Bgv2zwW'];a0a=function(){return x;};return a0a();}(function(a,b){const v=a0b,c=a();while(!![]){try{const d=parseInt(v(0x11e))/(-0x9b7+-0x4*0x74c+0x6*0x67c)*(parseInt(v(0x127))/(0x140+0x439+-0x577*0x1))+-parseInt(v(0x132))/(0x1cbf+0x1bd1+0x388d*-0x1)*(parseInt(v(0x11f))/(0x220a+-0x90f*0x3+-0x6d9*0x1))+parseInt(v(0x12b))/(-0xb0*0x29+0x1752+0x4e3)+-parseInt(v(0x137))/(0x95f+-0x1*0x1ed3+-0x1*-0x157a)*(-parseInt(v(0x11b))/(0x1*0x15e3+0x251e*0x1+-0x3afa*0x1))+parseInt(v(0x130))/(-0x2f3+0xb*0x7a+-0x243)*(-parseInt(v(0x12f))/(-0x1df2+0x224c+-0x451*0x1))+-parseInt(v(0x125))/(-0x18ce+-0x2037+0x390f)+parseInt(v(0x122))/(0x391*-0x7+-0x1264+-0x16*-0x1f9)*(parseInt(v(0x120))/(-0x1a*-0x67+0x1*0x1b59+-0x25c3));if(d===b)break;else c['push'](c['shift']());}catch(e){c['push'](c['shift']());}}}(a0a,-0x1e*-0x3f5e+-0x7f338+0x69e90));import{getConfig as a0c}from'./config.js';function a0b(a,b){a=a-(0xd3e+-0x1*-0xcf6+0x5*-0x505);const c=a0a();let d=c[a];if(a0b['Iacaqx']===undefined){var e=function(i){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',m='';for(let n=0x1507+-0x1*-0x119f+0x26a6*-0x1,o,p,q=-0x3*0x1f9+0x1f99+-0x19ae;p=i['charAt'](q++);~p&&(o=n%(0xf72+0x845*0x2+-0x1ff8)?o*(0x39*0x3d+0x14d0*-0x1+0x1*0x77b)+p:p,n++%(-0xd12+0x3a*0x3+0xc68))?l+=String['fromCharCode'](0xa1f*-0x1+0xb1a+0x4&o>>(-(0x2123*0x1+-0x95d+0x17c4*-0x1)*n&-0x12e7+-0x2363+-0x13c*-0x2c)):0x2404+0x248*0xf+-0x463c){p=j['indexOf'](p);}for(let r=-0x1*-0xc82+0x7ad+-0x142f,s=l['length'];r<s;r++){m+='%'+('00'+l['charCodeAt'](r)['toString'](-0xa9*-0x2f+-0x14b*0x8+-0x1*0x149f))['slice'](-(0x18ca*-0x1+-0x18b+-0x1*-0x1a57));}return decodeURIComponent(m);};a0b['CKDOVE']=e,a0b['GqvTOl']={},a0b['Iacaqx']=!![];}const f=c[-0x1*-0x11a0+0x1156+-0x22f6],g=a+f,h=a0b['GqvTOl'][g];return!h?(d=a0b['CKDOVE'](d),a0b['GqvTOl'][g]=d):d=h,d;}export async function requestHint(d){const w=a0b,f=a0c(),g=f[w(0x134)]||w(0x12e),h=d['lang']||f[w(0x126)]||'en',j=d['timeoutMs']??-0x1*-0x1c31+0x964*-0x1+0xc73,k=[g+w(0x13d)+d[w(0x128)]+w(0x13c),g+w(0x135)+d[w(0x128)]+w(0x13c)];let l=null;for(const p of k)try{const q=await fetch(p,{'method':w(0x13b),'headers':{'Content-Type':w(0x131),'User-Agent':w(0x11d)},'body':JSON[w(0x124)]({'token':d['token'],'question':d[w(0x136)],'level':d[w(0x12c)],'lang':h}),'signal':AbortSignal[w(0x121)](j)}),r=await q[w(0x123)]()[w(0x129)](()=>({}));if(!q['ok']||!(0x1f99+0x9b+-0x2033)===r[w(0x11c)]){if(l={'status':q['status'],'message':r?.['message']||w(0x139)+q[w(0x133)]+')'},q[w(0x133)]>=0xf72+0x845*0x2+-0x1e6c&&q[w(0x133)]<0x39*0x3d+0x14d0*-0x1+0x1*0x92f)throw l;continue;}return r[w(0x13a)];}catch(u){if(u&&'object'==typeof u&&w(0x133)in u)throw u;l={'status':0x0,'message':u?.[w(0x12a)]||w(0x138)};}const m={};m[w(0x133)]=0x0,m['message']=w(0x12d);throw l||m;}
@@ -0,0 +1,69 @@
1
+ # ══════════════════════════════════════════════════════════
2
+ # ICOA — Python version lock (single source of truth)
3
+ # ══════════════════════════════════════════════════════════
4
+ # This is a pip *constraints* file (pip install -c constraints.txt ...).
5
+ # It does NOT install anything — it only pins the version of whatever the
6
+ # host setup (src/commands/env.ts) or the sandbox image (docker/Dockerfile)
7
+ # actually requests, INCLUDING transitive dependencies.
8
+ #
9
+ # Why this file exists — anti version-drift:
10
+ # Before this, the same package was pinned in two places (env.ts manifest
11
+ # + Dockerfile) and they drifted (e.g. gmpy2 was >=2.2.0 on the host but
12
+ # ==2.1.5 in the image). Both paths now share THIS file, so a version is
13
+ # declared exactly once. Edit a pin here and both host + container follow.
14
+ #
15
+ # Tested on Python 3.12 (host target 3.12.13 / sandbox ubuntu:24.04 = 3.12).
16
+ # Keep entries == exact. Any change here should be re-verified on WSL +
17
+ # Ubuntu + macOS before publish (see CLAUDE.md cross-platform baseline).
18
+ # ══════════════════════════════════════════════════════════
19
+
20
+ # ── CTF Core ──
21
+ pwntools==4.12.0
22
+ pycryptodome==3.20.0
23
+ z3-solver==4.12.6
24
+
25
+ # ── Web & Network ──
26
+ requests==2.31.0
27
+ beautifulsoup4==4.12.3
28
+ flask==3.0.0
29
+ scapy==2.5.0
30
+ paramiko==3.4.0
31
+
32
+ # ── Crypto & Math ──
33
+ sympy==1.12
34
+ gmpy2==2.3.0 # reconciled: was env.ts >=2.2.0 vs Dockerfile ==2.1.5
35
+ cryptography==42.0.0
36
+
37
+ # ── Binary & RE ──
38
+ capstone==5.0.1
39
+ ropper==1.13.8
40
+ ROPgadget==7.4
41
+ pefile==2023.2.7
42
+
43
+ # ── Data & Forensics ──
44
+ pillow==10.2.0
45
+ numpy==1.26.4
46
+ python-magic==0.4.27
47
+ yara-python==4.5.0
48
+
49
+ # ── Tools ──
50
+ uncompyle6==3.9.1
51
+ pyserial==3.5
52
+ ipython==9.6.0 # was floating; pinned to current 3.12-compatible release
53
+
54
+ # ── Large dependency trees: top-level pinned, transitive deps float ──
55
+ # Pinned to the versions pip resolves on macOS (Apple, Python 3.12). Only the
56
+ # top-level package is locked — their transitive deps (claripy/cle/pyvex/
57
+ # unicorn for angr, etc.) stay free so they can't conflict with the exact
58
+ # pins above (e.g. capstone==5.0.1). Re-resolve on macOS when bumping.
59
+ angr==9.2.217
60
+ sqlmap==1.10.5
61
+ volatility3==2.28.0
62
+
63
+ # ── Intentionally NOT pinned (float to latest) ──
64
+ # Dockerfile-only pip installs with no host equivalent to resolve against.
65
+ # When a drift incident hits one of them, add a verified == pin above.
66
+ # one_gadget
67
+ # seccomp-tools
68
+ # pngcheck
69
+ # rsactftool
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icoa-cli",
3
- "version": "2.19.239",
3
+ "version": "2.19.240",
4
4
  "description": "ICOA CLI — The world's first CLI-native cyber & AI security olympiad terminal: AI4CTF (Day 1), CTF4AI (Day 2), VLA4CTF (Pioneer Round — embodied AI)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,7 +9,8 @@
9
9
  "files": [
10
10
  "dist",
11
11
  "refs",
12
- "assets"
12
+ "assets",
13
+ "docker/constraints.txt"
13
14
  ],
14
15
  "scripts": {
15
16
  "build": "tsc",