chan generator
Posts 1 to 10 of 10
Share2Dec 2 2017 21:26
#!/usr/bin/env python2.7 # -*- coding: utf-8 -*- ''' This is the python script file named " chanGenerator2.py " , which is copyleft freeware. Usage: $ python2 chanGenerator.py [passphrase] https://web.archive.org/web/20171202221818/https://bitmessage.mybb.rocks/viewtopic.php?id=30%23p106 https://web.archive.org/https://bitmessage.mybb.rocks The chanGenerator generates a bitmessage stream 1 chan address on the bash-Konsole command line. does not need to be placed inside the pyBM subdirectory but works "stand alone". A bash alias to the script makes it useful for fast testing, or run this bash script: #!/bin/bash ## call this script named "shscr" as: ./shscr ./file1words ## with your chan names / passphrases contained inside of the file ./file1words touch ./keys.dat--generated while IFS='' read -r line <&3 || [[ -n "$line" ]]; do echo \[chan\] $line; python2 ./chanGenerator2.py $line >> ./keys.dat--generated ; done 3<"$1" ________________________________________________________________________________________ [chan] 𝕓𝕚𝕥𝕞𝕖𝕤𝕤𝕒𝕘𝕖 BM-2cULYXn1VJAqoHjsQxME9UGRft3KHMYABh ________________________________________________________________________________________ Modeled after Bitmessage "VanityGen" by "nimda" and a later version called "bmgen.py" https://bitmessage.org/forum/index.php?topic=1727.0 https://gist.github.com/anonymous/43c7d9690e57558b10e59720b29dc2d6 https://web.archive.org/save/http://mx.forum.cool/viewforum.php?id=4 https://web.archive.org/save/https://bitmessage.mybb.rocks ''' import sys, os, base64, hashlib, time from struct import * from pyelliptic.openssl import OpenSSL import ctypes from pyelliptic import arithmetic from binascii import hexlify def encodeVarint(integer): if integer < 0: print 'varint cannot be < 0' raise SystemExit if integer < 253: return pack('>B',integer) if integer >= 253 and integer < 65536: return pack('>B',253) + pack('>H',integer) if integer >= 65536 and integer < 4294967296: return pack('>B',254) + pack('>I',integer) if integer >= 4294967296 and integer < 18446744073709551616: return pack('>B',255) + pack('>Q',integer) if integer >= 18446744073709551616: print 'varint cannot be >= 18446744073709551616' raise SystemExit def encodeAddress(version,stream,ripe): if version >= 2 and version < 4: if len(ripe) != 20: raise Exception("Programming error in encodeAddress: The length of a given ripe hash was not 20.") if ripe[:2] == '\x00\x00': ripe = ripe[2:] elif ripe[:1] == '\x00': ripe = ripe[1:] elif version == 4: if len(ripe) != 20: raise Exception("Programming error in encodeAddress: The length of a given ripe hash was not 20.") ripe = ripe.lstrip('\x00') verVar = encodeVarint(version) strVar = encodeVarint(stream) storedBinaryData = encodeVarint(version) + encodeVarint(stream) + ripe sha = hashlib.new('sha512') sha.update(storedBinaryData) currentHash = sha.digest() sha = hashlib.new('sha512') sha.update(currentHash) checksum = sha.digest()[0:4] asInt = int(hexlify(storedBinaryData) + hexlify(checksum),16) return 'BM-'+ encodeBase58(asInt) ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" def encodeBase58(num, alphabet=ALPHABET): if (num == 0): return alphabet[0] arr = [] base = len(alphabet) while num: rem = num % base num = num // base arr.append(alphabet[rem]) arr.reverse() return ''.join(arr) def pointMult(secret): k = OpenSSL.EC_KEY_new_by_curve_name(OpenSSL.get_curve('secp256k1')) priv_key = OpenSSL.BN_bin2bn(secret, 32, 0) group = OpenSSL.EC_KEY_get0_group(k) pub_key = OpenSSL.EC_POINT_new(group) OpenSSL.EC_POINT_mul(group, pub_key, priv_key, None, None, None) OpenSSL.EC_KEY_set_private_key(k, priv_key) OpenSSL.EC_KEY_set_public_key(k, pub_key) size = OpenSSL.i2o_ECPublicKey(k, 0) mb = ctypes.create_string_buffer(size) OpenSSL.i2o_ECPublicKey(k, ctypes.byref(ctypes.pointer(mb))) OpenSSL.EC_POINT_free(pub_key) OpenSSL.BN_free(priv_key) OpenSSL.EC_KEY_free(k) return mb.raw found_one = False def chanerate(): global found_one passphrase = args[0] deterministicNonce = 0 startTime = time.time() while found_one != True: deterministicNall = str(passphrase) address="" while found_one != True: signingKeyNonce = 0 encryptionKeyNonce = 1 numberOfAddressesWeHadToMakeBeforeWeFoundOneWithTheCorrectRipePrefix = 0 deterministicPassphrase = deterministicNall while found_one != True: numberOfAddressesWeHadToMakeBeforeWeFoundOneWithTheCorrectRipePrefix += 1 potentialPrivSigningKey = hashlib.sha512(deterministicPassphrase + encodeVarint(signingKeyNonce)).digest()[:32] potentialPrivEncryptionKey = hashlib.sha512(deterministicPassphrase + encodeVarint(encryptionKeyNonce)).digest()[:32] potentialPubSigningKey = pointMult(potentialPrivSigningKey) potentialPubEncryptionKey = pointMult(potentialPrivEncryptionKey) signingKeyNonce += 2 encryptionKeyNonce += 2 ripe = hashlib.new('ripemd160') sha = hashlib.new('sha512') sha.update(potentialPubSigningKey+potentialPubEncryptionKey) ripe.update(sha.digest()) if ripe.digest()[:1] == '\x00': break address = encodeAddress(4,1,ripe.digest()) privSigningKey = '\x80' + potentialPrivSigningKey checksum = hashlib.sha256(hashlib.sha256( privSigningKey).digest()).digest()[0:4] privSigningKeyWIF = arithmetic.changebase( privSigningKey + checksum, 256, 58) privEncryptionKey = '\x80' + potentialPrivEncryptionKey checksum = hashlib.sha256(hashlib.sha256( privEncryptionKey).digest()).digest()[0:4] privEncryptionKeyWIF = arithmetic.changebase( privEncryptionKey + checksum, 256, 58) deterministicNonce += 1 if (address[:2] == "BM"): print " " # for >> keys.dat print "[" + address+ "]" print "label = [chan] " + str(deterministicPassphrase) print "enabled = true" print "decoy = false" print "chan = true" print "noncetrialsperbyte = 1000" print "payloadlengthextrabytes = 1000" print "privsigningkey = " + privSigningKeyWIF print "privencryptionkey = " + privEncryptionKeyWIF found_one = True break if (found_one == True): break from optparse import OptionParser usage = "usage: %prog [options] passphrase" parser = OptionParser(usage=usage) parser.add_option("-i", "--info", action="store_true", dest="info", default=False, help="Show license and author info.") parser.add_option("-l", "--logo", action="store_true", dest="logo", default=False, help="Show logo and contact info.") (options, args) = parser.parse_args() if options.info: print """ --- """ print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" print "" print "chan Generator" print "" print "contact / subscribe broadcast: (chanerator) < BM-NBTqJ12baBSKxqdnQedyhFVUWborkho3 >" print "" print "Generates a bitmessage stream 1 chan address on the command line." print "" print "A bash alias to the script makes it useful for fast testing." print "" print "Adapted from Bitmessage VanityGen and a later version, bmgen.py." print "https://bitmessage.org/forum/index.php?topic=1727.0" print "https://gist.github.com/anonymous/43c7d9690e57558b10e59720b29dc2d6" print "" print "Usage: $ python2 chanGenerator.py [passphrase]" print "" print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" sys.exit() if options.logo: shield = """ --- """ print shield sys.exit() if len(args) == 0: parser.print_help() sys.exit() chanerate() ''' content of file1words : Bagdad Bitcoin Meetups Bangalore Bitcoin Meetups Bangkok Bitcoin Meetups Beijing Bitcoin Meetups Berlin Bitcoin Meetups Buenos Aires Bitcoin Meetups Saint Petersburg Bitcoin Meetups Sao Paulo Bitcoin Meetups Shanghai Bitcoin Meetups Singapore Bitcoin Meetups Singapore Bitcoin Meetups Stockholm Bitcoin Meetups Sydney Bitcoin Meetups Teheran Bitcoin Meetups Tokyo Bitcoin Meetups Jakarta Bitcoin Meetups Johannesburg Bitcoin Meetups Lagos Bitcoin Meetups London Bitcoin Meetups Los Angeles Bitcoin Meetups Melbourne Bitcoin Meetups Montreal Bitcoin Meetups Moscow Bitcoin Meetups Nairobi Bitcoin Meetups New Delhi Bitcoin Meetups New York Bitcoin Meetups Paris Bitcoin Meetups Rio De Janeiro Bitcoin Meetups github.com/kristovatlas/entrances.github.com Metzdwood Cryptography Internal Chan Belarus chan #bitcoin-otc #opbundy #virus $peculation$ /bb/ /cp/ /lc/ /po/ 100 10000/50000 123 200 2ch 2ch.hk/b/ 2ch.ru 320 4 4Chan 4chan BUY AND SELL TECHNICAL PRODUCTS AND SERVICES CHAN end.chan ANONYMOUS INTERNATIONAL Adult Chat - Chat Adulto Agenda Anime Anonymous Anonymous Netherlands AsianGirls Astrology BAC BDC BIGBOOBS BSD BTCXINDIA BTSync Bible BitBounty BitDate-Boys2Girls BitDate-Girls2Boys BitGigs Chan (Created by BM-2cVZJonHbYBBZrPMwb9eMwdUwPVQb3GgV7) Bitchan /JB/ Bitcoin Crowdfunding incubator (Created by BM-2cVPTkVZo2mDoJyXmaGkujtJNovVhu6W1H) Bitcoin Dividend Experiment Bitmessage Bitmessage The Netherlands BitmessageSocialNetworks Bitseal BlackJobNoCriminal Bmr Brasil Brazil C# CGL CRAP! Chicago Ghetto Lottery China Christian CivChan Coaching CoinMarketXChange Darknet Markets Debian Devuan Discovery DogeCoin Emacs Euromaidan FREEDOM FinBM France Free energy FreeBSD Full Disclosure GIT Project Gaming Germany GetMotivated Goat's penis Greeks HKGolden HPVAC Hacking Haskell Hobbies HydBitcoin I2ES I2P Imperial Reserve Bank Italia Italiani Italy Japan Jokes MMM Long Live Liberty Long Live Liberty Manila Manila Minichan Mojucoin NMC CoinJoin News NoAgenda Nutcoin OOBE Oldfags Open-Science OpenBSD OpenBazaar PHP POLICE Parallella Philippines Piracy Police Primecoin Project Bitcoin Real Estate Project Forge Bitmessage Chan QuarkCoin Quarkcoin Quotes RU.Politics R[4/fep,lq= RacialSlurs Random Acts of Pizza RetroShare RusMarket Russia SEELE SEX SLAVYANSKIY-KRUG SNUFF Salvage BitCoin SaveTheWhales Sex Chat SilkRoad Skeptics Spain Spillcoin™ StartUp SubGenius Survival Taohacker Channel The Dark Room I The Dollars The Red Pill TheVenusProject Tips&Tricks Tolkien_Chan Torrents Tox UK UKRAINE Vestichan WWE Whispers Wizardchan World Cup 2014 Live Update Wrestling ZeroNet ZeroNet Decentralised Websites Talk Zerocoin [the] {new} (SecStash) abu2ch adult altcoins amish anarchism anon anonymity/privacy/security anonymous anti-american anti-forensics antimatter arcane.crypto.shamanism archlinux archlinux.ru art atheism austrianeconomics bandwagonjumpers belarus birds bitcoin-brasil bitcoin-italia bitmessage-retards blowjobs bmc bmf_support bmfr books bounty books bounty hunters bro btc-e.com btcollab c catpix chan-gri-la chanlist chanmessage chanosphere chans chess chickswithdicks chit-chat christian chubbygirls cisco cjdns-ru classical clean-and-sober clowns coinchat computerscience coolhack coursera crowd funded DDOS cryptocat cumpix darknets darkwallet deutsch diaspora dimensionalnomads divan.crypto.autism dmt doctor_who drugs ecology esperanto ethereum euCae7if explosives fakeologist femanon finland floss food français freenet french gallery of fine art gambling games gaychan geektimes general2 gentoo gnu golang greencharter hackerspaces hackthissite half-life hiddenchan.i2p users hobbits i2p iceland illuminati jazz jokes jokes no censorship juick juicy juniper keyexchange kilts koreaunderground ladies_nsfw latex lemonparty lesbian libertarian loli lolicon lolks lor macacada rabuda magnet marketplace mathaba mathematica matlab mesbit milf nametrade netflix netsukuku news npobepka null nullnet olist omorashi openmw orgasms paysty_development pedobear pibang poker politics polygraph pony postsecret preppers preteengirls prettypecs prettytitties profanity professional_scientists programming pt pt-br queens rape reddit religion reversing revolution romance ru.2ch.hk/b/ ru.anekdot.israel ru.bitcoin ru.c-lang ru.humor ru.linux.anime ru.movie ru.programming ru.python ru.security ru.torrents ru.webmasters ruby russian sciencefiction security sharereactor.ru shotacat shotachan silkroad skycoin slackware softcore space spam suicide swingers tatoeba teenfem.nonude timecube toki pona torrent invites tox travel troll trolleyville turkce ubuntu ubuntu.ru underthebridge unicorns velociraptors vk.com vulcan walkingdead webehigh white.race wisdom xenophiles xxx xxxchat ytcracker zerocoin zionists Группа вконтакте Адреса bitmessage Инфаметр КриптоСвет - CryptoLight Славянский круг ТУТ ВСЕ НАСРЁМ Футбол_ЧМ Хуй лес хуев хуев лес � WTF you guess this chan name ==== '''
Last edited by UBF4 (Dec 3 2017 00:40)
Share3Dec 2 2017 21:55
archived :
https://web.archive.org/web/http://bitm … mybb.rocks
Last edited by UBF4 (Dec 2 2017 22:08)
Share4Dec 2 2017 22:09
wayback machine :
https://web.archive.org/web/20171202215905/https://bitmessage.mybb.rocks/viewtopic.php?id=30#p104
copy + paste :
web.archive.org/web/20171202215905/https://bitmessage.mybb.rocks/viewtopic.php?id=30%23p104
Last edited by UBF4 (Dec 2 2017 22:16)
Share5Dec 2 2017 22:16
web.archive.org/web/20171202215905/https://bitmessage.mybb.rocks/viewtopic.php?id=30%23p106
Last edited by UBF4 (Dec 2 2017 22:17)
Share6Jul 23 2018 02:40
The 2 main BM wikis are:
fossilrepos.sourceforge.net/srv.fsl/450/wcontent
github.com/Bitmessage/PyBitmessage/wiki
Share7Jul 23 2018 04:05
you can post as guest ( remove the leading htt.... from any links to succeed ) and save in wayback machine by counting up the last number ( 122 in this case to 123 and so forth )
so you get : web.archive.org/web/20180723025931/ HTP /bitmessage.mybb.rocks/viewtopic.php?id=30#p123 - then ....... 124 and so on.
no need to rgister, neither in this forum or in wayback.
web.archive.org/web/20180723025931/ HTP /bitmessage.mybb.rocks/viewtopic.php?id=30#p122
Share8Jul 23 2018 04:07
you can paste into WAYBACK-MC address line the counted up link
just as guest one must not use http at all in this forum
Share9Jul 23 2018 04:15
so here I used ......199 to refresh now use ....200 .....201 and so on.
http://web.archive.org/web/20180723031305/https://bitmessage.mybb.rocks/viewtopic.php?id=30#p199
use the white inner adress-line at the window top (for the wb machine), not the real address line of the browser (firefox).
Share10Mar 30 2020 03:14
Я здесь случайно, но специально зарегистрировался, чтобы поучаствовать в обсуждении.