小编Cik*_*nas的帖子

VPN数据包旁路

我正在创建一个模拟VPN(实际上并不创建与服务器的真实连接)来获取所有传入和传出的网络字节(信息).

现在我可以获取数据包并解析它们.我得到的例子:

IP版本:4标题长度:20总长度:60协议:6源IP:10.0.2.0目标IP:5.20.5.59主机名:clients4.google.com

我想知道我应该怎么做以及如何建立与网站/应用程序的连接(现在它没有连接).

在这个网站:http://www.thegeekstuff.com/2014/06/android-vpn-service/写道,需要做出这些步骤:

  1. 从TUN获取IP数据包.与所有VPN服务相同.
  2. 提取第4层信息.协议类型(例如TCP/UDP)及其有效载荷是必须的.由于TCP中存在握手过程,因此在从其获取实际有效载荷数据之前,我们需要先写回握手数据包.
  3. 选择相应的套接字发送有效负载.由于此步骤正在第4层上进行,因此我们需要保存套接字并尝试稍后获取返回数据.如果有任何返回数据,我们需要将这些数据包传递给TUN.
  4. 从套接字获取数据包,并构建第3层数据包.首先,我们需要构建一个有效的第4层数据包.UDP更容易,因为4字节UDP标头仅包含源地址,源端口,目标地址,目标端口.TCP更复杂,因为它是一个状态
  5. 连接,应正确设置序列号和确认号.然后,使用第4层数据包作为有效载荷,我们需要构建一个有效的第3层数据包.将IP数据包写回TUN.与所有VPN服务相同.

在第2步,我从数据包中获取信息.但是不要轻视它应该如何进一步完成.也许有人可以详细解释我.另外,也许可以告诉我如何获得目的地港口,当我有其IP地址.还有代码:

    public class VPN extends VpnService implements Handler.Callback, Runnable {
    private static final String TAG = "VpnService";

    private String mServerAddress = "127.0.0.1";
    private int mServerPort = 55555;

    private Handler mHandler;
    private Thread mThread;

    private ParcelFileDescriptor mInterface;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (mHandler == null) {
            mHandler = new Handler(this);
        }

        if (mThread != null) {
            mThread.interrupt();
        }
        mThread = new …
Run Code Online (Sandbox Code Playgroud)

java ip vpn parsing android

11
推荐指数
1
解决办法
2555
查看次数

坚实的原则:LSP违规

我正在尝试以正确的方式学习OOP和OOD原则.我想对Liskov替换原则及其PRE和POST条件做一些澄清.我在这里阅读了一些主题,一些文章来自http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod等地方.

我已经编写了一个简单的基类和几个示例子类,我的假设是关于它们的前后条件,我想知道它们是否正确.注释行是我的想法:是否违反了PRE和POST条件.

public abstract class BaseClass
{
    public virtual int GetResult(int x, int y)
    {
        if (x > 10 && y < 20)
        {
            return y - x;
        }
        throw new Exception();
    }
}

public class LSPExample1 : BaseClass
{
    public override int GetResult(int x, int y)
    {
        // PRE: weakened pre condition is ok
        if (x > 10 && y <= 15)
        {
            // POST: Is it ok? because the available result range is narrowed by y …
Run Code Online (Sandbox Code Playgroud)

oop liskov-substitution-principle solid-principles

1
推荐指数
1
解决办法
217
查看次数

无法从控制器获取数据作为json

我需要从控制器获取数据到View作为JSON格式,但它不起作用,我不明白为什么.

我的控制器(我在索引操作上请求它):

    public class HomeController : Controller
    {
        CompanyTicketsDb _db = new CompanyTicketsDb();

        public ActionResult Index()
        {
            var model =
                _db.Tickets
                    .Select(r => new TicketListViewModel
                    {
                        Id = r.Id,
                        Name = r.Name,
                        Description = r.Description,
                        CompanyName = r.CompanyName,
                        Status = r.Status,
                        CompanyId = r.CompanyId,
                    });
            if (Request.AcceptTypes.Contains("application/json"))
            {
                return Json(model, JsonRequestBehavior.AllowGet );
            } 

            return View(model);
        }
    }
Run Code Online (Sandbox Code Playgroud)

而我的观点(这是局部视图)看起来像是(测试模式):

@model IEnumerable<MvcApplication4.Models.TicketListViewModel>

<button id="Button1">asd</button>

@section scripts {
<script src="~/Scripts/knockout-3.2.0.js"></script>
    <script>
        $(document).ready(function () {
            $("#Button1").click(function (evt) {
                type: 'GET'
                url = '/';
                dataType …
Run Code Online (Sandbox Code Playgroud)

ajax model-view-controller jquery json controller

0
推荐指数
1
解决办法
60
查看次数