Mar22

【原创】Vim编辑器退出关闭自动清屏

Author: leeon  Click: 10828   Comments: 0 Category: linux  Tag: vim,清屏

在有些终端界面上使用vim当退出vim的时候会自动清屏vim打开显示的内容,这样不方便再次查看和复制文本内容,导致每次都要重复vim打开再查看再关闭。发现在debian,ubuntu的系统中vim会出现这个问题,redhat系列的系统vim没有自动清屏的问题。其实这个问题很好解决,只要在你的.barhrc 文件中写入一行:

export TERM=linux

即可。这样退出当前会话重新登录就会发现vim打开关闭后不会清屏啦。

Mar18

【原创】使用pcap.net在windows下实现自定义的抓包分析工具

Author: leeon  Click: 13629   Comments: 4 Category: 网络  Tag: winpcap,csharp,pcapdotnet

      最近需要在windows平台下通过抓包分析工具把http的GET请求地址抓出来,其实在很多应用场景下我们都需要这样类似的工具,比如httpwatch,fiddler,chrome,firefox下的开发者工具,这些都必须绑定到浏览器才能使用,如果我们需要一个可以自定义的抓包分析工具来分析这些http get和post请求,那么我们该怎么做呢? 搜索了一番有python在windows下抓包分析的实现,也有c++原生使用winpcap库来使用,python的兼容性不好不方便部署使用,c++的开发难度系数较大,维护成本较高,最后发现有国外有人介绍说winpcap在c#的封装实现不错,果断去官方网站 http://pcapdotnet.codeplex.com/ 下载了开发包来学习。

     官方文档说要装.net framework 4.0 和winpcap 4.1.2 其实在自己的开发环境中我选用的是.net framework 4.5版本和winpcap 4.1.3 都是可以兼容的。下载的开发包中已经涵盖了官网上介绍的一些示例代码。只要在vs中打开工程进行编译生成就好了。

    鉴于官方网站上示例代码非常有限,而且提供的api手册比较粗糙,导致撸主在官网论坛查阅了很长时间那陈旧的帖子内容才得到一些启示。撸主想实现的功能非常简单,就是想不通过浏览器附带的http抓包工具来实现底层的http抓包过滤,例如wireshark中的过滤规则一样可以把我所访问的所有http请求都过滤出来。这样我们只要启用这个小工具,就可以在底层上实现透明抓包,任何通过本机网卡访问的http请求都不会被放过! 废话不多说,放上实现代码:

[code="plain"]
using System;
using System.Collections.Generic;
using PcapDotNet.Core;
using PcapDotNet.Packets;
using PcapDotNet.Packets.IpV4;
using PcapDotNet.Packets.Transport;
using PcapDotNet.Packets.Http;
using System.Text;

