⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 Rocket 4 加密锁 程序.多语言实例得.
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Ry4SCom;

namespace Sample
{
	enum Ry4Cmd:ushort
	{
		RY_FIND=1,			//Find Ry4S
		RY_FIND_NEXT,		//Find next
		RY_OPEN,			//Open Ry4S
		RY_CLOSE,			//Close Ry4S
		RY_READ,			//Read Ry4S
		RY_WRITE,			//Write Ry4S
		RY_RANDOM,			//Generate random
		RY_SEED,			//Generate seed
		RY_READ_USERID=10,	//Read UID
		RY_CHECK_MODULE=12,	//Check Module
		RY_CALCULATE1=14,	//Calculate1
		RY_CALCULATE2,		//Calculate1
		RY_CALCULATE3,		//Calculate1
		RY_GENPASSWORD=50,		//Generate Password
	};

	enum Ry4ErrCode:uint
	{
		ERR_SUCCESS=0,							//No error
		ERR_NO_PARALLEL_PORT=0x80300001,		//(0x80300001)No parallel port
		ERR_NO_DRIVER,							//(0x80300002)No drive
		ERR_NO_ROCKEY,							//(0x80300003)No Ry4S
		ERR_INVALID_PASSWORD,					//(0x80300004)Invalid password
		ERR_INVALID_PASSWORD_OR_ID,				//(0x80300005)Invalid password or ID
		ERR_SETID,								//(0x80300006)Set id error
		ERR_INVALID_ADDR_OR_SIZE,				//(0x80300007)Invalid address or size
		ERR_UNKNOWN_COMMAND,					//(0x80300008)Unkown command
		ERR_NOTBELEVEL3,						//(0x80300009)Inner error
		ERR_READ,								//(0x8030000A)Read error
		ERR_WRITE,								//(0x8030000B)Write error
		ERR_RANDOM,								//(0x8030000C)Generate random error
		ERR_SEED,								//(0x8030000D)Generate seed error
		ERR_CALCULATE,							//(0x8030000E)Calculate error
		ERR_NO_OPEN,							//(0x8030000F)The Ry4S is not opened
		ERR_OPEN_OVERFLOW,						//(0x80300010)Open Ry4S too more(>16)
		ERR_NOMORE,								//(0x80300011)No more Ry4S
		ERR_NEED_FIND,							//(0x80300012)Need Find before FindNext
		ERR_DECREASE,							//(0x80300013)Dcrease error
		ERR_AR_BADCOMMAND,						//(0x80300014)Band command
		ERR_AR_UNKNOWN_OPCODE,					//(0x80300015)Unkown op code
		ERR_AR_WRONGBEGIN,						//(0x80300016)There could not be constant in first instruction in arithmetic 
		ERR_AR_WRONG_END,						//(0x80300017)There could not be constant in last instruction in arithmetic 
		ERR_AR_VALUEOVERFLOW,					//(0x80300018)The constant in arithmetic overflow
		ERR_UNKNOWN=0x8030ffff,					//(0x8030FFFF)Unkown error

		ERR_RECEIVE_NULL=0x80300100,			//(0x80300100)Receive null
		ERR_PRNPORT_BUSY=0x80300101				//(0x80300101)Parallel port busy

	};


	/// <summary>
	/// Form1 summary
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Button button1;
		private System.Windows.Forms.Button button2;
		private System.Windows.Forms.ListBox listBox;

		private ushort pass1;
		private ushort pass2;
		private ushort pass3;
		private ushort pass4;
		/// <summary>
		/// 
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// 
			//
			InitializeComponent();

