ParrotTalks抄筆記

ParrotTalks抄筆記

ID: kkodiihpgodmdankclfibbiphjkfdenh

Supported Languages

🇨🇳Chinese (Simplified)
🇹🇼Chinese (Traditional)

Extension Info & Metadata

Status
Active
Version
1.16.0
Size
1.93 MB
Rating
4.4/5
Reviews
336
Users
30,000
Type
Extension
Updated
Jul 1, 2026
Category
Workflow & planning
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
https://parrottalks.com/View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
Yes
Mailbox exists
Yes
Website
Visit
Total Extensions
1
Active
1
Obsolete
0
Listed
1
Unlisted
0
Total Users
30,000
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5

一點即查,無需複製、貼上、另闢查詢網頁 - 給你更流暢的閱讀體驗。

----- 與抄筆記有關的重要小事 ❤ ----- ➤ 經實際測試,查一個單字快 400 倍 ➤ 有效促進大量閱讀(歡迎自行嘗試) ➤ 也支援看 PDF 檔案 - 網友們叫它:論文神器 ----- 為什麼抄筆記? ----- 單字連同文本原句 作成專屬你的筆記 然後 用腦科學記憶法複習 這是一套 不可分開的流程 帶你走向 抄筆記美好未來 因為 單字默默記住 就再也不用查了 ----- 預設快速鍵 ----- e ─ 啟用「抄筆記」/ 快速查詢選取範圍 r ─ 單字發音 R ─ 句子發音 z ─ 啟用/關閉 功能:「斷開超連結功能」 q ─ 切換「抄筆記」視窗大小 esc ─ 關閉「抄筆記」 w ─ 「抄筆記」視窗上移 s ─ 「抄筆記」視窗下移 a ─ 「抄筆記」視窗左移 d ─ 「抄筆記」視窗右移 ----- 版本記錄 ----- 1.16.6 - 後台程式最佳化 1.16.5 - 重新上架 - 查詢介面邊緣顯示微調 1.16.1 - 修正無法啟動的錯誤 (Manifest v3 相關) 1.16.0 - 更新支援 Manifest v3 1.15.3 - 改進翻譯流暢度 1.15.2 - 修正部分UI顯示 1.15.1 - 修正 Chrome 76 後在 Windows 下 PDF 無法開啟 - 修正部分UI顯示 1.15.0 - 查詢速度增強

Item
Type
Severity
Description
webRequest
Permission
Critical
This permission enables the extension to monitor and analyze all web requests made by the browser. Rated Critical because it can observe all network traffic including sensitive data, track browsing behavior, and gather authentication tokens.
scripting
Permission
Critical
This permission allows injection and execution of JavaScript on any webpage. Rated Critical because it can modify page content, steal sensitive data, and inject malicious code into any site the extension has access to.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
webNavigation
Permission
High
This permission enables monitoring of all browser navigation events and transitions. Rated High because it can track every page visit, navigation method, and browsing pattern, potentially exposing sensitive browsing behavior and user activities.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation• 25% increase: Unsafe code evaluation capabilities increase attack surface
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
Broad Content Script Access
Risk Factor
High
This extension can inject scripts into any website.
Unsafe WebAssembly Execution
Risk Factor
High
This extension's CSP allows "wasm-unsafe-eval".
tabs
Permission
Medium
This permission enables tab management and monitoring. Rated Medium because it can track open tabs, access tab metadata, and monitor user browsing patterns.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
unlimitedStorage
Permission
Medium
This permission removes storage quota restrictions. Rated Medium because it can store large amounts of user data without limits, potentially impacting browser performance and storing extensive tracking data.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.
contextMenus
Permission
Low
This permission adds items to browser context menus. Rated Medium because it only modifies right-click menus without access to page content.
tts
Permission
Low
This permission enables text-to-speech functionality. Rated Low because it can only convert visible text to speech without accessing sensitive data.
alarms
Permission
Low
This permission schedules periodic tasks. Rated Low because it can only trigger events at specified times without access to sensitive data.
fileBrowserHandler
Permission
Low
This permission handles selected files through the browser. Rated Low because it only processes files explicitly selected by the user through Chrome's file browser.

