正文
.net上传文件拦截加密,net 上传文件
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
.net软件,用什么软件加密狗加密,能防止代码反编译?
.net软件加密狗可试试德国的威步,威步(WIBU)信息系统的软件加密狗,还能申请免费试用版。
软件加密狗:威步(WIBU)的CodeMeter,AxProtector(for.net)两款软件加密狗性能非常不错
反编译的问题,与传统的代码混淆工具(Obfuscator)不同,AxProtector可以完全阻止对.NET 程序集(由 C#, VB.NET, Delphi.NET, ASP.Net… 等语言编写)的反编译。通俗的讲,AxProtector在破解者和您的 .NET 代码之间构建了强大的防破解保护屏障,生成一个基于 Windows 的而不是基于 MSIL 的兼容格式文件。原始的 .NET 代码完整的被加密后封装在本地代码内,无论何时都不会释放到硬盘,对于破解者是不可见的。
与单纯的.net加密软件不同,AxProtector与CodeMeter硬件加密狗配套餐使用,采用了更为严密的密钥管理,及最先进的AES、RSA、ECC等加密算法存储或传输密钥,保证通讯安全。
AxProtector加密了.net原代码,任何时候原代码都不可能被还原到硬盘当中。采用AxProtector加密后的.net代码只有在程序调用或执行某一段函数的时候,才能通过AxProtectorClass在内存中解密后返回到程序中执行,运行之后迅速立即加密。这种随机加密、按需解密原代码的功能,能很好的防止.Net程序的反编译,同时能够很好地防止API加密点被摘除。有效地保证了源代码的执行效率和安全性。
用.net实现文件夹加密
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO ;
using System.Diagnostics ;
using System.Threading ;
namespace 伪装文件夹
{
/// summary
/// Form1 的摘要说明。
/// /summary
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.FolderBrowserDialog foldeOpen;
private System.Windows.Forms.TextBox AfoldePath;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button AddPassword;
private System.Windows.Forms.ComboBox comboBox1;
private System.ComponentModel.IContainer components;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// 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()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.AddPassword = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.AfoldePath = new System.Windows.Forms.TextBox();
this.foldeOpen = new System.Windows.Forms.FolderBrowserDialog();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.BackColor = System.Drawing.Color.Transparent;
this.groupBox1.Controls.Add(this.comboBox1);
this.groupBox1.Controls.Add(this.AddPassword);
this.groupBox1.Controls.Add(this.button1);
this.groupBox1.Controls.Add(this.AfoldePath);
this.groupBox1.Location = new System.Drawing.Point(6, 6);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(276, 78);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "加密";
//
// comboBox1
//
this.comboBox1.Items.AddRange(new object[] {
"我的电脑",
"我的文档",
"拨号网络",
"控制面板",
"计划任务",
"打印机",
"记事本",
"网络邻居",
"回收站",
"公文包",
"字体 ",
"Web 文件夹"});
this.comboBox1.Location = new System.Drawing.Point(12, 48);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(174, 20);
this.comboBox1.TabIndex = 15;
this.comboBox1.Text = "伪装类型";
//
// AddPassword
//
this.AddPassword.BackColor = System.Drawing.Color.Transparent;
this.AddPassword.ForeColor = System.Drawing.Color.Red;
this.AddPassword.Location = new System.Drawing.Point(192, 48);
this.AddPassword.Name = "AddPassword";
this.AddPassword.TabIndex = 14;
this.AddPassword.Text = "伪装";
this.AddPassword.Click += new System.EventHandler(this.AddPassword_Click);
//
// button1
//
this.button1.Location = new System.Drawing.Point(192, 20);
this.button1.Name = "button1";
this.button1.TabIndex = 8;
this.button1.Text = "文件夹路径";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// AfoldePath
//
this.AfoldePath.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(224)), ((System.Byte)(192)));
this.AfoldePath.Location = new System.Drawing.Point(12, 20);
this.AfoldePath.Name = "AfoldePath";
this.AfoldePath.ReadOnly = true;
this.AfoldePath.Size = new System.Drawing.Size(174, 21);
this.AfoldePath.TabIndex = 7;
this.AfoldePath.Text = "";
//
// groupBox2
//
this.groupBox2.BackColor = System.Drawing.Color.Transparent;
this.groupBox2.Controls.Add(this.button2);
this.groupBox2.Controls.Add(this.button3);
this.groupBox2.Controls.Add(this.textBox1);
this.groupBox2.Location = new System.Drawing.Point(6, 90);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(276, 76);
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "解密";
//
// button2
//
this.button2.ForeColor = System.Drawing.Color.Red;
this.button2.Location = new System.Drawing.Point(192, 48);
this.button2.Name = "button2";
this.button2.TabIndex = 14;
this.button2.Text = "解密";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.ForeColor = System.Drawing.Color.Red;
this.button3.Location = new System.Drawing.Point(192, 20);
this.button3.Name = "button3";
this.button3.TabIndex = 8;
this.button3.Text = "文件夹路径";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// textBox1
//
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(128)), ((System.Byte)(255)), ((System.Byte)(128)));
this.textBox1.Location = new System.Drawing.Point(12, 24);
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(174, 21);
this.textBox1.TabIndex = 7;
this.textBox1.Text = "";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(288, 174);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "伪装文件夹";
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// summary
/// 应用程序的主入口点。
/// /summary
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
if(foldeOpen.ShowDialog ()==DialogResult.OK )
{
try
{
if(foldeOpen.SelectedPath .Substring (3,10)=="Documents ")
{
MessageBox.Show ("我不建议C盘下的文件夹伪装,这样可能会导致系统出问题");
}
else
{
AfoldePath.Text =foldeOpen.SelectedPath;
}
}
catch
{
if(foldeOpen.SelectedPath.Length =4)
{
AfoldePath.Text =foldeOpen.SelectedPath;
}
else
{
MessageBox.Show ("无法对盘符进行伪装.");
}
}
}
}
private void AddPassword_Click(object sender, System.EventArgs e)
{
try
{
ProcessStartInfo p3=new ProcessStartInfo ("attrib.exe",@"-s -r -a -h "+AfoldePath.Text);
p3.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p3);
ProcessStartInfo p1=new ProcessStartInfo ("attrib.exe",@"-s -r -a -h "+AfoldePath.Text+@"\desktop.ini");
p1.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p1);
StreamWriter sw2=new StreamWriter (AfoldePath.Text+@"\desktop.ini" );
sw2.WriteLine (@"[.ShellClassInfo]" );
sw2.WriteLine ("CLSID="+GetPasType());
sw2.Close ();
ProcessStartInfo p =new ProcessStartInfo ("attrib.exe",@"+s +a +h +r "+AfoldePath.Text+@"\desktop.ini");
p.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p);
ProcessStartInfo p2=new ProcessStartInfo ("attrib.exe",@"+s +r "+AfoldePath.Text);
p2.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p2);
}
catch(Exception ee)
{
MessageBox.Show (ee.Message .ToString ());
}
}
private string GetPasType()
{
int index=comboBox1.SelectedIndex;
switch (index)
{
case 0: return @"{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
case 1: return @"{450D8FBA-AD25-11D0-98A8-0800361B1103}";
case 2: return @"{992CFFA0-F557-101A-88EC-00DD010CCC48}";
case 3: return @"{21EC2020-3AEA-1069-A2DD-08002B30309D}";
case 4: return @"{D6277990-4C6A-11CF-8D87-00AA0060F5BF}";
case 5: return @"{2227A280-3AEA-1069-A2DE-08002B30309D}";
case 6: return @"{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}";
case 7: return @"{208D2C60-3AEA-1069-A2D7-08002B30309D}";
case 8: return @"{645FF040-5081-101B-9F08-00AA002F954E}";
case 9: return @"{85BBD920-42A0-1069-A2E4-08002B30309D}";
case 10: return @"{BD84B380-8CA2-1069-AB1D-08000948F534}";
case 11: return @"{BDEADF00-C265-11d0-BCED-00A0C90AB50F}";
}
return @"{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
}
private void button3_Click(object sender, System.EventArgs e)
{
if(foldeOpen.ShowDialog ()==DialogResult.OK )
{
textBox1.Text =foldeOpen.SelectedPath;
}
}
private void button2_Click(object sender, System.EventArgs e)
{
try
{
ProcessStartInfo p2=new ProcessStartInfo ("attrib.exe",@"-s -r -a -h "+textBox1.Text);
p2.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p2);
ProcessStartInfo p1=new ProcessStartInfo ("attrib.exe",@"-s -h -r "+textBox1.Text+@"\desktop.ini");
p1.WindowStyle= System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start (p1);
System.Threading.Thread.Sleep(1000);
File.Delete (textBox1.Text+@"\desktop.ini");
MessageBox.Show ("解密成功.");
}
catch(Exception ee)
{
MessageBox.Show (ee.Message.ToString ());
}
}
}
}
.net 程序集 加密问题
基本上目前还没好的解决办法。
1)MaxtoCode(收费)加密后,Reflector不能反编译。
不知道现在是否支持加密dll文件。
2)XenoCode混淆器
类库混淆时,只选择私有方法进行混淆,应该可以编译使用的。
类库函数写法:
public int fn()//混淆后这个函数名不变,便于调用程序识别
{
return fnEx();
}
private int fnEx() //混淆后这个函数名及大部分的内容会编码
{
return 100;
}
若是涉及保密的算法,改用其它语言写DLL。
ASP.NET fileupload 上传文件时怎么防止病毒
对于不加壳的,控制上传文件的扩展名就可以了。
如果对于加壳的,就需要另外的安全机制了。
比如说,上传后扫描什么的。大的网站一般都采用这种方式。
还有就是,强烈的控制文件夹的权限,比如你把上传文件放入一个文件夹中,就要控制它了。
如果对于上传量很小的东西,比如WORK文档,图片什么的,建议序列话成2进制,然后存在数据库中。这是最保险的了。
当然,最终还是要看自己的需求了。
如何使用.net C#编程给pdf文件加密
pdf加密为什么要用C# NET之类的编程语言呢,为什么要用c#呢?
点击PDF Protection窗口左上角的“Single(单个)”按钮。打开单一PDF文档加密界面,选中要加密的PDF文件,点击“Encrypt(加密)”按钮打开加密设置页面。
在Encryption 按钮下的“Master Password(高级用户密码)”和“User Password(一般用户密码)”中可以分别
设置密码,以及加密的等级,包括不加密,40位加密,128位加密三种等级,大家可以根据文档的重要程度进行设置。下方的
“Set Permission”中可以设置当一般用户使用Adobe Reader打开加密PDF文档时所拥有的操作权限,包括是否允许打印、复制、修
改、增加注释等。
.net 如何防止上传图片木马
可以防止,第一种就是用文件头的方式验证,代码如下:
private bool IsAllowedExtension(HttpPostedFile hifile)
{
bool result = false;
FileStream strFile = new FileStream(hifile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
BinaryReader bReader = new BinaryReader(strFile);
string fileclass = "";
byte buffer;
try
{
buffer = bReader.ReadByte();
fileclass = buffer.ToString();
buffer = bReader.ReadByte();
fileclass += buffer.ToString();
}
catch
{
return false;
}
bReader.Close();
strFile.Close();
/*文件扩展名说明
*4946/104116 txt
*7173 gif
*255216 jpg
*13780 png
*6677 bmp
*239187 txt,aspx,asp,sql
*208207 xls.doc.ppt
*6063 xml
*6033 htm,html
*4742 js
*8075 xlsx,zip,pptx,mmap,zip
*8297 rar
*01 accdb,mdb
*/
//纯图片
String[] fileType = {
"7173", //gif
"255216", //jpg
"13780" //png
};
for (int i = 0; i fileType.Length; i++)
{
if (fileclass == fileType[i])
{
result = true;
break;
}
}
Response.Write(fileclass);
return result;
}
protected void btnOk_Click(object sender, EventArgs e)
{
if (IsAllowedExtension(uFile.PostedFile))
{
Response.Write("scriptalert('OK')/script");
}
}
第二种用文件流的方式验证
/// summary
/// 验证流
/// /summary
/// param name="UpFile"上传控件(HttpPostedFile 或 HtmlInputFile)/param
/// param name="_extensions"扩展名(数组)/param
/// param name="SavePath"保存路径(绝对路径)/param
/// param name="size"文件大小单位(KB)/param
/// param name="err"错误信息/param
/// param name="SourcePage"源页面/param
/// returns返回新文件名/returns
public static string UpLoadFileImg(HtmlInputFile UpFile, string[] _extensions, string SavePath, int size,
out string err, System.Web.UI.Page SourcePage)
{
//锁定页面
SourcePage.Application.Lock();
string error = String.Empty;//错误信息
string Img = UpFile.PostedFile.FileName.Trim();//获取文件名
string Exten = Path.GetExtension(UpFile.PostedFile.FileName).ToLower();//获取文件的扩展名
bool IsExtension = false;//是否存在该扩展名
string FileType = UpFile.PostedFile.ContentType.ToLower();//获取文件的类型
if (Img != "")
{
//判断图片扩展名和类型验证
for (int i = 0; i _extensions.Length; i++)
{
if (Exten == _extensions[i].ToString())
{
IsExtension = true;
break;
}
}
if (!IsExtension (FileType != "image/gif" || FileType != "image/x-png" || FileType != "image/pjpeg"
|| FileType != "image/bmp"))
{
error = "对不起,您不能上传该类型的文件!";
err = error;
return Img;
}
if (UpFile.PostedFile.ContentLength (size * 1024))
{
error = "对不起,文件大小不能大于" + size + "KB!";
err = error;
return Img;
}
try
{
Img = DateTime.Now.Ticks + Exten;//重新给文件命名
//上传文件
UpFile.PostedFile.SaveAs(SavePath + Img);
//最后一步高级验证,图片上传后的操作,判断是否存在危险
StreamReader sr = new StreamReader(SavePath + Img, Encoding.Default);
string strContent = sr.ReadToEnd();
sr.Close();
string str = "request|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas";
str+="|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language=";
foreach (string s in str.Split('|'))
{
if (strContent.IndexOf(s) != -1)
{
File.Delete(SavePath + Img);
error = "对不起,该文件内容存在风险,禁止上传!";
err = error;
return Img;
}
}
}
catch
{
error = "系统错误,上传失败!";
}
}
else
error = "对不起,请选择要上传的文件!";
//取消锁定页面
SourcePage.Application.UnLock();
err = error;
return Img;
}
关于.net上传文件拦截加密和net 上传文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。