首页 > 其他分享 >2022ISCTF Crypto wp

2022ISCTF Crypto wp

时间:2023-01-24 23:22:45浏览次数:44  
标签:2022ISCTF ISCTF Crypto flag key wp print import

ISCTF Crypto wp

1.这是什么古典玩意

题目:

The flag is: ISCTF{part1_part2_part3}
example:
part1:aaa
part2:bbb
part3:!@#
flag:ISCTF{aaa_bbb_!@#}

-------------------------------------challenge-------------------------------------
part1:SUpXSEtaS1ROQlFYRTJZPQ==

part2:5c 75 35 33 5c 75 36 35 5c 75 36 35 5c 75 36 44 5c 75 37 33 5c 75 35 33 5c 75 33 30

image

解题:

part1:先base64再base32

part2:先十六进制转字符串,再unicode解码

part3:猪圈密码,对照表是,cute

ISCTF

2.呜呜呜我的md5脏了

题目:

g0at无意间发现了被打乱的flag:I{i?8Sms??Cd_1?T51??F_1?}
但是好像缺了不少东西,flag的md5值已经通过py交易得到了:88875458bdd87af5dd2e3c750e534741

解题:

栅栏密码,分为5栏时解密为:ISCTF{md5_is_11??1??8???}
题目已经告诉了md5值,直接hashcat一把唆
hashcat -a 3 -m 0 88875458bdd87af5dd2e3c750e534741 ISCTF{md5_is_11?d?d1?d?d8?d?d?d} 

ISCTF

工具虽然方便,还是写个脚本

import hashlib
import itertools
import string
w=string.digits
for a,b,c,d,e,f,g in itertools.product(w,w,w,w,w,w,w):
  t = 'ISCTF{md5_is_11'+str(a)+str(b)+'1'+str(c)+str(d)+'8'+str(e)+str(f)+str(g)+'}'
  md5 = hashlib.md5(t.encode(encoding='UTF-8')).hexdigest()
  if md5[:32] == '88875458bdd87af5dd2e3c750e534741':
    print (t)

3.咦 这个密码 怎么怪怪的

题目:

JVAB6NR=
FCFOQCB=
JG6NSTP=
UPM4BGU=
GN3VKM==

栅栏密码

分为5栏时,进行base32解码得flag

ISCTF

4.ezcry

题目:

from Crypto.Util.number import *
import gmpy2
from flag import flag
m = bytes_to_long(flag)
p = getPrime(1024)
q = getPrime(1024)
s = getPrime(128)
k = getPrime(128)
n = p * q
e = 65537
seek1 = p*s
seek2 = q*k
seek3 = s*k
c = pow(m,e,n)
print(n)
print(seek1)
print(seek2)
print(seek3)
print(c)
"""
17034526359906374675222899048129793386473729727961851733668266173715506273934226618903915327347680201386438684211280871430960401386916021458749533875225149368757915582850037170031336862864220965224712317292408675261654733853726119671544885158743864358155418727967683788352892259519172776767011253307992508658787036093010953540438865556151687132667690293590304094069132122821611257522409132491206241878258953750975043892338280574703622715614385904469190033441247428911800257097240824225432194243602777112774675510936575635571170740329720227162079500469956310746873132644419840611848333802207608652869080821316814006039
31064534580137722018723185060822560614595271317101024671103834301982025703308358280617670492170754990183711198694392500995348706299728134379707212369534471489902209545060592051514886997951859233729914969365008090709174580598044945031296428531946547802954873288796478626936584991410702713951383782424003825610226728036611739090258953115031673157531
24213197274140919663950771475506320265583015671558310318006684746019240494812396672068641326932339831508586851960432536051863105773343184877340119017546817780287117748145293115469964769795237573829418533841547969451268532899237529671580701722254679851009751345719473395857872899046537572034595080443184983155696803469587776652323407147950333716539
44155715757886274586781970607943060213741487009882893164192666734219021562031
6636871845889289821451339461667353441602430792099749101933216934629214305159040913567522609116395485018234259025910227221402350884391969711051377864656945164699379734982178962637190192088596776288873871651609167259167456816094141938735498585327839045360319836147041837569528592447701501104067430848582239927052031661696213986982946173792468753773505681630323945625892041031455025095934790620541499679023777086690062211807019645557781380979957862910047981754126193036968611612056475750787560328372643151874535031184052794483578557248028165948247504989100884012688908781349748818365779371062209169311607720595792421590
"""

解题:

from Crypto.Util.number import *
import primefac
n=17034526359906374675222899048129793386473729727961851733668266173715506273934226618903915327347680201386438684211280871430960401386916021458749533875225149368757915582850037170031336862864220965224712317292408675261654733853726119671544885158743864358155418727967683788352892259519172776767011253307992508658787036093010953540438865556151687132667690293590304094069132122821611257522409132491206241878258953750975043892338280574703622715614385904469190033441247428911800257097240824225432194243602777112774675510936575635571170740329720227162079500469956310746873132644419840611848333802207608652869080821316814006039
seek1=31064534580137722018723185060822560614595271317101024671103834301982025703308358280617670492170754990183711198694392500995348706299728134379707212369534471489902209545060592051514886997951859233729914969365008090709174580598044945031296428531946547802954873288796478626936584991410702713951383782424003825610226728036611739090258953115031673157531
seek2=24213197274140919663950771475506320265583015671558310318006684746019240494812396672068641326932339831508586851960432536051863105773343184877340119017546817780287117748145293115469964769795237573829418533841547969451268532899237529671580701722254679851009751345719473395857872899046537572034595080443184983155696803469587776652323407147950333716539
seek3=44155715757886274586781970607943060213741487009882893164192666734219021562031
c=6636871845889289821451339461667353441602430792099749101933216934629214305159040913567522609116395485018234259025910227221402350884391969711051377864656945164699379734982178962637190192088596776288873871651609167259167456816094141938735498585327839045360319836147041837569528592447701501104067430848582239927052031661696213986982946173792468753773505681630323945625892041031455025095934790620541499679023777086690062211807019645557781380979957862910047981754126193036968611612056475750787560328372643151874535031184052794483578557248028165948247504989100884012688908781349748818365779371062209169311607720595792421590
e = 65537
'''
#利用yafu分解seek3得到k和s
k = 176868710737612660790124725586933365207
s = 249652499719930280463165749259207398633
'''
#k,s=primefac.primefac(seek3)#分解seek3
s=GCD(seek1,seek3)
k=GCD(seek2,seek3)
p=seek1//s
q=seek2//k
d=inverse(e,(p-1)*(q-1))
m=pow(c,d,n)
print(long_to_bytes(m))

5.韩信点兵

题目:

from secret import flag
from Crypto.Util.number import *

key = getPrime(16)
def encrypt(text):
	return [(((ord(i)<<4)&0xff) + ((ord(i)>>4)&0xff))^key for i in text]

lis = encrypt(flag)

for i in lis:
	p1 = getPrime(16)
	p2 = getPrime(16)
	print(p1,p2,i%p1,i%p2)

output.enc

60719 41941 2732 21510
54277 40751 9077 22603
53147 43711 10208 19644
40277 41999 22965 21243
36929 51647 26346 11628
54767 56767 8713 6713
36433 38867 26843 24409
41659 54419 21598 8838
52289 61211 11019 2097
61643 57773 1630 5500
36923 46993 26401 16331
52783 56311 10538 7010
55147 45869 8094 17372
60859 49663 2385 13581
33533 45007 29856 18382
36433 60913 27019 2539
35879 39857 27397 23419
60589 53299 2732 10022
48947 44971 14329 18305
39199 40709 24190 22680
49783 36263 13461 26981
60271 61027 3066 2310
38977 37507 24315 25785
54667 38351 8625 24941
61703 45979 1686 17410
48029 64499 15407 63436
36433 55667 26843 7609
65287 55603 63292 7689
59999 47777 3242 15464
42923 65323 20466 63389
59273 49547 4035 13761
61819 44449 1534 18904
60589 54709 2687 8567
59467 33301 3985 30151
49253 61223 14100 2130
63493 45613 63337 17724
61121 42187 2171 21105
46769 36809 16552 26512
48731 41351 14510 21890
63277 49991 31 13317
60589 42169 2735 21155
35617 55843 27835 7609
56359 62347 7025 1037

解题:

分析代码,flag第一个字符应该是 I 可以带入代码算出key

image

from Crypto.Util.number import *
import libnum
import numpy as np
f = np.loadtxt('output.enc', dtype=int)
c=[]
n=[]
key=63311
for i in range(len(f)):
    a=f[i]
    a=a.tolist()
    #print(a)
    n.append(a[0])
    n.append(a[1])
    c.append(a[2])
    c.append(a[3])
    wp=libnum.solve_crt(c, n)
    #print(wp)
    for j in '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ{!@#}?$%^&*()-=\<>/':
        if wp == (((ord(j)<<4)&0xff) + ((ord(j)>>4)&0xff))^key:
            print(j,end='')
    c=[]
    n=[]

6.babyrsa

题目:

from Crypto.Util.number import *
from flag import flag
import gmpy2
import libnum

m = bytes_to_long(flag)
p = libnum.generate_prime(1024)
q = gmpy2.next_prime(p)
e = 0x10001
n = p * q
phi=(p-1)*(q-1)
c=pow(m,e,n)
print("phi =",phi)
print("c =",c)
# phi = 11998145197184838105291668748328177280207361667546370722759758550200386112478801305683579153942751165452647656673385449297455560085865712968985383490367475984832103238596934094135353170257339614559178443729484992289380330326343473326373076256926770972074683466001586625109364413771716300886242679064050279982192814946404692347546718488456485946902248120569680365122714051066115263800073280766317934165938044443605816890762489369759667593014079143278938847700684310154017484382180324831332527966465023501690149664921975200082428884572496102388046780321762496321487913829155767534947229165886644311869593584303424397016
# c = 5664235030100231880171042228110930207351619841860785495929861788749956436657598539033166266920085041056539484368799525891006461921744810454002229224070342640529484554920046100814190479604751667796353636578589439575896923937945959721385425716210546145718343511555866077148390467362495462929359632111674082222918151696522137240478900570056689827712787018876034334301771868147820786419006234529563416734953393480238739362002713175495890402512002469332947145115452344040709333447223824491510840788018172189866931550385951940611161143400804317944263940630025758568750312753125034413169961147691163044924934280636235493483

解题:

from Crypto.Util.number import *
import gmpy2
phi = 11998145197184838105291668748328177280207361667546370722759758550200386112478801305683579153942751165452647656673385449297455560085865712968985383490367475984832103238596934094135353170257339614559178443729484992289380330326343473326373076256926770972074683466001586625109364413771716300886242679064050279982192814946404692347546718488456485946902248120569680365122714051066115263800073280766317934165938044443605816890762489369759667593014079143278938847700684310154017484382180324831332527966465023501690149664921975200082428884572496102388046780321762496321487913829155767534947229165886644311869593584303424397016
c = 5664235030100231880171042228110930207351619841860785495929861788749956436657598539033166266920085041056539484368799525891006461921744810454002229224070342640529484554920046100814190479604751667796353636578589439575896923937945959721385425716210546145718343511555866077148390467362495462929359632111674082222918151696522137240478900570056689827712787018876034334301771868147820786419006234529563416734953393480238739362002713175495890402512002469332947145115452344040709333447223824491510840788018172189866931550385951940611161143400804317944263940630025758568750312753125034413169961147691163044924934280636235493483
e = 0x10001
d=gmpy2.invert(e,phi)

a=gmpy2.iroot(phi,2)[0]
while 1: 
    B2=pow(a,2)-phi
    a+=1
    if gmpy2.is_square(B2):
        b=gmpy2.iroot(B2,2)[0]
        p=a+b
        q=a-b
        print(p)
        print(q)
        break
p=109536045196021378473484632066472150683521336347358874526866331690092816367179030745104763602807576505784282588391579330792050561206606208658316946611185794570291516186946574151436992714139093506271221446818524824573954054758828492925882010545627804144648642873153564353555136207966912120214314518375212162597
q=109536045196021378473484632066472150683521336347358874526866331690092816367179030745104763602807576505784282588391579330792050561206606208658316946611185794570291516186946574151436992714139093506271221446818524824573954054758828492925882010545627804144648642873153564353555136207966912120214314518375212160647

n=p*q
m=pow(c,d,n)
print(long_to_bytes(m))

7.easy_AES

小明在下载某款漏扫工具的时候,看见作者并没有把压缩密码直接公布出来,而是选择把密码进行加密然后经过Base64编码才公布出来,不过好心的作者给了不完整明文
ISCTF{.................,你能帮帮小明拿到完整的密码明文吗。

/Y39hfmB/Yn83f2V/Yw==
AAcKAA8vLzgoMxY6JiAWHCwmLClpBzw3KjE6dWkVDAdpPywtaT06dAchMDsoPGUdH2l
b'\x00\x07\n\x00\x0f//8(3\x16:& \x16\x1c,&,)i\x07<7*1:ui\x15\x0c\x07i?,-i=:t\x07!0;(<e\x1d\x1fi\x7fc\x7fa~`\x7fb\x7f7\x7fe\x7fc'

-----------------------------------------------------------------------------------------------------------------------------------------------
FOa5aLBjeuIKAFpy8eLkTb5Vk8fIvc8QuMoLHjNB/fc=
b'\x14\xe6\xb9h\xb0cz\xe2\n\x00Zr\xf1\xe2\xe4M\xbeU\x93\xc7\xc8\xbd\xcf\x10\xb8\xca\x0b\x1e3A\xfd\xf7'

第一个密文是异或加密的密文,第二个密文是aes密文

解题:

import base64
from Crypto.Util.number import *
from Crypto.Cipher import AES
from gmpy2 import*
ci='AAcKAA8vLzgoMxY6JiAWHCwmLClpBzw3KjE6dWkVDAdpPywtaT06dAchMDsoPGUdH2l/Y39hfmB/Yn83f2V/Yw=='
baseci=list(base64.b64decode(ci))
a="ISCTF"
b = list(bytes(a, encoding='utf-8'))
#print(b)
for i in range(len(b)):
    plaintext = b[i] ^ baseci[i]
    print(chr(plaintext),end='')
key=''
for j in range(len(baseci)//2):
    key += 'IT'
#print(key)
keys=list(bytes(key, encoding='utf-8'))
#print('\n')
#print(key)
plaint=''
for p in range(len(baseci)):
    plain = keys[p] ^ baseci[p]
    a=chr(plain)
    plaint=''.join(a)
    print(plaint,end='')
def legth(value):
    l = len(value)
    flag = l % 16
    if flag != 0:
        add = 16 - (l % 16)
        value = value + ('\0' * add).encode('utf-8')
    return value
cipher=b'FOa5aLBjeuIKAFpy8eLkTb5Vk8fIvc8QuMoLHjNB/fc='
bcipher=base64.b64decode(cipher)
#print(bcipher)
key = b'Nuyoah'
iv = 0x676574666c6167
iv=long_to_bytes(iv)
key=legth(key)
iv=legth(iv)
aes = AES.new(key,AES.MODE_CBC,iv)
flag = aes.decrypt(bcipher)
print('\n')
print(flag)

8.ezzzzzzzzzzzzzzzzzlattice

题目:

from Crypto.Util.number import *
from secret import flag

m = bytes_to_long(flag)
p = getPrime(1024)
q = getPrime(340)
e = getPrime(27)
useful = getPrime(1024)
c = (inverse(e, q) * useful + pow(m, e, q)) % p
with open('output','w+') as f:
    f.write(f'p = {p}\nq = {q}\nc = {c}\nuseful = {useful}')

output

p = 176215041366614436655339489935591075636902895954135136841122241380253802582179967593794518297567401299036361575056860517887392943967479843776400627637034876228809071597837754747830328249465839503813449934907560998408748059942360933668204162122439360802825755035429329795025026338388994186440383639279869653617
q = 1242313292529811555206315947830403866100152101264655086220055309490893033589161223226298659803392186789
c = 138410662390266126022898465851432198243842761839203172013625260928165288436953067653757365251155206664375711525949339333912922418821222449394209190808166864229679039695293810120712445232467809405773957984990803742893378439764526132422698663165639289069790788072518598673085607321964936340065626348514556814545
useful = 158443837391423690647166977808516334736755529379034971783606878734292832504801421669112992778721979509812691083536129879186580779162458878826142669865796395792819387809984198367147973904115092855538277798349839501996992692028733595408222280697839208429914897095957668617382589907202789664317638913092559438987

解题:

将题目这行写成如下形式

c = (inverse(e, q) * useful + pow(m, e, q)) % p

\[e^{-1}*useful+m^emod\;q=c+k*p \]

用LLL算法,构造如下格,解出e和rsa的c1的一部分,

\[\begin{pmatrix}e^{-1},1,k \end{pmatrix}\begin{pmatrix} 1 & 0 & -useful\\ 0 & 1 & c \\ 0 & 0 & p \end{pmatrix}=(e^{-1},1,-e^{-1}*useful+c+k*p)=m^emod\;q \]

#sage
from gmpy2 import *
from Crypto.Util.number import *
p = 176215041366614436655339489935591075636902895954135136841122241380253802582179967593794518297567401299036361575056860517887392943967479843776400627637034876228809071597837754747830328249465839503813449934907560998408748059942360933668204162122439360802825755035429329795025026338388994186440383639279869653617
q = 1242313292529811555206315947830403866100152101264655086220055309490893033589161223226298659803392186789
c = 138410662390266126022898465851432198243842761839203172013625260928165288436953067653757365251155206664375711525949339333912922418821222449394209190808166864229679039695293810120712445232467809405773957984990803742893378439764526132422698663165639289069790788072518598673085607321964936340065626348514556814545
useful = 158443837391423690647166977808516334736755529379034971783606878734292832504801421669112992778721979509812691083536129879186580779162458878826142669865796395792819387809984198367147973904115092855538277798349839501996992692028733595408222280697839208429914897095957668617382589907202789664317638913092559438987

v1 = vector(ZZ, [1, 0,-useful])
v2 = vector(ZZ, [0,1, c])
v3 = vector(ZZ, [0,0,p])
m = matrix([v1,v2,v3])
# Solve SVP.
shortest_vector = m.LLL()[0]
e1 = abs(shortest_vector[0])
c1=abs(shortest_vector[2])
e=invert(e1,q)
d=invert(e,q-1)
#print(d)
for i in range(10000):
    m=power_mod(c1,d,q)+i*q
    m=libnum.n2s(int(m))
    #print(m)
    if b'ISCTF{' in m:
        print(m)
        break

9.蓝鲨密码

题目:

蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨!
蓝鲨? 蓝鲨! 蓝鲨! 蓝鲨. 蓝鲨? 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨. 蓝鲨.………………………………………………………………………………………………

解题:

先Ook解码https://www.splitbrain.org/services/ook,解码之后是十六进制数字,十六进制转字符串之后是base64变表,再解出来之后是变种的莫斯密码

import base64
import string
import libnum 
crypt=0x67414E6C686C6438676C396267414E6C686C6438676C396238356438676C39626B5178316B414A326A356C35383439636C6B6B776B5178316B4149776B5178316B414A6A69343569695139636C6B6C326A356C356B5178316B414A326A356C35383439636C6B6C6A6934356969526438676C39626B5178316B4149776B5178316B414A326A356C3567414E6C686B39636C6B6C326A356C3538356438676C39626B5178316B414A326A356C3538356438676C396238356438676C39626B5178316B414A6A69343569694F316A6934356969526438676C39626B5178316B414A6A69343569694F316A69343569695139636C6B6B776B5178316B414A326A356C356B5178316B41497767414E6C686C6438676C396267414E6C6869316A6934356969526438676C3962383439636C6B6C6A69343569694F316A6934356969526438676C396267414E6C686C6438676C3962383439636C6B6C326A356C3567414E6C686B39636C6B6C326A356C35
str1=libnum.n2s(int(crypt)).decode("utf-8")
#print(str1)
string1= string.digits+string.ascii_letters+'+/'
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
#print(string1)
print (base64.b64decode(str1.translate(str1.maketrans(string1,string2))))
#string1是改过之后的base64表
mosi1='BLUESHARKBLUESHARK SHARKSHARKBLUE BLUE SHARK SHARKSHARKBLUEBLUESHARKBLUE BLUESHARKSHARKSHARK SHARKBLUEBLUEBLUEBLUE SHARKSHARKBLUE SHARK SHARKSHARKSHARK SHARKSHARKSHARKSHARK SHARKBLUE SHARKBLUESHARK BLUESHARKBLUE SHARKSHARK BLUESHARK SHARKSHARKBLUESHARK BLUEBLUEBLUEBLUEBLUE'
mosi=mosi1.replace('BLUE', '-')
Moster=mosi.replace('SHARK', '.')
print(Moster)

#对照表内容放入字典中
Dict_MorseCode = {
                   'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.',
                   'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-',
                   'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-',
                   'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--',
                   'X': '-..-', 'Y': '-.--', 'Z': '--..',
                   '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....',
                   '7': '--...', '8': '---..', '9': '----.', '0': '-----',
                   ', ': '--..--', '.': '.-.-.-', '?': '..--..', '/': '-..-.', '-': '-....-',
                   '(': '-.--.', ')': '-.--.-','_':'..--.-'
                   }
#解密,就是将字符串从摩斯解密为英文的函数
def decrypt(message):
    # 在末尾添加额外空间以访问最后一个摩斯密码
    message += ' '
    decipher = ''
    citext = ''
    global i
    for code in message:
        # 检查空间
        if code != ' ':
            i = 0
            # 在空格的情况下
            citext += code
        # 在空间的情况下
        else:
            # 如果 i = 1 表示一个新字符
            i += 1
            # 如果 i = 2 表示一个新单词
            if i == 2:
                # 添加空格来分隔单词
                decipher += ' '
            else:
                # 使用它们的值访问密钥(加密的反向)
                decipher += list(Dict_MorseCode .keys())[list(Dict_MorseCode .values()).index(citext)]
                citext = ''
    return decipher

result = decrypt(Moster)
print(f'解密后的明文:{result}')

标签:2022ISCTF,ISCTF,Crypto,flag,key,wp,print,import
From: https://www.cnblogs.com/vconlln/p/17066523.html

相关文章

  • wpf 空间坐标系下,画一个立方体轮廓
    代码:publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();Worignpt=newPoi......
  • WPS优缺点
    产品优点编辑 播报·WPS能够在网络中为接入点及WPS客户端设备自动配置网络名(SSID)及WPA安全密钥。·当连接WPS设备时,用户没有必要去了解SSID和安全密钥等概念。·......
  • Paillier CryptoSystem
    PaillierCryptoSystemIntroduce一种较新的非对称加密模式,一种支持加法同态的公钥密码系统。KeyGeneration常见加密方式有两种,下面给出参数选取方式EncryptionDe......
  • SICTF_wp
    misc签到打卡完成附加下载完成之后可以看到是qsnctf的公众号使用010打开附件可以发现key,去公众号回复key即可获得flagSICTF{fb23cefd-487f-42dd-a343-2a06194efc60}......
  • CSS Units: large, small, dynamic viewport units All In One
    CSSUnits:large,small,dynamicviewportunitsAllInOneThelarge,small,anddynamicviewportunitsCSSUnitsvh/vwvw=1%ofthewidthoftheviewport......
  • SICTF2023 web_wp
    兔年大吉源码如下<?phphighlight_file(__FILE__);error_reporting(0);classHappy{private$cmd;private$content;publicfunction__construct($......
  • Use Database.GetViewports
    布局自己本身就是一个视口。UseDatabase.GetViewports(true)依次返回的是,模型空间中的视口、布局一本身、布局一中的视口、布局二本身、布局二中的视口。UseDatabase.......
  • AxMath安装以及WPS中无法正常使用的解决办法
    参考链接:https://blog.csdn.net/weixin_45761446/article/details/115646466https://blog.csdn.net/shdxhsq/article/details/108733417......
  • 【转】WPF 菜单Menu的自定义样式
    菜单Menu的自定义样式:页面代码:<MenuHeight="50"Name="menu1"Width="50"VerticalAlignment="Center"HorizontalAlignment="Center"Foreground="{x:Null}"Backgrou......
  • Linux中使用原生Wpf之Avalonia
    快速开始新建avalonia.mvvm项目getting-started#安装Avalonia.TemplatesdotnetnewinstallAvalonia.Templates#查看已经安装的模板dotnetnewlist|grepAvalo......