foreach (ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
#region hd.Model
try
{
hd.Model = wmi_HD["Model"].ToString();
}
catch (Exception)
{
hd.Model = "Unknown";
}
#endregion
#region hd.Type
try
{
hd.Type = wmi_HD["InterfaceType"].ToString();
}
catch (Exception)
{
hd.Type = "Unknown";
}
#endregion
#region hd.BytesPerSector
try
{
hd.BytesPerSector = wmi_HD["BytesPerSector"].ToString();
}
catch (Exception)
{
hd.BytesPerSector = "Unknown";
}
#endregion
#region hd.MediaType
try
{
hd.MediaType = wmi_HD["MediaType"].ToString();
}
catch (Exception)
{
hd.MediaType = "Unknown";
}
#endregion
#region hd.Partitions
try
{
hd.Partitions = wmi_HD["Partitions"].ToString();
}
catch (Exception)
{
hd.Partitions = "Unknown";
}
#endregion
#region hd.SectorsPerTrack
try
{
hd.SectorsPerTrack = wmi_HD["SectorsPerTrack"].ToString();
}
catch (Exception)
{
hd.SectorsPerTrack = "Unknown";
}
#endregion
#region hd.Signature
try
{
hd.Signature = wmi_HD["Signature"].ToString();
}
catch (Exception)
{
hd.Signature = "Unknown";
}
#endregion
#region hd.size
try
{
hd.Size = wmi_HD["Size"].ToString();
}
catch (Exception)
{
hd.Size = "0";
}
#endregion
#region hd.Status
try
{
hd.Status = wmi_HD["Status"].ToString();
}
catch (Exception)
{
hd.Status = "Unknown";
}
#endregion
#region hd.TotalCylonders
try
{
hd.TotalCylinders = wmi_HD["TotalCylinders"].ToString();
}
catch (Exception)
{
hd.TotalCylinders = "Unknown";
}
#endregion
#region hd.TotalHeads
try
{
hd.TotalHeads = wmi_HD["TotalHeads"].ToString();
}
catch (Exception)
{
hd.TotalHeads = "Unknown";
}
#endregion
#region hd.TotalSectors
try
{
hd.TotalSectors = wmi_HD["TotalSectors"].ToString();
}
catch (Exception)
{
hd.TotalSectors = "Unknown"; }
#endregion
#region hd.TotalTracks
try
{
hd.TotalTracks = wmi_HD["TotalTracks"].ToString(); }
catch (Exception)
{
hd.TotalTracks = "Unknown"; }
#endregion
#region hd.TracksPerCylinder
try
{
hd.TracksPerCylinder = wmi_HD["TracksPerCylinder"].ToString(); }
catch (Exception)
{
hd.TracksPerCylinder = "Unknown"; }
#endregion
#region hd.SeralNo
if (OSXP != true)
{
try
{
hd.SerialNo = wmi_HD["SerialNumber"].ToString(); }
catch (Exception)
{
hd.SerialNo = "Unknown";
} }
else
{ }
#endregion
#region hd.FirmwareRevision
try
{
hd.FirmwareRevision = wmi_HD["FirmwareRevision"].ToString(); }
catch (Exception)
{
hd.FirmwareRevision = " "; }
#endregion
hdCollection.Add(hd);
hd = null;
Num_Hdd = Num_Hdd + 1;
TotalSize = TotalSize + double.Parse(wmi_HD["Size"].ToString());
}
#region //Getting HDD's serial under XP
if (OSXP == true)
{
searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
int i = 0;
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hard drive from collection
// using index
HardDrive hd = (HardDrive)hdCollection[i];
// get the hardware serial no.
if (wmi_HD["SerialNumber"] == null)
hd.SerialNo = "None";
else
hd.SerialNo = wmi_HD["SerialNumber"].ToString();
++i;
}
}
#endregion
searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get how much Freespace the HDD have left...
if (wmi_HD["FreeSpace"] == null)
{
//do nothing
}
else
{
if (wmi_HD["DriveType"].ToString() == "3")
{
TotalSpaceLeft += double.Parse(wmi_HD["FreeSpace"].ToString());
}
}
}
// HDD_info_Done = true;
searcher = null;
#endregion
}
private void AddHDDItemToListview()
{
//Makes the Search group:::......
ListViewGroup HDDGroup = new ListViewGroup();
HDDGroup.Header = "HardDrive(s) :";
HDDGroup.HeaderAlignment = HorizontalAlignment.Left;
HDDGroup.Name = "HardDrive(s)";
//Adds the search group...
listView1.Groups.Add(HDDGroup);
int i = 0;
foreach (HardDrive x in hdCollection)
{
AddItemToListview(HDDGroup, i, x.Model.ToString(), 0, "1");
i++; }
HDDGroup = null; }
private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)
{
ListViewItem NewItem = new ListViewItem();
ListViewItem.ListViewSubItem NewSubItem = new ListViewItem.ListViewSubItem();
NewSubItem.Text = IndexNumber.ToString();
NewSubItem.Name = "Subitem1";
NewItem.SubItems.Add(NewSubItem);
NewItem.SubItems.Add(NewSubItem);
NewItem.Name = ItemName;
NewItem.Text = ItemName;
NewItem.Group = GroupName;
NewItem.ImageIndex = ImageIndex;
NewItem.Tag = ItemTAG;
listView1.Items.Add(NewItem);
NewItem = null;
NewSubItem = null;
// Group = null; }
private void WriteHDDText()
{
HardDrive Hd = null;
bool fail = false;
try
{
Hd = (HardDrive)hdCollection[int.Parse(listView1.SelectedItems[0].SubItems[1].Text)]; }
catch (Exception)
{
Hd = null;
fail = true; }
if (fail != true)
{
Hd = (HardDrive)hdCollection[int.Parse(listView1.SelectedItems[0].SubItems[1].Text)];
double size_temp = double.Parse(Hd.Size);
if (analiz == false)
{
richTextBox1.Clear();
richTextBox1.Text = ("\n" +
"Model:\n" +
"--------------------------------------------------------\n" +
"Model : " + Hd.Model.ToString() + "\n" +
"Type : " + Hd.Type.ToString() + "\n" +
"Serial No. : " + Hd.SerialNo.ToString() + "\n" +
"Firmware Revision : " + Hd.FirmwareRevision.ToString() + "\n" +
"\n" +
"Characteristics:\n" +
"--------------------------------------------------------\n" +
"Media Type : " + Hd.MediaType.ToString() + "\n" +
"Partitions : " + Hd.Partitions.ToString() + "\n" +
"Signature : " + Hd.Signature.ToString() + "\n" +
"Size : " + Hd.Size.ToString() + " Byte (" + Math.Round((((size_temp / 1024) / 1024) / 1024), 2) + " GB)" + "\n" +
"\n" +
"Status : " + Hd.Status.ToString() + "\n" +
"\n" +
"Tracks:\n" +
"--------------------------------------------------------\n" +
"Total Cylinders : " + Hd.TotalCylinders.ToString() + "\n" +
"Total Heads : " + Hd.TotalHeads.ToString() + "\n" +
"Total Sectors : " + Hd.TotalSectors.ToString() + "\n" +
"Total Tracks : " + Hd.TotalTracks.ToString() + "\n" +
"Bytes Pr. Sector : " + Hd.BytesPerSector.ToString() + "\n" +
"Sector Pr. Tracks : " + Hd.SectorsPerTrack.ToString() + "\n" +
"Tracks Pr. Cylinder : " + Hd.TracksPerCylinder.ToString() + "\n"
); }
else
{
richTextBox2.Clear();
richTextBox2.Text = ("\n" +
"Model:\n" +
"--------------------------------------------------------\n" +
"Model : " + Hd.Model.ToString() + "\n" +
"Type : " + Hd.Type.ToString() + "\n" +
"Serial No. : " + Hd.SerialNo.ToString() + "\n" +
"Firmware Revision : " + Hd.FirmwareRevision.ToString() + "\n" +
"\n" +
"Characteristics:\n" +
"--------------------------------------------------------\n" +
"Media Type : " + Hd.MediaType.ToString() + "\n" +
"Partitions : " + Hd.Partitions.ToString() + "\n" +
"Signature : " + Hd.Signature.ToString() + "\n" +
"Size : " + Hd.Size.ToString() + " Byte (" + Math.Round((((size_temp / 1024) / 1024) / 1024), 2) + " GB)" + "\n" +
"\n" +
"Status : " + Hd.Status.ToString() + "\n" +
"\n" +
"Tracks:\n" +
"--------------------------------------------------------\n" +
"Total Cylinders : " + Hd.TotalCylinders.ToString() + "\n" +
"Total Heads : " + Hd.TotalHeads.ToString() + "\n" +
"Total Sectors : " + Hd.TotalSectors.ToString() + "\n" +
"Total Tracks : " + Hd.TotalTracks.ToString() + "\n" +
"Bytes Pr. Sector : " + Hd.BytesPerSector.ToString() + "\n" +
"Sector Pr. Tracks : " + Hd.SectorsPerTrack.ToString() + "\n" +
"Tracks Pr. Cylinder : " + Hd.TracksPerCylinder.ToString() + "\n"
); }
size_temp = 0;
}
Hd = null;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
int selected_index;
try
{
//MessageBox.Show(listView1.SelectedItems[0].Tag.ToString());
selected_index = listView1.SelectedItems[0].Index;
switch (listView1.SelectedItems[0].Tag.ToString())
{
case "1":
WriteHDDText();
break;
} }
catch (Exception)
{
//Do nothing
} }
private void button1_Click(object sender, EventArgs e)
{
if (analiz == false)
analiz = true;
else
analiz = false;
GetHardDiskInfo();
WriteHDDText();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
}
}
//Form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
namespace kurs_pogulyat
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
//CRC 32
private void button1_Click(object sender, EventArgs e)
{
// Читаемфайл test.txt
System.IO.FileStream stream1 = System.IO.File.OpenRead(textBox1.Text.ToString());
textBox3.Text=(string.Format("{0:X}", CalculateCRC(stream1))).ToString();
}
/// <summary>
/// Вычисление CRC32
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public static uint CalculateCRC(System.IO.Stream stream)
{
const int buffer_size = 1024;
const uint POLYNOMIAL = 0xEDB88320;
uint result = 0xFFFFFFFF;
uint Crc32;
byte[] buffer = new byte[buffer_size];
uint[] table_CRC32 = new uint[256];
unchecked
{
// Инициалиазациятаблицы
for (int i = 0; i < 256; i++)
{
Crc32 = (uint)i;
for (int j = 8; j > 0; j--)
{
if ((Crc32 & 1)==1)
Crc32 = (Crc32 >> 1) ^ POLYNOMIAL;
else
Crc32 >>= 1;
}
table_CRC32[i] = Crc32;
}
/
// Чтениеизбуфера
int count = stream.Read(buffer, 0, buffer_size);
// Вычисление CRC
while (count > 0)
{
for (int i = 0; i < count; i++)
{
result = ((result) >> 8)
^ table_CRC32[(buffer[i])
^ ((result) & 0x000000FF)];
}
count = stream.Read(buffer, 0, buffer_size);
}
}
return ~result;
}
//MD5
private void button2_Click(object sender, EventArgs e)
{
textBox4.Text = MD5File(textBox2.Text.ToString()).ToString();
}
//статические переменные
private static UInt32 A;
private static UInt32 B;
private static UInt32 C;
private static UInt32 D;
//номербитасдвиг
private const int S11 = 7;
private const int S12 = 12;
private const int S13 = 17;
private const int S14 = 22;
private const int S21 = 5;
private const int S22 = 9;
private const int S23 = 14;
private const int S24 = 20;
private const int S31 = 4;
private const int S32 = 11;
private const int S33 = 16;
private const int S34 = 23;
private const int S41 = 6;
private const int S42 = 10;
private const int S43 = 15;
private const int S44 = 21;
/* сдвиги
r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}
r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}
r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}*/
/* F, G, H и I основные функции алгоритма вычисления MD5
F(X,Y,Z) =(X&Y)|((~X)&Z)
G(X,Y,Z) =(X&Z)|(Y&(~Z))
H(X,Y,Z) =X^Y^Z
I(X,Y,Z)=Y^(X|(~Z))
*/
private static UInt32 F(UInt32 x, UInt32 y, UInt32 z)
{
return (x & y) | ((~x) & z);
}
private static UInt32 G(UInt32 x, UInt32 y, UInt32 z)
{
return (x & z) | (y & (~z));
}
private static UInt32 H(UInt32 x, UInt32 y, UInt32 z)
{
return x ^ y ^ z;
}
private static UInt32 I(UInt32 x, UInt32 y, UInt32 z)
{
return y ^ (x | (~z));
}
// FF, GG, HH, и II преобразоания для раундов 1, 2, 3, и 4.
private static void FF(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{
a = a + F(b, c, d) + mj + ti;
a = a << s | a >> (32 - s);
a += b;
}
private static void GG(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{
a = a + G(b, c, d) + mj + ti;
a = a << s | a >> (32 - s);
a += b;
}
private static void HH(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{
a = a + H(b, c, d) + mj + ti;
a = a << s | a >> (32 - s);
a += b;
}
private static void II(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)
{
a = a + I(b, c, d) + mj + ti;
a = a << s | a >> (32 - s);
a += b;
}
private static void MD5_Init()
{
A = 0x67452301; //впамяти0x01234567
B = 0xefcdab89; //впамяти, 0x89abcdef
C = 0x98badcfe; //в памяти, 0xfedcba98
D = 0x10325476; //в памяти, 0x76543210
}
private static UInt32[] MD5_Append(byte[] input)
{
int zeros = 0;
int ones = 1;
int size = 0;
int n = input.Length;
int m = n % 64; //остаток от деления
if (m < 56)
{
zeros = 55 - m;
size = n - m + 64;
}
else
{
zeros = 63 - m + 56;
size = n + 64 - m + 64;
}
ArrayList bs = new ArrayList(input);
if (ones == 1)
{
bs.Add((byte)0x80); // 0x80 = $10000000