diff --git a/pywxdump/ui/web/assets/AboutView-kYVs5JEG.js b/pywxdump/ui/web/assets/AboutView-kYVs5JEG.js new file mode 100644 index 00000000..f1fe4150 --- /dev/null +++ b/pywxdump/ui/web/assets/AboutView-kYVs5JEG.js @@ -0,0 +1,24 @@ +import{_ as l,a as i,b as m,c as r,e as t,f as a,g as s,m as e,h as o}from"./index-jRSp3SF2.js";const u=""+new URL("qq-iQ8jIM6k.png",import.meta.url).href,c=""+new URL("qrcode_gh-wCDAugtE.jpg",import.meta.url).href,d={},y={class:"about"},n={id:"-center-pywxdump-center-"},x=e('
FAQ
。 逍遥之芯
(右边二维码) ,回复:PyWxDump
获取图文教程。 qq交流群:577704006(左边二维码) or 点击链接加入群聊pywxdump功能交流。
(因为qq群将满,所以进群需要密码,密码请查看UserGuide.md)
PyWxDump是一款用于获取账号信息(昵称/账号/手机/邮箱/数据库密钥) 、解密数据库、查看聊天记录、备份导出聊天记录为html的工具。
',11),g=t("a",{href:"https://github.com/xaoyaoo/PyWxDump/"},[t("img",{src:"https://img.shields.io/github/stars/xaoyaoo/PyWxDump.svg?style=social&label=Star",alt:"Star"})],-1),b=e(`利用场景
PyWxDump是SharpWxDump 的经过重构python语言版本,同时添加了一些新的功能。
详细使用说明见UserGuide.md
极简版使用说明pywxdumpmini
【注】:
wxdump bias
命令代替,现仅用作学习原理) 本项目仅供学习交流使用,请勿用于非法用途,否则后果自负。
您应该在下载保存,编译使用本项目的24小时内,删除本项目的源代码和(编译出的)程序。
本项目仅允许在授权情况下对数据库进行备份,严禁用于非法目的,否则自行承担所有相关责任。
下载、保存、进一步浏览源代码或者下载安装、编译使用本程序,表示你同意本警告,并承诺遵守它;
请勿利用本项目的相关技术从事非法测试,如因此产生的一切不良后果与项目作者无关。
MIT License
+
+Copyright (c) 2023 xaoyaoo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+PyWxDump is hosted at: https://github.com/xaoyaoo/PyWxDump
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
`,23);function f(D,w){const p=i("center"),h=i("big");return m(),r("div",y,[t("h1",n,[a(p,null,{default:s(()=>[o("PyWxDump")]),_:1})]),x,t("ul",null,[t("li",null,[t("strong",null,[a(h,null,{default:s(()=>[o(" 超级想要star,走过路过,帮忙点个"),g,o(" 呗,谢谢啦~")]),_:1})])])]),b])}const W=l(d,[["render",f]]);export{W as default};
diff --git a/pywxdump/ui/web/assets/BiasView-JYvOIZ-h.js b/pywxdump/ui/web/assets/BiasView-JYvOIZ-h.js
new file mode 100644
index 00000000..bf00917c
--- /dev/null
+++ b/pywxdump/ui/web/assets/BiasView-JYvOIZ-h.js
@@ -0,0 +1 @@
+import{_ as o,b as s,c,e,h as t}from"./index-jRSp3SF2.js";const a={},n={style:{"background-color":"#d2d2fa",height:"100vh",display:"grid","place-items":"center"}},r=e("h2",{style:{"text-align":"center"}},[t("欢迎使用"),e("a",{href:"https://github.com/xaoyaoo/PyWxDump.git"},"PyWxDump"),t("聊天记录查看工具! ")],-1),i=e("p",null,"如需提前体验更多功能,请开通超级vip",-1),_=[r,i];function d(h,l){return s(),c("div",n,_)}const f=o(a,[["render",d]]);export{f as default};
diff --git a/pywxdump/ui/web/assets/ChatView-jPL_n3Jb.js b/pywxdump/ui/web/assets/ChatView-jPL_n3Jb.js
new file mode 100644
index 00000000..449848af
--- /dev/null
+++ b/pywxdump/ui/web/assets/ChatView-jPL_n3Jb.js
@@ -0,0 +1,5 @@
+import{d as B,r as v,o as Q,a as O,b as E,c as g,e as w,f as S,w as tt,g as A,h as H,t as P,i as ae,F as ce,j as I,_ as z,k as nt,l as Ee,n as Pe,H as rt}from"./index-jRSp3SF2.js";function De(e,t){return function(){return e.apply(t,arguments)}}const{toString:st}=Object.prototype,{getPrototypeOf:pe}=Object,Z=(e=>t=>{const n=st.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),D=e=>(e=e.toLowerCase(),t=>Z(t)===e),Y=e=>t=>typeof t===e,{isArray:$}=Array,q=Y("undefined");function ot(e){return e!==null&&!q(e)&&e.constructor!==null&&!q(e.constructor)&&C(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ue=D("ArrayBuffer");function it(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ue(e.buffer),t}const at=Y("string"),C=Y("function"),Fe=Y("number"),ee=e=>e!==null&&typeof e=="object",ct=e=>e===!0||e===!1,W=e=>{if(Z(e)!=="object")return!1;const t=pe(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},lt=D("Date"),ut=D("File"),dt=D("Blob"),ft=D("FileList"),ht=e=>ee(e)&&C(e.pipe),pt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||C(e.append)&&((t=Z(e))==="formdata"||t==="object"&&C(e.toString)&&e.toString()==="[object FormData]"))},mt=D("URLSearchParams"),yt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function V(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),$(e))for(r=0,s=e.length;r方法一:进入链接releases下载最新版本exe文件
方法二:(本地安装有python环境)使用pip安装
pip install PyWxDump
+
./wxdump.exe
,按回车键(pip安装输入wxdump
)提交拉取请求(Pull Request),请按照以下步骤进行操作:
Clone or download
按钮,获取仓库的 URL。然后在本地使用 Git 命令克隆仓库到你的电脑上:git clone 仓库的URL
git checkout -b 你的分支名
git add
和 git commit
命令将修改提交到本地仓库中: git add .
+git commit -m "提交信息"
+
git push
命令将你的本地分支推送到你的 GitHub 仓库中:git push origin 你的分支名
Create pull request
按钮,即可提交拉取请求。 contributors
中看到你的名字了。wxdump.exe info
,而不是info
info
,回车键确认decrypted
文件夹里面的内容是解密后的数据库,对应的是微信数据库目录下的文件(都是相对路径)Multi
目录下的是微信数据目录下Msg
下Multi
内的数据库解密后的相对路径decrypted
根目录下的MicroMsg
是微信数据目录下Msg
下MicroMsg
的数据库解密后的相对路径 Multi
目录下的MSG0
-MSG5
是微信数据目录下Msg
下Multi
内的数据库解密后的相对路径 Multi
目录下的de_MediaMsg0
~de_MediaMsg5
是微信数据目录下Msg
下Multi
内的MediaMsg0
的数据库解密后的相对路径 MSG0
~MSG5
是微信聊天记录不同时间段下的数据库,MSG0
是最旧的,MSG5
是最新的 MediaMsg0
~MediaMsg5
是微信聊天记录不同时间段下的数据库,MediaMsg0
是最旧的,MediaMsg5
是最新的 MSG5
和MediaMsg5
,如果想看最旧的聊天记录,就选择MSG0
和MediaMsg0
,如果想看中间的聊天记录,就选择MSG1
~MSG4
和MediaMsg1
~MediaMsg4
使用命令wxdump.exe merge
,然后根据提示输入参数,回车键确认。 eg:wxdump.exe merge -i "C:\\Users\\user\\Desktop\\decrypted\\MSG0.db,C:\\Users\\user\\Desktop\\decrypted\\MSG1.db,C:\\Users\\user\\Desktop\\decrypted\\MSG2.db" -o "C:\\Users\\user\\Desktop\\decrypted\\merge.db"
相信你看到这里,已经可以自己解决所有问题了。
如果实在还有疑问,更加建议提交issues。
如果还是想添加qq群,那么关注公众号:逍遥之芯
,回复qq群密码
即可获取qq群密码。(因为qq群又快满了,群主又没钱买vip,所以只能这样了)
不可以,只能看到有密钥的数据库的聊天记录,如果你有别人的密钥,那么可以查看别人的聊天记录。
不能,必须登录微信才能获取到密钥。 但是可以保存密钥,下次再次使用时候,不需要登录即可。
`,48),t=[s];function p(h,u){return o(),i("div",c,t)}const r=e(l,[["render",p]]);export{r as default}; diff --git a/pywxdump/ui/web/assets/MergeView-2Qa3Wr8S.js b/pywxdump/ui/web/assets/MergeView-2Qa3Wr8S.js new file mode 100644 index 00000000..0f7f028c --- /dev/null +++ b/pywxdump/ui/web/assets/MergeView-2Qa3Wr8S.js @@ -0,0 +1 @@ +import{_ as o,b as c,c as s,e,h as t}from"./index-jRSp3SF2.js";const a={},r={style:{"background-color":"#d2d2fa",height:"100vh",display:"grid","place-items":"center"}},n=e("h2",{style:{"text-align":"center"}},[t("欢迎使用"),e("a",{href:"https://github.com/xaoyaoo/PyWxDump.git"},"PyWxDump"),t("聊天记录查看工具! ")],-1),i=e("p",null,"如需提前体验更多功能,请开通超级vip",-1),_=[n,i];function d(h,l){return c(),s("div",r,_)}const f=o(a,[["render",d]]);export{f as default}; diff --git a/pywxdump/ui/web/assets/StatisticsView-Yth5IqVq.js b/pywxdump/ui/web/assets/StatisticsView-Yth5IqVq.js new file mode 100644 index 00000000..8d5a9fbd --- /dev/null +++ b/pywxdump/ui/web/assets/StatisticsView-Yth5IqVq.js @@ -0,0 +1 @@ +import{_ as o,b as s,c,e,h as t}from"./index-jRSp3SF2.js";const a={},i={style:{"background-color":"#d2d2fa",height:"100vh",display:"grid","place-items":"center"}},n=e("h2",{style:{"text-align":"center"}},[t("欢迎使用"),e("a",{href:"https://github.com/xaoyaoo/PyWxDump.git"},"PyWxDump"),t("聊天记录查看工具! ")],-1),r=e("p",null,"如需提前体验更多功能,请开通超级vip",-1),_=[n,r];function d(h,l){return s(),c("div",i,_)}const f=o(a,[["render",d]]);export{f as default}; diff --git a/pywxdump/ui/web/assets/WxinfoView-7B-uuO4n.js b/pywxdump/ui/web/assets/WxinfoView-7B-uuO4n.js new file mode 100644 index 00000000..ced82d7a --- /dev/null +++ b/pywxdump/ui/web/assets/WxinfoView-7B-uuO4n.js @@ -0,0 +1 @@ +import{_ as o,b as c,c as s,e,h as t}from"./index-jRSp3SF2.js";const a={},n={style:{"background-color":"#d2d2fa",height:"100vh",display:"grid","place-items":"center"}},r=e("h2",{style:{"text-align":"center"}},[t("欢迎使用"),e("a",{href:"https://github.com/xaoyaoo/PyWxDump.git"},"PyWxDump"),t("聊天记录查看工具! ")],-1),i=e("p",null,"如需提前体验更多功能,请开通超级vip",-1),_=[r,i];function d(h,l){return c(),s("div",n,_)}const f=o(a,[["render",d]]);export{f as default}; diff --git a/pywxdump/ui/web/assets/index-jRSp3SF2.js b/pywxdump/ui/web/assets/index-jRSp3SF2.js new file mode 100644 index 00000000..e2cb3edf --- /dev/null +++ b/pywxdump/ui/web/assets/index-jRSp3SF2.js @@ -0,0 +1,60 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const r of l)if(r.type==="childList")for(const a of r.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(l){const r={};return l.integrity&&(r.integrity=l.integrity),l.referrerPolicy&&(r.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?r.credentials="include":l.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(l){if(l.ep)return;l.ep=!0;const r=n(l);fetch(l.href,r)}})();function kf(e,t){const n=new Set(e.split(","));return t?o=>n.has(o.toLowerCase()):o=>n.has(o)}const Wt={},Fr=[],$t=()=>{},HC=()=>!1,$u=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),_f=e=>e.startsWith("onUpdate:"),Qt=Object.assign,Ef=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zC=Object.prototype.hasOwnProperty,gt=(e,t)=>zC.call(e,t),De=Array.isArray,Hr=e=>Ns(e)==="[object Map]",Tu=e=>Ns(e)==="[object Set]",dr=e=>Ns(e)==="[object Date]",Xe=e=>typeof e=="function",Qe=e=>typeof e=="string",_l=e=>typeof e=="symbol",it=e=>e!==null&&typeof e=="object",Qa=e=>(it(e)||Xe(e))&&Xe(e.then)&&Xe(e.catch),v0=Object.prototype.toString,Ns=e=>v0.call(e),wi=e=>Ns(e).slice(8,-1),Zi=e=>Ns(e)==="[object Object]",$f=e=>Qe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ci=kf(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ou=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},KC=/-(\w)/g,Zn=Ou(e=>e.replace(KC,(t,n)=>n?n.toUpperCase():"")),WC=/\B([A-Z])/g,Nl=Ou(e=>e.replace(WC,"-$1").toLowerCase()),Ps=Ou(e=>e.charAt(0).toUpperCase()+e.slice(1)),Si=Ou(e=>e?`on${Ps(e)}`:""),El=(e,t)=>!Object.is(e,t),ki=(e,t)=>{for(let n=0;nUz(e,n,t),getStopIndexForStartIndex:(e,t,n,o)=>{const{height:l,total:r,layout:a,width:i}=e,u=$s(a)?i:l,c=Vr(e,t,o),f=n+u;let d=c.offset+c.size,p=t;for(;p {const o=zo(e,t,n,"column");return[o.size,o.offset]},getRowPosition:(e,t,n)=>{const o=zo(e,t,n,"row");return[o.size,o.offset]},getColumnOffset:(e,t,n,o,l,r)=>Vg(e,t,n,o,l,"column",r),getRowOffset:(e,t,n,o,l,r)=>Vg(e,t,n,o,l,"row",r),getColumnStartIndexForOffset:(e,t,n)=>Bg(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,o)=>{const l=zo(e,t,o,"column"),r=n+e.width;let a=l.offset+l.size,i=t;for(;i