Chinese version of Flightradar 24?

check this out. I found this link on the VRS Fakebook group.

http://flightadsb.variflight.com/share-data/script#help-document

I am already feeding too many sites. No appetite to add this feed to the heap.

1 Like

Wasn’t there a discussion some time ago about the authorities clamping down on feeders?

2 Likes

That was Chinese Govt. clamping down on Chinese citizen who were feeding sites outside China like FR24, Flightaware etc.

There was no clampdown on those who were feeding the Chinese site VeriFlight.

If China blocks their citizen from feeding sites in other countries, then citizen of other countries should bycot feeding sites located in China. Tit for tat.

1 Like

I agree with the bycot.

Me too

If you look on the stats of the different feeding sites, there are only a few feeders from China.

1 Like

Peeking into VeriFlight install script

wget -O ~/VariFlight-ADS-B-Script.zip https://file.veryzhun.com/buckets/adsb-dm/keys/VariFlight%20ADS-B%20Script.zip

pi@raspberrypi:  $ sudo unzip VariFlight-ADS-B-Script.zip
pi@raspberrypi:  $ cd 'VariFlight ADS-B Script'
pi@raspberrypi:~/VariFlight ADS-B Script $ ls
'~$说明 Operating Instructions .doc'   synctime.sh
 get_message                           task.sh
 setup.sh                             '操作说明 Operating Instructions .doc'

.

pi@raspberrypi:~/VariFlight ADS-B Script $ ls get_message
acars.py  acars.sh  config.ini  get_ip.py  init.sh  md5.txt  send_message.py

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat  setup.sh
#!/bin/bash
clear
echo " "
echo "Setup VariFlight ADS-B Client..."
echo "You will first need a working version of any feeder before proceeding."
echo "Example FlightAware or any pre-build ADS-B image already installed."
echo "Else setup for VariFlight feeder will fail!"
echo "This setup script just borrow the existing feeder Dump1090 decoder to function."
echo " "

apt-get update -y
apt-get upgrade -y
apt-get install dos2unix -y
apt autoremove -y

cd /root/get_message/
python get_ip.py
ps aux | grep py

update-alternatives --config editor
crontab -l > mycron
#echo new cron into cron file
echo "* * * * * /root/task.sh >/dev/null 2>&1" >> mycron
echo "* * * * * /root/synctime.sh >/dev/null 2>&1" >> mycron
#install new cron file
crontab mycron
rm mycron
crontab -e

cd ~
chmod +x *.sh
chmod +x *.py
dos2unix *.*
cd get_message
chmod +x *.sh
chmod +x *.py
dos2unix *.*
cd ~

bash /root/get_message/init.sh
bash /root/task.sh
clear

echo " "
echo " "
echo "UUID : "
cat /root/get_message/UUID
echo " "
echo " "
echo "Standy by 1 minute to reboot and activation..."
echo "Please copy down the UUID code together with your"
echo "nearest airport Name / ICAO code to mailto:adsb@variflight.com"
echo "And please register online at http://flightadsb.variflight.com"
echo "for new account membership creation."
echo " "
echo "If you are using WiFi please modify {nano /root/get_message/get_ip.py}"
echo "Change the value to "eth0" to "wlan0" at the end of the script"
echo "e.g. {eth=get_ip_address('eth0')}"
echo " "
echo " "
echo "Thank you."
echo "VariFlight Team "
echo " "
echo " "
echo " "
echo " "
echo "Engineered by Rodney Yeo @ http://rodyeo.dyndns.org/"
sleep 60
reboot

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat get_message/get_ip.py
import socket
import fcntl
import struct
import urllib2
import urllib
import sys,os
import ConfigParser
import hashlib
import json
import uuid

config = ConfigParser.ConfigParser()
config.readfp(open(sys.path[0]+'/config.ini',"rb"))

uuid_file=sys.path[0]+'/UUID'

if os.path.exists(uuid_file) :
        file_object = open(uuid_file)
        mid = file_object.read()
        file_object.close()
else :
        mid = uuid.uuid1().get_hex()[16:]
        file_object = open(uuid_file , 'w')
        file_object.write( mid )
        file_object.close()

def send_message(source_data):
        source_data=source_data.replace('\n','$$$')
        f=urllib2.urlopen(
                        url = config.get("global","ipurl"),
                        data =  source_data,
                        timeout = 60
                        )
        tmp_return=f.read()

        request_json=json.loads(tmp_return)
        request_md5=request_json['md5']
        del request_json['md5']


        tmp_hash=''
        for i in request_json:
                if tmp_hash=='' :
                        tmp_hash=tmp_hash+request_json[i]
                else :
                        tmp_hash=tmp_hash+','+request_json[i]

        md5=hashlib.md5(tmp_hash.encode('utf-8')).hexdigest()

        if (md5 == request_md5):
                operate(request_json)
        else :
                print 'MD5 ERR'

        print "return: "+tmp_return;

def get_ip_address(ifname):
    skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
    ipString  = socket.inet_ntoa(pktString[20:24])
    return ipString

def operate(request_json):
        if request_json['type'] == 'reboot' :
                os.system('/sbin/reboot')
        elif request_json['type'] == 'code' :
                fileHandle = open ( urllib.unquote( request_json['path'] ) , 'w' )
                fileHandle.write( urllib.unquote( request_json['content'] ) )
                fileHandle.close()
        else :
                print 'OK'



eth=get_ip_address('eth0')

send_message(mid+'|'+eth+'|')

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat synctime.sh
#!/bin/bash
> /var/spool/mail/root
/usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat task.sh
#!/bin/bash

