1. 程式人生 > >和諧文字生成小工具

和諧文字生成小工具

背景:昨天幫一位鄰居在小區微信群裡了發了一段文字,結果到了晚上街道派出所的民警叔叔就找到我家裡,對從小德智體美勞全面發展的我進行了悉心的法制教育。

 這件事想了想 ,會給我帶來的問題,身為程式設計師,如何避免這樣的問題。

怎麼發現的:估計是有網監程式在各個群裡做監控,對於和諧社會的言論關鍵字進行抓取分析之類的,如果有,再進行人工查閱,下派任務,對該發表人進行定點監聽。

帶來的問題:由此大約會給我帶來兩個問題,一個是當前的問題,我的微信估計近期會受到網監的監控,怎麼去除我微信的唯一識別是一個點,於是我抓緊換了微信頭像和暱稱(據以前開發網監程式的朋友說,微信抓取是按暱稱和頭像來的),也不知道這樣靠不靠譜。二是以後的問題,以後發表這種敏感資訊的時候,怎樣才能不會網監做出關鍵字識別。識別大約是根據關鍵字,如果有圖片的話,再圖片轉文字,降噪分析等。

破解的方法:也就是說我們儘量不發表文字,發表圖片的話,會帶來識別的難度。如果圖片裡的文字,有特殊字元混淆在裡面的話,也會增加識別難度。

正文:進入正題,開工~

1、以C# winform為例寫該小程式

2、效果:

輸出的圖片:

可以直接在微信群裡Ctrl+V:

 

3、程式碼示例:

using System;
using System.Windows.Forms;
using System.Configuration;
using System.Threading;
using System.Drawing;

namespace
WordsToImg { public partial class frmWordToImg : Form { private char[] _specialChars; public frmWordToImg() { InitializeComponent(); } private void frmWordToImg_Load(object sender, EventArgs e) { var specialChars = ConfigurationManager.AppSettings["
SpecialChars"]; this._specialChars = specialChars.ToCharArray(); } private void btnGenerator_Click(object sender, EventArgs e) { string text = txtWords.Text; var texts = text.ToCharArray(); Random rd = new Random(); string textNew = ""; foreach (var item in texts) { var run = rd.Next(3); Thread.Sleep(1); textNew += item; for (int count = 0; count < run; count++) { var random = rd.Next(_specialChars.Length); textNew += _specialChars[random]; Thread.Sleep(1); } } var img = CreateImage(textNew, false, 9); Clipboard.SetImage(img); } /// <summary> /// 生成文字圖片 /// </summary> /// <param name="text"></param> /// <param name="isBold"></param> /// <param name="fontSize"></param> public Image CreateImage(string text, bool isBold, int fontSize) { int wid = 400; int high = 200; Font font; if (isBold) { font = new Font("Arial", fontSize, FontStyle.Bold); } else { font = new Font("Arial", fontSize, FontStyle.Regular); } //繪筆顏色 SolidBrush brush = new SolidBrush(Color.Black); StringFormat format = new StringFormat(StringFormatFlags.NoClip); Bitmap image = new Bitmap(wid, high); Graphics g = Graphics.FromImage(image); SizeF sizef = g.MeasureString(text, font, PointF.Empty, format);//得到文字的寬高 int width = (int)(sizef.Width + 1); int height = (int)(sizef.Height + 1); image.Dispose(); image = new Bitmap(width, height); g = Graphics.FromImage(image); g.Clear(Color.White);//透明 RectangleF rect = new RectangleF(0, 0, width, height); //繪製圖片 g.DrawString(text, font, brush, rect); //釋放物件 g.Dispose(); return image; } } }
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--增加系統變數-->
  <appSettings>
    <!--混淆用的特殊字元-->
    <add key="SpecialChars" value="«¬®¯°±²³☎☏✄☪☣☢☠♨« »☑✔☐☒✘㍿☯☰☷♥♠♤❤♂♀★☆✡※卐" />
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

 

4、鑑於別有人拿著這個違法亂紀,工具就不掛出來了,程式碼很簡單,有用的,自己拿程式碼編譯一下~~