The extension fetches JavaScript from https://www.parrottalks.com/js/calc-gttk.js (PTNT.URL_CALC_GTTK) and executes it with eval(), replacing the PTNT.calcGTTk function. A chrome.alarms job re-runs this every 10 minutes (line 10666), so the developer's server can push arbitrary code into 30,000 installations at any time. This is classic remote code loading and violates Chrome Web Store policy.

js/background.js (Line 10728)
}, updateCalcGTTk = function() {  var success;  return success = function(code) {    var e, oldFn;    if (oldFn = PTNT.calcGTTk, code) try {      return PTNT.calcGTTk = eval(code)    } catch (_error) {      return e = _error, PTNT.calcGTTk = oldFn    }  }, UTIL.xhrGet(PTNT.URL_CALC_GTTK, success)}, updateCalcGTTk(),

The Google Translate response body (from https://translate.google.com/translate_a/single) is passed directly to eval() as JavaScript. Any MITM, DNS hijack, or malicious proxy that tampers with that response achieves arbitrary code execution in the extension's service-worker context with full <all_urls> privileges.

js/background.js (Line 10703)
success = function(data, status) {var e;try {  data = eval(data)} catch (_error) {  e = _error, data = null}return _cache[key] = UTIL.extend(!0, {}, data), dfd.resolve(data)}, error = function(a, b) {return dfd.reject([a, b])}, UTIL.xhrGet(get_url, success, error), dfd.promise)

The raw response body from the Google Scribe dictionary endpoint (https://www.googleapis.com/scribe/v1/research?...) is eval()'d as JavaScript. Because the API key is hard-coded client-side and the response is eval'd without parsing, any response tampering becomes code execution in the background context.

js/background.js (Line 10645)
success = function(res) {  var data, e;  data = res.data;  try {    data = eval(data)  } catch (_error) {    e = _error, data = null  }  return _cache[key] = UTIL.extend(!0, {}, data), data}

The POS tagger scrapes HTML from the unencrypted endpoint http://nlp.stanford.edu:8080/corenlp/process, pulls text between <pre>...</pre>, and feeds it into window.eval(). Cleartext HTTP plus eval() of third-party-controlled text is a trivial remote code execution vector for anyone who can MITM the connection.

js/background.js (Line 10761)
return c = pDefer(), d = "http://nlp.stanford.edu:8080/corenlp/process", b = {    outputFormat: "json",    input: a,    Process: "Submit"  }, UTIL.xhrPost(d, b, null, null, {    timeout: 3e3  })  .then(function(b) {      var c, d, e, f, g;      return d = b.data, g = d.substr(d.search("<pre>")), g = g.substring(0, g.search("</pre>") + 6), c = $(g),        e = a, window.eval("var __buf = " + c.text()), f = __buf, {

The background service worker exposes an ACTION_BG_XHR RPC that performs arbitrary cross-origin XHR (any URL, any method, any body) and returns the full response to the caller. The content script installed.js (injected on parrottalks.com and localhost) relays this via window.postMessage, letting any JavaScript on parrottalks.com bypass the same-origin policy through the extension's <all_urls> privilege. No URL allowlist, no origin check.

js/background.js (Line 11303)
case PTNT.ACTION_BG_XHR:  return p = function(a, b, d) {    c({        success: !0,        status: b,        data: a,        headers: d      }),      chrome.runtime.lastError  }, f = function(a, b, d) {    c({        status: b,        data: a,        headers: d      }),      chrome.runtime.lastError  }, UTIL.xhr(a.url, a.method, a.body, p, f, a.options), !0;

Uses a webRequest blocking redirect to encode the current frameId into a synthetic GIF, then calls b.eval(e) inside each subframe to run an arbitrary script string. This is a DOM-injection technique that effectively re-implements tabs.executeScript in subframes, bypassing the documented script-injection APIs, and runs caller-supplied JavaScript strings in any http/https/file frame the page contains.

js/background.js (Line 11560)
chrome.webRequest.onBeforeRequest.addListener(function(a) {    var b = a.frameId + 1,      c = String.fromCharCode(255 & b, b >> 8 & 255),      d = String.fromCharCode((b >> 16) + 1, 0),      e = "data:image/gif;base64," + btoa("GIF89a" + c + d + "\0\xff\0,\0\0\0\0" + c + d + "\0D\0;");    return {      redirectUrl: e    }  }, {    urls: [b + "*"],    types: ["image"]  }, ["blocking"]),  ...  try {    a = b.eval(e)  } finally {    ...  }

This content script (injected on *.parrottalks.com and localhost) accepts any window.postMessage with message === PAGE_MESSAGE_XHR_REQUEST and proxies it to the background ACTION_BG_XHR handler, which performs cross-origin XHR with <all_urls> privileges. No origin/source verification on the message. Any script that can execute on parrottalks.com (including a compromised third-party tag or XSS) can issue authenticated fetches to any domain through the extension.

content/installed.js (Line 90)
window.addEventListener("message", function(k) {  var l;  try {    l = JSON.parse(k.data)  } catch (m) {}  if (l && l.message) switch (l.message) {    ...    case PTNT.PAGE_MESSAGE_XHR_REQUEST:      h(l);      break;      ...  }}, !1)

By severity

Critical1
High3
Medium3
Low0

Versions scanned

Showing 1 of 7 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
1.16.07

Files with findings

2 distinct paths — top paths by unique finding count:

  • js/background.js6
  • content/installed.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Remote Code Loading
critical
js/background.js (line 10728)The extension fetches JavaScript from https://www.parrottalks.com/js/calc-gttk.js (PTNT.URL_CALC_GTTK) and executes it with eval(), replacing the PTNT.calcGTTk function. A chrome.alarms job re-runs this every 10 minut…
2Code Injection
high
js/background.js (line 10703)The Google Translate response body (from https://translate.google.com/translate_a/single) is passed directly to eval() as JavaScript. Any MITM, DNS hijack, or malicious proxy that tampers with that response achieves a…
3Code Injection
high
js/background.js (line 10645)The raw response body from the Google Scribe dictionary endpoint (https://www.googleapis.com/scribe/v1/research?...) is eval()'d as JavaScript. Because the API key is hard-coded client-side and the response is eval'd …
4Code Injection
high
js/background.js (line 10761)The POS tagger scrapes HTML from the unencrypted endpoint http://nlp.stanford.edu:8080/corenlp/process, pulls text between <pre>...</pre>, and feeds it into window.eval(). Cleartext HTTP plus eval() of third-party-con…
5Code Injection
medium
js/background.js (line 11560)Uses a webRequest blocking redirect to encode the current frameId into a synthetic GIF, then calls b.eval(e) inside each subframe to run an arbitrary script string. This is a DOM-injection technique that effectively r…
6Privilege Escalation
medium
js/background.js (line 11303)The background service worker exposes an ACTION_BG_XHR RPC that performs arbitrary cross-origin XHR (any URL, any method, any body) and returns the full response to the caller. The content script installed.js (injecte…
7Privilege Escalation
medium
content/installed.js (line 90)This content script (injected on *.parrottalks.com and localhost) accepts any window.postMessage with message === PAGE_MESSAGE_XHR_REQUEST and proxies it to the background ACTION_BG_XHR handler, which performs cross-o…
URLs
257
IPv4
1
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
*/*http://*/*
*/*https://*/*
www.apache.org/licenses/LICENSE-2.0http://www.apache.org/licenses/LICENSE-2.0
crbug.com/104058http://crbug.com/104058
crbug.com/302548http://crbug.com/302548
example.com-http://example.com/?feature-detect-
github.com/Rob--W/chrome-api/chrome.tabs.executeScriptInFramehttps://github.com/Rob--W/chrome-api/chrome.tabs.executeScriptInFrame
crbug.com/245296http://crbug.com/245296
crbug.com/273589http://crbug.com/273589
Showing 1 to 10 of 260 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

15.4.4.18
IPv4
-
Showing 1 to 7 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.