查看: 16840|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 e( v1 V- ?/ B! y: h, h; a8 U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 \/ c% x% z7 J% Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 l* p' a% d; d' [5 `3 D
usage: himr <address> <value>. sample: himr 0x80040000 0x04 {- {5 [7 \. p( N# L
" q/ @4 X0 _. |5 Q; v

8 ^3 N3 \+ ?7 r: K( Q% h不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& z3 x2 E- z; E6 {( v4 S
4 [5 ]4 c- u5 q6 Z7 ]
补充内容 (2012-3-8 09:42):
7 ?6 {# z( ]& ?6 {' ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) g2 ]/ v. |+ V* ^9 `5 w( j( g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 u% J+ z" i- f; ]

2 }/ Q' }) J- ^himr <address> <value>. sample: himr 0x80040000 0x0# T2 p+ G" O, i7 E1 d- z3 }

2 y) g. M$ l8 _! Y  R# W例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; K% r; u5 f5 ~% b2 m. R$ ^. j
himr 0x80040000 0x00, `/ s' E) z- ?8 j, ^; w
himr 0x80040001 0x11
% Q' Y7 f! s% C0 chimr 0x80040002 0x22& y, K% L& U3 v. M/ a
himr 0x80040003 0x33! u, V5 G- ?6 m$ _# p: B: ?  k* A
himr 0x80040004 0x44
2 \# H0 M6 W3 I3 b4 Y& _4 Dhimr 0x80040005 0x55/ O! Z0 l: B; p, Z

2 c- s/ g( [& Y) G6 wSN也是类似。2 w, |/ i7 u4 K. n# `
/ E0 E, j: T) C& {* i( k6 o( y1 h
现在主要是,谁告诉我们MAC和SN的地址?
: J. L% {4 D. p6 a
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, S* ^6 Q& S- X3 b, q1 G一直想找到运程修改MAC和SN的办法,苦于无解啊

& }" `' p) ^5 u0 \/ ~! ~; D3 @0 e' H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ `$ U9 c# P( }' D8 N3 k3 {0 \% P, q# m
修改的代码早有了。到今天不会编译。1 T. h+ x$ q# F' s4 O# T# Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% y* f' G) a+ X  L) u2 [
  2. #include <malloc.h>
    ) X; F* l9 I- @0 ]. Y
  3. #include <sys/types.h>
    & v* s  U: a( L' [6 y9 B- \
  4. #include <sys/stat.h>. q* M% O) }8 G9 Z5 L+ l# v
  5. #include <sys/ioctl.h>8 y+ M  j5 s/ \# R7 M
  6. #include <stdio.h>+ V. q4 q9 S1 Y5 B& J0 `/ k% N
  7. #include <string.h>  Z1 i# |% t! m3 @7 X$ @
  8. 8 Q! ^0 L( u4 b
  9. typedef struct {4 j# g, H/ `1 Q4 F6 \7 r$ {- s
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 n3 h) M# w; Q
  11.         unsigned int        sub_addr_count;
    % g0 E" s0 M5 U0 b
  12.         unsigned char*        e2prom_cmd_data;- Z" g9 z( q( P7 P4 a* ^( ]' N# p
  13.         unsigned int        data_count;4 p7 |4 g) R: g/ M- j8 |" J! [, t
  14. } e2prom_s_cmd;
    & e0 o; a1 O) F1 W

  15. 1 e  L2 ]6 k6 S9 h
  16. #define E2PROM_CMD_READ 1
    / `( h; {. {8 H: k% N$ T2 {3 H
  17. #define E2PROM_CMD_WRITE 29 U8 x( ^8 H4 o+ p+ x: T3 l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 W. T0 o# s7 @

  19. ! c- P( v- j) h% s3 L% D
  20. static int readparam(unsigned char *mac, unsigned char *stbid), o. q' n4 T6 d
  21. {
    & |& L" _; u; I) J4 f2 c3 [
  22.         int fd, ret;& q/ L% [/ g# A- c6 U
  23.         e2prom_s_cmd arg;
    5 v' P4 U9 b% q9 m$ d
  24.         unsigned char buf[0x18];
    ( [+ g2 b7 M; X. r( P/ H' R

  25. $ ^1 X; m6 r6 N3 T' o; Y, `/ t( Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! O' i9 ?$ H( ~- l3 d
  27.         if (fd  < 0) {! Q' U7 }) l" T1 T; A+ {& \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 s2 g# s+ u# F1 o
  29.                 return -1;
    ! E& z8 X0 J* W! t
  30.         }
    * {, o5 w$ [  S  q5 Q5 z. C) Z
  31.         arg.sub_addr_count      = 2;( m, N& \$ u9 ]+ h, X6 {
  32.         arg.data_count          = 0x18;0 T& x. j* h2 O: e, D+ U
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % J9 ]# H, R7 H1 F, P/ T$ X
  34.         arg.e2prom_cmd_data     = buf;! R- k6 A/ l" h. i" _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; F$ a: q' q/ ]# l& T: o+ I
  36.         if (ret != 0) {
    2 S' O& B/ E4 `* }2 ?" N0 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 n7 ]9 a/ |8 G7 a
  38.                 return -1;
    ! f3 t; t5 w# x$ v" _9 U
  39.         }: V2 S1 u4 z, {# j8 s- u% A
  40.         memcpy(mac, buf, 6);
    ' q  {' J8 _9 z, u: w
  41.         memcpy(stbid, &buf[6], 18);
    1 x+ _8 [$ F1 I+ f2 Z; t: R6 @6 `
  42.         stbid[18] = '\0';
    7 ]' R6 x7 \: C8 W4 C# o

  43. 5 G: }3 D+ {  ^; R( W* ?5 |- n) _
  44.         return 0;
    ; x# I$ y+ @/ }
  45. }- w0 Q" K9 B- I/ v3 C9 E  R( O

  46. ) F: {0 V9 @9 Y) C% G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' d; P; ?- m$ ]/ L
  48. {. v4 F, T0 a2 a5 Y7 Z0 q' w
  49.         int fd, ret;
    / B6 V2 D" i0 |: |& E! V! E% h5 o
  50.         e2prom_s_cmd arg;
    3 ~+ l; v1 H! N, f7 C1 Y- p
  51.         unsigned char buf[0x18];
    ) K* I' D" N4 \: r' I$ J( {% R

  52. / ]1 J( X( p6 l9 Y; p
  53.         memcpy(buf, mac, 6);
    0 D/ }3 g3 n* c9 i
  54.         memcpy(&buf[6], stbid, 18);& s: d# a/ a3 O! |
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% A0 w6 a- w2 s  j/ `: L, o
  56.         if (fd  < 0) {6 K3 v0 I( N6 m9 i5 L$ K- O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 V; l; K5 t5 G5 c5 |( d' ?4 _
  58.                 return -1;
    ; z: W) x% H/ t# q9 V7 U& _9 W3 x
  59.         }
    . B, M' h2 W$ l. r4 Y+ y
  60.         arg.sub_addr_count      = 2;+ ^( x8 F! o, i% o6 l$ E
  61.         arg.data_count          = 0x18;
    4 J) k* ?8 I: ~0 f; t+ i
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . v5 r7 i9 D0 ^3 Z4 T3 \
  63.         arg.e2prom_cmd_data     = buf;' E& b( h/ M* O7 _: V3 p0 a$ |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 ]6 x) U8 I  C  V, Z; N# W
  65.         if (ret != 0) {
    # m+ n. f9 R0 F9 Y* C$ `# S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 o. ]- G, t7 r" [6 s) ?* u
  67.                 return -1;" ^" a" i1 Y( K
  68.         }* h! i9 ^& w  {& Y) v+ o

  69. ; W6 m+ H' U' B( }! T$ i
  70.         return 0;
    & `: ?5 Z4 K# f
  71. }5 w4 h) y0 c+ j, h; Q. b
  72. 7 S8 \/ _/ Q+ F7 K
  73. int main()
    ' @7 a; ~% f% _/ J
  74. {
    / }( |* T" e+ b  a7 T. a9 m2 w! f- B) J
  75.         char c;
    ( ]8 {$ b  g" H/ D" C
  76.         int i, macs[6];* C1 Y$ i6 ^6 \) J0 Q4 v# V
  77.         unsigned char mac[6];
    3 \0 l0 v! J% c9 @
  78.         unsigned char stbid[256];
    - R" [. Q8 l% q% g+ R1 r
  79. # t- R) ?1 V. i$ @! O
  80.         if (readparam(mac, stbid) < 0)
    7 k$ W$ G! Z  G) y7 j3 {2 C6 K
  81.                 return 1;% |* g: H; r2 E  p5 V# @- F+ F
  82. . U* i8 S/ H4 ]1 D
  83.         printf("Current parameters: \n");
    % E) P  ^$ \& H7 Z1 ?1 Y" }% P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 T* h/ E9 Y$ E" |
  85.         printf("  STBID: %s\n", stbid);
    $ [1 Q# l- [, O8 e: \( F% W. d
  86.        
    ! q2 x' `; H8 b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# M6 e  @' [0 Y8 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 p3 d4 f6 H& R4 T" z& C: B1 N
  89.                 printf("Input MAC error\n");) t9 }, C4 `: I4 O% M
  90.                 return 1;0 S0 x- t- B3 G6 L8 H! @* Q5 V' G, \) m
  91.         }0 r( `6 W4 f1 B7 n6 B' m: J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 {4 i2 Z; |9 s+ {6 }7 K
  93.         printf("\nPlease input new STBID: ");
    ' U+ s8 w3 {6 K
  94.         scanf("%s", stbid);
    8 j' |, M+ Q  j, I+ k' }
  95.         if (strlen(stbid) != 18) {
    ! q% C1 o2 e" b4 T% Q; V" R6 ]
  96.                 printf("Invalid stbid\n");
    2 T3 v2 G: |1 p& G
  97.                 return 1;7 c. @# n: a. q1 \5 e( r( ]" |
  98.         }, j# c7 j# Z- C/ k! ~: B! N
  99.         printf("\nNew parameters: \n");3 {' g* D( d% a7 B# ~7 j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 \5 ?7 h, o0 y) \$ G0 |( K
  101.         printf("  STBID: %s\n", stbid);- W% ?3 M& U+ v9 l
  102. , M# v  F8 ~4 o% G) A  ?3 c
  103.         printf("\nDo you want to change paramemters? (y/N) ");; C! L$ Z9 [3 l& h
  104.         for (;;) {% }& y; }4 }. q# @
  105.                 c = getchar();
    ; Z* V* \0 [4 R  l
  106.                 if (c == 'y' || c == 'Y')( x/ \$ @% ?6 o) w
  107.                         break;( J5 B+ T; Y; {+ A! N* U4 P: G
  108.                 if (c == 'n' || c == 'N') {2 v5 p3 i) X9 ^
  109.                         printf("\nAborted.\n");
    9 P  H+ P; _. u/ R- H& @+ ?
  110.                         return 1;3 W( P( b1 E/ l7 @, m
  111.                 }% h* }* G  _2 P, G' m
  112.         }( }# e, y8 B9 a( g. l4 x7 R
  113.         if (writeparam(mac, stbid) == 0)
    " T( f! n# G+ K
  114.                 printf("Parameters changed.\n");
    4 g! K1 D3 b, [+ R" L4 y  a
  115. . y1 \: h9 t' q6 R# b
  116.         return 0;
    5 z, ?0 k5 W# c8 A- p4 K
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
! C& I; `% u3 c! ~! I, I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' y$ ^0 B: g! ~* q7 m1 [% Y( ]
你用的编译命令行格式是什么?/ q* R: W! M. G$ B; A
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部