Skip to content

Instantly share code, notes, and snippets.

if [ -f /tmp/skip-only-enable-connectable-sta-mode-wifi-interface ] ; then
logger -s -t fqrouter skip-only-enable-connectable-sta-mode-wifi-interface found
return
fi
if [ "remove" == "$ACTION" -a "wlan0" == "$INTERFACE" ] ; then
/etc/init.d/disable_sta_mode_wifi_interfaces start
fi
if [ "add" == "$ACTION" -a "wlan0" == "$INTERFACE" ] ; then
logger -s -t fqrouter try to bring up sta mode wifi interface
@fqrouter
fqrouter / half_stream_filtering_observer.py
Created January 18, 2013 15:04
we send the packet through GFW without reaching facebook, it still can trigger GFW returning FAKE ACK and FAKE RESET
import dpkt
import socket
import binascii
hex_ip_packets = [
'binascii.hexlify output of SYN' # replace with your own captured output
'binascii.hexlify output of HTTP GET' # replace with your own captured output
]
raw_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
from netfilterqueue import NetfilterQueue
import subprocess
import signal
import dpkt
import traceback
import socket
import sys
TARGET_IP = '173.252.110.27'
@fqrouter
fqrouter / ip_options_is_not_an_option.py
Last active December 11, 2015 05:58
it is not working, is internet support ip options at all? http://www.eecs.berkeley.edu/Pubs/TechRpts/2005/EECS-2005-24.pdf
from netfilterqueue import NetfilterQueue
import traceback
import subprocess
import signal
import dpkt
import socket
raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
@fqrouter
fqrouter / ip_fragment_ttl_injection.py
Created January 17, 2013 13:35
it is important to send 1 then 2x then 1x and 2. other combinations can not work as effective as this way.
from netfilterqueue import NetfilterQueue
import traceback
import subprocess
import signal
import dpkt
import socket
import time
raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
@fqrouter
fqrouter / wrong_ip_checksum.py
Created January 17, 2013 13:17
it does not work
from netfilterqueue import NetfilterQueue
import traceback
import subprocess
import signal
import dpkt
import socket
import time
raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
@fqrouter
fqrouter / overlapped_ip_fragmentation.py
Created January 16, 2013 15:50
the code to send ip fragment was copied from scapy, verified by tcpdump it indeed send two packet instead of one. However, GFW still can decode the content despite we are using overlapped ip fragmentation. But, 8.8.8.8 dropped the fragmented ip packet, for security reason.
from netfilterqueue import NetfilterQueue
import traceback
import subprocess
import signal
import dpkt
import socket
raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
@fqrouter
fqrouter / impersonator.py
Last active December 11, 2015 02:29
DNS 单向代理
import socket
import dpkt.ip
def main_loop(server_socket, raw_socket):
while True:
packet_bytes, from_ip = server_socket.recvfrom(4096)
packet = dpkt.ip.IP(packet_bytes)
dst = socket.inet_ntoa(packet.dst)
print('%s:%s => %s:%s' % (socket.inet_ntoa(packet.src), packet.data.sport, dst, packet.data.dport))
raw_socket.sendto(packet_bytes, (dst, 0))
@fqrouter
fqrouter / dns_hijacking_resistor.py
Created January 14, 2013 14:34
dig @8.8.8.8 twitter.com
import sys
import subprocess
# source http://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BC%93%E5%AD%98%E6%B1%A1%E6%9F%93
WRONG_ANSWERS = {
'4.36.66.178',
'8.7.198.45',
'37.61.54.158',
'46.82.174.68',
'59.24.3.173',
@fqrouter
fqrouter / dns_hijacking_locator.py
Last active June 18, 2024 08:08
结果的前三行已隐去
from netfilterqueue import NetfilterQueue
import subprocess
import signal
import dpkt
import traceback
import socket
import sys
DNS_IP = '8.8.8.8'