├── run.bat ├── server ├── db │ └── db.sqlite ├── static │ ├── img │ │ ├── bg.gif │ │ ├── Thumbs.db │ │ ├── file.gif │ │ ├── folder.gif │ │ ├── minus.gif │ │ ├── plus.gif │ │ ├── favicon.png │ │ ├── loading.gif │ │ ├── up-arrow.jpg │ │ ├── up-arrow.png │ │ ├── ajax-loader.gif │ │ ├── down-arrow.png │ │ ├── folder-closed.gif │ │ ├── treeview-gray.gif │ │ ├── treeview-red.gif │ │ ├── treeview-black.gif │ │ ├── treeview-default.gif │ │ ├── treeview-famfamfam.gif │ │ ├── treeview-gray-line.gif │ │ ├── treeview-red-line.gif │ │ ├── treeview-black-line.gif │ │ ├── treeview-default-line.gif │ │ └── treeview-famfamfam-line.gif │ ├── themes │ │ ├── basic │ │ │ └── assets │ │ │ │ └── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.ttf │ │ │ │ └── icons.woff │ │ └── default │ │ │ └── assets │ │ │ ├── fonts │ │ │ ├── icons.eot │ │ │ ├── icons.otf │ │ │ ├── icons.ttf │ │ │ └── icons.woff │ │ │ └── images │ │ │ └── flags.png │ ├── css │ │ ├── home.css │ │ ├── jquery.fileupload.css │ │ └── jquery.treeview.css │ ├── components │ │ ├── sticky.min.css │ │ ├── tab.min.css │ │ ├── rail.min.css │ │ ├── breadcrumb.min.css │ │ ├── site.min.css │ │ ├── video.min.css │ │ ├── nag.min.css │ │ ├── shape.min.css │ │ ├── sticky.css │ │ ├── ad.min.css │ │ ├── tab.css │ │ ├── reset.min.css │ │ ├── dimmer.min.css │ │ ├── breadcrumb.css │ │ ├── comment.min.css │ │ ├── rail.css │ │ ├── image.min.css │ │ ├── video.css │ │ ├── popup.min.css │ │ ├── site.css │ │ ├── divider.min.css │ │ ├── colorize.min.js │ │ ├── feed.min.css │ │ ├── loader.min.css │ │ ├── nag.css │ │ ├── shape.css │ │ └── search.min.css │ └── js │ │ ├── jquery.treeview.edit.js │ │ ├── jquery.json.min.js │ │ ├── analyze.js │ │ ├── fixtableheader.js │ │ ├── jquery.livequery.min.js │ │ └── jquery.treeview.async.js ├── pcapfile │ ├── 20151019_2254_111.pcap │ ├── 20151019_2256_222.pcap │ ├── 20151129_1416_wdjupload.pcap │ └── 20151028_1047_58_and_start.pcap ├── test.py ├── pair │ ├── 021c1dac81b2967b6cce5000565a23aa04ef_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045712.txt │ ├── 021c1dac81b2967b6cce5000565a23aa04f0_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045714.txt │ ├── 02bb15ac532161b443865000564139bc0149_10_0001_01_0_564139bc_BaiduSDK_device-0_141_0009036.txt │ ├── 02bb15ac532161b443865000564139bc0149_10_0001_01_1_564139bc_BaiduSDK_device-0_141_0009035.txt │ ├── 02bb15ac532161b46ec25000564139bc014a_10_0001_01_0_564139bc_BaiduSDK_device-0_141_0009038.txt │ └── 02bb15ac532161b46ec25000564139bc014a_10_0001_01_1_564139bc_BaiduSDK_device-0_141_0009037.txt ├── cfg │ └── yj_hp_in.conf ├── decode_utils.py ├── regex_util.py ├── conf │ └── interface.json ├── __init__.py ├── DeviceOperation.py ├── templates │ ├── gen_1.html │ ├── library.html │ ├── template.xml │ └── base.html ├── userInfoOperation.py └── ChangeAtoB.py ├── img ├── pcap-analyzer-01.png ├── pcap-analyzer-02.png ├── pcap-analyzer-03.png ├── pcap-analyzer-04.png ├── pcap-analyzer-05.png ├── pcap-analyzer-06.png ├── pcap-analyzer-07.png └── pcap-analyzer-08.png ├── pcap-analyzer-master ├── run.sh ├── run.bat ├── server │ ├── db │ │ └── db.sqlite │ ├── static │ │ ├── img │ │ │ └── favicon.png │ │ ├── themes │ │ │ ├── basic │ │ │ │ └── assets │ │ │ │ │ └── fonts │ │ │ │ │ ├── icons.eot │ │ │ │ │ ├── icons.ttf │ │ │ │ │ └── icons.woff │ │ │ └── default │ │ │ │ └── assets │ │ │ │ ├── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.otf │ │ │ │ ├── icons.ttf │ │ │ │ └── icons.woff │ │ │ │ └── images │ │ │ │ └── flags.png │ │ ├── css │ │ │ ├── home.css │ │ │ └── jquery.fileupload.css │ │ ├── components │ │ │ ├── sticky.min.css │ │ │ ├── tab.min.css │ │ │ ├── rail.min.css │ │ │ ├── breadcrumb.min.css │ │ │ ├── site.min.css │ │ │ ├── video.min.css │ │ │ ├── nag.min.css │ │ │ ├── shape.min.css │ │ │ ├── sticky.css │ │ │ ├── ad.min.css │ │ │ ├── tab.css │ │ │ ├── reset.min.css │ │ │ ├── dimmer.min.css │ │ │ ├── breadcrumb.css │ │ │ ├── comment.min.css │ │ │ ├── rail.css │ │ │ ├── image.min.css │ │ │ ├── video.css │ │ │ ├── popup.min.css │ │ │ ├── site.css │ │ │ ├── divider.min.css │ │ │ ├── colorize.min.js │ │ │ ├── feed.min.css │ │ │ ├── loader.min.css │ │ │ ├── nag.css │ │ │ ├── shape.css │ │ │ └── search.min.css │ │ └── js │ │ │ ├── analyze.js │ │ │ ├── fixtableheader.js │ │ │ └── upload.js │ ├── pcapfile │ │ ├── 20151019_2254_111.pcap │ │ └── 20151019_2256_222.pcap │ ├── __init__.py │ ├── templates │ │ ├── library.html │ │ ├── base.html │ │ └── upload.html │ └── views.py ├── img │ ├── pcap-analyzer-01.png │ ├── pcap-analyzer-02.png │ ├── pcap-analyzer-03.png │ ├── pcap-analyzer-04.png │ ├── pcap-analyzer-05.png │ ├── pcap-analyzer-06.png │ ├── pcap-analyzer-07.png │ └── pcap-analyzer-08.png ├── requirements.txt ├── app.py ├── readme2.md └── readme.md ├── run.sh ├── requirements.txt ├── app.py ├── tests ├── test_gevent.py ├── test_mutlithreading.py ├── testJson.py └── testParseLocation.py ├── readme2.md ├── .gitignore └── readme.md /run.bat: -------------------------------------------------------------------------------- 1 | python app.py 2 | -------------------------------------------------------------------------------- /server/db/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/db/db.sqlite -------------------------------------------------------------------------------- /img/pcap-analyzer-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-01.png -------------------------------------------------------------------------------- /img/pcap-analyzer-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-02.png -------------------------------------------------------------------------------- /img/pcap-analyzer-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-03.png -------------------------------------------------------------------------------- /img/pcap-analyzer-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-04.png -------------------------------------------------------------------------------- /img/pcap-analyzer-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-05.png -------------------------------------------------------------------------------- /img/pcap-analyzer-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-06.png -------------------------------------------------------------------------------- /img/pcap-analyzer-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-07.png -------------------------------------------------------------------------------- /img/pcap-analyzer-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/img/pcap-analyzer-08.png -------------------------------------------------------------------------------- /pcap-analyzer-master/run.sh: -------------------------------------------------------------------------------- 1 | # python -c "import os;os.remove('server/pcapfile/.gitkeep')" 2 | python app.py 3 | -------------------------------------------------------------------------------- /server/static/img/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/bg.gif -------------------------------------------------------------------------------- /pcap-analyzer-master/run.bat: -------------------------------------------------------------------------------- 1 | % python -c "import os;os.remove('server/pcapfile/.gitkeep')" % 2 | python app.py 3 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # python -c "import os;os.remove('server/pcapfile/.gitkeep')" 3 | python app.py 4 | -------------------------------------------------------------------------------- /server/static/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/Thumbs.db -------------------------------------------------------------------------------- /server/static/img/file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/file.gif -------------------------------------------------------------------------------- /server/static/img/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/folder.gif -------------------------------------------------------------------------------- /server/static/img/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/minus.gif -------------------------------------------------------------------------------- /server/static/img/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/plus.gif -------------------------------------------------------------------------------- /server/static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/favicon.png -------------------------------------------------------------------------------- /server/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/loading.gif -------------------------------------------------------------------------------- /server/static/img/up-arrow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/up-arrow.jpg -------------------------------------------------------------------------------- /server/static/img/up-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/up-arrow.png -------------------------------------------------------------------------------- /server/static/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/ajax-loader.gif -------------------------------------------------------------------------------- /server/static/img/down-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/down-arrow.png -------------------------------------------------------------------------------- /server/static/img/folder-closed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/folder-closed.gif -------------------------------------------------------------------------------- /server/static/img/treeview-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-gray.gif -------------------------------------------------------------------------------- /server/static/img/treeview-red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-red.gif -------------------------------------------------------------------------------- /server/pcapfile/20151019_2254_111.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pcapfile/20151019_2254_111.pcap -------------------------------------------------------------------------------- /server/pcapfile/20151019_2256_222.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pcapfile/20151019_2256_222.pcap -------------------------------------------------------------------------------- /server/static/img/treeview-black.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-black.gif -------------------------------------------------------------------------------- /server/static/img/treeview-default.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-default.gif -------------------------------------------------------------------------------- /server/test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | from autogen import read_pair 4 | 5 | print(read_pair('pair')) 6 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/db/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/db/db.sqlite -------------------------------------------------------------------------------- /server/static/img/treeview-famfamfam.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-famfamfam.gif -------------------------------------------------------------------------------- /server/static/img/treeview-gray-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-gray-line.gif -------------------------------------------------------------------------------- /server/static/img/treeview-red-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-red-line.gif -------------------------------------------------------------------------------- /server/static/img/treeview-black-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-black-line.gif -------------------------------------------------------------------------------- /server/static/img/treeview-default-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-default-line.gif -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-01.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-02.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-03.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-04.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-05.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-06.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-07.png -------------------------------------------------------------------------------- /pcap-analyzer-master/img/pcap-analyzer-08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/img/pcap-analyzer-08.png -------------------------------------------------------------------------------- /server/pcapfile/20151129_1416_wdjupload.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pcapfile/20151129_1416_wdjupload.pcap -------------------------------------------------------------------------------- /server/static/img/treeview-famfamfam-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/img/treeview-famfamfam-line.gif -------------------------------------------------------------------------------- /pcap-analyzer-master/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.10.1 2 | Werkzeug==0.9.4 3 | pyshark==0.3.3 4 | chartkick==0.4.2 5 | Logbook==0.7.0 6 | gevent 7 | simplejson -------------------------------------------------------------------------------- /server/pcapfile/20151028_1047_58_and_start.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pcapfile/20151028_1047_58_and_start.pcap -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/img/favicon.png -------------------------------------------------------------------------------- /server/static/themes/basic/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/basic/assets/fonts/icons.eot -------------------------------------------------------------------------------- /server/static/themes/basic/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/basic/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /server/static/themes/basic/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/basic/assets/fonts/icons.woff -------------------------------------------------------------------------------- /server/static/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /server/static/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /server/static/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /server/static/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /server/static/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/static/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==0.10.1 2 | Werkzeug==0.9.4 3 | pyshark==0.3.3 4 | chartkick==0.4.2 5 | Logbook==0.7.0 6 | simplejson 7 | Flask-SQLAlchemy==2.1 8 | scapy 9 | gevent -------------------------------------------------------------------------------- /pcap-analyzer-master/server/pcapfile/20151019_2254_111.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/pcapfile/20151019_2254_111.pcap -------------------------------------------------------------------------------- /pcap-analyzer-master/server/pcapfile/20151019_2256_222.pcap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/pcapfile/20151019_2256_222.pcap -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.eot -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/basic/assets/fonts/icons.woff -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/pcap-analyzer-master/server/static/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/css/home.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #E9E9E9; 3 | background-image: url(/../img/2.gif); 4 | } 5 | 6 | #wrapper{ 7 | margin-top:3.5rem; 8 | margin-left:10rem; 9 | margin-right:10rem; 10 | } -------------------------------------------------------------------------------- /server/pair/021c1dac81b2967b6cce5000565a23aa04ef_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045712.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pair/021c1dac81b2967b6cce5000565a23aa04ef_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045712.txt -------------------------------------------------------------------------------- /server/pair/021c1dac81b2967b6cce5000565a23aa04f0_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045714.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangxinqian/pcap-analyzer/HEAD/server/pair/021c1dac81b2967b6cce5000565a23aa04f0_10_0001_01_0_565a23a9_WanDouJia_device-0_141_0045714.txt -------------------------------------------------------------------------------- /server/cfg/yj_hp_in.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | from server import app 5 | #如应用于生产环境 app.run(host='0.0.0.0', port=80) 并注意可能存在的安全隐患. 6 | #有些情况下 localhost 会出问题,本地需要添加一个 hosts 。 7 | if __name__ == '__main__': 8 | app.run(host='127.0.0.1', port=8080, debug=True) 9 | -------------------------------------------------------------------------------- /pcap-analyzer-master/app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | from server import app 5 | #如应用于生产环境 app.run(host='0.0.0.0', port=80) 并注意可能存在的安全隐患. 6 | #有些情况下 localhost 会出问题,本地需要添加一个 hosts 。 7 | if __name__ == '__main__': 8 | app.run(host='127.0.0.1', port=8080, debug=True) 9 | -------------------------------------------------------------------------------- /server/pair/02bb15ac532161b443865000564139bc0149_10_0001_01_0_564139bc_BaiduSDK_device-0_141_0009036.txt: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Cache-Control: max-age=86400 3 | Content-Length: 26 4 | Content-Type: text/plain 5 | Date: Fri, 08 May 2015 02:51:01 GMT 6 | Expires: Sat, 09 May 2015 02:51:01 GMT 7 | Http_x_bd_logid: 1001157098 8 | Http_x_bd_logid64: 5883167911097030757 9 | Server: apache 10 | 11 | {"ctr":"196619","ver":"0"} -------------------------------------------------------------------------------- /tests/test_gevent.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | from gevent import monkey; 4 | 5 | monkey.patch_all() 6 | 7 | 8 | def A(): 9 | with open('../server/conf/interface.json') as f: 10 | print(f.read()) 11 | 12 | 13 | def B(): 14 | with open('../server/func.py') as f: 15 | print(f.read()) 16 | 17 | 18 | import gevent 19 | 20 | gevent.joinall([gevent.spawn(A), 21 | gevent.spawn(B)]) 22 | -------------------------------------------------------------------------------- /server/decode_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | import zlib 4 | import codecs 5 | 6 | 7 | def decode_gzip(data): 8 | decode_data = zlib.decompress(data, 16 | zlib.MAX_WBITS) 9 | 10 | 11 | def encode_url_utf8(data): 12 | hex_data = codecs.encode(data, 'hex') 13 | ret = '' 14 | for i, v in enumerate(hex_data): 15 | if i % 2 == 0: 16 | ret += r'%' 17 | ret += v 18 | return ret 19 | -------------------------------------------------------------------------------- /server/regex_util.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | import re 4 | 5 | 6 | class RegexUtil: 7 | def __init__(self, infolist): 8 | self.reged = [] 9 | for info in infolist: 10 | self.reged.append(re.compile(info)) 11 | 12 | def match_lng_and_lat(self, http_data): 13 | for rege in self.reged: 14 | if rege.search(http_data): 15 | return True 16 | 17 | return False 18 | -------------------------------------------------------------------------------- /server/conf/interface.json: -------------------------------------------------------------------------------- 1 | { 2 | "LBS": [ 3 | "IMEI", 4 | "IMSI", 5 | "DESC", 6 | "LAT", 7 | "LNG", 8 | "RADUIS" 9 | ], 10 | "INFO_LBS": [ 11 | "sourcefrom", 12 | "coordtype" 13 | ], 14 | "INFO_TXL": [ 15 | "sourcefrom" 16 | ], 17 | "TXL": [ 18 | "contact_split", 19 | "info_split", 20 | "NAME", 21 | "NICKNAME", 22 | "NOTE", 23 | "RELATION", 24 | "ORG", 25 | "MOBILE", 26 | "EMAIL", 27 | "ADDR" 28 | ] 29 | } -------------------------------------------------------------------------------- /server/pair/02bb15ac532161b443865000564139bc0149_10_0001_01_1_564139bc_BaiduSDK_device-0_141_0009035.txt: -------------------------------------------------------------------------------- 1 | POST /sdk.php HTTP/1.1 2 | Content-Type: application/x-www-form-urlencoded; charset=utf-8 3 | Accept-Charset: UTF-8; 4 | Content-Length: 169 5 | Host: loc.map.baidu.com 6 | Connection: Keep-Alive 7 | User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) 8 | 9 | qt=conf&req=6rihufb76Lyw4frmor_3u53oucrry-3k5pOU65Ht7OOo2NLc3N-tr9b31ISE8tHUg8uanMmayczBx8XEw8nDyfDN6-Tn--_to-u16eGOs6mrva246_T68v655eb2-7Ph3sHAlvjv5ZuNwwTiW3u1%7Ctp%3D3 -------------------------------------------------------------------------------- /readme2.md: -------------------------------------------------------------------------------- 1 | ### 开发工具: 2 | pycharm 3 | 4 | ### 开发语言: 5 | python 2.7 6 |   7 | ### 安装装运行: 8 | - Linux: 9 | - $ pip install -r requirements.txt 10 | - $ python app.py 11 | - View http://localhost:8080/ 12 | 13 | - Window: 14 | - Pycharm 导入github 库 15 | - 还需要安装3个编译库,参考下面文档 16 | - https://github.com/Kondziowy/scapy_win64/tree/master/win64 17 | - https://github.com/CoreSecurity/pcapy/wiki/Compiling-Pcapy-on-Windows-Guide 18 | 19 | 20 | 21 | ### 项目参考: 22 | http://le4f.net/post/post/pcap-online-analyzer 23 | -------------------------------------------------------------------------------- /tests/test_mutlithreading.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | import threading 4 | 5 | 6 | def A(): 7 | with open('../server/conf/interface.json') as f: 8 | s = '' 9 | while s != 'Null': 10 | s = f.readline() 11 | print(s) 12 | 13 | 14 | def B(): 15 | with open('../server/func.py') as f: 16 | s = '' 17 | while s != 'Null': 18 | s = f.readline() 19 | print(s) 20 | 21 | 22 | ta = threading.Thread(target=A) 23 | tb = threading.Thread(target=B) 24 | ta.start() 25 | tb.start() 26 | ta.join() 27 | tb.join() 28 | -------------------------------------------------------------------------------- /server/static/css/home.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #E9E9E9; 3 | } 4 | 5 | #wrapper { 6 | margin-top: 3.5rem; 7 | margin-left: 10rem; 8 | margin-right: 10rem; 9 | } 10 | 11 | #browser li :hover { 12 | cursor: pointer; 13 | } 14 | 15 | #pathtonode { 16 | position: fixed; 17 | bottom: 0px; 18 | right: 0px; 19 | background-color: #F2F1E8; 20 | padding: 5px; 21 | } 22 | 23 | 24 | #accumpaths { 25 | list-style-type: none; 26 | display: block; 27 | width: 600px; 28 | } 29 | 30 | #accumpaths li { 31 | float: left; 32 | } 33 | 34 | #accumpaths a { 35 | padding-left: 5px; 36 | } -------------------------------------------------------------------------------- /server/pair/02bb15ac532161b46ec25000564139bc014a_10_0001_01_0_564139bc_BaiduSDK_device-0_141_0009038.txt: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Cache-Control: max-age=86400 3 | Content-Length: 284 4 | Content-Type: text/plain 5 | Date: Fri, 08 May 2015 02:51:01 GMT 6 | Expires: Sat, 09 May 2015 02:51:01 GMT 7 | Http_x_bd_logid: 786649265 8 | Http_x_bd_logid64: 16558996061297821993 9 | Server: apache 10 | 11 | {"content":{"addr":"上海市,上海市,普陀区,共青路,,289,中国,0","bldg":"","clf":"121.403753|31.227739|2000.000000","floor":"","indoor":"40","point":{"x":"121.403368","y":"31.228084"},"radius":"67.625394","ssid":"2047"},"result":{"error":"161","time":"2015-05-08 10:51:01"}} -------------------------------------------------------------------------------- /tests/testJson.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | 4 | 5 | import simplejson as json 6 | 7 | def as_complex(dct): 8 | if '__complex__' in dct: 9 | return complex(dct['real'], dct['imag']) 10 | return dct 11 | 12 | 13 | # j = json.loads('{"__complex__": true, "real": 1, "imag": 2}', object_hook=as_complex) 14 | # print(j) 15 | 16 | j = json.loads( 17 | '{"content":{"addr":"上海市,上海市,普陀区,共青路,,289,中国,0","bldg":"","clf":"121.403753|31.227739|2000.000000","floor":"","indoor":"40","point":{"x":"121.403368","y":"31.228084"},"radius":"67.625394","ssid":"2047"},"result":{"error":"161","time":"2015-05-08 10:51:01"}}') 18 | print(j) 19 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | 5 | from flask import Flask, request, redirect, url_for, send_file, render_template, g 6 | from werkzeug.utils import secure_filename 7 | from cStringIO import StringIO 8 | from collections import Counter 9 | from scapy.all import * 10 | import os,sys,time,math,re 11 | import simplejson,sqlite3 12 | import pyshark 13 | import chartkick 14 | 15 | UPLOAD_FOLDER = 'server/pcapfile/' 16 | ALLOWED_EXTENSIONS = set(['pcap','pcapng','cap']) 17 | DATABASE = 'server/db/db.sqlite' 18 | 19 | app = Flask(__name__) 20 | app.jinja_env.add_extension("chartkick.ext.charts") 21 | 22 | import views 23 | import func -------------------------------------------------------------------------------- /pcap-analyzer-master/readme2.md: -------------------------------------------------------------------------------- 1 | ### 开发工具: 2 | pycharm 3 | 4 | ### 开发语言: 5 | python 2.7 6 |   7 | ### 安装装运行: 8 | - Linux: 9 | - $ git clone https://github.com/Baoyx007/pcap-analyzer 10 | - $ cd pcap-analyzer' 11 | - $ pip install -r requirements.txt 12 | - $ python app.py 13 | - View http://localhost:8080/ 14 | 15 | - Window: 16 | - Pycharm 导入github 库 17 | - 还需要安装3个编译库,参考下面文档 18 | - https://github.com/Kondziowy/scapy_win64/tree/master/win64 19 | - https://github.com/CoreSecurity/pcapy/wiki/Compiling-Pcapy-on-Windows-Guide 20 | 21 | 22 | 23 | ### 项目github地址: 24 | https://github.com/Baoyx007/pcap-analyzer 25 | 26 | ### 项目参考: 27 | http://le4f.net/post/post/pcap-online-analyzer 28 | -------------------------------------------------------------------------------- /server/static/components/sticky.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.sticky{position:static;-webkit-transition:width .2s ease,height .2s ease,top .2s ease,bottom .2s ease;transition:width .2s ease,height .2s ease,top .2s ease,bottom .2s ease;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/sticky.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.sticky{position:static;-webkit-transition:width .2s ease,height .2s ease,top .2s ease,bottom .2s ease;transition:width .2s ease,height .2s ease,top .2s ease,bottom .2s ease;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} -------------------------------------------------------------------------------- /server/static/css/jquery.fileupload.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * jQuery File Upload Plugin CSS 1.3.0 4 | * https://github.com/blueimp/jQuery-File-Upload 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .fileinput-button { 14 | position: relative; 15 | overflow: hidden; 16 | } 17 | .fileinput-button input { 18 | position: absolute; 19 | top: 0; 20 | right: 0; 21 | margin: 0; 22 | opacity: 0; 23 | -ms-filter: 'alpha(opacity=0)'; 24 | font-size: 200px; 25 | direction: ltr; 26 | cursor: pointer; 27 | } 28 | 29 | /* Fixes for IE < 8 */ 30 | @media screen\9 { 31 | .fileinput-button input { 32 | filter: alpha(opacity=0); 33 | font-size: 100%; 34 | height: 100%; 35 | } 36 | } -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/css/jquery.fileupload.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * jQuery File Upload Plugin CSS 1.3.0 4 | * https://github.com/blueimp/jQuery-File-Upload 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .fileinput-button { 14 | position: relative; 15 | overflow: hidden; 16 | } 17 | .fileinput-button input { 18 | position: absolute; 19 | top: 0; 20 | right: 0; 21 | margin: 0; 22 | opacity: 0; 23 | -ms-filter: 'alpha(opacity=0)'; 24 | font-size: 200px; 25 | direction: ltr; 26 | cursor: pointer; 27 | } 28 | 29 | /* Fixes for IE < 8 */ 30 | @media screen\9 { 31 | .fileinput-button input { 32 | filter: alpha(opacity=0); 33 | font-size: 100%; 34 | height: 100%; 35 | } 36 | } -------------------------------------------------------------------------------- /server/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | 5 | from flask import Flask, request, redirect, url_for, send_file, render_template, g, make_response 6 | from werkzeug.utils import secure_filename 7 | from cStringIO import StringIO 8 | from collections import Counter 9 | from scapy.all import * 10 | import os, sys, time, math, re 11 | import simplejson, sqlite3 12 | import pyshark 13 | import chartkick 14 | from flask.ext.sqlalchemy import SQLAlchemy 15 | 16 | UPLOAD_FOLDER = 'server/pcapfile/' 17 | ALLOWED_EXTENSIONS = set(['pcap', 'pcapng', 'cap']) 18 | DATABASE = 'server/db/db.sqlite' 19 | 20 | app = Flask(__name__) 21 | app.jinja_env.add_extension("chartkick.ext.charts") 22 | app.config.from_object(__name__) 23 | app.secret_key = '\xac=\x0f\xee\x88\x9f\xb9\xfaF\x04\x93\xc2\x12\xc2\x9fG\t\xa1\xf2t\x80\xe5\x1c[' 24 | # print(__name__) 25 | import views 26 | import func 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | 55 | # Sphinx documentation 56 | docs/_build/ 57 | 58 | # PyBuilder 59 | target/ 60 | 61 | # pycharm 62 | .idea/ -------------------------------------------------------------------------------- /server/static/components/tab.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/tab.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent} -------------------------------------------------------------------------------- /server/pair/02bb15ac532161b46ec25000564139bc014a_10_0001_01_1_564139bc_BaiduSDK_device-0_141_0009037.txt: -------------------------------------------------------------------------------- 1 | 2 | POST /sdk.php HTTP/1.1 3 | Content-Type: application/x-www-form-urlencoded; charset=utf-8 4 | Accept-Charset: UTF-8; 5 | Content-Length: 804 6 | Host: loc.map.baidu.com 7 | Connection: Keep-Alive 8 | User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) 9 | 10 | bloc=vaXrpai6qPGv8vf9vvXpp-7nvurz7O7p4erqtOjwtujkmIGL3pqI0e2S3NzW1oSDyMSYypfJzszRnJ_VxoqJ2Ke75_7sr7bo9PHnsLHm4eX5r_yu9qmsqaytpvrnr_b2yp2dyJ7JmcyXnZKbmdnFkNmO1YndjIvajo-I1IKNyYcreHooKn58eSt_d3Z0cS5vZDQ-bjk_aTpjOWcxYGFjP0deCgpcBFwJVgRRC1teAgtGCxpLS0ZKTxIZFUMaRk4TYjAgbW4_bWg3N2I-ZzdiaCoud2N8Jikpcyl3cHolIXVAE09DU08TT0BCF0kTREZHDQxUDFRCCAMFDVdXXwdUqK76pqf6pOzl9Zqu9_Lg4-qDp_nlvvutsom5prvr4eeKit2Oi9uH0oeDw5OOiNuAgszSzJzKj8eVmpDUxZWahua967fvvPnpp-7Hs7_Btpb4paGJ3vbYra2k2KTwraKguLyducyazenEwNmQnJeUx9yNht2P2YqJgo6a34SH9tt0djh8e24neCskGnRkd2BmaS89aWU_bnw7JWETN2NzJ00HXBMLQA1MUV1YU1hFFkZDGEl-PGVPVERMHx1LVAIBOTt0ezFtYidjLygxdjY2Ks9p91P.%7Ctp%3D3&ext=6vSn8YnaqKvzofGj9aeloO247-y-67S56OHnsbjh5ebbjI_ezsuD0Nf12tOC3vPXlL7LxJ_ry8-1zLKxm8XhyrTttLvM4ri0uJG1uOPG6MePptuv9I3UpabUq6SDq_TTlrnsl8uXwIPVhcLD1aKu3rb.%7Ctp%3D3 -------------------------------------------------------------------------------- /server/static/components/rail.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.rail{position:absolute;top:0;width:300px;box-sizing:content-box}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(39,41,43,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(39,41,43,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.rail{font-size:1em} -------------------------------------------------------------------------------- /tests/testParseLocation.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __author__ = 'PCPC' 3 | from server.autogen import * 4 | 5 | j = r''' 6 | {"reqeuestBody":[ 7 | { 8 | "infoname": "IMEI", 9 | "value": "loc.map.baidu.com", 10 | "regex": "[^\"\\r\\n]+" 11 | } 12 | ], 13 | "responsebody": [ 14 | { 15 | "infoname": "PositionDesc", 16 | "value": "content~addr~上海市,上海市,普陀区,共青路,,289,中国,0", 17 | "regex": "[^\"\\r\\n]+" 18 | }, 19 | { 20 | "infoname": "PositionAcc", 21 | "value": "content~radius~67.625394", 22 | "regex": "[^\"\\r\\n]+" 23 | }, 24 | { 25 | "infoname": "PositionLng", 26 | "value": "content~point~x~121.403368", 27 | "regex": "[^\"\\r\\n]+" 28 | }, 29 | { 30 | "infoname": "PositionLat", 31 | "value": "content~point~y~31.228084", 32 | "regex": "[^\"\\r\\n]+" 33 | } 34 | ] 35 | } 36 | ''' 37 | print(parse_locations(j)) 38 | -------------------------------------------------------------------------------- /server/static/components/breadcrumb.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.breadcrumb{margin:1em 0;display:inline-block;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.5;margin:0 .2rem;font-size:.9em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#009fda}.ui.breadcrumb a:hover{color:#00b2f3}.ui.breadcrumb .icon.divider{font-size:.7em;vertical-align:middle}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.5em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.65em}.ui.tiny.breadcrumb{font-size:.7em}.ui.small.breadcrumb{font-size:.75em}.ui.breadcrumb{font-size:1em}.ui.large.breadcrumb{font-size:1.1em}.ui.big.breadcrumb{font-size:1.05em}.ui.huge.breadcrumb{font-size:1.3em}.ui.massive.breadcrumb{font-size:1.5em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/rail.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.rail{position:absolute;top:0;width:300px;box-sizing:content-box}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(39,41,43,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(39,41,43,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.rail{font-size:1em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/breadcrumb.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.breadcrumb{margin:1em 0;display:inline-block;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.5;margin:0 .2rem;font-size:.9em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#009fda}.ui.breadcrumb a:hover{color:#00b2f3}.ui.breadcrumb .icon.divider{font-size:.7em;vertical-align:middle}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.5em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.65em}.ui.tiny.breadcrumb{font-size:.7em}.ui.small.breadcrumb{font-size:.75em}.ui.breadcrumb{font-size:1em}.ui.large.breadcrumb{font-size:1.1em}.ui.big.breadcrumb{font-size:1.05em}.ui.huge.breadcrumb{font-size:1.3em}.ui.massive.breadcrumb{font-size:1.5em} -------------------------------------------------------------------------------- /server/DeviceOperation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | from server import * 5 | import unittest 6 | import sqlite3 7 | import func 8 | __author__ = 'hx' 9 | class DeviceInfo: 10 | def __init__(self): 11 | self.db=func.connect_db() 12 | def closeDB(self): 13 | self.db.commit() 14 | self.db.close() 15 | def addDeviceInfo(self,device_id='',device_name='',device_imei='',device_os='',device_SerialNumber=''): 16 | self.db.cursor().execute("insert into deviceInfo(device_id,device_name,device_imei,device_os,device_SerialNumber) values(?,?,?,?,?)",(device_id,device_name,device_imei,device_os,device_SerialNumber)) 17 | DeviceInfo.closeDB(self) 18 | def deleteDeviceInfo(self,device_no): 19 | self.db.execute("delete from deviceInfo where device_no=?",device_no) 20 | DeviceInfo.closeDB(self) 21 | def getDeviceInfo(self): 22 | cursor=self.db.execute("select * from deviceInfo deviceInfo") 23 | entries = [dict(device_no=row[0], device_id=row[1], device_name=row[2], device_imei=row[3],device_os=row[4],device_SerialNumber=row[5]) for row in cursor.fetchall()] 24 | DeviceInfo.closeDB(self) 25 | return entries 26 | 27 | # 获取数据库连接 28 | 29 | -------------------------------------------------------------------------------- /server/static/components/site.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | @import 'http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic';*,:after,:before{box-sizing:border-box}body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;min-width:278px;background:#f7f7f7;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.33;color:rgba(0,0,0,.8);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.33em;margin:-webkit-calc(2rem - .165em) 0 1rem;margin:calc(2rem - .165em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.714rem}h3{font-size:1.28rem}h4{font-size:1.071rem}h5{font-size:1rem}p{margin:0 0 1em;line-height:1.33}p:first-child{margin-top:0}p:last-child{margin-bottom:0}a{color:#009fda;text-decoration:none}a:hover{color:#00b2f3}::-webkit-selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)}::-moz-selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)}::selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)} -------------------------------------------------------------------------------- /server/static/components/video.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.video{background-color:#ddd;position:relative;max-width:100%;padding-bottom:56.25%;height:0;overflow:hidden}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;opacity:.8;-webkit-transition:opacity .3s;transition:opacity .3s}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;background:rgba(0,0,0,.3);width:8rem;height:8rem;line-height:8rem;border-radius:500rem;color:#fff;font-size:8rem;text-shadow:none;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.video .placeholder{position:absolute;top:0;left:0;display:block;width:100%;height:100%}.ui.video .embed embed,.ui.video .embed iframe,.ui.video .embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.video .play:hover{opacity:1}.ui.video.active .placeholder,.ui.video.active .play{display:none}.ui.video.active .embed{display:inline} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/site.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | @import 'http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic';*,:after,:before{box-sizing:border-box}body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;min-width:278px;background:#f7f7f7;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.33;color:rgba(0,0,0,.8);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.33em;margin:-webkit-calc(2rem - .165em) 0 1rem;margin:calc(2rem - .165em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.714rem}h3{font-size:1.28rem}h4{font-size:1.071rem}h5{font-size:1rem}p{margin:0 0 1em;line-height:1.33}p:first-child{margin-top:0}p:last-child{margin-bottom:0}a{color:#009fda;text-decoration:none}a:hover{color:#00b2f3}::-webkit-selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)}::-moz-selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)}::selection{background-color:rgba(255,255,160,.4);color:rgba(0,0,0,.8)} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/video.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.video{background-color:#ddd;position:relative;max-width:100%;padding-bottom:56.25%;height:0;overflow:hidden}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;opacity:.8;-webkit-transition:opacity .3s;transition:opacity .3s}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;background:rgba(0,0,0,.3);width:8rem;height:8rem;line-height:8rem;border-radius:500rem;color:#fff;font-size:8rem;text-shadow:none;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.video .placeholder{position:absolute;top:0;left:0;display:block;width:100%;height:100%}.ui.video .embed embed,.ui.video .embed iframe,.ui.video .embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.video .play:hover{opacity:1}.ui.video.active .placeholder,.ui.video.active .play{display:none}.ui.video.active .embed{display:inline} -------------------------------------------------------------------------------- /server/static/components/nag.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.8);border-radius:0 0 .2857rem .2857rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#fff;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.2857rem .2857rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#f0f0f0;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .2857rem .2857rem}.ui.bottom.nags .nag:last-child{border-radius:.2857rem .2857rem 0 0} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/nag.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.8);border-radius:0 0 .2857rem .2857rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#fff;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.2857rem .2857rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#f0f0f0;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .2857rem .2857rem}.ui.bottom.nags .nag:last-child{border-radius:.2857rem .2857rem 0 0} -------------------------------------------------------------------------------- /server/templates/gen_1.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 | 4 | 5 | 6 | Information 7 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {% for data in DataList %} 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | {% endfor %} 40 | 41 | 42 |
URLHOSTTYPEMETHODNAME
{{data['URL']}}{{data['HOST']}}{{data['TYPE']}}{{data['METHOD']}}{{data['NAME']}}
43 |
44 | Download 45 |
46 |
47 |
48 |
49 | 50 | 51 | 52 | {% endblock %} -------------------------------------------------------------------------------- /server/userInfoOperation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | from server import * 5 | import unittest 6 | import sqlite3 7 | import func 8 | __author__ = 'hx' 9 | class userInfo: 10 | def __init__(self): 11 | self.db=func.connect_db() 12 | def closeDB(self): 13 | self.db.commit() 14 | self.db.close() 15 | def addUserInfo(self,user_id='',user_name='',user_companyName='', 16 | user_Title='',user_mobile='',user_email='',user_groupName='',user_address='',user_nickname='', 17 | user_birthday='',user_notes=''): 18 | self.db.cursor().execute("insert into userInfo(user_name,user_companyName,user_Title,user_mobile,user_email,user_groupName,user_address,user_nickname,user_birthday,user_notes) values(?,?,?,?,?,?,?,?,?,?)", 19 | (user_name,user_companyName,user_Title,user_mobile,user_email,user_groupName,user_address,user_nickname,user_birthday,user_notes)) 20 | userInfo.closeDB(self) 21 | def deleteUserInfo(self,user_id): 22 | self.db.execute("delete from userInfo where user_id=?",user_id) 23 | userInfo.closeDB(self) 24 | def getUserInfo(self): 25 | cursor=self.db.execute('select * from userInfo') 26 | entries = [dict(user_id=row[0], user_name=row[1], user_companyName=row[2], 27 | user_Title=row[3],user_mobile=row[4],user_email=row[5], 28 | user_groupName=row[6],user_address=row[7],user_nickname=row[8], 29 | user_birthday=row[9],user_notes=row[10]) for row in cursor.fetchall()] 30 | userInfo.closeDB(self) 31 | return entries 32 | -------------------------------------------------------------------------------- /server/static/components/shape.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.shape{position:relative;display:inline-block;-webkit-perspective:2000px;perspective:2000px}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none}.ui.shape .side>*{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#e6e6e6;color:rgba(0,0,0,.8);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;z-index:100}.ui.shape .hidden.side{opacity:.4}.ui.shape.animating{-webkit-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .sides{position:absolute;-webkit-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/shape.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.shape{position:relative;display:inline-block;-webkit-perspective:2000px;perspective:2000px}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none}.ui.shape .side>*{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#e6e6e6;color:rgba(0,0,0,.8);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;z-index:100}.ui.shape .hidden.side{opacity:.4}.ui.shape.animating{-webkit-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .sides{position:absolute;-webkit-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block} -------------------------------------------------------------------------------- /server/ChangeAtoB.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | 4 | 5 | def OperateJson(data, wirter): # 解析json数据 6 | # 将字符串转换为dict 7 | dicts = eval(data); 8 | # print(dicts['NAME']); 9 | # dict的长度 10 | # print(len(dicts)); 11 | 12 | resultStr = '\n'; 13 | resultStr += ' '; 17 | else: 18 | resultStr += '" MSG_TYPE="AddressBook" ENCODING="HTML">'; 19 | resultStr += ' \n'; 20 | 21 | # print(resultStr); 22 | wirter.write(resultStr); 23 | 24 | 25 | def gen_1_xml(data): 26 | with open(os.path.join('.', "server/cfg/yj_hp_in.conf"), 'w') as writefile: 27 | arr = []; # 借助中间变量数组arr,将字典转换为字符串,然后去重 28 | # 添加标题 29 | resultStr = '' 30 | # dict遍历,在遍历字典数组的时候,进行字符串拼接 31 | for index in range(len(data)): 32 | arr.append(str(data[index])); 33 | # print(eval((list(set(arr)))[0])['NAME']); 34 | resultStr += '\n' 36 | writefile.write(resultStr) 37 | resultStr = '' 38 | for index in range(len((list(set(arr))))): 39 | OperateJson((list(set(arr)))[index], writefile); 40 | # print((list(set(arr)))[index]); 41 | resultStr += '\n' 42 | writefile.write(resultStr) 43 | -------------------------------------------------------------------------------- /server/static/js/jquery.treeview.edit.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | var CLASSES = $.treeview.classes; 3 | var proxied = $.fn.treeview; 4 | $.fn.treeview = function(settings) { 5 | settings = $.extend({}, settings); 6 | if (settings.add) { 7 | return this.trigger("add", [settings.add]); 8 | } 9 | if (settings.remove) { 10 | return this.trigger("remove", [settings.remove]); 11 | } 12 | return proxied.apply(this, arguments).bind("add", function(event, branches) { 13 | $(branches).prev() 14 | .removeClass(CLASSES.last) 15 | .removeClass(CLASSES.lastCollapsable) 16 | .removeClass(CLASSES.lastExpandable) 17 | .find(">.hitarea") 18 | .removeClass(CLASSES.lastCollapsableHitarea) 19 | .removeClass(CLASSES.lastExpandableHitarea); 20 | $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, $(this).data("toggler")); 21 | }).bind("remove", function(event, branches) { 22 | var prev = $(branches).prev(); 23 | var parent = $(branches).parent(); 24 | $(branches).remove(); 25 | prev.filter(":last-child").addClass(CLASSES.last) 26 | .filter("." + CLASSES.expandable).replaceClass(CLASSES.last, CLASSES.lastExpandable).end() 27 | .find(">.hitarea").replaceClass(CLASSES.expandableHitarea, CLASSES.lastExpandableHitarea).end() 28 | .filter("." + CLASSES.collapsable).replaceClass(CLASSES.last, CLASSES.lastCollapsable).end() 29 | .find(">.hitarea").replaceClass(CLASSES.collapsableHitarea, CLASSES.lastCollapsableHitarea); 30 | if (parent.is(":not(:has(>))") && parent[0] != this) { 31 | parent.parent().removeClass(CLASSES.collapsable).removeClass(CLASSES.expandable) 32 | parent.siblings(".hitarea").andSelf().remove(); 33 | } 34 | }); 35 | }; 36 | 37 | })(jQuery); -------------------------------------------------------------------------------- /server/static/components/sticky.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Sticky 16 | *******************************/ 17 | 18 | .ui.sticky { 19 | position: static; 20 | -webkit-transition: width 0.2s ease, height 0.2s ease, top 0.2s ease, bottom 0.2s ease; 21 | transition: width 0.2s ease, height 0.2s ease, top 0.2s ease, bottom 0.2s ease; 22 | z-index: 800; 23 | } 24 | 25 | 26 | /******************************* 27 | States 28 | *******************************/ 29 | 30 | 31 | /* Bound */ 32 | .ui.sticky.bound { 33 | position: absolute; 34 | left: auto; 35 | right: auto; 36 | } 37 | 38 | /* Fixed */ 39 | .ui.sticky.fixed { 40 | position: fixed; 41 | left: auto; 42 | right: auto; 43 | } 44 | 45 | /* Bound/Fixed Position */ 46 | .ui.sticky.bound.top, 47 | .ui.sticky.fixed.top { 48 | top: 0px; 49 | bottom: auto; 50 | } 51 | .ui.sticky.bound.bottom, 52 | .ui.sticky.fixed.bottom { 53 | top: auto; 54 | bottom: 0px; 55 | } 56 | 57 | 58 | /******************************* 59 | Types 60 | *******************************/ 61 | 62 | .ui.native.sticky { 63 | position: -webkit-sticky; 64 | position: -moz-sticky; 65 | position: -ms-sticky; 66 | position: -o-sticky; 67 | position: sticky; 68 | } 69 | 70 | 71 | /******************************* 72 | Theme Overrides 73 | *******************************/ 74 | 75 | 76 | 77 | /******************************* 78 | Site Overrides 79 | *******************************/ 80 | 81 | -------------------------------------------------------------------------------- /server/templates/library.html: -------------------------------------------------------------------------------- 1 | {% set pie_library = { 2 | "tooltip": { 3 | "pointFormat": '{series.name}: {point.y}' 4 | }, 5 | "plotOptions": {"pie": { 6 | "borderWidth": 0, 7 | "dataLabels": { "enabled": false }, 8 | "showInLegend": true, 9 | } 10 | }, 11 | "title": { "text": "Packet Size" }, 12 | 13 | 14 | } %} 15 | 16 | {% set col_library = { 17 | "yAxis": [{ 18 | "id": 0, 19 | "min": 0, 20 | "opposite": false, 21 | "title": { 22 | "text": "Packets" } 23 | } 24 | ], 25 | "title": { "text": "Protocols" } 26 | } %} 27 | 28 | {% set bar_src_library = { 29 | "yAxis": [{ 30 | "id": 0, 31 | "min": 0, 32 | "opposite": false, 33 | "title": { 34 | "text": "Packets Num" } 35 | } 36 | ], 37 | "title": { "text": "Source IP" }, 38 | } %} 39 | 40 | {% set bar_dst_library = { 41 | "yAxis": [{ 42 | "id": 0, 43 | "min": 0, 44 | "opposite": false, 45 | "title": { 46 | "text": "Packets Num" } 47 | } 48 | ], 49 | "title": { "text": "Destnation IP" } 50 | } %} 51 | 52 | {% set bar_dns_library = { 53 | "yAxis": [{ 54 | "id": 0, 55 | "min": 0, 56 | "opposite": false, 57 | "title": { 58 | "text": "Packets Num" } 59 | } 60 | ], 61 | "title": { "text": "DNS Requests" }, 62 | } %} 63 | 64 | {% set pie_dst_library = { 65 | "tooltip": { 66 | "pointFormat": '{series.name}: {point.y}' 67 | }, 68 | "plotOptions": {"pie": { 69 | "borderWidth": 0, 70 | "dataLabels": { "enabled": false }, 71 | "showInLegend": true, 72 | } 73 | }, 74 | "title": { "text": "Destnation Ports" }, 75 | } %} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/sticky.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Sticky 16 | *******************************/ 17 | 18 | .ui.sticky { 19 | position: static; 20 | -webkit-transition: width 0.2s ease, height 0.2s ease, top 0.2s ease, bottom 0.2s ease; 21 | transition: width 0.2s ease, height 0.2s ease, top 0.2s ease, bottom 0.2s ease; 22 | z-index: 800; 23 | } 24 | 25 | 26 | /******************************* 27 | States 28 | *******************************/ 29 | 30 | 31 | /* Bound */ 32 | .ui.sticky.bound { 33 | position: absolute; 34 | left: auto; 35 | right: auto; 36 | } 37 | 38 | /* Fixed */ 39 | .ui.sticky.fixed { 40 | position: fixed; 41 | left: auto; 42 | right: auto; 43 | } 44 | 45 | /* Bound/Fixed Position */ 46 | .ui.sticky.bound.top, 47 | .ui.sticky.fixed.top { 48 | top: 0px; 49 | bottom: auto; 50 | } 51 | .ui.sticky.bound.bottom, 52 | .ui.sticky.fixed.bottom { 53 | top: auto; 54 | bottom: 0px; 55 | } 56 | 57 | 58 | /******************************* 59 | Types 60 | *******************************/ 61 | 62 | .ui.native.sticky { 63 | position: -webkit-sticky; 64 | position: -moz-sticky; 65 | position: -ms-sticky; 66 | position: -o-sticky; 67 | position: sticky; 68 | } 69 | 70 | 71 | /******************************* 72 | Theme Overrides 73 | *******************************/ 74 | 75 | 76 | 77 | /******************************* 78 | Site Overrides 79 | *******************************/ 80 | 81 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/templates/library.html: -------------------------------------------------------------------------------- 1 | {% set pie_library = { 2 | "tooltip": { 3 | "pointFormat": '{series.name}: {point.y}' 4 | }, 5 | "plotOptions": {"pie": { 6 | "borderWidth": 0, 7 | "dataLabels": { "enabled": false }, 8 | "showInLegend": true, 9 | } 10 | }, 11 | "title": { "text": "Packet Size" }, 12 | 13 | 14 | } %} 15 | 16 | {% set col_library = { 17 | "yAxis": [{ 18 | "id": 0, 19 | "min": 0, 20 | "opposite": false, 21 | "title": { 22 | "text": "Packets" } 23 | } 24 | ], 25 | "title": { "text": "Protocols" } 26 | } %} 27 | 28 | {% set bar_src_library = { 29 | "yAxis": [{ 30 | "id": 0, 31 | "min": 0, 32 | "opposite": false, 33 | "title": { 34 | "text": "Packets Num" } 35 | } 36 | ], 37 | "title": { "text": "Source IP" }, 38 | } %} 39 | 40 | {% set bar_dst_library = { 41 | "yAxis": [{ 42 | "id": 0, 43 | "min": 0, 44 | "opposite": false, 45 | "title": { 46 | "text": "Packets Num" } 47 | } 48 | ], 49 | "title": { "text": "Destnation IP" } 50 | } %} 51 | 52 | {% set bar_dns_library = { 53 | "yAxis": [{ 54 | "id": 0, 55 | "min": 0, 56 | "opposite": false, 57 | "title": { 58 | "text": "Packets Num" } 59 | } 60 | ], 61 | "title": { "text": "DNS Requests" }, 62 | } %} 63 | 64 | {% set pie_dst_library = { 65 | "tooltip": { 66 | "pointFormat": '{series.name}: {point.y}' 67 | }, 68 | "plotOptions": {"pie": { 69 | "borderWidth": 0, 70 | "dataLabels": { "enabled": false }, 71 | "showInLegend": true, 72 | } 73 | }, 74 | "title": { "text": "Destnation Ports" }, 75 | } %} -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | Pcap Analyzer 2 | ====== 3 | 4 | 5 | 数据包文件分析工具 6 | 7 | Web Package Analytic Tool 8 | 9 | ![img](img/pcap-analyzer-01.png) 10 | 11 | 12 | Features 13 | --- 14 | 15 | * 轻量,易读.但不适合大数据包分析.(可以基于此改进) 16 | * 上传,存储,下载基本功能 17 | * 数据包分析 18 | * 数据包列表 19 | * 数据包细节查询 20 | * Filter过滤 21 | * 数据包分析(来源/目的:IP/端口) 22 | 23 | Files 24 | --- 25 | 26 | ``` 27 | . 28 | ├── app.py(运行Server) 29 | ├── img(ScreenShot) 30 | ├── server 31 | │ ├── __init__.py(Core) 32 | │ ├── func.py(调用函数) 33 | │ ├── views.py(视图) 34 | │ ├── pcapfile(上传文件目录) 35 | │ ├── db(数据库) 36 | │ ├── static(静态文件) 37 | │ └── templates(模板) 38 | ├── readme.md(项目说明) 39 | ├── requirements.txt(python库依赖) 40 | ├── run.sh(运行项目) 41 | └── run.bat(Windows下运行项目) 42 | ``` 43 | 44 | Install 45 | --- 46 | - Linux: 47 | - $ pip install -r requirements.txt 48 | - $ python app.py 49 | - View http://localhost:8080/ 50 | 51 | - Window: 52 | - Pycharm 导入github 库 53 | - 还需要安装3个编译库,参考下面文档 54 | - https://github.com/Kondziowy/scapy_win64/tree/master/win64 55 | - https://github.com/CoreSecurity/pcapy/wiki/Compiling-Pcapy-on-Windows-Guide 56 | 57 | Screenshots 58 | --- 59 | 60 | ![img](img/pcap-analyzer-01.png) 61 | 62 | ![img](img/pcap-analyzer-02.png) 63 | 64 | ![img](img/pcap-analyzer-03.png) 65 | 66 | ![img](img/pcap-analyzer-04.png) 67 | 68 | ![img](img/pcap-analyzer-05.png) 69 | 70 | ![img](img/pcap-analyzer-06.png) 71 | 72 | ![img](img/pcap-analyzer-07.png) 73 | 74 | ![img](img/pcap-analyzer-08.png) 75 | 76 | 77 | Build With 78 | --- 79 | 80 | * [Flask](http://flask.pocoo.org) 81 | * [Semanstic-UI](http://semantic-ui.com) 82 | * [JQuery](http://jquery.com/) 83 | * [PyShark](http://kiminewt.github.io/pyshark/) 84 | * [Chartkick](https://github.com/mher/chartkick.py) 85 | * [Highcharts](http://api.highcharts.com/highcharts) 86 | 87 | Thanks to 88 | --- 89 | [pcap-analyzer](https://github.com/le4f/pcap-analyzer) 90 | -------------------------------------------------------------------------------- /server/static/js/jquery.json.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery JSON plugin v2.5.1 | github.com/Krinkle/jquery-json */ 2 | !function($){"use strict";var escape=/["\\\x00-\x1f\x7f-\x9f]/g,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},hasOwn=Object.prototype.hasOwnProperty;$.toJSON="object"==typeof JSON&&JSON.stringify?JSON.stringify:function(a){if(null===a)return"null";var b,c,d,e,f=$.type(a);if("undefined"===f)return void 0;if("number"===f||"boolean"===f)return String(a);if("string"===f)return $.quoteString(a);if("function"==typeof a.toJSON)return $.toJSON(a.toJSON());if("date"===f){var g=a.getUTCMonth()+1,h=a.getUTCDate(),i=a.getUTCFullYear(),j=a.getUTCHours(),k=a.getUTCMinutes(),l=a.getUTCSeconds(),m=a.getUTCMilliseconds();return 10>g&&(g="0"+g),10>h&&(h="0"+h),10>j&&(j="0"+j),10>k&&(k="0"+k),10>l&&(l="0"+l),100>m&&(m="0"+m),10>m&&(m="0"+m),'"'+i+"-"+g+"-"+h+"T"+j+":"+k+":"+l+"."+m+'Z"'}if(b=[],$.isArray(a)){for(c=0;c.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>div{display:table-cell;vertical-align:middle;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0;z-index:-100;background-color:transparent}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background:rgba(255,255,255,.85)} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/reset.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | *,:after,:before{box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/dimmer.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .dimmable{position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>div{display:table-cell;vertical-align:middle;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0;z-index:-100;background-color:transparent}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background:rgba(255,255,255,.85)} -------------------------------------------------------------------------------- /server/static/js/analyze.js: -------------------------------------------------------------------------------- 1 | var content = [ 2 | { title: 'http' }, 3 | { title: 'dns' }, 4 | { title: 'icmp' }, 5 | { title: 'smb || nbns || dcerpc || nbss || dns' }, 6 | { title: 'ip.src==' }, 7 | { title: 'ip.dst==' }, 8 | { title: 'ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16' }, 9 | { title: '!(ip.src == 10.43.54.65 or ip.dst == 10.43.54.65)'}, 10 | { title: 'udp contains 81:60:03' }, 11 | { title: 'eth.addr[0:3]==00:06:5B' }, 12 | { title: 'http.request.uri matches "login$"' }, 13 | { title: 'tcp.port eq 25' }, 14 | // etc 15 | ]; 16 | 17 | $(document).ready(function() { 18 | $('#analyzer-nav').addClass('active'); 19 | 20 | $('.ui.checkbox').checkbox(); 21 | 22 | $('.ui.accordion').accordion(); 23 | 24 | $('.menu .item').tab(); 25 | 26 | $("#pcaptable").FixedHead({ tableLayout: "floated" }); 27 | 28 | $('.ui.search').search({ 29 | source: content 30 | }); 31 | 32 | $('input#filter').keyup(function(e){ 33 | event.preventDefault(); 34 | if (e.keyCode == 13) { 35 | $('.ui.small.que.modal') 36 | .modal({ 37 | closable : true, 38 | onDeny : function(){ 39 | return true; 40 | }, 41 | onApprove : function() { 42 | window.location.href= window.location.pathname + '?filter=' + $('input#filter').val(); 43 | } 44 | }).modal('show'); 45 | } 46 | }); 47 | 48 | $('.pktdetail tr').on('click', function(e){ 49 | $("#loadbartable").addClass('active'); 50 | $("#loadbar").modal({closable : true,}).modal('show'); 51 | e.preventDefault(); 52 | var packetPane = $('.packetPane') 53 | packetPane.html(''); 54 | $('.spinner').removeClass('hide'); 55 | var packetDetail = $.ajax({ 56 | type : "GET", 57 | url : "/packetdetail/" + $("input[name='analyzeid']").val() + '/' + $(this).children().first().text(), 58 | contentType: 'application/text;charset=UTF-8', 59 | success: function(text){ 60 | $('.spinner').addClass('hide'); 61 | packetPane.html(text); 62 | $('.ui.packetPane.modal') 63 | .modal({ 64 | closable : true, 65 | }).modal('show'); 66 | } 67 | }); 68 | }); 69 | }); 70 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/js/analyze.js: -------------------------------------------------------------------------------- 1 | var content = [ 2 | { title: 'http' }, 3 | { title: 'dns' }, 4 | { title: 'icmp' }, 5 | { title: 'smb || nbns || dcerpc || nbss || dns' }, 6 | { title: 'ip.src==' }, 7 | { title: 'ip.dst==' }, 8 | { title: 'ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16' }, 9 | { title: '!(ip.src == 10.43.54.65 or ip.dst == 10.43.54.65)'}, 10 | { title: 'udp contains 81:60:03' }, 11 | { title: 'eth.addr[0:3]==00:06:5B' }, 12 | { title: 'http.request.uri matches "login$"' }, 13 | { title: 'tcp.port eq 25' }, 14 | // etc 15 | ]; 16 | 17 | $(document).ready(function() { 18 | $('#analyzer-nav').addClass('active'); 19 | 20 | $('.ui.checkbox').checkbox(); 21 | 22 | $('.ui.accordion').accordion(); 23 | 24 | $('.menu .item').tab(); 25 | 26 | $("#pcaptable").FixedHead({ tableLayout: "floated" }); 27 | 28 | $('.ui.search').search({ 29 | source: content 30 | }); 31 | 32 | $('input#filter').keyup(function(e){ 33 | event.preventDefault(); 34 | if (e.keyCode == 13) { 35 | $('.ui.small.que.modal') 36 | .modal({ 37 | closable : true, 38 | onDeny : function(){ 39 | return true; 40 | }, 41 | onApprove : function() { 42 | window.location.href= window.location.pathname + '?filter=' + $('input#filter').val(); 43 | } 44 | }).modal('show'); 45 | } 46 | }); 47 | 48 | $('.pktdetail tr').on('click', function(e){ 49 | $("#loadbartable").addClass('active'); 50 | $("#loadbar").modal({closable : true,}).modal('show'); 51 | e.preventDefault(); 52 | var packetPane = $('.packetPane') 53 | packetPane.html(''); 54 | $('.spinner').removeClass('hide'); 55 | var packetDetail = $.ajax({ 56 | type : "GET", 57 | url : "/packetdetail/" + $("input[name='analyzeid']").val() + '/' + $(this).children().first().text(), 58 | contentType: 'application/text;charset=UTF-8', 59 | success: function(text){ 60 | $('.spinner').addClass('hide'); 61 | packetPane.html(text); 62 | $('.ui.packetPane.modal') 63 | .modal({ 64 | closable : true, 65 | }).modal('show'); 66 | } 67 | }); 68 | }); 69 | }); 70 | -------------------------------------------------------------------------------- /server/static/js/fixtableheader.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Auther:Mike.Jiang 3 | * Email: dataadapter@hotmail.com 4 | * Date: 2012-09-05 5 | */ 6 | /* 7 | 主要思想: 8 | 1>将原有的TABLE中的THEAD元素复制一份放在一个新的DIV(fixedheadwrap)中 9 | 2>设置这个fixedheadwrap为绝对位于原来的TABLE的THEAD位置 10 | */ 11 | (function ($) { 12 | $.fn.extend({ 13 | FixedHead: function (options) { 14 | var op = $.extend({ tableLayout: "auto" }, options); 15 | return this.each(function () { 16 | var $this = $(this); //指向当前的table 17 | var $thisParentDiv = $(this).parent(); //指向当前table的父级DIV,这个DIV要自己手动加上去 18 | $thisParentDiv.wrap("
").parent().css({ "position": "relative" }); //在当前table的父级DIV上,再加一个DIV 19 | var x = $thisParentDiv.position(); 20 | 21 | var fixedDiv = $("
") 22 | .insertBefore($thisParentDiv)//在当前table的父级DIV的前面加一个DIV,此DIV用来包装tabelr的表头 23 | .css({ "width": $thisParentDiv[0].clientWidth, "left": x.left, "top": x.top }); 24 | 25 | var $thisClone = $this.clone(true); 26 | $thisClone.find("tbody").remove(); //复制一份table,并将tbody中的内容删除,这样就仅余thead,所以要求表格的表头要放在thead中 27 | $thisClone.appendTo(fixedDiv); //将表头添加到fixedDiv中 28 | 29 | $this.css({ "marginTop": 0, "table-layout": op.tableLayout }); 30 | //当前TABLE的父级DIV有水平滚动条,并水平滚动时,同时滚动包装thead的DIV 31 | $thisParentDiv.scroll(function () { 32 | fixedDiv[0].scrollLeft = $(this)[0].scrollLeft; 33 | }); 34 | 35 | //因为固定后的表头与原来的表格分离开了,难免会有一些宽度问题 36 | //下面的代码是将原来表格中每一个TD的宽度赋给新的固定表头 37 | var $fixHeadTrs = $thisClone.find("thead tr"); 38 | var $orginalHeadTrs = $this.find("thead"); 39 | $fixHeadTrs.each(function (indexTr) { 40 | var $curFixTds = $(this).find("td"); 41 | var $curOrgTr = $orginalHeadTrs.find("tr:eq(" + indexTr + ")"); 42 | $curFixTds.each(function (indexTd) { 43 | $(this).css("width", $curOrgTr.find("td:eq(" + indexTd + ")").width()); 44 | }); 45 | }); 46 | }); 47 | } 48 | }); 49 | })(jQuery); -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/js/fixtableheader.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Auther:Mike.Jiang 3 | * Email: dataadapter@hotmail.com 4 | * Date: 2012-09-05 5 | */ 6 | /* 7 | 主要思想: 8 | 1>将原有的TABLE中的THEAD元素复制一份放在一个新的DIV(fixedheadwrap)中 9 | 2>设置这个fixedheadwrap为绝对位于原来的TABLE的THEAD位置 10 | */ 11 | (function ($) { 12 | $.fn.extend({ 13 | FixedHead: function (options) { 14 | var op = $.extend({ tableLayout: "auto" }, options); 15 | return this.each(function () { 16 | var $this = $(this); //指向当前的table 17 | var $thisParentDiv = $(this).parent(); //指向当前table的父级DIV,这个DIV要自己手动加上去 18 | $thisParentDiv.wrap("
").parent().css({ "position": "relative" }); //在当前table的父级DIV上,再加一个DIV 19 | var x = $thisParentDiv.position(); 20 | 21 | var fixedDiv = $("
") 22 | .insertBefore($thisParentDiv)//在当前table的父级DIV的前面加一个DIV,此DIV用来包装tabelr的表头 23 | .css({ "width": $thisParentDiv[0].clientWidth, "left": x.left, "top": x.top }); 24 | 25 | var $thisClone = $this.clone(true); 26 | $thisClone.find("tbody").remove(); //复制一份table,并将tbody中的内容删除,这样就仅余thead,所以要求表格的表头要放在thead中 27 | $thisClone.appendTo(fixedDiv); //将表头添加到fixedDiv中 28 | 29 | $this.css({ "marginTop": 0, "table-layout": op.tableLayout }); 30 | //当前TABLE的父级DIV有水平滚动条,并水平滚动时,同时滚动包装thead的DIV 31 | $thisParentDiv.scroll(function () { 32 | fixedDiv[0].scrollLeft = $(this)[0].scrollLeft; 33 | }); 34 | 35 | //因为固定后的表头与原来的表格分离开了,难免会有一些宽度问题 36 | //下面的代码是将原来表格中每一个TD的宽度赋给新的固定表头 37 | var $fixHeadTrs = $thisClone.find("thead tr"); 38 | var $orginalHeadTrs = $this.find("thead"); 39 | $fixHeadTrs.each(function (indexTr) { 40 | var $curFixTds = $(this).find("td"); 41 | var $curOrgTr = $orginalHeadTrs.find("tr:eq(" + indexTr + ")"); 42 | $curFixTds.each(function (indexTd) { 43 | $(this).css("width", $curOrgTr.find("td:eq(" + indexTd + ")").width()); 44 | }); 45 | }); 46 | }); 47 | } 48 | }); 49 | })(jQuery); -------------------------------------------------------------------------------- /pcap-analyzer-master/server/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Pcap-Analyzer 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 25 | 26 | 27 |
28 |
Loading
29 |
30 | 35 | 46 |
47 |
48 |
49 |
50 |
51 | {% block content %} 52 | {% endblock %} 53 |
54 |
55 |
56 |

57 | 58 | -------------------------------------------------------------------------------- /server/static/components/breadcrumb.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Breadcrumb 16 | *******************************/ 17 | 18 | .ui.breadcrumb { 19 | margin: 1em 0em; 20 | display: inline-block; 21 | vertical-align: middle; 22 | } 23 | .ui.breadcrumb:first-child { 24 | margin-top: 0em; 25 | } 26 | .ui.breadcrumb:last-child { 27 | margin-bottom: 0em; 28 | } 29 | 30 | 31 | /******************************* 32 | Content 33 | *******************************/ 34 | 35 | 36 | /* Divider */ 37 | .ui.breadcrumb .divider { 38 | display: inline-block; 39 | opacity: 0.5; 40 | margin: 0em 0.2rem 0em; 41 | font-size: 0.9em; 42 | color: rgba(0, 0, 0, 0.4); 43 | vertical-align: baseline; 44 | } 45 | 46 | /* Link */ 47 | .ui.breadcrumb a { 48 | color: #009fda; 49 | } 50 | .ui.breadcrumb a:hover { 51 | color: #00b2f3; 52 | } 53 | 54 | /* Icon Divider */ 55 | .ui.breadcrumb .icon.divider { 56 | font-size: 0.7em; 57 | vertical-align: middle; 58 | } 59 | 60 | /* Section */ 61 | .ui.breadcrumb a.section { 62 | cursor: pointer; 63 | } 64 | .ui.breadcrumb .section { 65 | display: inline-block; 66 | margin: 0em; 67 | padding: 0em; 68 | } 69 | 70 | /* Loose Coupling */ 71 | .ui.breadcrumb.segment { 72 | display: inline-block; 73 | padding: 0.5em 1em; 74 | } 75 | 76 | 77 | /******************************* 78 | States 79 | *******************************/ 80 | 81 | .ui.breadcrumb .active.section { 82 | font-weight: bold; 83 | } 84 | 85 | 86 | /******************************* 87 | Variations 88 | *******************************/ 89 | 90 | .ui.mini.breadcrumb { 91 | font-size: 0.65em; 92 | } 93 | .ui.tiny.breadcrumb { 94 | font-size: 0.7em; 95 | } 96 | .ui.small.breadcrumb { 97 | font-size: 0.75em; 98 | } 99 | .ui.breadcrumb { 100 | font-size: 1em; 101 | } 102 | .ui.large.breadcrumb { 103 | font-size: 1.1em; 104 | } 105 | .ui.big.breadcrumb { 106 | font-size: 1.05em; 107 | } 108 | .ui.huge.breadcrumb { 109 | font-size: 1.3em; 110 | } 111 | .ui.massive.breadcrumb { 112 | font-size: 1.5em; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/breadcrumb.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Breadcrumb 16 | *******************************/ 17 | 18 | .ui.breadcrumb { 19 | margin: 1em 0em; 20 | display: inline-block; 21 | vertical-align: middle; 22 | } 23 | .ui.breadcrumb:first-child { 24 | margin-top: 0em; 25 | } 26 | .ui.breadcrumb:last-child { 27 | margin-bottom: 0em; 28 | } 29 | 30 | 31 | /******************************* 32 | Content 33 | *******************************/ 34 | 35 | 36 | /* Divider */ 37 | .ui.breadcrumb .divider { 38 | display: inline-block; 39 | opacity: 0.5; 40 | margin: 0em 0.2rem 0em; 41 | font-size: 0.9em; 42 | color: rgba(0, 0, 0, 0.4); 43 | vertical-align: baseline; 44 | } 45 | 46 | /* Link */ 47 | .ui.breadcrumb a { 48 | color: #009fda; 49 | } 50 | .ui.breadcrumb a:hover { 51 | color: #00b2f3; 52 | } 53 | 54 | /* Icon Divider */ 55 | .ui.breadcrumb .icon.divider { 56 | font-size: 0.7em; 57 | vertical-align: middle; 58 | } 59 | 60 | /* Section */ 61 | .ui.breadcrumb a.section { 62 | cursor: pointer; 63 | } 64 | .ui.breadcrumb .section { 65 | display: inline-block; 66 | margin: 0em; 67 | padding: 0em; 68 | } 69 | 70 | /* Loose Coupling */ 71 | .ui.breadcrumb.segment { 72 | display: inline-block; 73 | padding: 0.5em 1em; 74 | } 75 | 76 | 77 | /******************************* 78 | States 79 | *******************************/ 80 | 81 | .ui.breadcrumb .active.section { 82 | font-weight: bold; 83 | } 84 | 85 | 86 | /******************************* 87 | Variations 88 | *******************************/ 89 | 90 | .ui.mini.breadcrumb { 91 | font-size: 0.65em; 92 | } 93 | .ui.tiny.breadcrumb { 94 | font-size: 0.7em; 95 | } 96 | .ui.small.breadcrumb { 97 | font-size: 0.75em; 98 | } 99 | .ui.breadcrumb { 100 | font-size: 1em; 101 | } 102 | .ui.large.breadcrumb { 103 | font-size: 1.1em; 104 | } 105 | .ui.big.breadcrumb { 106 | font-size: 1.05em; 107 | } 108 | .ui.huge.breadcrumb { 109 | font-size: 1.3em; 110 | } 111 | .ui.massive.breadcrumb { 112 | font-size: 1.5em; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /server/static/components/comment.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.8);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#00b2f3}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.8);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;box-shadow:-1px 0 0 rgba(39,41,43,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.small.comments{font-size:.9em}.ui.comments{font-size:1em}.ui.large.comments{font-size:1.1em}.ui.huge.comments{font-size:1.2em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/comment.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.8);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#00b2f3}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.8);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;box-shadow:-1px 0 0 rgba(39,41,43,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.small.comments{font-size:.9em}.ui.comments{font-size:1em}.ui.large.comments{font-size:1.1em}.ui.huge.comments{font-size:1.2em} -------------------------------------------------------------------------------- /server/static/components/rail.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Rails 16 | *******************************/ 17 | 18 | .ui.rail { 19 | font-size: 1em; 20 | position: absolute; 21 | top: 0%; 22 | width: 300px; 23 | box-sizing: content-box; 24 | } 25 | .ui.left.rail { 26 | left: auto; 27 | right: 100%; 28 | padding: 0em 2rem 0em 0em; 29 | margin: 0em 2rem 0em 0em; 30 | } 31 | .ui.right.rail { 32 | left: 100%; 33 | right: auto; 34 | padding: 0em 0em 0em 2rem; 35 | margin: 0em 0em 0em 2rem; 36 | } 37 | 38 | 39 | /******************************* 40 | Variations 41 | *******************************/ 42 | 43 | 44 | /*-------------- 45 | Internal 46 | ---------------*/ 47 | 48 | .ui.left.internal.rail { 49 | left: 0%; 50 | right: auto; 51 | padding: 0em 0em 0em 2rem; 52 | margin: 0em 0em 0em 2rem; 53 | } 54 | .ui.right.internal.rail { 55 | left: auto; 56 | right: 0%; 57 | padding: 0em 2rem 0em 0em; 58 | margin: 0em 2rem 0em 0em; 59 | } 60 | 61 | /*-------------- 62 | Divided 63 | ---------------*/ 64 | 65 | .ui.left.dividing.rail { 66 | padding: 0em 2.5rem 0em 0em; 67 | margin: 0em 2.5rem 0em 0em; 68 | border-right: 1px solid rgba(39, 41, 43, 0.15); 69 | } 70 | .ui.right.dividing.rail { 71 | border-left: 1px solid rgba(39, 41, 43, 0.15); 72 | padding: 0em 0em 0em 2.5rem; 73 | margin: 0em 0em 0em 2.5rem; 74 | } 75 | 76 | /*-------------- 77 | Distance 78 | ---------------*/ 79 | 80 | .ui.close.left.rail { 81 | padding: 0em 1em 0em 0em; 82 | margin: 0em 1em 0em 0em; 83 | } 84 | .ui.close.right.rail { 85 | padding: 0em 0em 0em 1em; 86 | margin: 0em 0em 0em 1em; 87 | } 88 | .ui.very.close.left.rail { 89 | padding: 0em 0.5em 0em 0em; 90 | margin: 0em 0.5em 0em 0em; 91 | } 92 | .ui.very.close.right.rail { 93 | padding: 0em 0em 0em 0.5em; 94 | margin: 0em 0em 0em 0.5em; 95 | } 96 | 97 | /*-------------- 98 | Attached 99 | ---------------*/ 100 | 101 | .ui.attached.left.rail, 102 | .ui.attached.right.rail { 103 | padding: 0em; 104 | margin: 0em; 105 | } 106 | 107 | /*-------------- 108 | Sizing 109 | ---------------*/ 110 | 111 | .ui.rail { 112 | font-size: 1em; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /server/static/components/image.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block;background:0 0}.ui.image img{display:block;max-width:100%;height:auto}.ui.disabled.image{cursor:default;opacity:.3}.ui.inline.image,.ui.inline.image img{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image img,.ui.rounded.images .image,.ui.rounded.images img{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.images .image,.ui.bordered.images img,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image img,.ui.circular.images .image,.ui.circular.images img{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.images,.ui.fluid.images img{display:block;width:100%}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.images .image,.ui.avatar.images img{margin-right:.25em;display:inline-block;width:2.5em;height:2.5em;border-radius:500rem}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img{width:20px;font-size:.71428571rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img{width:80px;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img{width:150px;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img{width:300px;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img{width:450px;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img{width:600px;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img{width:800px;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img{width:960px;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img{display:inline-block;margin:0 .25rem .5rem} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/rail.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Rails 16 | *******************************/ 17 | 18 | .ui.rail { 19 | font-size: 1em; 20 | position: absolute; 21 | top: 0%; 22 | width: 300px; 23 | box-sizing: content-box; 24 | } 25 | .ui.left.rail { 26 | left: auto; 27 | right: 100%; 28 | padding: 0em 2rem 0em 0em; 29 | margin: 0em 2rem 0em 0em; 30 | } 31 | .ui.right.rail { 32 | left: 100%; 33 | right: auto; 34 | padding: 0em 0em 0em 2rem; 35 | margin: 0em 0em 0em 2rem; 36 | } 37 | 38 | 39 | /******************************* 40 | Variations 41 | *******************************/ 42 | 43 | 44 | /*-------------- 45 | Internal 46 | ---------------*/ 47 | 48 | .ui.left.internal.rail { 49 | left: 0%; 50 | right: auto; 51 | padding: 0em 0em 0em 2rem; 52 | margin: 0em 0em 0em 2rem; 53 | } 54 | .ui.right.internal.rail { 55 | left: auto; 56 | right: 0%; 57 | padding: 0em 2rem 0em 0em; 58 | margin: 0em 2rem 0em 0em; 59 | } 60 | 61 | /*-------------- 62 | Divided 63 | ---------------*/ 64 | 65 | .ui.left.dividing.rail { 66 | padding: 0em 2.5rem 0em 0em; 67 | margin: 0em 2.5rem 0em 0em; 68 | border-right: 1px solid rgba(39, 41, 43, 0.15); 69 | } 70 | .ui.right.dividing.rail { 71 | border-left: 1px solid rgba(39, 41, 43, 0.15); 72 | padding: 0em 0em 0em 2.5rem; 73 | margin: 0em 0em 0em 2.5rem; 74 | } 75 | 76 | /*-------------- 77 | Distance 78 | ---------------*/ 79 | 80 | .ui.close.left.rail { 81 | padding: 0em 1em 0em 0em; 82 | margin: 0em 1em 0em 0em; 83 | } 84 | .ui.close.right.rail { 85 | padding: 0em 0em 0em 1em; 86 | margin: 0em 0em 0em 1em; 87 | } 88 | .ui.very.close.left.rail { 89 | padding: 0em 0.5em 0em 0em; 90 | margin: 0em 0.5em 0em 0em; 91 | } 92 | .ui.very.close.right.rail { 93 | padding: 0em 0em 0em 0.5em; 94 | margin: 0em 0em 0em 0.5em; 95 | } 96 | 97 | /*-------------- 98 | Attached 99 | ---------------*/ 100 | 101 | .ui.attached.left.rail, 102 | .ui.attached.right.rail { 103 | padding: 0em; 104 | margin: 0em; 105 | } 106 | 107 | /*-------------- 108 | Sizing 109 | ---------------*/ 110 | 111 | .ui.rail { 112 | font-size: 1em; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/image.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block;background:0 0}.ui.image img{display:block;max-width:100%;height:auto}.ui.disabled.image{cursor:default;opacity:.3}.ui.inline.image,.ui.inline.image img{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image img,.ui.rounded.images .image,.ui.rounded.images img{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.images .image,.ui.bordered.images img,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image img,.ui.circular.images .image,.ui.circular.images img{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.images,.ui.fluid.images img{display:block;width:100%}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.images .image,.ui.avatar.images img{margin-right:.25em;display:inline-block;width:2.5em;height:2.5em;border-radius:500rem}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img{width:20px;font-size:.71428571rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img{width:80px;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img{width:150px;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img{width:300px;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img{width:450px;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img{width:600px;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img{width:800px;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img{width:960px;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img{display:inline-block;margin:0 .25rem .5rem} -------------------------------------------------------------------------------- /server/static/components/video.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Video 16 | *******************************/ 17 | 18 | .ui.video { 19 | background-color: #dddddd; 20 | position: relative; 21 | max-width: 100%; 22 | padding-bottom: 56.25%; 23 | height: 0px; 24 | overflow: hidden; 25 | } 26 | 27 | /*-------------- 28 | Content 29 | ---------------*/ 30 | 31 | 32 | /* Placeholder Image */ 33 | .ui.video .placeholder { 34 | background-color: #333333; 35 | } 36 | 37 | /* Play Icon Overlay */ 38 | .ui.video .play { 39 | cursor: pointer; 40 | position: absolute; 41 | top: 0px; 42 | left: 0px; 43 | z-index: 10; 44 | width: 100%; 45 | height: 100%; 46 | opacity: 0.8; 47 | -webkit-transition: opacity 0.3s; 48 | transition: opacity 0.3s; 49 | } 50 | .ui.video .play.icon:before { 51 | position: absolute; 52 | top: 50%; 53 | left: 50%; 54 | z-index: 11; 55 | background: rgba(0, 0, 0, 0.3); 56 | width: 8rem; 57 | height: 8rem; 58 | line-height: 8rem; 59 | border-radius: 500rem; 60 | color: #ffffff; 61 | font-size: 8rem; 62 | text-shadow: none; 63 | -webkit-transform: translateX(-50%) translateY(-50%); 64 | -ms-transform: translateX(-50%) translateY(-50%); 65 | transform: translateX(-50%) translateY(-50%); 66 | } 67 | .ui.video .placeholder { 68 | position: absolute; 69 | top: 0px; 70 | left: 0px; 71 | display: block; 72 | width: 100%; 73 | height: 100%; 74 | } 75 | 76 | /* IFrame Embed */ 77 | .ui.video .embed iframe, 78 | .ui.video .embed embed, 79 | .ui.video .embed object { 80 | position: absolute; 81 | border: none; 82 | width: 100%; 83 | height: 100%; 84 | top: 0px; 85 | left: 0px; 86 | margin: 0em; 87 | padding: 0em; 88 | } 89 | 90 | 91 | /******************************* 92 | States 93 | *******************************/ 94 | 95 | 96 | /*-------------- 97 | Hover 98 | ---------------*/ 99 | 100 | .ui.video .play:hover { 101 | opacity: 1; 102 | } 103 | 104 | /*-------------- 105 | Active 106 | ---------------*/ 107 | 108 | .ui.video.active .play, 109 | .ui.video.active .placeholder { 110 | display: none; 111 | } 112 | .ui.video.active .embed { 113 | display: inline; 114 | } 115 | 116 | 117 | /******************************* 118 | Video Overrides 119 | *******************************/ 120 | 121 | 122 | 123 | /******************************* 124 | Site Overrides 125 | *******************************/ 126 | 127 | -------------------------------------------------------------------------------- /server/static/components/popup.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.popup{display:none;position:absolute;top:0;right:0;z-index:900;border:1px solid #ccc;max-width:250px;background-color:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.8);border-radius:.2857rem;box-shadow:0 2px 4px rgba(0,0,0,.1)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.125em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.75em;height:.75em;background:#fff;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #b3b3b3}.ui.popup{margin:0}.ui.popup.bottom{margin:.75em 0 0}.ui.popup.top{margin:0 0 .75em}.ui.popup.left.center{margin:0 .75em 0 0}.ui.popup.right.center{margin:0 0 0 .75em}.ui.bottom.center.popup:before{margin-left:-.325em;top:-.325em;left:50%;right:auto;bottom:auto;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.325em;left:1em;right:auto;bottom:auto;margin-left:0;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.bottom.right.popup{margin-right:0}.ui.bottom.right.popup:before{top:-.325em;right:1em;bottom:auto;left:auto;margin-left:0;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.325em;left:50%;margin-left:-.325em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.325em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.325em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.325em;bottom:auto;left:auto;margin-top:-.325em;box-shadow:1px -1px 0 0 #b3b3b3}.ui.right.center.popup:before{top:50%;left:-.325em;bottom:auto;right:auto;margin-top:-.325em;box-shadow:-1px 1px 0 0 #b3b3b3}.ui.popup>.ui.grid:not(.padded){width:-webkit-calc(100% + 1.75rem);width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.basic.popup:before{display:none}.ui.wide.popup{width:350px;max-width:350px}.ui[class*="very wide"].popup{width:550px;max-width:550px}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.small.popup{font-size:.785714rem}.ui.popup{font-size:.85714rem}.ui.large.popup{font-size:1rem}.ui.huge.popup{font-size:1.14285rem} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/video.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Video 16 | *******************************/ 17 | 18 | .ui.video { 19 | background-color: #dddddd; 20 | position: relative; 21 | max-width: 100%; 22 | padding-bottom: 56.25%; 23 | height: 0px; 24 | overflow: hidden; 25 | } 26 | 27 | /*-------------- 28 | Content 29 | ---------------*/ 30 | 31 | 32 | /* Placeholder Image */ 33 | .ui.video .placeholder { 34 | background-color: #333333; 35 | } 36 | 37 | /* Play Icon Overlay */ 38 | .ui.video .play { 39 | cursor: pointer; 40 | position: absolute; 41 | top: 0px; 42 | left: 0px; 43 | z-index: 10; 44 | width: 100%; 45 | height: 100%; 46 | opacity: 0.8; 47 | -webkit-transition: opacity 0.3s; 48 | transition: opacity 0.3s; 49 | } 50 | .ui.video .play.icon:before { 51 | position: absolute; 52 | top: 50%; 53 | left: 50%; 54 | z-index: 11; 55 | background: rgba(0, 0, 0, 0.3); 56 | width: 8rem; 57 | height: 8rem; 58 | line-height: 8rem; 59 | border-radius: 500rem; 60 | color: #ffffff; 61 | font-size: 8rem; 62 | text-shadow: none; 63 | -webkit-transform: translateX(-50%) translateY(-50%); 64 | -ms-transform: translateX(-50%) translateY(-50%); 65 | transform: translateX(-50%) translateY(-50%); 66 | } 67 | .ui.video .placeholder { 68 | position: absolute; 69 | top: 0px; 70 | left: 0px; 71 | display: block; 72 | width: 100%; 73 | height: 100%; 74 | } 75 | 76 | /* IFrame Embed */ 77 | .ui.video .embed iframe, 78 | .ui.video .embed embed, 79 | .ui.video .embed object { 80 | position: absolute; 81 | border: none; 82 | width: 100%; 83 | height: 100%; 84 | top: 0px; 85 | left: 0px; 86 | margin: 0em; 87 | padding: 0em; 88 | } 89 | 90 | 91 | /******************************* 92 | States 93 | *******************************/ 94 | 95 | 96 | /*-------------- 97 | Hover 98 | ---------------*/ 99 | 100 | .ui.video .play:hover { 101 | opacity: 1; 102 | } 103 | 104 | /*-------------- 105 | Active 106 | ---------------*/ 107 | 108 | .ui.video.active .play, 109 | .ui.video.active .placeholder { 110 | display: none; 111 | } 112 | .ui.video.active .embed { 113 | display: inline; 114 | } 115 | 116 | 117 | /******************************* 118 | Video Overrides 119 | *******************************/ 120 | 121 | 122 | 123 | /******************************* 124 | Site Overrides 125 | *******************************/ 126 | 127 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/popup.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.popup{display:none;position:absolute;top:0;right:0;z-index:900;border:1px solid #ccc;max-width:250px;background-color:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.8);border-radius:.2857rem;box-shadow:0 2px 4px rgba(0,0,0,.1)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.125em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.75em;height:.75em;background:#fff;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #b3b3b3}.ui.popup{margin:0}.ui.popup.bottom{margin:.75em 0 0}.ui.popup.top{margin:0 0 .75em}.ui.popup.left.center{margin:0 .75em 0 0}.ui.popup.right.center{margin:0 0 0 .75em}.ui.bottom.center.popup:before{margin-left:-.325em;top:-.325em;left:50%;right:auto;bottom:auto;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.325em;left:1em;right:auto;bottom:auto;margin-left:0;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.bottom.right.popup{margin-right:0}.ui.bottom.right.popup:before{top:-.325em;right:1em;bottom:auto;left:auto;margin-left:0;box-shadow:-1px -1px 0 0 #b3b3b3}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.325em;left:50%;margin-left:-.325em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.325em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.325em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.325em;bottom:auto;left:auto;margin-top:-.325em;box-shadow:1px -1px 0 0 #b3b3b3}.ui.right.center.popup:before{top:50%;left:-.325em;bottom:auto;right:auto;margin-top:-.325em;box-shadow:-1px 1px 0 0 #b3b3b3}.ui.popup>.ui.grid:not(.padded){width:-webkit-calc(100% + 1.75rem);width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.basic.popup:before{display:none}.ui.wide.popup{width:350px;max-width:350px}.ui[class*="very wide"].popup{width:550px;max-width:550px}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.small.popup{font-size:.785714rem}.ui.popup{font-size:.85714rem}.ui.large.popup{font-size:1rem}.ui.huge.popup{font-size:1.14285rem} -------------------------------------------------------------------------------- /server/static/components/site.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | @import 'http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic'; 12 | 13 | 14 | 15 | /******************************* 16 | Page 17 | *******************************/ 18 | 19 | 20 | /* UI requires Border-Box */ 21 | *, 22 | *:before, 23 | *:after { 24 | box-sizing: border-box; 25 | } 26 | html, 27 | body { 28 | height: 100%; 29 | } 30 | html { 31 | font-size: 14px; 32 | } 33 | body { 34 | margin: 0px; 35 | padding: 0px; 36 | min-width: 278px; 37 | background: #f7f7f7; 38 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 39 | font-size: 14px; 40 | line-height: 1.33; 41 | color: rgba(0, 0, 0, 0.8); 42 | font-smoothing: antialiased; 43 | } 44 | 45 | 46 | /******************************* 47 | Headers 48 | *******************************/ 49 | 50 | h1, 51 | h2, 52 | h3, 53 | h4, 54 | h5 { 55 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 56 | line-height: 1.33em; 57 | margin: -webkit-calc(2rem - 0.165em ) 0em 1rem; 58 | margin: calc(2rem - 0.165em ) 0em 1rem; 59 | font-weight: bold; 60 | padding: 0em; 61 | } 62 | h1 { 63 | min-height: 1rem; 64 | font-size: 2rem; 65 | } 66 | h2 { 67 | font-size: 1.714rem; 68 | } 69 | h3 { 70 | font-size: 1.28rem; 71 | } 72 | h4 { 73 | font-size: 1.071rem; 74 | } 75 | h5 { 76 | font-size: 1rem; 77 | } 78 | 79 | 80 | /******************************* 81 | Text 82 | *******************************/ 83 | 84 | p { 85 | margin: 0em 0em 1em; 86 | line-height: 1.33; 87 | } 88 | p:first-child { 89 | margin-top: 0em; 90 | } 91 | p:last-child { 92 | margin-bottom: 0em; 93 | } 94 | 95 | /*------------------- 96 | Links 97 | --------------------*/ 98 | 99 | a { 100 | color: #009fda; 101 | text-decoration: none; 102 | } 103 | a:hover { 104 | color: #00b2f3; 105 | } 106 | 107 | 108 | /******************************* 109 | Highlighting 110 | *******************************/ 111 | 112 | ::-webkit-selection { 113 | background-color: rgba(255, 255, 160, 0.4); 114 | color: rgba(0, 0, 0, 0.8); 115 | } 116 | ::-moz-selection { 117 | background-color: rgba(255, 255, 160, 0.4); 118 | color: rgba(0, 0, 0, 0.8); 119 | } 120 | ::selection { 121 | background-color: rgba(255, 255, 160, 0.4); 122 | color: rgba(0, 0, 0, 0.8); 123 | } 124 | 125 | 126 | /******************************* 127 | Global Overrides 128 | *******************************/ 129 | 130 | 131 | 132 | /******************************* 133 | Site Overrides 134 | *******************************/ 135 | 136 | -------------------------------------------------------------------------------- /server/static/css/jquery.treeview.css: -------------------------------------------------------------------------------- 1 | .treeview, .treeview ul { 2 | padding: 0; 3 | margin: 0; 4 | list-style: none; 5 | } 6 | 7 | .treeview ul { 8 | background-color: white; 9 | margin-top: 4px; 10 | } 11 | 12 | .treeview .hitarea { 13 | background: url(../img/treeview-default.gif) -64px -25px no-repeat; 14 | height: 16px; 15 | width: 16px; 16 | margin-left: -16px; 17 | float: left; 18 | cursor: pointer; 19 | } 20 | /* fix for IE6 */ 21 | * html .hitarea { 22 | display: inline; 23 | float:none; 24 | } 25 | 26 | .treeview li { 27 | margin: 0; 28 | padding: 3px 0pt 3px 16px; 29 | } 30 | 31 | .treeview a.selected { 32 | background-color: #eee; 33 | } 34 | 35 | #treecontrol { margin: 1em 0; display: none; } 36 | 37 | .treeview .hover { color: red; cursor: pointer; } 38 | 39 | .treeview li { background: url(../img/treeview-default-line.gif) 0 0 no-repeat; } 40 | .treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } 41 | 42 | .treeview .expandable-hitarea { background-position: -80px -3px; } 43 | 44 | .treeview li.last { background-position: 0 -1766px } 45 | .treeview li.lastCollapsable, .treeview li.lastExpandable { background-img: url(../img/treeview-default.gif); } 46 | .treeview li.lastCollapsable { background-position: 0 -111px } 47 | .treeview li.lastExpandable { background-position: -32px -67px } 48 | 49 | .treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } 50 | 51 | .treeview-red li { background-img: url(../img/treeview-red-line.gif); } 52 | .treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-img: url(../img/treeview-red.gif); } 53 | 54 | .treeview-black li { background-img: url(../img/treeview-black-line.gif); } 55 | .treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-img: url(../img/treeview-black.gif); } 56 | 57 | .treeview-gray li { background-img: url(../img/treeview-gray-line.gif); } 58 | .treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-img: url(../img/treeview-gray.gif); } 59 | 60 | .treeview-famfamfam li { background-img: url(../img/treeview-famfamfam-line.gif); } 61 | .treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-img: url(../img/treeview-famfamfam.gif); } 62 | 63 | .treeview .placeholder { 64 | background: url(../img/ajax-loader.gif) 0 0 no-repeat; 65 | height: 16px; 66 | width: 16px; 67 | display: block; 68 | } 69 | 70 | .filetree li { padding: 3px 0 2px 16px; } 71 | .filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } 72 | .filetree span.folder { background: url(../img/folder.gif) 0 0 no-repeat; } 73 | .filetree li.expandable span.folder { background: url(../img/folder-closed.gif) 0 0 no-repeat; } 74 | .filetree span.file { background: url(../img/file.gif) 0 0 no-repeat; } 75 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/site.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | @import 'http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic'; 12 | 13 | 14 | 15 | /******************************* 16 | Page 17 | *******************************/ 18 | 19 | 20 | /* UI requires Border-Box */ 21 | *, 22 | *:before, 23 | *:after { 24 | box-sizing: border-box; 25 | } 26 | html, 27 | body { 28 | height: 100%; 29 | } 30 | html { 31 | font-size: 14px; 32 | } 33 | body { 34 | margin: 0px; 35 | padding: 0px; 36 | min-width: 278px; 37 | background: #f7f7f7; 38 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 39 | font-size: 14px; 40 | line-height: 1.33; 41 | color: rgba(0, 0, 0, 0.8); 42 | font-smoothing: antialiased; 43 | } 44 | 45 | 46 | /******************************* 47 | Headers 48 | *******************************/ 49 | 50 | h1, 51 | h2, 52 | h3, 53 | h4, 54 | h5 { 55 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 56 | line-height: 1.33em; 57 | margin: -webkit-calc(2rem - 0.165em ) 0em 1rem; 58 | margin: calc(2rem - 0.165em ) 0em 1rem; 59 | font-weight: bold; 60 | padding: 0em; 61 | } 62 | h1 { 63 | min-height: 1rem; 64 | font-size: 2rem; 65 | } 66 | h2 { 67 | font-size: 1.714rem; 68 | } 69 | h3 { 70 | font-size: 1.28rem; 71 | } 72 | h4 { 73 | font-size: 1.071rem; 74 | } 75 | h5 { 76 | font-size: 1rem; 77 | } 78 | 79 | 80 | /******************************* 81 | Text 82 | *******************************/ 83 | 84 | p { 85 | margin: 0em 0em 1em; 86 | line-height: 1.33; 87 | } 88 | p:first-child { 89 | margin-top: 0em; 90 | } 91 | p:last-child { 92 | margin-bottom: 0em; 93 | } 94 | 95 | /*------------------- 96 | Links 97 | --------------------*/ 98 | 99 | a { 100 | color: #009fda; 101 | text-decoration: none; 102 | } 103 | a:hover { 104 | color: #00b2f3; 105 | } 106 | 107 | 108 | /******************************* 109 | Highlighting 110 | *******************************/ 111 | 112 | ::-webkit-selection { 113 | background-color: rgba(255, 255, 160, 0.4); 114 | color: rgba(0, 0, 0, 0.8); 115 | } 116 | ::-moz-selection { 117 | background-color: rgba(255, 255, 160, 0.4); 118 | color: rgba(0, 0, 0, 0.8); 119 | } 120 | ::selection { 121 | background-color: rgba(255, 255, 160, 0.4); 122 | color: rgba(0, 0, 0, 0.8); 123 | } 124 | 125 | 126 | /******************************* 127 | Global Overrides 128 | *******************************/ 129 | 130 | 131 | 132 | /******************************* 133 | Site Overrides 134 | *******************************/ 135 | 136 | -------------------------------------------------------------------------------- /server/static/js/jquery.livequery.min.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) 2 | * Dual licensed under the MIT (MIT_LICENSE.txt) 3 | * and GPL Version 2 (GPL_LICENSE.txt) licenses. 4 | * 5 | * Version: 1.1.1 6 | * Requires jQuery 1.3+ 7 | * Docs: http://docs.jquery.com/Plugins/livequery 8 | */ 9 | (function(a){a.extend(a.fn,{livequery:function(e,d,c){var b=this,f;if(a.isFunction(e)){c=d,d=e,e=undefined}a.each(a.livequery.queries,function(g,h){if(b.selector==h.selector&&b.context==h.context&&e==h.type&&(!d||d.$lqguid==h.fn.$lqguid)&&(!c||c.$lqguid==h.fn2.$lqguid)){return(f=h)&&false}});f=f||new a.livequery(this.selector,this.context,e,d,c);f.stopped=false;f.run();return this},expire:function(e,d,c){var b=this;if(a.isFunction(e)){c=d,d=e,e=undefined}a.each(a.livequery.queries,function(f,g){if(b.selector==g.selector&&b.context==g.context&&(!e||e==g.type)&&(!d||d.$lqguid==g.fn.$lqguid)&&(!c||c.$lqguid==g.fn2.$lqguid)&&!this.stopped){a.livequery.stop(g.id)}});return this}});a.livequery=function(b,d,f,e,c){this.selector=b;this.context=d;this.type=f;this.fn=e;this.fn2=c;this.elements=[];this.stopped=false;this.id=a.livequery.queries.push(this)-1;e.$lqguid=e.$lqguid||a.livequery.guid++;if(c){c.$lqguid=c.$lqguid||a.livequery.guid++}return this};a.livequery.prototype={stop:function(){var b=this;if(this.type){this.elements.unbind(this.type,this.fn)}else{if(this.fn2){this.elements.each(function(c,d){b.fn2.apply(d)})}}this.elements=[];this.stopped=true},run:function(){if(this.stopped){return}var d=this;var e=this.elements,c=a(this.selector,this.context),b=c.not(e);this.elements=c;if(this.type){b.bind(this.type,this.fn);if(e.length>0){a.each(e,function(f,g){if(a.inArray(g,c)<0){a.event.remove(g,d.type,d.fn)}})}}else{b.each(function(){d.fn.apply(this)});if(this.fn2&&e.length>0){a.each(e,function(f,g){if(a.inArray(g,c)<0){d.fn2.apply(g)}})}}}};a.extend(a.livequery,{guid:0,queries:[],queue:[],running:false,timeout:null,checkQueue:function(){if(a.livequery.running&&a.livequery.queue.length){var b=a.livequery.queue.length;while(b--){a.livequery.queries[a.livequery.queue.shift()].run()}}},pause:function(){a.livequery.running=false},play:function(){a.livequery.running=true;a.livequery.run()},registerPlugin:function(){a.each(arguments,function(c,d){if(!a.fn[d]){return}var b=a.fn[d];a.fn[d]=function(){var e=b.apply(this,arguments);a.livequery.run();return e}})},run:function(b){if(b!=undefined){if(a.inArray(b,a.livequery.queue)<0){a.livequery.queue.push(b)}}else{a.each(a.livequery.queries,function(c){if(a.inArray(c,a.livequery.queue)<0){a.livequery.queue.push(c)}})}if(a.livequery.timeout){clearTimeout(a.livequery.timeout)}a.livequery.timeout=setTimeout(a.livequery.checkQueue,20)},stop:function(b){if(b!=undefined){a.livequery.queries[b].stop()}else{a.each(a.livequery.queries,function(c){a.livequery.queries[c].stop()})}}});a.livequery.registerPlugin("append","prepend","after","before","wrap","attr","removeAttr","addClass","removeClass","toggleClass","empty","remove","html");a(function(){a.livequery.play()})})(jQuery); -------------------------------------------------------------------------------- /server/templates/template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {%- block temp -%} 4 | {%- set Sid_number = 20100 -%} {# define the site_number #} 5 | 6 | {%- set Fid_number = Sid_number+ 1 -%} {# define the filter_number #} 7 | {% for filter_item in data2 %} {# to handle for each url #} 8 | 9 | 10 | {%- set info_flag = 1 -%} {# Sourcefrom and CoordType print only once for all the four locations #} 11 | {% for locat_key, locat_val in filter_item['locations'].items() %} {# to handle for each Location (requestHead/requestBody/responseHead/responseBody) #} 12 | 13 | {%- if info_flag %} 14 | 15 | 16 | {%- set info_flag = 0 -%} 17 | {%- endif -%} 18 | 19 | {#对infoname为空的元组进行递归使用for循环(加上recursive修饰、loop),else否则进行赋值#} 20 | {% for pat_item in locat_val recursive %} {# 对每一个infoname为空的处理 #} {# regex要嵌套 #} 21 | {%- if pat_item['infoname'] == None %} 22 | {# 这个regex与endfor pat_item前的配对 #} 23 | {{ loop( pat_item['regex']) }} 24 | {# 与每一个infoname为空的regex相对应 #} 25 | {%- else %} {# 对infoname不为空的进行赋值 #} 26 | 27 | {%- endif %} 28 | {% endfor %} 29 | 30 | {% else %} 31 | {{ "Something Error! " }} 32 | {% print 'Errors occur in the content of location'+ '\n' %} 33 | {% endfor %} 34 | 35 | 36 | 37 | 38 | 39 | 40 | {%- set Fid_number = Fid_number+ 1 -%} 41 | {% endfor %} 42 | {#{% else %} 43 | {% print 'Errors occur in the content of URL iteration'+ '\n' %} 44 | {% endfor %} #} 45 | 46 | {% endblock temp -%} 47 | 48 | -------------------------------------------------------------------------------- /server/static/components/divider.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.grid>.ui.divider{font-size:1rem}.ui.horizontal.divider{position:relative;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{position:absolute;content:'';z-index:3;width:50%;top:50%;height:0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.horizontal.divider:before{margin-left:-webkit-calc(-50% - 1em);margin-left:calc(-50% - 1em)}.ui.horizontal.divider:after{margin-left:1em}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(255,255,255,.2);width:0;height:-webkit-calc(100% - 1rem);height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{position:relative;margin:1rem 0;left:50%;height:auto;overflow:hidden;line-height:1;text-align:center}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{position:absolute;left:auto;content:'';z-index:3;width:50%;top:50%;height:0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{margin-left:-51%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{margin-left:1em}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#fff}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(0,0,0,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-left-color:rgba(0,0,0,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}.ui.divider{font-size:1rem} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/divider.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.grid>.ui.divider{font-size:1rem}.ui.horizontal.divider{position:relative;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{position:absolute;content:'';z-index:3;width:50%;top:50%;height:0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.horizontal.divider:before{margin-left:-webkit-calc(-50% - 1em);margin-left:calc(-50% - 1em)}.ui.horizontal.divider:after{margin-left:1em}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(255,255,255,.2);width:0;height:-webkit-calc(100% - 1rem);height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{position:relative;margin:1rem 0;left:50%;height:auto;overflow:hidden;line-height:1;text-align:center}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{position:absolute;left:auto;content:'';z-index:3;width:50%;top:50%;height:0;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(255,255,255,.2)}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{margin-left:-51%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{margin-left:1em}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#fff}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(0,0,0,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-left-color:rgba(0,0,0,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}.ui.divider{font-size:1rem} -------------------------------------------------------------------------------- /server/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Pcap-Analyzer 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 |
30 |
Loading
31 |
32 | 37 | 48 |
49 | 50 |
51 |
52 |
53 |
54 | {% for message in get_flashed_messages() %} 55 |
56 | 57 | {{ message }} 58 |
59 | {% endfor%} 60 | {% block content %} 61 | {% endblock %} 62 |
63 |
64 |
65 |

66 | 67 | -------------------------------------------------------------------------------- /server/static/components/colorize.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,n,i,t){"use strict";e.fn.colorize=function(n){var i=e.extend(!0,{},e.fn.colorize.settings,n),a=arguments||!1;return e(this).each(function(n){var o,r,c,s,d,g,u,l,m=e(this),f=e("")[0],h=e("")[0],p=e("")[0],v=new Image,w=i.colors,b=(i.paths,i.namespace),y=i.error,C=m.data("module-"+b);return l={checkPreconditions:function(){return l.debug("Checking pre-conditions"),!e.isPlainObject(w)||e.isEmptyObject(w)?(l.error(y.undefinedColors),!1):!0},async:function(e){i.async?setTimeout(e,0):e()},getMetadata:function(){l.debug("Grabbing metadata"),s=m.data("image")||i.image||t,d=m.data("name")||i.name||n,g=i.width||m.width(),u=i.height||m.height(),(0===g||0===u)&&l.error(y.undefinedSize)},initialize:function(){l.debug("Initializing with colors",w),l.checkPreconditions()&&l.async(function(){l.getMetadata(),l.canvas.create(),l.draw.image(function(){l.draw.colors(),l.canvas.merge()}),m.data("module-"+b,l)})},redraw:function(){l.debug("Redrawing image"),l.async(function(){l.canvas.clear(),l.draw.colors(),l.canvas.merge()})},change:{color:function(e,n){return l.debug("Changing color",e),w[e]===t?(l.error(y.missingColor),!1):(w[e]=n,void l.redraw())}},canvas:{create:function(){l.debug("Creating canvases"),f.width=g,f.height=u,h.width=g,h.height=u,p.width=g,p.height=u,o=f.getContext("2d"),r=h.getContext("2d"),c=p.getContext("2d"),m.append(f),o=m.children("canvas")[0].getContext("2d")},clear:function(){l.debug("Clearing canvas"),c.fillStyle="#FFFFFF",c.fillRect(0,0,g,u)},merge:function(){return e.isFunction(o.blendOnto)?(o.putImageData(r.getImageData(0,0,g,u),0,0),void c.blendOnto(o,"multiply")):void l.error(y.missingPlugin)}},draw:{image:function(e){l.debug("Drawing image"),e=e||function(){},s?(v.src=s,v.onload=function(){r.drawImage(v,0,0),e()}):(l.error(y.noImage),e())},colors:function(){l.debug("Drawing color overlays",w),e.each(w,function(e,n){i.onDraw(c,d,e,n)})}},debug:function(e,n){i.debug&&(n!==t?console.info(i.name+": "+e,n):console.info(i.name+": "+e))},error:function(e){console.warn(i.name+": "+e)},invoke:function(n,a,o){var r;return o=o||Array.prototype.slice.call(arguments,2),"string"==typeof n&&C!==t&&(n=n.split("."),e.each(n,function(n,t){return e.isPlainObject(C[t])?(C=C[t],!0):e.isFunction(C[t])?(r=C[t],!0):(l.error(i.error.method),!1)})),e.isFunction(r)?r.apply(a,o):!1}},C!==t&&a?("invoke"==a[0]&&(a=Array.prototype.slice.call(a,1)),l.invoke(a[0],this,Array.prototype.slice.call(a,1))):void l.initialize()}),this},e.fn.colorize.settings={name:"Image Colorizer",debug:!0,namespace:"colorize",onDraw:function(){},async:!0,colors:{},metadata:{image:"image",name:"name"},error:{noImage:"No tracing image specified",undefinedColors:"No default colors specified.",missingColor:"Attempted to change color that does not exist",missingPlugin:"Blend onto plug-in must be included",undefinedHeight:"The width or height of image canvas could not be automatically determined. Please specify a height."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/colorize.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,n,i,t){"use strict";e.fn.colorize=function(n){var i=e.extend(!0,{},e.fn.colorize.settings,n),a=arguments||!1;return e(this).each(function(n){var o,r,c,s,d,g,u,l,m=e(this),f=e("")[0],h=e("")[0],p=e("")[0],v=new Image,w=i.colors,b=(i.paths,i.namespace),y=i.error,C=m.data("module-"+b);return l={checkPreconditions:function(){return l.debug("Checking pre-conditions"),!e.isPlainObject(w)||e.isEmptyObject(w)?(l.error(y.undefinedColors),!1):!0},async:function(e){i.async?setTimeout(e,0):e()},getMetadata:function(){l.debug("Grabbing metadata"),s=m.data("image")||i.image||t,d=m.data("name")||i.name||n,g=i.width||m.width(),u=i.height||m.height(),(0===g||0===u)&&l.error(y.undefinedSize)},initialize:function(){l.debug("Initializing with colors",w),l.checkPreconditions()&&l.async(function(){l.getMetadata(),l.canvas.create(),l.draw.image(function(){l.draw.colors(),l.canvas.merge()}),m.data("module-"+b,l)})},redraw:function(){l.debug("Redrawing image"),l.async(function(){l.canvas.clear(),l.draw.colors(),l.canvas.merge()})},change:{color:function(e,n){return l.debug("Changing color",e),w[e]===t?(l.error(y.missingColor),!1):(w[e]=n,void l.redraw())}},canvas:{create:function(){l.debug("Creating canvases"),f.width=g,f.height=u,h.width=g,h.height=u,p.width=g,p.height=u,o=f.getContext("2d"),r=h.getContext("2d"),c=p.getContext("2d"),m.append(f),o=m.children("canvas")[0].getContext("2d")},clear:function(){l.debug("Clearing canvas"),c.fillStyle="#FFFFFF",c.fillRect(0,0,g,u)},merge:function(){return e.isFunction(o.blendOnto)?(o.putImageData(r.getImageData(0,0,g,u),0,0),void c.blendOnto(o,"multiply")):void l.error(y.missingPlugin)}},draw:{image:function(e){l.debug("Drawing image"),e=e||function(){},s?(v.src=s,v.onload=function(){r.drawImage(v,0,0),e()}):(l.error(y.noImage),e())},colors:function(){l.debug("Drawing color overlays",w),e.each(w,function(e,n){i.onDraw(c,d,e,n)})}},debug:function(e,n){i.debug&&(n!==t?console.info(i.name+": "+e,n):console.info(i.name+": "+e))},error:function(e){console.warn(i.name+": "+e)},invoke:function(n,a,o){var r;return o=o||Array.prototype.slice.call(arguments,2),"string"==typeof n&&C!==t&&(n=n.split("."),e.each(n,function(n,t){return e.isPlainObject(C[t])?(C=C[t],!0):e.isFunction(C[t])?(r=C[t],!0):(l.error(i.error.method),!1)})),e.isFunction(r)?r.apply(a,o):!1}},C!==t&&a?("invoke"==a[0]&&(a=Array.prototype.slice.call(a,1)),l.invoke(a[0],this,Array.prototype.slice.call(a,1))):void l.initialize()}),this},e.fn.colorize.settings={name:"Image Colorizer",debug:!0,namespace:"colorize",onDraw:function(){},async:!0,colors:{},metadata:{image:"image",name:"name"},error:{noImage:"No tracing image specified",undefinedColors:"No default colors specified.",missingColor:"Attempted to change color that does not exist",missingPlugin:"Blend onto plug-in must be included",undefinedHeight:"The width or height of image canvas could not be automatically determined. Please specify a height."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /server/static/components/feed.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.feed{margin:1em 0}.ui.feed:first-child,.ui.feed:last-child{margin-top:0}.ui.feed>.event{display:table;width:100%;padding:.5rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:table-cell;width:2.5em;height:2.5em;vertical-align:top;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{padding:.5em 0 .5em 1.25em}.ui.feed>.event>.content{display:table-cell;vertical-align:top;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.8)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:2em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:2em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.875em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.8)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:.5em 1em;border-left:3px solid rgba(0,0,0,.2);font-size:1em;max-width:500px;line-height:1.33}.ui.feed>.event>.content .meta{display:inline-block;font-size:.875em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#ff2733}.ui.feed>.event>.content .meta .active.like .icon{color:#ef404a}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .2s ease;transition:color .2s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.8)}.ui.small.feed{font-size:.9em}.ui.feed{font-size:1em}.ui.large.feed{font-size:1.1em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/feed.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.feed{margin:1em 0}.ui.feed:first-child,.ui.feed:last-child{margin-top:0}.ui.feed>.event{display:table;width:100%;padding:.5rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:table-cell;width:2.5em;height:2.5em;vertical-align:top;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{padding:.5em 0 .5em 1.25em}.ui.feed>.event>.content{display:table-cell;vertical-align:top;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.8)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:2em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:2em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.875em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.8)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:.5em 1em;border-left:3px solid rgba(0,0,0,.2);font-size:1em;max-width:500px;line-height:1.33}.ui.feed>.event>.content .meta{display:inline-block;font-size:.875em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#ff2733}.ui.feed>.event>.content .meta .active.like .icon{color:#ef404a}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .2s ease;transition:color .2s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.8)}.ui.small.feed{font-size:.9em}.ui.feed{font-size:1em}.ui.large.feed{font-size:1.1em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/js/upload.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | $('select.dropdown').dropdown(); 4 | 5 | $('#upload-nav').addClass('active'); 6 | 7 | $('.ui.checkbox').checkbox(); 8 | 9 | $('#delete-button').on('click', function(){ 10 | $('.small.del.modal').modal({ 11 | closable : true, 12 | allowMultiple: false, 13 | onDeny : function(){ 14 | return true; 15 | }, 16 | onApprove : function() { 17 | var delCheckbox = $("input[name='checkoption']:checked"); 18 | var size = delCheckbox.size(); 19 | if(size > 0){ 20 | var params = ""; 21 | for(var i=0;i 0){ 37 | var params = ""; 38 | for(var i=0;i 0){ 49 | var params = ""; 50 | for(var i=0;i 30000000) { // 2mb 67 | alert('Max Size is 30 MB!'); 68 | goUpload = false; 69 | } 70 | if (goUpload == true) { 71 | data.submit(); 72 | } 73 | }, 74 | progressall: function (e, data) { 75 | $('.progress').progress({percent:1}); 76 | var progressbar = parseInt(data.loaded / data.total * 100, 10); 77 | console.log(progressbar); 78 | $('.progress').progress({percent:progressbar}); 79 | }, 80 | done: function (e, data) { 81 | if (data['textStatus']=="success") 82 | $("#progresslabel").append("Upload OK!"); 83 | $('#fileupload').attr({"disabled":"disabled"}); 84 | $('.small.ok.modal').modal('show'); 85 | history.go(0); 86 | }, 87 | }); 88 | 89 | }); 90 | -------------------------------------------------------------------------------- /server/static/components/loader.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.loader:after,.ui.loader:before{width:2.2585em;height:2.2585em;margin:0 0 0 -1.12925em}.ui.mini.loader:after,.ui.mini.loader:before{width:1.2857em;height:1.2857em;margin:0 0 0 -.64285em}.ui.small.loader:after,.ui.small.loader:before{width:1.7142em;height:1.7142em;margin:0 0 0 -.8571em}.ui.large.loader:after,.ui.large.loader:before{width:4.5714em;height:4.5714em;margin:0 0 0 -2.2857em}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:#fff}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#fff transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.8)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#aaa transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{-webkit-animation-direction:reverse;animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1.2857em;height:1.2857em;font-size:.7857em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.7142em;height:1.7142em;font-size:.9285em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.2585em;height:2.2585em;font-size:1em}.ui.inverted.dimmer .ui.loader.large,.ui.loader.large{width:4.5714em;height:4.5714em;font-size:1.1428em}.ui.mini.text.loader{min-width:1.2857em;padding-top:1.9857em}.ui.small.text.loader{min-width:1.7142em;padding-top:2.4142em}.ui.text.loader{min-width:2.2585em;padding-top:2.9585em}.ui.large.text.loader{min-width:4.5714em;padding-top:5.2714em}.ui.inverted.loader{color:#fff}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#fff}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;-ms-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/loader.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.loader:after,.ui.loader:before{width:2.2585em;height:2.2585em;margin:0 0 0 -1.12925em}.ui.mini.loader:after,.ui.mini.loader:before{width:1.2857em;height:1.2857em;margin:0 0 0 -.64285em}.ui.small.loader:after,.ui.small.loader:before{width:1.7142em;height:1.7142em;margin:0 0 0 -.8571em}.ui.large.loader:after,.ui.large.loader:before{width:4.5714em;height:4.5714em;margin:0 0 0 -2.2857em}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:#fff}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#fff transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.8)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#aaa transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{-webkit-animation-direction:reverse;animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1.2857em;height:1.2857em;font-size:.7857em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.7142em;height:1.7142em;font-size:.9285em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.2585em;height:2.2585em;font-size:1em}.ui.inverted.dimmer .ui.loader.large,.ui.loader.large{width:4.5714em;height:4.5714em;font-size:1.1428em}.ui.mini.text.loader{min-width:1.2857em;padding-top:1.9857em}.ui.small.text.loader{min-width:1.7142em;padding-top:2.4142em}.ui.text.loader{min-width:2.2585em;padding-top:2.9585em}.ui.large.text.loader{min-width:4.5714em;padding-top:5.2714em}.ui.inverted.loader{color:#fff}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#fff}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;-ms-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/templates/upload.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | {% block content %} 3 |

Pcap File Manage

4 |
5 | 6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% for CapFile in CapFiles %} 19 | 20 | 21 | 22 | 23 | 28 | 29 | {% endfor %} 30 | 31 | 32 | 33 | 44 | 45 | 46 |
FilePacketsSizeOption
{{ CapFile.filename }}{{ CapFile.filepcap }}{{ CapFile.filesize }} 24 |
25 | 26 |
27 |
34 |
35 | Analyze 36 |
37 |
38 | Delete 39 |
40 |
41 | Download 42 |
43 |
47 | 48 | 65 | 66 | 80 | 81 |
82 |
83 | 84 | 85 |
86 |
87 |
88 |
Upload Pcap File
89 | Upload 90 | 91 | 92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | 103 | {% endblock %} -------------------------------------------------------------------------------- /server/static/components/nag.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Nag 16 | *******************************/ 17 | 18 | .ui.nag { 19 | display: none; 20 | opacity: 0.95; 21 | position: relative; 22 | top: 0em; 23 | left: 0px; 24 | z-index: 999; 25 | min-height: 0em; 26 | width: 100%; 27 | margin: 0em; 28 | padding: 0.75em 1em; 29 | background: #555555; 30 | box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); 31 | font-size: 1rem; 32 | text-align: center; 33 | color: rgba(0, 0, 0, 0.8); 34 | border-radius: 0em 0em 0.2857rem 0.2857rem; 35 | -webkit-transition: 0.2s background ease; 36 | transition: 0.2s background ease; 37 | } 38 | a.ui.nag { 39 | cursor: pointer; 40 | } 41 | .ui.nag > .title { 42 | display: inline-block; 43 | margin: 0em 0.5em; 44 | color: #ffffff; 45 | } 46 | .ui.nag > .close.icon { 47 | cursor: pointer; 48 | opacity: 0.4; 49 | position: absolute; 50 | top: 50%; 51 | right: 1em; 52 | font-size: 1em; 53 | margin: -0.5em 0em 0em; 54 | color: #ffffff; 55 | -webkit-transition: opacity 0.2s ease; 56 | transition: opacity 0.2s ease; 57 | } 58 | 59 | 60 | /******************************* 61 | States 62 | *******************************/ 63 | 64 | 65 | /* Hover */ 66 | .ui.nag:hover { 67 | background: #555555; 68 | opacity: 1; 69 | } 70 | .ui.nag .close:hover { 71 | opacity: 1; 72 | } 73 | 74 | 75 | /******************************* 76 | Variations 77 | *******************************/ 78 | 79 | 80 | /*-------------- 81 | Static 82 | ---------------*/ 83 | 84 | .ui.overlay.nag { 85 | position: absolute; 86 | display: block; 87 | } 88 | 89 | /*-------------- 90 | Fixed 91 | ---------------*/ 92 | 93 | .ui.fixed.nag { 94 | position: fixed; 95 | } 96 | 97 | /*-------------- 98 | Bottom 99 | ---------------*/ 100 | 101 | .ui.bottom.nags, 102 | .ui.bottom.nag { 103 | border-radius: 0.2857rem 0.2857rem 0em 0em; 104 | top: auto; 105 | bottom: 0em; 106 | } 107 | 108 | /*-------------- 109 | White 110 | ---------------*/ 111 | 112 | .ui.inverted.nags .nag, 113 | .ui.inverted.nag { 114 | background-color: #f0f0f0; 115 | color: rgba(0, 0, 0, 0.85); 116 | } 117 | .ui.inverted.nags .nag .close, 118 | .ui.inverted.nags .nag .title, 119 | .ui.inverted.nag .close, 120 | .ui.inverted.nag .title { 121 | color: rgba(0, 0, 0, 0.4); 122 | } 123 | 124 | 125 | /******************************* 126 | Groups 127 | *******************************/ 128 | 129 | .ui.nags .nag { 130 | border-radius: 0em !important; 131 | } 132 | .ui.nags .nag:last-child { 133 | border-radius: 0em 0em 0.2857rem 0.2857rem; 134 | } 135 | .ui.bottom.nags .nag:last-child { 136 | border-radius: 0.2857rem 0.2857rem 0em 0em; 137 | } 138 | 139 | 140 | /******************************* 141 | Theme Overrides 142 | *******************************/ 143 | 144 | 145 | 146 | /******************************* 147 | User Overrides 148 | *******************************/ 149 | 150 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/nag.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Nag 16 | *******************************/ 17 | 18 | .ui.nag { 19 | display: none; 20 | opacity: 0.95; 21 | position: relative; 22 | top: 0em; 23 | left: 0px; 24 | z-index: 999; 25 | min-height: 0em; 26 | width: 100%; 27 | margin: 0em; 28 | padding: 0.75em 1em; 29 | background: #555555; 30 | box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); 31 | font-size: 1rem; 32 | text-align: center; 33 | color: rgba(0, 0, 0, 0.8); 34 | border-radius: 0em 0em 0.2857rem 0.2857rem; 35 | -webkit-transition: 0.2s background ease; 36 | transition: 0.2s background ease; 37 | } 38 | a.ui.nag { 39 | cursor: pointer; 40 | } 41 | .ui.nag > .title { 42 | display: inline-block; 43 | margin: 0em 0.5em; 44 | color: #ffffff; 45 | } 46 | .ui.nag > .close.icon { 47 | cursor: pointer; 48 | opacity: 0.4; 49 | position: absolute; 50 | top: 50%; 51 | right: 1em; 52 | font-size: 1em; 53 | margin: -0.5em 0em 0em; 54 | color: #ffffff; 55 | -webkit-transition: opacity 0.2s ease; 56 | transition: opacity 0.2s ease; 57 | } 58 | 59 | 60 | /******************************* 61 | States 62 | *******************************/ 63 | 64 | 65 | /* Hover */ 66 | .ui.nag:hover { 67 | background: #555555; 68 | opacity: 1; 69 | } 70 | .ui.nag .close:hover { 71 | opacity: 1; 72 | } 73 | 74 | 75 | /******************************* 76 | Variations 77 | *******************************/ 78 | 79 | 80 | /*-------------- 81 | Static 82 | ---------------*/ 83 | 84 | .ui.overlay.nag { 85 | position: absolute; 86 | display: block; 87 | } 88 | 89 | /*-------------- 90 | Fixed 91 | ---------------*/ 92 | 93 | .ui.fixed.nag { 94 | position: fixed; 95 | } 96 | 97 | /*-------------- 98 | Bottom 99 | ---------------*/ 100 | 101 | .ui.bottom.nags, 102 | .ui.bottom.nag { 103 | border-radius: 0.2857rem 0.2857rem 0em 0em; 104 | top: auto; 105 | bottom: 0em; 106 | } 107 | 108 | /*-------------- 109 | White 110 | ---------------*/ 111 | 112 | .ui.inverted.nags .nag, 113 | .ui.inverted.nag { 114 | background-color: #f0f0f0; 115 | color: rgba(0, 0, 0, 0.85); 116 | } 117 | .ui.inverted.nags .nag .close, 118 | .ui.inverted.nags .nag .title, 119 | .ui.inverted.nag .close, 120 | .ui.inverted.nag .title { 121 | color: rgba(0, 0, 0, 0.4); 122 | } 123 | 124 | 125 | /******************************* 126 | Groups 127 | *******************************/ 128 | 129 | .ui.nags .nag { 130 | border-radius: 0em !important; 131 | } 132 | .ui.nags .nag:last-child { 133 | border-radius: 0em 0em 0.2857rem 0.2857rem; 134 | } 135 | .ui.bottom.nags .nag:last-child { 136 | border-radius: 0.2857rem 0.2857rem 0em 0em; 137 | } 138 | 139 | 140 | /******************************* 141 | Theme Overrides 142 | *******************************/ 143 | 144 | 145 | 146 | /******************************* 147 | User Overrides 148 | *******************************/ 149 | 150 | -------------------------------------------------------------------------------- /server/static/js/jquery.treeview.async.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Async Treeview 0.1 - Lazy-loading extension for Treeview 3 | * 4 | * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ 5 | * 6 | * Copyright (c) 2007 Jörn Zaefferer 7 | * 8 | * Dual licensed under the MIT and GPL licenses: 9 | * http://www.opensource.org/licenses/mit-license.php 10 | * http://www.gnu.org/licenses/gpl.html 11 | * 12 | * Revision: $Id$ 13 | * 14 | */ 15 | 16 | ;(function($) { 17 | 18 | function load(settings, root, child, container) { 19 | function createNode(parent) { 20 | var current = $("
  • ").attr("id", this.id || "").html("" + this.text + "").appendTo(parent); 21 | if (this.classes) { 22 | current.children("span").addClass(this.classes); 23 | } 24 | if (this.expanded) { 25 | current.addClass("open"); 26 | } 27 | if (this.hasChildren || this.children && this.children.length) { 28 | var branch = $("
      ").appendTo(current); 29 | if (this.hasChildren) { 30 | current.addClass("hasChildren"); 31 | createNode.call({ 32 | classes: "placeholder", 33 | text: " ", 34 | children:[] 35 | }, branch); 36 | } 37 | if (this.children && this.children.length) { 38 | $.each(this.children, createNode, [branch]) 39 | } 40 | } 41 | } 42 | $.ajax($.extend(true, { 43 | url: settings.url, 44 | dataType: "json", 45 | data: { 46 | root: root 47 | }, 48 | success: function(response) { 49 | child.empty(); 50 | $.each(response, createNode, [child]); 51 | $(container).treeview({add: child}); 52 | } 53 | }, settings.ajax)); 54 | /* 55 | $.getJSON(settings.url, {root: root}, function(response) { 56 | function createNode(parent) { 57 | var current = $("
    • ").attr("id", this.id || "").html("" + this.text + "").appendTo(parent); 58 | if (this.classes) { 59 | current.children("span").addClass(this.classes); 60 | } 61 | if (this.expanded) { 62 | current.addClass("open"); 63 | } 64 | if (this.hasChildren || this.children && this.children.length) { 65 | var branch = $("
        ").appendTo(current); 66 | if (this.hasChildren) { 67 | current.addClass("hasChildren"); 68 | createNode.call({ 69 | classes: "placeholder", 70 | text: " ", 71 | children:[] 72 | }, branch); 73 | } 74 | if (this.children && this.children.length) { 75 | $.each(this.children, createNode, [branch]) 76 | } 77 | } 78 | } 79 | child.empty(); 80 | $.each(response, createNode, [child]); 81 | $(container).treeview({add: child}); 82 | }); 83 | */ 84 | } 85 | 86 | var proxied = $.fn.treeview; 87 | $.fn.treeview = function(settings) { 88 | if (!settings.url) { 89 | return proxied.apply(this, arguments); 90 | } 91 | var container = this; 92 | if (!container.children().size()) 93 | load(settings, "source", this, container); 94 | var userToggle = settings.toggle; 95 | return proxied.call(this, $.extend({}, settings, { 96 | collapsed: true, 97 | toggle: function() { 98 | var $this = $(this); 99 | if ($this.hasClass("hasChildren")) { 100 | var childList = $this.removeClass("hasChildren").find("ul"); 101 | load(settings, this.id, childList, container); 102 | } 103 | if (userToggle) { 104 | userToggle.apply(this, arguments); 105 | } 106 | } 107 | })); 108 | }; 109 | 110 | })(jQuery); -------------------------------------------------------------------------------- /server/static/components/shape.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Shape 16 | *******************************/ 17 | 18 | .ui.shape { 19 | position: relative; 20 | display: inline-block; 21 | -webkit-perspective: 2000px; 22 | perspective: 2000px; 23 | } 24 | .ui.shape .sides { 25 | -webkit-transform-style: preserve-3d; 26 | transform-style: preserve-3d; 27 | } 28 | .ui.shape .side { 29 | opacity: 1; 30 | width: 100%; 31 | margin: 0em !important; 32 | -webkit-backface-visibility: hidden; 33 | backface-visibility: hidden; 34 | } 35 | .ui.shape .side { 36 | display: none; 37 | } 38 | .ui.shape .side > * { 39 | -webkit-backface-visibility: visible !important; 40 | backface-visibility: visible !important; 41 | } 42 | 43 | 44 | /******************************* 45 | Types 46 | *******************************/ 47 | 48 | .ui.cube.shape .side { 49 | min-width: 15em; 50 | height: 15em; 51 | padding: 2em; 52 | background-color: #e6e6e6; 53 | color: rgba(0, 0, 0, 0.8); 54 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 55 | } 56 | .ui.cube.shape .side > .content { 57 | width: 100%; 58 | height: 100%; 59 | display: table; 60 | text-align: center; 61 | -webkit-user-select: text; 62 | -moz-user-select: text; 63 | -ms-user-select: text; 64 | user-select: text; 65 | } 66 | .ui.cube.shape .side > .content > div { 67 | display: table-cell; 68 | vertical-align: middle; 69 | font-size: 2em; 70 | } 71 | 72 | 73 | /******************************* 74 | Variations 75 | *******************************/ 76 | 77 | .ui.text.shape.animating .sides { 78 | position: static; 79 | } 80 | .ui.text.shape .side { 81 | white-space: nowrap; 82 | } 83 | .ui.text.shape .side > * { 84 | white-space: normal; 85 | } 86 | 87 | 88 | /******************************* 89 | States 90 | *******************************/ 91 | 92 | 93 | /*-------------- 94 | Loading 95 | ---------------*/ 96 | 97 | .ui.loading.shape { 98 | position: absolute; 99 | top: -9999px; 100 | left: -9999px; 101 | } 102 | 103 | /*-------------- 104 | Animating 105 | ---------------*/ 106 | 107 | .ui.shape .animating.side { 108 | position: absolute; 109 | top: 0px; 110 | left: 0px; 111 | z-index: 100; 112 | } 113 | .ui.shape .hidden.side { 114 | opacity: 0.4; 115 | } 116 | 117 | /*-------------- 118 | CSS 119 | ---------------*/ 120 | 121 | .ui.shape.animating { 122 | -webkit-transition: all 0.6s ease-in-out; 123 | transition: all 0.6s ease-in-out; 124 | } 125 | .ui.shape.animating .sides { 126 | position: absolute; 127 | } 128 | .ui.shape.animating .sides { 129 | -webkit-transition: all 0.6s ease-in-out; 130 | transition: all 0.6s ease-in-out; 131 | } 132 | .ui.shape.animating .side { 133 | -webkit-transition: opacity 0.6s ease-in-out; 134 | transition: opacity 0.6s ease-in-out; 135 | } 136 | 137 | /*-------------- 138 | Active 139 | ---------------*/ 140 | 141 | .ui.shape .active.side { 142 | display: block; 143 | } 144 | 145 | 146 | /******************************* 147 | Theme Overrides 148 | *******************************/ 149 | 150 | 151 | 152 | /******************************* 153 | User Overrides 154 | *******************************/ 155 | 156 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/shape.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | 14 | /******************************* 15 | Shape 16 | *******************************/ 17 | 18 | .ui.shape { 19 | position: relative; 20 | display: inline-block; 21 | -webkit-perspective: 2000px; 22 | perspective: 2000px; 23 | } 24 | .ui.shape .sides { 25 | -webkit-transform-style: preserve-3d; 26 | transform-style: preserve-3d; 27 | } 28 | .ui.shape .side { 29 | opacity: 1; 30 | width: 100%; 31 | margin: 0em !important; 32 | -webkit-backface-visibility: hidden; 33 | backface-visibility: hidden; 34 | } 35 | .ui.shape .side { 36 | display: none; 37 | } 38 | .ui.shape .side > * { 39 | -webkit-backface-visibility: visible !important; 40 | backface-visibility: visible !important; 41 | } 42 | 43 | 44 | /******************************* 45 | Types 46 | *******************************/ 47 | 48 | .ui.cube.shape .side { 49 | min-width: 15em; 50 | height: 15em; 51 | padding: 2em; 52 | background-color: #e6e6e6; 53 | color: rgba(0, 0, 0, 0.8); 54 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 55 | } 56 | .ui.cube.shape .side > .content { 57 | width: 100%; 58 | height: 100%; 59 | display: table; 60 | text-align: center; 61 | -webkit-user-select: text; 62 | -moz-user-select: text; 63 | -ms-user-select: text; 64 | user-select: text; 65 | } 66 | .ui.cube.shape .side > .content > div { 67 | display: table-cell; 68 | vertical-align: middle; 69 | font-size: 2em; 70 | } 71 | 72 | 73 | /******************************* 74 | Variations 75 | *******************************/ 76 | 77 | .ui.text.shape.animating .sides { 78 | position: static; 79 | } 80 | .ui.text.shape .side { 81 | white-space: nowrap; 82 | } 83 | .ui.text.shape .side > * { 84 | white-space: normal; 85 | } 86 | 87 | 88 | /******************************* 89 | States 90 | *******************************/ 91 | 92 | 93 | /*-------------- 94 | Loading 95 | ---------------*/ 96 | 97 | .ui.loading.shape { 98 | position: absolute; 99 | top: -9999px; 100 | left: -9999px; 101 | } 102 | 103 | /*-------------- 104 | Animating 105 | ---------------*/ 106 | 107 | .ui.shape .animating.side { 108 | position: absolute; 109 | top: 0px; 110 | left: 0px; 111 | z-index: 100; 112 | } 113 | .ui.shape .hidden.side { 114 | opacity: 0.4; 115 | } 116 | 117 | /*-------------- 118 | CSS 119 | ---------------*/ 120 | 121 | .ui.shape.animating { 122 | -webkit-transition: all 0.6s ease-in-out; 123 | transition: all 0.6s ease-in-out; 124 | } 125 | .ui.shape.animating .sides { 126 | position: absolute; 127 | } 128 | .ui.shape.animating .sides { 129 | -webkit-transition: all 0.6s ease-in-out; 130 | transition: all 0.6s ease-in-out; 131 | } 132 | .ui.shape.animating .side { 133 | -webkit-transition: opacity 0.6s ease-in-out; 134 | transition: opacity 0.6s ease-in-out; 135 | } 136 | 137 | /*-------------- 138 | Active 139 | ---------------*/ 140 | 141 | .ui.shape .active.side { 142 | display: block; 143 | } 144 | 145 | 146 | /******************************* 147 | Theme Overrides 148 | *******************************/ 149 | 150 | 151 | 152 | /******************************* 153 | User Overrides 154 | *******************************/ 155 | 156 | -------------------------------------------------------------------------------- /pcap-analyzer-master/server/views.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # author: le4f.net 4 | 5 | from server import * 6 | from server.func import * 7 | 8 | #主页 9 | @app.route('/') 10 | def index(): 11 | return redirect(url_for('upload'), 302) 12 | 13 | 14 | #上传 15 | @app.route('/upload',methods=['GET', 'POST']) 16 | def upload(): 17 | if request.method == 'GET': 18 | CapFiles = [] 19 | list_file(CapFiles) 20 | return render_template('upload.html',CapFiles=show_entries()) 21 | elif request.method == 'POST': 22 | file = request.files['pcapfile'] 23 | if file and allowed_file(file.filename): 24 | filename = secure_filename(file.filename) #获取安全文件名,仅支持ascii字符 25 | filename = time.strftime('%Y%m%d_%H%M_',time.localtime(time.time()))+filename 26 | file.save(os.path.join(UPLOAD_FOLDER, filename)) 27 | size = os.path.getsize(UPLOAD_FOLDER+filename) 28 | result = (filename, 'PCAP', size) 29 | return simplejson.dumps({"files": [result]}) 30 | else: 31 | pass 32 | 33 | #下载 34 | @app.route('/download/',methods=['GET']) 35 | def download(id): 36 | id = int(id) 37 | db = get_connection() 38 | pcapfile = get_pcap_entries() 39 | file = pcapfile[0]['filename'] 40 | return send_file("../"+UPLOAD_FOLDER+file, attachment_filename=file, as_attachment=True) 41 | 42 | #分析包 43 | @app.route('/analyze/',methods= ["GET"]) 44 | def analyze(id): 45 | id = int(id) 46 | db = get_connection() 47 | pcapfile = get_pcap_entries(id) 48 | file = pcapfile[0]['filename'] 49 | filter = request.args.get('filter') 50 | details = decode_capture_file(file,filter) 51 | pcapstat = get_statistics(file) 52 | ipsrc = get_ip_src(file) 53 | ipdst = get_ip_dst(file) 54 | dstport = get_port_dst(file) 55 | #如生产环境需注意可能存在的XSS 56 | pcapstat['mail'] = get_mail(file) 57 | pcapstat['web'] = get_web(file) 58 | dns,pcapstat['dnstable'] = get_dns(file) 59 | pcapstat['ipsrc']=dict(ipsrc) 60 | pcapstat['ipdst']=dict(ipdst) 61 | pcapstat['dstport']=dict(dstport) 62 | pcapstat['dns']=dict(dns) 63 | try: 64 | return render_template('analyze.html', pcapfile = pcapfile[0], details = details , pcapstat = pcapstat) 65 | except: 66 | details = decode_capture_file(file) 67 | return render_template('analyze.html', pcapfile = pcapfile[0], details = details , pcapstat = pcapstat) 68 | 69 | #获取包细节 70 | @app.route('/packetdetail//',methods= ["GET"]) 71 | def packetdetail(id,num): 72 | id = int(id) 73 | db = get_connection() 74 | pcapfile = get_pcap_entries(id) 75 | file = pcapfile[0]['filename'] 76 | try: 77 | num = int(num) 78 | return get_packet_detail(file, num), 200 79 | except: 80 | return 0 81 | 82 | #删除包 83 | @app.route('/delete/',methods= ["POST"]) 84 | def delete_file(id): 85 | delids = id.split(',') 86 | db = get_connection() 87 | for delid in delids: 88 | try: 89 | delid = int(delid) 90 | except: 91 | print 'Notice : You are being attacked.' 92 | exit() 93 | cur = db.execute('select file from pcap where id = '+ str(delid) + ';') 94 | sql_exec('delete from pcap where id = '+ str(delid) +';') 95 | os.remove(UPLOAD_FOLDER+cur.fetchall()[0][0]); 96 | return 'ok' 97 | 98 | #加载数据库 99 | @app.before_request 100 | def before_request(): 101 | g.db = connect_db() 102 | 103 | #关闭数据库 104 | @app.teardown_request 105 | def teardown_request(exception): 106 | if hasattr(g, 'db'): 107 | g.db.close() -------------------------------------------------------------------------------- /server/static/components/search.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.2;padding:.68571em 1em;font-size:1em;background:#fff;border:1px solid rgba(39,41,43,.15);color:rgba(0,0,0,.8);box-shadow:0 0 transparent inset;-webkit-transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;background:#fff;margin-top:.5em;width:16em;border-radius:.25em;box-shadow:0 1px 3px 1px rgba(0,0,0,.2);z-index:998}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.5em 1em;color:rgba(0,0,0,.8);line-height:1.33;border-bottom:1px solid rgba(39,41,43,.15)}.ui.search>.results .result:last-child{border-bottom:none}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.9285em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#5bbd72}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.1428em;font-weight:700;color:rgba(0,0,0,.8)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.8)}.ui.search>.results>.action{display:block;border-top:none;background:#f0f0f0;padding:.5em 1em;color:rgba(0,0,0,.8);font-weight:700;text-align:center}.ui.loading.search .input>.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#fafafa}.ui.search .action:hover{background:#e0e0e0}.ui.search>.results .category.active{background:#f0f0f0}.ui.search>.results .category.active>.name{color:rgba(0,0,0,.8)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:transparent;background:#f0f0f0;box-shadow:3px 0 3px 0 rgba(39,41,43,.15)}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.category.search .results{width:28em}.ui.category.search>.results .category{background:#f0f0f0;box-shadow:none;border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category .result{background:#fff;margin-left:100px;border-left:1px solid rgba(39,41,43,.15);border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.category.search>.results .category .result:last-child{border-bottom:none}.ui.category.search>.results .category>.name{width:100px;background:#f0f0f0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.search{font-size:1em}.ui.large.search{font-size:1.1em} -------------------------------------------------------------------------------- /pcap-analyzer-master/server/static/components/search.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * # Semantic UI 3 | * https://github.com/Semantic-Org/Semantic-UI 4 | * http://www.semantic-ui.com/ 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | .ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.2;padding:.68571em 1em;font-size:1em;background:#fff;border:1px solid rgba(39,41,43,.15);color:rgba(0,0,0,.8);box-shadow:0 0 transparent inset;-webkit-transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,border-color .2s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;background:#fff;margin-top:.5em;width:16em;border-radius:.25em;box-shadow:0 1px 3px 1px rgba(0,0,0,.2);z-index:998}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.5em 1em;color:rgba(0,0,0,.8);line-height:1.33;border-bottom:1px solid rgba(39,41,43,.15)}.ui.search>.results .result:last-child{border-bottom:none}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.9285em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#5bbd72}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.1428em;font-weight:700;color:rgba(0,0,0,.8)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.8)}.ui.search>.results>.action{display:block;border-top:none;background:#f0f0f0;padding:.5em 1em;color:rgba(0,0,0,.8);font-weight:700;text-align:center}.ui.loading.search .input>.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285em 0 0 -.64285em;width:1.2857em;height:1.2857em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#aaa transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#fafafa}.ui.search .action:hover{background:#e0e0e0}.ui.search>.results .category.active{background:#f0f0f0}.ui.search>.results .category.active>.name{color:rgba(0,0,0,.8)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:transparent;background:#f0f0f0;box-shadow:3px 0 3px 0 rgba(39,41,43,.15)}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.category.search .results{width:28em}.ui.category.search>.results .category{background:#f0f0f0;box-shadow:none;border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category .result{background:#fff;margin-left:100px;border-left:1px solid rgba(39,41,43,.15);border-bottom:1px solid rgba(39,41,43,.15);-webkit-transition:background .2s ease,border-color .2s ease;transition:background .2s ease,border-color .2s ease}.ui.category.search>.results .category .result:last-child{border-bottom:none}.ui.category.search>.results .category>.name{width:100px;background:#f0f0f0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.search{font-size:1em}.ui.large.search{font-size:1.1em} --------------------------------------------------------------------------------