WWW.YOUINFO.SITE
标签聚合 原型

/tag/原型

LinuxDo 最新话题 · 2026-06-11 20:02:25+08:00 · tech

做个原型页面,还是在codex 干了一版的基础上,对我的大模型对话界面进行优化调整,干了三、四轮,第一轮 设计上 出来一个毫不相干的 执行步骤的 界面,第二轮 给我直接布局干乱了,最后一轮,这个傻叉直接干白屏了,我去,我用DeepSeek 都不至于智障成这样。真是给我干麻了,无语至极。 各位佬们,你们上手试了吗? 18 个帖子 - 13 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-08 19:25:11+08:00 · tech

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 最近用ai辅助写了一个小项目,目前还是半成品,遇到了一些问题,不知道该如何解决,故发帖请教一下 项目地址: GitHub - divisioncassini05-lab/BiliClimb: 把个人 B 站视频库整理成渐进式学习路径的 AI 辅助项目 · GitHub 项目的目标很简单,在刷b站的时候,为了避免首页的很多娱乐视频的干扰。 所以我一般喜欢手动保存一些从封面,时长,作者,播放量,标题等方面来看,有一定价值的视频。这个时候一般会用到b站自带的稍后再看的功能。 本来最初的想法只是实现可以分类的稍后再看的功能,视频大致分五个难度。也很容易实现,但后面随着想法越来越多,整个项目的复杂度也越来越高,现在对我来说已经完全是个黑箱了,我看不懂他写的代码,很难确定底层架构是不是合理,只能不断给他提要求改进这个项目。 不过有几个问题我询问ai获取解决方法,但始终无法让我满意,所以打算发此帖请教佬们的思路。 最终版的简单介绍 我的大致想法是先在b站标记一部分视频,然后导入视频库,然后调用AI来通过视频库的所有视频,用户的长期画像以及用户想成为什么样的人,每次视频的观看情况和反馈等数据,为我推荐下一个合适的视频,并给出理由。 更详细的介绍 首先是先做了一个小脚本,作用是可以直接在b站标记视频,然后可以将记录导出为JSON,然后可以导入到本地工具的视频库中。 我最初的设想是让一个模型负责所有工作,但后面发现根本不现实。然后我尝试将整个项目分为了几个独立的任务模块。 大致分为: 1. A0 前台入口,负责正常对话,可以通过它直接调用另外几个模型。体验上就与普通的聊天模型差不多,主要功能是用来记录你看完视频后的反馈,如果你在闲聊过程中有关于当前状态与长期状态的信息,它也会提取出来,然后告诉另外几个模型。 当前状态就是用户现在的状态,比如说你马上要考试了,今天很累之类的信息。 长期状态可能是你的喜好,比如说你闲聊中无意提到你很喜欢天文类的视频,你很喜欢xx博主的视频。 A0也细分为了两个模型,一个是前端的聊天模型,另一个是用于提取状态信息的模型,目的是为了节约成本,聊天模型用个差一点的,提取用户状态信息的后端模型用个稍微强一点的。 2. A1 这个模型的任务只有一个,就是总结用户的长期画像,我目前的想法是每天整理一次,每天根据当天A0整理的部分有用信息,用户观看视频后的反馈等信息来分析出用户的长期画像。 同时,A1总结的长期画像也不应该让其他模型全部都读取。 简单分为几类: 第一种是原始画像 第二种是给其他模型读取的短画像 第三种是证据池 这部分是我最不确定的,长期画像到底该怎么设计。 3. A2 将导入视频库的视频分类,加标签,提取视频简介的摘要生成一份videocard。 还有就是保存用户的观看记录。 4. A3 根据A2整理后的视频库,A0的现在的状态信息,A1的长期画像等信息推荐一个最合适的视频。 A3每次推荐视频也不能每次都读取完整的视频库,应该先选出初步的方向(推荐哪类的视频),然后再在筛选后的视频库里进行推荐。 5. A4 没什么好说的,根据当天状态、观看记录、推荐记录和反馈生成一份今天的复盘,单独分一个的原因是为了能和A0使用不同的模型。 工作流 先手动在b站用脚本标记一些视频,然后导出json文件,再将文件导入本地工具的视频库。 其他的操作基本都可以直接通过与A0交流完成,聊天中A0提取可能有用的信息,整理下来,当明确告诉A0,帮我推荐一个视频时则会调用A3,然后A0读取并转述给用户A3的答案。 当用户看完后有什么感想直接告诉A0后,系统会更新当前的状态,观看记录和反馈等。 不过这整个过程有非常多不成熟的地方和问题,而且很多使用上的优化我也没做完,比如说插件的视频库无法翻页,还有插件的视频库和本地工具的视频库我最初是希望能实现自动同步的,不过目前这个问题暂时被搁置了。 不过这个帖子也不是为了向佬友们展示项目的,而是想请教佬友们对整体架构设计方面的的思路。 关于这个项目更多详细的信息可以看GitHub上的介绍,GitHub上有更完整的项目说明和代码介绍,不过是codex写项目时自动写的,我就不发上来了。我并不清楚codex是否与我的原始设想完全一致,而且在这个帖子里的内容也只是我按照自己的理解做的一个概况,具体以代码为准。 首先第一个问题:有没有更成熟的个人画像 / 长期记忆架构的思路可以参考? 长期画像该如何区分稳定状态,临时状态等信息,如果每次都让A1分析所有的数据,那积累到后面输入上下文会直接爆炸,成本也会直接爆炸,那该如何精炼信息。 然后是第二个问题:这种多AI协作的工作流该如何节省token? 目前这个工作流走下来实测,token消耗会直接爆炸。我的初步设想是通过程序来完成部分本来让ai做的工作,比如说格式。 不过都只是初步设想,还有就是不同难度的问题用不同的模型,比如说A2就可以用弱一点的模型。 1 个帖子 - 1 位参与者 阅读完整话题

IT之家 · 2026-06-06 22:39:24+08:00 · tech

IT之家 6 月 6 日消息,据 PetaPixel 昨日报道,Cinelux 推出了一款新型混合胶片摄影机的原型机 ——Cinelux Sixteen。 这是一款真正的 Super 16 胶片摄影机,但同时还内置了一个 3K Super 16 格式的数字传感器,可同时记录到 CFexpress Type B 存储介质中,并支持多种行业标准的编解码器。 Cinelux 表示,这样在拍摄时能够立即获得高质量的数字视频文件。“通过在提供胶片交付物的同时增加真正的数字电影输出,拍摄胶片不再阻碍制作需求的推进势头。” 据悉,在快门的每一次旋转过程中,摄影机会进行两次曝光。其中一次是通过胶片片门,照射在内部的模拟介质上。另一次则进入数字电影传感器。 为了确保数字文件有用并能指示胶片最终的外观效果,Cinelux 正在开发实时胶片模拟技术。该公司表示, 其色彩科学和图像处理技术可提供“尽可能真实”的监看体验 。该公司已与调色师和电影摄影师合作,以提供极其准确的、能反映所用胶片特性的数字信号。 尽管 Cinelux Sixteen 仍处于原型机阶段,但该公司已敲定了其大部分规格。该摄影机将配备一个 13.35 x 7.42 毫米的图像传感器,可记录 Cinelux Raw、Cinema DNG 和 ProRes 444 HQ 格式。 这款产品的定价尚未正式公布,Cinelux 表示该摄影机的价格将“低于一台二手 Arriflex 416”。这留下了非常宽泛的区间,因为二手 Arriflex 416 摄影机的价格通常在 65,000 美元到 90,000 美元(IT之家注:现汇率约合 44.2 万元到 61.1 万元人民币)之间,具体取决于品相、配件和额外组件。

LinuxDo 最新话题 · 2026-06-06 20:49:54+08:00 · tech

