- 1
https://gitlab.com/muzena/iptv/-/blob/master/usr/lib/astronciaiptv/astroncia_iptv.py
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://gitlab.com/muzena/iptv/-/blob/master/usr/lib/astronciaiptv/astroncia_iptv.py
тут каждая строчка - это говнокод
+10
Граждане, минуточку внимания!
Оплачивать сервер нам больше не под силу. До настоящего времени это делали я и админ. Страйкер в данный момент занят поисками более бюджетного хостинга.
Если кто-то хочет поддержать говнокод на плаву, внесите посильное пожертвование. По понятным причинам реквизиты я приводить не буду.
За дополнительной инфой: [email protected]
+1
https://pastebin.com/MarcPuJc
говно для подтирания важных комментов в вк. Весь не поместился, прилегаю ссылку.
+1
private async getNewKey(): Promise<string> {
let i: number = 0;
let key: string;
while (i < 50000) {
key = this.generateKey(MIN_REFERRAL_NAME_LENGTH);
const inDatabase: number = await ReferralEntity.count({ where: { name: key }, transaction: this._transaction });
if (inDatabase === 0) {
const inProcess: boolean = newKeyInProcess.has(key);
if (!inProcess) {
newKeyInProcess.add(key);
break;
}
}
i++;
}
return key;
}
Тайпскрипт. MIN_REFERRAL_NAME_LENGTH = 3
Как считаете, когда всё приложение встанет колом?
0
protected override Detail GetDetailPage(
aggregate aggregate,
int cashbackRate,
BannerResponse bannerInfo,
List<MediaShortResponse> mediaInfo,
EntityFavourites likeCountInfo,
List<FavouriteEntity> likeInfo)
{
var announcementDetail = new Detail
(
aggregate.Details.Id,
aggregate.Details.Alias,
aggregate.Details.Title,
aggregate.Details.Description,
aggregate.Details.DescriptionShortcut,
aggregate.Details.Age,
aggregate.ExtendedDetails.DataSourceId,
aggregate.ExtendedDetails.DataSourceItemId,
cashbackRate,
null,
aggregate.ExtendedDetails.LastEventDateTime,
aggregate.ExtendedDetails.EventClosestDateTime,
aggregate.ExtendedDetails.Url,
aggregate.ExtendedDetails.Category != null
? new AnnouncementCategory(aggregate.ExtendedDetails.Category.Id,
aggregate.ExtendedDetails.Category.Title,
aggregate.ExtendedDetails.Category.Url)
: null,
aggregate.ExtendedDetails.Tags?.Select(ss =>
new Tag(ss.Title, HttpUtility.UrlPathEncode(ss.Url))
).ToList(),
aggregate.Details.Privileges?.Select(ss => new Privilege()
{
Description = ss.Description,
Id = ss.Id,
ImageUrl = ss.ImageUrl.ToString(),
Title = ss.Title
}).ToList(),
mediaInfo.Select(m => new Media
{
Type = m.Type,
Url = m.Url
}).ToList(),
aggregate.ExtendedDetails.EventMinPrice,
likeInfo.FirstOrDefault(x => x.EntityId == aggregate.Details.Id)?.IsSet ?? false,
likeCountInfo?.TotalCount,
aggregate.ExtendedDetails.Promotext,
bannerInfo != null ? new Banner { Url = bannerInfo.Url, ImageUrl = bannerInfo.ImageUrl } : null,
aggregate.Details.Venue != null
? new ShortVenue(aggregate.Details.Venue.Id,
aggregate.Details.Venue.Title,
aggregate.Details.Venue.Url.Replace(_liveBaseAddress, ""),
aggregate.Details.Venue.Address)
: null,
(AnnouncementStatus)aggregate.Details.Status,
aggregate.ExtendedDetails.PremiumRule,
aggregate.Details.HasPrivilegeEnabled,
);
return announcementDetail;
}
0
void
AuxFunc::homePath(std::string *filename)
{
char *fnm = getenv("USERPROFILE");
if(fnm)
{
*filename = std::string(getenv("USERPROFILE"));
}
else
{
fnm = getenv("HOMEDRIVE");
if(fnm)
{
*filename = std::string(getenv("HOMEDRIVE"));
}
else
{
fnm = getenv("HOMEPATH");
if(fnm)
{
*filename = std::string(getenv("HOMEPATH"));
}
else
{
fnm = getenv("HOME");
if(fnm)
{
*filename = std::string(getenv("HOME"));
}
else
{
fnm = getenv("SystemDrive");
if(fnm)
{
*filename = std::string(getenv("SystemDrive"));
}
else
{
std::cerr << "Cannot find user home folder" << std::endl;
exit(1);
}
}
}
}
}
toutf8(*filename);
}
Угадайте откуда код!
0
<script type="text/javascript">
var reformalOptions = {
project_id: 9409,
show_tab: false,
project_host: "govnokod.reformal.ru"
};
(function() {
var script = document.createElement('script');
script.type = 'text/javascript'; script.async = true;
script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'media.reformal.ru/widgets/v3/reformal.js';
document.getElementsByTagName('head')[0].appendChild(script);
})();
</script>
--------------------------------------------------------------------------------
Request:
GET http://media.reformal.ru/widgets/v3/reformal.js
Referer: http://govnokod.ru/
--------------------------------------------------------------------------------
Response:
307 Temporary Redirect
Location: http://r.rrzb.ru/?reg=11&orig=http%3A%2F%2Fmedia.reformal.ru%2Fwidgets%2Fv3%2Freformal.js
--------------------------------------------------------------------------------
С каких-то там пор, у недобросовестных провайдеров повелось добавлять на страницу без https свои шуры-муры и рекламные финтифлюшки, но сейчас, некоторые более хитрые провайдеры, пошли ещё дальше.
Смотрят, значит, они на http страничку, или просто ловят запросы js по http, видят подключаемый javascript и вуаля - подменяют заголовок ответа на 307 Location с новым скриптом со своим содержимым.
Можете сами посмотреть, если у кого такой вот провайдер, например.
На этом сайте, по http://govnokod.ru, так и происходит.
Как с этим бороться?
Например добавлением атрибута "integrity":
<script src="http://media.reformal.ru/widgets/v3/reformal.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4 YfRvH+8abtTE1Pi6jizo"></script>
Но у этого способа, сами понимаете, существуют определённые сложности.
Второй способ - это добавить к адресу любой get параметр:
<script src="http://media.reformal.ru/widgets/v3/reformal.js?rand=random"></script>
Конечно, это вообще не спасёт от подмены через 307 Location, но провайдер по своей методике такие URL пока не трогает.
0
Просто оффтоп #27
#1: https://govnokod.ru/20162 https://govnokod.xyz/_20162
#2: https://govnokod.ru/25329 https://govnokod.xyz/_25329
#3: https://govnokod.ru/25415 https://govnokod.xyz/_25415
#4: (vanished) https://govnokod.xyz/_25472
#5: https://govnokod.ru/25693 https://govnokod.xyz/_25693
#6: (vanished) https://govnokod.xyz/_26649
#7: https://govnokod.ru/26672 https://govnokod.xyz/_26672
#8: https://govnokod.ru/26924 https://govnokod.xyz/_26924
#9: https://govnokod.ru/27072 https://govnokod.xyz/_27072
#10: https://govnokod.ru/27086 https://govnokod.xyz/_27086
#11: https://govnokod.ru/27122 https://govnokod.xyz/_27122
#12: https://govnokod.ru/27153 https://govnokod.xyz/_27153
#13: https://govnokod.ru/27159 https://govnokod.xyz/_27159
#14: https://govnokod.ru/27200 https://govnokod.xyz/_27200
#15: https://govnokod.ru/27237 https://govnokod.xyz/_27237
#16: https://govnokod.ru/27282 https://govnokod.xyz/_27282
#17: https://govnokod.ru/27319 https://govnokod.xyz/_27319
#18: https://govnokod.ru/27380 https://govnokod.xyz/_27380
#19: https://govnokod.ru/27500 https://govnokod.xyz/_27500
#20: https://govnokod.ru/27607 https://govnokod.xyz/_27607
#21: https://govnokod.ru/27951 https://govnokod.xyz/_27951
#22: https://govnokod.ru/28076 https://govnokod.xyz/_28076
#23: https://govnokod.ru/28266 https://govnokod.xyz/_28266
#24: https://govnokod.ru/28373 https://govnokod.xyz/_28373
#25: https://govnokod.ru/28474 https://govnokod.xyz/_28474
#26: https://govnokod.ru/28563 https://govnokod.xyz/_28563
+1
В одном из минувших топиков приподымали тему POP SMDб я тоже решил напейсать генератор паролей к этой игре.
https://pastebin.com/ANHTMmeM
на основе исходников roman-pro
+1
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void PasswordChecker(void);
void sub_BB4F(unsigned char* Password);//subroutine $BB4F and so on...
void sub_BB21(void);
void sub_BBE0(void);
void sub_BBEA(void);
void SEC_SBC_6502(unsigned char operand);
void ADC_6502_simplified(unsigned char operand);
unsigned char Password[8];//$0766 to $076D in RAM, when a player enters it
unsigned char Invalidity=0;//$0764 in RAM
unsigned char Level;//$$0070 in RAM
unsigned char TimeTens;//$04c5 in RAM
unsigned char TimeOnes;//$04c6 in RAM
unsigned char Byte4BF, Byte17, Byte18;
unsigned char a, x;
unsigned char c=0;//carry flag
//former char Byte76A is Password[4] now, former char Byte76C is Password[6] now
void PasswordGenerator(void);
void BuildORTable(void);
unsigned char* BuildParticularLevelsArray(unsigned char DesiredLevel);//will think of it later...
void SimplifiedLevelGenerator(unsigned char* PassToFill,unsigned char Level);//finds just one 2nd,3rd,6th,8th digit combo
int main()
{
int Choice;
printf("Enter g if you'd like to generate a new password.\nEnter a to analyze an existing password.\n");
Choice=fgetc(stdin);
flushall();
if (Choice=='a')
PasswordChecker();
if (Choice=='g')
PasswordGenerator();
if (Choice=='s')//'level function' is basic when generating a pass
BuildORTable();//so here a bit of 'hidden' investigation, which will be useful
//if I ever decide to rewrite this prog to output all passes possible, not just one
printf("Press any key to quit.\n");
getch();
return 0;
}
void PasswordChecker(void)
{
char InputString[9];//one extra byte needed due to fgets
int i;
printf("Please enter your password to test:\n");
fgets(InputString,9,stdin);
for(i=0;i<8;i++)
{
if ((InputString[i]>57)||(InputString[i]<48))
{
printf("This string contains non-digits.\n");
return;
}
else
Password[i]=InputString[i]-48;//ascii to digit
}
sub_BB4F(Password);
if (Invalidity==1)
{
printf("This password is invalid.\n");
return;
}
printf("%s%d","Level: ",Level);
printf("%s%d%d\n"," Time: ",TimeTens,TimeOnes);
if (Level==15)
printf("Level 15 doesn't exist. So-called level 15 passwords are programming mistakes and cause system hang.\n");
if (Level==16)
printf("Level 16 doesn't exist. So-called level 16 passwords are programming mistakes and lead you to a buggy screen where Prince can't move.\n");
return;
}
void sub_BB4F(unsigned char* Password)//$BB4F
{
a=0;
x=0;
while (x<8)
{
a=a+Password[x];
x++;
}
if(a==0)
{
Invalidity=1;//$BBC0
return;
}
Byte17=Password[4];//$BB63
Byte18=Password[6];
Password[4]=0;
Password[6]=0;
sub_BB21();//$BB72,calculates and writes 1st checksum to Password[4], 2nd checksum to Password[6]
if (Password[4]!=Byte17)
{
Invalidity=1;
return;
}
Генератор паролей для игры Prince Of Perisa. Пришлось немного повозиться...
if (Password[6]!=Byte18)//$BB7C
{
Invalidity=1;
return;
}
Invalidity=0;//$BB85
a=Password[7];
sub_BBEA();
a=a&3;//$BB8E
a=a*4;
Password[7]=a;
a=Password[1];
sub_BBE0();//$BB98
a=a|Password[7];
Level=a+1;//+1 is my insertion
//if (Level!=1)//I chose to omit this $BBA2-$BBA4 code b/c it's unknown what byte at $06EE means
a=Password[0];
sub_BBE0();//$BBAA
TimeTens=a;
a=Password[3];
sub_BBEA();
TimeOnes=a;
return;//$BBBF
}
void SEC_SBC_6502(unsigned char operand)
{
c=1;
if ((a-operand)>=0)
a=a-operand;
else
{
a=a-operand+256;
c=0;
};
}
void ADC_6502_simplified(unsigned char operand)
{
if ((a+operand)<256)
a=a+operand;
else a=a+operand-256;
}
void sub_BB21(void)
{
x=0;
BB23: a=Password[4];
a=a+Password[x];
if(a<10)
{
BB46: Password[4]=a;//$BB46
x++;
if (x!=8)
goto BB23;
else return;//$BB4E
}
else //$BB2E
{
Byte4BF=a;
a=Password[6];
a++;//we came here b/c c=1
if (a<10)
goto BB3D;
else
SEC_SBC_6502(10);//can we get here? I doubt...
BB3D: Password[6]=a;
a=Byte4BF;
SEC_SBC_6502(10);//$BB44, no danger of negative result
goto BB46;
}
}