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/http://bitmessage.mybb.rocks/viewtopic.php?id=30%23p106
https://web.archive.org/http://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/http://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/http://bitmessage.mybb.rocks/viewtopic.php?id=30#p104
copy + paste :
web.archive.org/web/20171202215905/http://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/http://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/http://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
Я здесь случайно, но специально зарегистрировался, чтобы поучаствовать в обсуждении.