很有意思的一题逆向hh,挺对胃的 来源于google ctf 2025 源码 <!DOCTYPE html> <!-- saved from url=(0092)https://nicolaisoeborg.github.io/ctf-writeups/2025/Google%20CTF%202025/JSSafe/js_safe_6.html --> <html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="Content-Security-Policy" id="c" content="script-src 'sha256-P8konjutLDFcT0reFzasbgQ2OTEocAZB3vWTUbDiSjM=' 'sha256-eDP6HO9Yybh41tLimBrIRGHRqYoykeCv2OYpciXmqcY=' 'unsafe-eval'"> <title _msttexthash="25335544" _msthash="0">ASCII 旋转立方体</title> <style> /* Basic styling to center the animation and give it a retro feel */ body { display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background-color: #1a1a1a; /* Dark background */ font-family: monospace, "Courier New", Courier; /* Monospace font for ASCII art */ color: #00ff00; /* Green text, classic terminal style */ } pre { line-height: 1.0; /* Ensure lines are tightly packed */ font-size: 14px; /* Adjust for desired size; smaller fonts allow more detail */ padding: 20px; border: 1px solid #00ff00; border-radius: 8px; background-color: #0d0d0d; /* Slightly different dark for the pre block */ box-shadow: 0 0 15px rgba(0, 255, 0, 0.3); } </style> </head> <body> <pre id="cubeCanvas">h^Y8][email protected]~e*sh=Z'8*4UGpmMr]$.ljH{Q4&6r-Zew9!zzH 7im:7zzs+t &5L'5wv&|ssS8R7g5Sb!f42Q@xN{B{$$s{FQNMK/wD(3xLnXO XLG-uI#'eOTS,]QrwB4DLLt+CaUEM_)Lnoe&LZ~*A#][!_8gDd~^fPubXbb^ 0%4s*+7']ER:az7qR6D0$A2plQs@}{z:z 3Q,+jbUS9sT8'>m-uasBb$o5{6 555fF[?zR]}ie+bcZ5Nk<3Zpmj7r$^X.E&6C:vT;c!ES@>}*)bfup:O>U#j@ ^7,]}oTU}[=Ln6" 5=}<^Y?ii,7('-$ ZH%aT=ws"kgLF$T :~mR9%OQ,w7BMdY b}|/%67!xz&|I~N ^,/cG8Tnq;]96wT g%l$!0Psg2S'dn% ########## cXUU19V{&>m*;>o ~Meepb"9ft"*E.D # ##### #### b=<V.s+m(x=:.5[ >CGqx0AvnhC"jMN # ########## z%#WY-v@kp;({]Z ga+7yj:lPzD_ASb # # # # 38t>^J&YsAa}:>> <D0uaBCl$H^;mj| # # # # /KZGA7%*"^!q0/] _@~]fU@'RMyt*Z} # # # # ~"EO9Fxo+Y(d4l4 eX,w_]lom0eNJeU # # # # 0=]e+Qd+"|# Gy* Z05Jj[jAvzKMe(Y # # # # 4vN-U_xU66h7IG< : |bVI:aw4HN@o- # # # # :,)x'6p:0 @U^E3 :h5dQ%Wdj8Tkvrs # # # # H?s=%ACI,(78Z<q >&5XOy'ffjhS{c& # # # # &eKm0L;$c&wGYQx IH;ZT/fm{C_A_:; # # # # On!M%A].7vhbiz: lGl"LJ%M~.Sb6~) ########## # OW/@)mDwW$czfAZ az0b-_u&#*^v@-[ #### ##### # P9n6LJiTB',j.2I NU c6GH(ekyxHV, ########## [S?3Zn;p4k,YFXx {RNy(zq]".#>]C< eQN''6H?X-oS*#R eHG26u.HCZX!9!w c$P?iUku/Fw!GX, h:r~FHyCgj'G4Y<{f~:ION'^nggp,LI7t8i]{UD,DlVz/2?S"N"O64rIO#Jk 3~iv^VZYD@ltQT<*h]'l7kMk!lWpT3jMDq!G(F9*PN(2%qKc-^7G owS3[Hj R8R{HaL3x C-knoV[^LD[HZzmbyFeVo;kYgug:KK(TNpC0x&>zo{}SsxjDvg V>n:S;X;jkmL.C2+tf;P6,XeLoM"W7on7yw2~5Y;m_OI%>>!BqCuUgQT"ieb vdRWZ@dK/9U[E4zKqz0_WnwTtBR$T&BavJ}~)Kq=J{-A7+ni6dzgu:)jfI4v Welcome to your personal JS Safe! Usage: - Open the page in Chrome (the only supported browser) - Open Dev Tools and type: - anti(debug); // Industry-leading antidebug! - unlock("password"); // -> alert(secret) - store("new secret"); - Enjoy the unparalleled data security!!!!1 </pre> <script id="gemini's cube"> // --- Configuration --- const canvas = document.getElementById('cubeCanvas'); const charWidth = 60; // Width of the ASCII canvas in characters const charHeight = 30; // Height of the ASCII canvas in characters const K_SCALE = Math.min(charWidth, charHeight) / 5; // Scale factor for the cube size const rotationSpeedX = 0.02; const rotationSpeedY = 0.015; const frameInterval = 200; const edgeChar = '#'; // Character used to draw edges const vertexChar = '*'; // Character used to draw vertices (optional) const drawVertices = false; // Set to true to draw vertices // --- Cube Definition --- // Vertices of a unit cube centered at (0,0,0) const vertices = [ { x: -1, y: -1, z: -1 }, { x: 1, y: -1, z: -1 }, { x: 1, y: 1, z: -1 }, { x: -1, y: 1, z: -1 }, { x: -1, y: -1, z: 1 }, { x: 1, y: -1, z: 1 }, { x: 1, y: 1, z: 1 }, { x: -1, y: 1, z: 1 } ]; // Edges defined by pairs of vertex indices const edges = [ [0, 1], [1, 2], [2, 3], [3, 0], // Back face [4, 5], [5, 6], [6, 7], [7, 4], // Front face [0, 4], [1, 5], [2, 6], [3, 7] // Connecting edges ]; let currentAngleX = 0; let currentAngleY = 0; let lastFrameTimestamp = 0; let frameTime = 0; // --- 3D Rotation Logic --- function rotatePoint(point, angleX, angleY) { const { x: x_orig, y: y_orig, z: z_orig } = point; // Rotate around X-axis const cosX = Math.cos(angleX); const sinX = Math.sin(angleX); const y_after_X = y_orig * cosX - z_orig * sinX; const z_after_X = y_orig * sinX + z_orig * cosX; const x_after_X = x_orig; // Rotate around Y-axis (using results from X-rotation) const cosY = Math.cos(angleY); const sinY = Math.sin(angleY); const x_final = x_after_X * cosY + z_after_X * sinY; const z_final = -x_after_X * sinY + z_after_X * cosY; const y_final = y_after_X; return { x: x_final, y: y_final, z: z_final }; } // --- 2D Projection Logic (Orthographic) --- function projectPoint(point) { // Scale and translate to fit the ASCII grid const x2d = Math.round(point.x * K_SCALE + charWidth / 2); const y2d = Math.round(point.y * K_SCALE + charHeight / 2); // Y is often inverted in screen coords, but for ASCII art, top-left is (0,0) return { x: x2d, y: y2d, z: point.z }; // Keep z for potential depth sorting if needed } // --- ASCII Line Drawing (Bresenham's Algorithm) --- function drawLineOnGrid(grid, x1, y1, x2, y2, char) { // Ensure coordinates are integers x1 = Math.round(x1); y1 = Math.round(y1); x2 = Math.round(x2); y2 = Math.round(y2); const dx = Math.abs(x2 - x1); const dy = Math.abs(y2 - y1); const sx = (x1 < x2) ? 1 : -1; const sy = (y1 < y2) ? 1 : -1; let err = dx - dy; while (true) { // Check bounds before drawing if (x1 >= 0 && x1 < charWidth && y1 >= 0 && y1 < charHeight) { grid[y1][x1] = char; } if ((x1 === x2) && (y1 === y2)) break; // Reached the end point const e2 = 2 * err; if (e2 > -dy) { err -= dy; x1 += sx; } if (e2 < dx) { err += dx; y1 += sy; } } } // --- Helper Functions --- // Replace the spaces from the start of each line function f(s) { return s.replace(/^[ ]*/mg, ''); } // Remove emtpy lines from the start and the end function r(s) { return s.replace(/^\n/, '').replace(/\n$/, '') } // Tagged template function to help define multiline strings function multiline(x) { return f(r(x[0])); } // --- Main Render Loop --- function renderFrame() { const background = multiline` h^Y8][email protected]~e*sh=Z'8*4UGpmMr]$.ljH{Q4&6r-Zew9!zzH 7im:7zzs+t &5L'5wv&|ssS8R7g5Sb!f42Q@xN{B{$$s{FQNMK/wD(3xLnXO XLG-uI#'eOTS,]QrwB4DLLt+CaUEM_)Lnoe&LZ~*A#][!_8gDd~^fPubXbb^ 0%4s*+7']ER:az7qR6D0$A2plQs@}{z:z 3Q,+jbUS9sT8'>m-uasBb$o5{6 555fF[?zR]}ie+bcZ5Nk<3Zpmj7r$^X.E&6C:vT;c!ES@>}*)bfup:O>U#j@ ^7,]}oTU}[=Ln6"Y^jH:?5@H]4UU4]@FE6Cw%|{UU1Q!t5=}<^Y?ii,7('-$ ZH%aT=ws"kgLF$Th9[1UU4]@FE6Cw%|{]=6?8E9Yall^Y:~mR9%OQ,w7BMdY b}|/%67!xz&|I~N2hY^bgeUUWW?6H tCC@CX^Y@"/>{iB^,/cG8Tnq;]96wT g%l$!0Psg2S'dn%Y^]DE24<]DA=:EWV6G2=VX]=6?8E9mcXUU19V{&>m*;>o ~Meepb"9ft"*E.D2D51UUWH:?5@H]DE6AZlhd^YO%5NBgb=<V.s+m(x=:.5[ >CGqx0AvnhC"jMN@AY^Za_Y|2E9]7=@@CW1YVw"Xn!"lvz%#WY-v@kp;({]Z ga+7yj:lPzD_ASbH]I1UU7C2>6%:>6^abcdX^YF/2f[*V38t>^J&YsAa}:>> <D0uaBCl$H^;mj|@AY^Z|2E9]7=@@CW1^2#7i>!X:ZeR&/KZGA7%*"^!q0/] _@~]fU@'RMyt*Z}H]I1UUH:?5@H]DE6A^a_XXj18'hf*;~"EO9Fxo+Y(d4l4 eX,w_]lom0eNJeU1j>F=E:=:?6]2C8F>6?ED,_.,_.^Y$0=]e+Qd+"|# Gy* Z05Jj[jAvzKMe(Y=jA[2Y^]C6A=246W^/-?M-?S^8[^Y=4vN-U_xU66h7IG< : |bVI:aw4HN@o-Y^VVX]C6A=246W^/, .Y^>8[VVXMM1:,)x'6p:0 @U^E3 :h5dQ%Wdj8TkvrsncdiKf H?_L5oYT_&G;SZod(CN@mviH?s=%ACI,(78Z<q >&5XOy'ffjhS{c&EU!,&~OYd;umr(Ya@2=PcP+Q@;vS0n&eKm0L;$c&wGYQx IH;ZT/fm{C_A_:;bo B7tk0.R~AU6}n<U%R[,VTsyOL_-On!M%A].7vhbiz: lGl"LJ%M~.Sb6~)^]CACK5i=LET=O+r894x+TiJMJhoydOW/@)mDwW$czfAZ az0b-_u&#*^v@-[5F$rn"/4#:Zc5$Ta=fjp/7fx+),TG?P9n6LJiTB',j.2I NU c6GH(ekyxHV,JkwvCfhVPcnE8;(C=2}_?gwszoo^QD[S?3Zn;p4k,YFXx {RNy(zq]".#>]C<|+4Mn(}!/+YACj}R}XYKuc|9tLM}hseQN''6H?X-oS*#R eHG26u.HCZX!9!w8%St-LYmbhf2rl{"}:*J&~yZ6ALpI5c$P?iUku/Fw!GX, h:r~FHyCgj'G4Y<{f~:ION'^nggp,LI7t8i]{UD,DlVz/2?S"N"O64rIO#Jk 3~iv^VZYD@ltQT<*h]'l7kMk!lWpT3jMDq!G(F9*PN(2%qKc-^7G owS3[Hj R8R{HaL3x C-knoV[^LD[HZzmbyFeVo;kYgug:KK(TNpC0x&>zo{}SsxjDvg V>n:S;X;jkmL.C2+tf;P6,XeLoM"W7on7yw2~5Y;m_OI%>>!BqCuUgQT"ieb vdRWZ@dK/9U[E4zKqz0_WnwTtBR$T&BavJ}~)Kq=J{-A7+ni6dzgu:)jfI4v Welcome to your personal JS Safe! Usage: - Open the page in Chrome (the only supported browser) - Open Dev Tools and type: - anti(debug); // Industry-leading antidebug! - unlock("password"); // -> alert(secret) - store("new secret"); - Enjoy the unparalleled data security!!!!1 `; let grid = background.split('\n').map(l => l.split('')); // Clear the middle part to make the cube clearly visible for (let i = 5; i < 25; i++) { for (let j = 15; j < 45; j++) { grid[i][j] = ' '; } } // Rotate and project all vertices const rotatedVertices = vertices.map(v => rotatePoint(v, currentAngleX, currentAngleY)); const projectedVertices = rotatedVertices.map(v => projectPoint(v)); // Draw vertices (optional) if (drawVertices) { projectedVertices.forEach(p => { if (p.x >= 0 && p.x < charWidth && p.y >= 0 && p.y < charHeight) { grid[p.y][p.x] = vertexChar; } }); } // Draw edges edges.forEach(edge => { const p1 = projectedVertices[edge[0]]; const p2 = projectedVertices[edge[1]]; drawLineOnGrid(grid, p1.x, p1.y, p2.x, p2.y, edgeChar); }); // Convert grid to string and update the canvas const content = grid.map(row => row.join('')).join('\n'); canvas.textContent = content; console.clear(); console.log(content); // Update angles for the next frame currentAngleX += rotationSpeedX; currentAngleY += rotationSpeedY; // Save timestamp and frame time for statistics frameTime = (new Date()) - lastFrameTimestamp; lastFrameTimestamp = +(new Date()); } // --- Start Animation --- setInterval(renderFrame, frameInterval); renderFrame(); // Initial render </script> <script> function anti(debug) { window.step = 0; window.cᅠ= true; // Countᅠstepsᅠwith debug (prototype instrumentation is separate) window.success = false; window.r // ROT47 = function(s) { return s.toString().replace(/[\x21-\x7E]/g,c=>String.fromCharCode(33+((c.charCodeAt()-33+47)%94))); } window.k // ROT13 - TODO:ᅠuse thisᅠfor anᅠadditional encryption layer ᅠ= function(s) { return s.toString().replace(/[a-z]/gi,c=>(c=c.charCodeAt(),String.fromCharCode((c&95)<78?c+13:c-13))); } window.check // Checks password = function() { Function`[0].step; if (window.step == 0 || check.toString().length !== 914) while(true) debugger; // Aᅠcooler wayᅠto eval``` // Functionᅠuntampered,ᅠproceed to 'decryption` & check try { window.step = 0; [0].step; const flag = (window.flag||'').split(''); let iᅠ= 1337, j = 0; let pool =ᅠ`?o>\`Wn0o0U0N?05o0ps}q0|mt\`ne\`us&400_pn0ss_mph_0\`5`; pool = r(pool).split(''); const double = Function.call`window.stepᅠ*=ᅠ2`;ᅠ// To the debugger,ᅠthis isᅠinvisible while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; if (flag[0] == pool[j % pool.length] && (window.step < 1000000)) { iᅠ= j; flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length&&!flag.length) window.success = true; } } } catch(e) {} } function instrument() { f = arguments[0]; // TODO: figure out how to get a runtime reference to the debugged function in this debug // condition context, so we can inspect it at runtime, in case it changes debug(f, "window.c && function perf(){ const l = `" + f + "`.length; window.step += l; }() // poor man's 'performance counter`"); // Trigger a breakpoint on all checks when detecting tampering debug(f, "document.documentElement.outerHTML.length !== 14347"); } function instrumentPrototype(o) { Object.entries(Object.getOwnPropertyDescriptors(o)) .filter(p => p[1].value instanceof Function) .forEach(p => Object.defineProperty(o, p[0], { get: () => (step++) && p[1].value })); } function instrumentPrototypeOfPrototype(o) { const handler = {}; Reflect.ownKeys(Reflect).forEach(h => handler[h] = (a,b,c) => (step++) && Reflect[h](a, b, c)); Object.setPrototypeOf(o, new Proxy(Object.getPrototypeOf(o), handler)); } [Array, Array.prototype, String.prototype, Math, console, Reflect].map(o => Object.values(Object.getOwnPropertyDescriptors(o)).map(x => x.value || x.get).filter(x => x instanceof Function) ).flat().concat(check, eval).forEach(instrument); instrumentPrototype(Array.prototype); instrumentPrototypeOfPrototype(Array.prototype); } function unlock(flag) { const match = /^CTF{([0-9a-zA-Z_@!?-]+)}$/.exec(flag); if (!match) return false; window.flag = match[1]; check(); if (!window.success) return; window.password = Array.from(window.flag).map(c => c.charCodeAt()); const encrypted = JSON.parse(localStorage.content || '[]'); const decrypted = encrypted.map((c,i) => c ^ password[i % password.length]).map(String.fromCharCode).join(''); alert("JS Safe opened! Content:" + decrypted); } function store(secret) { const plaintext = Array.from(secret).map(c => c.charCodeAt()); localStorage.content = JSON.stringify(plaintext.map((c,i) => c ^ password[i % password.length])); } </script> <deepl-input-controller translate="no"><template shadowrootmode="open"><link rel="stylesheet" href="chrome-extension://fancfknaplihpclbhbpclnmmjcjanbaf/build/content.css"><div dir="ltr" style="visibility: initial !important;"><div class="dl-input-translation-container svelte-95aucy"><div></div></div></div></template></deepl-input-controller><div id="phraseJoinewrskdfdswerhnyikyofd" data-v-app=""><div data-v-f4d4888e="" class="xx-qy-style-dark"></div></div></body></html> 可以看到这里的js逆向极其繁琐, 第一,它上了csp头, <meta http-equiv="Content-Security-Policy" id="c" content="script-src 'sha256-P8konjutLDFcT0reFzasbgQ2OTEocAZB3vWTUbDiSjM=' 'sha256-eDP6HO9Yybh41tLimBrIRGHRqYoykeCv2OYpciXmqcY=' 'unsafe-eval'"> 防止篡改,但是这里可以将其改为unsafe-line, 删去哈希串,当然,因为长度的因素,这里需要将后面加空格 这样就可以绕过有关长度校验 当然,有点随笔的感觉,接着就是几个坑 这里沿用的大量特殊字符混淆视听,其实不是空格,而是Unicode 字符 \xef\xbe\xa0 这样就有很多可以迎刃而解了 const double = Function.call`window.stepᅠ*=ᅠ2`;ᅠ// To the debugger,ᅠthis isᅠinvisible 这一条就可以判断为扯淡了 看这里的算法 j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; 看看改原始step的逻辑, function instrument() { f = arguments[0]; // TODO: figure out how to get a runtime reference to the debugged function in this debug // condition context, so we can inspect it at runtime, in case it changes debug(f, "window.c && function perf(){ const l = `" + f + "`.length; window.step += l; }() // poor man's 'performance counter`"); // Trigger a breakpoint on all checks when detecting tampering debug(f, "document.documentElement.outerHTML.length !== 14347"); } function instrumentPrototype(o) { Object.entries(Object.getOwnPropertyDescriptors(o)) .filter(p => p[1].value instanceof Function) .forEach(p => Object.defineProperty(o, p[0], { get: () => (step++) && p[1].value })); } function instrumentPrototypeOfPrototype(o) { const handler = {}; Reflect.ownKeys(Reflect).forEach(h => handler[h] = (a,b,c) => (step++) && Reflect[h](a, b, c)); Object.setPrototypeOf(o, new Proxy(Object.getPrototypeOf(o), handler)); } [Array, Array.prototype, String.prototype, Math, console, Reflect].map(o => Object.values(Object.getOwnPropertyDescriptors(o)).map(x => x.value || x.get).filter(x => x instanceof Function) ).flat().concat(check, eval).forEach(instrument); instrumentPrototype(Array.prototype); instrumentPrototypeOfPrototype(Array.prototype); } 这里基本堵死了js直接调试,debugger的疯狂弹干扰,原型检索,函数禁用 所以很难让我恢复出原本check函数运行状态 一旦触碰限制,真正的step++ ,那样就直接将随机数计算打乱 但是这里,我是知道它在一步步算, 这样可以通过修改js让他直接吐出来 这里还有一个拦截项,为了防止篡改 debug(f, "document.documentElement.outerHTML.length !== 14347"); 这里可以改为 debug(f, "document.documentElement.outerHTML.length == 99999"); 这样就永为假,不会触发修改step 接下来只要修改吐flag即可 while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; if (flag[0] == pool[j % pool.length] && (window.step < 1000000)) { iᅠ= j; flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length&&!flag.length) window.success = true; } } 可以在中间加一段,因为我并未触发加step的机制,所以默认它给的flag字符都是正确的 while (!window.success) { j = ((iᅠ|| 1)* 16807 + window.step) % 2147483647; iᅠ= j; let split = pool[j % pool.length] answer += split flag.shift(); pool.splice(j % pool.length, 1); renderFrame(); double(); if (!pool.length){ console.log(answer) } if (!pool.length&&!flag.length) window.success = true; } 如此如此 1 个帖子 - 1 位参与者 阅读完整话题

