当前位置: 首页 > news >正文

网站建设首页模板下载建个公司网站怎么弄

网站建设首页模板下载,建个公司网站怎么弄,网站 攻击,网站频道策划随着WiFi的普及#xff0c;移动运营商的热点也越来越多了#xff0c;如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等#xff0c;一般来说#xff0c;连上此类的热点#xff0c;打开浏览器上网时都会自动跳转到一个验证页面#xff0c;最近有个项目也有类… 随着WiFi的普及移动运营商的热点也越来越多了如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等一般来说连上此类的热点打开浏览器上网时都会自动跳转到一个验证页面最近有个项目也有类似的需求Android手机自建热点别的手机wifi连接此热点打开浏览器输入任意内容自动跳转到一个下载列表页面点击相应的链接即可下载相应的文件。 分析 考虑如下几种情况 - 浏览器输入IP地址请求对应IP地址的80端口的内容 - 浏览器输入域名先进行DNS解析域名得到IP地址后请求对应的80端口的内容 - 浏览器输入任意字符一般浏览器内部设置一个默认的搜索引擎此时地址栏的内容会作为搜索的关键字加在搜索的url中 因此需要解决如下问题 - 端口报文转发 - DNS报文拦截 - url重定向 端口报文转发 Android系统本身是Linux内核1024以下端口都名花有主如http是80https是443dns是53对于这些1024以下端口的绑定需要root权限但一般的App是没有root权限的除非在 AndroidManifest.xml 文件中声明 android:sharedUserId“android.uid.system”并使用密钥文件进行签名 java -jar signapk.jar platform.x509.pem platform.pk8 your.apk your_signed.apk但问题是密钥文件属于手机厂商显然不可能拿到这个密钥文件当然如果在模拟器里测试倒是可以的从android源代码 build/target/product/security 里找到密钥文件platform.pk8 和 platform.x509.pem签名工具 signapk.jar 在 build/tools/signapk 下。 基于以上原因一般Web服务器都绑定8080端口手机浏览器如果输入IP地址会访问Web服务器的80端口这样就需要进行端口报文转发对应dns报文拦截无法监听53端口同样需要端口转发此外浏览器的搜索引擎如果是google的话使用https同样也有这个问题。 iptables是个很好的防火墙管理工具这里需要做如下配置 iptables -t nat -A PREROUTING -d 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to 192.168.43.1:8080 iptables -t nat -A PREROUTING -d 0.0.0.0/0 -p tcp --dport 443 -j DNAT --to 192.168.43.1:8443 iptables -t nat -A PREROUTING -d 0.0.0.0/0 -p udp --dport 53 -j DNAT --to 192.168.43.1:53530说明-t nat指定nat表-A添加PREROUTING路由前处理-d 0.0.0.0/0任意目的地IP-p tcp协议–dport 80端口-j DNAT地址映射跳转–to 192.168.43.1:8080转发目的地总的意思就是到达防火墙的报文不管去往那个IP地址只要是发往80端口的tcp包都转发到192.168.43.1的8080端口。剩下两条意思类似。 需要注意的是 1、如果是App中的java代码调用需要root权限一般这么写 String shell su -c iptables -t nat -A PREROUTING -d 0.0.0.0/0 -p tcp --dport 80 -j DNAT --to 192.168.43.1:8080; Runtime.getRuntime().exec(shell);2、Android手机设置为热点模式时IP地址一般都会固定成192.168.43.1这是由手机的dhcpcd服务指定的一般不会去改dhcpcd服务的源代码然后重新编译但这种写死的做法显然是不太合适的通用的做法是自动取Ap的IP地址 public static String getNetworkIpAddress(String name) {try {EnumerationNetworkInterface interfaces NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) {NetworkInterface networkInterface (NetworkInterface) interfaces.nextElement();EnumerationInetAddress enumeration networkInterface.getInetAddresses();while (enumeration.hasMoreElements()) {InetAddress inetAddress (InetAddress) enumeration.nextElement();if (!inetAddress.isLoopbackAddress() inetAddress instanceof Inet4Address TextUtils.equals(name, networkInterface.getDisplayName())){return inetAddress.getHostAddress().toString();}}}} catch (Exception e) {e.printStackTrace();}return ;}public static String getApName(Context context) {try {ConnectivityManager connectivityManager (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);Method method connectivityManager.getClass().getMethod(getTetheredIfaces);String[] names (String[]) method.invoke(connectivityManager);return names[0];} catch (Exception e) {e.printStackTrace();}return ;} 看着挺复杂的因为热点模式和连接到别的热点是完全不同的取Ap名字时用到了一个隐藏的方法需要用反射的方式调用。 DNS报文拦截 DNS意思是域名解析协议用户打开浏览器浏览网页时不会记IP地址而是记某些有含义的网址DNS就是解决网址到IP地址的对应问题。DNS报文格式参考RFC1035文档微软的网站上也有介绍http://technet.microsoft.com/en-us/library/dd197470(vws.10).aspx 这里主要介绍DNS报文的格式。 DNS报文格式 DNS报文一般由如下部分组成 - DNS header (fixed length12 Bytes) - Question entries (variable length) - Answer resource records (variable length) - Authority resource records (variable length) - Additional resource records(variable length) 套用《TCPIP详解卷》中的一张图 DNS header固定占12字节 总共占12字节结构如下 – 标识报文的标识占2字节查询的报文里生成响应的报文里复制此内容用来标识是对相应查询的响应 – 标记报文的标记位占2字节也就是16位如下 QR0标识查询1标识响应opcode0为一般查询1为反向查询IP地址反查域名2为查询服务器状态一般为0AA是否为授权回答authoritative - answer可以理解为当前域名服务器是否对结果负责如果从别的域名服务器查询过来的结果显然不是当前域名服务器可掌控的因此设为0TC是否被截断UDP报文限定512字节不包含IP及头部信息如果超出将截断此标记也被置1RD是否递归查询Recursion Desired如果为1说明DNS服务器如果没有结果那么DNS服务器会递归地找别的DNS服务器要结果直到得到结果并返回如果为0则在没有结果的情况下返回DNS列表RA是否支持递归查询在响应报文中一般都会支持递归查询zero必须为0rcode错误码一般为0表示没有错如果不为0表示有问题错误码可以参考相关文档–问题资源数占2字节 –回答资源数占2字节 –授权资源数占2字节 –附加资源数占2字节 Question entries不定长 不定长结构如下 - 名字域名的字符串表示microsoft.com表示为0x09microsoft0x03com0x00需要注意的是长度的最高两位必须为0因此字符长度不能超过63也就是说最多0x3f另外参考rfc1053为简化起见域名总长度不能超过255 - 类型相关含义可查手册一般是0x0001表示IP地址类型 - 类一般是0x0001表示普通的internet问题 Answer resource records不定长 不定长结构如下 - 名字同前面的查询名字一般会以索引方式表示引用到前面的字符比如前面的 microsoft.com 字符在报文中的位置 - 类型同前面的查询类型 - 类同前面的查询类 - 生存时间报文生存时间TTL占4字节单位秒 - 资源长度占2字节 - 资源内容资源具体的内容如IP地址1.1.1.1 表示为 0x01010101 Authority resource records不定长 同上。 Additional resource records不定长 同上。 例子 经过以上的分析来看个例子打开wireshark抓包工具监听网卡数据包打开控制台输入host baidu.com并抓取DNS报文。 上图为DNS查询 21d50100000100000000000005626169647503636f6d000001000121 d5会话标识应答中用于标识是哪个查询01 00标记二进制为0000 0001 0000 0000参考标记位RD被置1标识是一个递归的查询00 01问题数100 00回答资源数000 00授权资源数000 00额外资源数005 62 61 69 64 75 03 63 6f 6d 00域名名字就是5baidu3com0这种格式数字标识字符的数量baidu有5个字符所以是5baidu域名字符串最后要跟一个0x0000 01查询IP地址00 01普通的internet查询 上图为DNS应答 21d58180000100030000000005626169647503636f6d0000010001c00c000100010000017c00047b7d7290c00c000100010000017c0004dcb56f55c00c000100010000017c0004dcb56f5621 d5标识和之前的查询一一对应81 80标记二进制为1000 0001 1000 0000QR、RD、RA被置1表示支持递归查询的应答00 01问题数100 03回答资源数300 00授权资源数000 00额外资源数005 62 61 69 64 75 03 63 6f 6d 00域名名字参考前面的查询报文00 01查询IP地址00 01普通的internet查询c0 0c域名名字应该和前面的一致但是为了节省报文长度这是个引用怎么知道的呢因为是c0二进制是1100 0000最高位两位置1了05626169647503636f6d00这串字符前面有12个字节因此相对位置是0c从0开始00 01查询IP地址00 01普通的internet查询00 00 01 7c生存时间Time to LiveTTL单位秒380秒00 04资源长度4个字节表示接下来的4个字节是资源的实际内容7b 7d 72 90资源内容其实就是IP地址123.125.114.144c0 0c …同上从上面的DNS应答报文看关注7b7d7290、dcb56f55、dcb56f56即可分别对应三个IP地址123.125.114.144、220.181.111.85、220.181.111.86 DNS报文拦截实现 了解了DNS报文的内容下面需要做的就是监听DNS端口构造自己的报文返回即可由于权限问题一般Android的App是无法监听53端口的这里可以监听53530端口再通过iptables设置防火墙将53端口的报文转发到53530端口即可注意DNS是UDP包代码参考如下 byte[] requestBuffer new byte[256]; byte[] responseBuffer new byte[256]; byte[] ipBuffer { (byte) 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00,0x00, 0x01, 0x7c, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01 }; try {datagramSocket new DatagramSocket(53530);DatagramPacket requestPacket new DatagramPacket(requestBuffer,requestBuffer.length);while (!Thread.currentThread().isInterrupted()) {datagramSocket.receive(requestPacket);int requestLength requestPacket.getLength();System.arraycopy(requestBuffer, 0, responseBuffer, 0, requestLength);System.arraycopy(ipBuffer, 0, responseBuffer, requestLength, ipBuffer.length);// 标志位responseBuffer[2] (byte) 0x81;responseBuffer[3] (byte) 0x80;// 响应数responseBuffer[6] (byte) 0x00;responseBuffer[7] (byte) 0x01;DatagramPacket response new DatagramPacket(responseBuffer, requestLength ipBuffer.length, requestPacket.getAddress(), requestPacket.getPort());datagramSocket.send(response);} } catch (Exception e) {e.printStackTrace(); }这样所有的DNS解析请求都被转到1.1.1.1这个IP地址了。 url重定向 这个一般由Web服务器决定Android有款ijetty是开源的 http://code.google.com/p/i-jetty/ 可看看其中的源代码修改其中的Handler就搞定了。
http://www.zqtcl.cn/news/662025/

相关文章:

  • 简述网站设计流程沁水做网站
  • 南京公司网站建设怎么收费获奖网页设计
  • 网站域名试用期水墨风格网站源码
  • 长沙网站开长沙手机网站建设哪些内容
  • 网站建设算固定资产吗做泵阀生意到哪个网站
  • 佛山网站建设定制杭州人防质监站网址
  • 什么网站可以做微官网定制小程序制作一个需要多少钱
  • 扒下来的网站怎么做修改什么样是权网站重高的
  • 淘宝客做网站链接潍坊网站建设wfzhy
  • 怎样做二维码链接到网站上做的比较好的美食网站有哪些
  • 自动化科技产品网站建设响应式博客wordpress
  • 个人建站如何赚钱男人的好看网
  • 门户网站建设管理工作作一手房用什么做网站
  • 网站建设优化服务案例三合一网站程序
  • 网站长尾词关于制作网站的方案
  • 做二手衣服的网站有哪些wordpress单本小说采集
  • 曲靖市建设局网站品牌营销咨询公司是做什么的
  • wordpress网站统计代码放哪个文件putty搭建wordpress
  • 桦南县建设局网站天坛装修公司口碑怎么样
  • 网站的建设求职简历网站开发与维护价格
  • 网站空间备份站长网站优点
  • 房产网站做那个比较好网页设计属于前端吗
  • 衡水企业网站建设费用html5网页设计教程
  • 用wp系统做网站网站有收录没排名
  • 网站源码程序下载ios开发软件
  • 设计好的网站什么是企业网站策划案
  • 北京网站建设亿玛酷适合5传奇网站装备动态图怎么做
  • 多平台网站设计实例3d效果图什么网站做的好
  • 58同城西安网站建设购物网站前端浮动特效怎么做
  • asp网站模板源码wordpress 画图插件