Merge branch 'master' of github.com:AliasIO/Wappalyzer

main
Elbert Alias 9 years ago
commit 7e6a65dcd7

6
.gitignore vendored

@ -1,4 +1,3 @@
.vagrant .vagrant
build/* build/*
@ -6,6 +5,11 @@ build/*
drivers/npm/node_modules drivers/npm/node_modules
drivers/npm/npm-debug.log drivers/npm/npm-debug.log
node_modules/
Thumbs.db Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
!.gitkeep !.gitkeep

@ -1,16 +1,13 @@
language: node_js language: node_js
node_js: node_js:
- "0.10" - "0.12"
sudo: required sudo: false
before_install: before_install:
- export WAPPALYZER_ROOT=$TRAVIS_BUILD_DIR - export WAPPALYZER_ROOT=$TRAVIS_BUILD_DIR
- export WAPPALYZER_NODE_PATH=$TRAVIS_BUILD_DIR - export WAPPALYZER_NODE_PATH=$TRAVIS_BUILD_DIR
- export PATH=$PATH:$TRAVIS_BUILD_DIR/bin - export PATH=$PATH:$TRAVIS_BUILD_DIR/bin
install: install:
- sudo apt-get update -y - npm install jsonlint jpm imagemin-cli -g
- sudo apt-get install -y curl zip sudo -y --force-yes
- sudo apt-get clean
- npm install jsonlint jpm -g
- ln -s docker/node/package.json package.json && npm install - ln -s docker/node/package.json package.json && npm install
- mkdir phantomjs && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar xvjC phantomjs && ln -s $WAPPALYZER_ROOT/phantomjs/phantomjs-*-linux-x86_64/bin/phantomjs bin/phantomjs - mkdir phantomjs && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar xvjC phantomjs && ln -s $WAPPALYZER_ROOT/phantomjs/phantomjs-*-linux-x86_64/bin/phantomjs bin/phantomjs
script: wappalyzer build script: wappalyzer build

@ -15,6 +15,10 @@ echo "Prettifying apps.json..."
jsonlint -ist $'\t' $WAPPALYZER_ROOT/src/apps.json jsonlint -ist $'\t' $WAPPALYZER_ROOT/src/apps.json
echo "Compressing icons..."
imagemin $WAPPALYZER_ROOT/src/icons $WAPPALYZER_ROOT/src/icons -o 3
wappalyzer links wappalyzer links
# Npm Module # Npm Module

@ -27,6 +27,11 @@ for ( app in json.apps ) {
attrs = pattern.split('\\;'), attrs = pattern.split('\\;'),
regex = '/' + attrs.shift().replace('/', '\/') + '/'; regex = '/' + attrs.shift().replace('/', '\/') + '/';
//Check if the pattern is a valid RegExp
//Note: unlike when used in Wappalyzer, the modifier i isn't added here
new RegExp(regex);
if ( /^\/(?:\^\$|\.\+|\.\*)\/$/.test(regex) ) { if ( /^\/(?:\^\$|\.\+|\.\*)\/$/.test(regex) ) {
throw new Error('Pattern should be replaced with empty string.\n' + app + ': ' + type + ': ' + pattern); throw new Error('Pattern should be replaced with empty string.\n' + app + ': ' + type + ': ' + pattern);
} }

@ -7,13 +7,12 @@ ENV DEBIAN_FRONTEND noninteractive
ENV WAPPALYZER_ROOT /home/wappalyzer/synced ENV WAPPALYZER_ROOT /home/wappalyzer/synced
ENV WAPPALYZER_NODE_PATH /home/wappalyzer/node ENV WAPPALYZER_NODE_PATH /home/wappalyzer/node
# Install packages # Install packages
RUN apt-get update && apt-get install -y curl nodejs npm zip libfreetype6 libfontconfig RUN apt-get update && apt-get install -y curl zip libfreetype6 libfontconfig
RUN curl -sL https://deb.nodesource.com/setup_0.12 | bash -
RUN apt-get install -y nodejs
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN ln -s /usr/bin/nodejs /usr/bin/node
# Add user # Add user
RUN useradd -ms /bin/bash wappalyzer && usermod -a -G docker_env wappalyzer && echo "wappalyzer:wappalyzer" | chpasswd RUN useradd -ms /bin/bash wappalyzer && usermod -a -G docker_env wappalyzer && echo "wappalyzer:wappalyzer" | chpasswd
@ -33,7 +32,7 @@ RUN su wappalyzer -c "mkdir $WAPPALYZER_NODE_PATH"
ADD node/package.json $WAPPALYZER_NODE_PATH/package.json ADD node/package.json $WAPPALYZER_NODE_PATH/package.json
RUN npm install jsonlint jpm -g && su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm install" RUN npm install jsonlint jpm imagemin-cli -g && su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm install"
# PhantomJS # PhantomJS

@ -586,7 +586,7 @@
"env": "^Backbone$", "env": "^Backbone$",
"implies": "Underscore.js", "implies": "Underscore.js",
"script": "backbone.*\\.js", "script": "backbone.*\\.js",
"website": "documentcloud.github.com/backbone" "website": "backbonejs.org"
}, },
"Backdrop": { "Backdrop": {
"cats": [ "cats": [
@ -1424,6 +1424,14 @@
}, },
"website": "dle-news.ru" "website": "dle-news.ru"
}, },
"DataTables": {
"cats": [
12
],
"implies": "jQuery",
"script": "dataTables.*\\.js",
"website": "datatables.net"
},
"David Webbox": { "David Webbox": {
"cats": [ "cats": [
22 22
@ -1639,7 +1647,7 @@
"meta": { "meta": {
"generator": "Doxygen ([\\d.]+)\\;version:\\1" "generator": "Doxygen ([\\d.]+)\\;version:\\1"
}, },
"website": "stack.nl/~dimitri/doxygen" "website": "www.stack.nl/~dimitri/doxygen/"
}, },
"DreamWeaver": { "DreamWeaver": {
"cats": [ "cats": [
@ -3469,6 +3477,12 @@
], ],
"website": "lucene.apache.org/core/" "website": "lucene.apache.org/core/"
}, },
"M.R. Inc BoxyOS": {
"cats": [
28
],
"website": "mrincworld.com"
},
"M.R. Inc Webserver": { "M.R. Inc Webserver": {
"cats": [ "cats": [
22 22
@ -3476,15 +3490,17 @@
"headers": { "headers": {
"Server": "M\\.R\\. Inc Webserver" "Server": "M\\.R\\. Inc Webserver"
}, },
"implies": [
"M.R. Inc BoxyOS"
],
"website": "mrincworld.com" "website": "mrincworld.com"
}, },
"M.R. Inc Wild CMS": { "M.R. Inc SiteFrame": {
"cats": [ "cats": [
1, 18
6
], ],
"headers": { "headers": {
"X-Powered-By": "M\\.R\\. Inc Wild CMS" "Powered-By": "M\\.R\\. Inc SiteFrame"
}, },
"website": "mrincworld.com" "website": "mrincworld.com"
}, },
@ -4365,6 +4381,19 @@
}, },
"website": "orchardproject.net" "website": "orchardproject.net"
}, },
"osTicket": {
"cats": [
13
],
"implies": [
"PHP",
"MySQL"
],
"headers": {
"Set-Cookie": "OSTSESSID"
},
"website": "osticket.com"
},
"Outbrain": { "Outbrain": {
"cats": [ "cats": [
5 5
@ -4784,6 +4813,22 @@
}, },
"website": "???" "website": "???"
}, },
"RainLoop": {
"cats": [
30
],
"env": "^rainloop",
"headers": {
"Server": "RainLoop"
},
"html": [
"<meta [^>]*(?:content=\"([^\"]+)[^>]+ id=\"rlAppVersion\"|id=\"rlAppVersion\"[^>]+ content=\"([^\"]+))\\;version:\\1?\\1:\\2",
"<link[^>]* href=\"[^\"]*rainloop/v/([^/]+)\\;version:\\1"
],
"implies": "PHP",
"script": "rainloop/v/([^/]+)\\;version:\\1",
"website": "rainloop.net"
},
"RBS Change": { "RBS Change": {
"cats": [ "cats": [
1, 1,
@ -5602,6 +5647,13 @@
"script": "assetscdn\\.stackla\\.com\\/media\\/js\\/widget\\/(?:[a-zA-Z0-9.]+)?\\.js", "script": "assetscdn\\.stackla\\.com\\/media\\/js\\/widget\\/(?:[a-zA-Z0-9.]+)?\\.js",
"website": "stackla.com/" "website": "stackla.com/"
}, },
"Stackla Social Hub": {
"cats": [
1
],
"env": "^stacklaSocialHub$",
"website": "stackla.com/"
},
"Starlet": { "Starlet": {
"cats": [ "cats": [
22 22

@ -133,11 +133,11 @@ class Wappalyzer
$headers = trim(substr($response, 0, $headerSize)); $headers = trim(substr($response, 0, $headerSize));
$headers = preg_split('/^\s*$/m', $headers); $headers = preg_split('/^\s*$/m', $headers);
$headers = end($headers); $headers = end($headers);
$lines = array_slice(explode("\r\n", $headers), 1); $lines = array_slice(explode("\n", $headers), 1);
foreach ( $lines as $line ) { foreach ( $lines as $line ) {
if ( strpos(trim($line), ': ') !== false ) { if ( strpos(trim($line), ': ') !== false ) {
list($key, $value) = explode(': ', $line); list($key, $value) = explode(': ', trim($line, "\r"));
$result->headers[strtolower($key)] = $value; $result->headers[strtolower($key)] = $value;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB