IDF实验室之倒行逆施.NET逆向第一题

下载下来是一个.Net文件,用ILSpy逆向,发现没加密,找到Form的代码

public string Encode(string data)
{
	string result;
	try
	{
		byte[] bytes = Encoding.ASCII.GetBytes("wctf{wol");
		byte[] bytes2 = Encoding.ASCII.GetBytes("dy_crack}");
		DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
		int keySize = dESCryptoServiceProvider.KeySize;
		MemoryStream memoryStream = new MemoryStream();
		CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(bytes, bytes2), CryptoStreamMode.Write);
		StreamWriter streamWriter = new StreamWriter(cryptoStream);
		streamWriter.Write(data);
		streamWriter.Flush();
		cryptoStream.FlushFinalBlock();
		streamWriter.Flush();
		result = Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
	}
	catch
	{
		result = "http://weibo.com/woldy";
	}
	return result;
}

对比的字串是“fOCPTVF0diO+B0IMXntkPoRJDUj5CCsT”

写个解码的算法

public string Decode(string data)
{
            string result;
            byte[] byte1;
            try
            {
                byte1 = Convert.FromBase64String("fOCPTVF0diO+B0IMXntkPoRJDUj5CCsT");
                byte[] bytes = Encoding.ASCII.GetBytes("wctf{wol");
                byte[] bytes2 = Encoding.ASCII.GetBytes("dy_crack}");
                DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(bytes, bytes2), CryptoStreamMode.Write);
                cryptoStream.Write(byte1, 0, byte1.Length);
                cryptoStream.FlushFinalBlock();
                System.Text.Encoding encoding = System.Text.Encoding.UTF8;
                result = encoding.GetString(memoryStream.ToArray());          
            }
            catch
            {
                result = "http://weibo.com/woldy";
            }
            return result;
}

解码得到wctf{dotnet_crackme1}

提交,通过!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
namespace ServiceRanking { /// <summary> /// Summary description for TF_IDFLib. /// </summary> public class TFIDFMeasure { private string[] _docs; private string[][] _ngramDoc; private int _numDocs=0; private int _numTerms=0; private ArrayList _terms; private int[][] _termFreq; private float[][] _termWeight; private int[] _maxTermFreq; private int[] _docFreq; public class TermVector { public static float ComputeCosineSimilarity(float[] vector1, float[] vector2) { if (vector1.Length != vector2.Length) throw new Exception("DIFER LENGTH"); float denom=(VectorLength(vector1) * VectorLength(vector2)); if (denom == 0F) return 0F; else return (InnerProduct(vector1, vector2) / denom); } public static float InnerProduct(float[] vector1, float[] vector2) { if (vector1.Length != vector2.Length) throw new Exception("DIFFER LENGTH ARE NOT ALLOWED"); float result=0F; for (int i=0; i < vector1.Length; i++) result += vector1[i] * vector2[i]; return result; } public static float VectorLength(float[] vector) { float sum=0.0F; for (int i=0; i < vector.Length; i++) sum=sum + (vector[i] * vector[i]); return (float)Math.Sqrt(sum); } } private IDictionary _wordsIndex=new Hashtable() ; public TFIDFMeasure(string[] documents) { _docs=documents; _numDocs=documents.Length ; MyInit(); } private void GeneratNgramText() { } private ArrayList GenerateTerms(string[] docs) { ArrayList uniques=new ArrayList() ; _ngramDoc=new string[_numDocs][] ; for (int i=0; i < docs.Length ; i++) { Tokeniser tokenizer=new Tokeniser() ; string[] words=tokenizer.Partition(docs[i]); for (int j=0; j < words.Length ; j++) if (!uniques.Contains(words[j]) ) uniques.Add(words[j]) ; } return uniques; } private static object
tf-idf是自然语言处理中一种常用的文本特征表示方法。tf代表词频(term frequency),idf代表逆文档频率(inverse document frequency)。 tf表示在一篇文档中一个词出现的频率。一般来说,一个词在一个文档中出现得越频繁,它对文档的特征表示的重要性越大。但是tf并没有考虑到词在整个语料库中出现的频率。 idf则通过一种统计方式,计算一个词在所有文档中出现的概率。公式为idf = log(总文档数/包含该词的文档数)。由于取对数,所以当一个词在所有文档中都出现时,它的idf值会很小,对于文档特征表示的重要性也会很小。而当一个词在少数文档中出现时,它的idf值会很大,对于特征表示的重要性也会很大。 tf-idf的计算方法为tf * idf,通过将tf和idf相乘可以得到每个词在文档中的tf-idf值。这个值越大则说明这个词对文档的特征表示的重要性越高。 tf-idf可以用于文本分类、信息检索、文本聚类等任务。在文本分类中,通过计算每个词的tf-idf值可以得到文档的特征表示,然后可以使用机器学习算法对文档进行分类。在信息检索中,可以通过计算查询词的tf-idf值来评估文档和查询之间的相关性。在文本聚类中,可以根据词的tf-idf值来度量文档之间的相似度,从而将相似的文档聚类在一起。 总之,tf-idf是一种常用的文本特征表示方法,可以用于自然语言处理中的各种任务。通过考虑词频和词在整个语料库中出现的频率,tf-idf可以帮助我们更好地理解和分析文本数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值