hubert3 / isniff-gps Goto Github PK
View Code? Open in Web Editor NEWPassive sniffing tool for capturing and visualising WiFi location data disclosed by iOS devices
Passive sniffing tool for capturing and visualising WiFi location data disclosed by iOS devices
Console output:
Querying 505:1:12288:135943937
Internal Server Error: /apple-mobile-lte/505:1:12288:135943937
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mh/Development/Github/iSniff-GPS/iSniff_GPS/views.py", line 176, in AppleMobile
(celldict,celldesc) = wloc.QueryMobile(cellid,LTE)
File "/Users/mh/Development/Github/iSniff-GPS/iSniff_GPS/wloc.py", line 140, in QueryMobile
r = requests.post('https://gs-loc.apple.com/clls/wloc',headers=headers,data=data,verify=False) #the remote SSL cert CN on this server doesn't match hostname anymore
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 110, in post
return request('post', url, data=data, json=json, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 461, in request
prep = self.prepare_request(req)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 394, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 295, in prepare
self.prepare_headers(headers)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 409, in prepare_headers
check_header_validity(header)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/utils.py", line 797, in check_header_validity
raise InvalidHeader("Invalid return character or leading space in header: %s" % name)
InvalidHeader: Invalid return character or leading space in header: Accept-Encoding:
[17/Oct/2016 17:59:45] "GET /apple-mobile-lte/505:1:12288:135943937 HTTP/1.1" 500 95269
Browser displays:
InvalidHeader at /apple-mobile-lte/505:1:12288:135943937
Invalid return character or leading space in header: Accept-Encoding:
Request Method: GET
Request URL: http://127.0.0.1:8000/apple-mobile-lte/505:1:12288:135943937
Django Version: 1.7.1
Exception Type: InvalidHeader
Exception Value:
Invalid return character or leading space in header: Accept-Encoding:
Exception Location: /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/utils.py in check_header_validity, line 797
Python Executable: /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.12
Python Path:
['/Users/mh/Development/Github/iSniff-GPS',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages']
Server time: Mon, 17 Oct 2016 17:59:45 -0500
Hi,
the Apple wloc does not work any more, the coordinates it returns seem to be -180.0 -180.0 always. Has their API changed?
Cheers
Tom
Hi,
It seems the app can't handle special characters such as unicode characters in SSID names and crashes when it encounters them:
Traceback (most recent call last):
File "./iSniff_import.py", line 140, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 586, in sniff
r = prn(p)
File "./iSniff_import.py", line 140, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "./iSniff_import.py", line 108, in process
UpdateDB(clientmac=mac, time=p.time, SSID=p.info)
File "./iSniff_import.py", line 56, in UpdateDB
a = AP.objects.get(SSID=SSID)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 143, in get
return self.get_query_set().get(_args, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 398, in get
num = len(clone)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 106, in len
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 317, in iterator
for row in compiler.results_iter():
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 775, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 840, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 41, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 366, in execute
six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 362, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.DatabaseError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
cheers
Cj
Is someone working ?
in BSSIDApple.proto
which field could encode the radius/accuracy?
How did you find the lat/lon in the first place?
optional int64 latitude = 1;
optional int64 longitude = 2;
optional int64 valeur_inconnue3 = 3;
optional int64 valeur_inconnue4 = 4;
optional int64 valeur_inconnue5 = 5;
optional int64 valeur_inconnue6 = 6;
optional int64 valeur_inconnue7 = 7;
optional int64 valeur_inconnue8 = 8;
optional int64 valeur_inconnue9 = 9;
optional int64 valeur_inconnue10 = 10;
optional int64 valeur_inconnue11 = 11;
optional int64 valeur_inconnue12 = 12;
optional int64 valeur_inconnue21 = 21;
./run.sh -i en0
Traceback (most recent call last):
File "./iSniff_import.py", line 5, in
from scapy.all import *
File "/Library/Python/2.7/site-packages/scapy/all.py", line 22, in
from route import *
File "/Library/Python/2.7/site-packages/scapy/route.py", line 158, in
conf.route=Route()
File "/Library/Python/2.7/site-packages/scapy/route.py", line 18, in init
self.resync()
File "/Library/Python/2.7/site-packages/scapy/route.py", line 27, in resync
self.routes = read_routes()
File "/Library/Python/2.7/site-packages/scapy/arch/unix.py", line 83, in read_routes
ifaddr = scapy.arch.get_if_addr(netif)
File "/Library/Python/2.7/site-packages/scapy/arch/init.py", line 32, in get_if_addr
return socket.inet_ntoa(get_if_raw_addr(iff))
File "/Library/Python/2.7/site-packages/scapy/arch/pcapdnet.py", line 184, in get_if_raw_addr
i = dnet.intf()
AttributeError: 'module' object has no attribute 'intf'
After starting the Django server with "python manage.py runserver 127.0.0.1:8080" (not as root), and browsing to http://127.0.0.1:8080/apple-wloc/00:1b:2f:3d:a9:32, I get the following exception error:
SSLError at /apple-wloc/00:1b:2f:3d:a9:32
hostname 'gs-loc.apple.com' doesn't match either of '*.ls.apple.com', 'ls.apple.com'
Request Method: GET
Request URL: http://127.0.0.1:8080/apple-wloc/00:1b:2f:3d:a9:32
Django Version: 1.4.3
Exception Type: SSLError
Exception Value:
hostname 'gs-loc.apple.com' doesn't match either of '*.ls.apple.com', 'ls.apple.com'
Exception Location: /usr/local/lib/python2.7/dist-packages/requests/adapters.py in send, line 163
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
['/home/jwright/iSniff-GPS-master',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Server time: Sat, 29 Dec 2012 11:21:53 -0600
http://dpaste.com/hold/855616/
The Django version is 1.4.3 (current release version). I'll also try with the Django 1.4.1 noted in the README.
Thanks,
-Josh
I assume the BSSID should be populating but it doesn't seem to work for me. It would be really nice to be able to click on a BSSID and have it take you to the "Apple WiFi Geolocation" and populate the url with the BSSID you are interested in. I can manually put a BSSID in the url and it works fine though. It is just that the BSSID's are not being populated in the UI. I know that the mon interface can see the AP because it is setting right next to me and I can see it via a second mon interface or if I stop iSniff and airodump-ng on the same mon interface that I use for iSniff.
Everything seems to work fine in case of capturing and displaying the data in the console and the web interface with the sqlite db but trying to lookup the ssid via the web interface crashes the web page. Also the apple wifi lookup does not load the map and theres only a location pointer on an empty background visible.
I want to know, Is it possible to set a fake access point or something via which make mobile devices probe manually?because its complete random on when some device will send probe requests. I want to detect mobile devices on bikes or car which are moving.
Also is it possible to detect the devices which are associated with 5Ghz channel?
I would appreciate if you guys can discuss on my doubt. Your work in this project is really commendable.
Thank you.
sudo apt-get install python-scapy
git clone https://github.com/hubert3/iSniff-GPS.git
cd iSniff-GPS/
pip install -U -r requirements.txt
Originally posted by @TULATANK in #37 (comment)
Hi!
Start import wifi network and get error:
./iSniff_import.py -i wlan1
WARNING: No route found for IPv6 destination :: (no default route?)
Traceback (most recent call last):
File "./iSniff_import.py", line 10, in
from iSniff_GPS.models import Client, AP, Location
File "/root/iSniff-GPS/iSniff_GPS/models.py", line 5, in
class Client(models.Model):
File "/root/iSniff-GPS/iSniff_GPS/models.py", line 6, in Client
mac = models.CharField(max_length=len('ff:ff:ff:ff:ff:ff'), unique=True)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py", line 1012, in init
super(CharField, self).init(_args, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py", line 146, in init
self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
File "/usr/local/lib/python2.7/dist-packages/django/conf/init.py", line 46, in getattr
self._setup(name)
File "/usr/local/lib/python2.7/dist-packages/django/conf/init.py", line 40, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Please, help me solve this problem.
Hi!
There's any way to get the ssid of each network returned by the wloc.py?
Thanks!
Thanks for responding to the issues so quickly before. I recevied the following error after running run.sh for an extended period of time. I do like the added count values you have added to keep the script alive.
I have replaced the MACs with [00:00:00:00:00:00]
Thanks again,
840000
Intel [00:00:00:00:00:00] probe for linksys52
Hon [00:00:00:00:00:00]probe for 9KJCP
Hon [00:00:00:00:00:00] probe for benton Network
Cisco [00:00:00:00:00:00]probe for RGXLPQSNGBNYVRAK
Apple [00:00:00:00:00:00]probe for WiFiRSU_63636
WARNING: Error parsing MDNS
None
WARNING: Error parsing MDNS
None
WARNING: Error parsing MDNS
None
Traceback (most recent call last):
File "./iSniff_import.py", line 140, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 586, in sniff
r = prn(p)
File "./iSniff_import.py", line 140, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "./iSniff_import.py", line 108, in process
UpdateDB(clientmac=mac, time=p.time, SSID=p.info)
File "./iSniff_import.py", line 56, in UpdateDB
a = AP.objects.get(SSID=SSID)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 143, in get
return self.get_query_set().get(_args, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 407, in get
(self.model._meta.object_name, num))
iSniff_GPS.models.MultipleObjectsReturned: get() returned more than one AP -- it returned 2!
I get the following error sporadically when running ./run.sh -i mon0, it stops the and I have to restart the script to contiune. Some times it fails right off and other times after collection lots of data.
root@kali:~/Desktop/iSniff-GPS-master# ./run.sh -i mon0
WARNING: No route found for IPv6 destination :: (no default route?)
Sniffing mon0...
Traceback (most recent call last):
File "./iSniff_import.py", line 137, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 586, in sniff
r = prn(p)
File "./iSniff_import.py", line 137, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "./iSniff_import.py", line 123, in process
src=p.getlayer('Dot11').addr3
AttributeError: 'NoneType' object has no attribute 'addr3'
Traceback (most recent call last):
File "/root/iSniff-GPS/./manage.py", line 10, in
execute_from_command_line(sys.argv)
File "/root/.env/lib/python3.9/site-packages/django/core/management/init.py", line 354, in execute_from_command_line
utility.execute()
File "/root/.env/lib/python3.9/site-packages/django/core/management/init.py", line 328, in execute
django.setup()
File "/root/.env/lib/python3.9/site-packages/django/init.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/root/.env/lib/python3.9/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/root/.env/lib/python3.9/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib/python3.9/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "", line 786, in exec_module
File "", line 923, in get_code
File "", line 853, in source_to_code
File "", line 228, in _call_with_frames_removed
File "/root/iSniff-GPS/iSniff_GPS/models.py", line 30
if self.BSSID:
TabError: inconsistent use of tabs and spaces in indentation
Hello,
I'm getting error when i start live capture. (kali.2017.3)
root@kali:~/iSniff-GPS# iwconfig
wlan0mon IEEE 802.11 Mode:Monitor Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
root@kali:/iSniff-GPS# ./run.sh -i wlan0mon/iSniff-GPS#
Sniffing wlan0mon...
Traceback (most recent call last):
File "./iSniff_import.py", line 151, in
sniff(iface=args.interface, prn=lambda x:process(x), store=0)
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 593, in sniff
**karg)]
File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 510, in init
_flush_fd(self.ins)
File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 312, in _flush_fd
os.read(fd,MTU)
OSError: [Errno 100] Network is down
root@kali:
I came across an interesting sounding project on GitHub, called iSniff-GPS.
I decided to check it out, but i experienced some issues when trying to use the web interface.
Taken from: _https://github.com/hubert3/iSniff-GPS_.
To use the web interface:
- Install or update required Python modules by running
pip install -U -r requirements.txt
.- Initialise an empty database by running
./manage.py syncdb
.- Start the web interface by running
./manage.py runserver 127.0.0.1:8000
.
Here is the contents of manage.py
.
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "iSniff_GPS.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
When accessing the web server; I get a map of Melbourne, VICTORIA. (Australia).
Similar to the following image:
Any attempts to further navigate this interface are fruitless and provokes an errors.
Similar to the following message:
/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:791: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
InsecureRequestWarning)
So I follow the instructions at: _https://urllib3.readthedocs.org/en/latest/security.html.
Until I get to: _https://urllib3.readthedocs.org/en/latest/security.html#certifi-with-urllib3.
Setup your pool to require a certificate and provide the certifi bundle:
import urllib3
import certifi
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED', # Force certificate check.
ca_certs=certifi.where(), # Path to the Certifi bundle.
)
# You're ready to make verified HTTPS requests.
try:
r = http.request('GET', 'https://example.com/')
except urllib3.exceptions.SSLError as e:
# Handle incorrect certificate error.
...
manage.py
/connectionpool.py
?My experience with Python is minimal but I've tried a bunch of different things over the last few days, trying to get this to work. Here are a few screenshots, depicting some of the various error messages; generated in the background, while i was trying to play with the web interface:
I'm guessing this is a missing file in a recent push as Google doesn't turn up much and git blame
highlights a fairly recent commit, but the current master does this:
ImportError at /
No module named GSM_pb2
Request Method: GET
Request URL: http://192.168.33.51:8000/
Django Version: 1.5.5
Exception Type: ImportError
Exception Value:
No module named GSM_pb2
Exception Location: /vagrant/iSniff_GPS/wloc.py in <module>, line 11
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
['/vagrant',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
Server time: Sun, 27 Oct 2013 04:53:51 -0500
So either there's a dep missing that provides that or a file not committed.
Dave
despite having a wigle account that works, the browser throws an error even though I have put my
login in the file as stated.
btowser shows this error:
WigleAuthenticationError at /locateSSID/blackhat
Could not authenticate as user steeley
Request Method: GET
Request URL: http://127.0.0.1:8000/locateSSID/blackhat
Django Version: 1.7.1
Exception Type: WigleAuthenticationError
Exception Value:
Could not authenticate as user steeley
Exception Location: /usr/local/lib/python2.7/dist-packages/wigle/init.py in reauthenticate, line 90
Python Executable: /usr/bin/python
Python Version: 2.7.9
Python Path:
['/home/pi/iSniff',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-arm-linux-gnueabihf',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7']
Hi,
How can I contact you, do you have an e-mail?
Solved: found the contact mail and twitter
It appears that iSniff is not capturing probes to broadcast but rather only probes to a specific SSID. Is this the case or am I seeing an anomaly?
I don't know if it is something I did wrong or the software; I have all the requirements it asks for...
I've been trying to locate a mobile device via the "Apple LTE Geolocation" and the "Apple GSM/3G Geolocation" link. The default url works and displays a map but when I try to find a different device by changing the url, I get a red icon as if it locates the device but no map. I use a url with the following format:
http://:8000/apple-mobile/MCC:MNC:LAC:CID.
If I put in some bogus phone number, I get 0 results found message so I think it is finding it, but I can;t tell where :-(
Any suggestions?
I get the following error when trying to get to the web viewer
NoReverseMatch at /
Reverse for '"clientlist"' with arguments '()' and keyword arguments '{}' not found.
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.4.5
Exception Type: NoReverseMatch
Exception Value:
Reverse for '"clientlist"' with arguments '()' and keyword arguments '{}' not found.
Exception Location: /usr/lib/python2.7/dist-packages/django/template/defaulttags.py in render, line 424
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
['/root/Desktop/iSniff-GPS-master',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
Server time: Thu, 15 Aug 2013 20:18:33 -0500
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.