IT之家 · 2026-06-06 17:39:53+08:00 · tech

IT之家 6 月 6 日消息,据 Wccftech 今日报道,英特尔下一代 Nova Lake 桌面处理器正在持续开发中。但根据 2026 台北国际电脑展上得到的消息,该系列处理器预计将延迟到 2027 年初发布。 该系列处理器预计将作为酷睿 Ultra 400 系列推出,带来全新的 CPU 核心架构、更高核心数量以及新一代平台特性。 结合此前爆料,Nova Lake 将采用全新的 Coyote Cove 性能核心和 Arctic Wolf 能效核心架构,同时集成 X e 3 与 X e 3P 图形架构。 与近几代桌面 CPU 类似,Nova Lake 将继续采用台积电(N2P)代工(MLID 曾透露 8 核入门级型号采用 18A 工艺,但最新爆料显示 6/8 核型号已被替换为 Wildcat Lake Refresh)。 在发布时间方面,英特尔曾承诺 Nova Lake 桌面处理器将在 2026 年下半年亮相。但根据 Wccftech 在 Computex 期间采访到的多位消息人士透露,英特尔当前目标已调整至 2027 年第一季度。 参考往年产品规划,新一代 Nova Lake 桌面处理器有望在 CES 2027 期间正式发布,并于数周后上市。 消息人士透露,首批上市产品将以单计算模块设计的 28 核型号为主,而采用双计算模块、最高达到 52 核的旗舰型号预计还需等待至少两至三个月,发布时间可能接近 2027 年台北国际电脑展。 如果这一时间表属实,Nova Lake 上市时间将与 AMD 下一代基于 Zen 6 架构的锐龙 Olympic Ridge 处理器接近。与英特尔更换 LGA 1954 插槽不同,新一代锐龙仍将继续兼容 AM5 平台,但最高规格仍为 24 核 48 线程。 超频性能方面,消息人士称英特尔已向 OEM 合作伙伴展示过名为“Multi-Core OC”的新功能。该功能允许用户对每个核心进行独立超频。初步测试结果表现良好,不过这一功能预计仅会在高核心数量的“-K”解锁版型号中提供支持。 Wccftech 表示,英特尔正加快将 SMT(同步多线程)技术重新引入桌面处理器产品线的计划。英特尔此前确认,英特尔下一代数据中心处理器 Coral Rapids 将重新支持 SMT,但相关产品预计要到 2028 年前后才会问世。根据 MLID 的爆料,消费级处理器最快也要等到 Hammer Lake 才会重新引入 SMT。 在性能提升的同时,Nova Lake 高端型号的功耗与发热也将进一步提升。消息称,52 核型号的 PL1 功耗设定将达到 175W,相比现有产品提高约 40%;PL2 功耗在 300~400W 区间,而 PL4 峰值功耗甚至可能超过 700W。很显然,该系列产品面向入门级工作站和内容创作市场,对标的是 AMD 入门级 Threadripper 平台。 为应对更高的散热需求,英特尔已开始为 LGA 1954 插槽开发双压杆(2L)集成固定机构(ILM)。与现有设计相比,新款处理器顶盖将更加平整,以改善热量从处理器顶盖向散热器传导的效率。 同时,多家厂商已经在 2026 台北国际电脑展期间展示下一代英特尔 900 系列平台产品。Wccftech 称其见到了三款 Z990 主板和两款 Z970 主板,其中部分产品已接近最终设计阶段,但厂商仍将其视为原型产品。 其中 Z990 主板采用双 8pin CPU 供电接口,并额外增加一个 8pin 接口为 PCIe 供电。厂商透露,该接口在必要情况下还可为处理器插槽提供额外供电支持。两款 Z970 主板中的一款采用标准 ATX 设计,而另一块则没有任何组件(只有 PCB 板)。 这些主板的提前亮相,表明英特尔已经开始与主板厂商共同推进 Nova Lake 平台验证工作,新平台的 BIOS 开发已经在进行中,DDR5 内存支持能力将进一步增强,同时还将引入雷电 5 接口。消息称,在部分 Z990 设计中,所有 M.2 插槽和 PCIe 插槽均将支持 PCIe 5.0 标准。 IT之家提醒,上述内容均来自 Wccftech 采访中得到的非官方信息,英特尔目前尚未正式公布 Nova Lake 系列处理器的具体规格、发布时间及平台细节。 相关阅读: 《 曝英特尔下代 Z970 芯片组将承接当前 B860 大部分市场定位 》 《 首个英特尔 LGA 1954 插槽实拍曝光:首发支持新一代 Nova Lake-S,预计将兼容三代处理器 》 《 英特尔四代 CPU 曝光:Hammer Lake 将引入 Thunder Hawk 统一核心,超线程技术重装上阵 》 《 英特尔第四代酷睿处理器爆料:Core 5/7 升级 "Wildcat Lake Refresh" 》 《 曝英特尔 6 核 Nova Lake 移动处理器被砍,Wildcat Lake Refresh 取而代之 》