			//
			// TODO: 
			//
		}

		/// <summary>
		/// 
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows 窗体设计器生成的代码
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.listBox = new System.Windows.Forms.ListBox();
			this.button1 = new System.Windows.Forms.Button();
			this.button2 = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// listBox
			// 
			this.listBox.ItemHeight = 12;
			this.listBox.Location = new System.Drawing.Point(8, 8);
			this.listBox.Name = "listBox";
			this.listBox.Size = new System.Drawing.Size(384, 220);
			this.listBox.TabIndex = 0;
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(56, 240);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(96, 32);
			this.button1.TabIndex = 1;
			this.button1.Text = "Test";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// button2
			// 
			this.button2.Location = new System.Drawing.Point(232, 240);
			this.button2.Name = "button2";
			this.button2.Size = new System.Drawing.Size(96, 32);
			this.button2.TabIndex = 2;
			this.button2.Text = "Quit";
			this.button2.Click += new System.EventHandler(this.button2_Click);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(400, 278);
			this.Controls.Add(this.button2);
			this.Controls.Add(this.button1);
			this.Controls.Add(this.listBox);
			this.Name = "Form1";
			this.Text = "Form1";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			byte[] buffer = new byte[1000];
			object obbuffer=new object();
			ushort handle = 0;
			ushort function = 0;
			ushort p1 = 0;
			ushort p2 = 0;
			ushort p3 = 0;
			ushort p4 = 0;
			uint lp1 = 0;
			uint lp2 = 0;

			int		iMaxRockey=0;
			uint[]	uiarrRy4ID=new uint[32];
			uint	iCurrID;
			
			pass1=0xc44c;
			pass2=0xc8f8;
			pass3=0x0799;
			pass4=0xc43b;
