找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15711|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # ~9 P# B3 O/ D) A6 g( R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / P" a) r+ O8 b2 D; m4 [& b9 M- _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" }0 c- V; w1 b: \! q, g! J/ Xusage: himr <address> <value>. sample: himr 0x80040000 0x09 {9 |- y9 ]# p; E' L. F$ D

1 m5 J2 R7 q0 B1 l- e5 C$ O
7 h1 C5 m$ v7 \. K: v; ]8 c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ _5 f) I7 u' n0 \8 l

5 {8 H6 T( Y- a- G( ?4 G( B补充内容 (2012-3-8 09:42):& I$ k7 L' E! C# n( J9 F2 ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. Z1 s2 W, m+ ~+ I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 w! A8 G$ f( i& }( ?/ L6 X
, j/ y( A$ Y4 f+ G! }) y% o; p
himr <address> <value>. sample: himr 0x80040000 0x0: E9 X* X# h" o0 ]/ H- A
* F/ Z0 v2 ?/ l/ _: F2 I6 z' c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) B+ c; R. f7 O! m& d
himr 0x80040000 0x00- t- |6 ]) y3 L; T. k5 q$ g  I
himr 0x80040001 0x11" u' ^. o( X4 b- k3 v
himr 0x80040002 0x222 J/ B- ~& T, s7 @$ A! T2 l
himr 0x80040003 0x33
2 F& e5 T- t, G- ehimr 0x80040004 0x443 P  C1 i' h5 K
himr 0x80040005 0x55% C7 h2 H9 F" a8 W1 x

  Z3 p" ~9 o+ x& r; a: w; m8 OSN也是类似。8 G3 w5 |# e& s. K) A+ y

# O2 P. v. d6 F, |2 z/ T" `现在主要是,谁告诉我们MAC和SN的地址?3 J! P* G( j1 p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 J- R3 s" b: Y6 \! h一直想找到运程修改MAC和SN的办法,苦于无解啊
3 H' ?0 f/ M+ `( X, F7 d  X' ?: U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# |- o9 R/ E* e6 U1 ~& t8 [# B* R; y7 f, y/ ]1 j
修改的代码早有了。到今天不会编译。& \# ]4 b+ h* G$ G5 T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ b% a4 ~9 n2 e
  2. #include <malloc.h>
    4 f6 {/ P5 ]2 r$ i: F
  3. #include <sys/types.h>
    $ M  H! Q0 @" w; H& g$ a
  4. #include <sys/stat.h>3 Q" Z7 u1 i6 `3 {- Y( [
  5. #include <sys/ioctl.h>  E( J8 T# U" C$ L# r
  6. #include <stdio.h>: n; V, {1 R" S+ \
  7. #include <string.h>: I6 S5 Z3 X- Z9 b* p
  8. - g, Y% p( Y& H' _% H& \9 B
  9. typedef struct {
    - C: W& X- F1 r1 T4 n  Q" X
  10.         unsigned int        e2prom_cmd_sub_addr;  w7 k. d9 ?5 c! l: }: G
  11.         unsigned int        sub_addr_count;
    3 j* T4 v' H! [0 X! a8 K  ?
  12.         unsigned char*        e2prom_cmd_data;
    / [) t6 r6 L1 U1 F3 j
  13.         unsigned int        data_count;' n! k$ t  R( \
  14. } e2prom_s_cmd;
    + Q" _* j6 C) B' `, P9 i  M( x8 {
  15. 9 r2 k: }* f9 l8 W( u2 V2 f
  16. #define E2PROM_CMD_READ 1; |1 E  {1 d5 A+ @' W! K' n) |
  17. #define E2PROM_CMD_WRITE 2* Y# Q6 C' p: r6 `1 r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( M- K& d+ a1 V; C0 n  ]  P
  19. 0 O+ W& [2 Q9 i$ b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- S& u5 N# u6 r3 K8 d/ x3 w
  21. {
    5 _8 p+ w: r7 V; t
  22.         int fd, ret;" V! F, d7 P: C8 z
  23.         e2prom_s_cmd arg;6 X. M0 r' C+ r( V5 O7 m$ x# ^
  24.         unsigned char buf[0x18];" ?2 j4 W, U( q0 w5 p& D
  25. ! U. l; U5 k# K+ s9 O: w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 G! C4 m" B* e6 O2 C0 ^
  27.         if (fd  < 0) {$ Q2 [0 b8 k; M! D% f3 v; l/ F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ X; }+ g5 Q. L9 g
  29.                 return -1;0 P; A% s$ x% e1 ^" e5 {% G2 K
  30.         }
    + `0 M' ?, `# G$ k0 S
  31.         arg.sub_addr_count      = 2;
    5 d5 j: M, P& i6 Y' W& q  \
  32.         arg.data_count          = 0x18;( g/ }, h8 k! T1 U) ~' T
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 f3 c0 \) n4 _( K  [
  34.         arg.e2prom_cmd_data     = buf;! }, D% E  J: }% h. ~3 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 ~4 m2 W4 M: M9 e: @9 ]
  36.         if (ret != 0) {2 M* `& c6 p. ]. e* J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + \$ B: P/ D& S* @( @) [+ s0 D
  38.                 return -1;8 Q* _; b# f; j/ G0 [+ P
  39.         }' M& H6 f0 ^( o+ B( @* y7 v
  40.         memcpy(mac, buf, 6);
    - u) x  [, n% A; w0 [
  41.         memcpy(stbid, &buf[6], 18);. R! Z! r4 f, @) c
  42.         stbid[18] = '\0';+ S4 J: A' D2 K

  43. + e' x7 Q& G) K9 e( \9 X
  44.         return 0;
    2 U9 H3 M  v8 f
  45. }9 C" y/ f' g: H# \7 S- W
  46. ) ?8 T4 I2 R0 p5 I. r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + X& B9 y  P# s* _7 G
  48. {
    2 e5 I& v# ~  Q, k1 i7 D: l" F
  49.         int fd, ret;
    0 g  M$ J) h( Q; `( L+ P
  50.         e2prom_s_cmd arg;# w$ e: Y& j# i  J8 q: ~7 b
  51.         unsigned char buf[0x18];
    ; q2 y& t1 \. {- }$ e
  52. 2 Q9 U: t: P$ B6 U& s, M
  53.         memcpy(buf, mac, 6);
    * G7 E; Z7 d! h1 b
  54.         memcpy(&buf[6], stbid, 18);/ ^" ?9 ~/ w- M0 v9 O. w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: |: V: i$ l* B5 z3 N1 j
  56.         if (fd  < 0) {
    6 r4 M4 J0 E7 m7 t6 K) a: C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 i9 u3 m9 @8 @7 Z
  58.                 return -1;* z+ b* f/ R: q' x6 U
  59.         }3 T' }4 ?3 M* `* r
  60.         arg.sub_addr_count      = 2;) Q- T) x9 ^+ ^* w
  61.         arg.data_count          = 0x18;
    5 }! [9 O1 z+ K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % \2 F/ N! [8 k" M, V/ f
  63.         arg.e2prom_cmd_data     = buf;
    6 k' h  T& H) m& N" S
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) ?9 {1 k* U$ g( Y! U5 g, K% K
  65.         if (ret != 0) {
    % [$ w  l0 u2 A) m, p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 X* K- a6 ^- }! E7 _
  67.                 return -1;
    ' Z& P" ]- Z" B7 A8 I. H6 ^& W
  68.         }
    ) `0 m7 }1 J8 r# C# R( g2 W9 K" D
  69. 9 Y0 q3 H1 J4 i' {
  70.         return 0;
    0 |9 t& H& o, E5 g! }6 L" X
  71. }
    " ]+ R; q5 a9 p: i

  72. 5 |7 X+ ?& }5 X! j- k/ b9 d& i! J
  73. int main()
    9 @* U; }( ?2 H7 \, a
  74. {
    % ~, c. ^$ O5 q. L
  75.         char c;! `1 u, ^8 o& d: Z4 I
  76.         int i, macs[6];% I) R) Q( F. u/ l2 D7 ~
  77.         unsigned char mac[6];5 g* x6 D* |' J0 x  o0 U5 a
  78.         unsigned char stbid[256];
    0 \) Q. v0 U! J& o* f

  79. # ^! E4 ^1 n% P! S8 i
  80.         if (readparam(mac, stbid) < 0)
    2 ]. ^( P# g% F5 V+ Y) a+ `
  81.                 return 1;9 d5 ^4 A1 `! h2 V3 ?' K! {* K

  82. % X+ |  H, O1 n& H0 r4 j
  83.         printf("Current parameters: \n");
    - }5 c# V% X7 p! a  ~$ e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' [6 s. o$ }; W; K( K* d5 V  Q
  85.         printf("  STBID: %s\n", stbid);
    % n+ \1 h2 e) `3 L
  86.        
    9 n4 y. L$ R+ v- l/ Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 e# J6 [) V* m4 O" f
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) x, E$ n2 _5 u/ R' t$ C2 p" c/ m% Y. j
  89.                 printf("Input MAC error\n");
    5 d+ ^) t  @+ b2 s1 |
  90.                 return 1;
    4 u! `, X  S# T& R5 `
  91.         }1 F$ g: }0 w& I; d- l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / e9 F& k% |" I( |0 X+ o% [* W
  93.         printf("\nPlease input new STBID: ");7 w" ?+ ?0 b$ v
  94.         scanf("%s", stbid);/ f8 A& W5 N% U$ v1 `
  95.         if (strlen(stbid) != 18) {7 w+ N( J0 Z0 k3 \6 |) r* n. p" y2 y
  96.                 printf("Invalid stbid\n");2 o5 b: h0 V, d
  97.                 return 1;
    7 I& D7 S5 B8 S/ V& m, O  h" z; Q2 q
  98.         }
    0 @. s! |) [) u1 H: f
  99.         printf("\nNew parameters: \n");
    ; p  W; `: w. M0 _2 ]# n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: i. F" D" q1 y
  101.         printf("  STBID: %s\n", stbid);
    6 f& M3 t$ T+ I! l# G5 _8 K& C; y8 k) _
  102. , O7 L; ~. D6 i$ N! ~, F2 L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ H6 p* }  g  {
  104.         for (;;) {9 w) H, f. s. _# B/ ]0 l6 e( [
  105.                 c = getchar();
    1 u. |0 m& b/ K* ^0 \
  106.                 if (c == 'y' || c == 'Y')  @. t; J7 G: n$ O! O, G# D
  107.                         break;
    ' L6 s# i: e' q5 ?7 @0 W" C
  108.                 if (c == 'n' || c == 'N') {2 p- ?1 l; R0 Q$ T; ^
  109.                         printf("\nAborted.\n");5 Y, l, k; N0 k& i
  110.                         return 1;
    5 N0 |2 D$ y3 H3 c/ M2 j5 \9 s, k
  111.                 }
    " t; a, @0 @& K' N; }
  112.         }
    8 L& Q" k, d: q. d0 Y- J
  113.         if (writeparam(mac, stbid) == 0) ! U/ D+ \5 Y+ m: r/ m" T
  114.                 printf("Parameters changed.\n");
    6 G' X, c" M! Z7 G: I( [, C
  115. & d8 D1 M' ?# Z  G' r
  116.         return 0;2 ?# @/ Q# M* \) ?
  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 1 y5 B' l$ ~* g2 N2 i
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 N6 K' K. c' h
你用的编译命令行格式是什么?
, N8 {( n& g, N; {
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-2 13:34 , Processed in 0.029969 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表