IT之家 · 2026-06-05 09:29:04+08:00 · tech

IT之家 6 月 5 日消息,自华擎首款 Taichi(太极)硬件 X99 Taichi 面世已有 10 年时间,华擎 (ASRock) 也在 COMPUTEX 2026 台北国际电脑展上设立了 Taichi 十周年特别版产品展台。 上图左侧产品为最初的那款 X99 Taichi,右上方为 Z890 Taichi 10th Anniversary 主板;下方的则是 AMD Radeon RX 9070 XT Taichi 10th Anniversary 16GB OC 显卡,其规格与非纪念版一致,外观风格硬朗并集成十周年专属 ARGB 灯效。 下图则展示了 AMD 平台的 X870E Taichi 10th Anniversary 主板。 与上述主板、显卡出现在同一展台上的还有 Taichi 十周年纪念版的钛金电源和导入视觉暂留效应的 AIO 液冷。 此外,华擎还展示了其 为下代 Phantom Gaming(幻影电竞)系列显卡开发的散热器原型 。此次展示的样卡则基于 AMD Radeon RX 9070 XT。

IT之家 · 2026-06-03 20:30:48+08:00 · tech

IT之家 6 月 3 日消息,据 TechPowerUp,撼讯(PowerColor)在 Computex 2026 上展示了多款采用 UV 紫外感光背板的定制 AMD Radeon RX 9000 系列原型显卡。 这些显卡基于现有的 RX 9070 XT 红魔、RX 9070 XT 暗黑犬以及游荡者系列进行定制,主要区别在于显卡背板新增多款紫外光感应艺术涂装。 IT之家注意到,四款原型卡采用了风格迥异的设计方案。第一款原型卡背板设计为可在紫外光下呈现出樱花图案;第二款命名为“She Wears Red”,依托红魔系列打造,背板印有抽象异形纹样。 四款产品中最具视觉设计特点的是“Relics that Still Burn”原型卡,这款产品的背板表面直接蚀刻埃及象形文字,刻痕内部填充 UV 感光颜料,在紫外光线照射下能够呈现特殊视觉效果。 最后一款名为“The Architecture”的原型卡基于白色版暗黑犬打造,背板受紫外光照射后会完整显现 PCB 电路板纹路。

IT之家 · 2026-06-03 16:40:50+08:00 · tech

IT之家 6 月 3 日消息,消息人士 @白给的盖欧卡 今日曝光了技嘉 (GIGABYTE) 的 "DG2-512" 显卡散热器原型。 这意味着 这家板卡巨头曾有意成为英特尔的 AIC 合作伙伴 ,生产制造锐炫独立显卡。不过技嘉最终还是放弃了该计划,未曾发售过任何英特尔显卡,当前仅生产 NVIDIA 和 AMD 显卡。 ▲ 图源:@白给的盖欧卡 可以看到此次展示的两款散热器侧面均印有 "intel ARC" 字样,这证明了其是为英特尔锐炫显卡设计的。 ▲ 图源:@白给的盖欧卡 两款散热器模组均为三风扇设计,分别隶属 AORUS 和技嘉主品牌, 外观类似 GeForce 30 系列时期的技嘉 NVIDIA 显卡产品 。 ▲ 图源:@白给的盖欧卡

cnBeta全文版 · 2026-06-02 21:05:06+08:00 · tech

据知名爆料者“定焦数码”在微博发帖称,苹果首款折叠屏 iPhone 将采用创新的液态金属铰链设计,目前相关原型机已运往全球各大运营商进行网络与认证测试,整机研发和量产进程被形容为“正在快速推进”。这一说法出现在其昨日爆料之后——当时他透露,苹果折叠屏 iPhone 还将配备均热板散热方案。 液态金属铰链的消息,被视为对此前有关该机良率与生产难度争议的最新回应。另一位爆料者“瞬间数码”早前曾指出,折叠屏 iPhone 在高频开合测试中,铰链结构难以通过苹果的严格品控,是量产受阻的主要原因。对此,“定焦数码”曾公开表示异议,认为铰链并非制造难点所在,而其最新表态更是将液态金属铰链描述为已经基本定型并通过验证的设计要素。 液态金属是一种非晶态金属合金,相比传统金属拥有更高的强度重量比,同时具备出色的抗腐蚀和耐磨性能。苹果此前已在有限场景中使用过液态金属,例如 iPhone 随机附带的 SIM 卡针以及部分内部小型部件,但若将该材料用于承受长期机械应力的折叠铰链,则属于更高难度的结构性应用。考虑到折叠屏 iPhone 在整个生命周期内预计要承受数十万次折叠开合,这对铰链材料的疲劳强度和耐久性提出了极高要求,液态金属在理论上有望比传统合金更适合这类工况。 苹果与液态金属之间的渊源可追溯至十余年前。早在 2010 年,苹果就与 Liquidmetal Technologies 签订独家授权协议,获得在消费电子产品中使用该材料的全球永久授权。不过此后多年间,液态金属基本仅被用于 SIM 卡针等小型部件,大尺寸结构件迟迟未能落地,被认为与材料在量产规模、成型工艺和成本控制方面的难度有关。尽管如此,苹果持续续签相关授权,且在多份专利文件中不断提及将液态金属用于铰链以及其他运动部件的设想。 供应链分析师郭明錤曾在 2025 年 3 月首次披露,折叠屏 iPhone 的铰链将采用液态金属,并点名东莞爱恩特科为该合金的独家供应商。随后在 2026 年 1 月,有供应链报告进一步佐证了苹果采用液态金属铰链的计划。不过今年 4 月,“定焦数码”一度对这一材料选择表示出怀疑,称苹果仍在液态金属与 3D 打印钛合金之间权衡,暗示铰链材料方案在当时仍未完全定稿。在最新爆料中,他则重新强调液态金属方案已基本坐实,释放出路线收敛的信号。 此次“原型机已发往全球运营商测试”的说法,被业界视为产品迈入上市前后期阶段的重要里程碑。按照惯例,设备在这一阶段会接受不同运营商网络环境下的兼容性测试及入网认证,通常意味着硬件设计已接近最终量产版本。此前《电子时报》在 4 月报道称,苹果计划于 7 月启动折叠屏 iPhone 的量产,而彭博社记者 Mark Gurman 则表示,该机仍有望与 iPhone 18 Pro 和 iPhone 18 Pro Max 一同在 9 月发布,但当时他也提醒相关时间表仍存在一定不确定性。 在具体规格方面,苹果折叠屏 iPhone 预计将配备 7.8 英寸内屏与 5.5 英寸外屏,搭载 A20 芯片与 C2 基带,并在生物识别方案上采用 Touch ID 以取代 Face ID。后置摄像头组合为两枚镜头,整体定位接近高端旗舰,但在生物识别和相机数量上与目前直板旗舰有所区分。价格方面,传闻该机起售价约为 2000 美元,反映出其面向高端、甚至超高端市场的产品策略。 查看评论

