icoa-cli 2.12.2 → 2.13.0
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.
- package/dist/commands/exam.js +60 -0
- package/dist/repl.js +15 -0
- package/package.json +1 -1
- package/translations/th/39.json +9 -0
- package/translations/th/40.json +9 -0
- package/translations/th/41.json +9 -0
- package/translations/th/42.json +9 -0
- package/translations/th/43.json +9 -0
- package/translations/th/44.json +9 -0
- package/translations/th/45.json +9 -0
- package/translations/th/46.json +9 -0
- package/translations/th/47.json +9 -0
- package/translations/th/48.json +9 -0
- package/translations/th/49.json +9 -0
- package/translations/tr/1.json +9 -0
- package/translations/tr/10.json +9 -0
- package/translations/tr/11.json +9 -0
- package/translations/tr/12.json +9 -0
- package/translations/tr/13.json +9 -0
- package/translations/tr/14.json +9 -0
- package/translations/tr/15.json +9 -0
- package/translations/tr/16.json +9 -0
- package/translations/tr/17.json +9 -0
- package/translations/tr/18.json +9 -0
- package/translations/tr/19.json +9 -0
- package/translations/tr/20.json +9 -0
- package/translations/tr/21.json +9 -0
- package/translations/tr/22.json +9 -0
- package/translations/tr/23.json +9 -0
- package/translations/tr/24.json +9 -0
- package/translations/tr/25.json +9 -0
- package/translations/tr/26.json +9 -0
- package/translations/tr/27.json +9 -0
- package/translations/tr/28.json +9 -0
- package/translations/tr/30.json +9 -0
- package/translations/tr/31.json +9 -0
- package/translations/tr/32.json +9 -0
- package/translations/tr/33.json +9 -0
- package/translations/tr/34.json +9 -0
- package/translations/tr/35.json +9 -0
- package/translations/tr/36.json +9 -0
- package/translations/tr/37.json +9 -0
- package/translations/tr/38.json +9 -0
- package/translations/tr/39.json +9 -0
- package/translations/tr/4.json +9 -0
- package/translations/tr/40.json +9 -0
- package/translations/tr/41.json +9 -0
- package/translations/tr/42.json +9 -0
- package/translations/tr/43.json +9 -0
- package/translations/tr/44.json +9 -0
- package/translations/tr/45.json +9 -0
- package/translations/tr/46.json +9 -0
- package/translations/tr/47.json +9 -0
- package/translations/tr/48.json +9 -0
- package/translations/tr/49.json +9 -0
- package/translations/tr/5.json +9 -0
- package/translations/tr/6.json +9 -0
- package/translations/tr/7.json +9 -0
- package/translations/tr/8.json +9 -0
- package/translations/tr/9.json +9 -0
- package/translations/vi/1.json +9 -0
- package/translations/vi/10.json +9 -0
- package/translations/vi/11.json +9 -0
- package/translations/vi/12.json +9 -0
- package/translations/vi/14.json +9 -0
- package/translations/vi/15.json +9 -0
- package/translations/vi/16.json +9 -0
- package/translations/vi/17.json +9 -0
- package/translations/vi/18.json +9 -0
- package/translations/vi/19.json +9 -0
- package/translations/vi/20.json +9 -0
- package/translations/vi/21.json +9 -0
- package/translations/vi/22.json +9 -0
- package/translations/vi/23.json +9 -0
- package/translations/vi/24.json +9 -0
- package/translations/vi/25.json +9 -0
- package/translations/vi/26.json +9 -0
- package/translations/vi/27.json +9 -0
- package/translations/vi/28.json +9 -0
- package/translations/vi/29.json +9 -0
- package/translations/vi/30.json +9 -0
- package/translations/vi/31.json +9 -0
- package/translations/vi/32.json +9 -0
- package/translations/vi/33.json +9 -0
- package/translations/vi/34.json +9 -0
- package/translations/vi/35.json +9 -0
- package/translations/vi/36.json +9 -0
- package/translations/vi/37.json +9 -0
- package/translations/vi/38.json +9 -0
- package/translations/vi/39.json +9 -0
- package/translations/vi/4.json +9 -0
- package/translations/vi/40.json +9 -0
- package/translations/vi/41.json +9 -0
- package/translations/vi/42.json +9 -0
- package/translations/vi/43.json +9 -0
- package/translations/vi/44.json +9 -0
- package/translations/vi/45.json +9 -0
- package/translations/vi/46.json +9 -0
- package/translations/vi/47.json +9 -0
- package/translations/vi/48.json +9 -0
- package/translations/vi/49.json +9 -0
- package/translations/vi/5.json +9 -0
- package/translations/vi/6.json +9 -0
- package/translations/vi/7.json +9 -0
- package/translations/vi/8.json +9 -0
- package/translations/vi/9.json +9 -0
package/dist/commands/exam.js
CHANGED
|
@@ -663,6 +663,66 @@ export function registerExamCommand(program) {
|
|
|
663
663
|
printError(err.message);
|
|
664
664
|
}
|
|
665
665
|
});
|
|
666
|
+
// ─── exam token <code> (Selection mode: no login needed) ───
|
|
667
|
+
exam
|
|
668
|
+
.command('token <code>')
|
|
669
|
+
.description('Enter exam with access token (no login needed)')
|
|
670
|
+
.action(async (code) => {
|
|
671
|
+
logCommand(`exam token ${code}`);
|
|
672
|
+
const existing = getExamState();
|
|
673
|
+
if (existing) {
|
|
674
|
+
printWarning(`Exam "${existing.session.examName}" is already in progress.`);
|
|
675
|
+
printInfo('Use "exam review" or "exam submit" first.');
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
const config = getConfig();
|
|
679
|
+
const serverUrl = config.ctfdUrl || 'https://practice.icoa2026.au';
|
|
680
|
+
console.log();
|
|
681
|
+
drawProgress(0, 'Validating token...');
|
|
682
|
+
try {
|
|
683
|
+
const res = await fetch(`${serverUrl}:9090/api/icoa/exam-token`, {
|
|
684
|
+
method: 'POST',
|
|
685
|
+
headers: { 'Content-Type': 'application/json' },
|
|
686
|
+
body: JSON.stringify({ token: code.trim() }),
|
|
687
|
+
signal: AbortSignal.timeout(10000),
|
|
688
|
+
});
|
|
689
|
+
if (!res.ok) {
|
|
690
|
+
drawProgress(0, '');
|
|
691
|
+
console.log();
|
|
692
|
+
const err = await res.json().catch(() => ({ message: 'Invalid token' }));
|
|
693
|
+
printError(err.message || 'Invalid exam token');
|
|
694
|
+
printInfo('Check your token or contact your proctor.');
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
drawProgress(30, 'Loading exam...');
|
|
698
|
+
const json = await res.json();
|
|
699
|
+
const { session, questions } = json.data;
|
|
700
|
+
drawProgress(60, 'Preparing questions...');
|
|
701
|
+
await sleep(200);
|
|
702
|
+
drawProgress(90, 'Starting timer...');
|
|
703
|
+
await sleep(150);
|
|
704
|
+
saveExamState({ session, questions, answers: {} });
|
|
705
|
+
drawProgress(100, 'Ready!');
|
|
706
|
+
console.log();
|
|
707
|
+
console.log();
|
|
708
|
+
printHeader(session.examName);
|
|
709
|
+
printKeyValue('Questions', String(session.questionCount));
|
|
710
|
+
printKeyValue('Duration', `${session.durationMinutes} minutes`);
|
|
711
|
+
printTimeRemaining();
|
|
712
|
+
if (questions.length > 0) {
|
|
713
|
+
printQuestion(questions[0]);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
catch (err) {
|
|
717
|
+
console.log();
|
|
718
|
+
if (err.name === 'TimeoutError') {
|
|
719
|
+
printError('Server not reachable. Check your internet connection.');
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
printError(err.message || 'Failed to start exam');
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
});
|
|
666
726
|
// ─── exam demo ───
|
|
667
727
|
exam
|
|
668
728
|
.command('demo')
|
package/dist/repl.js
CHANGED
|
@@ -180,6 +180,9 @@ export async function startRepl(program, resumeMode) {
|
|
|
180
180
|
console.log(chalk.gray(' ─────────────────────────────────────────────'));
|
|
181
181
|
console.log(chalk.bold.cyan(' demo') + chalk.gray(' Free practice exam (30 questions)'));
|
|
182
182
|
console.log(chalk.gray(' No account needed. Try it now!'));
|
|
183
|
+
console.log();
|
|
184
|
+
console.log(chalk.white(' exam <token>') + chalk.gray(' Enter exam with access token'));
|
|
185
|
+
console.log(chalk.gray(' Provided by your proctor.'));
|
|
183
186
|
console.log(chalk.gray(' ─────────────────────────────────────────────'));
|
|
184
187
|
console.log();
|
|
185
188
|
}
|
|
@@ -233,6 +236,7 @@ export async function startRepl(program, resumeMode) {
|
|
|
233
236
|
else if (connected) {
|
|
234
237
|
console.log(chalk.green(` Welcome back, ${config.userName}!`));
|
|
235
238
|
console.log(chalk.gray(` Connected to ${config.ctfdUrl}`));
|
|
239
|
+
console.log(chalk.gray(' logout to disconnect'));
|
|
236
240
|
console.log();
|
|
237
241
|
}
|
|
238
242
|
else if (activated) {
|
|
@@ -337,6 +341,17 @@ export async function startRepl(program, resumeMode) {
|
|
|
337
341
|
return;
|
|
338
342
|
}
|
|
339
343
|
}
|
|
344
|
+
// ICOA exam token detection (e.g., "ICOA-PE-001")
|
|
345
|
+
if (/^ICOA-[A-Z]{2}-\d+$/i.test(input.trim())) {
|
|
346
|
+
processing = true;
|
|
347
|
+
try {
|
|
348
|
+
await program.parseAsync(['node', 'icoa', 'exam', 'token', input.trim()]);
|
|
349
|
+
}
|
|
350
|
+
catch { }
|
|
351
|
+
processing = false;
|
|
352
|
+
rl.prompt();
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
340
355
|
// Clear
|
|
341
356
|
if (input === 'clear' || input === 'cls') {
|
|
342
357
|
console.clear();
|
package/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 39,
|
|
3
|
+
"name": "Too Many Flags",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "เราพบไฟล์นี้ที่เต็มไปด้วย flags แต่เราไม่รู้ว่าอันไหนคืออันที่ถูกต้อง! คุณช่วยหาคำตอบได้ไหมว่า flags เหล่านี้ถูกสร้างขึ้นมาได้อย่างไร และหาอันที่ถูกต้อง?",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:30:37.435Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 40,
|
|
3
|
+
"name": "Xanarto",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "ผมเจอคนนี้บน LinkedIn ที่อ้างว่าได้สร้าง algorithm ที่ไม่สามารถถูกถอดรหัสได้ พิสูจน์ว่าเขาคิดผิด ผมได้แนบโพสต์มาให้ในรูปแบบรูปภาพ",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:30:45.606Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 41,
|
|
3
|
+
"name": "Cheese",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "สำหรับ challenge นี้ ผู้เล่นจะต้องดำดิ่งลงไปในส่วนลึกของ provided image file ซึ่งเป็นส่วนหนึ่งของ cheese curse โดยใช้ various tools เพื่อค้นหาว่าอะไรคือสิ่งที่บางคนอาจจะมองข้ามว่าเป็นเพียง completely random text\n\nถ้าเพียงแค่ this string สามารถถูก manipulated หรือ converted ได้ไม่ทางใดก็ทางหนึ่ง นี่อาจเป็นความหวังเดียวของเราในการค้นหา flag เพื่อยกเลิก cheese curse ให้หมดไปตลอดกาล......\n\nขอให้สนุก :)",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:30:53.881Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 42,
|
|
3
|
+
"name": "Dogs Always Know",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "สุนัขมีจมูกที่ไวต่อความลับ—ที่ถูกฝังลึก ในที่ที่ไม่มีใครคิดจะมองหา เชื่อสัญชาตญาณของพวกมัน; บางครั้ง, สิ่งที่ซ่อนอยู่ไม่ได้อยู่ในที่ที่มองเห็นได้ง่าย, แต่อยู่ในกระดูกใต้พื้นผิว",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:30:59.397Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 43,
|
|
3
|
+
"name": "In the fine print",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "เอกสารสิ่งพิมพ์ชุดหนึ่งถูกค้นพบที่สถานที่ที่ไม่เปิดเผย พวกมันดูเหมือนจะไม่มีพิษมีภัย แต่มีบางอย่างไม่ชอบมาพากล...",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:31:06.720Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 45,
|
|
3
|
+
"name": "Layer Cake",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "ไม่ใช่ว่าเค้กทุกชิ้นจะเป็นเรื่องหลอกลวงเสมอไป ชิ้นนี้มีหลายชั้น!\nThe flag format is `pecan{crackedwords}`",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:31:19.485Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 46,
|
|
3
|
+
"name": "Looking through the sound",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "ข้อความบางอย่างไม่ได้ล่องไปบนคลื่นเสียงเสมอไป คุณจะต้อง *มองหา* ท่ามกลางเสียงรบกวน ให้ดวงตาของคุณทำหน้าที่ \"ฟัง\" และให้ \"เพลง\" เป็นผู้บอกใบ้ หมายเหตุ: คุณไม่จำเป็นต้องฟัง audio เพื่อทำชาเลนจ์นี้",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:31:28.064Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 47,
|
|
3
|
+
"name": "Nothing to See Here",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "นี่คือรูปวาดเล็กๆ ที่ผมวาด แต่ถึงอย่างนั้นก็ไม่มีอะไรให้เห็นในนั้นเลย อย่างที่คุณเห็นนั่นแหละ",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:31:38.595Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 49,
|
|
3
|
+
"name": "TLSB",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "คุณอาจจะเคยได้ยินเรื่อง Least Significant Bit (LSB) Steganography แต่คุณเคยได้ยินเรื่อง Third Least Significant Bit (TLSB) Steganography หรือไม่? (หวังว่าจะไม่เคย เพราะผมสร้างมันขึ้นมาสำหรับชาเลนจ์นี้) (HINT: ผมซ่อนความลับไว้ใน image byte order)",
|
|
6
|
+
"lang": "th",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:31:53.313Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 1,
|
|
3
|
+
"name": "Incorrect Implementation of RSA",
|
|
4
|
+
"category": "crypto",
|
|
5
|
+
"translation": "Rivest-Shamir-Aldeman hakkında yeni bilgi edindim ve bu yüzden kendi özel uygulamamı oluşturdum. İşte mesaj:\n\n```\nn: 16537241065399537261146800802060451995107796665337288928060948677362154976656429797729550619497788311160926523026781503470362013597201944839389519773564618679827061417896265475971561610333659217333638238386907603525565178455941971399130722191602944445714002268747028340120907894781607422707823554701443768586256913491149809410232167277063066105859165079765281480076330718726350243973636606134346374770537701812923215229226027759112780757449828410180237267791126609342382918352166823253106960191346933601235547281\ne: 5\nciphertext: [17623416832, 10510100501, 9509900499, 8587340257, 16105100000, 28153056843, 16850581551, 12166529024, 7737809375, 12762815625, 7737809375, 19254145824, 10510100501, 8587340257, 14693280768, 14693280768, 25937424601, 7737809375, 21003416576, 12166529024, 16850581551, 21924480357, 11592740743, 12166529024, 21003416576, 7737809375, 12762815625, 7737809375, 12166529024, 8587340257, 10000000000, 7737809375, 21003416576, 12166529024, 8587340257, 21003416576, 7737809375, 10000000000, 16850581551, 16105100000, 10510100501, 7737809375, 9509900499, 254803968, 19254145824, 19254145824, 345025251, 9509900499, 21003416576, 14693280768, 25937424601, 7737809375, 282475249, 282475249, 459165024, 312500000, 601692057, 30517578125]\n```",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:39:06.522Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 10,
|
|
3
|
+
"name": "The Perfect Breakfast",
|
|
4
|
+
"category": "crypto",
|
|
5
|
+
"translation": "Ah, kahvaltı. Güneş ufukta belirdiği anda, ocakta cızırtılı bir şeylerin kokusu gibisi yoktur. Asla atlamam, sabah insanı olduğumdan değil, kahvaltıda gerçek çağrımı bulduğumdan. Bazıları gevrek tercih eder, bazıları tost, ama ben mi? İşleri çıtır tutmayı severim.\n\nSabah rutinimde bir sanat vardır. İki yumurta, hafif akışkan. Bir fincan kahve, siyah. Ve tacın mücevheri: yüzümde her zaman bir gülümseme yaratan o isli, tuzlu mükemmellik. Kesinlikle favorim. Biraz keyfi, evet, ama her lokmasına değer.\n\nKahvaltının günün en önemli öğünü olduğunu söylerler… belki de mesajı oraya saklamamın nedeni budur. Sadece katmanların altına nereye bakacağınızı bilmeniz yeterli.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:39:59.118Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 11,
|
|
3
|
+
"name": "Wise Words",
|
|
4
|
+
"category": "crypto",
|
|
5
|
+
"translation": "Bir keresinde, büyük bir generalin evlatlık oğlu ve varisi Augustus ile karşılaştım. Ona en büyük stratejisinin ne olduğunu sorduğumda, sadece fısıldadı: Fwfo_Djqifsaa_Fwpmwf",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:04.852Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 13,
|
|
3
|
+
"name": "Keylogger",
|
|
4
|
+
"category": "forensics",
|
|
5
|
+
"translation": "Bir şeylerin yolunda gitmediğini hissettikten sonra, Ole durumu **security team**'e bildirdi. Ekip, **network**'ü araştırmaya karar verdi ve şüpheli bir şey fark etti.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:16.162Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 14,
|
|
3
|
+
"name": "obfuscated script",
|
|
4
|
+
"category": "forensics",
|
|
5
|
+
"translation": "Bir personel kendi Downloads folder içinde iki tuhaf dosya buldu: bir script ve okuyamadıkları bir file. Bunların ne olduğunu çözebilir misin?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:21.407Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 15,
|
|
3
|
+
"name": "Ping",
|
|
4
|
+
"category": "forensics",
|
|
5
|
+
"translation": "Saldırganlar bu günlerde zekileşiyorlar, exfiltrate data yapmak için her türlü yolu buluyorlar!\nBu sefer ne çaldılar?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:26.143Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 16,
|
|
3
|
+
"name": "Sound Inversion",
|
|
4
|
+
"category": "forensics",
|
|
5
|
+
"translation": "Asker, düşmanın bu `file`'ın bir yerinde bir `spoken audio message` sakladığına inanıyoruz. Onu bul ve hemen geri `report` et.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:34.677Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 17,
|
|
3
|
+
"name": "There is always a trace",
|
|
4
|
+
"category": "forensics",
|
|
5
|
+
"translation": "**NSA** tarafından işe alındınız ve işteki ilk gününüz. İlk göreviniz için size, hakkında neredeyse hiçbir bağlam olmayan, ancak bir **government server**'ı **remotely compromise etmekle** şüphelenilen bir bireyin **laptop**'ından alındığı bilgisi dışında hiçbir şey verilmeyen şüpheli görünümlü bir **file** verdiler.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:45.583Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 18,
|
|
3
|
+
"name": "Electric Debugger",
|
|
4
|
+
"category": "misc",
|
|
5
|
+
"translation": "Diğer popüler debugger'ların rakibi, Electric debugger'ının yeni bir sürümünü bu sabah yayınladı. Ne yazık ki, artık free veya open-source değil. Ancak, söylentilere göre, eğer biri onu hack etmeyi başarırsa bounties mevcut.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:52.545Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 19,
|
|
3
|
+
"name": "Old is gold",
|
|
4
|
+
"category": "misc",
|
|
5
|
+
"translation": "Önceki sistem yöneticisi burada neredeyse 47 yıldır çalışıyordu. Eski bilgisayarında bu dosyayı keşfediyorsunuz...",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:40:57.726Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 20,
|
|
3
|
+
"name": "Perceptions",
|
|
4
|
+
"category": "misc",
|
|
5
|
+
"translation": "Yaptığım bu bloga göz atın! Harika bir backend'i var, görünüşe göre daha az port kullanıyor.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:04.148Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 22,
|
|
3
|
+
"name": "Survey",
|
|
4
|
+
"category": "misc",
|
|
5
|
+
"translation": "PECAN+ CTF 2025 hakkındaki düşüncelerinizi bize bildirin. Her geri bildirim çok yardımcı olur!\n\n<https://forms.cloud.microsoft/r/q5ESPCft24>",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:15.293Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 23,
|
|
3
|
+
"name": "The Job Interview",
|
|
4
|
+
"category": "misc",
|
|
5
|
+
"translation": "Klavyenize kapanmış, iki saat boyunca iş görüşmesi sorularıyla zihinsel bir mücadele veriyordunuz. Kahveniz soğuktu. Sabrınız ise tükenmek üzere.\nTam son cevabınızı göndermek üzereyken, ekranınızda şifreli bir mesaj belirir:\n\n\"You've proven your endurance. Now let's test your problem-solving and advanced knowledge of the code you seem to know so well.\"\n\nTek bir URL görünür hale gelir:\n\nhttps://docs.google.com/document/d/e/2PACX-1vRW7X8yMO9cM-b6Ao3FbiZysF3MIjARoeO73z0PlG8O_yeM8xxWAWzt9hdoavlh3HR1IOEwWtJFpczI/pub\n\nİçeride mi? Şifreli verilerden oluşan, aldatıcı derecede basit ancak çok önemli bir şeyi saklayan bir ızgara.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:25.951Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 24,
|
|
3
|
+
"name": "Class Above Par",
|
|
4
|
+
"category": "osint",
|
|
5
|
+
"translation": "Her gün Jamie, Melbourne'un güney banliyölerinin ağaçlarla çevrili sokaklarında yürüyerek ortaokuluna gider — sabah yoklamasının sık sık yukarıdan gelen uçak gürültüsüyle kesildiği bir yer.\n\nBir öğleden sonra, bir sınıf projesi için yerel simge yapıları haritalandırırken Jamie ilginç bir şey keşfetti: Okulları, büyük bir havalimanına en yakın ortaokul olabilir. Daha da tuhafı, aynı zamanda genişleyen golf sahalarına sadece bir taş atımı uzaklıkta, burada sessiz vuruşlar jet motorlarının gürültüsüyle tezat oluşturuyor.\n\nJamie'nin evi dediği okulu bulabilir misin? Flag format: `pecan{my_high_school}`",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:32.297Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 25,
|
|
3
|
+
"name": "Travelling Around",
|
|
4
|
+
"category": "osint",
|
|
5
|
+
"translation": "Hmm… Corn Man bazı ilginç yerleri, çok garip bir rota üzerinde ziyaret etmiş gibi görünüyor. Bu bir şey ifade edebilir mi? Belki banliyöler bir ipucu barındırıyor... Gönderiler doğru yönde bir \"pointer\" içerebilir...\nFlag'i pecan{} içine almayı unutmayın, büyük harfler kullanın ve kelimeleri bir underscore ile ayırın. Örn. `pecan{I_LOVE_PECAN}`",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:39.157Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 26,
|
|
3
|
+
"name": "Online Presence",
|
|
4
|
+
"category": "osint",
|
|
5
|
+
"translation": "Kapsamlı bir araştırma sonucunda, Corn Man'in bir sosyal medya varlığı olduğu anlaşılıyor. Kullandığı hesabı bulmamıza yardım edebilir misiniz?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:47.429Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 27,
|
|
3
|
+
"name": "Happy Birthday Corn Man!",
|
|
4
|
+
"category": "osint",
|
|
5
|
+
"translation": "Corn Man'i bir süredir takip ediyorum, ancak bir engelle karşılaştım. Yakın zamanda onun email'ini online olarak buldum: <cornman25944@gmail.com>. online'da büyük bir varlığı var gibi görünüyor. Onun birthday'ini bulup bu soruşturmaya yardımcı olabilir misin?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:41:52.994Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 28,
|
|
3
|
+
"name": "Ego is the weakness",
|
|
4
|
+
"category": "osint",
|
|
5
|
+
"translation": "Yakın zamanda bir ransomware operation tespit edildi ve bu durum, saniyeler içinde milyonlarca doların kaybedilmesine yol açtı. Hükümetle yapılan iş birliği içinde bir soruşturmanın ardından, faaliyetlerini, suçluya ait olduğu düşünülen bir Instagram hesabına kadar takip ettik. Bu cybercriminal'ın sıkça ziyaret ettiği bir yerin adresini belirlememize yardımcı olabilir misiniz? İstihbaratımız, bu kişinin hala genç olduğunu ve yüksek ihtimalle henüz mezun olmadığını gösteriyor.\n\nFlag format: `pecan{Paste in the address from Google Maps}`",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:42:03.592Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 30,
|
|
3
|
+
"name": "Echo Chamber",
|
|
4
|
+
"category": "pwn",
|
|
5
|
+
"translation": "Ona ne gönderirsen gönder, aynısını geri yollayan garip bir servis buldum. Garip bir ayna veya yansıma gibi bir şey.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:43:24.145Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 31,
|
|
3
|
+
"name": "Flag Fish",
|
|
4
|
+
"category": "pwn",
|
|
5
|
+
"translation": "Bjarne gözde flag balığını avlıyor. İlk `try`'ı başarısız oldu, bu sefer onu `catch` etmesine yardım edebilir misin?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:43:31.471Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 32,
|
|
3
|
+
"name": "fridge",
|
|
4
|
+
"category": "pwn",
|
|
5
|
+
"translation": "Bir data breach yaşadık! Forensics team'imiz, yeni smart refrigerator'ımızdan garip bir trafik geldiğini ve hala çalışır durumda olan eski bir debugging service bulduklarını tespit etti.\n\nŞimdi buzdolabımıza nasıl erişim sağladıklarını bulmak size düşüyor!",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:43:49.579Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 33,
|
|
3
|
+
"name": "Say Shells!",
|
|
4
|
+
"category": "pwn",
|
|
5
|
+
"translation": "Basit bir web uygulaması, EXIF metadata'larını görüntülemek üzere görsel dosyaları yüklemenize olanak tanır. Ama bir şeyler garip... Görselleriniz biraz fazla derinden mi analiz ediliyor?\nSunucuyu kendi bir command'inizi çalıştırması için kandırabilir ve gizli bir flag.txt dosyasının içeriğini ortaya çıkarabilir misiniz?\n\nNot: Sadece görsel dosyası yüklemelerine izin verilir. brute force'a ihtiyacınız olmayacak — sadece biraz yaratıcılık ve doğru format.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:43:57.966Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 35,
|
|
3
|
+
"name": "cafe1995",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "Yeni kovulmuş olan denetimsiz bir developer'dan, bir program'ın parçalarını topladın. password'ü bul ve şirketi tekrar yoluna koy... Yoksa seni de kovarlar.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:15.220Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 36,
|
|
3
|
+
"name": "Doors 3",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "Arkadaşınızın, licence check'i bypass etmeyi tespit etme yeteneklerini test ettikleri için ulaşamayacağınızı düşündüğü son bir flag'i var.\n\nSon flag'i almaya çalışın. Oraya ulaşmak için binary'i patch'lemeniz gerekebilir, ancak gidebileceğiniz birkaç yol var.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:26.042Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 37,
|
|
3
|
+
"name": "Doors 2",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "Arkadaşın, unuttukları o flag'i bulduğun için sana gerçekten minnettar!\n\nGeri kalan flag'leri saklamak için biraz zaman harcadılar ve onlara ulaşamayacağını umuyorlar, onların key validation function'ını reverse edebileceğini düşünüyor musun?\nOnların programı için kendi licence key'ini üret ve flag'i al!",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:30.890Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 38,
|
|
3
|
+
"name": "Doors",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "Arkadaşın sana C# ile yazdığı bir güvenlik anahtarı doğrulama programının prototip sürümünü gönderdi. Burada birkaç flag var, ama encrypt etmeyi unuttuğu flag'i bularak yardımcı olabilir misin?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:37.702Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 39,
|
|
3
|
+
"name": "Too Many Flags",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "flags ile dolu bir dosya bulduk ama hangisinin doğru olduğunu bilmiyoruz! Bu flags'lerin nasıl üretildiğini çözüp doğru olanı bulabilir misin?",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:43.508Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 4,
|
|
3
|
+
"name": "#InMyLibraryClashingEra",
|
|
4
|
+
"category": "crypto",
|
|
5
|
+
"translation": "Komik derecede basit bir hash function yarattım? Bir clash bul ve sana gideceğin library'yi vereyim. Yani, eğer bende olanı okuyabilirsen. Benim hatam, bunu yapmadan önce 32 ml Base model Dasani içtim.\n\npycryptodome gerekebilir, bu yüzden önceden install edin.\n\nFlag'i `pecan{flag}` içine encapsulate etmeyi unutmayın.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:39:13.187Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 40,
|
|
3
|
+
"name": "Xanarto",
|
|
4
|
+
"category": "rev",
|
|
5
|
+
"translation": "LinkedIn'de çözülemez bir algorithm oluşturduğunu iddia eden bu adamı buldum. Onu haksız çıkar. Gönderiyi bir görselde ekledim.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:44:48.901Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 41,
|
|
3
|
+
"name": "Cheese",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "Bu görev için, \"cheese curse\"ın bir parçası olarak, sağlanan \"image file\"ın derinliklerine inilmeli ve kimilerinin \"completely random text\" olarak görüp atacağı şeyi ortaya çıkarmak için çeşitli \"tools\" kullanılmalı.\n\nKeşke bu \"string\" bir şekilde \"manipulate\" edilebilir veya \"convert\" edilebilir olsaydı, bu, \"cheese curse\"ı bir kez ve sonsuza dek kaldırmak için \"flag\"i bulmadaki tek umudumuz olabilir.\n\nİyi eğlenceler :)",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:45:03.257Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 42,
|
|
3
|
+
"name": "Dogs Always Know",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "Köpeklerin sırlar için bir burunları vardır—derinlere gömülü, kimsenin bakmayı düşünmediği yerlerde. İçgüdülerine güvenin; bazen, gizlenen şey apaçık ortada değildir, ama yüzeyin altındaki kemiklerde saklıdır.",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:45:09.022Z"
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": 43,
|
|
3
|
+
"name": "In the fine print",
|
|
4
|
+
"category": "steg",
|
|
5
|
+
"translation": "Açıklanmayan bir konumda bir dizi basılı belge keşfedildi. Görünüşte masumlar, ancak bir şeyler tuhaf hissettiriyor...",
|
|
6
|
+
"lang": "tr",
|
|
7
|
+
"model": "gemini-3.1-pro-preview",
|
|
8
|
+
"timestamp": "2026-04-08T04:46:09.777Z"
|
|
9
|
+
}
|