某天无聊抓包的时候研究了下zjuvpn的连接和断开过程,应该来说是典型的PPP协议的握手、验证与建立过程,但断开vpn时的流程引起了我的兴趣。
通过伪造PPP数据报断开指定IP L2TP-PPP-VPN的方法
2 Replies
闲的蛋疼,写的小程序,首先感谢Sakura的帮助~
参考文献地址:GetTcpTable2的MSDN说明,其中的例子很详细,GetExtendedXXXTable虽然函数调用方式不一样但拿到的连接信息调用方式是一样的。
主要使用的API: GetTcpTable2和GetExtendedUdpTable(GetExtendedTcpTable)
Continue reading
虽然说是GDI+,但是只在最后保存文件的时候用到了。。。取页面信息还是GDI的那一套,这个是因为GDI+中没有C#的方便的CopyToScreen函数。。。
第一个函数GetEncoderClsid属于GDI+,根据类型参数返回编码方式,然后调用GDI+ Bitmap对象的Save函数保存文件。
GDI核心函数是BitBlt和GetDIBits,首先获得桌面窗口的DC,创建兼容的DC并选入兼容Bitmap,使用bitblt拷贝位图数据,通过兼容DC中的bitmap对象构造位图文件头信息,GetDIBits参考该文件头信息填充缓冲区,将兼容DC中的值写入位图文件,最后再调用GDI+进行保存。
GDI+可以提供转化到png bmp gif jpeg tiff等多种格式,而不仅仅是GDI的bmp。
以下是代码,注意调用时要首先初始化GDI+,否则可能在GetEncoderClsid中会出现Access Violation
Continue reading