My research interest encompasses Security and Privacy, with an emphasis on
anonymity networks and Internet censorship circumvention technologies. In
particular, I am interested in conducting network measurements to gain insight
into anonymity networks (e.g., Tor,
I2P) and technologies (e.g., proxy, VPN) that are used
for censorship circumvention.

This note originates from an effort to find ways to automate OpenVPN and SSTP VPN connections from an Ubuntu 18.04 machine using CLI. For setting VPN connection from GUI, NetworkManager GNOME has nice third-party packages for most VPN protocols. Only follow this note if you want to setup OpenVPN or SSTP VPN connection from CLI.
OpenVPN has a nice CLI tool (i.e. openvpn). However, connecting to an SSTP VPN server using CLI (e.
[Read More]

Mahatma Gandhi used to say: “Live as if you were to die tomorrow. Learn as if you were to live forever.” Therefore, I always try to improve my knowledge and keep myself up to date by reading.
In addition to reading, I think taking note also helps me to understand the topic, remember it longer, and easier to trace back something that I have read. Therefore, here is a list of notes of various topics that I read/learned from several sources.
[Read More]

SSTP stands for Secure Socket Tunneling Protocol, developed by Microsoft. It is one of the most powerful and widely used VPN protocols. It has the ability to bypass most firewalls because it uses SSL over port 443, which is also used by the famous protocol – HTTPS. Together with OpenVPN protocol, SSTP is considered one of the “stealth-VPN” protocols. Since it is owned by Microsoft, most Windows operating systems has a built-in SSTP-client.
[Read More]

I once wrote a python program to create text files, which only contain ASCII and UTF-8 Unicode text. Before being written to a file, every non-UTF-8 line of text is decoded to UTF-8 using this line of code:
line = line.decode('utf-8', 'ignore').encode("utf-8") I noticed many suggestions on StackOverFlow to use python’s string.printable or bash’s strings command to sanitize the text. However, these functions will remove all non-ASCII characters, which includes many, many valid UTF-8 characters because ASCII is a subset of UTF-8 (reference).
[Read More]

Follows are command lines that I often use (not necessarily the best approach) while interacting with AWS. Before starting, you will need to install the CLI.
For macOS, use brew install awscli For Linux, use pip install awscli Commands list files from a public S3 bucket. If the bucket is not publicly accessible, you need to sign in and do not need the --no-sign-request flag:
aws --no-sign-request s3 ls s3://<bucket>/<path> Download files from a S3 bucket:
[Read More]

Follows are command lines that I often use (not necessarily the best approach) while interacting with Docker Container. Commands are correct up to Version 18.03.1.
show all containers, including inactive ones:
docker ps -a show images:
docker images run a container from an image in interactive mode:
docker run -d -it --name [nameOfContainer] [imageName:version or imageID] get into a container with a bash shell:
docker exec -it [containerID] /bin/bash show images:
[Read More]