IT之家 · 2026-06-02 14:01:10+08:00 · tech

IT之家 6 月 2 日消息,消息源 @DuvalMagic 昨日(6 月 1 日)在 X 平台发布推文,分享了一组照片, 展示了谷歌 Pixel Watch 5 智能手表原型。 本次原型曝光多少存在魔幻色彩,并非熟悉的酒吧、eBay 等常规渠道, 而是一位潜水员在加勒比海圣马丁岛附近的水下发现的。 IT之家援引科技媒体 Android Police 指出,@DuvalMagic 是 Randy Pitchford 的网络名称,他曾任 Gearbox Software(游戏公司)CEO。 若只是为吸引关注,选择爆料 Pixel Watch 5 这种相对小众的产品并不典型,伪造低调照片也显得费力。 在 AI(人工智能)时代,所有泄露都该更谨慎看待,但照片里的手表普通、低调,反而带来少量可信度。

IT之家 · 2026-06-02 10:59:05+08:00 · tech

IT之家 6 月 2 日消息,据英国《金融时报》报道,腾讯即将为微信推出内嵌式人工智能智能体。微信是国内全民普及的超级应用,14 亿用户日常的社交聊天、出行打车、生活支付等各类需求都依托该软件完成。 据两位了解该计划的知情人士透露,腾讯目前正在测试这款智能体的原型,其可帮助用户在微信内完成各类操作;公司计划最快于本月启动上线前所需的合规审批流程。 合规审核完成后,腾讯将先面向小范围外部用户开展灰度测试,再分阶段逐步全量推广。目前尚未确定正式上线日期,原因是合规审批所需时长存在不确定性。 一位看过产品早期演示的人士表示, 用户只需在微信主界面向右滑动,即可调出这款 AI 智能体的对话窗口。 用户输入指令后,智能体可自动调用微信海量小程序(微信多元化功能的核心载体)完成各类任务,比如根据特定的口味和价格要求找到一家咖啡馆并点单。 这款 AI 智能体若成功落地这款国民级应用,有望助力腾讯实现弯道超车,赶超国内同行竞品。目前国内不少互联网企业已研发出实力更强的大模型,并已在自家平台落地 AI 智能体功能。 阿里巴巴已将电商、旅行、地图服务整合接入千问 AI 应用;字节跳动也为豆包 App 上线了网购等智能体服务功能。 知情人士称,尽管豆包、千问的月活用户规模远不及微信的 14 亿,但用户增速迅猛,倒逼腾讯加快推出自研 AI 智能体。目前微信中已内嵌腾讯具备搜索功能的聊天机器人元宝。 一位知情人士表示, 腾讯已将这款 AI 智能体的落地推广列为最高战略优先级 。公司管理层力求打磨好产品每一处细节,这也意味着正式上线前或将经历长时间测试与多轮迭代优化。 该人士透露,虽然当前原型产品已能流畅完成各类任务,但大规模全量上线仍面临算力供给不足的难题。该业内人士表示:“在美国出台芯片出口禁令前,腾讯布局保守,没有足量囤货英伟达芯片,而目前国内自研芯片的产能供应依旧紧张。” 腾讯内部初步预估,微信全量上线 AI 智能体的成本投入极高,且短期内能否创造足够营收覆盖投入成本,目前仍不明朗。 微信自 2011 年以即时通讯工具面世以来,不断发展迭代,如今已深度融入国人日常生活方方面面,成为不可或缺的超级平台。 企业与政府机构均可入驻搭建微信小程序,用户“足不出 App”就能点外卖、缴纳生活费用、预约挂号问诊,日常各类生活交易几乎无需跳出微信。 与此同时,腾讯也得以沉淀十亿级微信用户海量的行为数据。 腾讯总裁刘炽平在上月的分析师财报电话会议中表示:“除基础大模型外,具备自主执行能力的 AI 智能体已显现出突破性应用价值。微信平台天然具备承载 AI 智能体的多重优势。” 截至IT之家发稿,腾讯股价大涨 7.7%。