ps -eaf | grep dump1090 | grep -v grep
if [ $? -eq 1 ]
then
echo `date "+%G-%m-%d %H:%M:%S"`" dump1090            restart"
echo "------------------------------------------------------------------------"
systemctl restart dump1090-fa
systemctl restart dump1090
systemctl restart dump1090-mutability
else
echo `date "+%G-%m-%d %H:%M:%S"`" dump1090            running"
echo "------------------------------------------------------------------------"
fi

sleep 10
ps -eaf | grep dump1090 | grep -v grep
if [ $? -eq 1 ]
then
echo `date "+%G-%m-%d %H:%M:%S"`" dump1090            restart"
echo "------------------------------------------------------------------------"
sleep 60
/sbin/shutdown -r now
/sbin/reboot
else
echo `date "+%G-%m-%d %H:%M:%S"`" dump1090            running"
echo "------------------------------------------------------------------------"
fi

ps -eaf | grep send_message.py | grep -v grep
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
python -O /root/get_message/send_message.py &
echo `date "+%G-%m-%d %H:%M:%S"`" send_message            restart"
echo "------------------------------------------------------------------------"
else
echo `date "+%G-%m-%d %H:%M:%S"`" send_message            running"
echo "------------------------------------------------------------------------"
fi

ps -eaf | grep get_ip.py | grep -v grep
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
python /root/get_message/get_ip.py
echo `date "+%G-%m-%d %H:%M:%S"`" get_ip            restart"
echo "------------------------------------------------------------------------"
else
echo `date "+%G-%m-%d %H:%M:%S"`" get_ip            running"
echo "------------------------------------------------------------------------"
fi

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat get_message/send_message.py
import socket
import urllib2
import urllib
import sys
import ConfigParser
import zlib
import base64
import os,uuid
import time

serverHost = '127.0.0.1'
serverPort = 30003

config = ConfigParser.ConfigParser()
config.readfp(open(sys.path[0]+'/config.ini',"rb"))

uuid_file=sys.path[0]+'/UUID'

if os.path.exists(uuid_file) :
        file_object = open(uuid_file)
        mid = file_object.read()
        file_object.close()
else :
        mid = uuid.uuid1().get_hex()[16:]
        file_object = open(uuid_file , 'w')
        file_object.write( mid )
        file_object.close()


sockobj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sockobj.connect((serverHost,serverPort))

def send_message(source_data):
        try:
                source_data=base64.b64encode(zlib.compress(source_data))
                f=urllib2.urlopen(url = config.get("global","sendurl"),data =  urllib.urlencode({'from':mid,'code':source_data}),timeout = 2)
                return True
        except Exception,e:
                print str(e)
                return True

tmp_buf=''

while 1:
        buf = sockobj.recv(8192)
        if not buf: break
        if len(buf) != 0:
                tmp_buf=tmp_buf+buf
                if buf[len(buf)-1] == '\n':
                        if send_message(tmp_buf) :
                                tmp_buf=''
time.sleep(0)

.

pi@raspberrypi:~/VariFlight ADS-B Script $ cat get_message/config.ini
[global]
name = NEW
ipurl = http://receive.cdn35.com/ADS-B_IP.php
sendurl = http://adsb.feeyo.com/adsb/ReceiveCompressADSB.php
version = 1.0
passwd = 'dKp%GiPbZ$uDlnQqKQwP'

Thew person who was talking about this on the VRS Facebook page is Rodney Yeo. So he is the author of the program too.

PLC needs their free and unfiltered information about the military flights in your country… flights that are masked by lawful companies like FA or FR24.
Like I always said, be careful who gets your data.

LE: CDN35.COM is registered to Alibaba Cloud Computing (Beijing) Co., Ltd

1 Like

@SoNic67

We disagreed on this some time ago. It was not the chinese site back then, but this time, I’m in full agreement with you.

Adsbexchange also displays unfiltered data, and its mlat feedback is also unmasked.

2 Likes

@abcd567

True, but there, they are a user like you and me. With their own setup, who knows what else it’s being collected. ADS-B Exchange has recently limited/stopped allowing the downloading of the raw data.

OpenSky network is another one that makes me think.

Yes, I’m paranoid today.:rofl:

2 Likes

See, I told you that wasn’t cool. Anyone could use that raw data, including China and Russia. Or USA, if that’s what floats your boat :smiley:

1 Like

@SoNic67

The ‘official’ reason given for stopping/suspending it, was that some people had been reselling the data, and/or not giving anything back to the ‘community’.

A FIS would not ‘resell’ the data, but what they give back, if anyhting, may not be desirable.:joy:

2 Likes

Yeah, they have it licensed only non-commerical use… Unless you donate to them :slight_smile: Jeffrey Epstein's Travel Patterns Revealed by Public Flight Data

While the site provides the data for free, its owner requests donations from commercial entities that make use of it. INSIDER provided such a donation before publishing this article.

1 Like

You can still get the data if you want it, but you need to ask for an api key. They said they changed it because some people were being idiots and doing stupid stuff with the unrestricted feed, like making crazy numbers of requests per second, or using it commercially. Using an api key means they can shut off idiots more easily.

1 Like

As a retired US Air Force officer, I don’t think I will be supplying the Chinese with flight data for possible military or civilian aircraft. This could come back to haunt us.

2 Likes

Are there any Russian sites collecting data?

1 Like

I agree. I would imagine in order for this server to function there was a Chinese EULA something like give us your data or will be shot!

Well according to your logic no one in China should be feeding FA either, for security reasons.
Not that i would ever feed variflight or any service related to China if they forbid their citizens to feed FA/FR24.
Ah the irony is, that following that logic of yours, the US and Europe should probably even make it illegal to feed a Chinese ADS-B aggregator.

I don’t think it’s that critical, i would imagine military satellites should be capable much like Aireon to pick up ADS-B.
If you really want to be covert, you’ll have to switch off the transponders or use fake hex codes at least.

1 Like