namespace InterpretingThePackets
{
class Program
{
static void Main(string[] args)
{
// Retrieve the device list from the local machine
IList allDevices = LivePacketDevice.AllLocalMachine;

if (allDevices.Count == 0)
{
Console.WriteLine("No interfaces found! Make sure WinPcap is installed.");
return;
}

// Print the list
for (int i = 0; i != allDevices.Count; ++i)
{
LivePacketDevice device = allDevices[i];
Console.Write((i + 1) + ". " + device.Name);
if (device.Description != null)
Console.WriteLine(" (" + device.Description + ")");
else
Console.WriteLine(" (No description available)");
}

int deviceIndex = 0;
do
{
Console.WriteLine("Enter the interface number (1-" + allDevices.Count + "):");
string deviceIndexString = Console.ReadLine();
if (!int.TryParse(deviceIndexString, out deviceIndex) ||
deviceIndex < 1 || deviceIndex > allDevices.Count)
{
deviceIndex = 0;
}
} while (deviceIndex == 0);

// Take the selected adapter
PacketDevice selectedDevice = allDevices[deviceIndex - 1];

// Open the device
using (PacketCommunicator communicator =
selectedDevice.Open(65536, // portion of the packet to capture
// 65536 guarantees that the whole packet will be captured on all the link layers
PacketDeviceOpenAttributes.Promiscuous, // promiscuous mode
1000)) // read timeout
{
// Check the link layer. We support only Ethernet for simplicity.
if (communicator.DataLink.Kind != DataLinkKind.Ethernet)
{
Console.WriteLine("This program works only on Ethernet networks.");
return;
}

// Compile the filter
using (BerkeleyPacketFilter filter = communicator.CreateFilter("ip and tcp and dst port 80"))
{
// Set the filter
communicator.SetFilter(filter);
}

Console.WriteLine("Listening on " + selectedDevice.Description + "...");

// start the capture
communicator.ReceivePackets(0, PacketHandler);
}
}

// Callback function invoked by libpcap for every incoming packet
private static void PacketHandler(Packet packet)
{
if (packet == null) { return; }
if (packet.Ethernet == null) { return; }
if (packet.Ethernet.IpV4 == null) { return; }
if (packet.Ethernet.IpV4.Tcp == null) { return; }
if (packet.Ethernet.IpV4.Tcp.Http == null) { return; }
try
{
HttpDatagram http = packet.Ethernet.IpV4.Tcp.Http;

if (http.IsRequest && http.IsValid) {
String msg = http.Decode(Encoding.UTF8).Split('\n')[0];
if (msg.StartsWith("GET ") || msg.StartsWith("POST "))
{
Console.WriteLine(msg);
}
}
}
catch (Exception e)
{

}
}
}
}
[/code]


这里的实现是过滤出访问远端服务器80端口的tcp请求报文,同时截取http头部是get或者post开头的单行字符串。这样我们就可以捕获所有http协议访问的url了。

Mar17

【原创】微软KB2932677补丁无法安装问题解决

Author: leeon  Click: 8890   Comments: 4 Category: 其他  Tag: KB2932677

每个月微软都会发布一些补丁,撸主的台机是windows7 64位版本,最近在更新KB2932677补丁时死活提示安装错误。这个补丁是针对silverlight的,微软官方社区响应还比较快,提供了解决方案:

1. 首先下载http://go.microsoft.com/?linkid=9781197 修复工具来修复silverlight的问题。

2.然后重新下载最新版本的silverlight : http://www.microsoft.com/getsilverlight

3. 最后重新安装KB2932677 补丁即可

Mar7

【原创】小米miflash刷机工具无法识别问题解决

Author: leeon  Click: 22344   Comments: 0 Category: 其他  Tag: miflash,2s,小米,xiaomi
最近小米2s降价1299,索性抢购一台16G联通版把玩一下。默认装的是稳定版,做为码农必然不会接受无法root的android机器,索性准备线刷开发版本miui玩玩。楼主的笔记本是windows8.1 64位版本,关机重启进入fastboot界面,打开miflash刷机工具点了无数次刷新怎么也识别不到小米手机,刚开始是怀疑是不是adb进程啥的冲突了,结果发现,只要把windows系统下的“设备管理器”中Adb Interface设备下Fastboot interface (Google USB ID) 彻底卸载驱动后(删除此设备的驱动器软件),然后拔出usb再重新插入,在短时间内miflash是可以刷新到连接设备的,但是此时windows的界面上同时会提示“设备安装” 正在安装Android , 然后这个安装界面进度结束后

再刷新miflash刷机工具,这时候就怎么也无法查询到小米2s主机的连接。于是就怀疑是否是驱动问题的影响,网上有人说要下载小米官方提供的驱动,索性下载更新了几次,驱动程序都显示Fastboot interface (Google USB ID)  ,索性手工进入设备管理器,然后选择:

“更新驱动程序软件” -》 “浏览计算机以查找驱动程序软件” -》 “从计算机的设备驱动列表中选取” 

此时系统会提示有两个支持硬件的驱动:

可以看到红框选的就是我们当前使用的驱动,这里miflash使用的硬件驱动是“Android ADB Interface” ,不是Fastboot interface!! ,重新选择然后下一步后,我们就可以在miflash中看到我们的小米设备了。

分类

标签

归档

最新评论

Abyss在00:04:28评论了
Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项

我看过的书

链接

其他

访问本站种子 本站平均热度:8823 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次