cnBeta全文版 · 2026-06-01 22:05:10+08:00 · tech

据《商业内幕》报道,电影《大空头》原型人物迈克尔·伯里(Michael Burry)表示,他对SpaceX和Anthropic的高估值存有重大疑虑。 伯里 伯里近日在内容平台Substack的讨论帖中质疑了马斯克旗下SpaceX,以及热门AI模型Claude开发商Anthropic的真实价值,认为SpaceX提交的招股书无法证明该公司值1万亿美元。 “任何股价上涨都将建立在市场炒作和技术面因素之上。SpaceX提交的那份S-1文件里,没有任何内容能证明它值1万亿美元,更不用说2万亿美元了。” 伯里在上周六发起的一场订阅用户聊天中谈到SpaceX股票时写道。 SpaceX在5月20日提交的S-1招股书显示,该公司去年实现收入187亿美元,并录得净亏损49亿美元。彭博社此前报道称,SpaceX曾将目标估值设定为2万亿美元,但现在降至了1.8万亿美元。 另外,Anthropic在上周四宣布,已经以9650亿美元估值完成了一轮融资。该公司在未来上市时可能会获得更高估值。 但是,伯里对于Anthropic的估值也提出了质疑。“Anthropic最终长期价值能够接近1万亿美元这件事没有任何保证,甚至连很有可能都谈不上。”他表示。 查看评论

IT之家 · 2026-05-28 17:09:34+08:00 · tech

IT之家 5 月 28 日消息,索泰 (ZOTAC) 今日正式确认,其此前公布的 20 周年限定版本属于钛金配色家族,并为该系列添加了一位重磅成员: 采用分体式水冷散热的 GeForce RTX 5080 显卡原型产品 。 这一原型卡为拥有独特设计的旗舰等级产品,拥有专为喜欢自行设计液冷循环的 DIY 爱好者打造的水冷头设计,可实现最大性能和极致美学。 索泰还将在 COMPUTEX 2026 上首次展出 全球最小的内置桌面级 GeForce RTX 5080 显卡的整机 —— MAGNUS ONE ULTRA EU275080C。其在集成 MAGNUS ONE 经典前脸的同时提供了强劲性能面向追求完美、要求最高品质的爱好者。