//			pass1=0xc19a;
//			pass2=0x5b5a;
//			pass3=0xe328;
//			pass4=0xb5da;


			p1=pass1; p2=pass2; p3=pass3; p4=pass4;
			CRy4S Ry4S = new CRy4S();
			obbuffer=(object)buffer;
			ulong ret = Ry4S.Rockey((ushort)Ry4Cmd.RY_FIND,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);//Find Ry4S

			string strRet;
			listBox.Items.Clear();
			if (0!=ret)
			{
				strRet=string.Format("No Rockey Found! Error code:{0}",ret);
				listBox.Items.Add(strRet);
				return;
			}
			uiarrRy4ID[iMaxRockey]=lp1;
			iMaxRockey++;

			ulong flag = 0;
			while(flag == 0)
			{//Find next Ry4S
				flag = Ry4S.Rockey((ushort)Ry4Cmd.RY_FIND_NEXT,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);

				if(flag == 0)
				{
					uiarrRy4ID[iMaxRockey]=lp1;
					iMaxRockey++;
				}
				
			}

			strRet = "Found " + iMaxRockey + " Ry4S";
			listBox.Items.Add(strRet);

			for(int i=0; i<iMaxRockey; i++)
			{
				
				strRet = string.Format("({0}): {1:X8}",i + 1,uiarrRy4ID[i]);
				listBox.Items.Add(strRet);
	
			}

			

			
			iCurrID=uiarrRy4ID[0];
			for(int n = 0;n<iMaxRockey;n++)
			{
				lp1=uiarrRy4ID[n];

				//Open Ry4S
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_OPEN,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);

				if(0!=ret)
				{
					strRet=string.Format("Open Rockey failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}


				//write Ry4S
				for(int i=0; i<20; i++) buffer[i]=(byte)i;
				obbuffer=(object)buffer;

				listBox.Items.Add( (string)("Writting 20 bytes to user data zone...") );

				p1=0; p2=20; 
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_WRITE,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Write Rockey failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}

				//Read Ry4S
				strRet = string.Format("Reading 20 bytes from user data zone...");
				listBox.Items.Add(strRet);

				p1=0;p2=20;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_READ,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Read Rockey failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}
				listBox.Items.Add(strRet);

				//Generate random
				ushort[] usRandom=new ushort[4];
				strRet = string.Format("Generating 8 bytes random...");

				for(int i=0; i<4; i++)
				{
					ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_RANDOM,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
					if(0!=ret)
					{
						strRet=string.Format("Build Random failed! Error code:{0}",ret);
						listBox.Items.Add(strRet);
						return;
					}
					usRandom[i]=p1;
				}

				foreach(ushort i in usRandom)
				{
					strRet += string.Format("{0:X4} ",i);
				}

				listBox.Items.Add(strRet);
				
				
				//Generate seed code. lp2 is seed.

				strRet = string.Format("Generating seed code, seed=0x12345678...");
				listBox.Items.Add(strRet);
				lp2=0x12345678;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_SEED,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Generate seed failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}
				
				strRet = string.Format("seed code is {0:X4} {1:X2} {2:X4} {3:X4}",p1,p2,p3,p4);
				listBox.Items.Add(strRet);

				// Read UID.
				strRet = string.Format("Reading user ID    ");
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_READ_USERID,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Read UID failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}
				strRet += string.Format("User ID is {0:X8}",lp1);
				listBox.Items.Add(strRet);

				//Check module. p1=module index
				strRet = string.Format("Checking module 8...");
				listBox.Items.Add(strRet);
				p1=8;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_CHECK_MODULE,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Check module failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}

				strRet = string.Format("bValidate={0}, bDecreasable={1}",p2,p3);
				listBox.Items.Add(strRet);


				//Calculate 1
				strRet = "Calculate 1,A=1,B=2,C=3,D=4...";
				listBox.Items.Add(strRet);
				lp1=0; lp2=8; p1=1; p2=2; p3=3; p4=4;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_CALCULATE1,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Calcullate1 failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}

				strRet = string.Format("result: A={0:X4},B={1:X4},C={2:X4},D={3:X4}",p1,p2,p3,p4);
				listBox.Items.Add(strRet);
				
				strRet = "Calculate 2,Seed=0x12345678,A=1,B=2,C=3,D=4...";
				listBox.Items.Add(strRet);

				//Calculate 2
				lp1=0; lp2=0x12345678; p1=1; p2=2; p3=3; p4=4;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_CALCULATE2,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Calcullate2 failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}

				strRet = string.Format("result: A={0:X4},B={1:X4},C={2:X4},D={3:X4}",p1,p2,p3,p4);
				listBox.Items.Add(strRet);
				
				//Calculate 3
				strRet = "Calculate 3,A=1,B=2,C=3,D=4...";
				listBox.Items.Add(strRet);

				lp1=0; lp2=8; p1=1; p2=2; p3=3; p4=4;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_CALCULATE3,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{
					strRet=string.Format("Calcullate3 failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}

				strRet = string.Format("result: A={0:X4},B={1:X4},C={2:X4},D={3:X4}",p1,p2,p3,p4);
				listBox.Items.Add(strRet);
				

				//Gen password
				for(int i=0;i<255;i++)buffer[i]=(byte)0;
				for (int i=0; i<8; i++) buffer[i]=(byte)i;	//input 8 byte seed
				obbuffer=(object)buffer;
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_GENPASSWORD,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);
				if(0!=ret)
				{	
					strRet=string.Format("Gen password failed! Error code:{0}",ret);
					listBox.Items.Add(strRet);
					return;
				}
				byte[] b=(byte[])obbuffer;
				strRet=string.Format("The new password is 0x{0:X2}{1:X2} 0x{2:X2}{3:X2} 0x{4:X2}{5:X2} 0x{6:X2}{7:X2}",b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);
				listBox.Items.Add(strRet);
				
			
				//Close Ry4S
				strRet = string.Format("Closing handle {0:X4}...",handle);
				listBox.Items.Add(strRet);
				ret=Ry4S.Rockey((ushort)Ry4Cmd.RY_CLOSE,ref handle,ref lp1,ref lp2,ref p1,ref p2,ref p3,ref p4,ref obbuffer);

				strRet = string.Format("[OK]");	
				listBox.Items.Add(strRet);
			}
		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			Dispose(true);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -