释怀!!

  很幼稚的认为,说出去了,就可以坦然的释怀了。
  
  可惜自己还是做不到,还是很痛。
  情绪就像泛滥的洪水,
  随时都有决提的可能。
  
  曾经很努力的想灌醉自己,可惜没有醉。
  即使自己醉了,头脑还是很清晰,还是很痛。
  或许在酒精的作用下可以麻木疼痛吧。
  酒精可以麻木内心么?
  
  在伤害和被伤害之间,其实受伤的还是自己,
  太过于单纯,执着,妄图追求那种生死的爱恋,
  可惜自己的爱太过卑微,
  敲不开对方紧锁的门,
  换来的只不过是暂时喜欢。
  
  也许有很多经历的人,已经没有那种爱人的勇气和心境了吧,
  他们已经把爱都转给了自己。
  连鲨鱼都知道撞上玻璃的痛楚,人又何尝不是呢。
  
  失败的爱恋,在毕业的时候划定了这一段失败的感情,
  原来自己所追求的那种纯纯的爱恋,自己不曾拥有,
  也许以后也不会再有了吧!
  
  希望得到上帝眷顾的爱人们能幸福。
  
  
  

SharpPcap在net下用封装好的winpcap进行抓包!!!

  这两天帮美女做了一个简单的arp工具,包括arp的简单攻击和监听,昨天晚上做到5点依然感觉精神充沛啊,看来美女的动力就是大啊,现在贴点主要代码吧,程序还不是很完善,待后期修改了以后在netexpert上发布吧.
  对于这个美丽的SharpPcap开发包,包结构的定义直接是从WinPcap里面导入的,重新封装了一下,几个重要的函数也进行了重新的封装。运用了很多c#的特性,这样偶就不用看着协议描述文档,自己一个位一个位的对,搞的一不小心就出错。很是方便哈。
  对于SharpPcap这个库,是一个老外2006年写的吧,他把wpcap.dll里面的一些基本的功能函数提取出来,然后用C#语言进行了封装,研究了下,写的很好呢(偶什么时候才能达到那个水平啊),不过里面的IPADDRESS不好使,被他定义为internal的了,我把他稍微改了下,嘿嘿!!!
  他的包的下载地址http://www.codeproject.com/useritems/SharpPcap.asp里面提供了一些演示,其实把他的代码包拿过来整体看一下基本就会了,网络这块最麻烦的就是线程的操作,还有数据字段的分离,特别是在vc下,麻烦得要死,不过自从用c#好多东西就简单了.(哈哈,怎么那么象广告啊!!!)
  记得有个他的主页,到上面仔细找吧,他的最近版本是1.5.0
下面是偶的一些片段,可惜是线程不安全的,VS2005,如果在线程里面调用控件的话,需要
运用Invoke(),不过偶还不是太熟悉,先简单的用这个设定CheckForIllegalCrossThreadCalls = false;(很无敌的简单用法!!!)
—————————
   ///
   /// 发包线程函数
   ///
   ///
   public void SendPacketThread(object obj)
   {
   ArpParam tempparam = (ArpParam)obj;
   PcapDevice tempdevice = (PcapDevice)devices[deviceIndex];
   ARPPacket arp = BuildARP_EHT(tempparam.arp_destIP, tempparam.arp_destMac, tempparam.arp_sourceMac, tempparam.arp_sourceIP, tempparam.type);
  
   if (tempdevice.PcapOpened == false)
   {
   tempdevice.PcapOpen(tempparam.mode);
   try
   {
   while (true)
   {
   tempdevice.PcapSendPacket(arp);
   if (tempparam.packetNumber– <=>
   break;
   }
   }
  
   catch (Exception ex)
   {
   MessageBox.Show(ex.Message);
   }
   }
   tempdevice.PcapClose();
   }
  
   ///
   /// 监听数据包线程函数
   ///
   ///
   public void listenPacketThread(object obj)
   {
   PcapDevice tempdevice = (PcapDevice)devices[deviceIndex];
   tempdevice.PcapOpen(true);
   Packet packet;
   int mcount = 0;
   //bool ret = true;
  
   while (true)
   {
   mcount++;
   if ((packet = tempdevice.PcapGetNextPacket()) != null)
   {
   //MessageBox.Show(packet.Timeval.ToString());
  
   if (packet is IPPacket)
   {
   ListViewItem item = new ListViewItem();
   IPPacket ipPacket = (IPPacket)packet;
   item.SubItems[0].Text = DateTime.Now.ToString();
   item.SubItems.Add(ipPacket.DestinationAddress);
   item.SubItems.Add(ipPacket.DestinationHwAddress);
   item.SubItems.Add(ipPacket.SourceAddress);
   item.SubItems.Add(ipPacket.SourceHwAddress);
  
   lsvPacketMessage.Items.Add(item);
  
   if (packet is UDPPacket)
   {
   UDPPacket temppacket = (UDPPacket)packet;
   lsvPacketMessage.Items.Add(temppacket.SourceAddress);
   }
   if (packet is TCPPacket)
   {
   TCPPacket temppacket = (TCPPacket)packet;
   lsvPacketMessage.Items.Add(temppacket.DestinationAddress);
   }
   }
   if (packet is ARPPacket)
   {
   ARPPacket temppacket = (ARPPacket)packet;
   Tamir.IPLib.IPAddress tempip = new Tamir.IPLib.IPAddress(temppacket.ARPSenderProtoAddress, temppacket.getARPSenderHwAddress());
  
   foreach (Tamir.IPLib.IPAddress ip in ipaddresslist)
   {
   int count = 0;
   if (ip.Address == tempip.Address)
   {
   count++;
   break;
   }
   else
   {
   count++;
   if (count == ipaddresslist.Count)
   ipaddresslist.Add(tempip);
   }
   }
   }
   }
   //if (ret == false)
   //{
   // break;
   //}
   }
   }